From bcafbbe3b0209d583d15d94ac27e6483dd5e4cc4 Mon Sep 17 00:00:00 2001 From: SimonDanisch Date: Tue, 28 Jul 2026 12:52:54 +0200 Subject: [PATCH 01/17] update to 1.4 --- Project.toml | 2 +- gen/Manifest.toml | 236 +- gen/Project.toml | 4 +- gen/generator.jl | 16 +- lib/aarch64-apple-darwin20.jl | 29293 +++++++++++++++++------- lib/aarch64-linux-gnu.jl | 29187 +++++++++++++++++------- lib/aarch64-linux-musl.jl | 29187 +++++++++++++++++------- lib/armv7l-linux-gnueabihf.jl | 28379 ++++++++++++++++------- lib/armv7l-linux-musleabihf.jl | 28379 ++++++++++++++++------- lib/i686-linux-gnu.jl | 28935 ++++++++++++++++------- lib/i686-linux-musl.jl | 28935 ++++++++++++++++------- lib/i686-w64-mingw32.jl | 28745 ++++++++++++++++------- lib/powerpc64le-linux-gnu.jl | 29187 +++++++++++++++++------- lib/x86_64-apple-darwin14.jl | 29293 +++++++++++++++++------- lib/x86_64-linux-gnu.jl | 29187 +++++++++++++++++------- lib/x86_64-linux-musl.jl | 29187 +++++++++++++++++------- lib/x86_64-unknown-freebsd13.2.jl | 34134 ++++++++++++++++++++++++++++ lib/x86_64-w64-mingw32.jl | 29457 +++++++++++++++++------- 18 files changed, 302818 insertions(+), 108925 deletions(-) create mode 100644 lib/x86_64-unknown-freebsd13.2.jl 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 From 09e7b52a1e4ed06bc60ed4e38cada178809d7c3d Mon Sep 17 00:00:00 2001 From: SimonDanisch Date: Fri, 11 Sep 2026 12:47:13 +0200 Subject: [PATCH 02/17] A missing Vulkan loader is a state, not a load error --- src/LibVulkan.jl | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/LibVulkan.jl b/src/LibVulkan.jl index 5b0484e..36f5629 100644 --- a/src/LibVulkan.jl +++ b/src/LibVulkan.jl @@ -19,15 +19,29 @@ end const libvulkan_handle = Ref{Ptr{Cvoid}}(0) +"""Whether a Vulkan loader was found when this module was loaded. + +`false` is a normal state, not a broken one: a machine with no driver can still +`using VulkanCore` and everything that does not call the API works. Ask this +before building an instance — see `__init__` for why it is not an error. +""" +loaded() = libvulkan_handle[] != C_NULL + function __init__() libname = Libdl.find_library(libvulkan) - if isempty(libname) - error(""" - Failed to retrieve a valid Vulkan library called '$libvulkan'. - If you configure the `JULIA_VULKAN_LIBNAME` environment variable before precompiling VulkanCore, it will be used instead of '$libvulkan'. You may also manually add search paths by appending them to Lidbl.DL_LOAD_PATH, but note that this may have repercussions beyond this package. - """) - end + # NO error. Failing here made merely DEPENDING on VulkanCore fatal on a + # machine with no loader — a Mac, a CI runner, a container — which forced + # every package above it to reach the driver through a weak dependency and + # an extension, and to hand-maintain the import list that a separate module + # needs. Nothing here reads `libvulkan_handle`: the entry points are + # `ccall((:vkCreateInstance, libvulkan), …)`, which bind by NAME and dlopen + # themselves on the first call. So the absence is already representable, and + # a caller that actually uses the API gets Julia's own "could not load + # library '$libvulkan'" at the point of use, which says the same thing at + # the moment it is true. + isempty(libname) && return nothing libvulkan_handle[] = Libdl.dlopen(libname) + return nothing end VK_MAKE_VERSION(major, minor, patch) = (Cuint(major) << 22) | (Cuint(minor) << 12) | patch From df35bf1285ff4b1df94fc8318a5f6fd03381bda1 Mon Sep 17 00:00:00 2001 From: Simon Date: Wed, 16 Sep 2026 15:48:48 +0200 Subject: [PATCH 03/17] Compile nothing when there is no Vulkan loader MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A package that cannot work on this machine should not cost anything to depend on. VulkanCore compiled 34,000 generated lines of ccall wrappers, Vulkan 127,000 more plus a dispatch table and an 8,573-name export list, and Lava a whole Julia->SPIR-V compiler — all on every Mac in this tree, for code Mantle declares and, under its own `@static if Sys.isapple()`, never imports. VulkanCore probes the loader once at precompile time and exposes the answer as HAS_LOADER; Vulkan and Lava gate their bodies on it, and Vulkan re-exposes it outside its own gate so a dependent can ask without first checking whether there is anything to ask. The extensions are gated too — Vk.Format does not exist when the bindings do not, and those were the last thing still failing. The gated text is UNCHANGED and unindented on purpose: with a loader present each module is byte-for-byte the one it was, so the only case this can break is the empty one. Measured on macOS with no libvulkan: VulkanCore 3670 -> 554 ms, Vulkan 13098 -> 363 ms, and Lava now precompiles at all — gated out, it no longer evaluates the `NativeEmitter{Out, Flats}` its body wants and this KernelAbstractions checkout does not have. All three load in 0.4 s. `using Metal, RayMakie` takes 3.1 s from a cold RayMakie cache, where it used to error. A precompile-time answer, so installing a driver later needs Pkg.precompile(; force = true). NOT verified with a loader present — there is none on this machine. --- src/LibVulkan.jl | 17 ++++++++++++++++- src/VulkanCore.jl | 4 ++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/LibVulkan.jl b/src/LibVulkan.jl index 36f5629..273aaed 100644 --- a/src/LibVulkan.jl +++ b/src/LibVulkan.jl @@ -17,6 +17,19 @@ else const libvulkan = "libvulkan" end +""" +Whether a Vulkan loader was findable when this package was PRECOMPILED. + +The gate on everything below. Without a loader the 34,000 generated lines of +`ccall` wrappers are not compiled at all: this package is then a name, a +constant and nothing else, so depending on it from a package that only uses +Vulkan on some platforms costs nothing on the others. + +A precompile-time answer, so installing a driver afterwards needs +`Pkg.precompile(; force = true)` — Julia does not watch the library path. +""" +const HAS_LOADER = !isempty(Libdl.find_library(libvulkan)) + const libvulkan_handle = Ref{Ptr{Cvoid}}(0) """Whether a Vulkan loader was found when this module was loaded. @@ -54,7 +67,9 @@ VK_VERSION_PATCH(version) = Cuint(version) & 0xfff VK_MAKE_VIDEO_STD_VERSION(major, minor, patch) = VK_MAKE_VERSION(major, minor, patch) const IS_LIBC_MUSL = occursin("musl", Base.BUILD_TRIPLET) -if Sys.isapple() && Sys.ARCH === :aarch64 +@static if !HAS_LOADER + # Nothing to bind to. See `HAS_LOADER`. +elseif Sys.isapple() && Sys.ARCH === :aarch64 include("../lib/aarch64-apple-darwin20.jl") elseif Sys.islinux() && Sys.ARCH === :aarch64 && !IS_LIBC_MUSL include("../lib/aarch64-linux-gnu.jl") diff --git a/src/VulkanCore.jl b/src/VulkanCore.jl index dd0c5c7..393f9b8 100644 --- a/src/VulkanCore.jl +++ b/src/VulkanCore.jl @@ -7,4 +7,8 @@ const api = LibVulkan const vk = api export vk +# Re-exported so a dependent can gate its own body on the same answer without +# reaching into a submodule. See `LibVulkan.HAS_LOADER`. +const HAS_LOADER = LibVulkan.HAS_LOADER + end # module From 6f284415a597081ae38de7d0690864e087c62ddb Mon Sep 17 00:00:00 2001 From: SimonDanisch Date: Thu, 17 Sep 2026 14:57:41 +0200 Subject: [PATCH 04/17] Version 1.4.0, for the 1.4 headers it now wraps The version tracks the Vulkan API version, and the bindings have been generated against Vulkan_Headers_jll 1.4.321 since "update to 1.4". --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index b2325f1..fdb3ce8 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "VulkanCore" uuid = "16167f82-ea26-5cba-b1de-ed6fd5e30a11" -version = "1.3.1" +version = "1.4.0" [deps] Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb" From 66e24c203ad4cae95b23b287f94c581128e7019e Mon Sep 17 00:00:00 2001 From: SimonDanisch Date: Thu, 17 Sep 2026 16:07:46 +0200 Subject: [PATCH 05/17] FreeBSD: include the 1.4 bindings that were generated for it "update to 1.4" regenerated thirteen platform files and added a fourteenth, lib/x86_64-unknown-freebsd13.2.jl -- the target Clang names now -- but left lib/x86_64-unknown-freebsd.jl untouched at 1.3.240, and that is the one this file still included. FreeBSD therefore loaded 1.3 bindings under a 1.4 wrapper: of the 3000 Vk names Vulkan.jl's bsd.jl mentions, around a hundred did not exist. Now 2, both Wayland, and those are a separate and older problem: the wrapper generator enables PLATFORM_WAYLAND for BSD while no FreeBSD binding here has ever wrapped Wayland, in this version or the previous one. The 1.3 file is deleted rather than left beside its replacement. --- lib/x86_64-unknown-freebsd.jl | 21847 -------------------------------- src/LibVulkan.jl | 2 +- 2 files changed, 1 insertion(+), 21848 deletions(-) delete mode 100644 lib/x86_64-unknown-freebsd.jl diff --git a/lib/x86_64-unknown-freebsd.jl b/lib/x86_64-unknown-freebsd.jl deleted file mode 100644 index d7da3ac..0000000 --- a/lib/x86_64-unknown-freebsd.jl +++ /dev/null @@ -1,21847 +0,0 @@ -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_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_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_COMPRESSION_EXHAUSTED_EXT = -1000338000 - 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_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_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_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_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 - VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 - 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_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 - 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_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 - VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003 - VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000 - VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001 - VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002 - VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000 - VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000 - VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001 - VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002 - VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003 - VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000 - VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 - VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 - VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 - VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000 - VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000 - VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000 - VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001 - VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002 - VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003 - VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000 - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000 - VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000 - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 - VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000 - VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000 - VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000 - VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001 - VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002 - VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000 - VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 - VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 - VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 - VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 - VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 - VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000 - VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001 - VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002 - VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000 - VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 - VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 - VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 - VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 - VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000 - VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000 - VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000 - VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001 - VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002 - VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003 - VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004 - VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000 - VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001 - VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002 - VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003 - VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 - VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 - VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006 - 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_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 - 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_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 - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 - VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 - VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 - VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 - VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 - VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 - VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 - VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 - VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 - VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 - VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 - VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 - VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 - VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000226000 - VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR = 1000226001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR = 1000226002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR = 1000226003 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR = 1000226004 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT = 1000234000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 - VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 - VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 - VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 - VK_STRUCTURE_TYPE_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_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 - VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 - VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 - VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 - VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 - VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_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 - 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_DEVICE_MEMORY_REPORT_FEATURES_EXT = 1000284000 - VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT = 1000284001 - VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT = 1000284002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 - VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 - VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_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_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 - VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 - 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_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 - 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_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 - 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_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_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_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_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_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_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000 - 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_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_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_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000 - 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_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_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT = 1000351000 - VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = 1000351002 - 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_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_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 - 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_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = 1000070000 - VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = 1000070001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = 1000071000 - VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = 1000071001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = 1000071002 - VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = 1000071003 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = 1000071004 - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = 1000072000 - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = 1000072001 - VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = 1000072002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = 1000076000 - VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = 1000076001 - VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = 1000077000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 - VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 - VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 - VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 - VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 - VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 - VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 - VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 - VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 - VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 - VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = 1000112000 - VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = 1000112001 - VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = 1000113000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = 1000117000 - VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = 1000117001 - VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = 1000117002 - VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = 1000117003 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = 1000120000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = 1000120000 - VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = 1000127000 - VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = 1000127001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 - VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 - VK_STRUCTURE_TYPE_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_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_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_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_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_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 - 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_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_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_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_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_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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT = 1000339000 - 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_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_OPTICAL_FLOW_SESSION_NV = 1000464000 - 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_VIV = 65537 - VK_VENDOR_ID_VSI = 65538 - VK_VENDOR_ID_KAZAN = 65539 - VK_VENDOR_ID_CODEPLAY = 65540 - VK_VENDOR_ID_MESA = 65541 - VK_VENDOR_ID_POCL = 65542 - VK_VENDOR_ID_MAX_ENUM = 2147483647 -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_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_R16G16_S10_5_NV = 1000464000 - 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_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_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_VIEWPORT_W_SCALING_NV = 1000087000 - VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 - VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000 - VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR = 1000347000 - VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 - VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 - VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 - VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR = 1000226000 - VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 - VK_DYNAMIC_STATE_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 - 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_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_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_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_MUTABLE_EXT = 1000351000 - 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_EXT = 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_RAY_TRACING_NV = 1000165000 - VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 -end - -@cenum VkCommandBufferLevel::UInt32 begin - VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 - VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 - VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 -end - -@cenum VkIndexType::UInt32 begin - VK_INDEX_TYPE_UINT16 = 0 - VK_INDEX_TYPE_UINT32 = 1 - VK_INDEX_TYPE_NONE_KHR = 1000165000 - VK_INDEX_TYPE_UINT8_EXT = 1000265000 - VK_INDEX_TYPE_NONE_NV = 1000165000 - VK_INDEX_TYPE_MAX_ENUM = 2147483647 -end - -@cenum VkSubpassContents::UInt32 begin - VK_SUBPASS_CONTENTS_INLINE = 0 - VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 - VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 -end - -@cenum VkAccessFlagBits::UInt32 begin - VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 1 - VK_ACCESS_INDEX_READ_BIT = 2 - VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 4 - VK_ACCESS_UNIFORM_READ_BIT = 8 - VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 16 - VK_ACCESS_SHADER_READ_BIT = 32 - VK_ACCESS_SHADER_WRITE_BIT = 64 - VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 128 - VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 256 - VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512 - VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024 - VK_ACCESS_TRANSFER_READ_BIT = 2048 - VK_ACCESS_TRANSFER_WRITE_BIT = 4096 - VK_ACCESS_HOST_READ_BIT = 8192 - VK_ACCESS_HOST_WRITE_BIT = 16384 - VK_ACCESS_MEMORY_READ_BIT = 32768 - VK_ACCESS_MEMORY_WRITE_BIT = 65536 - VK_ACCESS_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_NV = 131072 - VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 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_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_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_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 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_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_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_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_SHADING_RATE_IMAGE_BIT_NV = 256 - 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_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_OPTICAL_FLOW_BIT_NV = 256 - 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_COMMAND_PREPROCESS_BIT_NV = 131072 - VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT = 524288 - VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT = 1048576 - 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_NONE_KHR = 0 - VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkPipelineStageFlags = VkFlags - -const VkMemoryMapFlags = VkFlags - -@cenum VkSparseMemoryBindFlagBits::UInt32 begin - VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 - VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkSparseMemoryBindFlags = VkFlags - -@cenum VkSparseImageFormatFlagBits::UInt32 begin - VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 1 - VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 2 - VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 4 - VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkSparseImageFormatFlags = VkFlags - -@cenum VkFenceCreateFlagBits::UInt32 begin - VK_FENCE_CREATE_SIGNALED_BIT = 1 - VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkFenceCreateFlags = VkFlags - -const VkSemaphoreCreateFlags = VkFlags - -@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 - -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_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_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_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_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_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 2097152 - VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 4194304 - VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 - VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 - VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 - VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 - VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 - VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 - VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR = 524288 - VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 - VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 - VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 - VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 - VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 - VK_PIPELINE_CREATE_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_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_KHR = 16 - VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 - VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 - 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_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_KHR = 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_HOST_ONLY_POOL_BIT_EXT = 4 - 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_VIEW_LOCAL_BIT_KHR = 2 - VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 - VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkDependencyFlags = VkFlags - -@cenum VkFramebufferCreateFlagBits::UInt32 begin - VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 - VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 - VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkFramebufferCreateFlags = VkFlags - -@cenum VkRenderPassCreateFlagBits::UInt32 begin - VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 - VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkRenderPassCreateFlags = VkFlags - -@cenum VkSubpassDescriptionFlagBits::UInt32 begin - VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 - VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 - VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 - VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 - VK_SUBPASS_DESCRIPTION_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 - -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 - -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 - aspectMask::VkImageAspectFlags - colorAttachment::UInt32 - clearValue::VkClearValue -end - -struct VkClearRect - rect::VkRect2D - baseArrayLayer::UInt32 - layerCount::UInt32 -end - -struct VkImageBlit - srcSubresource::VkImageSubresourceLayers - srcOffsets::NTuple{2, VkOffset3D} - dstSubresource::VkImageSubresourceLayers - dstOffsets::NTuple{2, VkOffset3D} -end - -struct VkImageCopy - srcSubresource::VkImageSubresourceLayers - srcOffset::VkOffset3D - dstSubresource::VkImageSubresourceLayers - dstOffset::VkOffset3D - extent::VkExtent3D -end - -struct VkImageResolve - srcSubresource::VkImageSubresourceLayers - srcOffset::VkOffset3D - dstSubresource::VkImageSubresourceLayers - dstOffset::VkOffset3D - extent::VkExtent3D -end - -struct VkRenderPassBeginInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - renderPass::VkRenderPass - framebuffer::VkFramebuffer - renderArea::VkRect2D - clearValueCount::UInt32 - pClearValues::Ptr{VkClearValue} -end - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) -const PFN_vkCreateInstance = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyInstance = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) -const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) -const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) -const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) -const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) -const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) -const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) -const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} - -# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) -const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} - -# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) -const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) -const PFN_vkCreateDevice = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDevice = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) -const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) -const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) -const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) -const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) -const PFN_vkGetDeviceQueue = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) -const PFN_vkQueueSubmit = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) -const PFN_vkQueueWaitIdle = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) -const PFN_vkDeviceWaitIdle = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) -const PFN_vkAllocateMemory = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) -const PFN_vkFreeMemory = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) -const PFN_vkMapMemory = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) -const PFN_vkUnmapMemory = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) -const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) -const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) -const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) -const PFN_vkBindBufferMemory = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) -const PFN_vkBindImageMemory = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) -const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) -const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) -const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) -const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) -const PFN_vkQueueBindSparse = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) -const PFN_vkCreateFence = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyFence = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) -const PFN_vkResetFences = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) -const PFN_vkGetFenceStatus = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) -const PFN_vkWaitForFences = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) -const PFN_vkCreateSemaphore = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySemaphore = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) -const PFN_vkCreateEvent = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyEvent = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) -const PFN_vkGetEventStatus = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) -const PFN_vkSetEvent = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) -const PFN_vkResetEvent = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) -const PFN_vkCreateQueryPool = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyQueryPool = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) -const PFN_vkGetQueryPoolResults = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) -const PFN_vkCreateBuffer = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyBuffer = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) -const PFN_vkCreateBufferView = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyBufferView = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) -const PFN_vkCreateImage = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyImage = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) -const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) -const PFN_vkCreateImageView = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyImageView = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) -const PFN_vkCreateShaderModule = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyShaderModule = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) -const PFN_vkCreatePipelineCache = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyPipelineCache = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) -const PFN_vkGetPipelineCacheData = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) -const PFN_vkMergePipelineCaches = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) -const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) -const PFN_vkCreateComputePipelines = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyPipeline = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) -const PFN_vkCreatePipelineLayout = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) -const PFN_vkCreateSampler = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySampler = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) -const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) -const PFN_vkCreateDescriptorPool = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) -const PFN_vkResetDescriptorPool = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) -const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) -const PFN_vkFreeDescriptorSets = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) -const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) -const PFN_vkCreateFramebuffer = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyFramebuffer = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) -const PFN_vkCreateRenderPass = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyRenderPass = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) -const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) -const PFN_vkCreateCommandPool = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCommandPool = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) -const PFN_vkResetCommandPool = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) -const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) -const PFN_vkFreeCommandBuffers = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) -const PFN_vkBeginCommandBuffer = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) -const PFN_vkEndCommandBuffer = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) -const PFN_vkResetCommandBuffer = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) -const PFN_vkCmdBindPipeline = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) -const PFN_vkCmdSetViewport = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) -const PFN_vkCmdSetScissor = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) -const PFN_vkCmdSetLineWidth = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) -const PFN_vkCmdSetDepthBias = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) -const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) -const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) -const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) -const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) -const PFN_vkCmdSetStencilReference = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) -const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) -const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) -const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) -const PFN_vkCmdDraw = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) -const PFN_vkCmdDrawIndexed = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) -const PFN_vkCmdDrawIndirect = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) -const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDispatch = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) -const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) -const PFN_vkCmdCopyBuffer = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) -const PFN_vkCmdCopyImage = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) -const PFN_vkCmdBlitImage = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) -const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) -const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) -const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) -const PFN_vkCmdFillBuffer = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) -const PFN_vkCmdClearColorImage = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) -const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) -const PFN_vkCmdClearAttachments = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) -const PFN_vkCmdResolveImage = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) -const PFN_vkCmdSetEvent = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) -const PFN_vkCmdResetEvent = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) -const PFN_vkCmdWaitEvents = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) -const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) -const PFN_vkCmdBeginQuery = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) -const PFN_vkCmdEndQuery = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) -const PFN_vkCmdResetQueryPool = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) -const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) -const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) -const PFN_vkCmdPushConstants = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) -const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) -const PFN_vkCmdNextSubpass = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndRenderPass = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) -const PFN_vkCmdExecuteCommands = Ptr{Cvoid} - -function vkCreateInstance(pCreateInfo, pAllocator, pInstance) - ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) -end - -function 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_KHR = 1 - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0 - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 2147483647 -end - -@cenum VkSubgroupFeatureFlagBits::UInt32 begin - VK_SUBGROUP_FEATURE_BASIC_BIT = 1 - VK_SUBGROUP_FEATURE_VOTE_BIT = 2 - VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 4 - VK_SUBGROUP_FEATURE_BALLOT_BIT = 8 - VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 16 - VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 - VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 - VK_SUBGROUP_FEATURE_QUAD_BIT = 128 - VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 - VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkSubgroupFeatureFlags = VkFlags - -@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin - VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 1 - VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 2 - VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 4 - VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 8 - VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = 1 - VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = 2 - VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = 4 - VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = 8 - VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkPeerMemoryFeatureFlags = VkFlags - -@cenum VkMemoryAllocateFlagBits::UInt32 begin - VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 - VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 - VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 - VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 - VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 - VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 - VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkMemoryAllocateFlags = VkFlags - -const VkCommandPoolTrimFlags = VkFlags - -const VkDescriptorUpdateTemplateCreateFlags = VkFlags - -@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 1 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 8 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 16 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 32 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 64 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 512 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 1024 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 128 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 256 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA = 2048 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV = 4096 - 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_AMD_PROPRIETARY_KHR = 1 - VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 - VK_DRIVER_ID_MESA_RADV_KHR = 3 - VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 - VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 - VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 - VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 - VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 - VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 - VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 - VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 - VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 - VK_DRIVER_ID_MAX_ENUM = 2147483647 -end - -@cenum VkShaderFloatControlsIndependence::UInt32 begin - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 -end - -@cenum VkSamplerReductionMode::UInt32 begin - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 - VK_SAMPLER_REDUCTION_MODE_MIN = 1 - VK_SAMPLER_REDUCTION_MODE_MAX = 2 - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 - VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 - VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 - VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 2147483647 -end - -@cenum VkSemaphoreType::UInt32 begin - VK_SEMAPHORE_TYPE_BINARY = 0 - VK_SEMAPHORE_TYPE_TIMELINE = 1 - VK_SEMAPHORE_TYPE_BINARY_KHR = 0 - VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 - VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 -end - -@cenum VkResolveModeFlagBits::UInt32 begin - VK_RESOLVE_MODE_NONE = 0 - VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 - VK_RESOLVE_MODE_AVERAGE_BIT = 2 - VK_RESOLVE_MODE_MIN_BIT = 4 - VK_RESOLVE_MODE_MAX_BIT = 8 - VK_RESOLVE_MODE_NONE_KHR = 0 - VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 - VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 - VK_RESOLVE_MODE_MIN_BIT_KHR = 4 - VK_RESOLVE_MODE_MAX_BIT_KHR = 8 - VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkResolveModeFlags = VkFlags - -@cenum VkDescriptorBindingFlagBits::UInt32 begin - VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 - VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 - VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 - VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 - VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 1 - VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 2 - VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 4 - VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 8 - VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkDescriptorBindingFlags = VkFlags - -@cenum VkSemaphoreWaitFlagBits::UInt32 begin - VK_SEMAPHORE_WAIT_ANY_BIT = 1 - VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 - VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkSemaphoreWaitFlags = VkFlags - -struct VkPhysicalDeviceVulkan11Features - sType::VkStructureType - pNext::Ptr{Cvoid} - storageBuffer16BitAccess::VkBool32 - uniformAndStorageBuffer16BitAccess::VkBool32 - storagePushConstant16::VkBool32 - storageInputOutput16::VkBool32 - multiview::VkBool32 - multiviewGeometryShader::VkBool32 - multiviewTessellationShader::VkBool32 - variablePointersStorageBuffer::VkBool32 - variablePointers::VkBool32 - protectedMemory::VkBool32 - samplerYcbcrConversion::VkBool32 - shaderDrawParameters::VkBool32 -end - -struct VkPhysicalDeviceVulkan11Properties - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceUUID::NTuple{16, UInt8} - driverUUID::NTuple{16, UInt8} - deviceLUID::NTuple{8, UInt8} - deviceNodeMask::UInt32 - deviceLUIDValid::VkBool32 - subgroupSize::UInt32 - subgroupSupportedStages::VkShaderStageFlags - subgroupSupportedOperations::VkSubgroupFeatureFlags - subgroupQuadOperationsInAllStages::VkBool32 - pointClippingBehavior::VkPointClippingBehavior - maxMultiviewViewCount::UInt32 - maxMultiviewInstanceIndex::UInt32 - protectedNoFault::VkBool32 - maxPerSetDescriptors::UInt32 - maxMemoryAllocationSize::VkDeviceSize -end - -struct VkPhysicalDeviceVulkan12Features - sType::VkStructureType - pNext::Ptr{Cvoid} - samplerMirrorClampToEdge::VkBool32 - drawIndirectCount::VkBool32 - storageBuffer8BitAccess::VkBool32 - uniformAndStorageBuffer8BitAccess::VkBool32 - storagePushConstant8::VkBool32 - shaderBufferInt64Atomics::VkBool32 - shaderSharedInt64Atomics::VkBool32 - shaderFloat16::VkBool32 - shaderInt8::VkBool32 - descriptorIndexing::VkBool32 - shaderInputAttachmentArrayDynamicIndexing::VkBool32 - shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 - shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 - shaderUniformBufferArrayNonUniformIndexing::VkBool32 - shaderSampledImageArrayNonUniformIndexing::VkBool32 - shaderStorageBufferArrayNonUniformIndexing::VkBool32 - shaderStorageImageArrayNonUniformIndexing::VkBool32 - shaderInputAttachmentArrayNonUniformIndexing::VkBool32 - shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 - shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 - descriptorBindingUniformBufferUpdateAfterBind::VkBool32 - descriptorBindingSampledImageUpdateAfterBind::VkBool32 - descriptorBindingStorageImageUpdateAfterBind::VkBool32 - descriptorBindingStorageBufferUpdateAfterBind::VkBool32 - descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 - descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 - descriptorBindingUpdateUnusedWhilePending::VkBool32 - descriptorBindingPartiallyBound::VkBool32 - descriptorBindingVariableDescriptorCount::VkBool32 - runtimeDescriptorArray::VkBool32 - samplerFilterMinmax::VkBool32 - scalarBlockLayout::VkBool32 - imagelessFramebuffer::VkBool32 - uniformBufferStandardLayout::VkBool32 - shaderSubgroupExtendedTypes::VkBool32 - separateDepthStencilLayouts::VkBool32 - hostQueryReset::VkBool32 - timelineSemaphore::VkBool32 - bufferDeviceAddress::VkBool32 - bufferDeviceAddressCaptureReplay::VkBool32 - bufferDeviceAddressMultiDevice::VkBool32 - vulkanMemoryModel::VkBool32 - vulkanMemoryModelDeviceScope::VkBool32 - vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 - shaderOutputViewportIndex::VkBool32 - shaderOutputLayer::VkBool32 - subgroupBroadcastDynamicId::VkBool32 -end - -struct VkConformanceVersion - major::UInt8 - minor::UInt8 - subminor::UInt8 - patch::UInt8 -end - -struct VkPhysicalDeviceVulkan12Properties - sType::VkStructureType - pNext::Ptr{Cvoid} - driverID::VkDriverId - driverName::NTuple{256, Cchar} - driverInfo::NTuple{256, Cchar} - conformanceVersion::VkConformanceVersion - denormBehaviorIndependence::VkShaderFloatControlsIndependence - roundingModeIndependence::VkShaderFloatControlsIndependence - shaderSignedZeroInfNanPreserveFloat16::VkBool32 - shaderSignedZeroInfNanPreserveFloat32::VkBool32 - shaderSignedZeroInfNanPreserveFloat64::VkBool32 - shaderDenormPreserveFloat16::VkBool32 - shaderDenormPreserveFloat32::VkBool32 - shaderDenormPreserveFloat64::VkBool32 - shaderDenormFlushToZeroFloat16::VkBool32 - shaderDenormFlushToZeroFloat32::VkBool32 - shaderDenormFlushToZeroFloat64::VkBool32 - shaderRoundingModeRTEFloat16::VkBool32 - shaderRoundingModeRTEFloat32::VkBool32 - shaderRoundingModeRTEFloat64::VkBool32 - shaderRoundingModeRTZFloat16::VkBool32 - shaderRoundingModeRTZFloat32::VkBool32 - shaderRoundingModeRTZFloat64::VkBool32 - maxUpdateAfterBindDescriptorsInAllPools::UInt32 - shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 - shaderSampledImageArrayNonUniformIndexingNative::VkBool32 - shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 - shaderStorageImageArrayNonUniformIndexingNative::VkBool32 - shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 - robustBufferAccessUpdateAfterBind::VkBool32 - quadDivergentImplicitLod::VkBool32 - maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 - maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 - maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 - maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 - maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 - maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 - maxPerStageUpdateAfterBindResources::UInt32 - maxDescriptorSetUpdateAfterBindSamplers::UInt32 - maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 - maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 - maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 - maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 - maxDescriptorSetUpdateAfterBindSampledImages::UInt32 - maxDescriptorSetUpdateAfterBindStorageImages::UInt32 - maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 - supportedDepthResolveModes::VkResolveModeFlags - supportedStencilResolveModes::VkResolveModeFlags - independentResolveNone::VkBool32 - independentResolve::VkBool32 - filterMinmaxSingleComponentFormats::VkBool32 - filterMinmaxImageComponentMapping::VkBool32 - maxTimelineSemaphoreValueDifference::UInt64 - framebufferIntegerColorSampleCounts::VkSampleCountFlags -end - -struct VkImageFormatListCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - viewFormatCount::UInt32 - pViewFormats::Ptr{VkFormat} -end - -struct VkAttachmentDescription2 - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkAttachmentDescriptionFlags - format::VkFormat - samples::VkSampleCountFlagBits - loadOp::VkAttachmentLoadOp - storeOp::VkAttachmentStoreOp - stencilLoadOp::VkAttachmentLoadOp - stencilStoreOp::VkAttachmentStoreOp - initialLayout::VkImageLayout - finalLayout::VkImageLayout -end - -struct VkAttachmentReference2 - sType::VkStructureType - pNext::Ptr{Cvoid} - attachment::UInt32 - layout::VkImageLayout - aspectMask::VkImageAspectFlags -end - -struct VkSubpassDescription2 - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkSubpassDescriptionFlags - pipelineBindPoint::VkPipelineBindPoint - viewMask::UInt32 - inputAttachmentCount::UInt32 - pInputAttachments::Ptr{VkAttachmentReference2} - colorAttachmentCount::UInt32 - pColorAttachments::Ptr{VkAttachmentReference2} - pResolveAttachments::Ptr{VkAttachmentReference2} - pDepthStencilAttachment::Ptr{VkAttachmentReference2} - preserveAttachmentCount::UInt32 - pPreserveAttachments::Ptr{UInt32} -end - -struct VkSubpassDependency2 - sType::VkStructureType - pNext::Ptr{Cvoid} - srcSubpass::UInt32 - dstSubpass::UInt32 - srcStageMask::VkPipelineStageFlags - dstStageMask::VkPipelineStageFlags - srcAccessMask::VkAccessFlags - dstAccessMask::VkAccessFlags - dependencyFlags::VkDependencyFlags - viewOffset::Int32 -end - -struct VkRenderPassCreateInfo2 - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkRenderPassCreateFlags - attachmentCount::UInt32 - pAttachments::Ptr{VkAttachmentDescription2} - subpassCount::UInt32 - pSubpasses::Ptr{VkSubpassDescription2} - dependencyCount::UInt32 - pDependencies::Ptr{VkSubpassDependency2} - correlatedViewMaskCount::UInt32 - pCorrelatedViewMasks::Ptr{UInt32} -end - -struct VkSubpassBeginInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - contents::VkSubpassContents -end - -struct VkSubpassEndInfo - sType::VkStructureType - pNext::Ptr{Cvoid} -end - -struct VkPhysicalDevice8BitStorageFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - storageBuffer8BitAccess::VkBool32 - uniformAndStorageBuffer8BitAccess::VkBool32 - storagePushConstant8::VkBool32 -end - -struct VkPhysicalDeviceDriverProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - driverID::VkDriverId - driverName::NTuple{256, Cchar} - driverInfo::NTuple{256, Cchar} - conformanceVersion::VkConformanceVersion -end - -struct VkPhysicalDeviceShaderAtomicInt64Features - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderBufferInt64Atomics::VkBool32 - shaderSharedInt64Atomics::VkBool32 -end - -struct VkPhysicalDeviceShaderFloat16Int8Features - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderFloat16::VkBool32 - shaderInt8::VkBool32 -end - -struct VkPhysicalDeviceFloatControlsProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - denormBehaviorIndependence::VkShaderFloatControlsIndependence - roundingModeIndependence::VkShaderFloatControlsIndependence - shaderSignedZeroInfNanPreserveFloat16::VkBool32 - shaderSignedZeroInfNanPreserveFloat32::VkBool32 - shaderSignedZeroInfNanPreserveFloat64::VkBool32 - shaderDenormPreserveFloat16::VkBool32 - shaderDenormPreserveFloat32::VkBool32 - shaderDenormPreserveFloat64::VkBool32 - shaderDenormFlushToZeroFloat16::VkBool32 - shaderDenormFlushToZeroFloat32::VkBool32 - shaderDenormFlushToZeroFloat64::VkBool32 - shaderRoundingModeRTEFloat16::VkBool32 - shaderRoundingModeRTEFloat32::VkBool32 - shaderRoundingModeRTEFloat64::VkBool32 - shaderRoundingModeRTZFloat16::VkBool32 - shaderRoundingModeRTZFloat32::VkBool32 - shaderRoundingModeRTZFloat64::VkBool32 -end - -struct VkDescriptorSetLayoutBindingFlagsCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - bindingCount::UInt32 - pBindingFlags::Ptr{VkDescriptorBindingFlags} -end - -struct VkPhysicalDeviceDescriptorIndexingFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderInputAttachmentArrayDynamicIndexing::VkBool32 - shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 - shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 - shaderUniformBufferArrayNonUniformIndexing::VkBool32 - shaderSampledImageArrayNonUniformIndexing::VkBool32 - shaderStorageBufferArrayNonUniformIndexing::VkBool32 - shaderStorageImageArrayNonUniformIndexing::VkBool32 - shaderInputAttachmentArrayNonUniformIndexing::VkBool32 - shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 - shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 - descriptorBindingUniformBufferUpdateAfterBind::VkBool32 - descriptorBindingSampledImageUpdateAfterBind::VkBool32 - descriptorBindingStorageImageUpdateAfterBind::VkBool32 - descriptorBindingStorageBufferUpdateAfterBind::VkBool32 - descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 - descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 - descriptorBindingUpdateUnusedWhilePending::VkBool32 - descriptorBindingPartiallyBound::VkBool32 - descriptorBindingVariableDescriptorCount::VkBool32 - runtimeDescriptorArray::VkBool32 -end - -struct VkPhysicalDeviceDescriptorIndexingProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - maxUpdateAfterBindDescriptorsInAllPools::UInt32 - shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 - shaderSampledImageArrayNonUniformIndexingNative::VkBool32 - shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 - shaderStorageImageArrayNonUniformIndexingNative::VkBool32 - shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 - robustBufferAccessUpdateAfterBind::VkBool32 - quadDivergentImplicitLod::VkBool32 - maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 - maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 - maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 - maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 - maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 - maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 - maxPerStageUpdateAfterBindResources::UInt32 - maxDescriptorSetUpdateAfterBindSamplers::UInt32 - maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 - maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 - maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 - maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 - maxDescriptorSetUpdateAfterBindSampledImages::UInt32 - maxDescriptorSetUpdateAfterBindStorageImages::UInt32 - maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 -end - -struct VkDescriptorSetVariableDescriptorCountAllocateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorSetCount::UInt32 - pDescriptorCounts::Ptr{UInt32} -end - -struct VkDescriptorSetVariableDescriptorCountLayoutSupport - sType::VkStructureType - pNext::Ptr{Cvoid} - maxVariableDescriptorCount::UInt32 -end - -struct VkSubpassDescriptionDepthStencilResolve - sType::VkStructureType - pNext::Ptr{Cvoid} - depthResolveMode::VkResolveModeFlagBits - stencilResolveMode::VkResolveModeFlagBits - pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} -end - -struct VkPhysicalDeviceDepthStencilResolveProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedDepthResolveModes::VkResolveModeFlags - supportedStencilResolveModes::VkResolveModeFlags - independentResolveNone::VkBool32 - independentResolve::VkBool32 -end - -struct VkPhysicalDeviceScalarBlockLayoutFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - scalarBlockLayout::VkBool32 -end - -struct VkImageStencilUsageCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - stencilUsage::VkImageUsageFlags -end - -struct VkSamplerReductionModeCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - reductionMode::VkSamplerReductionMode -end - -struct VkPhysicalDeviceSamplerFilterMinmaxProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - filterMinmaxSingleComponentFormats::VkBool32 - filterMinmaxImageComponentMapping::VkBool32 -end - -struct VkPhysicalDeviceVulkanMemoryModelFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - vulkanMemoryModel::VkBool32 - vulkanMemoryModelDeviceScope::VkBool32 - vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 -end - -struct VkPhysicalDeviceImagelessFramebufferFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - imagelessFramebuffer::VkBool32 -end - -struct VkFramebufferAttachmentImageInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkImageCreateFlags - usage::VkImageUsageFlags - width::UInt32 - height::UInt32 - layerCount::UInt32 - viewFormatCount::UInt32 - pViewFormats::Ptr{VkFormat} -end - -struct VkFramebufferAttachmentsCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - attachmentImageInfoCount::UInt32 - pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} -end - -struct VkRenderPassAttachmentBeginInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - attachmentCount::UInt32 - pAttachments::Ptr{VkImageView} -end - -struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - uniformBufferStandardLayout::VkBool32 -end - -struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSubgroupExtendedTypes::VkBool32 -end - -struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - separateDepthStencilLayouts::VkBool32 -end - -struct VkAttachmentReferenceStencilLayout - sType::VkStructureType - pNext::Ptr{Cvoid} - stencilLayout::VkImageLayout -end - -struct VkAttachmentDescriptionStencilLayout - sType::VkStructureType - pNext::Ptr{Cvoid} - stencilInitialLayout::VkImageLayout - stencilFinalLayout::VkImageLayout -end - -struct VkPhysicalDeviceHostQueryResetFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - hostQueryReset::VkBool32 -end - -struct VkPhysicalDeviceTimelineSemaphoreFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - timelineSemaphore::VkBool32 -end - -struct VkPhysicalDeviceTimelineSemaphoreProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - maxTimelineSemaphoreValueDifference::UInt64 -end - -struct VkSemaphoreTypeCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphoreType::VkSemaphoreType - initialValue::UInt64 -end - -struct VkTimelineSemaphoreSubmitInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - waitSemaphoreValueCount::UInt32 - pWaitSemaphoreValues::Ptr{UInt64} - signalSemaphoreValueCount::UInt32 - pSignalSemaphoreValues::Ptr{UInt64} -end - -struct VkSemaphoreWaitInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkSemaphoreWaitFlags - semaphoreCount::UInt32 - pSemaphores::Ptr{VkSemaphore} - pValues::Ptr{UInt64} -end - -struct VkSemaphoreSignalInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - value::UInt64 -end - -struct VkPhysicalDeviceBufferDeviceAddressFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - bufferDeviceAddress::VkBool32 - bufferDeviceAddressCaptureReplay::VkBool32 - bufferDeviceAddressMultiDevice::VkBool32 -end - -struct VkBufferDeviceAddressInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - buffer::VkBuffer -end - -struct VkBufferOpaqueCaptureAddressCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - opaqueCaptureAddress::UInt64 -end - -struct VkMemoryOpaqueCaptureAddressAllocateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - opaqueCaptureAddress::UInt64 -end - -struct VkDeviceMemoryOpaqueCaptureAddressInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory -end - -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) -const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) -const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) -const PFN_vkCreateRenderPass2 = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) -const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) -const PFN_vkResetQueryPool = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) -const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) -const PFN_vkWaitSemaphores = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) -const PFN_vkSignalSemaphore = Ptr{Cvoid} - -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} - -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} - -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) -const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} - -function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function 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_SECONDARY_COMMAND_BUFFERS_BIT_KHR = 1 - VK_RENDERING_SUSPENDING_BIT_KHR = 2 - VK_RENDERING_RESUMING_BIT_KHR = 4 - 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 - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - resolveMode::VkResolveModeFlagBits - resolveImageView::VkImageView - resolveImageLayout::VkImageLayout - loadOp::VkAttachmentLoadOp - storeOp::VkAttachmentStoreOp - clearValue::VkClearValue -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 - -const VkSurfaceKHR_T = Cvoid - -const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} - -@cenum VkPresentModeKHR::UInt32 begin - VK_PRESENT_MODE_IMMEDIATE_KHR = 0 - VK_PRESENT_MODE_MAILBOX_KHR = 1 - VK_PRESENT_MODE_FIFO_KHR = 2 - VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3 - VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000 - VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001 - VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 -end - -@cenum VkColorSpaceKHR::UInt32 begin - VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0 - VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001 - VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002 - VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003 - VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004 - VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005 - VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006 - VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007 - VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008 - VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009 - VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010 - VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011 - VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012 - VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013 - VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014 - VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000 - VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 - VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 - VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 -end - -@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin - VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 1 - VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 2 - VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 4 - VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 8 - VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 16 - VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 32 - VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 64 - VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 128 - VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 256 - VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end - -@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin - VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 1 - VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 2 - VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 4 - VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 8 - VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end - -const VkCompositeAlphaFlagsKHR = VkFlags - -const VkSurfaceTransformFlagsKHR = VkFlags - -struct VkSurfaceCapabilitiesKHR - minImageCount::UInt32 - maxImageCount::UInt32 - currentExtent::VkExtent2D - minImageExtent::VkExtent2D - maxImageExtent::VkExtent2D - maxImageArrayLayers::UInt32 - supportedTransforms::VkSurfaceTransformFlagsKHR - currentTransform::VkSurfaceTransformFlagBitsKHR - supportedCompositeAlpha::VkCompositeAlphaFlagsKHR - supportedUsageFlags::VkImageUsageFlags -end - -struct VkSurfaceFormatKHR - format::VkFormat - colorSpace::VkColorSpaceKHR -end - -# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) -const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) -const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) -const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} - -function vkDestroySurfaceKHR(instance, surface, pAllocator) - ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) -end - -function 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_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_MAX_ENUM_KHR = 2147483647 -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 -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_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end - -const VkVideoSessionCreateFlagsKHR = VkFlags - -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_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 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 - 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 - -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 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 - 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} -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 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 - 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 - -@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 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} -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 - -struct VkRenderingFragmentShadingRateAttachmentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout - shadingRateAttachmentTexelSize::VkExtent2D -end - -struct VkRenderingFragmentDensityMapAttachmentInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - imageLayout::VkImageLayout -end - -struct VkAttachmentSampleCountInfoAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - colorAttachmentCount::UInt32 - pColorAttachmentSamples::Ptr{VkSampleCountFlagBits} - depthStencilAttachmentSamples::VkSampleCountFlagBits -end - -const VkAttachmentSampleCountInfoNV = VkAttachmentSampleCountInfoAMD - -struct VkMultiviewPerViewAttributesInfoNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - perViewAttributes::VkBool32 - perViewAttributesPositionXOnly::VkBool32 -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 - -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 - -struct VkPhysicalDevicePushDescriptorPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPushDescriptors::UInt32 -end - -# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) -const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) -const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} - -function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) - ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) -end - -function 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 - -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 - -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 -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 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 - 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 - -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 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 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 - flags::StdVideoH265ProfileTierLevelFlags - general_profile_idc::StdVideoH265ProfileIdc - general_level_idc::StdVideoH265LevelIdc -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} -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 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 - 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} -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 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 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 - 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} -end - -struct StdVideoH265LongTermRefPicsSps - used_by_curr_pic_lt_sps_flag::UInt32 - lt_ref_pic_poc_lsb_sps::NTuple{32, UInt32} -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 - -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 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 - 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 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 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 - 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} -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 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 - flags::StdVideoDecodeH265ReferenceInfoFlags - PicOrderCntVal::Int32 -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 - -@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 - -struct VkDeviceQueueGlobalPriorityCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - globalPriority::VkQueueGlobalPriorityKHR -end - -struct VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - globalPriorityQuery::VkBool32 -end - -struct VkQueueFamilyGlobalPriorityPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - priorityCount::UInt32 - priorities::NTuple{16, VkQueueGlobalPriorityKHR} -end - -const VkDriverIdKHR = VkDriverId - -const VkConformanceVersionKHR = VkConformanceVersion - -const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties - -const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence - -const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties - -const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits - -const VkResolveModeFlagsKHR = VkResolveModeFlags - -const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve - -const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties - -const VkSemaphoreTypeKHR = VkSemaphoreType - -const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits - -const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags - -const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures - -const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties - -const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo - -const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo - -const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo - -const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) -const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) -const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) -const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} - -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) - ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) -end - -function 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 - -# 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 - -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 - -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 - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - format::VkPipelineExecutableStatisticFormatKHR - value::VkPipelineExecutableStatisticValueKHR -end - -struct VkPipelineExecutableInternalRepresentationKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - isText::VkBool32 - dataSize::Csize_t - pData::Ptr{Cvoid} -end - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) -const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) -const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) -const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} - -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) - ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) -end - -function 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 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 - -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 - -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_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} - -# 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_vkGetQueueCheckpointData2NV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointData2NV * pCheckpointData ) -const PFN_vkGetQueueCheckpointData2NV = 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 - -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 - -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 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 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_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 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 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 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 - -@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 -end - -struct VkPhysicalDevicePipelineRobustnessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineRobustness::VkBool32 -end - -struct VkPhysicalDevicePipelineRobustnessPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - defaultRobustnessStorageBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessUniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessVertexInputs::VkPipelineRobustnessBufferBehaviorEXT - defaultRobustnessImages::VkPipelineRobustnessImageBehaviorEXT -end - -struct VkPipelineRobustnessCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - storageBuffers::VkPipelineRobustnessBufferBehaviorEXT - uniformBuffers::VkPipelineRobustnessBufferBehaviorEXT - vertexInputs::VkPipelineRobustnessBufferBehaviorEXT - images::VkPipelineRobustnessImageBehaviorEXT -end - -@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin - VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 - VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 -end - -const VkConditionalRenderingFlagsEXT = VkFlags - -struct VkConditionalRenderingBeginInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - buffer::VkBuffer - offset::VkDeviceSize - flags::VkConditionalRenderingFlagsEXT -end - -struct VkPhysicalDeviceConditionalRenderingFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - conditionalRendering::VkBool32 - inheritedConditionalRendering::VkBool32 -end - -struct VkCommandBufferInheritanceConditionalRenderingInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - conditionalRenderingEnable::VkBool32 -end - -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) -const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} - -function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) - ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) -end - -function 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 - -@cenum VkViewportCoordinateSwizzleNV::UInt32 begin - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0 - VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1 - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2 - VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3 - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4 - VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5 - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6 - VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7 - VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 2147483647 -end - -const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags - -struct VkViewportSwizzleNV - x::VkViewportCoordinateSwizzleNV - y::VkViewportCoordinateSwizzleNV - z::VkViewportCoordinateSwizzleNV - w::VkViewportCoordinateSwizzleNV -end - -struct VkPipelineViewportSwizzleStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineViewportSwizzleStateCreateFlagsNV - viewportCount::UInt32 - pViewportSwizzles::Ptr{VkViewportSwizzleNV} -end - -@cenum VkDiscardRectangleModeEXT::UInt32 begin - VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 - VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 - VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 -end - -const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags - -struct VkPhysicalDeviceDiscardRectanglePropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxDiscardRectangles::UInt32 -end - -struct VkPipelineDiscardRectangleStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineDiscardRectangleStateCreateFlagsEXT - discardRectangleMode::VkDiscardRectangleModeEXT - discardRectangleCount::UInt32 - pDiscardRectangles::Ptr{VkRect2D} -end - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) -const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} - -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) - ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) -end - -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fptr) - ccall(fptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) -end - -@cenum VkConservativeRasterizationModeEXT::UInt32 begin - VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0 - VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1 - VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2 - VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 -end - -const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags - -struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - primitiveOverestimationSize::Cfloat - maxExtraPrimitiveOverestimationSize::Cfloat - extraPrimitiveOverestimationSizeGranularity::Cfloat - primitiveUnderestimation::VkBool32 - conservativePointAndLineRasterization::VkBool32 - degenerateTrianglesRasterized::VkBool32 - degenerateLinesRasterized::VkBool32 - fullyCoveredFragmentShaderInputVariable::VkBool32 - conservativeRasterizationPostDepthCoverage::VkBool32 -end - -struct VkPipelineRasterizationConservativeStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT - conservativeRasterizationMode::VkConservativeRasterizationModeEXT - extraPrimitiveOverestimationSize::Cfloat -end - -const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags - -struct VkPhysicalDeviceDepthClipEnableFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - depthClipEnable::VkBool32 -end - -struct VkPipelineRasterizationDepthClipStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT - depthClipEnable::VkBool32 -end - -struct VkXYColorEXT - x::Cfloat - y::Cfloat -end - -struct VkHdrMetadataEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - displayPrimaryRed::VkXYColorEXT - displayPrimaryGreen::VkXYColorEXT - displayPrimaryBlue::VkXYColorEXT - whitePoint::VkXYColorEXT - maxLuminance::Cfloat - minLuminance::Cfloat - maxContentLightLevel::Cfloat - maxFrameAverageLightLevel::Cfloat -end - -# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) -const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} - -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) - ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) -end - -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fptr) - ccall(fptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) -end - -const VkDebugUtilsMessengerEXT_T = Cvoid - -const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} - -const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags - -@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin - VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 1 - VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 16 - VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 256 - VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 4096 - VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 -end - -@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin - VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 1 - VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 2 - VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 4 - VK_DEBUG_UTILS_MESSAGE_TYPE_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 - -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 - -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_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_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 - -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_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 - -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 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 = VkQueueGlobalPriorityKHR - -const VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfoKHR - -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} - -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 - -@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin - VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 -end - -const VkPipelineCompilerControlFlagsAMD = VkFlags - -struct VkPipelineCompilerControlCreateInfoAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - compilerControlFlags::VkPipelineCompilerControlFlagsAMD -end - -@cenum VkTimeDomainEXT::UInt32 begin - VK_TIME_DOMAIN_DEVICE_EXT = 0 - VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 - VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 - VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 - VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 -end - -struct VkCalibratedTimestampInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - timeDomain::VkTimeDomainEXT -end - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) -const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) -const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} - -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) - ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) -end - -function 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) -end - -struct VkPhysicalDeviceShaderCorePropertiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderEngineCount::UInt32 - shaderArraysPerEngineCount::UInt32 - computeUnitsPerShaderArray::UInt32 - simdPerComputeUnit::UInt32 - wavefrontsPerSimd::UInt32 - wavefrontSize::UInt32 - sgprsPerSimd::UInt32 - minSgprAllocation::UInt32 - maxSgprAllocation::UInt32 - sgprAllocationGranularity::UInt32 - vgprsPerSimd::UInt32 - minVgprAllocation::UInt32 - maxVgprAllocation::UInt32 - vgprAllocationGranularity::UInt32 -end - -@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin - VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 - VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 - VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 - VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 -end - -struct VkDeviceMemoryOverallocationCreateInfoAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - overallocationBehavior::VkMemoryOverallocationBehaviorAMD -end - -struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxVertexAttribDivisor::UInt32 -end - -struct VkVertexInputBindingDivisorDescriptionEXT - binding::UInt32 - divisor::UInt32 -end - -struct VkPipelineVertexInputDivisorStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexBindingDivisorCount::UInt32 - pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} -end - -struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexAttributeInstanceRateDivisor::VkBool32 - vertexAttributeInstanceRateZeroDivisor::VkBool32 -end - -const VkPipelineCreationFeedbackFlagBitsEXT = VkPipelineCreationFeedbackFlagBits - -const VkPipelineCreationFeedbackFlagsEXT = VkPipelineCreationFeedbackFlags - -const VkPipelineCreationFeedbackCreateInfoEXT = VkPipelineCreationFeedbackCreateInfo - -const VkPipelineCreationFeedbackEXT = VkPipelineCreationFeedback - -struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - computeDerivativeGroupQuads::VkBool32 - computeDerivativeGroupLinear::VkBool32 -end - -struct VkPhysicalDeviceMeshShaderFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 -end - -struct VkPhysicalDeviceMeshShaderPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - maxDrawMeshTasksCount::UInt32 - maxTaskWorkGroupInvocations::UInt32 - maxTaskWorkGroupSize::NTuple{3, UInt32} - maxTaskTotalMemorySize::UInt32 - maxTaskOutputCount::UInt32 - maxMeshWorkGroupInvocations::UInt32 - maxMeshWorkGroupSize::NTuple{3, UInt32} - maxMeshTotalMemorySize::UInt32 - maxMeshOutputVertices::UInt32 - maxMeshOutputPrimitives::UInt32 - maxMeshMultiviewViewCount::UInt32 - meshOutputPerVertexGranularity::UInt32 - meshOutputPerPrimitiveGranularity::UInt32 -end - -struct VkDrawMeshTasksIndirectCommandNV - taskCount::UInt32 - firstTask::UInt32 -end - -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) -const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} - -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) - ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) -end - -function 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_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) -const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} - -function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) - ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) -end - -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 - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) -const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) -const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} - -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) - ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) -end - -function 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 - -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 - -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 - type::VkPerformanceValueTypeINTEL - data::VkPerformanceValueDataINTEL -end - -struct VkInitializePerformanceApiInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - pUserData::Ptr{Cvoid} -end - -struct VkQueryPoolPerformanceQueryCreateInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCountersSampling::VkQueryPoolSamplingModeINTEL -end - -const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL - -struct VkPerformanceMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt64 -end - -struct VkPerformanceStreamMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt32 -end - -struct VkPerformanceOverrideInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceOverrideTypeINTEL - enable::VkBool32 - parameter::UInt64 -end - -struct VkPerformanceConfigurationAcquireInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceConfigurationTypeINTEL -end - -# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) -const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) -const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) -const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) -const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) -const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) -const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) -const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) -const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) -const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} - -function vkInitializePerformanceApiINTEL(device, pInitializeInfo) - ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) -end - -function 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 - -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 - -@cenum VkComponentTypeNV::UInt32 begin - VK_COMPONENT_TYPE_FLOAT16_NV = 0 - VK_COMPONENT_TYPE_FLOAT32_NV = 1 - VK_COMPONENT_TYPE_FLOAT64_NV = 2 - VK_COMPONENT_TYPE_SINT8_NV = 3 - VK_COMPONENT_TYPE_SINT16_NV = 4 - VK_COMPONENT_TYPE_SINT32_NV = 5 - VK_COMPONENT_TYPE_SINT64_NV = 6 - VK_COMPONENT_TYPE_UINT8_NV = 7 - VK_COMPONENT_TYPE_UINT16_NV = 8 - VK_COMPONENT_TYPE_UINT32_NV = 9 - VK_COMPONENT_TYPE_UINT64_NV = 10 - VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 -end - -@cenum VkScopeNV::UInt32 begin - VK_SCOPE_DEVICE_NV = 1 - VK_SCOPE_WORKGROUP_NV = 2 - VK_SCOPE_SUBGROUP_NV = 3 - VK_SCOPE_QUEUE_FAMILY_NV = 5 - VK_SCOPE_MAX_ENUM_NV = 2147483647 -end - -struct VkCooperativeMatrixPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - MSize::UInt32 - NSize::UInt32 - KSize::UInt32 - AType::VkComponentTypeNV - BType::VkComponentTypeNV - CType::VkComponentTypeNV - DType::VkComponentTypeNV - scope::VkScopeNV -end - -struct VkPhysicalDeviceCooperativeMatrixFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cooperativeMatrix::VkBool32 - cooperativeMatrixRobustBufferAccess::VkBool32 -end - -struct VkPhysicalDeviceCooperativeMatrixPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cooperativeMatrixSupportedStages::VkShaderStageFlags -end - -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) -const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} - -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) -end - -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 - -@cenum VkLineRasterizationModeEXT::UInt32 begin - VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 - VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 - VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 - VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 - VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 -end - -struct VkPhysicalDeviceLineRasterizationFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - rectangularLines::VkBool32 - bresenhamLines::VkBool32 - smoothLines::VkBool32 - stippledRectangularLines::VkBool32 - stippledBresenhamLines::VkBool32 - stippledSmoothLines::VkBool32 -end - -struct VkPhysicalDeviceLineRasterizationPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - lineSubPixelPrecisionBits::UInt32 -end - -struct VkPipelineRasterizationLineStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - lineRasterizationMode::VkLineRasterizationModeEXT - stippledLineEnable::VkBool32 - lineStippleFactor::UInt32 - lineStipplePattern::UInt16 -end - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) -const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} - -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) - ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) -end - -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 - -struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - indexTypeUint8::VkBool32 -end - -struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - extendedDynamicState::VkBool32 -end - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) -const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) -const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) -const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) -const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) -const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) -const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) -const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) -const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) -const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) -const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) -const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} - -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) -const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} - -function vkCmdSetCullModeEXT(commandBuffer, cullMode) - ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) -end - -function 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 - -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 - -@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 VkPresentScalingFlagsEXT = VkFlags - -@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 -end - -const VkPresentGravityFlagsEXT = VkFlags - -struct VkSurfacePresentModeEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - presentMode::VkPresentModeKHR -end - -struct VkSurfacePresentScalingCapabilitiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedPresentScaling::VkPresentScalingFlagsEXT - supportedPresentGravityX::VkPresentGravityFlagsEXT - supportedPresentGravityY::VkPresentGravityFlagsEXT - minScaledImageExtent::VkExtent2D - maxScaledImageExtent::VkExtent2D -end - -struct VkSurfacePresentModeCompatibilityEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} -end - -struct VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainMaintenance1::VkBool32 -end - -struct VkSwapchainPresentFenceInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pFences::Ptr{VkFence} -end - -struct VkSwapchainPresentModesCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - presentModeCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} -end - -struct VkSwapchainPresentModeInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pPresentModes::Ptr{VkPresentModeKHR} -end - -struct VkSwapchainPresentScalingCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - scalingBehavior::VkPresentScalingFlagsEXT - presentGravityX::VkPresentGravityFlagsEXT - presentGravityY::VkPresentGravityFlagsEXT -end - -struct VkReleaseSwapchainImagesInfoEXT - 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 -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 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 - -struct VkPhysicalDeviceRobustness2FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - robustBufferAccess2::VkBool32 - robustImageAccess2::VkBool32 - nullDescriptor::VkBool32 -end - -struct VkPhysicalDeviceRobustness2PropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - robustStorageBufferAccessSizeAlignment::VkDeviceSize - robustUniformBufferAccessSizeAlignment::VkDeviceSize -end - -struct VkSamplerCustomBorderColorCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - customBorderColor::VkClearColorValue - format::VkFormat -end - -struct VkPhysicalDeviceCustomBorderColorPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxCustomBorderColorSamplers::UInt32 -end - -struct VkPhysicalDeviceCustomBorderColorFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - customBorderColors::VkBool32 - customBorderColorWithoutFormat::VkBool32 -end - -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 - -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 - -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 - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkDescriptorType - data::VkDescriptorDataEXT -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 - -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 - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexData::VkDeviceOrHostAddressConstKHR -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 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 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 - -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 - type::VkAccelerationStructureMotionInstanceTypeNV - flags::VkAccelerationStructureMotionInstanceFlagsNV - data::VkAccelerationStructureMotionInstanceDataNV -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 VkSubresourceLayout2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - subresourceLayout::VkSubresourceLayout -end - -struct VkImageSubresource2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageSubresource::VkImageSubresource -end - -struct VkImageCompressionPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageCompressionFlags::VkImageCompressionFlagsEXT - imageCompressionFixedRateFlags::VkImageCompressionFixedRateFlagsEXT -end - -# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout2EXT ) ( VkDevice device , VkImage image , const VkImageSubresource2EXT * pSubresource , VkSubresourceLayout2EXT * pLayout ) -const PFN_vkGetImageSubresourceLayout2EXT = Ptr{Cvoid} - -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout) - ccall((:vkGetImageSubresourceLayout2EXT, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) -end - -function vkGetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout, fptr) - ccall(fptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource2EXT}, Ptr{VkSubresourceLayout2EXT}), device, image, pSubresource, pLayout) -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 -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 - -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 - -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 = VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR - -const VkQueueFamilyGlobalPriorityPropertiesEXT = VkQueueFamilyGlobalPriorityPropertiesKHR - -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 - -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_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 - -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 - 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 -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 - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkMicromapEXT - dst::VkDeviceOrHostAddressKHR - mode::VkCopyMicromapModeEXT -end - -struct VkCopyMemoryToMicromapInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkMicromapEXT - mode::VkCopyMicromapModeEXT -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 - 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 ) ( 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 -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 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 - -struct VkPhysicalDeviceDepthClampZeroOneFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - depthClampZeroOne::VkBool32 -end - -struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - nonSeamlessCubeMap::VkBool32 -end - -struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapOffset::VkBool32 -end - -struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityOffsetGranularity::VkExtent2D -end - -struct VkSubpassFragmentDensityMapOffsetEndInfoQCOM - 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 -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 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 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_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} - -# 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_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 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 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 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 - -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 - -struct VkPhysicalDevicePipelineProtectedAccessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineProtectedAccess::VkBool32 -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 - -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 - -@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 - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexFormat::VkFormat - vertexData::VkDeviceOrHostAddressConstKHR - vertexStride::VkDeviceSize - maxVertex::UInt32 - indexType::VkIndexType - indexData::VkDeviceOrHostAddressConstKHR - transformData::VkDeviceOrHostAddressConstKHR -end - -struct VkAccelerationStructureGeometryAabbsDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - data::VkDeviceOrHostAddressConstKHR - stride::VkDeviceSize -end - -struct VkAccelerationStructureGeometryInstancesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - arrayOfPointers::VkBool32 - data::VkDeviceOrHostAddressConstKHR -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 - -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 - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkAccelerationStructureGeometryDataKHR - flags::VkGeometryFlagsKHR -end - -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 - -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 - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkDeviceOrHostAddressKHR - mode::VkCopyAccelerationStructureModeKHR -end - -struct VkCopyMemoryToAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end - -struct VkCopyAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end - -struct VkAccelerationStructureBuildSizesInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureSize::VkDeviceSize - updateScratchSize::VkDeviceSize - buildScratchSize::VkDeviceSize -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 VkStridedDeviceAddressRegionKHR - deviceAddress::VkDeviceAddress - stride::VkDeviceSize - size::VkDeviceSize -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 = 240 - -const VK_HEADER_VERSION_COMPLETE = VK_MAKE_API_VERSION(0, 1, 3, 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_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 = 7 - -const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" - -const VK_KHR_video_decode_h264 = 1 - -const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 - -const vulkan_video_codec_h264std = 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 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 STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2 - -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 VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 8 - -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_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_H_ = 1 - -const vulkan_video_codec_h265std = 1 - -const STD_VIDEO_H265_SUBLAYERS_LIST_SIZE = 7 - -const STD_VIDEO_H265_CPB_CNT_LIST_SIZE = 32 - -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_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE = 3 - -const STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE = 128 - -const STD_VIDEO_H265_MAX_DPB_SIZE = 16 - -const STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS = 32 - -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_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_LONG_TERM_PICS = 16 - -const STD_VIDEO_H265_MAX_DELTA_POC = 48 - -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 STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE = 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_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode" - -const VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 7 - -const VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265" - -const VK_KHR_global_priority = 1 - -const VK_MAX_GLOBAL_PRIORITY_SIZE_KHR = Cuint(16) - -const VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1 - -const VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority" - -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_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_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_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_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 = 1 - -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_EXTENSION_NAME = "VK_NVX_image_view_handle" - -const VK_AMD_draw_indirect_count = 1 - -const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 - -const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" - -const VK_AMD_negative_viewport_height = 1 - -const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 - -const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" - -const VK_AMD_gpu_shader_half_float = 1 - -const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 - -const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" - -const VK_AMD_shader_ballot = 1 - -const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 - -const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" - -const VK_AMD_texture_gather_bias_lod = 1 - -const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 - -const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" - -const VK_AMD_shader_info = 1 - -const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 - -const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" - -const VK_AMD_shader_image_load_store_lod = 1 - -const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 - -const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" - -const VK_NV_corner_sampled_image = 1 - -const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 - -const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" - -const VK_IMG_format_pvrtc = 1 - -const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 - -const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" - -const VK_NV_external_memory_capabilities = 1 - -const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 - -const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" - -const VK_NV_external_memory = 1 - -const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 - -const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" - -const VK_EXT_validation_flags = 1 - -const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 - -const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" - -const VK_EXT_shader_subgroup_ballot = 1 - -const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 - -const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" - -const VK_EXT_shader_subgroup_vote = 1 - -const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 - -const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" - -const VK_EXT_texture_compression_astc_hdr = 1 - -const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 - -const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" - -const VK_EXT_astc_decode_mode = 1 - -const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 - -const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" - -const VK_EXT_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 = 1 - -const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" - -const VK_EXT_conservative_rasterization = 1 - -const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 - -const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" - -const VK_EXT_depth_clip_enable = 1 - -const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 - -const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" - -const VK_EXT_swapchain_colorspace = 1 - -const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 - -const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" - -const VK_EXT_hdr_metadata = 1 - -const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 - -const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" - -const VK_EXT_external_memory_dma_buf = 1 - -const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 - -const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" - -const VK_EXT_queue_family_foreign = 1 - -const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 - -const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" - -const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(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 = 1 - -const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" - -const VK_NV_device_diagnostic_checkpoints = 1 - -const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 - -const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" - -const VK_INTEL_shader_integer_functions2 = 1 - -const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 - -const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" - -const VK_INTEL_performance_query = 1 - -const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 - -const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" - -const VK_EXT_pci_bus_info = 1 - -const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 - -const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" - -const VK_AMD_display_native_hdr = 1 - -const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 - -const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" - -const VK_EXT_fragment_density_map = 1 - -const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 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 = 5 - -const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" - -const VK_NV_cooperative_matrix = 1 - -const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 - -const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" - -const VK_NV_coverage_reduction_mode = 1 - -const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 - -const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" - -const VK_EXT_fragment_shader_interlock = 1 - -const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 - -const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" - -const VK_EXT_ycbcr_image_arrays = 1 - -const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 - -const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" - -const VK_EXT_provoking_vertex = 1 - -const VK_EXT_PROVOKING_VERTEX_SPEC_VERSION = 1 - -const VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME = "VK_EXT_provoking_vertex" - -const VK_EXT_headless_surface = 1 - -const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 - -const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" - -const VK_EXT_line_rasterization = 1 - -const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 - -const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" - -const VK_EXT_shader_atomic_float = 1 - -const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 - -const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" - -const VK_EXT_host_query_reset = 1 - -const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 - -const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" - -const VK_EXT_index_type_uint8 = 1 - -const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 - -const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" - -const VK_EXT_extended_dynamic_state = 1 - -const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 - -const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" - -const VK_EXT_shader_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 = 3 - -const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" - -const VK_EXT_device_memory_report = 1 - -const VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION = 2 - -const VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME = "VK_EXT_device_memory_report" - -const VK_EXT_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_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 = 1 - -const VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME = "VK_QCOM_rotated_copy_commands" - -const VK_EXT_image_robustness = 1 - -const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 - -const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" - -const VK_EXT_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 = 1 - -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_HUAWEI_subpass_shading = 1 - -const VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION = 2 - -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_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_KHR - -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_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 = 1 - -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_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_QCOM_fragment_density_map_offset = 1 - -const VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1 - -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_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_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_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 = 1 - -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_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_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_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_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/src/LibVulkan.jl b/src/LibVulkan.jl index 273aaed..226b1ce 100644 --- a/src/LibVulkan.jl +++ b/src/LibVulkan.jl @@ -94,7 +94,7 @@ elseif Sys.islinux() && Sys.ARCH === :x86_64 && !IS_LIBC_MUSL elseif Sys.islinux() && Sys.ARCH === :x86_64 && IS_LIBC_MUSL include("../lib/x86_64-linux-musl.jl") elseif Sys.isbsd() && !Sys.isapple() - include("../lib/x86_64-unknown-freebsd.jl") + include("../lib/x86_64-unknown-freebsd13.2.jl") elseif Sys.iswindows() && Sys.ARCH === :x86_64 include("../lib/x86_64-w64-mingw32.jl") else From ec5342e48db30bc5c33cac3464dbbe8fa3c30673 Mon Sep 17 00:00:00 2001 From: SimonDanisch Date: Thu, 17 Sep 2026 18:20:36 +0200 Subject: [PATCH 06/17] Choose the Vulkan library by preference, not by environment variable `JULIA_VULKAN_LIBNAME` is read here, while the package precompiles, and an `ENV` read is not part of the precompile hash. So setting it takes effect only if something else happens to invalidate the cache. Observed directly on a driverless Mac: set the variable, restart Julia, and the cache built WITHOUT it was reused -- `HAS_LOADER` stayed false on a machine that by then had a perfectly good driver available. Only editing a source file forced the rebuild. A preference is hashed, so changing it rebuilds the bindings against the new library on the next load. `Vulkan.set_driver` writes it. The environment variable still works and still comes before the system default, but it is the fallback now rather than the mechanism. --- Project.toml | 2 ++ src/LibVulkan.jl | 37 ++++++++++++++++++++++++++----------- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/Project.toml b/Project.toml index fdb3ce8..af99d35 100644 --- a/Project.toml +++ b/Project.toml @@ -4,9 +4,11 @@ version = "1.4.0" [deps] Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb" +Preferences = "21216c6a-2e73-6563-6e65-726566657250" Vulkan_Headers_jll = "8d446b21-f3ad-5576-a034-752265b9b6f9" [compat] +Preferences = "1" Vulkan_Headers_jll = "1.4.321" julia = "1.3" diff --git a/src/LibVulkan.jl b/src/LibVulkan.jl index 226b1ce..51efa60 100644 --- a/src/LibVulkan.jl +++ b/src/LibVulkan.jl @@ -4,18 +4,33 @@ include("CEnum.jl") using .CEnum import Libdl +using Preferences: @load_preference -@static if !isempty(get(ENV, "JULIA_VULKAN_LIBNAME", "")) - const libvulkan = ENV["JULIA_VULKAN_LIBNAME"] -elseif Sys.iswindows() - const libvulkan = "vulkan-1.dll" -elseif Sys.isapple() - const libvulkan = "libvulkan.dylib" -elseif Sys.islinux() - const libvulkan = "libvulkan.so.1" -else - const libvulkan = "libvulkan" -end +""" +The name the system gives a Vulkan implementation, when nothing else says otherwise. +""" +const SYSTEM_LIBVULKAN = Sys.iswindows() ? "vulkan-1.dll" : + Sys.isapple() ? "libvulkan.dylib" : + Sys.islinux() ? "libvulkan.so.1" : "libvulkan" + +""" +Which Vulkan library this package binds to. + +A PREFERENCE first, because that is the only one of the three that works +reliably. This is read while the package precompiles, and a preference is part of +the precompile hash: change it and the bindings are rebuilt against the new +library on the next load. Set it with `Vulkan.set_driver`, or by hand with +`Preferences.set_preferences!("VulkanCore", "libvulkan" => path)`. + +`JULIA_VULKAN_LIBNAME` still works and still comes before the system default, but +it is the fragile one and only a fallback now: an `ENV` read is NOT part of the +precompile hash, so setting it takes effect only if something else happens to +invalidate the cache. Observed directly -- setting it and restarting Julia reused +a cache built without it, and `HAS_LOADER` stayed `false` on a machine that then +had a perfectly good driver. +""" +const libvulkan = @load_preference("libvulkan", + get(ENV, "JULIA_VULKAN_LIBNAME", SYSTEM_LIBVULKAN)) """ Whether a Vulkan loader was findable when this package was PRECOMPILED. From fd0f3ea9cf71cdece65614ca5214dec6a72af406 Mon Sep 17 00:00:00 2001 From: SimonDanisch Date: Tue, 22 Sep 2026 17:20:43 +0200 Subject: [PATCH 07/17] Get CI a Vulkan driver, and stop weakening the suite for it The SDK download was pinned to LunarG 1.3.239.0, which LunarG no longer serves: every job failed on a 404 before Julia was installed. Mesa's lavapipe comes from apt instead, through the same action Vulkan.jl uses, so a runner with no GPU still has something to create an instance against. That alone leaves CI red. `test/glfw.jl` asserted `@test_broken result == VK_SUCCESS` whenever `JULIA_GITHUB_ACTIONS_CI` was ON, because the runner had no driver -- with one present that is an Unexpected Pass, which is an error. The whole env-var gate is gone: the tests ask `HAS_LOADER`, the same question the package itself gates on, so CI and a developer machine now run the same suite, `old_tests.jl` included. `using GLFW` moves under that gate too, so the no-driver job needs no window toolkit. Verified with lavapipe as the only ICD, which is what the runner will have: 10 of 10. Same on this machine's real drivers. Also: macOS keeps a job with no driver on purpose, since that is where the `HAS_LOADER` case is actually met; the stale commented-out Windows job goes; and `julia-uploadcodecov` is archived, replaced by `julia-processcoverage` plus `codecov-action`. --- .github/workflows/ci.yml | 124 +++++++++++++-------------------------- test/glfw.jl | 8 +-- test/runtests.jl | 40 +++++++++---- 3 files changed, 70 insertions(+), 102 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1dfd524..44c28ab 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,89 +1,47 @@ -# Based on https://github.com/vsg-dev/VulkanSceneGraph/blob/master/.github/workflows/ci.yml +# The driver comes from the distribution: Mesa's lavapipe is a software Vulkan +# implementation, so a runner with no GPU still has something to create an +# instance against. This used to download the LunarG SDK, and LunarG stopped +# serving the pinned 1.3.239.0 build -- every job failed on a 404 before Julia +# was even installed. name: CI + on: push: pull_request: -env: - JuliaVersion: 1.6 - VulkanSDKVersion: 1.3.239.0 - JULIA_GITHUB_ACTIONS_CI: ON -jobs: - ubuntu-latest-x64: - runs-on: ubuntu-latest - env: - VULKAN_SDK: $GITHUB_WORKSPACE/../$VulkanSDKVersion/x86_64 - steps: - - uses: actions/checkout@v3 - - name: Download & Extract Vulkan SDK - run: | - wget --no-cookies -O ../vulkansdk-linux-x86_64-${{env.VulkanSDKVersion}}.tar.gz https://sdk.lunarg.com/sdk/download/${{env.VulkanSDKVersion}}/linux/vulkansdk-linux-x86_64-${{env.VulkanSDKVersion}}.tar.gz - tar -zxf ../vulkansdk-linux-x86_64-${{env.VulkanSDKVersion}}.tar.gz -C ../ - - name: Install xvfb for GLFW - run: sudo apt-get install xvfb && Xvfb :99 & - - uses: julia-actions/setup-julia@v1 - with: - version: ${{env.JuliaVersion}} - arch: x64 - - uses: julia-actions/julia-buildpkg@latest - - uses: julia-actions/julia-runtest@latest - env: - DISPLAY: :99 - - uses: julia-actions/julia-uploadcodecov@latest - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - # windows-latest-x64: - # runs-on: windows-latest - # steps: - # - uses: actions/checkout@v3 - # - name: Set Environment variables - # run: echo "VULKAN_SDK=C:\VulkanSDK\${{env.VulkanSDKVersion}}" >> $GITHUB_ENV - # - name: Download & Install Vulkan SDK - # run: | - # Invoke-WebRequest -Uri https://sdk.lunarg.com/sdk/download/${{env.VulkanSDKVersion}}/windows/VulkanSDK-${{env.VulkanSDKVersion}}-Installer.exe -OutFile ../vulkan-sdk-${{env.VulkanSDKVersion}}.exe - # $installer = Start-Process -FilePath ../vulkan-sdk-${{env.VulkanSDKVersion}}.exe -Wait -PassThru -ArgumentList @("/S"); - # $installer.WaitForExit(); - # Invoke-WebRequest -Uri https://sdk.lunarg.com/sdk/download/latest/windows/vulkan-runtime.exe -OutFile ../vulkan-runtime.exe - # $installer = Start-Process -FilePath ../vulkan-runtime.exe -Wait -PassThru -ArgumentList @("/S"); - # $installer.WaitForExit(); - # - uses: julia-actions/setup-julia@v1 - # with: - # version: ${{env.JuliaVersion}} - # arch: x64 - # - uses: julia-actions/julia-buildpkg@latest - # - uses: julia-actions/julia-runtest@latest - # env: - # DISPLAY: :99 - # - uses: julia-actions/julia-uploadcodecov@latest - # env: - # CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - - macos-latest-x64: - runs-on: macos-latest +jobs: + test: + name: Julia ${{ matrix.julia-version }} - ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + julia-version: ['lts', '1', 'nightly'] + os: [ubuntu-latest] + include: + # No Vulkan driver on purpose. A machine without one must still be able + # to load this package, which is what `HAS_LOADER` is for, and macOS is + # where that case is actually met. + - julia-version: '1' + os: macos-latest steps: - - uses: actions/checkout@v3 - - name: Set Environment variables - run: | - VULKAN_SDK=$GITHUB_WORKSPACE/../vulkansdk-macos-${{env.VulkanSDKVersion}}/macOS - echo VULKAN_SDK=$VULKAN_SDK >> $GITHUB_ENV - echo JULIA_VULKAN_SDK_SEARCH_PATH=$VULKAN_SDK/lib >> $GITHUB_ENV - echo VK_LAYER_PATH=$VULKAN_SDK/share/vulkan/explicit_layer.d >> $GITHUB_ENV - echo VK_ICD_FILENAMES=$VULKAN_SDK/share/vulkan/icd.d/MoltenVK_icd.json >> $GITHUB_ENV - echo JULIA_VULKAN_LIBNAME=libvulkan.1.dylib >> $GITHUB_ENV - - name: Download & Extract Vulkan SDK - run: | - wget --no-cookies -O ../vulkansdk-macos-${{env.VulkanSDKVersion}}.dmg https://sdk.lunarg.com/sdk/download/${{env.VulkanSDKVersion}}/mac/vulkansdk-macos-${{env.VulkanSDKVersion}}.dmg - hdiutil attach ../vulkansdk-macos-${{env.VulkanSDKVersion}}.dmg - cp -r /Volumes/vulkansdk-macos-${{env.VulkanSDKVersion}} ../ - hdiutil detach /Volumes/vulkansdk-macos-${{env.VulkanSDKVersion}} - - uses: julia-actions/setup-julia@v1 - with: - version: ${{env.JuliaVersion}} - arch: x64 - - uses: julia-actions/julia-buildpkg@latest - - uses: julia-actions/julia-runtest@latest - env: - DISPLAY: :99 - - uses: julia-actions/julia-uploadcodecov@latest - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + - uses: actions/checkout@v7 + - uses: serenity4/julia-lavapipe@v1 + if: runner.os == 'Linux' + - name: Start a virtual display for GLFW + if: runner.os == 'Linux' + run: | + sudo apt-get install -y xvfb + Xvfb :99 & + echo "DISPLAY=:99" >> $GITHUB_ENV + - uses: julia-actions/setup-julia@latest + with: + version: ${{ matrix.julia-version }} + - uses: julia-actions/cache@v3 + - uses: julia-actions/julia-buildpkg@latest + - uses: julia-actions/julia-runtest@latest + - uses: julia-actions/julia-processcoverage@v1 + - uses: codecov/codecov-action@v5 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: lcov.info diff --git a/test/glfw.jl b/test/glfw.jl index b384394..e1d302d 100644 --- a/test/glfw.jl +++ b/test/glfw.jl @@ -27,7 +27,7 @@ appInfoRef = VkApplicationInfo( extensions = GLFW.GetRequiredInstanceExtensions() @test check_extensions(extensions) -layers = get(ENV, "JULIA_GITHUB_ACTIONS_CI", "OFF") == "ON" ? String[] : ["VK_LAYER_KHRONOS_validation"] +layers = ["VK_LAYER_KHRONOS_validation"] @test check_layers(layers) createInfoRef = VkInstanceCreateInfo(appInfoRef, layers, extensions) |> Ref @@ -35,11 +35,7 @@ createInfoRef = VkInstanceCreateInfo(appInfoRef, layers, extensions) |> Ref instanceRef = Ref(VkInstance(C_NULL)) result = GC.@preserve appInfoRef layers extensions vkCreateInstance(createInfoRef, C_NULL, instanceRef) -@static if get(ENV, "JULIA_GITHUB_ACTIONS_CI", "OFF") == "ON" - @test_broken result == VK_SUCCESS -else - @test result == VK_SUCCESS -end +@test result == VK_SUCCESS ## cleaning up if result == VK_SUCCESS diff --git a/test/runtests.jl b/test/runtests.jl index 9074642..2156a5b 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,19 +1,33 @@ -@static if get(ENV, "JULIA_GITHUB_ACTIONS_CI", "OFF") == "ON" && Sys.isapple() - import Libdl: DL_LOAD_PATH - push!(DL_LOAD_PATH, ENV["JULIA_VULKAN_SDK_SEARCH_PATH"]) -end - using VulkanCore using VulkanCore.LibVulkan using Test -using GLFW -@testset "GLFW" begin - if GLFW.VulkanSupported() - include("glfw.jl") - end +# `HAS_LOADER` is the gate the package itself uses: when it is false the +# generated bindings are not compiled at all, so there is nothing below to call +# and no window toolkit to ask either. The tests ask that same question. They +# used to ask `JULIA_GITHUB_ACTIONS_CI` instead, which meant CI ran a weakened +# suite -- it asserted that creating an instance FAILS, because the runner had +# no driver. +@static if VulkanCore.HAS_LOADER + using GLFW end -@static if get(ENV, "JULIA_GITHUB_ACTIONS_CI", "OFF") == "OFF" - include("old_tests.jl") -end \ No newline at end of file +@testset "VulkanCore" begin + @test VulkanCore.HAS_LOADER === LibVulkan.HAS_LOADER + @test VulkanCore.HAS_LOADER == isdefined(LibVulkan, :vkCreateInstance) + + if VulkanCore.HAS_LOADER + @testset "API" begin + include("old_tests.jl") + end + @testset "GLFW" begin + if GLFW.VulkanSupported() + include("glfw.jl") + else + @info "GLFW reports no Vulkan support, skipping the surface tests" + end + end + else + @info "No Vulkan loader on this machine, skipping everything that calls the API" + end +end From 7a9ac897cfe9e1a79e1c0dafbff958e6ac035a35 Mon Sep 17 00:00:00 2001 From: SimonDanisch Date: Tue, 22 Sep 2026 17:37:19 +0200 Subject: [PATCH 08/17] A runner that installs a driver must not pass without one Skipping the API is right on a machine that has no Vulkan loader, and a silent pass on a machine that is supposed to have one: if the lavapipe install ever breaks, the Linux job would quietly drop from 10 tests to 2 and stay green. The job that installs the driver now says so, and a missing loader there is a failure rather than a skip. This makes CI assert MORE than a dev machine, never less -- the opposite of the gate it replaced. Verified both ways: 11 of 11 with the requirement set and lavapipe as the only ICD, and the guard fails when the loader is missing. --- .github/workflows/ci.yml | 4 ++++ test/runtests.jl | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 44c28ab..8027c80 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,6 +40,10 @@ jobs: - uses: julia-actions/cache@v3 - uses: julia-actions/julia-buildpkg@latest - uses: julia-actions/julia-runtest@latest + env: + # This job installed lavapipe; if the loader is missing anyway, fail + # instead of skipping every test that calls the API. + VULKANCORE_REQUIRE_LOADER: ${{ runner.os == 'Linux' && '1' || '0' }} - uses: julia-actions/julia-processcoverage@v1 - uses: codecov/codecov-action@v5 with: diff --git a/test/runtests.jl b/test/runtests.jl index 2156a5b..a88780f 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -16,6 +16,14 @@ end @test VulkanCore.HAS_LOADER === LibVulkan.HAS_LOADER @test VulkanCore.HAS_LOADER == isdefined(LibVulkan, :vkCreateInstance) + # Skipping the API is right on a machine that has no driver, and a silent pass + # on a machine that is supposed to have one. A runner that installs a driver + # says so, and then a missing loader is a failure rather than two vacuous + # tests. Note this makes CI assert MORE than a dev machine, never less. + if get(ENV, "VULKANCORE_REQUIRE_LOADER", "0") == "1" + @test VulkanCore.HAS_LOADER + end + if VulkanCore.HAS_LOADER @testset "API" begin include("old_tests.jl") From 7aedbff40f8a7e1a54bf451727955e9fc6eaa714 Mon Sep 17 00:00:00 2001 From: SimonDanisch Date: Tue, 22 Sep 2026 17:48:28 +0200 Subject: [PATCH 09/17] Give macOS a real driver instead of letting the suite skip The env var of the previous commit was patching around the wrong thing. The suite does not need to know whether it may skip: a machine with no Vulkan loader is a supported state, but not one this suite can conclude anything from, so it simply requires one. No gate, no skip, no second job. macOS gets MoltenVK, the loader and the validation layers from Homebrew, which is how Vulkan is reached there anyway and what the old LunarG SDK job was aiming at. The loader is named through a preference rather than JULIA_VULKAN_LIBNAME, since only the preference is part of the precompile hash and `julia-actions/cache` restores package caches; Pkg.test copies it into the test sandbox. Linux verified locally with lavapipe as the only ICD: 11 of 11. macOS is unverified from here -- no Mac. --- .github/workflows/ci.yml | 36 ++++++++++++++++++++++------------ test/runtests.jl | 42 +++++++++++----------------------------- 2 files changed, 35 insertions(+), 43 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8027c80..0870b14 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,8 +1,8 @@ -# The driver comes from the distribution: Mesa's lavapipe is a software Vulkan -# implementation, so a runner with no GPU still has something to create an -# instance against. This used to download the LunarG SDK, and LunarG stopped -# serving the pinned 1.3.239.0 build -- every job failed on a 404 before Julia -# was even installed. +# The driver comes from the distribution rather than from LunarG, whose pinned +# 1.3.239.0 SDK is a 404 now -- every job used to fail on that before Julia was +# even installed. Linux gets Mesa's lavapipe, a software implementation, so a +# runner with no GPU still has something to create an instance against; macOS +# gets MoltenVK, which is how Vulkan is meant to be reached there. name: CI on: @@ -19,13 +19,11 @@ jobs: julia-version: ['lts', '1', 'nightly'] os: [ubuntu-latest] include: - # No Vulkan driver on purpose. A machine without one must still be able - # to load this package, which is what `HAS_LOADER` is for, and macOS is - # where that case is actually met. - julia-version: '1' os: macos-latest steps: - uses: actions/checkout@v7 + - uses: serenity4/julia-lavapipe@v1 if: runner.os == 'Linux' - name: Start a virtual display for GLFW @@ -34,16 +32,30 @@ jobs: sudo apt-get install -y xvfb Xvfb :99 & echo "DISPLAY=:99" >> $GITHUB_ENV + + - name: Install MoltenVK, the loader and the validation layers + if: runner.os == 'macOS' + run: | + brew install molten-vk vulkan-loader vulkan-validationlayers + echo "VK_DRIVER_FILES=$(brew --prefix molten-vk)/share/vulkan/icd.d/MoltenVK_icd.json" >> $GITHUB_ENV + echo "VK_LAYER_PATH=$(brew --prefix vulkan-validationlayers)/share/vulkan/explicit_layer.d" >> $GITHUB_ENV + # Homebrew's lib directory is not on dyld's default search path, so the + # loader has to be named outright. A preference rather than + # JULIA_VULKAN_LIBNAME because only the preference is part of the + # precompile hash -- an env var loses to a restored package cache. Pkg.test + # copies this into the test sandbox. + cat > LocalPreferences.toml < Date: Tue, 22 Sep 2026 17:53:32 +0200 Subject: [PATCH 10/17] Ask for portability enumeration, and stop using a handle that failed The macOS runner found both of these. MoltenVK is a portability driver, and since loader 1.3.216 an instance that does not ask for portability enumeration is not allowed to see one: `vkCreateInstance` answers VK_ERROR_INCOMPATIBLE_DRIVER. `with_portability` asks the loader whether it offers the extension rather than asking what platform this is, so there is one code path everywhere -- the Linux loader advertises it too, and the flag is set there as well. Second, `old_tests.jl` then carried on with the handle vkCreateInstance had never written and segfaulted inside the loader, because `@test` inside a testset records a failure and continues. It stops there now. Linux with lavapipe as the only ICD: 11 of 11. Forcing the failure with a bogus driver file raises rather than crashing. --- test/glfw.jl | 5 ++--- test/old_tests.jl | 17 ++++++++--------- test/runtests.jl | 2 ++ test/vkhelper.jl | 20 ++++++++++++++++++-- 4 files changed, 30 insertions(+), 14 deletions(-) diff --git a/test/glfw.jl b/test/glfw.jl index e1d302d..d939f2b 100644 --- a/test/glfw.jl +++ b/test/glfw.jl @@ -4,8 +4,6 @@ using VulkanCore.LibVulkan @assert GLFW.VulkanSupported() -include("vkhelper.jl") - const WIDTH = 800 const HEIGHT = 600 @@ -30,7 +28,8 @@ extensions = GLFW.GetRequiredInstanceExtensions() layers = ["VK_LAYER_KHRONOS_validation"] @test check_layers(layers) -createInfoRef = VkInstanceCreateInfo(appInfoRef, layers, extensions) |> Ref +extensions, flags = with_portability(extensions) +createInfoRef = VkInstanceCreateInfo(appInfoRef, layers, extensions, flags) |> Ref instanceRef = Ref(VkInstance(C_NULL)) result = GC.@preserve appInfoRef layers extensions vkCreateInstance(createInfoRef, C_NULL, instanceRef) diff --git a/test/old_tests.jl b/test/old_tests.jl index 415aada..df184a3 100644 --- a/test/old_tests.jl +++ b/test/old_tests.jl @@ -34,18 +34,17 @@ app_info = Ref(VkApplicationInfo(VK_STRUCTURE_TYPE_APPLICATION_INFO, 1, convert_vk_back(UInt32, v"1.2"))) -inst_info = Ref(VkInstanceCreateInfo(VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, - C_NULL, - UInt32(0), - Base.unsafe_convert(Ptr{VkApplicationInfo}, app_info), - 0, - C_NULL, - 0, - C_NULL)) +extensions, flags = with_portability(String[]) +inst_info = Ref(VkInstanceCreateInfo(app_info, String[], extensions, flags)) instance = Ref{VkInstance}() -@test vkCreateInstance(inst_info, C_NULL, instance) == VK_SUCCESS +result = GC.@preserve appname app_info extensions vkCreateInstance(inst_info, C_NULL, instance) +@test result == VK_SUCCESS +# Everything below dereferences this handle, and the loader segfaults on one that was +# never written -- `@test` alone only records the failure and carries on. Seen on macOS, +# where MoltenVK needs the portability enumeration above. +result == VK_SUCCESS || error("cannot continue without an instance: $result") println(instance) gpu_count = Ref{Cuint}() diff --git a/test/runtests.jl b/test/runtests.jl index 0ff2a0d..f79fb44 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -7,6 +7,8 @@ using GLFW # is not one this suite can conclude anything from, so it is a failure here rather # than a skip. Skipping is how CI passed for years while asserting less than a # developer machine did: the old gate gave up on `vkCreateInstance` entirely. +include("vkhelper.jl") + @testset "VulkanCore" begin @test VulkanCore.HAS_LOADER === LibVulkan.HAS_LOADER @test VulkanCore.HAS_LOADER diff --git a/test/vkhelper.jl b/test/vkhelper.jl index 88475c9..aa8c70f 100644 --- a/test/vkhelper.jl +++ b/test/vkhelper.jl @@ -111,6 +111,23 @@ function check_layers(required_layers::Vector{<:AbstractString}) all(in(names), required_layers) end +""" + with_portability(extensions) -> (extensions, flags) + +Add portability enumeration when the loader offers it. A portability driver -- MoltenVK +being the one that matters -- is not enumerated at all unless the instance asks for it: +since loader 1.3.216 `vkCreateInstance` answers `VK_ERROR_INCOMPATIBLE_DRIVER` instead. +Asked of the loader, not of the platform, so there is one code path everywhere. + +Returns the extensions to enable; the caller must keep THAT vector alive across the +`vkCreateInstance`, not the one it passed in. +""" +function with_portability(extensions::Vector{<:AbstractString}) + name = VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME + name in getproperty.(get_supported_extensions(), :name) || return (String.(extensions), UInt32(0)) + return (String.(vcat(extensions, name)), UInt32(VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR)) +end + # instance function LibVulkan.VkApplicationInfo(app_name::AbstractString, app_ver::VersionNumber, engine_name::AbstractString, engine_ver::VersionNumber, api_ver::Integer) sType = VK_STRUCTURE_TYPE_APPLICATION_INFO @@ -122,10 +139,9 @@ function LibVulkan.VkApplicationInfo(app_name::AbstractString, app_ver::VersionN return VkApplicationInfo(sType, pNext, pApplicationName, vkApplicationVersion, pEngineName, vkEngineVersion, Cuint(api_ver)) end -function LibVulkan.VkInstanceCreateInfo(app_info_ref::Ref{VkApplicationInfo}, layers::Vector{String}, extensions::Vector{String}) +function LibVulkan.VkInstanceCreateInfo(app_info_ref::Ref{VkApplicationInfo}, layers::Vector{String}, extensions::Vector{String}, flags::Integer = UInt32(0)) sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO pNext = C_NULL # reserved for extension-specific structure - flags = UInt32(0) # reserved for future use ppEnabledLayerNames = isempty(layers) ? C_NULL : unsafe_strings2pp(layers) ppEnabledExtensionNames = isempty(extensions) ? C_NULL : unsafe_strings2pp(extensions) pApplicationInfo = Base.unsafe_convert(Ptr{VkApplicationInfo}, app_info_ref) From 200eb62d8af7513aaec561b5059c97ef9d962fcc Mon Sep 17 00:00:00 2001 From: SimonDanisch Date: Tue, 22 Sep 2026 17:56:50 +0200 Subject: [PATCH 11/17] macOS: the ICD manifest is under etc, and dyld needs the brew lib dir --- .github/workflows/ci.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0870b14..7d92f95 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,8 +37,17 @@ jobs: if: runner.os == 'macOS' run: | brew install molten-vk vulkan-loader vulkan-validationlayers - echo "VK_DRIVER_FILES=$(brew --prefix molten-vk)/share/vulkan/icd.d/MoltenVK_icd.json" >> $GITHUB_ENV + # Homebrew puts the ICD manifest under etc, not the share/vulkan/icd.d the + # rest of the world uses. Checked rather than assumed: a wrong path here is + # indistinguishable from having no driver at all, which reads as + # VK_ERROR_INCOMPATIBLE_DRIVER several minutes later. + icd="$(brew --prefix molten-vk)/etc/vulkan/icd.d/MoltenVK_icd.json" + test -f "$icd" + echo "VK_DRIVER_FILES=$icd" >> $GITHUB_ENV echo "VK_LAYER_PATH=$(brew --prefix vulkan-validationlayers)/share/vulkan/explicit_layer.d" >> $GITHUB_ENV + # GLFW looks the loader up by name, and Homebrew's lib directory is not on + # dyld's default search path. + echo "DYLD_FALLBACK_LIBRARY_PATH=$(brew --prefix vulkan-loader)/lib:$HOME/lib:/usr/local/lib:/lib:/usr/lib" >> $GITHUB_ENV # Homebrew's lib directory is not on dyld's default search path, so the # loader has to be named outright. A preference rather than # JULIA_VULKAN_LIBNAME because only the preference is part of the From 102959e2391bd14a02d854c798442b4c0942f690 Mon Sep 17 00:00:00 2001 From: SimonDanisch Date: Tue, 22 Sep 2026 17:59:46 +0200 Subject: [PATCH 12/17] macOS: make the loader say why it rejects the validation layer --- .github/workflows/ci.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7d92f95..7b8d878 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -48,6 +48,11 @@ jobs: # GLFW looks the loader up by name, and Homebrew's lib directory is not on # dyld's default search path. echo "DYLD_FALLBACK_LIBRARY_PATH=$(brew --prefix vulkan-loader)/lib:$HOME/lib:/usr/local/lib:/lib:/usr/lib" >> $GITHUB_ENV + # The loader answers "layer not present" for a manifest it found and a library + # it could not load; only it knows which. + echo "VK_LOADER_DEBUG=layer,error,warn" >> $GITHUB_ENV + ls -l "$(brew --prefix vulkan-validationlayers)/share/vulkan/explicit_layer.d" "$(brew --prefix vulkan-validationlayers)/lib" + cat "$(brew --prefix vulkan-validationlayers)/share/vulkan/explicit_layer.d/"*.json # Homebrew's lib directory is not on dyld's default search path, so the # loader has to be named outright. A preference rather than # JULIA_VULKAN_LIBNAME because only the preference is part of the From 44d72add2997a6bc735c6f3f2b2b20061ad519bd Mon Sep 17 00:00:00 2001 From: SimonDanisch Date: Tue, 22 Sep 2026 18:02:36 +0200 Subject: [PATCH 13/17] macOS: dyld has to find the layer library the manifest names bare --- .github/workflows/ci.yml | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7b8d878..d0b5d9f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,24 +45,14 @@ jobs: test -f "$icd" echo "VK_DRIVER_FILES=$icd" >> $GITHUB_ENV echo "VK_LAYER_PATH=$(brew --prefix vulkan-validationlayers)/share/vulkan/explicit_layer.d" >> $GITHUB_ENV - # GLFW looks the loader up by name, and Homebrew's lib directory is not on - # dyld's default search path. - echo "DYLD_FALLBACK_LIBRARY_PATH=$(brew --prefix vulkan-loader)/lib:$HOME/lib:/usr/local/lib:/lib:/usr/lib" >> $GITHUB_ENV - # The loader answers "layer not present" for a manifest it found and a library - # it could not load; only it knows which. - echo "VK_LOADER_DEBUG=layer,error,warn" >> $GITHUB_ENV - ls -l "$(brew --prefix vulkan-validationlayers)/share/vulkan/explicit_layer.d" "$(brew --prefix vulkan-validationlayers)/lib" - cat "$(brew --prefix vulkan-validationlayers)/share/vulkan/explicit_layer.d/"*.json - # Homebrew's lib directory is not on dyld's default search path, so the - # loader has to be named outright. A preference rather than - # JULIA_VULKAN_LIBNAME because only the preference is part of the - # precompile hash -- an env var loses to a restored package cache. Pkg.test - # copies this into the test sandbox. - cat > LocalPreferences.toml <> $GITHUB_ENV + # Quiet unless something goes wrong, and then it says what. + echo "VK_LOADER_DEBUG=error,warn" >> $GITHUB_ENV - uses: julia-actions/setup-julia@latest with: From 01a6ff0bbf00e6dedfbb2e65e7d4e63fcb7e4596 Mon Sep 17 00:00:00 2001 From: SimonDanisch Date: Tue, 22 Sep 2026 18:05:53 +0200 Subject: [PATCH 14/17] Restore the loader preference I deleted, and fail plainly without one The previous commit's edit took the LocalPreferences.toml step out along with the comment block above it, so VulkanCore precompiled without being told which loader to bind to. It surfaced as `UndefVarError: VkExtensionProperties` from vkhelper.jl, which is a bad way to say "no loader": the helpers name types the gate did not compile. The suite says it outright now, before including anything. Linux with lavapipe: 11 of 11. --- .github/workflows/ci.yml | 9 +++++++++ test/runtests.jl | 7 +++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d0b5d9f..c9c3393 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -53,6 +53,15 @@ jobs: echo "DYLD_FALLBACK_LIBRARY_PATH=$(brew --prefix vulkan-loader)/lib:$(brew --prefix vulkan-validationlayers)/lib:$HOME/lib:/usr/local/lib:/lib:/usr/lib" >> $GITHUB_ENV # Quiet unless something goes wrong, and then it says what. echo "VK_LOADER_DEBUG=error,warn" >> $GITHUB_ENV + # Which loader VulkanCore binds to. A preference rather than + # JULIA_VULKAN_LIBNAME because only the preference is part of the precompile + # hash, and julia-actions/cache restores package caches across runs. Pkg.test + # copies it into the test sandbox. + cat > LocalPreferences.toml < Date: Thu, 24 Sep 2026 14:25:30 +0200 Subject: [PATCH 15/17] Converting constructors for the layout-blob structs --- src/LibVulkan.jl | 4 +++ src/blob_constructors.jl | 62 +++++++++++++++++++++++++++++++++++++++ test/blob_constructors.jl | 25 ++++++++++++++++ test/runtests.jl | 3 ++ 4 files changed, 94 insertions(+) create mode 100644 src/blob_constructors.jl create mode 100644 test/blob_constructors.jl diff --git a/src/LibVulkan.jl b/src/LibVulkan.jl index 51efa60..e5a5e94 100644 --- a/src/LibVulkan.jl +++ b/src/LibVulkan.jl @@ -116,6 +116,10 @@ else error("Unknown platform: $(Base.BUILD_TRIPLET)") end +@static if HAS_LOADER + include("blob_constructors.jl") +end + # exports const PREFIXES = ["VK_", "Vk", "vk", "StdVideo", "STD_VIDEO"] for name in names(@__MODULE__; all = true), prefix in PREFIXES diff --git a/src/blob_constructors.jl b/src/blob_constructors.jl new file mode 100644 index 0000000..371b7da --- /dev/null +++ b/src/blob_constructors.jl @@ -0,0 +1,62 @@ +# A record that Clang gives the layout treatment -- a struct that transitively contains a +# union or a bitfield -- is emitted as a single `data::NTuple{N,UInt8}` field, so it loses +# the default constructor a field-wise struct would have had. That default converted its +# arguments; the generated replacement is strictly typed, so +# +# VkClearAttachment(VK_IMAGE_ASPECT_COLOR_BIT, 0, clear_value) +# +# is a MethodError here and was fine before, for every caller that passes an enum where the +# field is its integer type, or an `Int` where it is a `UInt32`. That is a source break for +# code that never mentioned the union. +# +# So define the missing method: same body, no annotations. `setproperty!` on a `Ptr` stores +# through `Base.unsafe_store!`, which converts, so this is the same conversion the default +# constructor performed. +# +# Belongs in Clang.jl, which knows the field types outright. Doing it here keeps it to the +# bindings that need it and out of the generated files, which stay reproducible. + +""" +The logical fields of a layout-blob record, in declaration order. + +`propertynames` is defined on an instance rather than on the type, so this needs one; the +bytes are never read. +""" +function blob_propertynames(@nospecialize(T::DataType)) + buf = zeros(UInt8, sizeof(T)) + GC.@preserve buf propertynames(unsafe_load(Ptr{T}(pointer(buf)))) +end + +""" +Whether `T` is one of Clang's layout blobs: exactly one field, `data::NTuple{N,UInt8}`. +""" +function is_layout_blob(@nospecialize(T::DataType)) + isstructtype(T) && fieldcount(T) == 1 || return false + fieldname(T, 1) === :data && fieldtype(T, 1) <: NTuple{N,UInt8} where {N} +end + +let seen = Set{DataType}() + for sym in names(@__MODULE__; all = true) + isdefined(@__MODULE__, sym) || continue + T = getfield(@__MODULE__, sym) + T isa DataType && is_layout_blob(T) || continue + # Several of these are reachable under an alias as well as their own name, and + # defining the same method twice is a hard error while precompiling. + T in seen && continue + + fields = blob_propertynames(T) + # A union blob also has logical fields, but its constructors take ONE member value; + # a struct blob's takes one argument per field. Only the latter lost a default + # constructor, so match the arity to tell them apart. + length(fields) > 1 && any(m -> m.nargs - 1 == length(fields), methods(T)) || continue + push!(seen, T) + + args = [Symbol(:x, i) for i in eachindex(fields)] + @eval function $sym($(args...)) + ref = Ref{$T}() + ptr = Base.unsafe_convert(Ptr{$T}, ref) + $((:(setproperty!(ptr, $(QuoteNode(f)), $a)) for (f, a) in zip(fields, args))...) + ref[] + end + end +end diff --git a/test/blob_constructors.jl b/test/blob_constructors.jl new file mode 100644 index 0000000..8d5b2c6 --- /dev/null +++ b/test/blob_constructors.jl @@ -0,0 +1,25 @@ +# A record containing a union is emitted as a `data::NTuple{N,UInt8}` blob, which loses the +# default constructor a field-wise struct would have had. That one converted its arguments, +# so without a replacement this call is a MethodError -- a source break for callers that +# never mention the union. See src/blob_constructors.jl. +clear_value = VkClearValue(ntuple(_ -> 0x00, 16)) + +# An enum where the field is declared as its integer type, and an `Int` where it is `UInt32`. +@test VkClearAttachment(VK_IMAGE_ASPECT_COLOR_BIT, 0, clear_value) isa VkClearAttachment +@test VkClearAttachment(VK_IMAGE_ASPECT_COLOR_BIT, 0, clear_value) == + VkClearAttachment(VkImageAspectFlags(VK_IMAGE_ASPECT_COLOR_BIT), UInt32(0), clear_value) + +# One whose layout the blob treatment actually corrected, with `Int` for `VkDeviceSize` and +# `UInt32`. Passing the declared types would pass with or without the constructor, so it +# would not pin anything. +addr = VkDeviceOrHostAddressConstKHR(UInt64(0)) +@test VkAccelerationStructureGeometryTrianglesDataKHR( + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR, C_NULL, + VK_FORMAT_R32G32B32_SFLOAT, addr, 12, 3, VK_INDEX_TYPE_UINT32, addr, addr) == + VkAccelerationStructureGeometryTrianglesDataKHR( + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR, C_NULL, + VK_FORMAT_R32G32B32_SFLOAT, addr, VkDeviceSize(12), UInt32(3), VK_INDEX_TYPE_UINT32, + addr, addr) + +# Unions keep their own single-value constructors and must not gain an N-argument one. +@test all(m -> m.nargs - 1 <= 1, methods(VkClearValue)) diff --git a/test/runtests.jl b/test/runtests.jl index 0395998..9cd9b9d 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -23,4 +23,7 @@ using GLFW @testset "GLFW" begin include("glfw.jl") end + @testset "blob constructors" begin + include("blob_constructors.jl") + end end From 3c862c03d0e773b6e5c1f662dde5164565d599f5 Mon Sep 17 00:00:00 2001 From: SimonDanisch Date: Thu, 8 Oct 2026 20:31:45 +0200 Subject: [PATCH 16/17] Fall back to Vulkan_Loader_jll's loader when the system has none --- Project.toml | 2 ++ src/LibVulkan.jl | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index af99d35..440e564 100644 --- a/Project.toml +++ b/Project.toml @@ -6,10 +6,12 @@ version = "1.4.0" Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb" Preferences = "21216c6a-2e73-6563-6e65-726566657250" Vulkan_Headers_jll = "8d446b21-f3ad-5576-a034-752265b9b6f9" +Vulkan_Loader_jll = "a44049a8-05dd-5a78-86c9-5fde0876e88c" [compat] Preferences = "1" Vulkan_Headers_jll = "1.4.321" +Vulkan_Loader_jll = "1" julia = "1.3" [extras] diff --git a/src/LibVulkan.jl b/src/LibVulkan.jl index e5a5e94..794dbed 100644 --- a/src/LibVulkan.jl +++ b/src/LibVulkan.jl @@ -5,6 +5,7 @@ using .CEnum import Libdl using Preferences: @load_preference +import Vulkan_Loader_jll """ The name the system gives a Vulkan implementation, when nothing else says otherwise. @@ -13,6 +14,20 @@ const SYSTEM_LIBVULKAN = Sys.iswindows() ? "vulkan-1.dll" : Sys.isapple() ? "libvulkan.dylib" : Sys.islinux() ? "libvulkan.so.1" : "libvulkan" +""" + default_libvulkan() -> String + +The system's Vulkan loader when there is one, and `Vulkan_Loader_jll`'s otherwise. + +A Mac has no loader of its own. With the jll's, a CPU driver such as +`Lavapipe_jll` gives it a Vulkan device all the same, the same way it gives one +to a Linux or Windows box without a GPU driver. The system loader comes first +because it is the one that knows the GPU drivers the machine has installed. +""" +default_libvulkan() = + !isempty(Libdl.find_library(SYSTEM_LIBVULKAN)) ? SYSTEM_LIBVULKAN : + Vulkan_Loader_jll.is_available() ? Vulkan_Loader_jll.libvulkan_path : SYSTEM_LIBVULKAN + """ Which Vulkan library this package binds to. @@ -30,7 +45,7 @@ a cache built without it, and `HAS_LOADER` stayed `false` on a machine that then had a perfectly good driver. """ const libvulkan = @load_preference("libvulkan", - get(ENV, "JULIA_VULKAN_LIBNAME", SYSTEM_LIBVULKAN)) + get(ENV, "JULIA_VULKAN_LIBNAME", default_libvulkan())) """ Whether a Vulkan loader was findable when this package was PRECOMPILED. From 4b4f72f2e15e0eb46b5c9262208146cfde47db38 Mon Sep 17 00:00:00 2001 From: SimonDanisch Date: Thu, 8 Oct 2026 21:33:07 +0200 Subject: [PATCH 17/17] Import Vulkan_Loader_jll only where no system loader exists: its library shadowed the system's --- src/LibVulkan.jl | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/LibVulkan.jl b/src/LibVulkan.jl index 794dbed..e8a21fe 100644 --- a/src/LibVulkan.jl +++ b/src/LibVulkan.jl @@ -5,7 +5,6 @@ using .CEnum import Libdl using Preferences: @load_preference -import Vulkan_Loader_jll """ The name the system gives a Vulkan implementation, when nothing else says otherwise. @@ -23,10 +22,23 @@ A Mac has no loader of its own. With the jll's, a CPU driver such as `Lavapipe_jll` gives it a Vulkan device all the same, the same way it gives one to a Linux or Windows box without a GPU driver. The system loader comes first because it is the one that knows the GPU drivers the machine has installed. + +The jll is IMPORTED only where there is no system loader, decided when this +package precompiles. Its `__init__` loads its library, and once a module named +`vulkan-1.dll` (or with the soname `libvulkan.so.1`) is loaded, a lookup by that +bare name returns it rather than the system's. Importing it unconditionally made +every process use the jll's 1.3.243 loader, which predates the extensions the +drivers expose: `vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR` faulted in it +on AMD's Windows driver. """ -default_libvulkan() = - !isempty(Libdl.find_library(SYSTEM_LIBVULKAN)) ? SYSTEM_LIBVULKAN : - Vulkan_Loader_jll.is_available() ? Vulkan_Loader_jll.libvulkan_path : SYSTEM_LIBVULKAN +function default_libvulkan end +@static if isempty(Libdl.find_library(SYSTEM_LIBVULKAN)) + import Vulkan_Loader_jll + default_libvulkan() = + Vulkan_Loader_jll.is_available() ? Vulkan_Loader_jll.libvulkan_path : SYSTEM_LIBVULKAN +else + default_libvulkan() = SYSTEM_LIBVULKAN +end """ Which Vulkan library this package binds to.