diff --git a/.gitignore b/.gitignore index 67314e23a..824e0c203 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,8 @@ bld/ [Oo]bj/ [Ll]og/ ![Cc]ore/[Ll]og/ +tests/documentation/verify/ +tests/documentation/all.odin-doc # Visual Studio 2015 cache/options directory .vs/ # Visual Studio Code options directory diff --git a/build.bat b/build.bat index bcb6d4c1a..99c3ad2ee 100644 --- a/build.bat +++ b/build.bat @@ -48,8 +48,11 @@ set odin_version_raw="dev-%curr_year%-%curr_month%" set compiler_flags= -nologo -Oi -TP -fp:precise -Gm- -MP -FC -EHsc- -GR- -GF set compiler_defines= -DODIN_VERSION_RAW=\"%odin_version_raw%\" +if not exist .git\ goto skip_git_hash for /f %%i in ('git rev-parse --short HEAD') do set GIT_SHA=%%i if %ERRORLEVEL% equ 0 set compiler_defines=%compiler_defines% -DGIT_SHA=\"%GIT_SHA%\" +:skip_git_hash + if %nightly% equ 1 set compiler_defines=%compiler_defines% -DNIGHTLY if %release_mode% EQU 0 ( rem Debug diff --git a/build_odin.sh b/build_odin.sh index bdf80c534..62943732f 100755 --- a/build_odin.sh +++ b/build_odin.sh @@ -4,15 +4,22 @@ set -eu : ${CXX=clang++} : ${CPPFLAGS=} : ${CXXFLAGS=} +: ${INCLUDE_DIRECTORIES=} : ${LDFLAGS=} : ${ODIN_VERSION=dev-$(date +"%Y-%m")} +: ${GIT_SHA=} CPPFLAGS="$CPPFLAGS -DODIN_VERSION_RAW=\"$ODIN_VERSION\"" CXXFLAGS="$CXXFLAGS -std=c++14" +INCLUDE_DIRECTORIES="$INCLUDE_DIRECTORIES -Isrc/" LDFLAGS="$LDFLAGS -pthread -lm -lstdc++" -GIT_SHA=$(git rev-parse --short HEAD || :) -if [ "$GIT_SHA" ]; then CPPFLAGS="$CPPFLAGS -DGIT_SHA=\"$GIT_SHA\""; fi +if [ -d ".git" ]; then + GIT_SHA=$(git rev-parse --short HEAD || :) + if [ "$GIT_SHA" ]; then + CPPFLAGS="$CPPFLAGS -DGIT_SHA=\"$GIT_SHA\"" + fi +fi DISABLED_WARNINGS="-Wno-switch -Wno-macro-redefined -Wno-unused-value" OS=$(uname) @@ -25,11 +32,11 @@ panic() { version() { echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }'; } config_darwin() { - ARCH=$(uname -m) + local ARCH=$(uname -m) : ${LLVM_CONFIG=llvm-config} # allow for arm only llvm's with version 13 - if [ ARCH == arm64 ]; then + if [ "${ARCH}" == "arm64" ]; then MIN_LLVM_VERSION=("13.0.0") else # allow for x86 / amd64 all llvm versions beginning from 11 @@ -37,7 +44,7 @@ config_darwin() { fi if [ $(version $($LLVM_CONFIG --version)) -lt $(version $MIN_LLVM_VERSION) ]; then - if [ ARCH == arm64 ]; then + if [ "${ARCH}" == "arm64" ]; then panic "Requirement: llvm-config must be base version 13 for arm64" else panic "Requirement: llvm-config must be base version greater than 11 for amd64/x86" @@ -59,11 +66,11 @@ config_freebsd() { : ${LLVM_CONFIG=} if [ ! "$LLVM_CONFIG" ]; then - if which llvm-config11 > /dev/null 2>&1; then + if [ -x "$(command -v llvm-config11)" ]; then LLVM_CONFIG=llvm-config11 - elif which llvm-config12 > /dev/null 2>&1; then + elif [ -x "$(command -v llvm-config12)" ]; then LLVM_CONFIG=llvm-config12 - elif which llvm-config13 > /dev/null 2>&1; then + elif [ -x "$(command -v llvm-config13)" ]; then LLVM_CONFIG=llvm-config13 else panic "Unable to find LLVM-config" @@ -86,12 +93,14 @@ config_linux() { : ${LLVM_CONFIG=} if [ ! "$LLVM_CONFIG" ]; then - if which llvm-config > /dev/null 2>&1; then + if [ -x "$(command -v llvm-config)" ]; then LLVM_CONFIG=llvm-config - elif which llvm-config-11 > /dev/null 2>&1; then + elif [ -x "$(command -v llvm-config-11)" ]; then LLVM_CONFIG=llvm-config-11 - elif which llvm-config-11-64 > /dev/null 2>&1; then + elif [ -x "$(command -v llvm-config-11-64)" ]; then LLVM_CONFIG=llvm-config-11-64 + elif [ -x "$(command -v llvm-config-14)" ]; then + LLVM_CONFIG=llvm-config-14 else panic "Unable to find LLVM-config" fi @@ -111,7 +120,7 @@ config_linux() { LDFLAGS="$LDFLAGS -ldl" CXXFLAGS="$CXXFLAGS $($LLVM_CONFIG --cxxflags --ldflags)" - LDFLAGS="$LDFLAGS $($LLVM_CONFIG --libs core native --system-libs --libfiles) -Wl,-rpath=\$ORIGIN" + LDFLAGS="$LDFLAGS $($LLVM_CONFIG --libs core native --system-libs --libfiles) -Wl,-rpath=\$ORIGIN" # Creates a copy of the llvm library in the build dir, this is meant to support compiler explorer. # The annoyance is that this copy can be cluttering the development folder. TODO: split staging folders @@ -135,10 +144,11 @@ build_odin() { ;; *) panic "Build mode unsupported!" + ;; esac set -x - $CXX src/main.cpp src/libtommath.cpp $DISABLED_WARNINGS $CPPFLAGS $CXXFLAGS $EXTRAFLAGS $LDFLAGS -o odin + $CXX src/main.cpp src/libtommath.cpp $DISABLED_WARNINGS $CPPFLAGS $CXXFLAGS $INCLUDE_DIRECTORIES $EXTRAFLAGS $LDFLAGS -o odin set +x } @@ -147,7 +157,7 @@ run_demo() { } have_which() { - if ! which which > /dev/null 2>&1; then + if ! [ -x "$(command -v which)" ]; then panic "Could not find \`which\`" fi } @@ -169,6 +179,7 @@ FreeBSD) ;; *) panic "Platform unsupported!" + ;; esac if [[ $# -eq 0 ]]; then diff --git a/core/crypto/_fiat/fiat.odin b/core/crypto/_fiat/fiat.odin index ae9727149..f0551722f 100644 --- a/core/crypto/_fiat/fiat.odin +++ b/core/crypto/_fiat/fiat.odin @@ -9,14 +9,16 @@ package fiat u1 :: distinct u8 i1 :: distinct i8 -cmovznz_u64 :: #force_inline proc "contextless" (arg1: u1, arg2, arg3: u64) -> (out1: u64) { +@(optimization_mode="none") +cmovznz_u64 :: proc "contextless" (arg1: u1, arg2, arg3: u64) -> (out1: u64) { x1 := (u64(arg1) * 0xffffffffffffffff) x2 := ((x1 & arg3) | ((~x1) & arg2)) out1 = x2 return } -cmovznz_u32 :: #force_inline proc "contextless" (arg1: u1, arg2, arg3: u32) -> (out1: u32) { +@(optimization_mode="none") +cmovznz_u32 :: proc "contextless" (arg1: u1, arg2, arg3: u32) -> (out1: u32) { x1 := (u32(arg1) * 0xffffffff) x2 := ((x1 & arg3) | ((~x1) & arg2)) out1 = x2 diff --git a/core/crypto/_fiat/field_curve25519/field51.odin b/core/crypto/_fiat/field_curve25519/field51.odin index e4ca98b57..0be94eb51 100644 --- a/core/crypto/_fiat/field_curve25519/field51.odin +++ b/core/crypto/_fiat/field_curve25519/field51.odin @@ -305,7 +305,8 @@ fe_opp :: proc "contextless" (out1: ^Loose_Field_Element, arg1: ^Tight_Field_Ele out1[4] = x5 } -fe_cond_assign :: proc "contextless" (out1, arg1: ^Tight_Field_Element, arg2: int) { +@(optimization_mode="none") +fe_cond_assign :: #force_no_inline proc "contextless" (out1, arg1: ^Tight_Field_Element, arg2: int) { x1 := fiat.cmovznz_u64(fiat.u1(arg2), out1[0], arg1[0]) x2 := fiat.cmovznz_u64(fiat.u1(arg2), out1[1], arg1[1]) x3 := fiat.cmovznz_u64(fiat.u1(arg2), out1[2], arg1[2]) @@ -596,7 +597,8 @@ fe_set :: proc "contextless" (out1, arg1: ^Tight_Field_Element) { out1[4] = x5 } -fe_cond_swap :: proc "contextless" (out1, out2: ^Tight_Field_Element, arg1: int) { +@(optimization_mode="none") +fe_cond_swap :: #force_no_inline proc "contextless" (out1, out2: ^Tight_Field_Element, arg1: int) { mask := -u64(arg1) x := (out1[0] ~ out2[0]) & mask x1, y1 := out1[0] ~ x, out2[0] ~ x diff --git a/core/crypto/_fiat/field_poly1305/field4344.odin b/core/crypto/_fiat/field_poly1305/field4344.odin index ba9bc2694..8e8a7cc78 100644 --- a/core/crypto/_fiat/field_poly1305/field4344.odin +++ b/core/crypto/_fiat/field_poly1305/field4344.odin @@ -201,7 +201,8 @@ fe_opp :: proc "contextless" (out1: ^Loose_Field_Element, arg1: ^Tight_Field_Ele out1[2] = x3 } -fe_cond_assign :: proc "contextless" (out1, arg1: ^Tight_Field_Element, arg2: bool) { +@(optimization_mode="none") +fe_cond_assign :: #force_no_inline proc "contextless" (out1, arg1: ^Tight_Field_Element, arg2: bool) { x1 := fiat.cmovznz_u64(fiat.u1(arg2), out1[0], arg1[0]) x2 := fiat.cmovznz_u64(fiat.u1(arg2), out1[1], arg1[1]) x3 := fiat.cmovznz_u64(fiat.u1(arg2), out1[2], arg1[2]) @@ -342,7 +343,8 @@ fe_set :: #force_inline proc "contextless" (out1, arg1: ^Tight_Field_Element) { out1[2] = x3 } -fe_cond_swap :: proc "contextless" (out1, out2: ^Tight_Field_Element, arg1: bool) { +@(optimization_mode="none") +fe_cond_swap :: #force_no_inline proc "contextless" (out1, out2: ^Tight_Field_Element, arg1: bool) { mask := -u64(arg1) x := (out1[0] ~ out2[0]) & mask x1, y1 := out1[0] ~ x, out2[0] ~ x diff --git a/core/crypto/chacha20/chacha20.odin b/core/crypto/chacha20/chacha20.odin index 229949c22..b29dc1228 100644 --- a/core/crypto/chacha20/chacha20.odin +++ b/core/crypto/chacha20/chacha20.odin @@ -8,15 +8,23 @@ KEY_SIZE :: 32 NONCE_SIZE :: 12 XNONCE_SIZE :: 24 +@(private) _MAX_CTR_IETF :: 0xffffffff +@(private) _BLOCK_SIZE :: 64 +@(private) _STATE_SIZE_U32 :: 16 +@(private) _ROUNDS :: 20 +@(private) _SIGMA_0 : u32 : 0x61707865 +@(private) _SIGMA_1 : u32 : 0x3320646e +@(private) _SIGMA_2 : u32 : 0x79622d32 +@(private) _SIGMA_3 : u32 : 0x6b206574 Context :: struct { @@ -179,6 +187,7 @@ reset :: proc (ctx: ^Context) { ctx._is_initialized = false } +@(private) _do_blocks :: proc (ctx: ^Context, dst, src: []byte, nr_blocks: int) { // Enforce the maximum consumed keystream per nonce. // @@ -441,6 +450,7 @@ _do_blocks :: proc (ctx: ^Context, dst, src: []byte, nr_blocks: int) { } } +@(private) _hchacha20 :: proc (dst, key, nonce: []byte) { x0, x1, x2, x3 := _SIGMA_0, _SIGMA_1, _SIGMA_2, _SIGMA_3 x4 := util.U32_LE(key[0:4]) diff --git a/core/crypto/chacha20poly1305/chacha20poly1305.odin b/core/crypto/chacha20poly1305/chacha20poly1305.odin index 67d89df56..ae395f9e0 100644 --- a/core/crypto/chacha20poly1305/chacha20poly1305.odin +++ b/core/crypto/chacha20poly1305/chacha20poly1305.odin @@ -10,8 +10,10 @@ KEY_SIZE :: chacha20.KEY_SIZE NONCE_SIZE :: chacha20.NONCE_SIZE TAG_SIZE :: poly1305.TAG_SIZE +@(private) _P_MAX :: 64 * 0xffffffff // 64 * (2^32-1) +@(private) _validate_common_slice_sizes :: proc (tag, key, nonce, aad, text: []byte) { if len(tag) != TAG_SIZE { panic("crypto/chacha20poly1305: invalid destination tag size") @@ -37,7 +39,10 @@ _validate_common_slice_sizes :: proc (tag, key, nonce, aad, text: []byte) { } } +@(private) _PAD: [16]byte + +@(private) _update_mac_pad16 :: #force_inline proc (ctx: ^poly1305.Context, x_len: int) { if pad_len := 16 - (x_len & (16-1)); pad_len != 16 { poly1305.update(ctx, _PAD[:pad_len]) diff --git a/core/crypto/crypto.odin b/core/crypto/crypto.odin index 35e88c5ed..6cdcacb9c 100644 --- a/core/crypto/crypto.odin +++ b/core/crypto/crypto.odin @@ -26,6 +26,7 @@ compare_constant_time :: proc "contextless" (a, b: []byte) -> int { // // The execution time of this routine is constant regardless of the // contents of the memory being compared. +@(optimization_mode="none") compare_byte_ptrs_constant_time :: proc "contextless" (a, b: ^byte, n: int) -> int { x := mem.slice_ptr(a, n) y := mem.slice_ptr(b, n) diff --git a/core/crypto/poly1305/poly1305.odin b/core/crypto/poly1305/poly1305.odin index 8986be879..ab320c80c 100644 --- a/core/crypto/poly1305/poly1305.odin +++ b/core/crypto/poly1305/poly1305.odin @@ -8,6 +8,7 @@ import "core:mem" KEY_SIZE :: 32 TAG_SIZE :: 16 +@(private) _BLOCK_SIZE :: 16 sum :: proc (dst, msg, key: []byte) { @@ -141,6 +142,7 @@ reset :: proc (ctx: ^Context) { ctx._is_initialized = false } +@(private) _blocks :: proc (ctx: ^Context, msg: []byte, final := false) { n: field.Tight_Field_Element = --- final_byte := byte(!final) diff --git a/core/crypto/x25519/x25519.odin b/core/crypto/x25519/x25519.odin index dfc8daa47..fc446d25c 100644 --- a/core/crypto/x25519/x25519.odin +++ b/core/crypto/x25519/x25519.odin @@ -6,8 +6,10 @@ import "core:mem" SCALAR_SIZE :: 32 POINT_SIZE :: 32 +@(private) _BASE_POINT: [32]byte = {9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} +@(private) _scalar_bit :: #force_inline proc "contextless" (s: ^[32]byte, i: int) -> u8 { if i < 0 { return 0 @@ -15,6 +17,7 @@ _scalar_bit :: #force_inline proc "contextless" (s: ^[32]byte, i: int) -> u8 { return (s[i>>3] >> uint(i&7)) & 1 } +@(private) _scalarmult :: proc (out, scalar, point: ^[32]byte) { // Montgomery pseduo-multiplication taken from Monocypher. diff --git a/core/encoding/csv/writer.odin b/core/encoding/csv/writer.odin index 3a0038916..d519104f2 100644 --- a/core/encoding/csv/writer.odin +++ b/core/encoding/csv/writer.odin @@ -42,7 +42,7 @@ write :: proc(w: ^Writer, record: []string) -> io.Error { } } case: - if strings.contains_rune(field, w.comma) >= 0 { + if strings.contains_rune(field, w.comma) { return true } if strings.contains_any(field, CHAR_SET) { diff --git a/core/encoding/json/tokenizer.odin b/core/encoding/json/tokenizer.odin index 567600b90..a406a73a5 100644 --- a/core/encoding/json/tokenizer.odin +++ b/core/encoding/json/tokenizer.odin @@ -163,8 +163,9 @@ get_token :: proc(t: ^Tokenizer) -> (token: Token, err: Error) { skip_alphanum :: proc(t: ^Tokenizer) { for t.offset < len(t.data) { - switch next_rune(t) { + switch t.r { case 'A'..='Z', 'a'..='z', '0'..='9', '_': + next_rune(t) continue } diff --git a/core/encoding/json/unmarshal.odin b/core/encoding/json/unmarshal.odin index 1e8ec0e0d..e6c61d8fa 100644 --- a/core/encoding/json/unmarshal.odin +++ b/core/encoding/json/unmarshal.odin @@ -215,6 +215,12 @@ unmarshal_value :: proc(p: ^Parser, v: any) -> (err: Unmarshal_Error) { } } + switch dst in &v { + // Handle json.Value as an unknown type + case Value: + dst = parse_value(p) or_return + return + } #partial switch token.kind { case .Null: diff --git a/core/net/dns.odin b/core/net/dns.odin index 5714ab9b0..f5bf912bc 100644 --- a/core/net/dns.odin +++ b/core/net/dns.odin @@ -22,7 +22,6 @@ import "core:mem" import "core:strings" import "core:time" import "core:os" - /* Default configuration for DNS resolution. */ @@ -108,6 +107,8 @@ resolve :: proc(hostname_and_maybe_port: string) -> (ep4, ep6: Endpoint, err: Ne err4, err6: Network_Error = ---, --- ep4, err4 = resolve_ip4(t.hostname) ep6, err6 = resolve_ip6(t.hostname) + ep4.port = t.port if err4 == nil else 0 + ep6.port = t.port if err6 == nil else 0 if err4 != nil && err6 != nil { err = err4 } diff --git a/core/odin/ast/ast.odin b/core/odin/ast/ast.odin index 99b2cde98..58d977171 100644 --- a/core/odin/ast/ast.odin +++ b/core/odin/ast/ast.odin @@ -740,6 +740,7 @@ Struct_Type :: struct { where_clauses: []^Expr, is_packed: bool, is_raw_union: bool, + is_no_copy: bool, fields: ^Field_List, name_count: int, } diff --git a/core/odin/parser/parser.odin b/core/odin/parser/parser.odin index 29af7e71e..15a33d86b 100644 --- a/core/odin/parser/parser.odin +++ b/core/odin/parser/parser.odin @@ -2527,6 +2527,7 @@ parse_operand :: proc(p: ^Parser, lhs: bool) -> ^ast.Expr { align: ^ast.Expr is_packed: bool is_raw_union: bool + is_no_copy: bool fields: ^ast.Field_List name_count: int @@ -2560,6 +2561,11 @@ parse_operand :: proc(p: ^Parser, lhs: bool) -> ^ast.Expr { error(p, tag.pos, "duplicate struct tag '#%s'", tag.text) } is_raw_union = true + case "no_copy": + if is_no_copy { + error(p, tag.pos, "duplicate struct tag '#%s'", tag.text) + } + is_no_copy = true case: error(p, tag.pos, "invalid struct tag '#%s", tag.text) } @@ -2594,6 +2600,7 @@ parse_operand :: proc(p: ^Parser, lhs: bool) -> ^ast.Expr { st.align = align st.is_packed = is_packed st.is_raw_union = is_raw_union + st.is_no_copy = is_no_copy st.fields = fields st.name_count = name_count st.where_token = where_token diff --git a/core/runtime/core.odin b/core/runtime/core.odin index 040590b4a..9939bfc5c 100644 --- a/core/runtime/core.odin +++ b/core/runtime/core.odin @@ -119,6 +119,7 @@ Type_Info_Struct :: struct { tags: []string, is_packed: bool, is_raw_union: bool, + is_no_copy: bool, custom_align: bool, equal: Equal_Proc, // set only when the struct has .Comparable set but does not have .Simple_Compare set diff --git a/core/runtime/core_builtin.odin b/core/runtime/core_builtin.odin index 84fe5e522..4b152e7cc 100644 --- a/core/runtime/core_builtin.odin +++ b/core/runtime/core_builtin.odin @@ -318,6 +318,7 @@ append_elem :: proc(array: ^$T/[dynamic]$E, arg: E, loc := #caller_location) -> return 0 } when size_of(E) == 0 { + array := (^Raw_Dynamic_Array)(array) array.len += 1 return 1 } else { @@ -351,6 +352,7 @@ append_elems :: proc(array: ^$T/[dynamic]$E, args: ..E, loc := #caller_location) } when size_of(E) == 0 { + array := (^Raw_Dynamic_Array)(array) array.len += arg_len return arg_len } else { diff --git a/core/strconv/decimal/decimal.odin b/core/strconv/decimal/decimal.odin index 24ad2ce91..4130da306 100644 --- a/core/strconv/decimal/decimal.odin +++ b/core/strconv/decimal/decimal.odin @@ -8,7 +8,17 @@ Decimal :: struct { decimal_point: int, neg, trunc: bool, } +/* +Sets a Decimal from a given string `s`. The string is expected to represent a float. Stores parsed number in the given Decimal structure. +If parsing fails, the Decimal will be left in an undefined state. +**Inputs** +- d: Pointer to a Decimal struct where the parsed result will be stored +- s: The input string representing the floating-point number + +**Returns** +- ok: A boolean indicating whether the parsing was successful +*/ set :: proc(d: ^Decimal, s: string) -> (ok: bool) { d^ = {} @@ -91,7 +101,16 @@ set :: proc(d: ^Decimal, s: string) -> (ok: bool) { return i == len(s) } +/* +Converts a Decimal to a string representation, using the provided buffer as storage. +**Inputs** +- buf: A byte slice buffer to hold the resulting string +- a: The struct to be converted to a string + +**Returns** +- A string representation of the Decimal +*/ decimal_to_string :: proc(buf: []byte, a: ^Decimal) -> string { digit_zero :: proc(buf: []byte) -> int { for _, i in buf { @@ -100,7 +119,6 @@ decimal_to_string :: proc(buf: []byte, a: ^Decimal) -> string { return len(buf) } - n := 10 + a.count + abs(a.decimal_point) // TODO(bill): make this work with a buffer that's not big enough @@ -129,8 +147,12 @@ decimal_to_string :: proc(buf: []byte, a: ^Decimal) -> string { return string(b[0:w]) } +/* +Trims trailing zeros in the given Decimal, updating the count and decimal_point values as needed. -// trim trailing zeros +**Inputs** +- a: Pointer to the Decimal struct to be trimmed +*/ trim :: proc(a: ^Decimal) { for a.count > 0 && a.digits[a.count-1] == '0' { a.count -= 1 @@ -139,8 +161,15 @@ trim :: proc(a: ^Decimal) { a.decimal_point = 0 } } +/* +Converts a given u64 integer `idx` to its Decimal representation in the provided Decimal struct. +**Used for internal Decimal Operations.** +**Inputs** +- a: Where the result will be stored +- idx: The value to be assigned to the Decimal +*/ assign :: proc(a: ^Decimal, idx: u64) { buf: [64]byte n := 0 @@ -160,9 +189,15 @@ assign :: proc(a: ^Decimal, idx: u64) { a.decimal_point = a.count trim(a) } +/* +Shifts the Decimal value to the right by k positions. +**Used for internal Decimal Operations.** - +**Inputs** +- a: The Decimal struct to be shifted +- k: The number of positions to shift right +*/ shift_right :: proc(a: ^Decimal, k: uint) { r := 0 // read index w := 0 // write index @@ -304,7 +339,15 @@ _shift_left_offsets := [?]struct{delta: int, cutoff: string}{ {18, "173472347597680709441192448139190673828125"}, {19, "867361737988403547205962240695953369140625"}, } +/* +Shifts the decimal of the input value to the left by `k` places +WARNING: asserts `k < 61` + +**Inputs** +- a: The Decimal to be modified +- k: The number of places to shift the decimal to the left +*/ shift_left :: proc(a: ^Decimal, k: uint) #no_bounds_check { prefix_less :: #force_inline proc "contextless" (b: []byte, s: string) -> bool #no_bounds_check { for i in 0..=5) +*/ can_round_up :: proc(a: ^Decimal, nd: int) -> bool { if nd < 0 || nd >= a.count { return false } if a.digits[nd] == '5' && nd+1 == a.count { @@ -395,7 +452,13 @@ can_round_up :: proc(a: ^Decimal, nd: int) -> bool { return a.digits[nd] >= '5' } +/* +Rounds the Decimal at the given digit index +**Inputs** +- a: The Decimal to be modified +- nd: The digit index to round +*/ round :: proc(a: ^Decimal, nd: int) { if nd < 0 || nd >= a.count { return } if can_round_up(a, nd) { @@ -404,7 +467,13 @@ round :: proc(a: ^Decimal, nd: int) { round_down(a, nd) } } +/* +Rounds the Decimal up at the given digit index +**Inputs** +- a: The Decimal to be modified +- nd: The digit index to round up +*/ round_up :: proc(a: ^Decimal, nd: int) { if nd < 0 || nd >= a.count { return } @@ -421,15 +490,60 @@ round_up :: proc(a: ^Decimal, nd: int) { a.count = 1 a.decimal_point += 1 } +/* +Rounds down the decimal value to the specified number of decimal places +**Inputs** +- a: The Decimal value to be rounded down +- nd: The number of decimal places to round down to + +Example: + + import "core:fmt" + import "core:strconv/decimal" + round_down_example :: proc() { + d: decimal.Decimal + str := [64]u8{} + ok := decimal.set(&d, "123.456") + decimal.round_down(&d, 5) + fmt.println(decimal.decimal_to_string(str[:], &d)) + } + +Output: + + 123.45 + +*/ round_down :: proc(a: ^Decimal, nd: int) { if nd < 0 || nd >= a.count { return } a.count = nd trim(a) } +/* +Extracts the rounded integer part of a decimal value +**Inputs** +- a: A pointer to the Decimal value to extract the rounded integer part from -// Extract integer part, rounded appropriately. There are no guarantees about overflow. +WARNING: There are no guarantees about overflow. + +**Returns** The rounded integer part of the input decimal value + +Example: + + import "core:fmt" + import "core:strconv/decimal" + rounded_integer_example :: proc() { + d: decimal.Decimal + ok := decimal.set(&d, "123.456") + fmt.println(decimal.rounded_integer(&d)) + } + +Output: + + 123 + +*/ rounded_integer :: proc(a: ^Decimal) -> u64 { if a.decimal_point > 20 { return 0xffff_ffff_ffff_ffff diff --git a/core/strconv/generic_float.odin b/core/strconv/generic_float.odin index b612b8eb2..70febf832 100644 --- a/core/strconv/generic_float.odin +++ b/core/strconv/generic_float.odin @@ -20,7 +20,29 @@ _f16_info := Float_Info{10, 5, -15} _f32_info := Float_Info{23, 8, -127} _f64_info := Float_Info{52, 11, -1023} +/* +Converts a floating-point number to a string with the specified format and precision. +**Inputs** + +buf: A byte slice to store the resulting string +val: The floating-point value to be converted +fmt: The formatting byte, accepted values are 'e', 'E', 'f', 'F', 'g', 'G' +precision: The number of decimal places to round to +bit_size: The size of the floating-point number in bits, valid values are 16, 32, 64 + +Example: + + buf: [32]byte + val := 3.141592 + fmt := 'f' + precision := 2 + bit_size := 64 + result := strconv.generic_ftoa(buf[:], val, fmt, precision, bit_size) -> "3.14" + +**Returns** +- A byte slice containing the formatted string +*/ generic_ftoa :: proc(buf: []byte, val: f64, fmt: byte, precision, bit_size: int) -> []byte { bits: u64 flt: ^Float_Info @@ -95,8 +117,20 @@ generic_ftoa :: proc(buf: []byte, val: f64, fmt: byte, precision, bit_size: int) return format_digits(buf, shortest, neg, digs, prec, fmt) } +/* +Converts a decimal floating-point number into a byte buffer with the given format +**Inputs** +- buf: The byte buffer to store the formatted number +- shortest: If true, generates the shortest representation of the number +- neg: If true, the number is negative +- digs: The decimal number to be formatted +- precision: The number of digits after the decimal point +- fmt: The format specifier (accepted values: 'f', 'F', 'e', 'E', 'g', 'G') +**Returns** +- A byte slice containing the formatted decimal floating-point number +*/ format_digits :: proc(buf: []byte, shortest: bool, neg: bool, digs: Decimal_Slice, precision: int, fmt: byte) -> []byte { Buffer :: struct { b: []byte, @@ -217,7 +251,15 @@ format_digits :: proc(buf: []byte, shortest: bool, neg: bool, digs: Decimal_Slic } +/* +Rounds the given decimal number to its shortest representation, considering the provided floating-point format +**Inputs** +- d: The decimal number to round +- mant: The mantissa of the floating-point number +- exp: The exponent of the floating-point number +- flt: Pointer to the Float_Info structure containing information about the floating-point format +*/ round_shortest :: proc(d: ^decimal.Decimal, mant: u64, exp: int, flt: ^Float_Info) { if mant == 0 { // If mantissa is zero, the number is zero d.count = 0 @@ -284,7 +326,17 @@ round_shortest :: proc(d: ^decimal.Decimal, mant: u64, exp: int, flt: ^Float_Inf } } +/* +Converts a decimal number to its floating-point representation with the given format and returns the resulting bits +**Inputs** +- d: Pointer to the decimal number to convert +- info: Pointer to the Float_Info structure containing information about the floating-point format + +**Returns** +- b: The bits representing the floating-point number +- overflow: A boolean indicating whether an overflow occurred during conversion +*/ @(private) decimal_to_float_bits :: proc(d: ^decimal.Decimal, info: ^Float_Info) -> (b: u64, overflow: bool) { end :: proc "contextless" (d: ^decimal.Decimal, mant: u64, exp: int, info: ^Float_Info) -> (bits: u64) { diff --git a/core/strconv/integers.odin b/core/strconv/integers.odin index f06e6e177..98a432ac5 100644 --- a/core/strconv/integers.odin +++ b/core/strconv/integers.odin @@ -9,7 +9,18 @@ Int_Flags :: bit_set[Int_Flag] MAX_BASE :: 32 digits := "0123456789abcdefghijklmnopqrstuvwxyz" +/* +Determines whether the given unsigned 64-bit integer is a negative value by interpreting it as a signed integer with the specified bit size. +**Inputs** +- x: The unsigned 64-bit integer to check for negativity +- is_signed: A boolean indicating if the input should be treated as a signed integer +- bit_size: The bit size of the signed integer representation (8, 16, 32, or 64) + +**Returns** +- u: The absolute value of the input integer +- neg: A boolean indicating whether the input integer is negative +*/ is_integer_negative :: proc(x: u64, is_signed: bool, bit_size: int) -> (u: u64, neg: bool) { u = x if is_signed { @@ -36,7 +47,21 @@ is_integer_negative :: proc(x: u64, is_signed: bool, bit_size: int) -> (u: u64, } return } +/* +Appends the string representation of an integer to a buffer with specified base, flags, and digit set. +**Inputs** +- buf: The buffer to append the integer representation to +- x: The integer value to convert +- base: The base for the integer representation (2 <= base <= MAX_BASE) +- is_signed: A boolean indicating if the input should be treated as a signed integer +- bit_size: The bit size of the signed integer representation (8, 16, 32, or 64) +- digits: The digit set used for the integer representation +- flags: The Int_Flags bit set to control integer formatting + +**Returns** +- The string containing the integer representation appended to the buffer +*/ append_bits :: proc(buf: []byte, x: u64, base: int, is_signed: bool, bit_size: int, digits: string, flags: Int_Flags) -> string { if base < 2 || base > MAX_BASE { panic("strconv: illegal base passed to append_bits") @@ -78,7 +103,18 @@ append_bits :: proc(buf: []byte, x: u64, base: int, is_signed: bool, bit_size: i copy(buf, out) return string(buf[0:len(out)]) } +/* +Determines whether the given unsigned 128-bit integer is a negative value by interpreting it as a signed integer with the specified bit size. +**Inputs** +- x: The unsigned 128-bit integer to check for negativity +- is_signed: A boolean indicating if the input should be treated as a signed integer +- bit_size: The bit size of the signed integer representation (8, 16, 32, 64, or 128) + +**Returns** +- u: The absolute value of the input integer +- neg: A boolean indicating whether the input integer is negative +*/ is_integer_negative_128 :: proc(x: u128, is_signed: bool, bit_size: int) -> (u: u128, neg: bool) { u = x if is_signed { @@ -109,9 +145,21 @@ is_integer_negative_128 :: proc(x: u128, is_signed: bool, bit_size: int) -> (u: } return } +/* +Appends the string representation of a 128-bit integer to a buffer with specified base, flags, and digit set. -// import "core:runtime" +**Inputs** +- buf: The buffer to append the integer representation to +- x: The 128-bit integer value to convert +- base: The base for the integer representation (2 <= base <= MAX_BASE) +- is_signed: A boolean indicating if the input should be treated as a signed integer +- bit_size: The bit size of the signed integer representation (8, 16, 32, 64, or 128) +- digits: The digit set used for the integer representation +- flags: The Int_Flags bit set to control integer formatting +**Returns** +- The string containing the integer representation appended to the buffer +*/ append_bits_128 :: proc(buf: []byte, x: u128, base: int, is_signed: bool, bit_size: int, digits: string, flags: Int_Flags) -> string { if base < 2 || base > MAX_BASE { panic("strconv: illegal base passed to append_bits") diff --git a/core/strconv/strconv.odin b/core/strconv/strconv.odin index e11ce471d..eae9f9504 100644 --- a/core/strconv/strconv.odin +++ b/core/strconv/strconv.odin @@ -2,7 +2,19 @@ package strconv import "core:unicode/utf8" import "decimal" +/* +Parses a boolean value from the input string +**Inputs** +- s: The input string + - true: "1", "t", "T", "true", "TRUE", "True" + - false: "0", "f", "F", "false", "FALSE", "False" +- n: An optional pointer to an int to store the length of the parsed substring (default: nil) + +**Returns** +- result: The parsed boolean value (default: false) +- ok: A boolean indicating whether the parsing was successful +*/ parse_bool :: proc(s: string, n: ^int = nil) -> (result: bool = false, ok: bool) { switch s { case "1", "t", "T", "true", "TRUE", "True": @@ -14,7 +26,14 @@ parse_bool :: proc(s: string, n: ^int = nil) -> (result: bool = false, ok: bool) } return } +/* +Finds the integer value of the given rune +**Inputs** +- r: The input rune to find the integer value of + +**Returns** The integer value of the given rune +*/ _digit_value :: proc(r: rune) -> int { ri := int(r) v: int = 16 @@ -25,16 +44,31 @@ _digit_value :: proc(r: rune) -> int { } return v } +/* +Parses an integer value from the input string in the given base, without a prefix -// Parses an integer value from a string, in the given base, without a prefix. -// -// Returns ok=false if no numeric value of the appropriate base could be found, -// or if the input string contained more than just the number. -// -// ``` -// n, ok := strconv.parse_i64_of_base("-1234eeee", 10); -// assert(n == -1234 && ok); -// ``` +**Inputs** +- str: The input string to parse the integer value from +- base: The base of the integer value to be parsed (must be between 1 and 16) +- n: An optional pointer to an int to store the length of the parsed substring (default: nil) + +Example: + + import "core:fmt" + import "core:strconv" + parse_i64_of_base_example :: proc() { + n, ok := strconv.parse_i64_of_base("-1234e3", 10) + fmt.println(n, ok) + } + +Output: + + -1234 false + +**Returns** +- value: Parses an integer value from a string, in the given base, without a prefix. +- ok: ok=false if no numeric value of the appropriate base could be found, or if the input string contained more than just the number. +*/ parse_i64_of_base :: proc(str: string, base: int, n: ^int = nil) -> (value: i64, ok: bool) { assert(base <= 16, "base must be 1-16") @@ -80,19 +114,34 @@ parse_i64_of_base :: proc(str: string, base: int, n: ^int = nil) -> (value: i64, ok = len(s) == 0 return } +/* +Parses an integer value from the input string in base 10, unless there's a prefix -// Parses a integer value from a string, in base 10, unless there's a prefix. -// -// Returns ok=false if a valid integer could not be found, -// or if the input string contained more than just the number. -// -// ``` -// n, ok := strconv.parse_i64_maybe_prefixed("1234"); -// assert(n == 1234 && ok); -// -// n, ok = strconv.parse_i64_maybe_prefixed("0xeeee"); -// assert(n == 0xeeee && ok); -// ``` +**Inputs** +- str: The input string to parse the integer value from +- n: An optional pointer to an int to store the length of the parsed substring (default: nil) + +Example: + + import "core:fmt" + import "core:strconv" + parse_i64_maybe_prefixed_example :: proc() { + n, ok := strconv.parse_i64_maybe_prefixed("1234") + fmt.println(n,ok) + + n, ok = strconv.parse_i64_maybe_prefixed("0xeeee") + fmt.println(n,ok) + } + +Output: + + 1234 true + 61166 true + +**Returns** +- value: The parsed integer value +- ok: ok=false if a valid integer could not be found, or if the input string contained more than just the number. +*/ parse_i64_maybe_prefixed :: proc(str: string, n: ^int = nil) -> (value: i64, ok: bool) { s := str defer if n != nil { n^ = len(str)-len(s) } @@ -146,22 +195,38 @@ parse_i64_maybe_prefixed :: proc(str: string, n: ^int = nil) -> (value: i64, ok: ok = len(s) == 0 return } - +// parse_i64 :: proc{parse_i64_maybe_prefixed, parse_i64_of_base} +/* +Parses an unsigned 64-bit integer value from the input string without a prefix, using the specified base -// Parses an unsigned integer value from a string, in the given base, and -// without a prefix. -// -// Returns ok=false if no numeric value of the appropriate base could be found, -// or if the input string contained more than just the number. -// -// ``` -// n, ok := strconv.parse_u64_of_base("1234eeee", 10); -// assert(n == 1234 && ok); -// -// n, ok = strconv.parse_u64_of_base("5678eeee", 16); -// assert(n == 0x5678eeee && ok); -// ``` +**Inputs** +- str: The input string to parse +- base: The base of the number system to use for parsing + - Must be between 1 and 16 (inclusive) +- n: An optional pointer to an int to store the length of the parsed substring (default: nil) + +Example: + + import "core:fmt" + import "core:strconv" + parse_u64_of_base_example :: proc() { + n, ok := strconv.parse_u64_of_base("1234e3", 10) + fmt.println(n,ok) + + n, ok = strconv.parse_u64_of_base("5678eee",16) + fmt.println(n,ok) + } + +Output: + + 1234 false + 90672878 true + +**Returns** +- value: The parsed uint64 value +- ok: A boolean indicating whether the parsing was successful +*/ parse_u64_of_base :: proc(str: string, base: int, n: ^int = nil) -> (value: u64, ok: bool) { assert(base <= 16, "base must be 1-16") s := str @@ -193,19 +258,37 @@ parse_u64_of_base :: proc(str: string, base: int, n: ^int = nil) -> (value: u64, ok = len(s) == 0 return } +/* +Parses an unsigned 64-bit integer value from the input string, using the specified base or inferring the base from a prefix -// Parses an unsigned integer value from a string in base 10, unless there's a prefix. -// -// Returns ok=false if a valid integer could not be found, if the value was negative, -// or if the input string contained more than just the number. -// -// ``` -// n, ok := strconv.parse_u64_maybe_prefixed("1234"); -// assert(n == 1234 && ok); -// -// n, ok = strconv.parse_u64_maybe_prefixed("0xeeee"); -// assert(n == 0xeeee && ok); -// ``` +**Inputs** +- str: The input string to parse +- base: The base of the number system to use for parsing (default: 0) + - If base is 0, it will be inferred based on the prefix in the input string (e.g. '0x' for hexadecimal) + - If base is not 0, it will be used for parsing regardless of any prefix in the input string +- n: An optional pointer to an int to store the length of the parsed substring (default: nil) + +Example: + + import "core:fmt" + import "core:strconv" + parse_u64_maybe_prefixed_example :: proc() { + n, ok := strconv.parse_u64_maybe_prefixed("1234") + fmt.println(n,ok) + + n, ok = strconv.parse_u64_maybe_prefixed("0xee") + fmt.println(n,ok) + } + +Output: + + 1234 true + 238 true + +**Returns** +- value: The parsed uint64 value +- ok: ok=false if a valid integer could not be found, if the value was negative, or if the input string contained more than just the number. +*/ parse_u64_maybe_prefixed :: proc(str: string, n: ^int = nil) -> (value: u64, ok: bool) { s := str defer if n != nil { n^ = len(str)-len(s) } @@ -248,26 +331,42 @@ parse_u64_maybe_prefixed :: proc(str: string, n: ^int = nil) -> (value: u64, ok: ok = len(s) == 0 return } - +// parse_u64 :: proc{parse_u64_maybe_prefixed, parse_u64_of_base} +/* +Parses a signed integer value from the input string, using the specified base or inferring the base from a prefix -// Parses an integer value from a string in the given base, or -// - if the string has a prefix (e.g: '0x') then that will determine the base; -// - otherwise, assumes base 10. -// -// Returns ok=false if no appropriate value could be found, or if the input string -// contained more than just the number. -// -// ``` -// n, ok := strconv.parse_int("1234"); // without prefix, inferred base 10 -// assert(n == 1234 && ok); -// -// n, ok = strconv.parse_int("ffff", 16); // without prefix, explicit base -// assert(n == 0xffff && ok); -// -// n, ok = strconv.parse_int("0xffff"); // with prefix and inferred base -// assert(n == 0xffff && ok); -// ``` +**Inputs** +- s: The input string to parse +- base: The base of the number system to use for parsing (default: 0) + - If base is 0, it will be inferred based on the prefix in the input string (e.g. '0x' for hexadecimal) + - If base is not 0, it will be used for parsing regardless of any prefix in the input string + +Example: + + import "core:fmt" + import "core:strconv" + parse_int_example :: proc() { + n, ok := strconv.parse_int("1234") // without prefix, inferred base 10 + fmt.println(n,ok) + + n, ok = strconv.parse_int("ffff", 16) // without prefix, explicit base + fmt.println(n,ok) + + n, ok = strconv.parse_int("0xffff") // with prefix and inferred base + fmt.println(n,ok) + } + +Output: + + 1234 true + 65535 true + 65535 true + +**Returns** +- value: The parsed int value +- ok: `false` if no appropriate value could be found, or if the input string contained more than just the number. +*/ parse_int :: proc(s: string, base := 0, n: ^int = nil) -> (value: int, ok: bool) { v: i64 = --- switch base { @@ -277,27 +376,41 @@ parse_int :: proc(s: string, base := 0, n: ^int = nil) -> (value: int, ok: bool) value = int(v) return } +/* +Parses an unsigned integer value from the input string, using the specified base or inferring the base from a prefix +**Inputs** +- s: The input string to parse +- base: The base of the number system to use for parsing (default: 0, inferred) + - If base is 0, it will be inferred based on the prefix in the input string (e.g. '0x' for hexadecimal) + - If base is not 0, it will be used for parsing regardless of any prefix in the input string -// Parses an unsigned integer value from a string in the given base, or -// - if the string has a prefix (e.g: '0x') then that will determine the base; -// - otherwise, assumes base 10. -// -// Returns ok=false if: -// - no appropriate value could be found; or -// - the value was negative. -// - the input string contained more than just the number. -// -// ``` -// n, ok := strconv.parse_uint("1234"); // without prefix, inferred base 10 -// assert(n == 1234 && ok); -// -// n, ok = strconv.parse_uint("ffff", 16); // without prefix, explicit base -// assert(n == 0xffff && ok); -// -// n, ok = strconv.parse_uint("0xffff"); // with prefix and inferred base -// assert(n == 0xffff && ok); -// ``` +Example: + + import "core:fmt" + import "core:strconv" + parse_uint_example :: proc() { + n, ok := strconv.parse_uint("1234") // without prefix, inferred base 10 + fmt.println(n,ok) + + n, ok = strconv.parse_uint("ffff", 16) // without prefix, explicit base + fmt.println(n,ok) + + n, ok = strconv.parse_uint("0xffff") // with prefix and inferred base + fmt.println(n,ok) + } + +Output: + + 1234 true + 65535 true + 65535 true + +**Returns** + +value: The parsed uint value +ok: `false` if no appropriate value could be found; the value was negative; he input string contained more than just the number +*/ parse_uint :: proc(s: string, base := 0, n: ^int = nil) -> (value: uint, ok: bool) { v: u64 = --- switch base { @@ -307,17 +420,31 @@ parse_uint :: proc(s: string, base := 0, n: ^int = nil) -> (value: uint, ok: boo value = uint(v) return } +/* +Parses an integer value from a string in the given base, without any prefix +**Inputs** +- str: The input string containing the integer value +- base: The base (radix) to use for parsing the integer (1-16) +- n: An optional pointer to an int to store the length of the parsed substring (default: nil) -// Parses an integer value from a string, in the given base, without a prefix. -// -// Returns ok=false if no numeric value of the appropriate base could be found, -// or if the input string contained more than just the number. -// -// ``` -// n, ok := strconv.parse_i128_of_base("-1234eeee", 10); -// assert(n == -1234 && ok); -// ``` +Example: + + import "core:fmt" + import "core:strconv" + parse_i128_of_base_example :: proc() { + n, ok := strconv.parse_i128_of_base("-1234eeee", 10) + fmt.println(n,ok) + } + +Output: + + -1234 false + +**Returns** +- value: The parsed i128 value +- ok: false if no numeric value of the appropriate base could be found, or if the input string contained more than just the number. +*/ parse_i128_of_base :: proc(str: string, base: int, n: ^int = nil) -> (value: i128, ok: bool) { assert(base <= 16, "base must be 1-16") @@ -361,19 +488,34 @@ parse_i128_of_base :: proc(str: string, base: int, n: ^int = nil) -> (value: i12 ok = len(s) == 0 return } +/* +Parses an integer value from a string in base 10, unless there's a prefix -// Parses a integer value from a string, in base 10, unless there's a prefix. -// -// Returns ok=false if a valid integer could not be found, -// or if the input string contained more than just the number. -// -// ``` -// n, ok := strconv.parse_i128_maybe_prefixed("1234"); -// assert(n == 1234 && ok); -// -// n, ok = strconv.parse_i128_maybe_prefixed("0xeeee"); -// assert(n == 0xeeee && ok); -// ``` +**Inputs** +- str: The input string containing the integer value +- n: An optional pointer to an int to store the length of the parsed substring (default: nil) + +Example: + + import "core:fmt" + import "core:strconv" + parse_i128_maybe_prefixed_example :: proc() { + n, ok := strconv.parse_i128_maybe_prefixed("1234") + fmt.println(n, ok) + + n, ok = strconv.parse_i128_maybe_prefixed("0xeeee") + fmt.println(n, ok) + } + +Output: + + 1234 true + 61166 true + +**Returns** +- value: The parsed i128 value +- ok: `false` if a valid integer could not be found, or if the input string contained more than just the number. +*/ parse_i128_maybe_prefixed :: proc(str: string, n: ^int = nil) -> (value: i128, ok: bool) { s := str defer if n != nil { n^ = len(str)-len(s) } @@ -427,22 +569,37 @@ parse_i128_maybe_prefixed :: proc(str: string, n: ^int = nil) -> (value: i128, o ok = len(s) == 0 return } - +// parse_i128 :: proc{parse_i128_maybe_prefixed, parse_i128_of_base} +/* +Parses an unsigned integer value from a string in the given base, without any prefix -// Parses an unsigned integer value from a string, in the given base, and -// without a prefix. -// -// Returns ok=false if no numeric value of the appropriate base could be found, -// or if the input string contained more than just the number. -// -// ``` -// n, ok := strconv.parse_u128_of_base("1234eeee", 10); -// assert(n == 1234 && ok); -// -// n, ok = strconv.parse_u128_of_base("5678eeee", 16); -// assert(n == 0x5678eeee && ok); -// ``` +**Inputs** +- str: The input string containing the integer value +- base: The base (radix) to use for parsing the integer (1-16) +- n: An optional pointer to an int to store the length of the parsed substring (default: nil) + +Example: + + import "core:fmt" + import "core:strconv" + parse_u128_of_base_example :: proc() { + n, ok := strconv.parse_u128_of_base("1234eeee", 10) + fmt.println(n, ok) + + n, ok = strconv.parse_u128_of_base("5678eeee", 16) + fmt.println(n, ok) + } + +Output: + + 1234 false + 1450766062 true + +**Returns** +- value: The parsed u128 value +- ok: `false` if no numeric value of the appropriate base could be found, or if the input string contained more than just the number. +*/ parse_u128_of_base :: proc(str: string, base: int, n: ^int = nil) -> (value: u128, ok: bool) { assert(base <= 16, "base must be 1-16") s := str @@ -474,19 +631,34 @@ parse_u128_of_base :: proc(str: string, base: int, n: ^int = nil) -> (value: u12 ok = len(s) == 0 return } +/* +Parses an unsigned integer value from a string in base 10, unless there's a prefix -// Parses an unsigned integer value from a string in base 10, unless there's a prefix. -// -// Returns ok=false if a valid integer could not be found, if the value was negative, -// or if the input string contained more than just the number. -// -// ``` -// n, ok := strconv.parse_u128_maybe_prefixed("1234"); -// assert(n == 1234 && ok); -// -// n, ok = strconv.parse_u128_maybe_prefixed("0xeeee"); -// assert(n == 0xeeee && ok); -// ``` +**Inputs** +- str: The input string containing the integer value +- n: An optional pointer to an int to store the length of the parsed substring (default: nil) + +Example: + + import "core:fmt" + import "core:strconv" + parse_u128_maybe_prefixed_example :: proc() { + n, ok := strconv.parse_u128_maybe_prefixed("1234") + fmt.println(n, ok) + + n, ok = strconv.parse_u128_maybe_prefixed("5678eeee") + fmt.println(n, ok) + } + +Output: + + 1234 true + 5678 false + +**Returns** +- value: The parsed u128 value +- ok: false if a valid integer could not be found, if the value was negative, or if the input string contained more than just the number. +*/ parse_u128_maybe_prefixed :: proc(str: string, n: ^int = nil) -> (value: u128, ok: bool) { s := str defer if n != nil { n^ = len(str)-len(s) } @@ -529,34 +701,80 @@ parse_u128_maybe_prefixed :: proc(str: string, n: ^int = nil) -> (value: u128, o ok = len(s) == 0 return } - +// parse_u128 :: proc{parse_u128_maybe_prefixed, parse_u128_of_base} +/* +Converts a byte to lowercase +**Inputs** +- ch: A byte character to be converted to lowercase. +**Returns** +- A lowercase byte character. +*/ @(private) lower :: #force_inline proc "contextless" (ch: byte) -> byte { return ('a' - 'A') | ch } +/* +Parses a 32-bit floating point number from a string +**Inputs** +- s: The input string containing a 32-bit floating point number. +- n: An optional pointer to an int to store the length of the parsed substring (default: nil). +Example: -// Parses a 32-bit floating point number from a string. -// -// Returns ok=false if a base 10 float could not be found, -// or if the input string contained more than just the number. -// -// ``` -// n, ok := strconv.parse_f32("12.34eee"); -// assert(n == 12.34 && ok); -// -// n, ok = strconv.parse_f32("12.34"); -// assert(n == 12.34 && ok); -// ``` + import "core:fmt" + import "core:strconv" + parse_f32_example :: proc() { + n, ok := strconv.parse_f32("1234eee") + fmt.println(n, ok) + + n, ok = strconv.parse_f32("5678e2") + fmt.println(n, ok) + } + +Output: + + 0.000 false + 567800.000 true + +**Returns** +- value: The parsed 32-bit floating point number. +- ok: `false` if a base 10 float could not be found, or if the input string contained more than just the number. +*/ parse_f32 :: proc(s: string, n: ^int = nil) -> (value: f32, ok: bool) { v: f64 = --- v, ok = parse_f64(s, n) return f32(v), ok } +/* +Parses a 64-bit floating point number from a string +**Inputs** +- str: The input string containing a 64-bit floating point number. +- n: An optional pointer to an int to store the length of the parsed substring (default: nil). +Example: + + import "core:fmt" + import "core:strconv" + parse_f64_example :: proc() { + n, ok := strconv.parse_f64("1234eee") + fmt.println(n, ok) + + n, ok = strconv.parse_f64("5678e2") + fmt.println(n, ok) + } + +Output: + + 0.000 false + 567800.000 true + +**Returns** +- value: The parsed 64-bit floating point number. +- ok: `false` if a base 10 float could not be found, or if the input string contained more than just the number. +*/ parse_f64 :: proc(str: string, n: ^int = nil) -> (value: f64, ok: bool) { nr: int value, nr, ok = parse_f64_prefix(str) @@ -566,40 +784,69 @@ parse_f64 :: proc(str: string, n: ^int = nil) -> (value: f64, ok: bool) { if n != nil { n^ = nr } return } +/* +Parses a 32-bit floating point number from a string and returns the parsed number, the length of the parsed substring, and a boolean indicating whether the parsing was successful +**Inputs** +- str: The input string containing a 32-bit floating point number. -// Parses a 32-bit floating point number from a string. -// -// Returns ok=false if a base 10 float could not be found, -// or if the input string contained more than just the number. -// -// ``` -// n, _, ok := strconv.parse_f32("12.34eee"); -// assert(n == 12.34 && ok); -// -// n, _, ok = strconv.parse_f32("12.34"); -// assert(n == 12.34 && ok); -// ``` +Example: + + import "core:fmt" + import "core:strconv" + parse_f32_prefix_example :: proc() { + n, _, ok := strconv.parse_f32_prefix("1234eee") + fmt.println(n, ok) + + n, _, ok = strconv.parse_f32_prefix("5678e2") + fmt.println(n, ok) + } + +Output: + + 0.000 false + 567800.000 true + + +**Returns** +- value: The parsed 32-bit floating point number. +- nr: The length of the parsed substring. +- ok: A boolean indicating whether the parsing was successful. +*/ parse_f32_prefix :: proc(str: string) -> (value: f32, nr: int, ok: bool) { f: f64 f, nr, ok = parse_f64_prefix(str) value = f32(f) return } +/* +Parses a 64-bit floating point number from a string and returns the parsed number, the length of the parsed substring, and a boolean indicating whether the parsing was successful +**Inputs** +- str: The input string containing a 64-bit floating point number. -// Parses a 64-bit floating point number from a string. -// -// Returns ok=false if a base 10 float could not be found, -// or if the input string contained more than just the number. -// -// ``` -// n, _, ok := strconv.parse_f32("12.34eee"); -// assert(n == 12.34 && ok); -// -// n, _, ok = strconv.parse_f32("12.34"); -// assert(n == 12.34 && ok); -// ``` +Example: + + import "core:fmt" + import "core:strconv" + parse_f64_prefix_example :: proc() { + n, _, ok := strconv.parse_f64_prefix("12.34eee") + fmt.println(n, ok) + + n, _, ok = strconv.parse_f64_prefix("12.34e2") + fmt.println(n, ok) + } + +Output: + + 0.000 false + 1234.000 true + +**Returns** +- value: The parsed 64-bit floating point number. +- nr: The length of the parsed substring. +- ok: `false` if a base 10 float could not be found, or if the input string contained more than just the number. +*/ parse_f64_prefix :: proc(str: string) -> (value: f64, nr: int, ok: bool) { common_prefix_len_ignore_case :: proc "contextless" (s, prefix: string) -> int { n := len(prefix) @@ -877,8 +1124,30 @@ parse_f64_prefix :: proc(str: string) -> (value: f64, nr: int, ok: bool) { ok = !overflow return } +/* +Appends a boolean value as a string to the given buffer +**Inputs** +- buf: The buffer to append the boolean value to +- b: The boolean value to be appended +Example: + + import "core:fmt" + import "core:strconv" + append_bool_example :: proc() { + buf: [6]byte + result := strconv.append_bool(buf[:], true) + fmt.println(result, buf) + } + +Output: + + true [116, 114, 117, 101, 0, 0] + +**Returns** +- The resulting string after appending the boolean value +*/ append_bool :: proc(buf: []byte, b: bool) -> string { n := 0 if b { @@ -888,32 +1157,197 @@ append_bool :: proc(buf: []byte, b: bool) -> string { } return string(buf[:n]) } +/* +Appends an unsigned integer value as a string to the given buffer with the specified base +**Inputs** +- buf: The buffer to append the unsigned integer value to +- u: The unsigned integer value to be appended +- base: The base to use for converting the integer value + +Example: + + import "core:fmt" + import "core:strconv" + append_uint_example :: proc() { + buf: [4]byte + result := strconv.append_uint(buf[:], 42, 16) + fmt.println(result, buf) + } + +Output: + + 2a [50, 97, 0, 0] + +**Returns** +- The resulting string after appending the unsigned integer value +*/ append_uint :: proc(buf: []byte, u: u64, base: int) -> string { return append_bits(buf, u, base, false, 8*size_of(uint), digits, nil) } +/* +Appends a signed integer value as a string to the given buffer with the specified base + +**Inputs** +- buf: The buffer to append the signed integer value to +- i: The signed integer value to be appended +- base: The base to use for converting the integer value + +Example: + + import "core:fmt" + import "core:strconv" + append_int_example :: proc() { + buf: [4]byte + result := strconv.append_int(buf[:], -42, 10) + fmt.println(result, buf) + } + +Output: + + -42 [45, 52, 50, 0] + +**Returns** +- The resulting string after appending the signed integer value +*/ append_int :: proc(buf: []byte, i: i64, base: int) -> string { return append_bits(buf, u64(i), base, true, 8*size_of(int), digits, nil) } +/* +Converts an integer value to a string and stores it in the given buffer +**Inputs** +- buf: The buffer to store the resulting string +- i: The integer value to be converted + +Example: + + import "core:fmt" + import "core:strconv" + itoa_example :: proc() { + buf: [4]byte + result := strconv.itoa(buf[:], 42) + fmt.println(result, buf) // "42" + } + +Output: + + 42 [52, 50, 0, 0] + +**Returns** +- The resulting string after converting the integer value +*/ itoa :: proc(buf: []byte, i: int) -> string { return append_int(buf, i64(i), 10) } +/* +Converts a string to an integer value + +**Inputs** +- s: The string to be converted + +Example: + + import "core:fmt" + import "core:strconv" + atoi_example :: proc() { + fmt.println(strconv.atoi("42")) + } + +Output: + + 42 + +**Returns** +- The resulting integer value +*/ atoi :: proc(s: string) -> int { v, _ := parse_int(s) return v } +/* +Converts a string to a float64 value + +**Inputs** +- s: The string to be converted + +Example: + + import "core:fmt" + import "core:strconv" + atof_example :: proc() { + fmt.println(strconv.atof("3.14")) + } + +Output: + + 3.140 + +**Returns** +- The resulting float64 value after converting the string +*/ atof :: proc(s: string) -> f64 { v, _ := parse_f64(s) return v } - +// Alias to `append_float` ftoa :: append_float +/* +Appends a float64 value as a string to the given buffer with the specified format and precision + +**Inputs** +- buf: The buffer to append the float64 value to +- f: The float64 value to be appended +- fmt: The byte specifying the format to use for the conversion +- prec: The precision to use for the conversion +- bit_size: The size of the float in bits (32 or 64) + +Example: + + import "core:fmt" + import "core:strconv" + append_float_example :: proc() { + buf: [8]byte + result := strconv.append_float(buf[:], 3.14159, 'f', 2, 64) + fmt.println(result, buf) + } + +Output: + + +3.14 [43, 51, 46, 49, 52, 0, 0, 0] + +**Returns** +- The resulting string after appending the float +*/ append_float :: proc(buf: []byte, f: f64, fmt: byte, prec, bit_size: int) -> string { return string(generic_ftoa(buf, f, fmt, prec, bit_size)) } +/* +Appends a quoted string representation of the input string to a given byte slice and returns the result as a string +**Inputs** +- buf: The byte slice to which the quoted string will be appended +- str: The input string to be quoted +!! ISSUE !! NOT EXPECTED -- "\"hello\"" was expected + +Example: + + import "core:fmt" + import "core:strconv" + quote_example :: proc() { + buf: [20]byte + result := strconv.quote(buf[:], "hello") + fmt.println(result, buf) + } + +Output: + + "'h''e''l''l''o'" [34, 39, 104, 39, 39, 101, 39, 39, 108, 39, 39, 108, 39, 39, 111, 39, 34, 0, 0, 0] + +**Returns** +- The resulting string after appending the quoted string representation +*/ quote :: proc(buf: []byte, str: string) -> string { write_byte :: proc(buf: []byte, i: ^int, bytes: ..byte) { if i^ >= len(buf) { @@ -951,7 +1385,30 @@ quote :: proc(buf: []byte, str: string) -> string { write_byte(buf, &i, c) return string(buf[:i]) } +/* +Appends a quoted rune representation of the input rune to a given byte slice and returns the result as a string +**Inputs** +- buf: The byte slice to which the quoted rune will be appended +- r: The input rune to be quoted + +Example: + + import "core:fmt" + import "core:strconv" + quote_rune_example :: proc() { + buf: [4]byte + result := strconv.quote_rune(buf[:], 'A') + fmt.println(result, buf) + } + +Output: + + 'A' [39, 65, 39, 0] + +**Returns** +- The resulting string after appending the quoted rune representation +*/ quote_rune :: proc(buf: []byte, r: rune) -> string { write_byte :: proc(buf: []byte, i: ^int, bytes: ..byte) { if i^ < len(buf) { @@ -1007,10 +1464,35 @@ quote_rune :: proc(buf: []byte, r: rune) -> string { return string(buf[:i]) } +/* +Unquotes a single character from the input string, considering the given quote character +**Inputs** +- str: The input string containing the character to unquote +- quote: The quote character to consider (e.g., '"') +Example: + import "core:fmt" + import "core:strconv" + unquote_char_example :: proc() { + src:="\'The\' raven" + r, multiple_bytes, tail_string, success := strconv.unquote_char(src,'\'') + fmt.println("Source:", src) + fmt.printf("r: <%v>, multiple_bytes:%v, tail_string:<%s>, success:%v\n",r, multiple_bytes, tail_string, success) + } +Output: + + Source: 'The' raven + r: <'>, multiple_bytes:false, tail_string:, success:true + +**Returns** +- r: The unquoted rune +- multiple_bytes: A boolean indicating if the rune has multiple bytes +- tail_string: The remaining portion of the input string after unquoting the character +- success: A boolean indicating whether the unquoting was successful +*/ unquote_char :: proc(str: string, quote: byte) -> (r: rune, multiple_bytes: bool, tail_string: string, success: bool) { hex_to_int :: proc(c: byte) -> int { switch c { @@ -1105,7 +1587,54 @@ unquote_char :: proc(str: string, quote: byte) -> (r: rune, multiple_bytes: bool tail_string = s return } +/* +Unquotes the input string considering any type of quote character and returns the unquoted string +**Inputs** +- lit: The input string to unquote +- allocator: (default: context.allocator) + +WARNING: This procedure gives unexpected results if the quotes are not the first and last characters. + +Example: + + import "core:fmt" + import "core:strconv" + unquote_string_example :: proc() { + src:="\"The raven Huginn is black.\"" + s, allocated, ok := strconv.unquote_string(src) + fmt.println(src) + fmt.printf("Unquoted: <%s>, alloc:%v, ok:%v\n\n", s, allocated, ok) + + src="\'The raven Huginn\' is black." + s, allocated, ok = strconv.unquote_string(src) + fmt.println(src) + fmt.printf("Unquoted: <%s>, alloc:%v, ok:%v\n\n", s, allocated, ok) + + src="The raven \'Huginn\' is black." + s, allocated, ok = strconv.unquote_string(src) // Will produce undesireable results + fmt.println(src) + fmt.printf("Unquoted: <%s>, alloc:%v, ok:%v\n", s, allocated, ok) + } + +Output: + + "The raven Huginn is black." + Unquoted: , alloc:false, ok:true + + 'The raven Huginn' is black. + Unquoted: , alloc:false, ok:true + + The raven 'Huginn' is black. + Unquoted: , alloc:false, ok:true + +**Returns** +- res: The resulting unquoted string +- allocated: A boolean indicating if the resulting string was allocated using the provided allocator +- success: A boolean indicating whether the unquoting was successful + +NOTE: If unquoting is unsuccessful, the allocated memory for the result will be freed. +*/ unquote_string :: proc(lit: string, allocator := context.allocator) -> (res: string, allocated, success: bool) { contains_rune :: proc(s: string, r: rune) -> int { for c, offset in s { diff --git a/core/strings/ascii_set.odin b/core/strings/ascii_set.odin index c65ef1c61..247b38527 100644 --- a/core/strings/ascii_set.odin +++ b/core/strings/ascii_set.odin @@ -38,8 +38,8 @@ Inputs: - c: The char to check for in the Ascii_Set. Returns: -A boolean indicating if the byte is contained in the Ascii_Set (true) or not (false). +- res: A boolean indicating if the byte is contained in the Ascii_Set (true) or not (false). */ -ascii_set_contains :: proc(as: Ascii_Set, c: byte) -> bool #no_bounds_check { +ascii_set_contains :: proc(as: Ascii_Set, c: byte) -> (res: bool) #no_bounds_check { return as[c>>5] & (1<<(c&31)) != 0 } diff --git a/core/strings/builder.odin b/core/strings/builder.odin index 32442c21a..90cc4ebdc 100644 --- a/core/strings/builder.odin +++ b/core/strings/builder.odin @@ -3,6 +3,7 @@ package strings import "core:runtime" import "core:unicode/utf8" import "core:strconv" +import "core:mem" import "core:io" /* Type definition for a procedure that flushes a Builder @@ -31,10 +32,11 @@ Inputs: - allocator: (default is context.allocator) Returns: -A new Builder +- res: The new Builder +- err: An optional allocator error if one occured, `nil` otherwise */ -builder_make_none :: proc(allocator := context.allocator) -> Builder { - return Builder{buf=make([dynamic]byte, allocator)} +builder_make_none :: proc(allocator := context.allocator) -> (res: Builder, err: mem.Allocator_Error) #optional_allocator_error { + return Builder{buf=make([dynamic]byte, allocator) or_return }, nil } /* Produces a Builder with a specified length and cap of max(16,len) byte buffer @@ -46,10 +48,11 @@ Inputs: - allocator: (default is context.allocator) Returns: -A new Builder +- res: The new Builder +- err: An optional allocator error if one occured, `nil` otherwise */ -builder_make_len :: proc(len: int, allocator := context.allocator) -> Builder { - return Builder{buf=make([dynamic]byte, len, allocator)} +builder_make_len :: proc(len: int, allocator := context.allocator) -> (res: Builder, err: mem.Allocator_Error) #optional_allocator_error { + return Builder{buf=make([dynamic]byte, len, allocator) or_return }, nil } /* Produces a Builder with a specified length and cap @@ -62,10 +65,11 @@ Inputs: - allocator: (default is context.allocator) Returns: -A new Builder +- res: The new Builder +- err: An optional allocator error if one occured, `nil` otherwise */ -builder_make_len_cap :: proc(len, cap: int, allocator := context.allocator) -> Builder { - return Builder{buf=make([dynamic]byte, len, cap, allocator)} +builder_make_len_cap :: proc(len, cap: int, allocator := context.allocator) -> (res: Builder, err: mem.Allocator_Error) #optional_allocator_error { + return Builder{buf=make([dynamic]byte, len, cap, allocator) or_return }, nil } // overload simple `builder_make_*` with or without len / cap parameters builder_make :: proc{ @@ -84,11 +88,12 @@ Inputs: - allocator: (default is context.allocator) Returns: -initialized ^Builder +- res: A pointer to the initialized Builder +- err: An optional allocator error if one occured, `nil` otherwise */ -builder_init_none :: proc(b: ^Builder, allocator := context.allocator) -> ^Builder { - b.buf = make([dynamic]byte, allocator) - return b +builder_init_none :: proc(b: ^Builder, allocator := context.allocator) -> (res: ^Builder, err: mem.Allocator_Error) #optional_allocator_error { + b.buf = make([dynamic]byte, allocator) or_return + return b, nil } /* Initializes a Builder with a specified length and cap, which is max(len,16) @@ -102,11 +107,12 @@ Inputs: - allocator: (default is context.allocator) Returns: -Initialized ^Builder +- res: A pointer to the initialized Builder +- err: An optional allocator error if one occured, `nil` otherwise */ -builder_init_len :: proc(b: ^Builder, len: int, allocator := context.allocator) -> ^Builder { - b.buf = make([dynamic]byte, len, allocator) - return b +builder_init_len :: proc(b: ^Builder, len: int, allocator := context.allocator) -> (res: ^Builder, err: mem.Allocator_Error) #optional_allocator_error { + b.buf = make([dynamic]byte, len, allocator) or_return + return b, nil } /* Initializes a Builder with a specified length and cap @@ -119,11 +125,12 @@ Inputs: - allocator: (default is context.allocator) Returns: -A pointer to the initialized Builder +- res: A pointer to the initialized Builder +- err: An optional allocator error if one occured, `nil` otherwise */ -builder_init_len_cap :: proc(b: ^Builder, len, cap: int, allocator := context.allocator) -> ^Builder { - b.buf = make([dynamic]byte, len, cap, allocator) - return b +builder_init_len_cap :: proc(b: ^Builder, len, cap: int, allocator := context.allocator) -> (res: ^Builder, err: mem.Allocator_Error) #optional_allocator_error { + b.buf = make([dynamic]byte, len, cap, allocator) or_return + return b, nil } // Overload simple `builder_init_*` with or without len / ap parameters builder_init :: proc{ @@ -169,9 +176,9 @@ Inputs: - b: A pointer to the Builder Returns: -An io.Stream +- res: the io.Stream */ -to_stream :: proc(b: ^Builder) -> io.Stream { +to_stream :: proc(b: ^Builder) -> (res: io.Stream) { return io.Stream{stream_vtable=_builder_stream_vtable, stream_data=b} } /* @@ -180,10 +187,10 @@ Returns an io.Writer from a Builder Inputs: - b: A pointer to the Builder -Returns: -An io.Writer +Returns: +- res: The io.Writer */ -to_writer :: proc(b: ^Builder) -> io.Writer { +to_writer :: proc(b: ^Builder) -> (res: io.Writer) { return io.to_writer(to_stream(b)) } /* @@ -224,7 +231,7 @@ Inputs: - backing: A slice of bytes to be used as the backing buffer Returns: -A new Builder +- res: The new Builder Example: @@ -245,17 +252,8 @@ Output: ab */ -builder_from_bytes :: proc(backing: []byte) -> Builder { - s := transmute(runtime.Raw_Slice)backing - d := runtime.Raw_Dynamic_Array{ - data = s.data, - len = 0, - cap = s.len, - allocator = runtime.nil_allocator(), - } - return Builder{ - buf = transmute([dynamic]byte)d, - } +builder_from_bytes :: proc(backing: []byte) -> (res: Builder) { + return Builder{ buf = mem.buffer_from_slice(backing) } } // Alias to `builder_from_bytes` builder_from_slice :: builder_from_bytes @@ -266,9 +264,9 @@ Inputs: - b: A Builder Returns: -The contents of the Builder's buffer, as a string +- res: The contents of the Builder's buffer, as a string */ -to_string :: proc(b: Builder) -> string { +to_string :: proc(b: Builder) -> (res: string) { return string(b.buf[:]) } /* @@ -278,9 +276,9 @@ Inputs: - b: A Builder Returns: -The length of the Builder's buffer +- res: The length of the Builder's buffer */ -builder_len :: proc(b: Builder) -> int { +builder_len :: proc(b: Builder) -> (res: int) { return len(b.buf) } /* @@ -290,9 +288,9 @@ Inputs: - b: A Builder Returns: -The capacity of the Builder's buffer +- res: The capacity of the Builder's buffer */ -builder_cap :: proc(b: Builder) -> int { +builder_cap :: proc(b: Builder) -> (res: int) { return cap(b.buf) } /* @@ -302,9 +300,9 @@ Inputs: - b: A Builder Returns: -The available space left in the Builder's buffer +- res: The available space left in the Builder's buffer */ -builder_space :: proc(b: Builder) -> int { +builder_space :: proc(b: Builder) -> (res: int) { return cap(b.buf) - len(b.buf) } /* @@ -315,7 +313,7 @@ Inputs: - x: The byte to be appended Returns: -The number of bytes appended +- n: The number of bytes appended NOTE: The backing dynamic array may be fixed in capacity or fail to resize, `n` states the number actually written. @@ -364,7 +362,7 @@ Example: NOTE: The backing dynamic array may be fixed in capacity or fail to resize, `n` states the number actually written. Returns: -The number of bytes appended +- n: The number of bytes appended */ write_bytes :: proc(b: ^Builder, x: []byte) -> (n: int) { n0 := len(b.buf) @@ -380,7 +378,8 @@ Inputs: - r: The rune to be appended Returns: -The number of bytes written and an io.Error (if any) +- res: The number of bytes written +- err: An io.Error if one occured, `nil` otherwise NOTE: The backing dynamic array may be fixed in capacity or fail to resize, `n` states the number actually written. @@ -401,7 +400,7 @@ Output: äb */ -write_rune :: proc(b: ^Builder, r: rune) -> (int, io.Error) { +write_rune :: proc(b: ^Builder, r: rune) -> (res: int, err: io.Error) { return io.write_rune(to_writer(b), r) } /* @@ -412,7 +411,7 @@ Inputs: - r: The rune to be appended Returns: -The number of bytes written +- n: The number of bytes written NOTE: The backing dynamic array may be fixed in capacity or fail to resize, `n` states the number actually written. @@ -445,7 +444,7 @@ Inputs: - s: The string to be appended Returns: -The number of bytes written +- n: The number of bytes written NOTE: The backing dynamic array may be fixed in capacity or fail to resize, `n` states the number actually written. @@ -479,7 +478,7 @@ Inputs: - b: A pointer to the Builder Returns: -The last byte in the Builder or 0 if empty +- r: The last byte in the Builder or 0 if empty */ pop_byte :: proc(b: ^Builder) -> (r: byte) { if len(b.buf) == 0 { @@ -498,7 +497,8 @@ Inputs: - b: A pointer to the Builder Returns: -The popped rune and its rune width or (0, 0) if empty +- r: The popped rune +- width: The rune width or 0 if the builder was empty */ pop_rune :: proc(b: ^Builder) -> (r: rune, width: int) { if len(b.buf) == 0 { @@ -519,7 +519,7 @@ Inputs: - quote: The optional quote character (default is double quotes) Returns: -The number of bytes written +- n: The number of bytes written NOTE: The backing dynamic array may be fixed in capacity or fail to resize, `n` states the number actually written. @@ -554,7 +554,7 @@ Inputs: - write_quote: Optional boolean flag to wrap in single-quotes (') (default is true) Returns: -The number of bytes written +- n: The number of bytes written NOTE: The backing dynamic array may be fixed in capacity or fail to resize, `n` states the number actually written. @@ -598,7 +598,7 @@ Inputs: NOTE: The backing dynamic array may be fixed in capacity or fail to resize, `n` states the number actually written. Returns: -The number of bytes written +- n: The number of bytes written */ write_escaped_rune :: proc(b: ^Builder, r: rune, quote: byte, html_safe := false) -> (n: int) { n, _ = io.write_escaped_rune(to_writer(b), r, quote, html_safe) @@ -618,7 +618,7 @@ Inputs: NOTE: The backing dynamic array may be fixed in capacity or fail to resize, `n` states the number actually written. Returns: -The number of characters written +- n: The number of characters written */ write_float :: proc(b: ^Builder, f: f64, fmt: byte, prec, bit_size: int, always_signed := false) -> (n: int) { buf: [384]byte @@ -642,7 +642,7 @@ Inputs: NOTE: The backing dynamic array may be fixed in capacity or fail to resize, `n` states the number actually written. Returns: -The number of characters written +- n: The number of characters written */ write_f16 :: proc(b: ^Builder, f: f16, fmt: byte, always_signed := false) -> (n: int) { buf: [384]byte @@ -662,7 +662,7 @@ Inputs: - always_signed: Optional boolean flag to always include the sign Returns: -The number of characters written +- n: The number of characters written NOTE: The backing dynamic array may be fixed in capacity or fail to resize, `n` states the number actually written. @@ -704,7 +704,7 @@ Inputs: NOTE: The backing dynamic array may be fixed in capacity or fail to resize, `n` states the number actually written. Returns: -The number of characters written +- n: The number of characters written */ write_f64 :: proc(b: ^Builder, f: f64, fmt: byte, always_signed := false) -> (n: int) { buf: [384]byte @@ -725,7 +725,7 @@ Inputs: NOTE: The backing dynamic array may be fixed in capacity or fail to resize, `n` states the number actually written. Returns: -The number of characters written +- n: The number of characters written */ write_u64 :: proc(b: ^Builder, i: u64, base: int = 10) -> (n: int) { buf: [32]byte @@ -743,7 +743,7 @@ Inputs: NOTE: The backing dynamic array may be fixed in capacity or fail to resize, `n` states the number actually written. Returns: -The number of characters written +- n: The number of characters written */ write_i64 :: proc(b: ^Builder, i: i64, base: int = 10) -> (n: int) { buf: [32]byte @@ -761,7 +761,7 @@ Inputs: NOTE: The backing dynamic array may be fixed in capacity or fail to resize, `n` states the number actually written. Returns: -The number of characters written +- n: The number of characters written */ write_uint :: proc(b: ^Builder, i: uint, base: int = 10) -> (n: int) { return write_u64(b, u64(i), base) @@ -777,7 +777,7 @@ Inputs: NOTE: The backing dynamic array may be fixed in capacity or fail to resize, `n` states the number actually written. Returns: -The number of characters written +- n: The number of characters written */ write_int :: proc(b: ^Builder, i: int, base: int = 10) -> (n: int) { return write_i64(b, i64(i), base) diff --git a/core/strings/conversion.odin b/core/strings/conversion.odin index 0160c8a60..2e82fff58 100644 --- a/core/strings/conversion.odin +++ b/core/strings/conversion.odin @@ -1,6 +1,7 @@ package strings import "core:io" +import "core:mem" import "core:unicode" import "core:unicode/utf8" @@ -17,15 +18,16 @@ Inputs: WARNING: Allocation does not occur when len(s) == 0 Returns: -A valid UTF-8 string with invalid sequences replaced by `replacement`. +- res: A valid UTF-8 string with invalid sequences replaced by `replacement`. +- err: An optional allocator error if one occured, `nil` otherwise */ -to_valid_utf8 :: proc(s, replacement: string, allocator := context.allocator) -> string { +to_valid_utf8 :: proc(s, replacement: string, allocator := context.allocator) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { if len(s) == 0 { - return "" + return "", nil } b: Builder - builder_init(&b, 0, 0, allocator) + builder_init(&b, 0, 0, allocator) or_return s := s for c, i in s { @@ -70,7 +72,7 @@ to_valid_utf8 :: proc(s, replacement: string, allocator := context.allocator) -> write_string(&b, s[i:][:w]) i += w } - return to_string(b) + return to_string(b), nil } /* Converts the input string `s` to all lowercase characters. @@ -82,7 +84,8 @@ Inputs: - allocator: (default: context.allocator). Returns: -A new string with all characters converted to lowercase. +- res: The new string with all characters converted to lowercase +- err: An optional allocator error if one occured, `nil` otherwise Example: @@ -98,13 +101,13 @@ Output: test */ -to_lower :: proc(s: string, allocator := context.allocator) -> string { +to_lower :: proc(s: string, allocator := context.allocator) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { b: Builder - builder_init(&b, 0, len(s), allocator) + builder_init(&b, 0, len(s), allocator) or_return for r in s { write_rune(&b, unicode.to_lower(r)) } - return to_string(b) + return to_string(b), nil } /* Converts the input string `s` to all uppercase characters. @@ -116,7 +119,8 @@ Inputs: - allocator: (default: context.allocator). Returns: -A new string with all characters converted to uppercase. +- res: The new string with all characters converted to uppercase +- err: An optional allocator error if one occured, `nil` otherwise Example: @@ -132,13 +136,13 @@ Output: TEST */ -to_upper :: proc(s: string, allocator := context.allocator) -> string { +to_upper :: proc(s: string, allocator := context.allocator) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { b: Builder - builder_init(&b, 0, len(s), allocator) + builder_init(&b, 0, len(s), allocator) or_return for r in s { write_rune(&b, unicode.to_upper(r)) } - return to_string(b) + return to_string(b), nil } /* Checks if the rune `r` is a delimiter (' ', '-', or '_'). @@ -147,9 +151,9 @@ Inputs: - r: Rune to check for delimiter status. Returns: -True if `r` is a delimiter, false otherwise. +- res: True if `r` is a delimiter, false otherwise. */ -is_delimiter :: proc(r: rune) -> bool { +is_delimiter :: proc(r: rune) -> (res: bool) { return r == '-' || r == '_' || is_space(r) } /* @@ -159,9 +163,9 @@ Inputs: - r: Rune to check for separator status. Returns: -True if `r` is a non-alpha or `unicode.is_space` rune. +- res: True if `r` is a non-alpha or `unicode.is_space` rune. */ -is_separator :: proc(r: rune) -> bool { +is_separator :: proc(r: rune) -> (res: bool) { if r <= 0x7f { switch r { case '0' ..= '9': @@ -253,13 +257,14 @@ Inputs: - allocator: (default: context.allocator). Returns: -A "lowerCamelCase" formatted string. +- res: The converted string +- err: An optional allocator error if one occured, `nil` otherwise */ -to_camel_case :: proc(s: string, allocator := context.allocator) -> string { +to_camel_case :: proc(s: string, allocator := context.allocator) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { s := s s = trim_space(s) b: Builder - builder_init(&b, 0, len(s), allocator) + builder_init(&b, 0, len(s), allocator) or_return w := to_writer(&b) string_case_iterator(w, s, proc(w: io.Writer, prev, curr, next: rune) { @@ -274,7 +279,7 @@ to_camel_case :: proc(s: string, allocator := context.allocator) -> string { } }) - return to_string(b) + return to_string(b), nil } // Alias to `to_pascal_case` to_upper_camel_case :: to_pascal_case @@ -288,13 +293,14 @@ Inputs: - allocator: (default: context.allocator). Returns: -A "PascalCase" formatted string. +- res: The converted string +- err: An optional allocator error if one occured, `nil` otherwise */ -to_pascal_case :: proc(s: string, allocator := context.allocator) -> string { +to_pascal_case :: proc(s: string, allocator := context.allocator) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { s := s s = trim_space(s) b: Builder - builder_init(&b, 0, len(s), allocator) + builder_init(&b, 0, len(s), allocator) or_return w := to_writer(&b) string_case_iterator(w, s, proc(w: io.Writer, prev, curr, next: rune) { @@ -309,7 +315,7 @@ to_pascal_case :: proc(s: string, allocator := context.allocator) -> string { } }) - return to_string(b) + return to_string(b), nil } /* Returns a string converted to a delimiter-separated case with configurable casing @@ -323,7 +329,8 @@ Inputs: - allocator: (default: context.allocator). Returns: -The converted string +- res: The converted string +- err: An optional allocator error if one occured, `nil` otherwise Example: @@ -348,11 +355,11 @@ to_delimiter_case :: proc( delimiter: rune, all_upper_case: bool, allocator := context.allocator, -) -> string { +) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { s := s s = trim_space(s) b: Builder - builder_init(&b, 0, len(s), allocator) + builder_init(&b, 0, len(s), allocator) or_return w := to_writer(&b) adjust_case := unicode.to_upper if all_upper_case else unicode.to_lower @@ -384,7 +391,7 @@ to_delimiter_case :: proc( io.write_rune(w, adjust_case(curr)) } - return to_string(b) + return to_string(b), nil } /* Converts a string to "snake_case" with all runes lowercased @@ -396,7 +403,8 @@ Inputs: - allocator: (default: context.allocator). Returns: -The converted string +- res: The converted string +- err: An optional allocator error if one occured, `nil` otherwise Example: @@ -414,7 +422,7 @@ Output: hello_world */ -to_snake_case :: proc(s: string, allocator := context.allocator) -> string { +to_snake_case :: proc(s: string, allocator := context.allocator) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { return to_delimiter_case(s, '_', false, allocator) } // Alias for `to_upper_snake_case` @@ -429,7 +437,8 @@ Inputs: - allocator: (default: context.allocator). Returns: -The converted string +- res: The converted string +- err: An optional allocator error if one occured, `nil` otherwise Example: @@ -445,7 +454,7 @@ Output: HELLO_WORLD */ -to_upper_snake_case :: proc(s: string, allocator := context.allocator) -> string { +to_upper_snake_case :: proc(s: string, allocator := context.allocator) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { return to_delimiter_case(s, '_', true, allocator) } /* @@ -458,7 +467,8 @@ Inputs: - allocator: (default: context.allocator). Returns: -The converted string +- res: The converted string +- err: An optional allocator error if one occured, `nil` otherwise Example: @@ -474,7 +484,7 @@ Output: hello-world */ -to_kebab_case :: proc(s: string, allocator := context.allocator) -> string { +to_kebab_case :: proc(s: string, allocator := context.allocator) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { return to_delimiter_case(s, '-', false, allocator) } /* @@ -487,7 +497,8 @@ Inputs: - allocator: (default: context.allocator). Returns: -The converted string +- res: The converted string +- err: An optional allocator error if one occured, `nil` otherwise Example: @@ -503,7 +514,7 @@ Output: HELLO-WORLD */ -to_upper_kebab_case :: proc(s: string, allocator := context.allocator) -> string { +to_upper_kebab_case :: proc(s: string, allocator := context.allocator) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { return to_delimiter_case(s, '-', true, allocator) } /* @@ -516,7 +527,8 @@ Inputs: - allocator: (default: context.allocator). Returns: -The converted string +- res: The converted string +- err: An optional allocator error if one occured, `nil` otherwise Example: @@ -532,11 +544,11 @@ Output: Hello_World */ -to_ada_case :: proc(s: string, allocator := context.allocator) -> string { +to_ada_case :: proc(s: string, allocator := context.allocator) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { s := s s = trim_space(s) b: Builder - builder_init(&b, 0, len(s), allocator) + builder_init(&b, 0, len(s), allocator) or_return w := to_writer(&b) string_case_iterator(w, s, proc(w: io.Writer, prev, curr, next: rune) { @@ -552,5 +564,5 @@ to_ada_case :: proc(s: string, allocator := context.allocator) -> string { } }) - return to_string(b) + return to_string(b), nil } diff --git a/core/strings/intern.odin b/core/strings/intern.odin index 463abeb1e..73f91d4d4 100644 --- a/core/strings/intern.odin +++ b/core/strings/intern.odin @@ -1,6 +1,7 @@ package strings import "core:runtime" +import "core:mem" // Custom string entry struct Intern_Entry :: struct { @@ -29,10 +30,14 @@ Inputs: - m: A pointer to the Intern struct to be initialized - allocator: The allocator for the Intern_Entry strings (Default: context.allocator) - map_allocator: The allocator for the map of entries (Default: context.allocator) + +Returns: +- err: An allocator error if one occured, `nil` otherwise */ -intern_init :: proc(m: ^Intern, allocator := context.allocator, map_allocator := context.allocator) { +intern_init :: proc(m: ^Intern, allocator := context.allocator, map_allocator := context.allocator) -> (err: mem.Allocator_Error) { m.allocator = allocator - m.entries = make(map[string]^Intern_Entry, 16, map_allocator) + m.entries = make(map[string]^Intern_Entry, 16, map_allocator) or_return + return nil } /* Frees the map and all its content allocated using the `.allocator`. @@ -58,7 +63,8 @@ Inputs: NOTE: The returned string lives as long as the map entry lives. Returns: -The interned string and an allocator error if any +- str: The interned string +- err: An allocator error if one occured, `nil` otherwise */ intern_get :: proc(m: ^Intern, text: string) -> (str: string, err: runtime.Allocator_Error) { entry := _intern_get_entry(m, text) or_return @@ -76,7 +82,8 @@ Inputs: NOTE: The returned cstring lives as long as the map entry lives Returns: -The interned cstring and an allocator error if any +- str: The interned cstring +- err: An allocator error if one occured, `nil` otherwise */ intern_get_cstring :: proc(m: ^Intern, text: string) -> (str: cstring, err: runtime.Allocator_Error) { entry := _intern_get_entry(m, text) or_return @@ -93,7 +100,8 @@ Inputs: - text: The string to be looked up or interned Returns: -The new or existing interned entry and an allocator error if any +- new_entry: The interned cstring +- err: An allocator error if one occured, `nil` otherwise */ _intern_get_entry :: proc(m: ^Intern, text: string) -> (new_entry: ^Intern_Entry, err: runtime.Allocator_Error) #no_bounds_check { if prev, ok := m.entries[text]; ok { diff --git a/core/strings/reader.odin b/core/strings/reader.odin index 715e57ada..081e59b4b 100644 --- a/core/strings/reader.odin +++ b/core/strings/reader.odin @@ -32,7 +32,7 @@ Inputs: - r: A pointer to a Reader struct Returns: -An io.Stream for the given Reader +- s: An io.Stream for the given Reader */ reader_to_stream :: proc(r: ^Reader) -> (s: io.Stream) { s.stream_data = r @@ -47,9 +47,9 @@ Inputs: - s: The input string to be read Returns: -An io.Reader for the given string +- res: An io.Reader for the given string */ -to_reader :: proc(r: ^Reader, s: string) -> io.Reader { +to_reader :: proc(r: ^Reader, s: string) -> (res: io.Reader) { reader_init(r, s) rr, _ := io.to_reader(reader_to_stream(r)) return rr @@ -62,9 +62,9 @@ Inputs: - s: The input string to be read Returns: -An `io.Reader_At` for the given string +- res: An `io.Reader_At` for the given string */ -to_reader_at :: proc(r: ^Reader, s: string) -> io.Reader_At { +to_reader_at :: proc(r: ^Reader, s: string) -> (res: io.Reader_At) { reader_init(r, s) rr, _ := io.to_reader_at(reader_to_stream(r)) return rr @@ -76,9 +76,9 @@ Inputs: - r: A pointer to a Reader struct Returns: -The remaining length of the Reader +- res: The remaining length of the Reader */ -reader_length :: proc(r: ^Reader) -> int { +reader_length :: proc(r: ^Reader) -> (res: int) { if r.i >= i64(len(r.s)) { return 0 } @@ -91,9 +91,9 @@ Inputs: - r: A pointer to a Reader struct Returns: -The length of the string stored in the Reader +- res: The length of the string stored in the Reader */ -reader_size :: proc(r: ^Reader) -> i64 { +reader_size :: proc(r: ^Reader) -> (res: i64) { return i64(len(r.s)) } /* @@ -151,7 +151,7 @@ Returns: - The byte read from the Reader - err: An `io.Error` if an error occurs while reading, including `.EOF`, otherwise `nil` denotes success. */ -reader_read_byte :: proc(r: ^Reader) -> (byte, io.Error) { +reader_read_byte :: proc(r: ^Reader) -> (res: byte, err: io.Error) { r.prev_rune = -1 if r.i >= i64(len(r.s)) { return 0, .EOF @@ -167,9 +167,9 @@ Inputs: - r: A pointer to a Reader struct Returns: -An `io.Error` if `r.i <= 0` (`.Invalid_Unread`), otherwise `nil` denotes success. +- err: An `io.Error` if `r.i <= 0` (`.Invalid_Unread`), otherwise `nil` denotes success. */ -reader_unread_byte :: proc(r: ^Reader) -> io.Error { +reader_unread_byte :: proc(r: ^Reader) -> (err: io.Error) { if r.i <= 0 { return .Invalid_Unread } @@ -211,9 +211,9 @@ Inputs: WARNING: May only be used once and after a valid `read_rune` call Returns: -An `io.Error` if an error occurs while unreading (`.Invalid_Unread`), else `nil` denotes success. +- err: An `io.Error` if an error occurs while unreading (`.Invalid_Unread`), else `nil` denotes success. */ -reader_unread_rune :: proc(r: ^Reader) -> io.Error { +reader_unread_rune :: proc(r: ^Reader) -> (err: io.Error) { if r.i <= 0 { return .Invalid_Unread } @@ -236,7 +236,7 @@ Returns: - The absolute offset after seeking - err: An `io.Error` if an error occurs while seeking (`.Invalid_Whence`, `.Invalid_Offset`) */ -reader_seek :: proc(r: ^Reader, offset: i64, whence: io.Seek_From) -> (i64, io.Error) { +reader_seek :: proc(r: ^Reader, offset: i64, whence: io.Seek_From) -> (res: i64, err: io.Error) { r.prev_rune = -1 abs: i64 switch whence { diff --git a/core/strings/strings.odin b/core/strings/strings.odin index 3c55374b7..39cbe3654 100644 --- a/core/strings/strings.odin +++ b/core/strings/strings.odin @@ -17,12 +17,13 @@ Inputs: - loc: The caller location for debugging purposes (default: #caller_location) Returns: -A cloned string +- res: The cloned string +- err: An optional allocator error if one occured, `nil` otherwise */ -clone :: proc(s: string, allocator := context.allocator, loc := #caller_location) -> string { - c := make([]byte, len(s), allocator, loc) +clone :: proc(s: string, allocator := context.allocator, loc := #caller_location) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { + c := make([]byte, len(s), allocator, loc) or_return copy(c, s) - return string(c[:len(s)]) + return string(c[:len(s)]), nil } /* Clones a string safely (returns early with an allocation error on failure) @@ -35,13 +36,12 @@ Inputs: - loc: The caller location for debugging purposes (default: #caller_location) Returns: -- str: A cloned string -- err: A mem.Allocator_Error if an error occurs during allocation +- res: The cloned string +- err: An allocator error if one occured, `nil` otherwise */ -clone_safe :: proc(s: string, allocator := context.allocator, loc := #caller_location) -> (str: string, err: mem.Allocator_Error) { - c := make([]byte, len(s), allocator, loc) or_return - copy(c, s) - return string(c[:len(s)]), nil +@(deprecated="Prefer clone. It now returns an optional allocator error") +clone_safe :: proc(s: string, allocator := context.allocator, loc := #caller_location) -> (res: string, err: mem.Allocator_Error) { + return clone(s, allocator, loc) } /* Clones a string and appends a null-byte to make it a cstring @@ -54,13 +54,14 @@ Inputs: - loc: The caller location for debugging purposes (default: #caller_location) Returns: -A cloned cstring with an appended null-byte +- res: A cloned cstring with an appended null-byte +- err: An optional allocator error if one occured, `nil` otherwise */ -clone_to_cstring :: proc(s: string, allocator := context.allocator, loc := #caller_location) -> cstring { - c := make([]byte, len(s)+1, allocator, loc) +clone_to_cstring :: proc(s: string, allocator := context.allocator, loc := #caller_location) -> (res: cstring, err: mem.Allocator_Error) #optional_allocator_error { + c := make([]byte, len(s)+1, allocator, loc) or_return copy(c, s) c[len(s)] = 0 - return cstring(&c[0]) + return cstring(&c[0]), nil } /* Transmutes a raw pointer into a string. Non-allocating. @@ -72,9 +73,9 @@ Inputs: NOTE: The created string is only valid as long as the pointer and length are valid. Returns: -A string created from the byte pointer and length +- res: A string created from the byte pointer and length */ -string_from_ptr :: proc(ptr: ^byte, len: int) -> string { +string_from_ptr :: proc(ptr: ^byte, len: int) -> (res: string) { return transmute(string)mem.Raw_String{ptr, len} } /* @@ -88,9 +89,9 @@ Inputs: - len: The length of the byte sequence Returns: -A string created from the null-terminated byte pointer and length +- res: A string created from the null-terminated byte pointer and length */ -string_from_null_terminated_ptr :: proc(ptr: ^byte, len: int) -> string { +string_from_null_terminated_ptr :: proc(ptr: ^byte, len: int) -> (res: string) { s := transmute(string)mem.Raw_String{ptr, len} s = truncate_to_byte(s, 0) return s @@ -102,9 +103,10 @@ Inputs: - str: The input string Returns: -A pointer to the start of the string's bytes +- res: A pointer to the start of the string's bytes */ -ptr_from_string :: proc(str: string) -> ^byte { +@(deprecated="Prefer the builtin raw_data.") +ptr_from_string :: proc(str: string) -> (res: ^byte) { d := transmute(mem.Raw_String)str return d.data } @@ -117,9 +119,9 @@ Inputs: WARNING: This is unsafe because the original string may not contain a null-byte. Returns: -The converted cstring +- res: The converted cstring */ -unsafe_string_to_cstring :: proc(str: string) -> cstring { +unsafe_string_to_cstring :: proc(str: string) -> (res: cstring) { d := transmute(mem.Raw_String)str return cstring(d.data) } @@ -133,9 +135,9 @@ Inputs: NOTE: Failure to find the byte results in returning the entire string. Returns: -The truncated string +- res: The truncated string */ -truncate_to_byte :: proc(str: string, b: byte) -> string { +truncate_to_byte :: proc(str: string, b: byte) -> (res: string) { n := index_byte(str, b) if n < 0 { n = len(str) @@ -150,9 +152,9 @@ Inputs: - r: The rune to truncate the string at Returns: -The truncated string +- res: The truncated string */ -truncate_to_rune :: proc(str: string, r: rune) -> string { +truncate_to_rune :: proc(str: string, r: rune) -> (res: string) { n := index_rune(str, r) if n < 0 { n = len(str) @@ -170,13 +172,14 @@ Inputs: - loc: The caller location for debugging purposes (default: `#caller_location`) Returns: -A cloned string from the byte array with a null-byte +- res: The cloned string from the byte array with a null-byte +- err: An optional allocator error if one occured, `nil` otherwise */ -clone_from_bytes :: proc(s: []byte, allocator := context.allocator, loc := #caller_location) -> string { - c := make([]byte, len(s)+1, allocator, loc) +clone_from_bytes :: proc(s: []byte, allocator := context.allocator, loc := #caller_location) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { + c := make([]byte, len(s)+1, allocator, loc) or_return copy(c, s) c[len(s)] = 0 - return string(c[:len(s)]) + return string(c[:len(s)]), nil } /* Clones a cstring `s` as a string @@ -189,9 +192,10 @@ Inputs: - loc: The caller location for debugging purposes (default: `#caller_location`) Returns: -A cloned string from the cstring +- res: The cloned string from the cstring +- err: An optional allocator error if one occured, `nil` otherwise */ -clone_from_cstring :: proc(s: cstring, allocator := context.allocator, loc := #caller_location) -> string { +clone_from_cstring :: proc(s: cstring, allocator := context.allocator, loc := #caller_location) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { return clone(string(s), allocator, loc) } /* @@ -208,13 +212,14 @@ Inputs: NOTE: Same as `string_from_ptr`, but perform an additional `clone` operation Returns: -A cloned string from the byte pointer and length +- res: The cloned string from the byte pointer and length +- err: An optional allocator error if one occured, `nil` otherwise */ -clone_from_ptr :: proc(ptr: ^byte, len: int, allocator := context.allocator, loc := #caller_location) -> string { +clone_from_ptr :: proc(ptr: ^byte, len: int, allocator := context.allocator, loc := #caller_location) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { s := string_from_ptr(ptr, len) return clone(s, allocator, loc) } -// Overloaded procedure to clone from a string, `[]byte`, `cstring` or a `^byte` + length +// Overloaded procedure to clone from a string, `[]byte`, `cstring` or a `^byte` + length clone_from :: proc{ clone, clone_from_bytes, @@ -235,9 +240,10 @@ Inputs: NOTE: Truncates at the first null-byte encountered or the byte length. Returns: -A cloned string from the null-terminated cstring and byte length +- res: The cloned string from the null-terminated cstring and byte length +- err: An optional allocator error if one occured, `nil` otherwise */ -clone_from_cstring_bounded :: proc(ptr: cstring, len: int, allocator := context.allocator, loc := #caller_location) -> string { +clone_from_cstring_bounded :: proc(ptr: cstring, len: int, allocator := context.allocator, loc := #caller_location) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { s := string_from_ptr((^u8)(ptr), len) s = truncate_to_byte(s, 0) return clone(s, allocator, loc) @@ -251,9 +257,9 @@ Inputs: - rhs: Second string for comparison Returns: --1 if `lhs` comes first, 1 if `rhs` comes first, or 0 if they are equal +- result: `-1` if `lhs` comes first, `1` if `rhs` comes first, or `0` if they are equal */ -compare :: proc(lhs, rhs: string) -> int { +compare :: proc(lhs, rhs: string) -> (result: int) { return mem.compare(transmute([]byte)lhs, transmute([]byte)rhs) } /* @@ -264,15 +270,15 @@ Inputs: - r: The rune to search for Returns: -The byte offset of the rune `r` in the string `s`, or -1 if not found +- result: `true` if the rune `r` in the string `s`, `false` otherwise */ -contains_rune :: proc(s: string, r: rune) -> int { - for c, offset in s { +contains_rune :: proc(s: string, r: rune) -> (result: bool) { + for c in s { if c == r { - return offset + return true } } - return -1 + return false } /* Returns true when the string `substr` is contained inside the string `s` @@ -282,7 +288,7 @@ Inputs: - substr: The substring to search for Returns: -`true` if `substr` is contained inside the string `s`, `false` otherwise +- res: `true` if `substr` is contained inside the string `s`, `false` otherwise Example: @@ -302,7 +308,7 @@ Output: false */ -contains :: proc(s, substr: string) -> bool { +contains :: proc(s, substr: string) -> (res: bool) { return index(s, substr) >= 0 } /* @@ -313,7 +319,7 @@ Inputs: - chars: The characters to search for Returns: -`true` if the string `s` contains any of the characters in `chars`, `false` otherwise +- res: `true` if the string `s` contains any of the characters in `chars`, `false` otherwise Example: @@ -335,7 +341,7 @@ Output: false */ -contains_any :: proc(s, chars: string) -> bool { +contains_any :: proc(s, chars: string) -> (res: bool) { return index_any(s, chars) >= 0 } /* @@ -345,7 +351,7 @@ Inputs: - s: The input string Returns: -The UTF-8 rune count of the string `s` +- res: The UTF-8 rune count of the string `s` Example: @@ -363,7 +369,7 @@ Output: 5 */ -rune_count :: proc(s: string) -> int { +rune_count :: proc(s: string) -> (res: int) { return utf8.rune_count_in_string(s) } /* @@ -375,7 +381,7 @@ Inputs: - v: The second string for comparison Returns: -`true` if the strings `u` and `v` are the same alpha characters (ignoring case) +- res: `true` if the strings `u` and `v` are the same alpha characters (ignoring case) Example: @@ -397,7 +403,7 @@ Output: false */ -equal_fold :: proc(u, v: string) -> bool { +equal_fold :: proc(u, v: string) -> (res: bool) { s, t := u, v loop: for s != "" && t != "" { sr, tr: rune @@ -447,7 +453,7 @@ Inputs: - b: The second input string Returns: -The prefix length common between strings `a` and `b` +- n: The prefix length common between strings `a` and `b` Example: @@ -500,7 +506,7 @@ Inputs: - prefix: The prefix to look for Returns: -`true` if the string `s` starts with the `prefix`, otherwise `false` +- result: `true` if the string `s` starts with the `prefix`, otherwise `false` Example: @@ -522,7 +528,7 @@ Output: false */ -has_prefix :: proc(s, prefix: string) -> bool { +has_prefix :: proc(s, prefix: string) -> (result: bool) { return len(s) >= len(prefix) && s[0:len(prefix)] == prefix } /* @@ -533,7 +539,7 @@ Inputs: - suffix: The suffix to look for Returns: -`true` if the string `s` ends with the `suffix`, otherwise `false` +- result: `true` if the string `s` ends with the `suffix`, otherwise `false` Example: @@ -553,7 +559,7 @@ Output: true */ -has_suffix :: proc(s, suffix: string) -> bool { +has_suffix :: proc(s, suffix: string) -> (result: bool) { return len(s) >= len(suffix) && s[len(s)-len(suffix):] == suffix } /* @@ -567,7 +573,8 @@ Inputs: - allocator: (default is context.allocator) Returns: -A combined string from the slice of strings `a` separated with the `sep` string +- res: A combined string from the slice of strings `a` separated with the `sep` string +- err: An optional allocator error if one occured, `nil` otherwise Example: @@ -588,39 +595,7 @@ Output: a...b...c */ -join :: proc(a: []string, sep: string, allocator := context.allocator) -> string { - if len(a) == 0 { - return "" - } - - n := len(sep) * (len(a) - 1) - for s in a { - n += len(s) - } - - b := make([]byte, n, allocator) - i := copy(b, a[0]) - for s in a[1:] { - i += copy(b[i:], sep) - i += copy(b[i:], s) - } - return string(b) -} -/* -Joins a slice of strings `a` with a `sep` string, returns an error on allocation failure - -*Allocates Using Provided Allocator* - -Inputs: -- a: A slice of strings to join -- sep: The separator string -- allocator: (default is context.allocator) - -Returns: -- str: A combined string from the slice of strings `a` separated with the `sep` string -- err: An error if allocation failed, otherwise `nil` -*/ -join_safe :: proc(a: []string, sep: string, allocator := context.allocator) -> (str: string, err: mem.Allocator_Error) { +join :: proc(a: []string, sep: string, allocator := context.allocator) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { if len(a) == 0 { return "", nil } @@ -639,6 +614,24 @@ join_safe :: proc(a: []string, sep: string, allocator := context.allocator) -> ( return string(b), nil } /* +Joins a slice of strings `a` with a `sep` string, returns an error on allocation failure + +*Allocates Using Provided Allocator* + +Inputs: +- a: A slice of strings to join +- sep: The separator string +- allocator: (default is context.allocator) + +Returns: +- str: A combined string from the slice of strings `a` separated with the `sep` string +- err: An allocator error if one occured, `nil` otherwise +*/ +@(deprecated="Prefer join. It now returns an optional allocator error") +join_safe :: proc(a: []string, sep: string, allocator := context.allocator) -> (res: string, err: mem.Allocator_Error) { + return join(a, sep, allocator) +} +/* Returns a combined string from the slice of strings `a` without a separator *Allocates Using Provided Allocator* @@ -648,7 +641,8 @@ Inputs: - allocator: (default is context.allocator) Returns: -The concatenated string +- res: The concatenated string +- err: An optional allocator error if one occured, `nil` otherwise Example: @@ -665,35 +659,7 @@ Output: abc */ -concatenate :: proc(a: []string, allocator := context.allocator) -> string { - if len(a) == 0 { - return "" - } - - n := 0 - for s in a { - n += len(s) - } - b := make([]byte, n, allocator) - i := 0 - for s in a { - i += copy(b[i:], s) - } - return string(b) -} -/* -Returns a combined string from the slice of strings `a` without a separator, or an error if allocation fails - -*Allocates Using Provided Allocator* - -Inputs: -- a: A slice of strings to concatenate -- allocator: (default is context.allocator) - -Returns: -The concatenated string, and an error if allocation fails -*/ -concatenate_safe :: proc(a: []string, allocator := context.allocator) -> (res: string, err: mem.Allocator_Error) { +concatenate :: proc(a: []string, allocator := context.allocator) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { if len(a) == 0 { return "", nil } @@ -710,6 +676,22 @@ concatenate_safe :: proc(a: []string, allocator := context.allocator) -> (res: s return string(b), nil } /* +Returns a combined string from the slice of strings `a` without a separator, or an error if allocation fails + +*Allocates Using Provided Allocator* + +Inputs: +- a: A slice of strings to concatenate +- allocator: (default is context.allocator) + +Returns: +The concatenated string, and an error if allocation fails +*/ +@(deprecated="Prefer concatenate. It now returns an optional allocator error") +concatenate_safe :: proc(a: []string, allocator := context.allocator) -> (res: string, err: mem.Allocator_Error) { + return concatenate(a, allocator) +} +/* Returns a substring of the input string `s` with the specified rune offset and length *Allocates Using Provided Allocator* @@ -721,7 +703,8 @@ Inputs: - allocator: (default is context.allocator) Returns: -The substring +- res: The substring +- err: An optional allocator error if one occured, `nil` otherwise Example: @@ -741,7 +724,7 @@ Output: example */ -cut :: proc(s: string, rune_offset := int(0), rune_length := int(0), allocator := context.allocator) -> (res: string) { +cut :: proc(s: string, rune_offset := int(0), rune_length := int(0), allocator := context.allocator) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { s := s; rune_length := rune_length context.allocator = allocator @@ -757,7 +740,7 @@ cut :: proc(s: string, rune_offset := int(0), rune_length := int(0), allocator : // We're asking for a substring starting after the end of the input string. // That's just an empty string. if rune_offset >= rune_count { - return "" + return "", nil } // If we don't specify the length of the substring, use the remainder. @@ -769,7 +752,7 @@ cut :: proc(s: string, rune_offset := int(0), rune_length := int(0), allocator : // But we do know it's bounded by the number of runes * 4 bytes, // and can be no more than the size of the input string. bytes_needed := min(rune_length * 4, len(s)) - buf := make([]u8, bytes_needed) + buf := make([]u8, bytes_needed) or_return byte_offset := 0 for i := 0; i < rune_count; i += 1 { @@ -790,7 +773,7 @@ cut :: proc(s: string, rune_offset := int(0), rune_length := int(0), allocator : } s = s[w:] } - return string(buf[:byte_offset]) + return string(buf[:byte_offset]), nil } /* Splits the input string `s` into a slice of substrings separated by the specified `sep` string @@ -809,14 +792,15 @@ Inputs: NOTE: Allocation occurs for the array, the splits are all views of the original string. Returns: -A slice of substrings +- res: The slice of substrings +- err: An optional allocator error if one occured, `nil` otherwise */ @private -_split :: proc(s_, sep: string, sep_save, n_: int, allocator := context.allocator) -> []string { +_split :: proc(s_, sep: string, sep_save, n_: int, allocator := context.allocator) -> (res: []string, err: mem.Allocator_Error) { s, n := s_, n_ if n == 0 { - return nil + return nil, nil } if sep == "" { @@ -825,7 +809,7 @@ _split :: proc(s_, sep: string, sep_save, n_: int, allocator := context.allocato n = l } - res := make([dynamic]string, n, allocator) + res := make([]string, n, allocator) or_return for i := 0; i < n-1; i += 1 { _, w := utf8.decode_rune_in_string(s) res[i] = s[:w] @@ -834,14 +818,14 @@ _split :: proc(s_, sep: string, sep_save, n_: int, allocator := context.allocato if n > 0 { res[n-1] = s } - return res[:] + return res[:], nil } if n < 0 { n = count(s, sep) + 1 } - res := make([dynamic]string, n, allocator) + res = make([]string, n, allocator) or_return n -= 1 @@ -856,7 +840,7 @@ _split :: proc(s_, sep: string, sep_save, n_: int, allocator := context.allocato } res[i] = s - return res[:i+1] + return res[:i+1], nil } /* Splits a string into parts based on a separator. @@ -868,7 +852,9 @@ Inputs: - sep: The separator string used to split the input string. - allocator: (default is context.allocator). -Returns: A slice of strings, each representing a part of the split string. +Returns: +- res: The slice of strings, each representing a part of the split string. +- err: An optional allocator error if one occured, `nil` otherwise NOTE: Allocation occurs for the array, the splits are all views of the original string. @@ -888,7 +874,7 @@ Output: ["aaa", "bbb", "ccc", "ddd", "eee"] */ -split :: proc(s, sep: string, allocator := context.allocator) -> []string { +split :: proc(s, sep: string, allocator := context.allocator) -> (res: []string, err: mem.Allocator_Error) #optional_allocator_error { return _split(s, sep, 0, -1, allocator) } /* @@ -901,7 +887,9 @@ Inputs: - sep: The separator string used to split the input string. - allocator: (default is context.allocator) -Returns: A slice of strings, each representing a part of the split string. +Returns: +- res: The slice of strings, each representing a part of the split string. +- err: An optional allocator error if one occured, `nil` otherwise NOTE: Allocation occurs for the array, the splits are all views of the original string. @@ -921,7 +909,7 @@ Output: ["aaa", "bbb", "ccc.ddd.eee"] */ -split_n :: proc(s, sep: string, n: int, allocator := context.allocator) -> []string { +split_n :: proc(s, sep: string, n: int, allocator := context.allocator) -> (res: []string, err: mem.Allocator_Error) #optional_allocator_error { return _split(s, sep, 0, n, allocator) } /* @@ -935,7 +923,8 @@ Inputs: - allocator: (default is context.allocator). Returns: -A slice of strings, each representing a part of the split string after the separator. +- res: The slice of strings, each representing a part of the split string after the separator +- err: An optional allocator error if one occured, `nil` otherwise NOTE: Allocation occurs for the array, the splits are all views of the original string. @@ -955,7 +944,7 @@ Output: ["aaa.", "bbb.", "ccc.", "ddd.", "eee"] */ -split_after :: proc(s, sep: string, allocator := context.allocator) -> []string { +split_after :: proc(s, sep: string, allocator := context.allocator) -> (res: []string, err: mem.Allocator_Error) #optional_allocator_error { return _split(s, sep, len(sep), -1, allocator) } /* @@ -970,7 +959,8 @@ Inputs: - allocator: (default is context.allocator) Returns: -A slice of strings with `n` parts or fewer if there weren't +- res: The slice of strings with `n` parts or fewer if there weren't +- err: An optional allocator error if one occured, `nil` otherwise NOTE: Allocation occurs for the array, the splits are all views of the original string. @@ -990,7 +980,7 @@ Output: ["aaa.", "bbb.", "ccc.ddd.eee"] */ -split_after_n :: proc(s, sep: string, n: int, allocator := context.allocator) -> []string { +split_after_n :: proc(s, sep: string, n: int, allocator := context.allocator) -> (res: []string, err: mem.Allocator_Error) #optional_allocator_error { return _split(s, sep, len(sep), n, allocator) } /* @@ -1005,7 +995,8 @@ Inputs: - sep_save: Number of characters from the separator to include in the result. Returns: -A tuple containing the resulting substring and a boolean indicating success. +- res: The resulting substring +- ok: `true` if an iteration result was returned, `false` if the iterator has reached the end */ @private _split_iterator :: proc(s: ^string, sep: string, sep_save: int) -> (res: string, ok: bool) { @@ -1042,7 +1033,8 @@ Inputs: - sep: The byte separator to search for. Returns: -A tuple containing the resulting substring and a boolean indicating success. +- res: The resulting substring +- ok: `true` if an iteration result was returned, `false` if the iterator has reached the end Example: @@ -1081,14 +1073,14 @@ split_by_byte_iterator :: proc(s: ^string, sep: u8) -> (res: string, ok: bool) { } /* Splits the input string by the separator string in an iterator fashion. -Destructively consumes the original string until the end. Inputs: - s: Pointer to the input string, which is modified during the search. - sep: The separator string to search for. Returns: -A tuple containing the resulting substring and a boolean indicating success. +- res: The resulting substring +- ok: `true` if an iteration result was returned, `false` if the iterator has reached the end Example: @@ -1111,19 +1103,19 @@ Output: e */ -split_iterator :: proc(s: ^string, sep: string) -> (string, bool) { +split_iterator :: proc(s: ^string, sep: string) -> (res: string, ok: bool) { return _split_iterator(s, sep, 0) } /* Splits the input string after every separator string in an iterator fashion. -Destructively consumes the original string until the end. Inputs: - s: Pointer to the input string, which is modified during the search. - sep: The separator string to search for. Returns: -A tuple containing the resulting substring and a boolean indicating success. +- res: The resulting substring +- ok: `true` if an iteration result was returned, `false` if the iterator has reached the end Example: @@ -1146,7 +1138,7 @@ Output: e */ -split_after_iterator :: proc(s: ^string, sep: string) -> (string, bool) { +split_after_iterator :: proc(s: ^string, sep: string) -> (res: string, ok: bool) { return _split_iterator(s, sep, len(sep)) } /* @@ -1158,10 +1150,10 @@ Inputs: - s: The input string to trim. Returns: -The trimmed string as a slice of the original. +- res: The trimmed string as a slice of the original. */ @(private) -_trim_cr :: proc(s: string) -> string { +_trim_cr :: proc(s: string) -> (res: string) { n := len(s) if n > 0 { if s[n-1] == '\r' { @@ -1180,7 +1172,8 @@ Inputs: - allocator: (default is context.allocator) Returns: -A slice (allocated) of the split string (slices into original string) +- res: The slice (allocated) of the split string (slices into original string) +- err: An optional allocator error if one occured, `nil` otherwise Example: @@ -1198,13 +1191,13 @@ Output: ["a", "b", "c", "d", "e"] */ -split_lines :: proc(s: string, allocator := context.allocator) -> []string { +split_lines :: proc(s: string, allocator := context.allocator) -> (res: []string, err: mem.Allocator_Error) #optional_allocator_error { sep :: "\n" - lines := _split(s, sep, 0, -1, allocator) + lines := _split(s, sep, 0, -1, allocator) or_return for line in &lines { line = _trim_cr(line) } - return lines + return lines, nil } /* Splits the input string at every line break `\n` for `n` parts. @@ -1217,7 +1210,8 @@ Inputs: - allocator: (default is context.allocator) Returns: -A slice (allocated) of the split string (slices into original string) +- res: The slice (allocated) of the split string (slices into original string) +- err: An optional allocator error if one occured, `nil` otherwise NOTE: Allocation occurs for the array, the splits are all views of the original string. @@ -1237,13 +1231,13 @@ Output: ["a", "b", "c\nd\ne"] */ -split_lines_n :: proc(s: string, n: int, allocator := context.allocator) -> []string { +split_lines_n :: proc(s: string, n: int, allocator := context.allocator) -> (res: []string, err: mem.Allocator_Error) #optional_allocator_error { sep :: "\n" - lines := _split(s, sep, 0, n, allocator) + lines := _split(s, sep, 0, n, allocator) or_return for line in &lines { line = _trim_cr(line) } - return lines + return lines, nil } /* Splits the input string at every line break `\n` leaving the `\n` in the resulting strings. @@ -1255,7 +1249,8 @@ Inputs: - allocator: (default is context.allocator) Returns: -A slice (allocated) of the split string (slices into original string), with `\n` included. +- res: The slice (allocated) of the split string (slices into original string), with `\n` included +- err: An optional allocator error if one occured, `nil` otherwise NOTE: Allocation occurs for the array, the splits are all views of the original string. @@ -1275,13 +1270,13 @@ Output: ["a\n", "b\n", "c\n", "d\n", "e"] */ -split_lines_after :: proc(s: string, allocator := context.allocator) -> []string { +split_lines_after :: proc(s: string, allocator := context.allocator) -> (res: []string, err: mem.Allocator_Error) #optional_allocator_error { sep :: "\n" - lines := _split(s, sep, len(sep), -1, allocator) + lines := _split(s, sep, len(sep), -1, allocator) or_return for line in &lines { line = _trim_cr(line) } - return lines + return lines, nil } /* Splits the input string at every line break `\n` leaving the `\n` in the resulting strings. @@ -1295,7 +1290,8 @@ Inputs: - allocator: (default is context.allocator) Returns: -A slice (allocated) of the split string (slices into original string), with `\n` included. +- res: The slice (allocated) of the split string (slices into original string), with `\n` included +- err: An optional allocator error if one occured, `nil` otherwise NOTE: Allocation occurs for the array, the splits are all views of the original string. @@ -1315,13 +1311,13 @@ Output: ["a\n", "b\n", "c\nd\ne"] */ -split_lines_after_n :: proc(s: string, n: int, allocator := context.allocator) -> []string { +split_lines_after_n :: proc(s: string, n: int, allocator := context.allocator) -> (res: []string, err: mem.Allocator_Error) #optional_allocator_error { sep :: "\n" - lines := _split(s, sep, len(sep), n, allocator) + lines := _split(s, sep, len(sep), n, allocator) or_return for line in &lines { line = _trim_cr(line) } - return lines + return lines, nil } /* Splits the input string at every line break `\n`. @@ -1331,7 +1327,8 @@ Inputs: - s: Pointer to the input string, which is modified during the search. Returns: -A tuple containing the resulting substring and a boolean indicating success. +- line: The resulting substring +- ok: `true` if an iteration result was returned, `false` if the iterator has reached the end Example: @@ -1364,7 +1361,8 @@ Inputs: - s: Pointer to the input string, which is modified during the search. Returns: -A tuple containing the resulting substring with line breaks included and a boolean indicating success. +- line: The resulting substring with line breaks included +- ok: `true` if an iteration result was returned, `false` if the iterator has reached the end Example: @@ -1401,7 +1399,7 @@ Inputs: - c: The byte to search for. Returns: -The byte offset of the first occurrence of `c` in `s`, or -1 if not found. +- res: The byte offset of the first occurrence of `c` in `s`, or -1 if not found. Example: @@ -1423,7 +1421,7 @@ Output: -1 */ -index_byte :: proc(s: string, c: byte) -> int { +index_byte :: proc(s: string, c: byte) -> (res: int) { for i := 0; i < len(s); i += 1 { if s[i] == c { return i @@ -1439,7 +1437,7 @@ Inputs: - c: The byte to search for. Returns: -The byte offset of the last occurrence of `c` in `s`, or -1 if not found. +- res: The byte offset of the last occurrence of `c` in `s`, or -1 if not found. NOTE: Can't find UTF-8 based runes. @@ -1463,7 +1461,7 @@ Output: -1 */ -last_index_byte :: proc(s: string, c: byte) -> int { +last_index_byte :: proc(s: string, c: byte) -> (res: int) { for i := len(s)-1; i >= 0; i -= 1 { if s[i] == c { return i @@ -1480,7 +1478,7 @@ Inputs: - r: The rune to search for. Returns: -The byte offset of the first occurrence of `r` in `s`, or -1 if not found. +- res: The byte offset of the first occurrence of `r` in `s`, or -1 if not found. Example: @@ -1510,7 +1508,7 @@ Output: 7 */ -index_rune :: proc(s: string, r: rune) -> int { +index_rune :: proc(s: string, r: rune) -> (res: int) { switch { case u32(r) < utf8.RUNE_SELF: return index_byte(s, byte(r)) @@ -1540,7 +1538,7 @@ Inputs: - substr: The substring to search for. Returns: -The byte offset of the first occurrence of `substr` in `s`, or -1 if not found. +- res: The byte offset of the first occurrence of `substr` in `s`, or -1 if not found. Example: @@ -1562,7 +1560,7 @@ Output: -1 */ -index :: proc(s, substr: string) -> int { +index :: proc(s, substr: string) -> (res: int) { hash_str_rabin_karp :: proc(s: string) -> (hash: u32 = 0, pow: u32 = 1) { for i := 0; i < len(s); i += 1 { hash = hash*PRIME_RABIN_KARP + u32(s[i]) @@ -1619,7 +1617,7 @@ Inputs: - substr: The substring to search for. Returns: -The byte offset of the last occurrence of `substr` in `s`, or -1 if not found. +- res: The byte offset of the last occurrence of `substr` in `s`, or -1 if not found. Example: @@ -1641,7 +1639,7 @@ Output: -1 */ -last_index :: proc(s, substr: string) -> int { +last_index :: proc(s, substr: string) -> (res: int) { hash_str_rabin_karp_reverse :: proc(s: string) -> (hash: u32 = 0, pow: u32 = 1) { for i := len(s) - 1; i >= 0; i -= 1 { hash = hash*PRIME_RABIN_KARP + u32(s[i]) @@ -1696,7 +1694,7 @@ Inputs: - chars: The characters to look for Returns: -The index of the first character of `chars` found in `s`, or -1 if not found. +- res: The index of the first character of `chars` found in `s`, or -1 if not found. Example: @@ -1720,7 +1718,7 @@ Output: -1 */ -index_any :: proc(s, chars: string) -> int { +index_any :: proc(s, chars: string) -> (res: int) { if chars == "" { return -1 } @@ -1759,7 +1757,7 @@ Inputs: - chars: The characters to look for Returns: -The index of the last matching character, or -1 if not found +- res: The index of the last matching character, or -1 if not found Example: @@ -1783,7 +1781,7 @@ Output: -1 */ -last_index_any :: proc(s, chars: string) -> int { +last_index_any :: proc(s, chars: string) -> (res: int) { if chars == "" { return -1 } @@ -1839,7 +1837,8 @@ Inputs: - substrs: The substrings to look for Returns: -A tuple containing the index of the first matching substring, and its length (width) +- idx: the index of the first matching substring +- width: the length of the found substring */ index_multi :: proc(s: string, substrs: []string) -> (idx: int, width: int) { idx = -1 @@ -1878,7 +1877,7 @@ Inputs: - substr: The substring to count Returns: -The number of occurrences of `substr` in `s`, returns the rune_count + 1 of the string `s` on empty `substr` +- res: The number of occurrences of `substr` in `s`, returns the rune_count + 1 of the string `s` on empty `substr` Example: @@ -1902,7 +1901,7 @@ Output: 0 */ -count :: proc(s, substr: string) -> int { +count :: proc(s, substr: string) -> (res: int) { if len(substr) == 0 { // special case return rune_count(s) + 1 } @@ -1947,7 +1946,8 @@ Inputs: - allocator: (default is context.allocator) Returns: -The concatenated repeated string +- res: The concatenated repeated string +- err: An optional allocator error if one occured, `nil` otherwise WARNING: Panics if count < 0 @@ -1965,20 +1965,20 @@ Output: abcabc */ -repeat :: proc(s: string, count: int, allocator := context.allocator) -> string { +repeat :: proc(s: string, count: int, allocator := context.allocator) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { if count < 0 { panic("strings: negative repeat count") } else if count > 0 && (len(s)*count)/count != len(s) { panic("strings: repeat count will cause an overflow") } - b := make([]byte, len(s)*count, allocator) + b := make([]byte, len(s)*count, allocator) or_return i := copy(b, s) for i < len(b) { // 2^N trick to reduce the need to copy copy(b[i:], b[:i]) i *= 2 } - return string(b) + return string(b), nil } /* Replaces all occurrences of `old` in `s` with `new` @@ -1992,7 +1992,8 @@ Inputs: - allocator: The allocator to use for the new string (default is context.allocator) Returns: -A tuple containing the modified string and a boolean indicating if an allocation occurred during the replacement +- output: The modified string +- was_allocation: `true` if an allocation occurred during the replacement, `false` otherwise Example: @@ -2028,7 +2029,8 @@ Inputs: - allocator: (default: context.allocator) Returns: -A tuple containing the modified string and a boolean indicating if an allocation occurred during the replacement +- output: The modified string +- was_allocation: `true` if an allocation occurred during the replacement, `false` otherwise Example: @@ -2101,7 +2103,8 @@ Inputs: - allocator: (default: context.allocator) Returns: -A tuple containing the modified string and a boolean indicating if an allocation occurred during the removal +- output: The modified string +- was_allocation: `true` if an allocation occurred during the replacement, `false` otherwise Example: @@ -2137,7 +2140,8 @@ Inputs: - allocator: (default: context.allocator) Returns: -A tuple containing the modified string and a boolean indicating if an allocation occurred during the removal +- output: The modified string +- was_allocation: `true` if an allocation occurred during the replacement, `false` otherwise Example: @@ -2163,15 +2167,32 @@ remove_all :: proc(s, key: string, allocator := context.allocator) -> (output: s // Returns true if is an ASCII space character ('\t', '\n', '\v', '\f', '\r', ' ') @(private) _ascii_space := [256]bool{'\t' = true, '\n' = true, '\v' = true, '\f' = true, '\r' = true, ' ' = true} -// Returns true when the `r` rune is '\t', '\n', '\v', '\f', '\r' or ' ' -is_ascii_space :: proc(r: rune) -> bool { +/* +Returns true when the `r` rune is an ASCII whitespace character. + +Inputs: +- r: the rune to test + +Returns: +-res: `true` if `r` is a whitespace character, `false` if otherwise +*/ +is_ascii_space :: proc(r: rune) -> (res: bool) { if r < utf8.RUNE_SELF { return _ascii_space[u8(r)] } return false } -// Returns true if the `r` rune is any ASCII or UTF-8 based whitespace character -is_space :: proc(r: rune) -> bool { + +/* +Returns true when the `r` rune is an ASCII or UTF-8 whitespace character. + +Inputs: +- r: the rune to test + +Returns: +-res: `true` if `r` is a whitespace character, `false` if otherwise +*/ +is_space :: proc(r: rune) -> (res: bool) { if r < 0x2000 { switch r { case '\t', '\n', '\v', '\f', '\r', ' ', 0x85, 0xa0, 0x1680: @@ -2188,10 +2209,20 @@ is_space :: proc(r: rune) -> bool { } return false } -// Returns true if the `r` rune is a null-byte (`0x0`) -is_null :: proc(r: rune) -> bool { + +/* +Returns true when the `r` rune is `0x0` + +Inputs: +- r: the rune to test + +Returns: +-res: `true` if `r` is `0x0`, `false` if otherwise +*/ +is_null :: proc(r: rune) -> (res: bool) { return r == 0x0000 } + /* Find the index of the first rune `r` in string `s` for which procedure `p` returns the same as truth, or -1 if no such rune appears. @@ -2201,7 +2232,7 @@ Inputs: - truth: The boolean value to be matched (default: `true`) Returns: -The index of the first matching rune, or -1 if no match was found +- res: The index of the first matching rune, or -1 if no match was found Example: @@ -2228,7 +2259,7 @@ Output: -1 */ -index_proc :: proc(s: string, p: proc(rune) -> bool, truth := true) -> int { +index_proc :: proc(s: string, p: proc(rune) -> bool, truth := true) -> (res: int) { for r, i in s { if p(r) == truth { return i @@ -2237,7 +2268,7 @@ index_proc :: proc(s: string, p: proc(rune) -> bool, truth := true) -> int { return -1 } // Same as `index_proc`, but the procedure p takes a raw pointer for state -index_proc_with_state :: proc(s: string, p: proc(rawptr, rune) -> bool, state: rawptr, truth := true) -> int { +index_proc_with_state :: proc(s: string, p: proc(rawptr, rune) -> bool, state: rawptr, truth := true) -> (res: int) { for r, i in s { if p(state, r) == truth { return i @@ -2246,7 +2277,7 @@ index_proc_with_state :: proc(s: string, p: proc(rawptr, rune) -> bool, state: r return -1 } // Finds the index of the *last* rune in the string s for which the procedure p returns the same value as truth -last_index_proc :: proc(s: string, p: proc(rune) -> bool, truth := true) -> int { +last_index_proc :: proc(s: string, p: proc(rune) -> bool, truth := true) -> (res: int) { // TODO(bill): Probably use Rabin-Karp Search for i := len(s); i > 0; { r, size := utf8.decode_last_rune_in_string(s[:i]) @@ -2258,7 +2289,7 @@ last_index_proc :: proc(s: string, p: proc(rune) -> bool, truth := true) -> int return -1 } // Same as `index_proc_with_state`, runs through the string in reverse -last_index_proc_with_state :: proc(s: string, p: proc(rawptr, rune) -> bool, state: rawptr, truth := true) -> int { +last_index_proc_with_state :: proc(s: string, p: proc(rawptr, rune) -> bool, state: rawptr, truth := true) -> (res: int) { // TODO(bill): Probably use Rabin-Karp Search for i := len(s); i > 0; { r, size := utf8.decode_last_rune_in_string(s[:i]) @@ -2277,7 +2308,7 @@ Inputs: - p: A procedure that takes a rune and returns a boolean Returns: -The trimmed string as a slice of the original +- res: The trimmed string as a slice of the original Example: @@ -2296,7 +2327,7 @@ Output: testing */ -trim_left_proc :: proc(s: string, p: proc(rune) -> bool) -> string { +trim_left_proc :: proc(s: string, p: proc(rune) -> bool) -> (res: string) { i := index_proc(s, p, false) if i == -1 { return "" @@ -2312,9 +2343,9 @@ Inputs: - state: The raw pointer to be passed to the procedure `p` Returns: -The trimmed string as a slice of the original +- res: The trimmed string as a slice of the original */ -trim_left_proc_with_state :: proc(s: string, p: proc(rawptr, rune) -> bool, state: rawptr) -> string { +trim_left_proc_with_state :: proc(s: string, p: proc(rawptr, rune) -> bool, state: rawptr) -> (res: string) { i := index_proc_with_state(s, p, state, false) if i == -1 { return "" @@ -2329,7 +2360,7 @@ Inputs: - p: A procedure that takes a rune and returns a boolean Returns: -The trimmed string as a slice of the original +- res: The trimmed string as a slice of the original Example: @@ -2348,7 +2379,7 @@ Output: test */ -trim_right_proc :: proc(s: string, p: proc(rune) -> bool) -> string { +trim_right_proc :: proc(s: string, p: proc(rune) -> bool) -> (res: string) { i := last_index_proc(s, p, false) if i >= 0 && s[i] >= utf8.RUNE_SELF { _, w := utf8.decode_rune_in_string(s[i:]) @@ -2367,9 +2398,9 @@ Inputs: - state: The raw pointer to be passed to the procedure `p` Returns: -The trimmed string as a slice of the original, empty when no match +- res: The trimmed string as a slice of the original, empty when no match */ -trim_right_proc_with_state :: proc(s: string, p: proc(rawptr, rune) -> bool, state: rawptr) -> string { +trim_right_proc_with_state :: proc(s: string, p: proc(rawptr, rune) -> bool, state: rawptr) -> (res: string) { i := last_index_proc_with_state(s, p, state, false) if i >= 0 && s[i] >= utf8.RUNE_SELF { _, w := utf8.decode_rune_in_string(s[i:]) @@ -2380,7 +2411,7 @@ trim_right_proc_with_state :: proc(s: string, p: proc(rawptr, rune) -> bool, sta return s[0:i] } // Procedure for `trim_*_proc` variants, which has a string rawptr cast + rune comparison -is_in_cutset :: proc(state: rawptr, r: rune) -> bool { +is_in_cutset :: proc(state: rawptr, r: rune) -> (res: bool) { if state == nil { return false } @@ -2400,9 +2431,9 @@ Inputs: - cutset: The set of characters to be trimmed from the left of the input string Returns: -The trimmed string as a slice of the original +- res: The trimmed string as a slice of the original */ -trim_left :: proc(s: string, cutset: string) -> string { +trim_left :: proc(s: string, cutset: string) -> (res: string) { if s == "" || cutset == "" { return s } @@ -2417,9 +2448,9 @@ Inputs: - cutset: The set of characters to be trimmed from the right of the input string Returns: -The trimmed string as a slice of the original +- res: The trimmed string as a slice of the original */ -trim_right :: proc(s: string, cutset: string) -> string { +trim_right :: proc(s: string, cutset: string) -> (res: string) { if s == "" || cutset == "" { return s } @@ -2434,9 +2465,9 @@ Inputs: - cutset: The set of characters to be trimmed from both sides of the input string Returns: -The trimmed string as a slice of the original +- res: The trimmed string as a slice of the original */ -trim :: proc(s: string, cutset: string) -> string { +trim :: proc(s: string, cutset: string) -> (res: string) { return trim_right(trim_left(s, cutset), cutset) } /* @@ -2446,9 +2477,9 @@ Inputs: - s: The input string Returns: -The trimmed string as a slice of the original +- res: The trimmed string as a slice of the original */ -trim_left_space :: proc(s: string) -> string { +trim_left_space :: proc(s: string) -> (res: string) { return trim_left_proc(s, is_space) } /* @@ -2458,9 +2489,9 @@ Inputs: - s: The input string Returns: -The trimmed string as a slice of the original +- res: The trimmed string as a slice of the original */ -trim_right_space :: proc(s: string) -> string { +trim_right_space :: proc(s: string) -> (res: string) { return trim_right_proc(s, is_space) } /* @@ -2470,9 +2501,9 @@ Inputs: - s: The input string Returns: -The trimmed string as a slice of the original +- res: The trimmed string as a slice of the original */ -trim_space :: proc(s: string) -> string { +trim_space :: proc(s: string) -> (res: string) { return trim_right_space(trim_left_space(s)) } /* @@ -2482,9 +2513,9 @@ Inputs: - s: The input string Returns: -The trimmed string as a slice of the original +- res: The trimmed string as a slice of the original */ -trim_left_null :: proc(s: string) -> string { +trim_left_null :: proc(s: string) -> (res: string) { return trim_left_proc(s, is_null) } /* @@ -2494,9 +2525,9 @@ Inputs: - s: The input string Returns: -The trimmed string as a slice of the original +- res: The trimmed string as a slice of the original */ -trim_right_null :: proc(s: string) -> string { +trim_right_null :: proc(s: string) -> (res: string) { return trim_right_proc(s, is_null) } /* @@ -2505,9 +2536,9 @@ Trims null runes from both sides, "\x00\x00testing\x00\x00" -> "testing" Inputs: - s: The input string Returns: -The trimmed string as a slice of the original +- res: The trimmed string as a slice of the original */ -trim_null :: proc(s: string) -> string { +trim_null :: proc(s: string) -> (res: string) { return trim_right_null(trim_left_null(s)) } /* @@ -2518,7 +2549,7 @@ Inputs: - prefix: The prefix string to be removed Returns: -The trimmed string as a slice of original, or the input string if no prefix was found +- res: The trimmed string as a slice of original, or the input string if no prefix was found Example: @@ -2536,7 +2567,7 @@ Output: testing */ -trim_prefix :: proc(s, prefix: string) -> string { +trim_prefix :: proc(s, prefix: string) -> (res: string) { if has_prefix(s, prefix) { return s[len(prefix):] } @@ -2550,7 +2581,7 @@ Inputs: - suffix: The suffix string to be removed Returns: -The trimmed string as a slice of original, or the input string if no suffix was found +- res: The trimmed string as a slice of original, or the input string if no suffix was found Example: @@ -2568,7 +2599,7 @@ Output: todo.doc */ -trim_suffix :: proc(s, suffix: string) -> string { +trim_suffix :: proc(s, suffix: string) -> (res: string) { if has_suffix(s, suffix) { return s[:len(s)-len(suffix)] } @@ -2585,7 +2616,8 @@ Inputs: - allocator: (default is context.allocator) Returns: -An array of strings, or nil on empty substring or no matches +- res: An array of strings, or nil on empty substring or no matches +- err: An optional allocator error if one occured, `nil` otherwise NOTE: Allocation occurs for the array, the splits are all views of the original string. @@ -2605,15 +2637,15 @@ Output: ["testing", "this", "out", "nice", "done", "last"] */ -split_multi :: proc(s: string, substrs: []string, allocator := context.allocator) -> []string #no_bounds_check { +split_multi :: proc(s: string, substrs: []string, allocator := context.allocator) -> (res: []string, err: mem.Allocator_Error) #optional_allocator_error #no_bounds_check { if s == "" || len(substrs) <= 0 { - return nil + return nil, nil } // disallow "" substr for substr in substrs { if len(substr) == 0 { - return nil + return nil, nil } } @@ -2628,7 +2660,7 @@ split_multi :: proc(s: string, substrs: []string, allocator := context.allocator it = it[i+w:] } - results := make([dynamic]string, 0, n, allocator) + results := make([dynamic]string, 0, n, allocator) or_return { it := s for len(it) > 0 { @@ -2643,7 +2675,7 @@ split_multi :: proc(s: string, substrs: []string, allocator := context.allocator append(&results, it) } assert(len(results) == n) - return results[:] + return results[:], nil } /* Splits the input string `s` by all possible `substrs` in an iterator fashion. The full string is returned if no match. @@ -2653,7 +2685,8 @@ Inputs: - substrs: An array of substrings used for splitting Returns: -A tuple containing the split string and a boolean indicating success or failure +- res: The split string +- ok: `true` if an iteration result was returned, `false` if the iterator has reached the end Example: @@ -2714,7 +2747,8 @@ Inputs: - allocator: (default is context.allocator) Returns: -A new string with invalid UTF-8 characters replaced +- res: A new string with invalid UTF-8 characters replaced +- err: An optional allocator error if one occured, `nil` otherwise Example: @@ -2731,10 +2765,10 @@ Output: Hello? */ -scrub :: proc(s: string, replacement: string, allocator := context.allocator) -> string { +scrub :: proc(s: string, replacement: string, allocator := context.allocator) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { str := s b: Builder - builder_init(&b, 0, len(s), allocator) + builder_init(&b, 0, len(s), allocator) or_return has_error := false cursor := 0 @@ -2760,7 +2794,7 @@ scrub :: proc(s: string, replacement: string, allocator := context.allocator) -> str = str[w:] } - return to_string(b) + return to_string(b), nil } /* Reverses the input string `s` @@ -2772,7 +2806,8 @@ Inputs: - allocator: (default is context.allocator) Returns: -A reversed version of the input string +- res: A reversed version of the input string +- err: An optional allocator error if one occured, `nil` otherwise Example: @@ -2790,10 +2825,10 @@ Output: abcxyz zyxcba */ -reverse :: proc(s: string, allocator := context.allocator) -> string { +reverse :: proc(s: string, allocator := context.allocator) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { str := s n := len(str) - buf := make([]byte, n) + buf := make([]byte, n) or_return i := n for len(str) > 0 { @@ -2802,7 +2837,7 @@ reverse :: proc(s: string, allocator := context.allocator) -> string { copy(buf[i:], str[:w]) str = str[w:] } - return string(buf) + return string(buf), nil } /* Expands the input string by replacing tab characters with spaces to align to a specified tab size @@ -2815,7 +2850,8 @@ Inputs: - allocator: (default is context.allocator) Returns: -A new string with tab characters expanded to the specified tab size +- res: A new string with tab characters expanded to the specified tab size +- err: An optional allocator error if one occured, `nil` otherwise WARNING: Panics if tab_size <= 0 @@ -2834,17 +2870,17 @@ Output: abc1 abc2 abc3 */ -expand_tabs :: proc(s: string, tab_size: int, allocator := context.allocator) -> string { +expand_tabs :: proc(s: string, tab_size: int, allocator := context.allocator) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { if tab_size <= 0 { panic("tab size must be positive") } if s == "" { - return "" + return "", nil } b: Builder - builder_init(&b, allocator) + builder_init(&b, allocator) or_return writer := to_writer(&b) str := s column: int @@ -2873,7 +2909,7 @@ expand_tabs :: proc(s: string, tab_size: int, allocator := context.allocator) -> str = str[w:] } - return to_string(b) + return to_string(b), nil } /* Splits the input string `str` by the separator `sep` string and returns 3 parts. The values are slices of the original string. @@ -2883,7 +2919,9 @@ Inputs: - sep: The separator string Returns: -A tuple with `head` (before the split), `match` (the separator), and `tail` (the end of the split) strings +- head: the string before the split +- match: the seperator string +- tail: the string after the split Example: @@ -2937,9 +2975,10 @@ Inputs: - allocator: (default is context.allocator) Returns: -A new string centered within a field of the specified length +- res: A new string centered within a field of the specified length +- err: An optional allocator error if one occured, `nil` otherwise */ -centre_justify :: proc(str: string, length: int, pad: string, allocator := context.allocator) -> string { +centre_justify :: proc(str: string, length: int, pad: string, allocator := context.allocator) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { n := rune_count(str) if n >= length || pad == "" { return clone(str, allocator) @@ -2949,8 +2988,7 @@ centre_justify :: proc(str: string, length: int, pad: string, allocator := conte pad_len := rune_count(pad) b: Builder - builder_init(&b, allocator) - builder_grow(&b, len(str) + (remains/pad_len + 1)*len(pad)) + builder_init(&b, 0, len(str) + (remains/pad_len + 1)*len(pad), allocator) or_return w := to_writer(&b) @@ -2958,7 +2996,7 @@ centre_justify :: proc(str: string, length: int, pad: string, allocator := conte io.write_string(w, str) write_pad_string(w, pad, pad_len, (remains+1)/2) - return to_string(b) + return to_string(b), nil } /* Left-justifies the input string within a field of specified length by adding pad string on the right side, if its length is less than the target length. @@ -2972,9 +3010,10 @@ Inputs: - allocator: (default is context.allocator) Returns: -A new string left-justified within a field of the specified length +- res: A new string left-justified within a field of the specified length +- err: An optional allocator error if one occured, `nil` otherwise */ -left_justify :: proc(str: string, length: int, pad: string, allocator := context.allocator) -> string { +left_justify :: proc(str: string, length: int, pad: string, allocator := context.allocator) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { n := rune_count(str) if n >= length || pad == "" { return clone(str, allocator) @@ -2985,14 +3024,14 @@ left_justify :: proc(str: string, length: int, pad: string, allocator := context b: Builder builder_init(&b, allocator) - builder_grow(&b, len(str) + (remains/pad_len + 1)*len(pad)) + builder_init(&b, 0, len(str) + (remains/pad_len + 1)*len(pad), allocator) or_return w := to_writer(&b) io.write_string(w, str) write_pad_string(w, pad, pad_len, remains) - return to_string(b) + return to_string(b), nil } /* Right-justifies the input string within a field of specified length by adding pad string on the left side, if its length is less than the target length. @@ -3006,9 +3045,10 @@ Inputs: - allocator: (default is context.allocator) Returns: -A new string right-justified within a field of the specified length +- res: A new string right-justified within a field of the specified length +- err: An optional allocator error if one occured, `nil` otherwise */ -right_justify :: proc(str: string, length: int, pad: string, allocator := context.allocator) -> string { +right_justify :: proc(str: string, length: int, pad: string, allocator := context.allocator) -> (res: string, err: mem.Allocator_Error) #optional_allocator_error { n := rune_count(str) if n >= length || pad == "" { return clone(str, allocator) @@ -3019,14 +3059,14 @@ right_justify :: proc(str: string, length: int, pad: string, allocator := contex b: Builder builder_init(&b, allocator) - builder_grow(&b, len(str) + (remains/pad_len + 1)*len(pad)) + builder_init(&b, 0, len(str) + (remains/pad_len + 1)*len(pad), allocator) or_return w := to_writer(&b) write_pad_string(w, pad, pad_len, remains) io.write_string(w, str) - return to_string(b) + return to_string(b), nil } /* Writes a given pad string a specified number of times to an `io.Writer` @@ -3064,9 +3104,10 @@ Inputs: - allocator: (default is context.allocator) Returns: -A slice of substrings of the input string, or an empty slice if the input string only contains white space +- res: A slice of substrings of the input string, or an empty slice if the input string only contains white space +- err: An optional allocator error if one occured, `nil` otherwise */ -fields :: proc(s: string, allocator := context.allocator) -> []string #no_bounds_check { +fields :: proc(s: string, allocator := context.allocator) -> (res: []string, err: mem.Allocator_Error) #optional_allocator_error #no_bounds_check { n := 0 was_space := 1 set_bits := u8(0) @@ -3085,10 +3126,10 @@ fields :: proc(s: string, allocator := context.allocator) -> []string #no_bounds } if n == 0 { - return nil + return nil, nil } - a := make([]string, n, allocator) + a := make([]string, n, allocator) or_return na := 0 field_start := 0 i := 0 @@ -3112,7 +3153,7 @@ fields :: proc(s: string, allocator := context.allocator) -> []string #no_bounds if field_start < len(s) { a[na] = s[field_start:] } - return a + return a, nil } /* Splits a string into a slice of substrings at each run of unicode code points `r` satisfying the predicate `f(r)` @@ -3127,10 +3168,11 @@ Inputs: NOTE: fields_proc makes no guarantee about the order in which it calls `f(r)`, it assumes that `f` always returns the same value for a given `r` Returns: -A slice of substrings of the input string, or an empty slice if all code points in the input string satisfy the predicate or if the input string is empty +- res: A slice of substrings of the input string, or an empty slice if all code points in the input string satisfy the predicate or if the input string is empty +- err: An optional allocator error if one occured, `nil` otherwise */ -fields_proc :: proc(s: string, f: proc(rune) -> bool, allocator := context.allocator) -> []string #no_bounds_check { - substrings := make([dynamic]string, 0, 32, allocator) +fields_proc :: proc(s: string, f: proc(rune) -> bool, allocator := context.allocator) -> (res: []string, err: mem.Allocator_Error) #optional_allocator_error #no_bounds_check { + substrings := make([dynamic]string, 0, 32, allocator) or_return start, end := -1, -1 for r, offset in s { @@ -3153,7 +3195,7 @@ fields_proc :: proc(s: string, f: proc(rune) -> bool, allocator := context.alloc append(&substrings, s[start : len(s)]) } - return substrings[:] + return substrings[:], nil } /* Retrieves the first non-space substring from a mutable string reference and advances the reference. `s` is advanced from any space after the substring, or be an empty string if the substring was the remaining characters @@ -3205,11 +3247,12 @@ Inputs: - allocator: (default is context.allocator) Returns: -The Levenshtein edit distance between the two strings +- res: The Levenshtein edit distance between the two strings +- err: An optional allocator error if one occured, `nil` otherwise NOTE: This implementation is a single-row-version of the Wagner–Fischer algorithm, based on C code by Martin Ettl. */ -levenshtein_distance :: proc(a, b: string, allocator := context.allocator) -> int { +levenshtein_distance :: proc(a, b: string, allocator := context.allocator) -> (res: int, err: mem.Allocator_Error) #optional_allocator_error { LEVENSHTEIN_DEFAULT_COSTS: []int : { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, @@ -3223,16 +3266,16 @@ levenshtein_distance :: proc(a, b: string, allocator := context.allocator) -> in m, n := utf8.rune_count_in_string(a), utf8.rune_count_in_string(b) if m == 0 { - return n + return n, nil } if n == 0 { - return m + return m, nil } costs: []int if n + 1 > len(LEVENSHTEIN_DEFAULT_COSTS) { - costs = make([]int, n + 1, allocator) + costs = make([]int, n + 1, allocator) or_return for k in 0..=n { costs[k] = k } @@ -3265,5 +3308,5 @@ levenshtein_distance :: proc(a, b: string, allocator := context.allocator) -> in i += 1 } - return costs[n] + return costs[n], nil } diff --git a/core/sync/extended.odin b/core/sync/extended.odin index 0878858f2..c76ab504b 100644 --- a/core/sync/extended.odin +++ b/core/sync/extended.odin @@ -7,7 +7,7 @@ _ :: vg // A Wait_Group waits for a collection of threads to finish // // A Wait_Group must not be copied after first use -Wait_Group :: struct { +Wait_Group :: struct #no_copy { counter: int, mutex: Mutex, cond: Cond, @@ -101,7 +101,7 @@ Example: fmt.println("Finished") } */ -Barrier :: struct { +Barrier :: struct #no_copy { mutex: Mutex, cond: Cond, index: int, @@ -141,7 +141,7 @@ barrier_wait :: proc "contextless" (b: ^Barrier) -> (is_leader: bool) { } -Auto_Reset_Event :: struct { +Auto_Reset_Event :: struct #no_copy { // status == 0: Event is reset and no threads are waiting // status == 1: Event is signaled // status == -N: Event is reset and N threads are waiting @@ -172,7 +172,7 @@ auto_reset_event_wait :: proc "contextless" (e: ^Auto_Reset_Event) { -Ticket_Mutex :: struct { +Ticket_Mutex :: struct #no_copy { ticket: uint, serving: uint, } @@ -194,7 +194,7 @@ ticket_mutex_guard :: proc "contextless" (m: ^Ticket_Mutex) -> bool { } -Benaphore :: struct { +Benaphore :: struct #no_copy { counter: i32, sema: Sema, } @@ -222,7 +222,7 @@ benaphore_guard :: proc "contextless" (m: ^Benaphore) -> bool { return true } -Recursive_Benaphore :: struct { +Recursive_Benaphore :: struct #no_copy { counter: int, owner: int, recursion: i32, @@ -284,7 +284,7 @@ recursive_benaphore_guard :: proc "contextless" (m: ^Recursive_Benaphore) -> boo // Once is a data value that will perform exactly on action. // // A Once must not be copied after first use. -Once :: struct { +Once :: struct #no_copy { m: Mutex, done: bool, } @@ -372,7 +372,7 @@ once_do_with_data_contextless :: proc "contextless" (o: ^Once, fn: proc "context // blocks for the specified duration. // * The `unpark` procedure automatically makes the token available if it // was not already. -Parker :: struct { +Parker :: struct #no_copy { state: Futex, } diff --git a/core/sync/primitives.odin b/core/sync/primitives.odin index 8d6ce6e48..b8bcfad70 100644 --- a/core/sync/primitives.odin +++ b/core/sync/primitives.odin @@ -11,7 +11,7 @@ current_thread_id :: proc "contextless" () -> int { // The zero value for a Mutex is an unlocked mutex // // A Mutex must not be copied after first use -Mutex :: struct { +Mutex :: struct #no_copy { impl: _Mutex, } @@ -47,7 +47,7 @@ mutex_guard :: proc "contextless" (m: ^Mutex) -> bool { // The zero value for a RW_Mutex is an unlocked mutex // // A RW_Mutex must not be copied after first use -RW_Mutex :: struct { +RW_Mutex :: struct #no_copy { impl: _RW_Mutex, } @@ -111,7 +111,7 @@ rw_mutex_shared_guard :: proc "contextless" (m: ^RW_Mutex) -> bool { // The zero value for a Recursive_Mutex is an unlocked mutex // // A Recursive_Mutex must not be copied after first use -Recursive_Mutex :: struct { +Recursive_Mutex :: struct #no_copy { impl: _Recursive_Mutex, } @@ -144,7 +144,7 @@ recursive_mutex_guard :: proc "contextless" (m: ^Recursive_Mutex) -> bool { // waiting for signalling the occurence of an event // // A Cond must not be copied after first use -Cond :: struct { +Cond :: struct #no_copy { impl: _Cond, } @@ -172,7 +172,7 @@ cond_broadcast :: proc "contextless" (c: ^Cond) { // Posting to the semaphore increases the count by one, or the provided amount. // // A Sema must not be copied after first use -Sema :: struct { +Sema :: struct #no_copy { impl: _Sema, } diff --git a/core/sync/primitives_atomic.odin b/core/sync/primitives_atomic.odin index 1abad5875..1b7cdfe35 100644 --- a/core/sync/primitives_atomic.odin +++ b/core/sync/primitives_atomic.odin @@ -13,7 +13,7 @@ Atomic_Mutex_State :: enum Futex { // The zero value for a Atomic_Mutex is an unlocked mutex // // An Atomic_Mutex must not be copied after first use -Atomic_Mutex :: struct { +Atomic_Mutex :: struct #no_copy { state: Atomic_Mutex_State, } @@ -109,7 +109,7 @@ Atomic_RW_Mutex_State_Reader_Mask :: Atomic_RW_Mutex_State(1<<(Atomic_RW_Mutex_S // The zero value for an Atomic_RW_Mutex is an unlocked mutex // // An Atomic_RW_Mutex must not be copied after first use -Atomic_RW_Mutex :: struct { +Atomic_RW_Mutex :: struct #no_copy { state: Atomic_RW_Mutex_State, mutex: Atomic_Mutex, sema: Atomic_Sema, @@ -222,7 +222,7 @@ atomic_rw_mutex_shared_guard :: proc "contextless" (m: ^Atomic_RW_Mutex) -> bool // The zero value for a Recursive_Mutex is an unlocked mutex // // An Atomic_Recursive_Mutex must not be copied after first use -Atomic_Recursive_Mutex :: struct { +Atomic_Recursive_Mutex :: struct #no_copy { owner: int, recursion: int, mutex: Mutex, @@ -285,7 +285,7 @@ atomic_recursive_mutex_guard :: proc "contextless" (m: ^Atomic_Recursive_Mutex) // waiting for signalling the occurence of an event // // An Atomic_Cond must not be copied after first use -Atomic_Cond :: struct { +Atomic_Cond :: struct #no_copy { state: Futex, } @@ -320,7 +320,7 @@ atomic_cond_broadcast :: proc "contextless" (c: ^Atomic_Cond) { // Posting to the semaphore increases the count by one, or the provided amount. // // An Atomic_Sema must not be copied after first use -Atomic_Sema :: struct { +Atomic_Sema :: struct #no_copy { count: Futex, } diff --git a/core/sys/windows/advapi32.odin b/core/sys/windows/advapi32.odin index e98aa6c43..dc7ec1e08 100644 --- a/core/sys/windows/advapi32.odin +++ b/core/sys/windows/advapi32.odin @@ -52,7 +52,7 @@ foreign advapi32 { dwCreationFlags: DWORD, lpEnvironment: LPVOID, lpCurrentDirectory: wstring, - lpStartupInfo: LPSTARTUPINFO, + lpStartupInfo: LPSTARTUPINFOW, lpProcessInformation: LPPROCESS_INFORMATION, ) -> BOOL --- @@ -67,7 +67,7 @@ foreign advapi32 { dwCreationFlags: DWORD, lpEnvironment: LPVOID, lpCurrentDirectory: wstring, - lpStartupInfo: LPSTARTUPINFO, + lpStartupInfo: LPSTARTUPINFOW, lpProcessInformation: LPPROCESS_INFORMATION, ) -> BOOL --- diff --git a/core/sys/windows/kernel32.odin b/core/sys/windows/kernel32.odin index 1bbf910bb..a6897f164 100644 --- a/core/sys/windows/kernel32.odin +++ b/core/sys/windows/kernel32.odin @@ -193,9 +193,10 @@ foreign kernel32 { dwCreationFlags: DWORD, lpEnvironment: LPVOID, lpCurrentDirectory: LPCWSTR, - lpStartupInfo: LPSTARTUPINFO, + lpStartupInfo: LPSTARTUPINFOW, lpProcessInformation: LPPROCESS_INFORMATION, ) -> BOOL --- + GetStartupInfoW :: proc(lpStartupInfo: LPSTARTUPINFOW) --- GetEnvironmentVariableW :: proc(n: LPCWSTR, v: LPWSTR, nsize: DWORD) -> DWORD --- SetEnvironmentVariableW :: proc(n: LPCWSTR, v: LPCWSTR) -> BOOL --- GetEnvironmentStringsW :: proc() -> LPWCH --- @@ -404,8 +405,87 @@ foreign kernel32 { ) -> BOOL --- GetLogicalProcessorInformation :: proc(buffer: ^SYSTEM_LOGICAL_PROCESSOR_INFORMATION, returnedLength: PDWORD) -> BOOL --- + + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-setfilecompletionnotificationmodes) + SetFileCompletionNotificationModes :: proc(FileHandle: HANDLE, Flags: u8) -> BOOL --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/ioapiset/nf-ioapiset-createiocompletionport) + CreateIoCompletionPort :: proc(FileHandle: HANDLE, ExistingCompletionPort: HANDLE, CompletionKey: ^uintptr, NumberOfConcurrentThreads: DWORD) -> HANDLE --- + //[MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/ioapiset/nf-ioapiset-getqueuedcompletionstatus) + GetQueuedCompletionStatus :: proc(CompletionPort: HANDLE, lpNumberOfBytesTransferred: ^DWORD, lpCompletionKey: uintptr, lpOverlapped: ^^OVERLAPPED, dwMilliseconds: DWORD) -> BOOL --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/ioapiset/nf-ioapiset-getqueuedcompletionstatusex) + GetQueuedCompletionStatusEx :: proc(CompletionPort: HANDLE, lpCompletionPortEntries: ^OVERLAPPED_ENTRY, ulCount: c_ulong, ulNumEntriesRemoved: ^c_ulong, dwMilliseconds: DWORD, fAlertable: BOOL) -> BOOL --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/ioapiset/nf-ioapiset-postqueuedcompletionstatus) + PostQueuedCompletionStatus :: proc(CompletionPort: HANDLE, dwNumberOfBytesTransferred: DWORD, dwCompletionKey: c_ulong, lpOverlapped: ^OVERLAPPED) -> BOOL --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/handleapi/nf-handleapi-gethandleinformation) + GetHandleInformation :: proc(hObject: HANDLE, lpdwFlags: ^DWORD) -> BOOL --- } +DEBUG_PROCESS :: 0x00000001 +DEBUG_ONLY_THIS_PROCESS :: 0x00000002 +CREATE_SUSPENDED :: 0x00000004 +DETACHED_PROCESS :: 0x00000008 +CREATE_NEW_CONSOLE :: 0x00000010 +NORMAL_PRIORITY_CLASS :: 0x00000020 +IDLE_PRIORITY_CLASS :: 0x00000040 +HIGH_PRIORITY_CLASS :: 0x00000080 +REALTIME_PRIORITY_CLASS :: 0x00000100 +CREATE_NEW_PROCESS_GROUP :: 0x00000200 +CREATE_UNICODE_ENVIRONMENT :: 0x00000400 +CREATE_SEPARATE_WOW_VDM :: 0x00000800 +CREATE_SHARED_WOW_VDM :: 0x00001000 +CREATE_FORCEDOS :: 0x00002000 +BELOW_NORMAL_PRIORITY_CLASS :: 0x00004000 +ABOVE_NORMAL_PRIORITY_CLASS :: 0x00008000 +INHERIT_PARENT_AFFINITY :: 0x00010000 +INHERIT_CALLER_PRIORITY :: 0x00020000 // Deprecated +CREATE_PROTECTED_PROCESS :: 0x00040000 +EXTENDED_STARTUPINFO_PRESENT :: 0x00080000 +PROCESS_MODE_BACKGROUND_BEGIN :: 0x00100000 +PROCESS_MODE_BACKGROUND_END :: 0x00200000 +CREATE_SECURE_PROCESS :: 0x00400000 +CREATE_BREAKAWAY_FROM_JOB :: 0x01000000 +CREATE_PRESERVE_CODE_AUTHZ_LEVEL :: 0x02000000 +CREATE_DEFAULT_ERROR_MODE :: 0x04000000 +CREATE_NO_WINDOW :: 0x08000000 +PROFILE_USER :: 0x10000000 +PROFILE_KERNEL :: 0x20000000 +PROFILE_SERVER :: 0x40000000 +CREATE_IGNORE_SYSTEM_DEFAULT :: 0x80000000 + +THREAD_BASE_PRIORITY_LOWRT :: 15 // value that gets a thread to LowRealtime-1 +THREAD_BASE_PRIORITY_MAX :: 2 // maximum thread base priority boost +THREAD_BASE_PRIORITY_MIN :: (-2) // minimum thread base priority boost +THREAD_BASE_PRIORITY_IDLE :: (-15) // value that gets a thread to idle + +THREAD_PRIORITY_LOWEST :: THREAD_BASE_PRIORITY_MIN +THREAD_PRIORITY_BELOW_NORMAL :: (THREAD_PRIORITY_LOWEST+1) +THREAD_PRIORITY_NORMAL :: 0 +THREAD_PRIORITY_HIGHEST :: THREAD_BASE_PRIORITY_MAX +THREAD_PRIORITY_ABOVE_NORMAL :: (THREAD_PRIORITY_HIGHEST-1) +THREAD_PRIORITY_ERROR_RETURN :: (MAXLONG) +THREAD_PRIORITY_TIME_CRITICAL :: THREAD_BASE_PRIORITY_LOWRT +THREAD_PRIORITY_IDLE :: THREAD_BASE_PRIORITY_IDLE +THREAD_MODE_BACKGROUND_BEGIN :: 0x00010000 +THREAD_MODE_BACKGROUND_END :: 0x00020000 + +COPY_FILE_FAIL_IF_EXISTS :: 0x00000001 +COPY_FILE_RESTARTABLE :: 0x00000002 +COPY_FILE_OPEN_SOURCE_FOR_WRITE :: 0x00000004 +COPY_FILE_ALLOW_DECRYPTED_DESTINATION :: 0x00000008 +COPY_FILE_COPY_SYMLINK :: 0x00000800 +COPY_FILE_NO_BUFFERING :: 0x00001000 +COPY_FILE_REQUEST_SECURITY_PRIVILEGES :: 0x00002000 +COPY_FILE_RESUME_FROM_PAUSE :: 0x00004000 +COPY_FILE_NO_OFFLOAD :: 0x00040000 +COPY_FILE_IGNORE_EDP_BLOCK :: 0x00400000 +COPY_FILE_IGNORE_SOURCE_ENCRYPTION :: 0x00800000 +COPY_FILE_DONT_REQUEST_DEST_WRITE_DAC :: 0x02000000 +COPY_FILE_REQUEST_COMPRESSED_TRAFFIC :: 0x10000000 +COPY_FILE_OPEN_AND_COPY_REPARSE_POINT :: 0x00200000 +COPY_FILE_DIRECTORY :: 0x00000080 +COPY_FILE_SKIP_ALTERNATE_STREAMS :: 0x00008000 +COPY_FILE_DISABLE_PRE_ALLOCATION :: 0x04000000 +COPY_FILE_ENABLE_LOW_FREE_SPACE_MODE :: 0x08000000 SECTION_QUERY :: DWORD(0x0001) SECTION_MAP_WRITE :: DWORD(0x0002) diff --git a/core/sys/windows/types.odin b/core/sys/windows/types.odin index cd8bb4060..11b87e0dc 100644 --- a/core/sys/windows/types.odin +++ b/core/sys/windows/types.odin @@ -111,7 +111,7 @@ LPOVERLAPPED :: ^OVERLAPPED LPPROCESS_INFORMATION :: ^PROCESS_INFORMATION PSECURITY_ATTRIBUTES :: ^SECURITY_ATTRIBUTES LPSECURITY_ATTRIBUTES :: ^SECURITY_ATTRIBUTES -LPSTARTUPINFO :: ^STARTUPINFO +LPSTARTUPINFOW :: ^STARTUPINFOW LPTRACKMOUSEEVENT :: ^TRACKMOUSEEVENT VOID :: rawptr PVOID :: rawptr @@ -162,6 +162,8 @@ SIZE :: struct { PSIZE :: ^SIZE LPSIZE :: ^SIZE +MAXLONG :: 0x7fffffff + FILE_ATTRIBUTE_READONLY: DWORD : 0x00000001 FILE_ATTRIBUTE_HIDDEN: DWORD : 0x00000002 FILE_ATTRIBUTE_SYSTEM: DWORD : 0x00000004 @@ -2042,7 +2044,6 @@ TLS_OUT_OF_INDEXES: DWORD : 0xFFFFFFFF DLL_THREAD_DETACH: DWORD : 3 DLL_PROCESS_DETACH: DWORD : 0 -CREATE_SUSPENDED :: DWORD(0x00000004) INFINITE :: ~DWORD(0) @@ -2051,11 +2052,6 @@ DUPLICATE_SAME_ACCESS: DWORD : 0x00000002 CONDITION_VARIABLE_INIT :: CONDITION_VARIABLE{} SRWLOCK_INIT :: SRWLOCK{} -DETACHED_PROCESS: DWORD : 0x00000008 -CREATE_NEW_CONSOLE: DWORD : 0x00000010 -CREATE_NO_WINDOW: DWORD : 0x08000000 -CREATE_NEW_PROCESS_GROUP: DWORD : 0x00000200 -CREATE_UNICODE_ENVIRONMENT: DWORD : 0x00000400 STARTF_USESTDHANDLES: DWORD : 0x00000100 VOLUME_NAME_DOS: DWORD : 0x0 @@ -2418,8 +2414,7 @@ PROCESS_INFORMATION :: struct { dwThreadId: DWORD, } -// FYI: This is STARTUPINFOW, not STARTUPINFOA -STARTUPINFO :: struct { +STARTUPINFOW :: struct { cb: DWORD, lpReserved: LPWSTR, lpDesktop: LPWSTR, @@ -2450,6 +2445,20 @@ FILETIME_as_unix_nanoseconds :: proc "contextless" (ft: FILETIME) -> i64 { return (t - 116444736000000000) * 100 } +OBJECT_ATTRIBUTES :: struct { + Length: c_ulong, + RootDirectory: HANDLE, + ObjectName: ^UNICODE_STRING, + Attributes: c_ulong, + SecurityDescriptor: rawptr, + SecurityQualityOfService: rawptr, +} + +UNICODE_STRING :: struct { + Length: u16, + MaximumLength: u16, + Buffer: ^u16, +} OVERLAPPED :: struct { Internal: ^c_ulong, @@ -2459,6 +2468,13 @@ OVERLAPPED :: struct { hEvent: HANDLE, } +OVERLAPPED_ENTRY :: struct { + lpCompletionKey: c_ulong, + lpOverlapped: ^OVERLAPPED, + Internal: c_ulong, + dwNumberOfBytesTransferred: DWORD, +} + LPOVERLAPPED_COMPLETION_ROUTINE :: #type proc "stdcall" ( dwErrorCode: DWORD, dwNumberOfBytesTransfered: DWORD, diff --git a/core/sys/windows/user32.odin b/core/sys/windows/user32.odin index c1a6791cc..05d6837dd 100644 --- a/core/sys/windows/user32.odin +++ b/core/sys/windows/user32.odin @@ -212,7 +212,7 @@ foreign user32 { GetRegisteredRawInputDevices :: proc(pRawInputDevices: PRAWINPUTDEVICE, puiNumDevices: PUINT, cbSize: UINT) -> UINT --- RegisterRawInputDevices :: proc(pRawInputDevices: PCRAWINPUTDEVICE, uiNumDevices: UINT, cbSize: UINT) -> BOOL --- - SendInput :: proc(cInputs: UINT, pInputs: [^]INPUT, cbSize: ^c_int) -> UINT --- + SendInput :: proc(cInputs: UINT, pInputs: [^]INPUT, cbSize: c_int) -> UINT --- SetLayeredWindowAttributes :: proc(hWnd: HWND, crKey: COLORREF, bAlpha: BYTE, dwFlags: DWORD) -> BOOL --- diff --git a/core/sys/windows/util.odin b/core/sys/windows/util.odin index 7f8e51d38..9c9d8f7b4 100644 --- a/core/sys/windows/util.odin +++ b/core/sys/windows/util.odin @@ -457,8 +457,8 @@ run_as_user :: proc(username, password, application, commandline: string, pi: ^P // err := GetLastError(); // fmt.printf("GetLastError: %v\n", err); } - si := STARTUPINFO{} - si.cb = size_of(STARTUPINFO) + si := STARTUPINFOW{} + si.cb = size_of(STARTUPINFOW) pi := pi ok = bool(CreateProcessAsUserW( diff --git a/core/sys/windows/ws2_32.odin b/core/sys/windows/ws2_32.odin index 30515d430..631ef4241 100644 --- a/core/sys/windows/ws2_32.odin +++ b/core/sys/windows/ws2_32.odin @@ -1,18 +1,78 @@ // +build windows package sys_windows -foreign import ws2_32 "system:Ws2_32.lib" +// Define flags to be used with the WSAAsyncSelect() call. +FD_READ :: 0x01 +FD_WRITE :: 0x02 +FD_OOB :: 0x04 +FD_ACCEPT :: 0x08 +FD_CONNECT :: 0x10 +FD_CLOSE :: 0x20 +FD_MAX_EVENTS :: 10 +INADDR_LOOPBACK :: 0x7f000001 + +// Event flag definitions for WSAPoll(). +POLLRDNORM :: 0x0100 +POLLRDBAND :: 0x0200 +POLLIN :: (POLLRDNORM | POLLRDBAND) +POLLPRI :: 0x0400 +POLLWRNORM :: 0x0010 +POLLOUT :: (POLLWRNORM) +POLLWRBAND :: 0x0020 +POLLERR :: 0x0001 +POLLHUP :: 0x0002 +POLLNVAL :: 0x0004 + +WSA_POLLFD::struct{ + fd:SOCKET, + events:c_short, + revents:c_short, +} + +WSANETWORKEVENTS :: struct { + lNetworkEvents: c_long, + iErrorCode: [FD_MAX_EVENTS]c_int, +} + +WSAEVENT :: HANDLE + +WSAID_ACCEPTEX :: GUID{0xb5367df1, 0xcbac, 0x11cf, {0x95, 0xca, 0x00, 0x80, 0x5f, 0x48, 0xa1, 0x92}} +WSAID_GETACCEPTEXSOCKADDRS :: GUID{0xb5367df2, 0xcbac, 0x11cf, {0x95, 0xca, 0x00, 0x80, 0x5f, 0x48, 0xa1, 0x92}} +SIO_GET_EXTENSION_FUNCTION_POINTER :: IOC_INOUT | IOC_WS2 | 6 +IOC_OUT :: 0x40000000 +IOC_IN :: 0x80000000 +IOC_INOUT :: (IOC_IN | IOC_OUT) +IOC_WS2 :: 0x08000000 +/* +Example Load: + load_accept_ex :: proc(listener: SOCKET, fn_acceptex: rawptr) { + bytes: u32 + guid_accept_ex := WSAID_ACCEPTEX + rc := WSAIoctl(listener, SIO_GET_EXTENSION_FUNCTION_POINTER, &guid_accept_ex, size_of(guid_accept_ex), + fn_acceptex, size_of(fn_acceptex), &bytes, nil, nil,) + assert(rc != windows.SOCKET_ERROR) + } +*/ + +foreign import ws2_32 "system:Ws2_32.lib" @(default_calling_convention="stdcall") foreign ws2_32 { + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsastartup) WSAStartup :: proc(wVersionRequested: WORD, lpWSAData: LPWSADATA) -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsacleanup) WSACleanup :: proc() -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsagetlasterror) WSAGetLastError :: proc() -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsapoll) + WSAPoll :: proc(fdArray: ^WSA_POLLFD, fds: c_ulong, timeout: c_int) -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsaduplicatesocketw) WSADuplicateSocketW :: proc( s: SOCKET, dwProcessId: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFO, ) -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsasend) WSASend :: proc( s: SOCKET, lpBuffers: LPWSABUF, @@ -22,6 +82,7 @@ foreign ws2_32 { lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE, ) -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsarecv) WSARecv :: proc( s: SOCKET, lpBuffers: LPWSABUF, @@ -31,6 +92,7 @@ foreign ws2_32 { lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE, ) -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsasocketw) WSASocketW :: proc( af: c_int, kind: c_int, @@ -39,16 +101,32 @@ foreign ws2_32 { g: GROUP, dwFlags: DWORD, ) -> SOCKET --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsaioctl) + WSAIoctl :: proc(s: SOCKET, dwIoControlCode: DWORD, lpvInBuffer: rawptr, cbInBuffer: DWORD, lpvOutBuffer: rawptr, cbOutBuffer: DWORD, lpcbBytesReturned: ^DWORD, lpOverlapped: ^OVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE) -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsaeventselect) + WSAEventSelect :: proc(s: SOCKET, hEventObject: WSAEVENT, lNetworkEvents: i32) -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsawaitformultipleevents) + WSAWaitForMultipleEvents :: proc(cEvents: DWORD, lphEvents: ^WSAEVENT, fWaitAll: BOOL, dwTimeout: DWORD, fAlertable: BOOL) -> DWORD --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsaenumnetworkevents) + WSAEnumNetworkEvents :: proc(s: SOCKET, hEventObject: WSAEVENT, lpNetworkEvents: ^WSANETWORKEVENTS) -> c_int --- + //[MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsagetoverlappedresult) + WSAGetOverlappedResult :: proc(s: SOCKET, lpOverlapped: ^OVERLAPPED, lpcbTransfer: ^DWORD, fWait: BOOL, lpdwFlags: ^DWORD) -> BOOL --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-socket) socket :: proc( af: c_int, type: c_int, protocol: c_int, ) -> SOCKET --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-ioctlsocket) ioctlsocket :: proc(s: SOCKET, cmd: c_long, argp: ^c_ulong) -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-closesocket) closesocket :: proc(socket: SOCKET) -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock/nf-winsock-recv) recv :: proc(socket: SOCKET, buf: rawptr, len: c_int, flags: c_int) -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-send) send :: proc(socket: SOCKET, buf: rawptr, len: c_int, flags: c_int) -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-recvfrom) recvfrom :: proc( socket: SOCKET, buf: rawptr, @@ -57,6 +135,7 @@ foreign ws2_32 { addr: ^SOCKADDR_STORAGE_LH, addrlen: ^c_int, ) -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-sendto) sendto :: proc( socket: SOCKET, buf: rawptr, @@ -65,9 +144,12 @@ foreign ws2_32 { addr: ^SOCKADDR_STORAGE_LH, addrlen: c_int, ) -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-shutdown) shutdown :: proc(socket: SOCKET, how: c_int) -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-accept) accept :: proc(socket: SOCKET, address: ^SOCKADDR_STORAGE_LH, address_len: ^c_int) -> SOCKET --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt) setsockopt :: proc( s: SOCKET, level: c_int, @@ -75,19 +157,28 @@ foreign ws2_32 { optval: rawptr, optlen: c_int, ) -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockname) getsockname :: proc(socket: SOCKET, address: ^SOCKADDR_STORAGE_LH, address_len: ^c_int) -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getpeername) getpeername :: proc(socket: SOCKET, address: ^SOCKADDR_STORAGE_LH, address_len: ^c_int) -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-bind) bind :: proc(socket: SOCKET, address: ^SOCKADDR_STORAGE_LH, address_len: socklen_t) -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-listen) listen :: proc(socket: SOCKET, backlog: c_int) -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-connect) connect :: proc(socket: SOCKET, address: ^SOCKADDR_STORAGE_LH, len: c_int) -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/ws2tcpip/nf-ws2tcpip-getaddrinfo) getaddrinfo :: proc( node: cstring, service: cstring, hints: ^ADDRINFOA, res: ^^ADDRINFOA, ) -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/ws2tcpip/nf-ws2tcpip-freeaddrinfo) freeaddrinfo :: proc(res: ^ADDRINFOA) --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/ws2tcpip/nf-ws2tcpip-freeaddrinfoexw) FreeAddrInfoExW :: proc(pAddrInfoEx: PADDRINFOEXW) --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/ws2tcpip/nf-ws2tcpip-getaddrinfoexw) GetAddrInfoExW :: proc( pName: PCWSTR, pServiceName: PCWSTR, @@ -99,7 +190,7 @@ foreign ws2_32 { lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE, lpHandle: LPHANDLE) -> INT --- - + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-select) select :: proc( nfds: c_int, readfds: ^fd_set, @@ -107,6 +198,7 @@ foreign ws2_32 { exceptfds: ^fd_set, timeout: ^timeval, ) -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt) getsockopt :: proc( s: SOCKET, level: c_int, @@ -114,5 +206,4 @@ foreign ws2_32 { optval: ^c_char, optlen: ^c_int, ) -> c_int --- - } diff --git a/examples/all/all_vendor.odin b/examples/all/all_vendor.odin index bd5921e6a..f66e3cca1 100644 --- a/examples/all/all_vendor.odin +++ b/examples/all/all_vendor.odin @@ -1,7 +1,10 @@ package all import botan "vendor:botan" +import cgltf "vendor:cgltf" +// import commonmark "vendor:commonmark" import ENet "vendor:ENet" +import exr "vendor:OpenEXRCore" import ggpo "vendor:ggpo" import gl "vendor:OpenGL" import glfw "vendor:glfw" @@ -9,8 +12,7 @@ import microui "vendor:microui" import miniaudio "vendor:miniaudio" import PM "vendor:portmidi" import rl "vendor:raylib" -import exr "vendor:OpenEXRCore" -import cgltf "vendor:cgltf" +import zlib "vendor:zlib" import SDL "vendor:sdl2" import SDLNet "vendor:sdl2/net" @@ -24,8 +26,14 @@ import NS "vendor:darwin/Foundation" import MTL "vendor:darwin/Metal" import CA "vendor:darwin/QuartzCore" +// NOTE(bill): only one can be checked at a time +import lua_5_4 "vendor:lua/5.4" + _ :: botan +_ :: cgltf +// _ :: commonmark _ :: ENet +_ :: exr _ :: ggpo _ :: gl _ :: glfw @@ -33,8 +41,7 @@ _ :: microui _ :: miniaudio _ :: PM _ :: rl -_ :: exr -_ :: cgltf +_ :: zlib _ :: SDL _ :: SDLNet @@ -46,4 +53,6 @@ _ :: vk _ :: NS _ :: MTL -_ :: CA \ No newline at end of file +_ :: CA + +_ :: lua_5_4 \ No newline at end of file diff --git a/misc/remove_libraries_for_other_platforms.sh b/misc/remove_libraries_for_other_platforms.sh new file mode 100755 index 000000000..db2e33ccd --- /dev/null +++ b/misc/remove_libraries_for_other_platforms.sh @@ -0,0 +1,56 @@ +#!/bin/bash +OS=$(uname) + +panic() { + printf "%s\n" "$1" + exit 1 +} + +assert_vendor() { + if [ $(basename $(pwd)) != 'vendor' ]; then + panic "Not in vendor directory!" + fi +} + +remove_windows_libraries() { + find . -type f -name '*.dll' | xargs rm -f + find . -type f -name '*.lib' | xargs rm -f + find . -type d -name 'windows' | xargs rm -rf +} + +remove_macos_libraries() { + find . -type f -name '*.dylib' | xargs rm -f + find . -type d -name '*macos*' | xargs rm -rf +} + +remove_linux_libraries() { + find . -type f -name '*.so' | xargs rm -f + find . -type d -name 'linux' | xargs rm -rf +} + +case $OS in + Linux) + assert_vendor + remove_windows_libraries + remove_macos_libraries + ;; + Darwin) + assert_vendor + remove_windows_libraries + remove_linux_libraries + ;; + OpenBSD) + assert_vendor + remove_windows_libraries + remove_macos_libraries + remove_linux_libraries + ;; + FreeBSD) + assert_vendor + remove_windows_libraries + remove_macos_libraries + remove_linux_libraries + ;; +*) + panic "Platform unsupported!" +esac diff --git a/src/build_settings.cpp b/src/build_settings.cpp index 0aa9977a5..ac033df71 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -7,6 +7,8 @@ // #define DEFAULT_TO_THREADED_CHECKER // #endif +#define DEFAULT_MAX_ERROR_COLLECTOR_COUNT (36) + enum TargetOsKind : u16 { TargetOs_Invalid, @@ -313,6 +315,8 @@ struct BuildContext { RelocMode reloc_mode; bool disable_red_zone; + isize max_error_count; + u32 cmd_doc_flags; Array extra_packages; @@ -344,6 +348,14 @@ gb_internal bool global_ignore_warnings(void) { return build_context.ignore_warnings; } +gb_internal isize MAX_ERROR_COLLECTOR_COUNT(void) { + if (build_context.max_error_count <= 0) { + return DEFAULT_MAX_ERROR_COLLECTOR_COUNT; + } + return build_context.max_error_count; +} + + gb_global TargetMetrics target_windows_i386 = { TargetOs_windows, @@ -1081,6 +1093,10 @@ gb_internal void init_build_context(TargetMetrics *cross_target) { bc->ODIN_VERSION = ODIN_VERSION; bc->ODIN_ROOT = odin_root_dir(); + if (bc->max_error_count <= 0) { + bc->max_error_count = DEFAULT_MAX_ERROR_COLLECTOR_COUNT; + } + { char const *found = gb_get_env("ODIN_ERROR_POS_STYLE", permanent_allocator()); if (found) { diff --git a/src/check_decl.cpp b/src/check_decl.cpp index 5c25dd6a3..a984f87a3 100644 --- a/src/check_decl.cpp +++ b/src/check_decl.cpp @@ -131,6 +131,14 @@ gb_internal void check_init_variables(CheckerContext *ctx, Entity **lhs, isize l if (d != nullptr) { d->init_expr = o->expr; } + + if (o->type && is_type_no_copy(o->type)) { + begin_error_block(); + if (check_no_copy_assignment(*o, str_lit("initialization"))) { + error_line("\tInitialization of a #no_copy type must be either implicitly zero, a constant literal, or a return value from a call expression"); + } + end_error_block(); + } } if (rhs_count > 0 && lhs_count != rhs_count) { error(lhs[0]->token, "Assignment count mismatch '%td' = '%td'", lhs_count, rhs_count); diff --git a/src/check_expr.cpp b/src/check_expr.cpp index f27675301..42306489b 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -1631,7 +1631,9 @@ gb_internal Entity *check_ident(CheckerContext *c, Operand *o, Ast *n, Type *nam } return e; case Entity_LibraryName: - error(n, "Use of library '%.*s' not in foreign block", LIT(name)); + if (!allow_import_name) { + error(n, "Use of library '%.*s' not in foreign block", LIT(name)); + } return e; case Entity_Label: @@ -5043,6 +5045,21 @@ gb_internal isize add_dependencies_from_unpacking(CheckerContext *c, Entity **lh return tuple_count; } +gb_internal bool check_no_copy_assignment(Operand const &o, String const &context) { + if (o.type && is_type_no_copy(o.type)) { + Ast *expr = unparen_expr(o.expr); + if (expr && o.mode != Addressing_Constant) { + if (expr->kind == Ast_CallExpr) { + // Okay + } else { + error(o.expr, "Invalid use of #no_copy value in %.*s", LIT(context)); + return true; + } + } + } + return false; +} + gb_internal bool check_assignment_arguments(CheckerContext *ctx, Array const &lhs, Array *operands, Slice const &rhs) { bool optional_ok = false; @@ -5114,6 +5131,7 @@ gb_internal bool check_assignment_arguments(CheckerContext *ctx, Array for (Entity *e : tuple->variables) { o.type = e->type; array_add(operands, o); + check_no_copy_assignment(o, str_lit("assignment")); } tuple_index += tuple->variables.count; @@ -5952,6 +5970,10 @@ gb_internal CallArgumentData check_call_arguments(CheckerContext *c, Operand *op } } + for (Operand const &o : operands) { + check_no_copy_assignment(o, str_lit("call expression")); + } + if (operand->mode == Addressing_ProcGroup) { check_entity_decl(c, operand->proc_group, nullptr, nullptr); diff --git a/src/check_stmt.cpp b/src/check_stmt.cpp index 4e6623fc1..388a64e00 100644 --- a/src/check_stmt.cpp +++ b/src/check_stmt.cpp @@ -326,7 +326,6 @@ gb_internal bool check_is_terminating(Ast *node, String const &label) { - gb_internal Type *check_assignment_variable(CheckerContext *ctx, Operand *lhs, Operand *rhs) { if (rhs->mode == Addressing_Invalid) { return nullptr; @@ -339,6 +338,8 @@ gb_internal Type *check_assignment_variable(CheckerContext *ctx, Operand *lhs, O Ast *node = unparen_expr(lhs->expr); + check_no_copy_assignment(*rhs, str_lit("assignment")); + // NOTE(bill): Ignore assignments to '_' if (is_blank_ident(node)) { check_assignment(ctx, rhs, nullptr, str_lit("assignment to '_' identifier")); @@ -400,6 +401,7 @@ gb_internal Type *check_assignment_variable(CheckerContext *ctx, Operand *lhs, O } Type *assignment_type = lhs->type; + switch (lhs->mode) { case Addressing_Invalid: return nullptr; diff --git a/src/check_type.cpp b/src/check_type.cpp index 7444f88be..b687e838e 100644 --- a/src/check_type.cpp +++ b/src/check_type.cpp @@ -609,8 +609,9 @@ gb_internal void check_struct_type(CheckerContext *ctx, Type *struct_type, Ast * context = str_lit("struct #raw_union"); } - struct_type->Struct.scope = ctx->scope; - struct_type->Struct.is_packed = st->is_packed; + struct_type->Struct.scope = ctx->scope; + struct_type->Struct.is_packed = st->is_packed; + struct_type->Struct.is_no_copy = st->is_no_copy; struct_type->Struct.polymorphic_params = check_record_polymorphic_params( ctx, st->polymorphic_params, &struct_type->Struct.is_polymorphic, diff --git a/src/checker.cpp b/src/checker.cpp index 696802e99..a6768d495 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -3081,6 +3081,54 @@ gb_internal DECL_ATTRIBUTE_PROC(proc_decl_attribute) { } error(elem, "Expected a procedure entity for '%.*s'", LIT(name)); return false; + } else if (name == "deferred_in_by_ptr") { + if (value != nullptr) { + Operand o = {}; + check_expr(c, &o, value); + Entity *e = entity_of_node(o.expr); + if (e != nullptr && e->kind == Entity_Procedure) { + if (ac->deferred_procedure.entity != nullptr) { + error(elem, "Previous usage of a 'deferred_*' attribute"); + } + ac->deferred_procedure.kind = DeferredProcedure_in_by_ptr; + ac->deferred_procedure.entity = e; + return true; + } + } + error(elem, "Expected a procedure entity for '%.*s'", LIT(name)); + return false; + } else if (name == "deferred_out_by_ptr") { + if (value != nullptr) { + Operand o = {}; + check_expr(c, &o, value); + Entity *e = entity_of_node(o.expr); + if (e != nullptr && e->kind == Entity_Procedure) { + if (ac->deferred_procedure.entity != nullptr) { + error(elem, "Previous usage of a 'deferred_*' attribute"); + } + ac->deferred_procedure.kind = DeferredProcedure_out_by_ptr; + ac->deferred_procedure.entity = e; + return true; + } + } + error(elem, "Expected a procedure entity for '%.*s'", LIT(name)); + return false; + } else if (name == "deferred_in_out_by_ptr") { + if (value != nullptr) { + Operand o = {}; + check_expr(c, &o, value); + Entity *e = entity_of_node(o.expr); + if (e != nullptr && e->kind == Entity_Procedure) { + if (ac->deferred_procedure.entity != nullptr) { + error(elem, "Previous usage of a 'deferred_*' attribute"); + } + ac->deferred_procedure.kind = DeferredProcedure_in_out_by_ptr; + ac->deferred_procedure.entity = e; + return true; + } + } + error(elem, "Expected a procedure entity for '%.*s'", LIT(name)); + return false; } else if (name == "link_name") { ExactValue ev = check_decl_attribute_value(c, value); @@ -5438,6 +5486,26 @@ gb_internal void add_untyped_expressions(CheckerInfo *cinfo, UntypedExprInfoMap map_clear(untyped); } +gb_internal Type *tuple_to_pointers(Type *ot) { + if (ot == nullptr) { + return nullptr; + } + GB_ASSERT(ot->kind == Type_Tuple); + + + Type *t = alloc_type_tuple(); + t->Tuple.variables = slice_make(heap_allocator(), ot->Tuple.variables.count); + + Scope *scope = nullptr; + for_array(i, t->Tuple.variables) { + Entity *e = ot->Tuple.variables[i]; + t->Tuple.variables[i] = alloc_entity_variable(scope, e->token, alloc_type_pointer(e->type)); + } + t->Tuple.is_packed = ot->Tuple.is_packed; + + return t; +} + gb_internal void check_deferred_procedures(Checker *c) { for (Entity *src = nullptr; mpsc_dequeue(&c->procs_with_deferred_to_check, &src); /**/) { GB_ASSERT(src->kind == Entity_Procedure); @@ -5449,18 +5517,13 @@ gb_internal void check_deferred_procedures(Checker *c) { char const *attribute = "deferred_none"; switch (dst_kind) { - case DeferredProcedure_none: - attribute = "deferred_none"; - break; - case DeferredProcedure_in: - attribute = "deferred_in"; - break; - case DeferredProcedure_out: - attribute = "deferred_out"; - break; - case DeferredProcedure_in_out: - attribute = "deferred_in_out"; - break; + case DeferredProcedure_none: attribute = "deferred_none"; break; + case DeferredProcedure_in: attribute = "deferred_in"; break; + case DeferredProcedure_out: attribute = "deferred_out"; break; + case DeferredProcedure_in_out: attribute = "deferred_in_out"; break; + case DeferredProcedure_in_by_ptr: attribute = "deferred_in_by_ptr"; break; + case DeferredProcedure_out_by_ptr: attribute = "deferred_out_by_ptr"; break; + case DeferredProcedure_in_out_by_ptr: attribute = "deferred_in_out_by_ptr"; break; } if (is_type_polymorphic(src->type) || is_type_polymorphic(dst->type)) { @@ -5474,118 +5537,146 @@ gb_internal void check_deferred_procedures(Checker *c) { Type *src_results = base_type(src->type)->Proc.results; Type *dst_params = base_type(dst->type)->Proc.params; - if (dst_kind == DeferredProcedure_none) { - if (dst_params == nullptr) { - // Okay - continue; - } + bool by_ptr = false; + switch (dst_kind) { + case DeferredProcedure_in_by_ptr: + by_ptr = true; + src_params = tuple_to_pointers(src_params); + break; + case DeferredProcedure_out_by_ptr: + by_ptr = true; + src_results = tuple_to_pointers(src_results); + break; + case DeferredProcedure_in_out_by_ptr: + by_ptr = true; + src_params = tuple_to_pointers(src_params); + src_results = tuple_to_pointers(src_results); + break; + } - error(src->token, "Deferred procedure '%.*s' must have no input parameters", LIT(dst->token.string)); - } else if (dst_kind == DeferredProcedure_in) { - if (src_params == nullptr && dst_params == nullptr) { - // Okay - continue; - } - if ((src_params == nullptr && dst_params != nullptr) || - (src_params != nullptr && dst_params == nullptr)) { - error(src->token, "Deferred procedure '%.*s' parameters do not match the inputs of initial procedure '%.*s'", LIT(src->token.string), LIT(dst->token.string)); - continue; - } + switch (dst_kind) { + case DeferredProcedure_none: + { + if (dst_params == nullptr) { + // Okay + continue; + } - GB_ASSERT(src_params->kind == Type_Tuple); - GB_ASSERT(dst_params->kind == Type_Tuple); + error(src->token, "Deferred procedure '%.*s' must have no input parameters", LIT(dst->token.string)); + } break; + case DeferredProcedure_in: + case DeferredProcedure_in_by_ptr: + { + if (src_params == nullptr && dst_params == nullptr) { + // Okay + continue; + } + if ((src_params == nullptr && dst_params != nullptr) || + (src_params != nullptr && dst_params == nullptr)) { + error(src->token, "Deferred procedure '%.*s' parameters do not match the inputs of initial procedure '%.*s'", LIT(src->token.string), LIT(dst->token.string)); + continue; + } - if (are_types_identical(src_params, dst_params)) { - // Okay! - } else { - gbString s = type_to_string(src_params); - gbString d = type_to_string(dst_params); - error(src->token, "Deferred procedure '%.*s' parameters do not match the inputs of initial procedure '%.*s':\n\t(%s) =/= (%s)", - LIT(src->token.string), LIT(dst->token.string), - s, d - ); - gb_string_free(d); - gb_string_free(s); - continue; - } - - } else if (dst_kind == DeferredProcedure_out) { - if (src_results == nullptr && dst_params == nullptr) { - // Okay - continue; - } - if ((src_results == nullptr && dst_params != nullptr) || - (src_results != nullptr && dst_params == nullptr)) { - error(src->token, "Deferred procedure '%.*s' parameters do not match the results of initial procedure '%.*s'", LIT(src->token.string), LIT(dst->token.string)); - continue; - } - - GB_ASSERT(src_results->kind == Type_Tuple); - GB_ASSERT(dst_params->kind == Type_Tuple); - - if (are_types_identical(src_results, dst_params)) { - // Okay! - } else { - gbString s = type_to_string(src_results); - gbString d = type_to_string(dst_params); - error(src->token, "Deferred procedure '%.*s' parameters do not match the results of initial procedure '%.*s':\n\t(%s) =/= (%s)", - LIT(src->token.string), LIT(dst->token.string), - s, d - ); - gb_string_free(d); - gb_string_free(s); - continue; - } - } else if (dst_kind == DeferredProcedure_in_out) { - if (src_params == nullptr && src_results == nullptr && dst_params == nullptr) { - // Okay - continue; - } - - GB_ASSERT(dst_params->kind == Type_Tuple); - - Type *tsrc = alloc_type_tuple(); - auto &sv = tsrc->Tuple.variables; - auto const &dv = dst_params->Tuple.variables; - gb_unused(dv); - - isize len = 0; - if (src_params != nullptr) { GB_ASSERT(src_params->kind == Type_Tuple); - len += src_params->Tuple.variables.count; - } - if (src_results != nullptr) { + GB_ASSERT(dst_params->kind == Type_Tuple); + + if (are_types_identical(src_params, dst_params)) { + // Okay! + } else { + gbString s = type_to_string(src_params); + gbString d = type_to_string(dst_params); + error(src->token, "Deferred procedure '%.*s' parameters do not match the inputs of initial procedure '%.*s':\n\t(%s) =/= (%s)", + LIT(src->token.string), LIT(dst->token.string), + s, d + ); + gb_string_free(d); + gb_string_free(s); + continue; + } + } break; + case DeferredProcedure_out: + case DeferredProcedure_out_by_ptr: + { + if (src_results == nullptr && dst_params == nullptr) { + // Okay + continue; + } + if ((src_results == nullptr && dst_params != nullptr) || + (src_results != nullptr && dst_params == nullptr)) { + error(src->token, "Deferred procedure '%.*s' parameters do not match the results of initial procedure '%.*s'", LIT(src->token.string), LIT(dst->token.string)); + continue; + } + GB_ASSERT(src_results->kind == Type_Tuple); - len += src_results->Tuple.variables.count; - } - slice_init(&sv, heap_allocator(), len); - isize offset = 0; - if (src_params != nullptr) { - for_array(i, src_params->Tuple.variables) { - sv[offset++] = src_params->Tuple.variables[i]; + GB_ASSERT(dst_params->kind == Type_Tuple); + + if (are_types_identical(src_results, dst_params)) { + // Okay! + } else { + gbString s = type_to_string(src_results); + gbString d = type_to_string(dst_params); + error(src->token, "Deferred procedure '%.*s' parameters do not match the results of initial procedure '%.*s':\n\t(%s) =/= (%s)", + LIT(src->token.string), LIT(dst->token.string), + s, d + ); + gb_string_free(d); + gb_string_free(s); + continue; } - } - if (src_results != nullptr) { - for_array(i, src_results->Tuple.variables) { - sv[offset++] = src_results->Tuple.variables[i]; + } break; + case DeferredProcedure_in_out: + case DeferredProcedure_in_out_by_ptr: + { + if (src_params == nullptr && src_results == nullptr && dst_params == nullptr) { + // Okay + continue; } - } - GB_ASSERT(offset == len); + + GB_ASSERT(dst_params->kind == Type_Tuple); + + Type *tsrc = alloc_type_tuple(); + auto &sv = tsrc->Tuple.variables; + auto const &dv = dst_params->Tuple.variables; + gb_unused(dv); + + isize len = 0; + if (src_params != nullptr) { + GB_ASSERT(src_params->kind == Type_Tuple); + len += src_params->Tuple.variables.count; + } + if (src_results != nullptr) { + GB_ASSERT(src_results->kind == Type_Tuple); + len += src_results->Tuple.variables.count; + } + slice_init(&sv, heap_allocator(), len); + isize offset = 0; + if (src_params != nullptr) { + for_array(i, src_params->Tuple.variables) { + sv[offset++] = src_params->Tuple.variables[i]; + } + } + if (src_results != nullptr) { + for_array(i, src_results->Tuple.variables) { + sv[offset++] = src_results->Tuple.variables[i]; + } + } + GB_ASSERT(offset == len); - if (are_types_identical(tsrc, dst_params)) { - // Okay! - } else { - gbString s = type_to_string(tsrc); - gbString d = type_to_string(dst_params); - error(src->token, "Deferred procedure '%.*s' parameters do not match the results of initial procedure '%.*s':\n\t(%s) =/= (%s)", - LIT(src->token.string), LIT(dst->token.string), - s, d - ); - gb_string_free(d); - gb_string_free(s); - continue; - } + if (are_types_identical(tsrc, dst_params)) { + // Okay! + } else { + gbString s = type_to_string(tsrc); + gbString d = type_to_string(dst_params); + error(src->token, "Deferred procedure '%.*s' parameters do not match the results of initial procedure '%.*s':\n\t(%s) =/= (%s)", + LIT(src->token.string), LIT(dst->token.string), + s, d + ); + gb_string_free(d); + gb_string_free(s); + continue; + } + } break; } } diff --git a/src/checker.hpp b/src/checker.hpp index 2918b7e83..1a95e2772 100644 --- a/src/checker.hpp +++ b/src/checker.hpp @@ -92,6 +92,10 @@ enum DeferredProcedureKind { DeferredProcedure_in, DeferredProcedure_out, DeferredProcedure_in_out, + + DeferredProcedure_in_by_ptr, + DeferredProcedure_out_by_ptr, + DeferredProcedure_in_out_by_ptr, }; struct DeferredProcedure { DeferredProcedureKind kind; diff --git a/src/error.cpp b/src/error.cpp index 2974dc039..e3e1381f4 100644 --- a/src/error.cpp +++ b/src/error.cpp @@ -14,8 +14,6 @@ struct ErrorCollector { gb_global ErrorCollector global_error_collector; -#define MAX_ERROR_COLLECTOR_COUNT (36) - gb_internal bool any_errors(void) { return global_error_collector.count.load() != 0; @@ -28,6 +26,8 @@ gb_internal void init_global_error_collector(void) { array_init(&global_files, heap_allocator(), 1, 4096); } +gb_internal isize MAX_ERROR_COLLECTOR_COUNT(void); + // temporary // defined in build_settings.cpp @@ -356,7 +356,7 @@ gb_internal void error_va(TokenPos const &pos, TokenPos end, char const *fmt, va show_error_on_line(pos, end); } mutex_unlock(&global_error_collector.mutex); - if (global_error_collector.count > MAX_ERROR_COLLECTOR_COUNT) { + if (global_error_collector.count > MAX_ERROR_COLLECTOR_COUNT()) { gb_exit(1); } } @@ -407,7 +407,7 @@ gb_internal void error_no_newline_va(TokenPos const &pos, char const *fmt, va_li error_out_va(fmt, va); } mutex_unlock(&global_error_collector.mutex); - if (global_error_collector.count > MAX_ERROR_COLLECTOR_COUNT) { + if (global_error_collector.count > MAX_ERROR_COLLECTOR_COUNT()) { gb_exit(1); } } @@ -431,7 +431,7 @@ gb_internal void syntax_error_va(TokenPos const &pos, TokenPos end, char const * } mutex_unlock(&global_error_collector.mutex); - if (global_error_collector.count > MAX_ERROR_COLLECTOR_COUNT) { + if (global_error_collector.count > MAX_ERROR_COLLECTOR_COUNT()) { gb_exit(1); } } diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index d8ff01554..4d8e13f0f 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -462,6 +462,8 @@ gb_internal lbValue lb_hasher_proc_for_type(lbModule *m, Type *type) { } +#define LLVM_SET_VALUE_NAME(value, name) LLVMSetValueName2((value), (name), gb_count_of((name))-1); + gb_internal lbValue lb_map_get_proc_for_type(lbModule *m, Type *type) { GB_ASSERT(!build_context.dynamic_map_calls); type = base_type(type); @@ -486,7 +488,6 @@ gb_internal lbValue lb_map_get_proc_for_type(lbModule *m, Type *type) { defer (lb_end_procedure_body(p)); LLVMSetLinkage(p->value, LLVMInternalLinkage); - // lb_add_attribute_to_proc(m, p->value, "readonly"); lb_add_attribute_to_proc(m, p->value, "nounwind"); // if (build_context.ODIN_DEBUG) { lb_add_attribute_to_proc(m, p->value, "noinline"); @@ -499,45 +500,56 @@ gb_internal lbValue lb_map_get_proc_for_type(lbModule *m, Type *type) { lbValue h = {y, t_uintptr}; lbValue key_ptr = {z, t_rawptr}; + LLVM_SET_VALUE_NAME(h.value, "hash"); + lb_add_proc_attribute_at_index(p, 1+0, "nonnull"); - lb_add_proc_attribute_at_index(p, 1+0, "noalias"); lb_add_proc_attribute_at_index(p, 1+0, "readonly"); lb_add_proc_attribute_at_index(p, 1+2, "nonnull"); - lb_add_proc_attribute_at_index(p, 1+2, "noalias"); lb_add_proc_attribute_at_index(p, 1+2, "readonly"); - lbBlock *loop_block = lb_create_block(p, "loop"); - lbBlock *hash_block = lb_create_block(p, "hash"); - lbBlock *probe_block = lb_create_block(p, "probe"); - lbBlock *increment_block = lb_create_block(p, "increment"); + lbBlock *loop_block = lb_create_block(p, "loop"); + lbBlock *hash_block = lb_create_block(p, "hash"); + lbBlock *probe_block = lb_create_block(p, "probe"); + lbBlock *increment_block = lb_create_block(p, "increment"); lbBlock *hash_compare_block = lb_create_block(p, "hash_compare"); - lbBlock *key_compare_block = lb_create_block(p, "key_compare"); - lbBlock *value_block = lb_create_block(p, "value"); - lbBlock *nil_block = lb_create_block(p, "nil"); + lbBlock *key_compare_block = lb_create_block(p, "key_compare"); + lbBlock *value_block = lb_create_block(p, "value"); + lbBlock *nil_block = lb_create_block(p, "nil"); map_ptr = lb_emit_conv(p, map_ptr, t_raw_map_ptr); + LLVM_SET_VALUE_NAME(map_ptr.value, "map_ptr"); + lbValue map = lb_emit_load(p, map_ptr); + LLVM_SET_VALUE_NAME(map.value, "map"); lbValue length = lb_map_len(p, map); + LLVM_SET_VALUE_NAME(length.value, "length"); lb_emit_if(p, lb_emit_comp(p, Token_CmpEq, length, lb_const_nil(m, t_int)), nil_block, hash_block); lb_start_block(p, hash_block); key_ptr = lb_emit_conv(p, key_ptr, alloc_type_pointer(type->Map.key)); + LLVM_SET_VALUE_NAME(key_ptr.value, "key_ptr"); lbValue key = lb_emit_load(p, key_ptr); + LLVM_SET_VALUE_NAME(key.value, "key"); lbAddr pos = lb_add_local_generated(p, t_uintptr, false); lbAddr distance = lb_add_local_generated(p, t_uintptr, true); + LLVM_SET_VALUE_NAME(pos.addr.value, "pos"); + LLVM_SET_VALUE_NAME(distance.addr.value, "distance"); + lbValue capacity = lb_map_cap(p, map); - lbValue mask = lb_emit_conv(p, lb_emit_arith(p, Token_Sub, capacity, lb_const_int(m, t_int, 1), t_int), t_uintptr); + LLVM_SET_VALUE_NAME(capacity.value, "capacity"); + lbValue cap_minus_1 = lb_emit_arith(p, Token_Sub, capacity, lb_const_int(m, t_int, 1), t_int); + lbValue mask = lb_emit_conv(p, cap_minus_1, t_uintptr); + LLVM_SET_VALUE_NAME(mask.value, "mask"); { - TEMPORARY_ALLOCATOR_GUARD(); - auto args = array_make(temporary_allocator(), 2); - args[0] = map; - args[1] = h; - lb_addr_store(p, pos, lb_emit_runtime_call(p, "map_desired_position", args)); + // map_desired_position inlined + lbValue the_pos = lb_emit_arith(p, Token_And, h, mask, t_uintptr); + the_pos = lb_emit_conv(p, the_pos, t_uintptr); + lb_addr_store(p, pos, the_pos); } lbValue zero_uintptr = lb_const_int(m, t_uintptr, 0); lbValue one_uintptr = lb_const_int(m, t_uintptr, 1); @@ -550,10 +562,16 @@ gb_internal lbValue lb_map_get_proc_for_type(lbModule *m, Type *type) { vs = lb_emit_conv(p, vs, alloc_type_pointer(type->Map.value)); hs = lb_emit_conv(p, hs, alloc_type_pointer(t_uintptr)); + LLVM_SET_VALUE_NAME(ks.value, "ks"); + LLVM_SET_VALUE_NAME(vs.value, "vs"); + LLVM_SET_VALUE_NAME(hs.value, "hs"); + lb_emit_jump(p, loop_block); lb_start_block(p, loop_block); lbValue element_hash = lb_emit_load(p, lb_emit_ptr_offset(p, hs, lb_addr_load(p, pos))); + LLVM_SET_VALUE_NAME(element_hash.value, "element_hash"); + { // if element_hash == 0 { return nil } lb_emit_if(p, lb_emit_comp(p, Token_CmpEq, element_hash, zero_uintptr), nil_block, probe_block); @@ -561,12 +579,16 @@ gb_internal lbValue lb_map_get_proc_for_type(lbModule *m, Type *type) { lb_start_block(p, probe_block); { - TEMPORARY_ALLOCATOR_GUARD(); - auto args = array_make(temporary_allocator(), 3); - args[0] = map; - args[1] = element_hash; - args[2] = lb_addr_load(p, pos); - lbValue probe_distance = lb_emit_runtime_call(p, "map_probe_distance", args); + // map_probe_distance inlined + lbValue probe_distance = lb_emit_arith(p, Token_And, h, mask, t_uintptr); + probe_distance = lb_emit_conv(p, probe_distance, t_uintptr); + + lbValue cap = lb_emit_conv(p, capacity, t_uintptr); + lbValue base = lb_emit_arith(p, Token_Add, lb_addr_load(p, pos), cap, t_uintptr); + probe_distance = lb_emit_arith(p, Token_Sub, base, probe_distance, t_uintptr); + probe_distance = lb_emit_arith(p, Token_And, probe_distance, mask, t_uintptr); + LLVM_SET_VALUE_NAME(probe_distance.value, "probe_distance"); + lbValue cond = lb_emit_comp(p, Token_Gt, lb_addr_load(p, distance), probe_distance); lb_emit_if(p, cond, nil_block, hash_compare_block); } @@ -580,6 +602,8 @@ gb_internal lbValue lb_map_get_proc_for_type(lbModule *m, Type *type) { { lbValue element_key = lb_map_cell_index_static(p, type->Map.key, ks, lb_addr_load(p, pos)); element_key = lb_emit_conv(p, element_key, ks.type); + + LLVM_SET_VALUE_NAME(element_key.value, "element_key_ptr"); lbValue cond = lb_emit_comp(p, Token_CmpEq, lb_emit_load(p, element_key), key); lb_emit_if(p, cond, value_block, increment_block); } @@ -587,6 +611,7 @@ gb_internal lbValue lb_map_get_proc_for_type(lbModule *m, Type *type) { lb_start_block(p, value_block); { lbValue element_value = lb_map_cell_index_static(p, type->Map.value, vs, lb_addr_load(p, pos)); + LLVM_SET_VALUE_NAME(element_value.value, "element_value_ptr"); element_value = lb_emit_conv(p, element_value, t_rawptr); LLVMBuildRet(p->builder, element_value.value); } @@ -607,8 +632,7 @@ gb_internal lbValue lb_map_get_proc_for_type(lbModule *m, Type *type) { LLVMBuildRet(p->builder, res.value); } - gb_printf_err("%s\n", LLVMPrintValueToString(p->value)); - + // gb_printf_err("%s\n", LLVMPrintValueToString(p->value)); return {p->value, p->type}; } @@ -1351,24 +1375,28 @@ gb_internal WORKER_TASK_PROC(lb_llvm_function_pass_per_module) { m->function_pass_managers[lbFunctionPassManager_default] = LLVMCreateFunctionPassManagerForModule(m->mod); m->function_pass_managers[lbFunctionPassManager_default_without_memcpy] = LLVMCreateFunctionPassManagerForModule(m->mod); + m->function_pass_managers[lbFunctionPassManager_none] = LLVMCreateFunctionPassManagerForModule(m->mod); m->function_pass_managers[lbFunctionPassManager_minimal] = LLVMCreateFunctionPassManagerForModule(m->mod); m->function_pass_managers[lbFunctionPassManager_size] = LLVMCreateFunctionPassManagerForModule(m->mod); m->function_pass_managers[lbFunctionPassManager_speed] = LLVMCreateFunctionPassManagerForModule(m->mod); LLVMInitializeFunctionPassManager(m->function_pass_managers[lbFunctionPassManager_default]); LLVMInitializeFunctionPassManager(m->function_pass_managers[lbFunctionPassManager_default_without_memcpy]); + LLVMInitializeFunctionPassManager(m->function_pass_managers[lbFunctionPassManager_none]); LLVMInitializeFunctionPassManager(m->function_pass_managers[lbFunctionPassManager_minimal]); LLVMInitializeFunctionPassManager(m->function_pass_managers[lbFunctionPassManager_size]); LLVMInitializeFunctionPassManager(m->function_pass_managers[lbFunctionPassManager_speed]); lb_populate_function_pass_manager(m, m->function_pass_managers[lbFunctionPassManager_default], false, build_context.optimization_level); lb_populate_function_pass_manager(m, m->function_pass_managers[lbFunctionPassManager_default_without_memcpy], true, build_context.optimization_level); + lb_populate_function_pass_manager_specific(m, m->function_pass_managers[lbFunctionPassManager_none], -1); lb_populate_function_pass_manager_specific(m, m->function_pass_managers[lbFunctionPassManager_minimal], 0); lb_populate_function_pass_manager_specific(m, m->function_pass_managers[lbFunctionPassManager_size], 1); lb_populate_function_pass_manager_specific(m, m->function_pass_managers[lbFunctionPassManager_speed], 2); LLVMFinalizeFunctionPassManager(m->function_pass_managers[lbFunctionPassManager_default]); LLVMFinalizeFunctionPassManager(m->function_pass_managers[lbFunctionPassManager_default_without_memcpy]); + LLVMFinalizeFunctionPassManager(m->function_pass_managers[lbFunctionPassManager_none]); LLVMFinalizeFunctionPassManager(m->function_pass_managers[lbFunctionPassManager_minimal]); LLVMFinalizeFunctionPassManager(m->function_pass_managers[lbFunctionPassManager_size]); LLVMFinalizeFunctionPassManager(m->function_pass_managers[lbFunctionPassManager_speed]); @@ -1417,11 +1445,11 @@ gb_internal WORKER_TASK_PROC(lb_llvm_function_pass_per_module) { } for (auto const &entry : m->map_get_procs) { lbProcedure *p = entry.value; - lb_llvm_function_pass_per_function_internal(m, p); + lb_llvm_function_pass_per_function_internal(m, p, lbFunctionPassManager_none); } for (auto const &entry : m->map_set_procs) { lbProcedure *p = entry.value; - lb_llvm_function_pass_per_function_internal(m, p); + lb_llvm_function_pass_per_function_internal(m, p, lbFunctionPassManager_none); } return 0; diff --git a/src/llvm_backend.hpp b/src/llvm_backend.hpp index 4a78ca3a9..964195223 100644 --- a/src/llvm_backend.hpp +++ b/src/llvm_backend.hpp @@ -120,6 +120,7 @@ typedef Slice lbStructFieldRemapping; enum lbFunctionPassManagerKind { lbFunctionPassManager_default, lbFunctionPassManager_default_without_memcpy, + lbFunctionPassManager_none, lbFunctionPassManager_minimal, lbFunctionPassManager_size, lbFunctionPassManager_speed, @@ -138,9 +139,11 @@ struct lbModule { AstPackage *pkg; // possibly associated AstFile *file; // possibly associated - PtrMap types; - PtrMap func_raw_types; - PtrMap struct_field_remapping; // Key: LLVMTypeRef or Type * + PtrMap types; // mutex: types_mutex + PtrMap struct_field_remapping; // Key: LLVMTypeRef or Type *, mutex: types_mutex + PtrMap func_raw_types; // mutex: func_raw_types_mutex + RecursiveMutex types_mutex; + RecursiveMutex func_raw_types_mutex; i32 internal_type_level; RwMutex values_mutex; diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index aa887418f..7d2f574fe 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -1498,6 +1498,9 @@ gb_internal LLVMTypeRef lb_type_internal_for_procedures_raw(lbModule *m, Type *t type = base_type(original_type); GB_ASSERT(type->kind == Type_Proc); + mutex_lock(&m->func_raw_types_mutex); + defer (mutex_unlock(&m->func_raw_types_mutex)); + LLVMTypeRef *found = map_get(&m->func_raw_types, type); if (found) { return *found; @@ -2157,6 +2160,9 @@ gb_internal LLVMTypeRef lb_type_internal(lbModule *m, Type *type) { gb_internal LLVMTypeRef lb_type(lbModule *m, Type *type) { type = default_type(type); + mutex_lock(&m->types_mutex); + defer (mutex_unlock(&m->types_mutex)); + LLVMTypeRef *found = map_get(&m->types, type); if (found) { return *found; diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp index 02748663b..ddf058668 100644 --- a/src/llvm_backend_proc.cpp +++ b/src/llvm_backend_proc.cpp @@ -1169,17 +1169,27 @@ gb_internal lbValue lb_emit_call(lbProcedure *p, lbValue value, Array c lbValue deferred = lb_find_procedure_value_from_entity(p->module, deferred_entity); + bool by_ptr = false; auto in_args = args; Array result_as_args = {}; switch (kind) { case DeferredProcedure_none: break; + case DeferredProcedure_in_by_ptr: + by_ptr = true; + /*fallthrough*/ case DeferredProcedure_in: result_as_args = array_clone(heap_allocator(), in_args); break; + case DeferredProcedure_out_by_ptr: + by_ptr = true; + /*fallthrough*/ case DeferredProcedure_out: result_as_args = lb_value_to_array(p, heap_allocator(), result); break; + case DeferredProcedure_in_out_by_ptr: + by_ptr = true; + /*fallthrough*/ case DeferredProcedure_in_out: { auto out_args = lb_value_to_array(p, heap_allocator(), result); @@ -1189,6 +1199,12 @@ gb_internal lbValue lb_emit_call(lbProcedure *p, lbValue value, Array c } break; } + if (by_ptr) { + for_array(i, result_as_args) { + lbValue arg_ptr = lb_address_from_load_or_generate_local(p, result_as_args[i]); + result_as_args[i] = arg_ptr; + } + } lb_add_defer_proc(p, p->scope_index, deferred, result_as_args); } @@ -2042,7 +2058,7 @@ gb_internal lbValue lb_build_builtin_proc(lbProcedure *p, Ast *expr, TypeAndValu i64 al = exact_value_to_i64(type_and_value_of_expr(ce->args[1]).value); lbValue res = {}; - res.type = t_u8_ptr; + res.type = alloc_type_multi_pointer(t_u8); res.value = LLVMBuildArrayAlloca(p->builder, lb_type(p->module, t_u8), sz.value, ""); LLVMSetAlignment(res.value, cast(unsigned)al); return res; @@ -2363,9 +2379,15 @@ gb_internal lbValue lb_build_builtin_proc(lbProcedure *p, Ast *expr, TypeAndValu { lbValue dst = lb_build_expr(p, ce->args[0]); lbValue src = lb_build_expr(p, ce->args[1]); - src = lb_address_from_load_or_generate_local(p, src); Type *t = type_deref(dst.type); - lb_mem_copy_non_overlapping(p, dst, src, lb_const_int(p->module, t_int, type_size_of(t)), false); + + if (is_type_simd_vector(t)) { + LLVMValueRef store = LLVMBuildStore(p->builder, src.value, dst.value); + LLVMSetAlignment(store, 1); + } else { + src = lb_address_from_load_or_generate_local(p, src); + lb_mem_copy_non_overlapping(p, dst, src, lb_const_int(p->module, t_int, type_size_of(t)), false); + } return {}; } @@ -2373,9 +2395,17 @@ gb_internal lbValue lb_build_builtin_proc(lbProcedure *p, Ast *expr, TypeAndValu { lbValue src = lb_build_expr(p, ce->args[0]); Type *t = type_deref(src.type); - lbAddr dst = lb_add_local_generated(p, t, false); - lb_mem_copy_non_overlapping(p, dst.addr, src, lb_const_int(p->module, t_int, type_size_of(t)), false); - return lb_addr_load(p, dst); + if (is_type_simd_vector(t)) { + lbValue res = {}; + res.type = t; + res.value = LLVMBuildLoad2(p->builder, lb_type(p->module, t), src.value, ""); + LLVMSetAlignment(res.value, 1); + return res; + } else { + lbAddr dst = lb_add_local_generated(p, t, false); + lb_mem_copy_non_overlapping(p, dst.addr, src, lb_const_int(p->module, t_int, type_size_of(t)), false); + return lb_addr_load(p, dst); + } } case BuiltinProc_atomic_add: diff --git a/src/llvm_backend_type.cpp b/src/llvm_backend_type.cpp index e8d286fda..3af10112f 100644 --- a/src/llvm_backend_type.cpp +++ b/src/llvm_backend_type.cpp @@ -691,32 +691,34 @@ gb_internal void lb_setup_type_info_data(lbProcedure *p) { // NOTE(bill): Setup case Type_Struct: { tag = lb_const_ptr_cast(m, variant_ptr, t_type_info_struct_ptr); - LLVMValueRef vals[12] = {}; + LLVMValueRef vals[13] = {}; { lbValue is_packed = lb_const_bool(m, t_bool, t->Struct.is_packed); lbValue is_raw_union = lb_const_bool(m, t_bool, t->Struct.is_raw_union); + lbValue is_no_copy = lb_const_bool(m, t_bool, t->Struct.is_no_copy); lbValue is_custom_align = lb_const_bool(m, t_bool, t->Struct.custom_align != 0); vals[5] = is_packed.value; vals[6] = is_raw_union.value; - vals[7] = is_custom_align.value; + vals[7] = is_no_copy.value; + vals[8] = is_custom_align.value; if (is_type_comparable(t) && !is_type_simple_compare(t)) { - vals[8] = lb_equal_proc_for_type(m, t).value; + vals[9] = lb_equal_proc_for_type(m, t).value; } if (t->Struct.soa_kind != StructSoa_None) { - lbValue kind = lb_emit_struct_ep(p, tag, 9); + lbValue kind = lb_emit_struct_ep(p, tag, 10); Type *kind_type = type_deref(kind.type); lbValue soa_kind = lb_const_value(m, kind_type, exact_value_i64(t->Struct.soa_kind)); lbValue soa_type = lb_type_info(m, t->Struct.soa_elem); lbValue soa_len = lb_const_int(m, t_int, t->Struct.soa_count); - vals[9] = soa_kind.value; - vals[10] = soa_type.value; - vals[11] = soa_len.value; + vals[10] = soa_kind.value; + vals[11] = soa_type.value; + vals[12] = soa_len.value; } } diff --git a/src/llvm_backend_utility.cpp b/src/llvm_backend_utility.cpp index 19df9ab06..ddae2243b 100644 --- a/src/llvm_backend_utility.cpp +++ b/src/llvm_backend_utility.cpp @@ -910,11 +910,18 @@ gb_internal lbValue lb_address_from_load_if_readonly_parameter(lbProcedure *p, l gb_internal lbStructFieldRemapping lb_get_struct_remapping(lbModule *m, Type *t) { t = base_type(t); + LLVMTypeRef struct_type = lb_type(m, t); + + mutex_lock(&m->types_mutex); + auto *field_remapping = map_get(&m->struct_field_remapping, cast(void *)struct_type); if (field_remapping == nullptr) { field_remapping = map_get(&m->struct_field_remapping, cast(void *)t); } + + mutex_unlock(&m->types_mutex); + GB_ASSERT_MSG(field_remapping != nullptr, "%s", type_to_string(t)); return *field_remapping; } diff --git a/src/main.cpp b/src/main.cpp index 5ab6ed66c..33ee65c6b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -691,6 +691,7 @@ enum BuildFlagKind { BuildFlag_TerseErrors, BuildFlag_VerboseErrors, BuildFlag_ErrorPosStyle, + BuildFlag_MaxErrorCount, // internal use only BuildFlag_InternalIgnoreLazy, @@ -866,6 +867,7 @@ gb_internal bool parse_build_flags(Array args) { add_flag(&build_flags, BuildFlag_TerseErrors, str_lit("terse-errors"), BuildFlagParam_None, Command_all); add_flag(&build_flags, BuildFlag_VerboseErrors, str_lit("verbose-errors"), BuildFlagParam_None, Command_all); add_flag(&build_flags, BuildFlag_ErrorPosStyle, str_lit("error-pos-style"), BuildFlagParam_String, Command_all); + add_flag(&build_flags, BuildFlag_MaxErrorCount, str_lit("max-error-count"), BuildFlagParam_Integer, Command_all); add_flag(&build_flags, BuildFlag_InternalIgnoreLazy, str_lit("internal-ignore-lazy"), BuildFlagParam_None, Command_all); add_flag(&build_flags, BuildFlag_InternalIgnoreLLVMBuild, str_lit("internal-ignore-llvm-build"),BuildFlagParam_None, Command_all); @@ -1522,6 +1524,17 @@ gb_internal bool parse_build_flags(Array args) { } break; + case BuildFlag_MaxErrorCount: { + i64 count = big_int_to_i64(&value.value_integer); + if (count <= 0) { + gb_printf_err("-%.*s must be greater than 0", LIT(bf.name)); + bad_flags = true; + } else { + build_context.max_error_count = cast(isize)count; + } + break; + } + case BuildFlag_InternalIgnoreLazy: build_context.ignore_lazy = true; break; @@ -2212,8 +2225,21 @@ gb_internal void print_show_help(String const arg0, String const &command) { print_usage_line(2, "Treats warning messages as error messages"); print_usage_line(0, ""); - print_usage_line(1, "-verbose-errors"); - print_usage_line(2, "Prints verbose error messages showing the code on that line and the location in that line"); + print_usage_line(1, "-terse-errors"); + print_usage_line(2, "Prints a terse error message without showing the code on that line and the location in that line"); + print_usage_line(0, ""); + + print_usage_line(1, "-error-pos-style:"); + print_usage_line(2, "Options are 'unix', 'odin' and 'default' (odin)"); + print_usage_line(2, "'odin' file/path(45:3)"); + print_usage_line(2, "'unix' file/path:45:3:"); + print_usage_line(0, ""); + + + print_usage_line(1, "-max-error-count:"); + print_usage_line(2, "Set the maximum number of errors that can be displayed before the compiler terminates"); + print_usage_line(2, "Must be an integer >0"); + print_usage_line(2, "If not set, the default max error count is %d", DEFAULT_MAX_ERROR_COLLECTOR_COUNT); print_usage_line(0, ""); print_usage_line(1, "-foreign-error-procedures"); diff --git a/src/parser.cpp b/src/parser.cpp index 50a9ba766..790e67db6 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -1047,7 +1047,7 @@ gb_internal Ast *ast_dynamic_array_type(AstFile *f, Token token, Ast *elem) { } gb_internal Ast *ast_struct_type(AstFile *f, Token token, Slice fields, isize field_count, - Ast *polymorphic_params, bool is_packed, bool is_raw_union, + Ast *polymorphic_params, bool is_packed, bool is_raw_union, bool is_no_copy, Ast *align, Token where_token, Array const &where_clauses) { Ast *result = alloc_ast_node(f, Ast_StructType); @@ -1057,6 +1057,7 @@ gb_internal Ast *ast_struct_type(AstFile *f, Token token, Slice fields, i result->StructType.polymorphic_params = polymorphic_params; result->StructType.is_packed = is_packed; result->StructType.is_raw_union = is_raw_union; + result->StructType.is_no_copy = is_no_copy; result->StructType.align = align; result->StructType.where_token = where_token; result->StructType.where_clauses = slice_from_array(where_clauses); @@ -2392,6 +2393,7 @@ gb_internal Ast *parse_operand(AstFile *f, bool lhs) { Ast *polymorphic_params = nullptr; bool is_packed = false; bool is_raw_union = false; + bool no_copy = false; Ast *align = nullptr; if (allow_token(f, Token_OpenParen)) { @@ -2427,6 +2429,11 @@ gb_internal Ast *parse_operand(AstFile *f, bool lhs) { syntax_error(tag, "Duplicate struct tag '#%.*s'", LIT(tag.string)); } is_raw_union = true; + } else if (tag.string == "no_copy") { + if (is_packed) { + syntax_error(tag, "Duplicate struct tag '#%.*s'", LIT(tag.string)); + } + no_copy = true; } else { syntax_error(tag, "Invalid struct tag '#%.*s'", LIT(tag.string)); } @@ -2465,7 +2472,7 @@ gb_internal Ast *parse_operand(AstFile *f, bool lhs) { decls = fields->FieldList.list; } - return ast_struct_type(f, token, decls, name_count, polymorphic_params, is_packed, is_raw_union, align, where_token, where_clauses); + return ast_struct_type(f, token, decls, name_count, polymorphic_params, is_packed, is_raw_union, no_copy, align, where_token, where_clauses); } break; case Token_union: { diff --git a/src/parser.hpp b/src/parser.hpp index 5e1878cf2..5302fd274 100644 --- a/src/parser.hpp +++ b/src/parser.hpp @@ -693,6 +693,7 @@ AST_KIND(_TypeBegin, "", bool) \ Slice where_clauses; \ bool is_packed; \ bool is_raw_union; \ + bool is_no_copy; \ }) \ AST_KIND(UnionType, "union type", struct { \ Scope *scope; \ diff --git a/src/types.cpp b/src/types.cpp index ee610a2ce..889269564 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -149,6 +149,7 @@ struct TypeStruct { bool are_offsets_being_processed : 1; bool is_packed : 1; bool is_raw_union : 1; + bool is_no_copy : 1; bool is_poly_specialized : 1; }; @@ -1670,6 +1671,10 @@ gb_internal bool is_type_raw_union(Type *t) { t = base_type(t); return (t->kind == Type_Struct && t->Struct.is_raw_union); } +gb_internal bool is_type_no_copy(Type *t) { + t = base_type(t); + return (t->kind == Type_Struct && t->Struct.is_no_copy); +} gb_internal bool is_type_enum(Type *t) { t = base_type(t); return (t->kind == Type_Enum); @@ -2655,6 +2660,7 @@ gb_internal bool are_types_identical_internal(Type *x, Type *y, bool check_tuple case Type_Struct: if (x->Struct.is_raw_union == y->Struct.is_raw_union && + x->Struct.is_no_copy == y->Struct.is_no_copy && x->Struct.fields.count == y->Struct.fields.count && x->Struct.is_packed == y->Struct.is_packed && x->Struct.custom_align == y->Struct.custom_align && @@ -2683,7 +2689,7 @@ gb_internal bool are_types_identical_internal(Type *x, Type *y, bool check_tuple return false; } } - return true; + return are_types_identical(x->Struct.polymorphic_params, y->Struct.polymorphic_params); } break; @@ -4207,6 +4213,7 @@ gb_internal gbString write_type_to_string(gbString str, Type *type, bool shortha str = gb_string_appendc(str, "struct"); if (type->Struct.is_packed) str = gb_string_appendc(str, " #packed"); if (type->Struct.is_raw_union) str = gb_string_appendc(str, " #raw_union"); + if (type->Struct.is_no_copy) str = gb_string_appendc(str, " #no_copy"); if (type->Struct.custom_align != 0) str = gb_string_append_fmt(str, " #align %d", cast(int)type->Struct.custom_align); str = gb_string_appendc(str, " {"); diff --git a/tests/core/crypto/test_core_crypto_modern.odin b/tests/core/crypto/test_core_crypto_modern.odin index 6d1ae0047..1d76b715b 100644 --- a/tests/core/crypto/test_core_crypto_modern.odin +++ b/tests/core/crypto/test_core_crypto_modern.odin @@ -269,6 +269,12 @@ TestECDH :: struct { test_x25519 :: proc(t: ^testing.T) { log(t, "Testing X25519") + // Local copy of this so that the base point doesn't need to be exported. + _BASE_POINT: [32]byte = { + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + } + test_vectors := [?]TestECDH { // Test vectors from RFC 7748 TestECDH{ @@ -295,7 +301,7 @@ test_x25519 :: proc(t: ^testing.T) { // Abuse the test vectors to sanity-check the scalar-basepoint multiply. p1, p2: [x25519.POINT_SIZE]byte x25519.scalarmult_basepoint(p1[:], scalar[:]) - x25519.scalarmult(p2[:], scalar[:], x25519._BASE_POINT[:]) + x25519.scalarmult(p2[:], scalar[:], _BASE_POINT[:]) p1_str, p2_str := hex_string(p1[:]), hex_string(p2[:]) expect(t, p1_str == p2_str, fmt.tprintf("Expected %s for %s * basepoint, but got %s instead", p2_str, v.scalar, p1_str)) } diff --git a/tests/core/strings/test_core_strings.odin b/tests/core/strings/test_core_strings.odin index 00e53647f..fdaf3af28 100644 --- a/tests/core/strings/test_core_strings.odin +++ b/tests/core/strings/test_core_strings.odin @@ -5,6 +5,7 @@ import "core:testing" import "core:fmt" import "core:os" import "core:runtime" +import "core:mem" TEST_count := 0 TEST_fail := 0 @@ -105,33 +106,46 @@ Case_Kind :: enum { Ada_Case, } -test_cases := [Case_Kind]struct{s: string, p: proc(r: string, allocator: runtime.Allocator) -> string}{ +Case_Proc :: proc(r: string, allocator: runtime.Allocator) -> (string, mem.Allocator_Error) + +test_cases := [Case_Kind]struct{s: string, p: Case_Proc}{ .Lower_Space_Case = {"hellope world", to_lower_space_case}, .Upper_Space_Case = {"HELLOPE WORLD", to_upper_space_case}, - .Lower_Snake_Case = {"hellope_world", strings.to_snake_case}, - .Upper_Snake_Case = {"HELLOPE_WORLD", strings.to_upper_snake_case}, - .Lower_Kebab_Case = {"hellope-world", strings.to_kebab_case}, - .Upper_Kebab_Case = {"HELLOPE-WORLD", strings.to_upper_kebab_case}, - .Camel_Case = {"hellopeWorld", strings.to_camel_case}, - .Pascal_Case = {"HellopeWorld", strings.to_pascal_case}, - .Ada_Case = {"Hellope_World", strings.to_ada_case}, + .Lower_Snake_Case = {"hellope_world", to_snake_case}, + .Upper_Snake_Case = {"HELLOPE_WORLD", to_upper_snake_case}, + .Lower_Kebab_Case = {"hellope-world", to_kebab_case}, + .Upper_Kebab_Case = {"HELLOPE-WORLD", to_upper_kebab_case}, + .Camel_Case = {"hellopeWorld", to_camel_case}, + .Pascal_Case = {"HellopeWorld", to_pascal_case}, + .Ada_Case = {"Hellope_World", to_ada_case}, } -to_lower_space_case :: proc(r: string, allocator: runtime.Allocator) -> string { +to_lower_space_case :: proc(r: string, allocator: runtime.Allocator) -> (string, mem.Allocator_Error) { return strings.to_delimiter_case(r, ' ', false, allocator) } -to_upper_space_case :: proc(r: string, allocator: runtime.Allocator) -> string { +to_upper_space_case :: proc(r: string, allocator: runtime.Allocator) -> (string, mem.Allocator_Error) { return strings.to_delimiter_case(r, ' ', true, allocator) } +// NOTE: we have these wrappers as having #optional_allocator_error changes the type to not be equivalent +to_snake_case :: proc(r: string, allocator: runtime.Allocator) -> (string, mem.Allocator_Error) { return strings.to_snake_case(r, allocator) } +to_upper_snake_case :: proc(r: string, allocator: runtime.Allocator) -> (string, mem.Allocator_Error) { return strings.to_upper_snake_case(r, allocator) } +to_kebab_case :: proc(r: string, allocator: runtime.Allocator) -> (string, mem.Allocator_Error) { return strings.to_kebab_case(r, allocator) } +to_upper_kebab_case :: proc(r: string, allocator: runtime.Allocator) -> (string, mem.Allocator_Error) { return strings.to_upper_kebab_case(r, allocator) } +to_camel_case :: proc(r: string, allocator: runtime.Allocator) -> (string, mem.Allocator_Error) { return strings.to_camel_case(r, allocator) } +to_pascal_case :: proc(r: string, allocator: runtime.Allocator) -> (string, mem.Allocator_Error) { return strings.to_pascal_case(r, allocator) } +to_ada_case :: proc(r: string, allocator: runtime.Allocator) -> (string, mem.Allocator_Error) { return strings.to_ada_case(r, allocator) } + @test test_case_conversion :: proc(t: ^testing.T) { for entry in test_cases { for test_case, case_kind in test_cases { - result := entry.p(test_case.s, context.allocator) + result, err := entry.p(test_case.s, context.allocator) + msg := fmt.tprintf("ERROR: We got the allocation error '{}'\n", err) + expect(t, err == nil, msg) defer delete(result) - msg := fmt.tprintf("ERROR: Input `{}` to converter {} does not match `{}`, got `{}`.\n", test_case.s, case_kind, entry.s, result) + msg = fmt.tprintf("ERROR: Input `{}` to converter {} does not match `{}`, got `{}`.\n", test_case.s, case_kind, entry.s, result) expect(t, result == entry.s, msg) } } diff --git a/tests/documentation/documentation_tester.odin b/tests/documentation/documentation_tester.odin index 09c565a51..efba63f88 100644 --- a/tests/documentation/documentation_tester.odin +++ b/tests/documentation/documentation_tester.odin @@ -327,7 +327,16 @@ main :: proc() { os.stdout = _write_pipe _spawn_pipe_reader() `) + + Found_Proc :: struct { + name: string, + type: string, + } + found_procedures_for_error_msg: [dynamic]Found_Proc + for test in example_tests { + fmt.printf("--- Generating documentation test for \"%v.%v\"\n", test.package_name, test.entity_name) + clear(&found_procedures_for_error_msg) strings.builder_reset(&example_build) strings.write_string(&example_build, "package documentation_verification\n\n") for line in test.example_code { @@ -364,6 +373,10 @@ main :: proc() { proc_lit, is_proc_lit := value_decl.values[0].derived_expr.(^ast.Proc_Lit); if ! is_proc_lit { continue } + append(&found_procedures_for_error_msg, Found_Proc { + name = code_string[value_decl.names[0].pos.offset:value_decl.names[0].end.offset], + type = code_string[proc_lit.type.pos.offset:proc_lit.type.end.offset], + }) if len(proc_lit.type.params.list) > 0 { continue } @@ -377,17 +390,38 @@ main :: proc() { } if code_test_name == "" { - fmt.eprintf("We could not any find procedure literals with no arguments with the identifier %q for the example for %q\n", enforced_name, test.entity_name) - g_bad_doc = true + fmt.eprintf("We could not find the procedure \"%s :: proc()\" needed to test the example created for \"%s.%s\"\n", enforced_name, test.package_name, test.entity_name) + if len(found_procedures_for_error_msg) > 0{ + fmt.eprint("The following procedures were found:\n") + for procedure in found_procedures_for_error_msg { + fmt.eprintf("\t%s :: %s\n", procedure.name, procedure.type) + } + } else { + fmt.eprint("No procedures were found?\n") + } + // NOTE: we don't want to fail the CI in this case, just put the error in the log and test everything else + // g_bad_doc = true continue } fmt.sbprintf(&test_runner, "\t%v_%v()\n", test.package_name, code_test_name) fmt.sbprintf(&test_runner, "\t_check(%q, `", code_test_name) + had_line_error: bool for line in test.expected_output { + // NOTE: this will escape the multiline string. Even with a backslash it still escapes due to the semantics of ` + // I don't think any examples would really need this specific character so let's just make it forbidden and change + // in the future if we really need to + if strings.contains_rune(line, '`') { + fmt.eprintf("The line %q in the output for \"%s.%s\" contains a ` which is not allowed\n", line, test.package_name, test.entity_name) + g_bad_doc = true + had_line_error = true + } strings.write_string(&test_runner, line) strings.write_string(&test_runner, "\n") } + if had_line_error { + continue + } strings.write_string(&test_runner, "`)\n") save_path := fmt.tprintf("verify/test_%v_%v.odin", test.package_name, code_test_name) @@ -404,6 +438,7 @@ main :: proc() { continue } fmt.wprintf(writer, "%v%v_%v", code_string[:index_of_proc_name], test.package_name, code_string[index_of_proc_name:]) + fmt.println("Done") } strings.write_string(&test_runner, diff --git a/vendor/lua/5.1/include/lauxlib.h b/vendor/lua/5.1/include/lauxlib.h new file mode 100644 index 000000000..34258235d --- /dev/null +++ b/vendor/lua/5.1/include/lauxlib.h @@ -0,0 +1,174 @@ +/* +** $Id: lauxlib.h,v 1.88.1.1 2007/12/27 13:02:25 roberto Exp $ +** Auxiliary functions for building Lua libraries +** See Copyright Notice in lua.h +*/ + + +#ifndef lauxlib_h +#define lauxlib_h + + +#include +#include + +#include "lua.h" + + +#if defined(LUA_COMPAT_GETN) +LUALIB_API int (luaL_getn) (lua_State *L, int t); +LUALIB_API void (luaL_setn) (lua_State *L, int t, int n); +#else +#define luaL_getn(L,i) ((int)lua_objlen(L, i)) +#define luaL_setn(L,i,j) ((void)0) /* no op! */ +#endif + +#if defined(LUA_COMPAT_OPENLIB) +#define luaI_openlib luaL_openlib +#endif + + +/* extra error code for `luaL_load' */ +#define LUA_ERRFILE (LUA_ERRERR+1) + + +typedef struct luaL_Reg { + const char *name; + lua_CFunction func; +} luaL_Reg; + + + +LUALIB_API void (luaI_openlib) (lua_State *L, const char *libname, + const luaL_Reg *l, int nup); +LUALIB_API void (luaL_register) (lua_State *L, const char *libname, + const luaL_Reg *l); +LUALIB_API int (luaL_getmetafield) (lua_State *L, int obj, const char *e); +LUALIB_API int (luaL_callmeta) (lua_State *L, int obj, const char *e); +LUALIB_API int (luaL_typerror) (lua_State *L, int narg, const char *tname); +LUALIB_API int (luaL_argerror) (lua_State *L, int numarg, const char *extramsg); +LUALIB_API const char *(luaL_checklstring) (lua_State *L, int numArg, + size_t *l); +LUALIB_API const char *(luaL_optlstring) (lua_State *L, int numArg, + const char *def, size_t *l); +LUALIB_API lua_Number (luaL_checknumber) (lua_State *L, int numArg); +LUALIB_API lua_Number (luaL_optnumber) (lua_State *L, int nArg, lua_Number def); + +LUALIB_API lua_Integer (luaL_checkinteger) (lua_State *L, int numArg); +LUALIB_API lua_Integer (luaL_optinteger) (lua_State *L, int nArg, + lua_Integer def); + +LUALIB_API void (luaL_checkstack) (lua_State *L, int sz, const char *msg); +LUALIB_API void (luaL_checktype) (lua_State *L, int narg, int t); +LUALIB_API void (luaL_checkany) (lua_State *L, int narg); + +LUALIB_API int (luaL_newmetatable) (lua_State *L, const char *tname); +LUALIB_API void *(luaL_checkudata) (lua_State *L, int ud, const char *tname); + +LUALIB_API void (luaL_where) (lua_State *L, int lvl); +LUALIB_API int (luaL_error) (lua_State *L, const char *fmt, ...); + +LUALIB_API int (luaL_checkoption) (lua_State *L, int narg, const char *def, + const char *const lst[]); + +LUALIB_API int (luaL_ref) (lua_State *L, int t); +LUALIB_API void (luaL_unref) (lua_State *L, int t, int ref); + +LUALIB_API int (luaL_loadfile) (lua_State *L, const char *filename); +LUALIB_API int (luaL_loadbuffer) (lua_State *L, const char *buff, size_t sz, + const char *name); +LUALIB_API int (luaL_loadstring) (lua_State *L, const char *s); + +LUALIB_API lua_State *(luaL_newstate) (void); + + +LUALIB_API const char *(luaL_gsub) (lua_State *L, const char *s, const char *p, + const char *r); + +LUALIB_API const char *(luaL_findtable) (lua_State *L, int idx, + const char *fname, int szhint); + + + + +/* +** =============================================================== +** some useful macros +** =============================================================== +*/ + +#define luaL_argcheck(L, cond,numarg,extramsg) \ + ((void)((cond) || luaL_argerror(L, (numarg), (extramsg)))) +#define luaL_checkstring(L,n) (luaL_checklstring(L, (n), NULL)) +#define luaL_optstring(L,n,d) (luaL_optlstring(L, (n), (d), NULL)) +#define luaL_checkint(L,n) ((int)luaL_checkinteger(L, (n))) +#define luaL_optint(L,n,d) ((int)luaL_optinteger(L, (n), (d))) +#define luaL_checklong(L,n) ((long)luaL_checkinteger(L, (n))) +#define luaL_optlong(L,n,d) ((long)luaL_optinteger(L, (n), (d))) + +#define luaL_typename(L,i) lua_typename(L, lua_type(L,(i))) + +#define luaL_dofile(L, fn) \ + (luaL_loadfile(L, fn) || lua_pcall(L, 0, LUA_MULTRET, 0)) + +#define luaL_dostring(L, s) \ + (luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0)) + +#define luaL_getmetatable(L,n) (lua_getfield(L, LUA_REGISTRYINDEX, (n))) + +#define luaL_opt(L,f,n,d) (lua_isnoneornil(L,(n)) ? (d) : f(L,(n))) + +/* +** {====================================================== +** Generic Buffer manipulation +** ======================================================= +*/ + + + +typedef struct luaL_Buffer { + char *p; /* current position in buffer */ + int lvl; /* number of strings in the stack (level) */ + lua_State *L; + char buffer[LUAL_BUFFERSIZE]; +} luaL_Buffer; + +#define luaL_addchar(B,c) \ + ((void)((B)->p < ((B)->buffer+LUAL_BUFFERSIZE) || luaL_prepbuffer(B)), \ + (*(B)->p++ = (char)(c))) + +/* compatibility only */ +#define luaL_putchar(B,c) luaL_addchar(B,c) + +#define luaL_addsize(B,n) ((B)->p += (n)) + +LUALIB_API void (luaL_buffinit) (lua_State *L, luaL_Buffer *B); +LUALIB_API char *(luaL_prepbuffer) (luaL_Buffer *B); +LUALIB_API void (luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l); +LUALIB_API void (luaL_addstring) (luaL_Buffer *B, const char *s); +LUALIB_API void (luaL_addvalue) (luaL_Buffer *B); +LUALIB_API void (luaL_pushresult) (luaL_Buffer *B); + + +/* }====================================================== */ + + +/* compatibility with ref system */ + +/* pre-defined references */ +#define LUA_NOREF (-2) +#define LUA_REFNIL (-1) + +#define lua_ref(L,lock) ((lock) ? luaL_ref(L, LUA_REGISTRYINDEX) : \ + (lua_pushstring(L, "unlocked references are obsolete"), lua_error(L), 0)) + +#define lua_unref(L,ref) luaL_unref(L, LUA_REGISTRYINDEX, (ref)) + +#define lua_getref(L,ref) lua_rawgeti(L, LUA_REGISTRYINDEX, (ref)) + + +#define luaL_reg luaL_Reg + +#endif + + diff --git a/vendor/lua/5.1/include/lua.h b/vendor/lua/5.1/include/lua.h new file mode 100644 index 000000000..a4b73e743 --- /dev/null +++ b/vendor/lua/5.1/include/lua.h @@ -0,0 +1,388 @@ +/* +** $Id: lua.h,v 1.218.1.7 2012/01/13 20:36:20 roberto Exp $ +** Lua - An Extensible Extension Language +** Lua.org, PUC-Rio, Brazil (http://www.lua.org) +** See Copyright Notice at the end of this file +*/ + + +#ifndef lua_h +#define lua_h + +#include +#include + + +#include "luaconf.h" + + +#define LUA_VERSION "Lua 5.1" +#define LUA_RELEASE "Lua 5.1.5" +#define LUA_VERSION_NUM 501 +#define LUA_COPYRIGHT "Copyright (C) 1994-2012 Lua.org, PUC-Rio" +#define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo & W. Celes" + + +/* mark for precompiled code (`Lua') */ +#define LUA_SIGNATURE "\033Lua" + +/* option for multiple returns in `lua_pcall' and `lua_call' */ +#define LUA_MULTRET (-1) + + +/* +** pseudo-indices +*/ +#define LUA_REGISTRYINDEX (-10000) +#define LUA_ENVIRONINDEX (-10001) +#define LUA_GLOBALSINDEX (-10002) +#define lua_upvalueindex(i) (LUA_GLOBALSINDEX-(i)) + + +/* thread status; 0 is OK */ +#define LUA_YIELD 1 +#define LUA_ERRRUN 2 +#define LUA_ERRSYNTAX 3 +#define LUA_ERRMEM 4 +#define LUA_ERRERR 5 + + +typedef struct lua_State lua_State; + +typedef int (*lua_CFunction) (lua_State *L); + + +/* +** functions that read/write blocks when loading/dumping Lua chunks +*/ +typedef const char * (*lua_Reader) (lua_State *L, void *ud, size_t *sz); + +typedef int (*lua_Writer) (lua_State *L, const void* p, size_t sz, void* ud); + + +/* +** prototype for memory-allocation functions +*/ +typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize); + + +/* +** basic types +*/ +#define LUA_TNONE (-1) + +#define LUA_TNIL 0 +#define LUA_TBOOLEAN 1 +#define LUA_TLIGHTUSERDATA 2 +#define LUA_TNUMBER 3 +#define LUA_TSTRING 4 +#define LUA_TTABLE 5 +#define LUA_TFUNCTION 6 +#define LUA_TUSERDATA 7 +#define LUA_TTHREAD 8 + + + +/* minimum Lua stack available to a C function */ +#define LUA_MINSTACK 20 + + +/* +** generic extra include file +*/ +#if defined(LUA_USER_H) +#include LUA_USER_H +#endif + + +/* type of numbers in Lua */ +typedef LUA_NUMBER lua_Number; + + +/* type for integer functions */ +typedef LUA_INTEGER lua_Integer; + + + +/* +** state manipulation +*/ +LUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud); +LUA_API void (lua_close) (lua_State *L); +LUA_API lua_State *(lua_newthread) (lua_State *L); + +LUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf); + + +/* +** basic stack manipulation +*/ +LUA_API int (lua_gettop) (lua_State *L); +LUA_API void (lua_settop) (lua_State *L, int idx); +LUA_API void (lua_pushvalue) (lua_State *L, int idx); +LUA_API void (lua_remove) (lua_State *L, int idx); +LUA_API void (lua_insert) (lua_State *L, int idx); +LUA_API void (lua_replace) (lua_State *L, int idx); +LUA_API int (lua_checkstack) (lua_State *L, int sz); + +LUA_API void (lua_xmove) (lua_State *from, lua_State *to, int n); + + +/* +** access functions (stack -> C) +*/ + +LUA_API int (lua_isnumber) (lua_State *L, int idx); +LUA_API int (lua_isstring) (lua_State *L, int idx); +LUA_API int (lua_iscfunction) (lua_State *L, int idx); +LUA_API int (lua_isuserdata) (lua_State *L, int idx); +LUA_API int (lua_type) (lua_State *L, int idx); +LUA_API const char *(lua_typename) (lua_State *L, int tp); + +LUA_API int (lua_equal) (lua_State *L, int idx1, int idx2); +LUA_API int (lua_rawequal) (lua_State *L, int idx1, int idx2); +LUA_API int (lua_lessthan) (lua_State *L, int idx1, int idx2); + +LUA_API lua_Number (lua_tonumber) (lua_State *L, int idx); +LUA_API lua_Integer (lua_tointeger) (lua_State *L, int idx); +LUA_API int (lua_toboolean) (lua_State *L, int idx); +LUA_API const char *(lua_tolstring) (lua_State *L, int idx, size_t *len); +LUA_API size_t (lua_objlen) (lua_State *L, int idx); +LUA_API lua_CFunction (lua_tocfunction) (lua_State *L, int idx); +LUA_API void *(lua_touserdata) (lua_State *L, int idx); +LUA_API lua_State *(lua_tothread) (lua_State *L, int idx); +LUA_API const void *(lua_topointer) (lua_State *L, int idx); + + +/* +** push functions (C -> stack) +*/ +LUA_API void (lua_pushnil) (lua_State *L); +LUA_API void (lua_pushnumber) (lua_State *L, lua_Number n); +LUA_API void (lua_pushinteger) (lua_State *L, lua_Integer n); +LUA_API void (lua_pushlstring) (lua_State *L, const char *s, size_t l); +LUA_API void (lua_pushstring) (lua_State *L, const char *s); +LUA_API const char *(lua_pushvfstring) (lua_State *L, const char *fmt, + va_list argp); +LUA_API const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...); +LUA_API void (lua_pushcclosure) (lua_State *L, lua_CFunction fn, int n); +LUA_API void (lua_pushboolean) (lua_State *L, int b); +LUA_API void (lua_pushlightuserdata) (lua_State *L, void *p); +LUA_API int (lua_pushthread) (lua_State *L); + + +/* +** get functions (Lua -> stack) +*/ +LUA_API void (lua_gettable) (lua_State *L, int idx); +LUA_API void (lua_getfield) (lua_State *L, int idx, const char *k); +LUA_API void (lua_rawget) (lua_State *L, int idx); +LUA_API void (lua_rawgeti) (lua_State *L, int idx, int n); +LUA_API void (lua_createtable) (lua_State *L, int narr, int nrec); +LUA_API void *(lua_newuserdata) (lua_State *L, size_t sz); +LUA_API int (lua_getmetatable) (lua_State *L, int objindex); +LUA_API void (lua_getfenv) (lua_State *L, int idx); + + +/* +** set functions (stack -> Lua) +*/ +LUA_API void (lua_settable) (lua_State *L, int idx); +LUA_API void (lua_setfield) (lua_State *L, int idx, const char *k); +LUA_API void (lua_rawset) (lua_State *L, int idx); +LUA_API void (lua_rawseti) (lua_State *L, int idx, int n); +LUA_API int (lua_setmetatable) (lua_State *L, int objindex); +LUA_API int (lua_setfenv) (lua_State *L, int idx); + + +/* +** `load' and `call' functions (load and run Lua code) +*/ +LUA_API void (lua_call) (lua_State *L, int nargs, int nresults); +LUA_API int (lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc); +LUA_API int (lua_cpcall) (lua_State *L, lua_CFunction func, void *ud); +LUA_API int (lua_load) (lua_State *L, lua_Reader reader, void *dt, + const char *chunkname); + +LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data); + + +/* +** coroutine functions +*/ +LUA_API int (lua_yield) (lua_State *L, int nresults); +LUA_API int (lua_resume) (lua_State *L, int narg); +LUA_API int (lua_status) (lua_State *L); + +/* +** garbage-collection function and options +*/ + +#define LUA_GCSTOP 0 +#define LUA_GCRESTART 1 +#define LUA_GCCOLLECT 2 +#define LUA_GCCOUNT 3 +#define LUA_GCCOUNTB 4 +#define LUA_GCSTEP 5 +#define LUA_GCSETPAUSE 6 +#define LUA_GCSETSTEPMUL 7 + +LUA_API int (lua_gc) (lua_State *L, int what, int data); + + +/* +** miscellaneous functions +*/ + +LUA_API int (lua_error) (lua_State *L); + +LUA_API int (lua_next) (lua_State *L, int idx); + +LUA_API void (lua_concat) (lua_State *L, int n); + +LUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud); +LUA_API void lua_setallocf (lua_State *L, lua_Alloc f, void *ud); + + + +/* +** =============================================================== +** some useful macros +** =============================================================== +*/ + +#define lua_pop(L,n) lua_settop(L, -(n)-1) + +#define lua_newtable(L) lua_createtable(L, 0, 0) + +#define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n))) + +#define lua_pushcfunction(L,f) lua_pushcclosure(L, (f), 0) + +#define lua_strlen(L,i) lua_objlen(L, (i)) + +#define lua_isfunction(L,n) (lua_type(L, (n)) == LUA_TFUNCTION) +#define lua_istable(L,n) (lua_type(L, (n)) == LUA_TTABLE) +#define lua_islightuserdata(L,n) (lua_type(L, (n)) == LUA_TLIGHTUSERDATA) +#define lua_isnil(L,n) (lua_type(L, (n)) == LUA_TNIL) +#define lua_isboolean(L,n) (lua_type(L, (n)) == LUA_TBOOLEAN) +#define lua_isthread(L,n) (lua_type(L, (n)) == LUA_TTHREAD) +#define lua_isnone(L,n) (lua_type(L, (n)) == LUA_TNONE) +#define lua_isnoneornil(L, n) (lua_type(L, (n)) <= 0) + +#define lua_pushliteral(L, s) \ + lua_pushlstring(L, "" s, (sizeof(s)/sizeof(char))-1) + +#define lua_setglobal(L,s) lua_setfield(L, LUA_GLOBALSINDEX, (s)) +#define lua_getglobal(L,s) lua_getfield(L, LUA_GLOBALSINDEX, (s)) + +#define lua_tostring(L,i) lua_tolstring(L, (i), NULL) + + + +/* +** compatibility macros and functions +*/ + +#define lua_open() luaL_newstate() + +#define lua_getregistry(L) lua_pushvalue(L, LUA_REGISTRYINDEX) + +#define lua_getgccount(L) lua_gc(L, LUA_GCCOUNT, 0) + +#define lua_Chunkreader lua_Reader +#define lua_Chunkwriter lua_Writer + + +/* hack */ +LUA_API void lua_setlevel (lua_State *from, lua_State *to); + + +/* +** {====================================================================== +** Debug API +** ======================================================================= +*/ + + +/* +** Event codes +*/ +#define LUA_HOOKCALL 0 +#define LUA_HOOKRET 1 +#define LUA_HOOKLINE 2 +#define LUA_HOOKCOUNT 3 +#define LUA_HOOKTAILRET 4 + + +/* +** Event masks +*/ +#define LUA_MASKCALL (1 << LUA_HOOKCALL) +#define LUA_MASKRET (1 << LUA_HOOKRET) +#define LUA_MASKLINE (1 << LUA_HOOKLINE) +#define LUA_MASKCOUNT (1 << LUA_HOOKCOUNT) + +typedef struct lua_Debug lua_Debug; /* activation record */ + + +/* Functions to be called by the debuger in specific events */ +typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar); + + +LUA_API int lua_getstack (lua_State *L, int level, lua_Debug *ar); +LUA_API int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar); +LUA_API const char *lua_getlocal (lua_State *L, const lua_Debug *ar, int n); +LUA_API const char *lua_setlocal (lua_State *L, const lua_Debug *ar, int n); +LUA_API const char *lua_getupvalue (lua_State *L, int funcindex, int n); +LUA_API const char *lua_setupvalue (lua_State *L, int funcindex, int n); + +LUA_API int lua_sethook (lua_State *L, lua_Hook func, int mask, int count); +LUA_API lua_Hook lua_gethook (lua_State *L); +LUA_API int lua_gethookmask (lua_State *L); +LUA_API int lua_gethookcount (lua_State *L); + + +struct lua_Debug { + int event; + const char *name; /* (n) */ + const char *namewhat; /* (n) `global', `local', `field', `method' */ + const char *what; /* (S) `Lua', `C', `main', `tail' */ + const char *source; /* (S) */ + int currentline; /* (l) */ + int nups; /* (u) number of upvalues */ + int linedefined; /* (S) */ + int lastlinedefined; /* (S) */ + char short_src[LUA_IDSIZE]; /* (S) */ + /* private part */ + int i_ci; /* active function */ +}; + +/* }====================================================================== */ + + +/****************************************************************************** +* Copyright (C) 1994-2012 Lua.org, PUC-Rio. All rights reserved. +* +* Permission is hereby granted, free of charge, to any person obtaining +* a copy of this software and associated documentation files (the +* "Software"), to deal in the Software without restriction, including +* without limitation the rights to use, copy, modify, merge, publish, +* distribute, sublicense, and/or sell copies of the Software, and to +* permit persons to whom the Software is furnished to do so, subject to +* the following conditions: +* +* The above copyright notice and this permission notice shall be +* included in all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +******************************************************************************/ + + +#endif diff --git a/vendor/lua/5.1/include/lua.hpp b/vendor/lua/5.1/include/lua.hpp new file mode 100644 index 000000000..ec417f594 --- /dev/null +++ b/vendor/lua/5.1/include/lua.hpp @@ -0,0 +1,9 @@ +// lua.hpp +// Lua header files for C++ +// <> not supplied automatically because Lua also compiles as C++ + +extern "C" { +#include "lua.h" +#include "lualib.h" +#include "lauxlib.h" +} diff --git a/vendor/lua/5.1/include/luaconf.h b/vendor/lua/5.1/include/luaconf.h new file mode 100644 index 000000000..05354175b --- /dev/null +++ b/vendor/lua/5.1/include/luaconf.h @@ -0,0 +1,766 @@ +/* +** $Id: luaconf.h,v 1.82.1.7 2008/02/11 16:25:08 roberto Exp $ +** Configuration file for Lua +** See Copyright Notice in lua.h +*/ + + +#ifndef lconfig_h +#define lconfig_h + +#include +#include + + +/* +** ================================================================== +** Search for "@@" to find all configurable definitions. +** =================================================================== +*/ + + +/* +@@ LUA_ANSI controls the use of non-ansi features. +** CHANGE it (define it) if you want Lua to avoid the use of any +** non-ansi feature or library. +*/ +#if defined(__STRICT_ANSI__) +#define LUA_ANSI +#endif + + +#if !defined(LUA_ANSI) && defined(_WIN32) +#define LUA_WIN +#endif + +#if defined(LUA_USE_LINUX) +#define LUA_USE_POSIX +#define LUA_USE_DLOPEN /* needs an extra library: -ldl */ +#define LUA_USE_READLINE /* needs some extra libraries */ +#endif + +#if defined(LUA_USE_MACOSX) +#define LUA_USE_POSIX +#define LUA_DL_DYLD /* does not need extra library */ +#endif + + + +/* +@@ LUA_USE_POSIX includes all functionallity listed as X/Open System +@* Interfaces Extension (XSI). +** CHANGE it (define it) if your system is XSI compatible. +*/ +#if defined(LUA_USE_POSIX) +#define LUA_USE_MKSTEMP +#define LUA_USE_ISATTY +#define LUA_USE_POPEN +#define LUA_USE_ULONGJMP +#endif + + +/* +@@ LUA_PATH and LUA_CPATH are the names of the environment variables that +@* Lua check to set its paths. +@@ LUA_INIT is the name of the environment variable that Lua +@* checks for initialization code. +** CHANGE them if you want different names. +*/ +#define LUA_PATH "LUA_PATH" +#define LUA_CPATH "LUA_CPATH" +#define LUA_INIT "LUA_INIT" + + +/* +@@ LUA_PATH_DEFAULT is the default path that Lua uses to look for +@* Lua libraries. +@@ LUA_CPATH_DEFAULT is the default path that Lua uses to look for +@* C libraries. +** CHANGE them if your machine has a non-conventional directory +** hierarchy or if you want to install your libraries in +** non-conventional directories. +*/ +#if defined(_WIN32) +/* +** In Windows, any exclamation mark ('!') in the path is replaced by the +** path of the directory of the executable file of the current process. +*/ +#define LUA_LDIR "!\\lua\\" +#define LUA_CDIR "!\\" +#define LUA_PATH_DEFAULT \ + ".\\?.lua;" LUA_LDIR"?.lua;" LUA_LDIR"?\\init.lua;" \ + LUA_CDIR"?.lua;" LUA_CDIR"?\\init.lua" +#define LUA_CPATH_DEFAULT \ + ".\\?.dll;" LUA_CDIR"?.dll;" LUA_CDIR"loadall.dll;" \ + LUA_CDIR"clibs\\?.dll;" LUA_CDIR"clibs\\loadall.dll;" \ + ".\\?51.dll;" LUA_CDIR"?51.dll;" LUA_CDIR"clibs\\?51.dll" + +#else +#define LUA_ROOT "/usr/local/" +#define LUA_LDIR LUA_ROOT "share/lua/5.1/" +#define LUA_CDIR LUA_ROOT "lib/lua/5.1/" +#define LUA_PATH_DEFAULT \ + "./?.lua;" LUA_LDIR"?.lua;" LUA_LDIR"?/init.lua;" \ + LUA_CDIR"?.lua;" LUA_CDIR"?/init.lua" +#define LUA_CPATH_DEFAULT \ + "./?.so;" LUA_CDIR"?.so;" LUA_CDIR"loadall.so;" \ + "./lib?51.so;" LUA_CDIR"lib?51.so" +#endif + + +/* +@@ LUA_DIRSEP is the directory separator (for submodules). +** CHANGE it if your machine does not use "/" as the directory separator +** and is not Windows. (On Windows Lua automatically uses "\".) +*/ +#if defined(_WIN32) +#define LUA_DIRSEP "\\" +#else +#define LUA_DIRSEP "/" +#endif + + +/* +@@ LUA_PATHSEP is the character that separates templates in a path. +@@ LUA_PATH_MARK is the string that marks the substitution points in a +@* template. +@@ LUA_EXECDIR in a Windows path is replaced by the executable's +@* directory. +@@ LUA_IGMARK is a mark to ignore all before it when bulding the +@* luaopen_ function name. +** CHANGE them if for some reason your system cannot use those +** characters. (E.g., if one of those characters is a common character +** in file/directory names.) Probably you do not need to change them. +*/ +#define LUA_PATHSEP ";" +#define LUA_PATH_MARK "?" +#define LUA_EXECDIR "!" +#define LUA_IGMARK "-" + + +/* +@@ LUA_INTEGER is the integral type used by lua_pushinteger/lua_tointeger. +** CHANGE that if ptrdiff_t is not adequate on your machine. (On most +** machines, ptrdiff_t gives a good choice between int or long.) +*/ +#define LUA_INTEGER ptrdiff_t + + +/* +@@ LUA_API is a mark for all core API functions. +@@ LUALIB_API is a mark for all standard library functions. +** CHANGE them if you need to define those functions in some special way. +** For instance, if you want to create one Windows DLL with the core and +** the libraries, you may want to use the following definition (define +** LUA_BUILD_AS_DLL to get it). +*/ +#if defined(LUA_BUILD_AS_DLL) + +#if defined(LUA_CORE) || defined(LUA_LIB) +#define LUA_API __declspec(dllexport) +#else +#define LUA_API __declspec(dllimport) +#endif + +#else + +#define LUA_API extern + +#endif + +/* more often than not the libs go together with the core */ +#define LUALIB_API LUA_API + + +/* +@@ LUAI_FUNC is a mark for all extern functions that are not to be +@* exported to outside modules. +@@ LUAI_DATA is a mark for all extern (const) variables that are not to +@* be exported to outside modules. +** CHANGE them if you need to mark them in some special way. Elf/gcc +** (versions 3.2 and later) mark them as "hidden" to optimize access +** when Lua is compiled as a shared library. +*/ +#if defined(luaall_c) +#define LUAI_FUNC static +#define LUAI_DATA /* empty */ + +#elif defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 302) && \ + defined(__ELF__) +#define LUAI_FUNC __attribute__((visibility("hidden"))) extern +#define LUAI_DATA LUAI_FUNC + +#else +#define LUAI_FUNC extern +#define LUAI_DATA extern +#endif + + + +/* +@@ LUA_QL describes how error messages quote program elements. +** CHANGE it if you want a different appearance. +*/ +#define LUA_QL(x) "'" x "'" +#define LUA_QS LUA_QL("%s") + + +/* +@@ LUA_IDSIZE gives the maximum size for the description of the source +@* of a function in debug information. +** CHANGE it if you want a different size. +*/ +#define LUA_IDSIZE 60 + + +/* +** {================================================================== +** Stand-alone configuration +** =================================================================== +*/ + +#if defined(lua_c) || defined(luaall_c) + +/* +@@ lua_stdin_is_tty detects whether the standard input is a 'tty' (that +@* is, whether we're running lua interactively). +** CHANGE it if you have a better definition for non-POSIX/non-Windows +** systems. +*/ +#if defined(LUA_USE_ISATTY) +#include +#define lua_stdin_is_tty() isatty(0) +#elif defined(LUA_WIN) +#include +#include +#define lua_stdin_is_tty() _isatty(_fileno(stdin)) +#else +#define lua_stdin_is_tty() 1 /* assume stdin is a tty */ +#endif + + +/* +@@ LUA_PROMPT is the default prompt used by stand-alone Lua. +@@ LUA_PROMPT2 is the default continuation prompt used by stand-alone Lua. +** CHANGE them if you want different prompts. (You can also change the +** prompts dynamically, assigning to globals _PROMPT/_PROMPT2.) +*/ +#define LUA_PROMPT "> " +#define LUA_PROMPT2 ">> " + + +/* +@@ LUA_PROGNAME is the default name for the stand-alone Lua program. +** CHANGE it if your stand-alone interpreter has a different name and +** your system is not able to detect that name automatically. +*/ +#define LUA_PROGNAME "lua" + + +/* +@@ LUA_MAXINPUT is the maximum length for an input line in the +@* stand-alone interpreter. +** CHANGE it if you need longer lines. +*/ +#define LUA_MAXINPUT 512 + + +/* +@@ lua_readline defines how to show a prompt and then read a line from +@* the standard input. +@@ lua_saveline defines how to "save" a read line in a "history". +@@ lua_freeline defines how to free a line read by lua_readline. +** CHANGE them if you want to improve this functionality (e.g., by using +** GNU readline and history facilities). +*/ +#if defined(LUA_USE_READLINE) +#include +#include +#include +#define lua_readline(L,b,p) ((void)L, ((b)=readline(p)) != NULL) +#define lua_saveline(L,idx) \ + if (lua_strlen(L,idx) > 0) /* non-empty line? */ \ + add_history(lua_tostring(L, idx)); /* add it to history */ +#define lua_freeline(L,b) ((void)L, free(b)) +#else +#define lua_readline(L,b,p) \ + ((void)L, fputs(p, stdout), fflush(stdout), /* show prompt */ \ + fgets(b, LUA_MAXINPUT, stdin) != NULL) /* get line */ +#define lua_saveline(L,idx) { (void)L; (void)idx; } +#define lua_freeline(L,b) { (void)L; (void)b; } +#endif + +#endif + +/* }================================================================== */ + + +/* +@@ LUAI_GCPAUSE defines the default pause between garbage-collector cycles +@* as a percentage. +** CHANGE it if you want the GC to run faster or slower (higher values +** mean larger pauses which mean slower collection.) You can also change +** this value dynamically. +*/ +#define LUAI_GCPAUSE 200 /* 200% (wait memory to double before next GC) */ + + +/* +@@ LUAI_GCMUL defines the default speed of garbage collection relative to +@* memory allocation as a percentage. +** CHANGE it if you want to change the granularity of the garbage +** collection. (Higher values mean coarser collections. 0 represents +** infinity, where each step performs a full collection.) You can also +** change this value dynamically. +*/ +#define LUAI_GCMUL 200 /* GC runs 'twice the speed' of memory allocation */ + + + +/* +@@ LUA_COMPAT_GETN controls compatibility with old getn behavior. +** CHANGE it (define it) if you want exact compatibility with the +** behavior of setn/getn in Lua 5.0. +*/ +#undef LUA_COMPAT_GETN + +/* +@@ LUA_COMPAT_LOADLIB controls compatibility about global loadlib. +** CHANGE it to undefined as soon as you do not need a global 'loadlib' +** function (the function is still available as 'package.loadlib'). +*/ +#undef LUA_COMPAT_LOADLIB + +/* +@@ LUA_COMPAT_VARARG controls compatibility with old vararg feature. +** CHANGE it to undefined as soon as your programs use only '...' to +** access vararg parameters (instead of the old 'arg' table). +*/ +#define LUA_COMPAT_VARARG + +/* +@@ LUA_COMPAT_MOD controls compatibility with old math.mod function. +** CHANGE it to undefined as soon as your programs use 'math.fmod' or +** the new '%' operator instead of 'math.mod'. +*/ +#define LUA_COMPAT_MOD + +/* +@@ LUA_COMPAT_LSTR controls compatibility with old long string nesting +@* facility. +** CHANGE it to 2 if you want the old behaviour, or undefine it to turn +** off the advisory error when nesting [[...]]. +*/ +#define LUA_COMPAT_LSTR 1 + +/* +@@ LUA_COMPAT_GFIND controls compatibility with old 'string.gfind' name. +** CHANGE it to undefined as soon as you rename 'string.gfind' to +** 'string.gmatch'. +*/ +#define LUA_COMPAT_GFIND + +/* +@@ LUA_COMPAT_OPENLIB controls compatibility with old 'luaL_openlib' +@* behavior. +** CHANGE it to undefined as soon as you replace to 'luaL_register' +** your uses of 'luaL_openlib' +*/ +#define LUA_COMPAT_OPENLIB + + + +/* +@@ luai_apicheck is the assert macro used by the Lua-C API. +** CHANGE luai_apicheck if you want Lua to perform some checks in the +** parameters it gets from API calls. This may slow down the interpreter +** a bit, but may be quite useful when debugging C code that interfaces +** with Lua. A useful redefinition is to use assert.h. +*/ +#if defined(LUA_USE_APICHECK) +#include +#define luai_apicheck(L,o) { (void)L; assert(o); } +#else +#define luai_apicheck(L,o) { (void)L; } +#endif + + +/* +@@ LUAI_BITSINT defines the number of bits in an int. +** CHANGE here if Lua cannot automatically detect the number of bits of +** your machine. Probably you do not need to change this. +*/ +/* avoid overflows in comparison */ +#if INT_MAX-20 < 32760 +#define LUAI_BITSINT 16 +#elif INT_MAX > 2147483640L +/* int has at least 32 bits */ +#define LUAI_BITSINT 32 +#else +#error "you must define LUA_BITSINT with number of bits in an integer" +#endif + + +/* +@@ LUAI_UINT32 is an unsigned integer with at least 32 bits. +@@ LUAI_INT32 is an signed integer with at least 32 bits. +@@ LUAI_UMEM is an unsigned integer big enough to count the total +@* memory used by Lua. +@@ LUAI_MEM is a signed integer big enough to count the total memory +@* used by Lua. +** CHANGE here if for some weird reason the default definitions are not +** good enough for your machine. (The definitions in the 'else' +** part always works, but may waste space on machines with 64-bit +** longs.) Probably you do not need to change this. +*/ +#if LUAI_BITSINT >= 32 +#define LUAI_UINT32 unsigned int +#define LUAI_INT32 int +#define LUAI_MAXINT32 INT_MAX +#define LUAI_UMEM size_t +#define LUAI_MEM ptrdiff_t +#else +/* 16-bit ints */ +#define LUAI_UINT32 unsigned long +#define LUAI_INT32 long +#define LUAI_MAXINT32 LONG_MAX +#define LUAI_UMEM unsigned long +#define LUAI_MEM long +#endif + + +/* +@@ LUAI_MAXCALLS limits the number of nested calls. +** CHANGE it if you need really deep recursive calls. This limit is +** arbitrary; its only purpose is to stop infinite recursion before +** exhausting memory. +*/ +#define LUAI_MAXCALLS 20000 + + +/* +@@ LUAI_MAXCSTACK limits the number of Lua stack slots that a C function +@* can use. +** CHANGE it if you need lots of (Lua) stack space for your C +** functions. This limit is arbitrary; its only purpose is to stop C +** functions to consume unlimited stack space. (must be smaller than +** -LUA_REGISTRYINDEX) +*/ +#define LUAI_MAXCSTACK 8000 + + + +/* +** {================================================================== +** CHANGE (to smaller values) the following definitions if your system +** has a small C stack. (Or you may want to change them to larger +** values if your system has a large C stack and these limits are +** too rigid for you.) Some of these constants control the size of +** stack-allocated arrays used by the compiler or the interpreter, while +** others limit the maximum number of recursive calls that the compiler +** or the interpreter can perform. Values too large may cause a C stack +** overflow for some forms of deep constructs. +** =================================================================== +*/ + + +/* +@@ LUAI_MAXCCALLS is the maximum depth for nested C calls (short) and +@* syntactical nested non-terminals in a program. +*/ +#define LUAI_MAXCCALLS 200 + + +/* +@@ LUAI_MAXVARS is the maximum number of local variables per function +@* (must be smaller than 250). +*/ +#define LUAI_MAXVARS 200 + + +/* +@@ LUAI_MAXUPVALUES is the maximum number of upvalues per function +@* (must be smaller than 250). +*/ +#define LUAI_MAXUPVALUES 60 + + +/* +@@ LUAL_BUFFERSIZE is the buffer size used by the lauxlib buffer system. +*/ +#define LUAL_BUFFERSIZE BUFSIZ + +/* }================================================================== */ + + + + +/* +** {================================================================== +@@ LUA_NUMBER is the type of numbers in Lua. +** CHANGE the following definitions only if you want to build Lua +** with a number type different from double. You may also need to +** change lua_number2int & lua_number2integer. +** =================================================================== +*/ + +#define LUA_NUMBER_DOUBLE +#define LUA_NUMBER double + +/* +@@ LUAI_UACNUMBER is the result of an 'usual argument conversion' +@* over a number. +*/ +#define LUAI_UACNUMBER double + + +/* +@@ LUA_NUMBER_SCAN is the format for reading numbers. +@@ LUA_NUMBER_FMT is the format for writing numbers. +@@ lua_number2str converts a number to a string. +@@ LUAI_MAXNUMBER2STR is maximum size of previous conversion. +@@ lua_str2number converts a string to a number. +*/ +#define LUA_NUMBER_SCAN "%lf" +#define LUA_NUMBER_FMT "%.14g" +#define lua_number2str(s,n) sprintf((s), LUA_NUMBER_FMT, (n)) +#define LUAI_MAXNUMBER2STR 32 /* 16 digits, sign, point, and \0 */ +#define lua_str2number(s,p) strtod((s), (p)) + + +/* +@@ The luai_num* macros define the primitive operations over numbers. +*/ +#if defined(LUA_CORE) +#include +#define luai_numadd(a,b) ((a)+(b)) +#define luai_numsub(a,b) ((a)-(b)) +#define luai_nummul(a,b) ((a)*(b)) +#define luai_numdiv(a,b) ((a)/(b)) +#define luai_nummod(a,b) ((a) - floor((a)/(b))*(b)) +#define luai_numpow(a,b) (pow(a,b)) +#define luai_numunm(a) (-(a)) +#define luai_numeq(a,b) ((a)==(b)) +#define luai_numlt(a,b) ((a)<(b)) +#define luai_numle(a,b) ((a)<=(b)) +#define luai_numisnan(a) (!luai_numeq((a), (a))) +#endif + + +/* +@@ lua_number2int is a macro to convert lua_Number to int. +@@ lua_number2integer is a macro to convert lua_Number to lua_Integer. +** CHANGE them if you know a faster way to convert a lua_Number to +** int (with any rounding method and without throwing errors) in your +** system. In Pentium machines, a naive typecast from double to int +** in C is extremely slow, so any alternative is worth trying. +*/ + +/* On a Pentium, resort to a trick */ +#if defined(LUA_NUMBER_DOUBLE) && !defined(LUA_ANSI) && !defined(__SSE2__) && \ + (defined(__i386) || defined (_M_IX86) || defined(__i386__)) + +/* On a Microsoft compiler, use assembler */ +#if defined(_MSC_VER) + +#define lua_number2int(i,d) __asm fld d __asm fistp i +#define lua_number2integer(i,n) lua_number2int(i, n) + +/* the next trick should work on any Pentium, but sometimes clashes + with a DirectX idiosyncrasy */ +#else + +union luai_Cast { double l_d; long l_l; }; +#define lua_number2int(i,d) \ + { volatile union luai_Cast u; u.l_d = (d) + 6755399441055744.0; (i) = u.l_l; } +#define lua_number2integer(i,n) lua_number2int(i, n) + +#endif + + +/* this option always works, but may be slow */ +#else +#define lua_number2int(i,d) ((i)=(int)(d)) +#define lua_number2integer(i,d) ((i)=(lua_Integer)(d)) + +#endif + +/* }================================================================== */ + + +/* +@@ LUAI_USER_ALIGNMENT_T is a type that requires maximum alignment. +** CHANGE it if your system requires alignments larger than double. (For +** instance, if your system supports long doubles and they must be +** aligned in 16-byte boundaries, then you should add long double in the +** union.) Probably you do not need to change this. +*/ +#define LUAI_USER_ALIGNMENT_T union { double u; void *s; long l; } + + +/* +@@ LUAI_THROW/LUAI_TRY define how Lua does exception handling. +** CHANGE them if you prefer to use longjmp/setjmp even with C++ +** or if want/don't to use _longjmp/_setjmp instead of regular +** longjmp/setjmp. By default, Lua handles errors with exceptions when +** compiling as C++ code, with _longjmp/_setjmp when asked to use them, +** and with longjmp/setjmp otherwise. +*/ +#if defined(__cplusplus) +/* C++ exceptions */ +#define LUAI_THROW(L,c) throw(c) +#define LUAI_TRY(L,c,a) try { a } catch(...) \ + { if ((c)->status == 0) (c)->status = -1; } +#define luai_jmpbuf int /* dummy variable */ + +#elif defined(LUA_USE_ULONGJMP) +/* in Unix, try _longjmp/_setjmp (more efficient) */ +#define LUAI_THROW(L,c) _longjmp((c)->b, 1) +#define LUAI_TRY(L,c,a) if (_setjmp((c)->b) == 0) { a } +#define luai_jmpbuf jmp_buf + +#else +/* default handling with long jumps */ +#define LUAI_THROW(L,c) longjmp((c)->b, 1) +#define LUAI_TRY(L,c,a) if (setjmp((c)->b) == 0) { a } +#define luai_jmpbuf jmp_buf + +#endif + + +/* +@@ LUA_MAXCAPTURES is the maximum number of captures that a pattern +@* can do during pattern-matching. +** CHANGE it if you need more captures. This limit is arbitrary. +*/ +#define LUA_MAXCAPTURES 32 + + +/* +@@ lua_tmpnam is the function that the OS library uses to create a +@* temporary name. +@@ LUA_TMPNAMBUFSIZE is the maximum size of a name created by lua_tmpnam. +** CHANGE them if you have an alternative to tmpnam (which is considered +** insecure) or if you want the original tmpnam anyway. By default, Lua +** uses tmpnam except when POSIX is available, where it uses mkstemp. +*/ +#if defined(loslib_c) || defined(luaall_c) + +#if defined(LUA_USE_MKSTEMP) +#include +#define LUA_TMPNAMBUFSIZE 32 +#define lua_tmpnam(b,e) { \ + strcpy(b, "/tmp/lua_XXXXXX"); \ + e = mkstemp(b); \ + if (e != -1) close(e); \ + e = (e == -1); } + +#else +#define LUA_TMPNAMBUFSIZE L_tmpnam +#define lua_tmpnam(b,e) { e = (tmpnam(b) == NULL); } +#endif + +#endif + + +/* +@@ lua_popen spawns a new process connected to the current one through +@* the file streams. +** CHANGE it if you have a way to implement it in your system. +*/ +#if defined(LUA_USE_POPEN) + +#define lua_popen(L,c,m) ((void)L, fflush(NULL), popen(c,m)) +#define lua_pclose(L,file) ((void)L, (pclose(file) != -1)) + +#elif defined(LUA_WIN) + +#define lua_popen(L,c,m) ((void)L, _popen(c,m)) +#define lua_pclose(L,file) ((void)L, (_pclose(file) != -1)) + +#else + +#define lua_popen(L,c,m) ((void)((void)c, m), \ + luaL_error(L, LUA_QL("popen") " not supported"), (FILE*)0) +#define lua_pclose(L,file) ((void)((void)L, file), 0) + +#endif + +/* +@@ LUA_DL_* define which dynamic-library system Lua should use. +** CHANGE here if Lua has problems choosing the appropriate +** dynamic-library system for your platform (either Windows' DLL, Mac's +** dyld, or Unix's dlopen). If your system is some kind of Unix, there +** is a good chance that it has dlopen, so LUA_DL_DLOPEN will work for +** it. To use dlopen you also need to adapt the src/Makefile (probably +** adding -ldl to the linker options), so Lua does not select it +** automatically. (When you change the makefile to add -ldl, you must +** also add -DLUA_USE_DLOPEN.) +** If you do not want any kind of dynamic library, undefine all these +** options. +** By default, _WIN32 gets LUA_DL_DLL and MAC OS X gets LUA_DL_DYLD. +*/ +#if defined(LUA_USE_DLOPEN) +#define LUA_DL_DLOPEN +#endif + +#if defined(LUA_WIN) +#define LUA_DL_DLL +#endif + + +/* +@@ LUAI_EXTRASPACE allows you to add user-specific data in a lua_State +@* (the data goes just *before* the lua_State pointer). +** CHANGE (define) this if you really need that. This value must be +** a multiple of the maximum alignment required for your machine. +*/ +#define LUAI_EXTRASPACE 0 + + +/* +@@ luai_userstate* allow user-specific actions on threads. +** CHANGE them if you defined LUAI_EXTRASPACE and need to do something +** extra when a thread is created/deleted/resumed/yielded. +*/ +#define luai_userstateopen(L) ((void)L) +#define luai_userstateclose(L) ((void)L) +#define luai_userstatethread(L,L1) ((void)L) +#define luai_userstatefree(L) ((void)L) +#define luai_userstateresume(L,n) ((void)L) +#define luai_userstateyield(L,n) ((void)L) + + +/* +@@ LUA_INTFRMLEN is the length modifier for integer conversions +@* in 'string.format'. +@@ LUA_INTFRM_T is the integer type correspoding to the previous length +@* modifier. +** CHANGE them if your system supports long long or does not support long. +*/ + +#if defined(LUA_USELONGLONG) + +#define LUA_INTFRMLEN "ll" +#define LUA_INTFRM_T long long + +#else + +#define LUA_INTFRMLEN "l" +#define LUA_INTFRM_T long + +#endif + + + +/* =================================================================== */ + +/* +** Local configuration. You can use this space to add your redefinitions +** without modifying the main part of the file. +*/ + + + +#endif + diff --git a/vendor/lua/5.1/include/lualib.h b/vendor/lua/5.1/include/lualib.h new file mode 100644 index 000000000..469417f67 --- /dev/null +++ b/vendor/lua/5.1/include/lualib.h @@ -0,0 +1,53 @@ +/* +** $Id: lualib.h,v 1.36.1.1 2007/12/27 13:02:25 roberto Exp $ +** Lua standard libraries +** See Copyright Notice in lua.h +*/ + + +#ifndef lualib_h +#define lualib_h + +#include "lua.h" + + +/* Key to file-handle type */ +#define LUA_FILEHANDLE "FILE*" + + +#define LUA_COLIBNAME "coroutine" +LUALIB_API int (luaopen_base) (lua_State *L); + +#define LUA_TABLIBNAME "table" +LUALIB_API int (luaopen_table) (lua_State *L); + +#define LUA_IOLIBNAME "io" +LUALIB_API int (luaopen_io) (lua_State *L); + +#define LUA_OSLIBNAME "os" +LUALIB_API int (luaopen_os) (lua_State *L); + +#define LUA_STRLIBNAME "string" +LUALIB_API int (luaopen_string) (lua_State *L); + +#define LUA_MATHLIBNAME "math" +LUALIB_API int (luaopen_math) (lua_State *L); + +#define LUA_DBLIBNAME "debug" +LUALIB_API int (luaopen_debug) (lua_State *L); + +#define LUA_LOADLIBNAME "package" +LUALIB_API int (luaopen_package) (lua_State *L); + + +/* open all previous libraries */ +LUALIB_API void (luaL_openlibs) (lua_State *L); + + + +#ifndef lua_assert +#define lua_assert(x) ((void)0) +#endif + + +#endif diff --git a/vendor/lua/5.1/linux/liblua5.1.a b/vendor/lua/5.1/linux/liblua5.1.a new file mode 100644 index 000000000..ce7e09844 Binary files /dev/null and b/vendor/lua/5.1/linux/liblua5.1.a differ diff --git a/vendor/lua/5.1/linux/liblua5.1.so b/vendor/lua/5.1/linux/liblua5.1.so new file mode 100644 index 000000000..2db7f6f67 Binary files /dev/null and b/vendor/lua/5.1/linux/liblua5.1.so differ diff --git a/vendor/lua/5.1/lua.odin b/vendor/lua/5.1/lua.odin new file mode 100644 index 000000000..92660c534 --- /dev/null +++ b/vendor/lua/5.1/lua.odin @@ -0,0 +1,659 @@ +package lua_5_1 + +import "core:intrinsics" +import "core:builtin" + +import c "core:c/libc" + +#assert(size_of(c.int) == size_of(b32)) + +when ODIN_OS == .Windows { + foreign import lib "windows/lua5.1.dll.lib" +} else when ODIN_OS == .Linux { + foreign import lib "linux/liblua5.1.a" +} else { + foreign import lib "system:liblua5.1.a" +} + +VERSION :: "Lua 5.1" +RELEASE :: "Lua 5.1.5" +VERSION_NUM :: 501 +COPYRIGHT :: "Copyright (C) 1994-2012 Lua.org, PUC-Rio" +AUTHORS :: "R. Ierusalimschy, L. H. de Figueiredo & W. Celes" + +/* mark for precompiled code ('Lua') */ +SIGNATURE :: "\x1bLua" + +/* option for multiple returns in 'lua_pcall' and 'lua_call' */ +MULTRET :: -1 + +REGISTRYINDEX :: -10000 +ENVIRONINDEX :: -10001 +GLOBALSINDEX :: -10002 + +/* +@@ LUAI_MAXSTACK limits the size of the Lua stack. +** CHANGE it if you need a different limit. This limit is arbitrary; +** its only purpose is to stop Lua from consuming unlimited stack +** space (and to reserve some numbers for pseudo-indices). +** (It must fit into max(size_t)/32.) +*/ +MAXSTACK :: 1000000 when size_of(rawptr) == 4 else 15000 + + +/* +@@ LUA_EXTRASPACE defines the size of a raw memory area associated with +** a Lua state with very fast access. +** CHANGE it if you need a different size. +*/ +EXTRASPACE :: size_of(rawptr) + + + +/* +@@ LUA_IDSIZE gives the maximum size for the description of the source +@@ of a function in debug information. +** CHANGE it if you want a different size. +*/ +IDSIZE :: 60 + + +/* +@@ LUAL_BUFFERSIZE is the buffer size used by the lauxlib buffer system. +*/ +L_BUFFERSIZE :: c.int(16 * size_of(rawptr) * size_of(Number)) + + +MAXALIGNVAL :: max(align_of(Number), align_of(f64), align_of(rawptr), align_of(Integer), align_of(c.long)) + + +Status :: enum c.int { + OK = 0, + YIELD = 1, + ERRRUN = 2, + ERRSYNTAX = 3, + ERRMEM = 4, + ERRERR = 5, + ERRFILE = 6, +} + +/* thread status */ +OK :: Status.OK +YIELD :: Status.YIELD +ERRRUN :: Status.ERRRUN +ERRSYNTAX :: Status.ERRSYNTAX +ERRMEM :: Status.ERRMEM +ERRERR :: Status.ERRERR +ERRFILE :: Status.ERRFILE + +/* +** basic types +*/ + + +Type :: enum c.int { + NONE = -1, + + NIL = 0, + BOOLEAN = 1, + LIGHTUSERDATA = 2, + NUMBER = 3, + STRING = 4, + TABLE = 5, + FUNCTION = 6, + USERDATA = 7, + THREAD = 8, +} + +TNONE :: Type.NONE +TNIL :: Type.NIL +TBOOLEAN :: Type.BOOLEAN +TLIGHTUSERDATA :: Type.LIGHTUSERDATA +TNUMBER :: Type.NUMBER +TSTRING :: Type.STRING +TTABLE :: Type.TABLE +TFUNCTION :: Type.FUNCTION +TUSERDATA :: Type.USERDATA +TTHREAD :: Type.THREAD +NUMTYPES :: 9 + + +CompareOp :: enum c.int { + EQ = 0, + LT = 1, + LE = 2, +} + +OPEQ :: CompareOp.EQ +OPLT :: CompareOp.LT +OPLE :: CompareOp.LE + + +/* minimum Lua stack available to a C function */ +MINSTACK :: 20 + + +/* type of numbers in Lua */ +Number :: distinct (f32 when size_of(uintptr) == 4 else f64) + + +/* type for integer functions */ +Integer :: distinct (i32 when size_of(uintptr) == 4 else i64) + + +/* +** Type for C functions registered with Lua +*/ +CFunction :: #type proc "c" (L: ^State) -> c.int + + + +/* +** Type for functions that read/write blocks when loading/dumping Lua chunks +*/ +Reader :: #type proc "c" (L: ^State, ud: rawptr, sz: ^c.size_t) -> cstring +Writer :: #type proc "c" (L: ^State, p: rawptr, sz: ^c.size_t, ud: rawptr) -> c.int + + +/* +** Type for memory-allocation functions +*/ +Alloc :: #type proc "c" (ud: rawptr, ptr: rawptr, osize, nsize: c.size_t) -> rawptr + + +GCWhat :: enum c.int { + STOP = 0, + RESTART = 1, + COLLECT = 2, + COUNT = 3, + COUNTB = 4, + STEP = 5, + SETPAUSE = 6, + SETSTEPMUL = 7, +} +GCSTOP :: GCWhat.STOP +GCRESTART :: GCWhat.RESTART +GCCOLLECT :: GCWhat.COLLECT +GCCOUNT :: GCWhat.COUNT +GCCOUNTB :: GCWhat.COUNTB +GCSTEP :: GCWhat.STEP +GCSETPAUSE :: GCWhat.SETPAUSE +GCSETSTEPMUL :: GCWhat.SETSTEPMUL + + +/* +** Event codes +*/ + +HookEvent :: enum c.int { + CALL = 0, + RET = 1, + LINE = 2, + COUNT = 3, + TAILRET = 4, +} +HOOKCALL :: HookEvent.CALL +HOOKRET :: HookEvent.RET +HOOKLINE :: HookEvent.LINE +HOOKCOUNT :: HookEvent.COUNT +HOOKTAILRET :: HookEvent.TAILRET + + +/* +** Event masks +*/ +HookMask :: distinct bit_set[HookEvent; c.int] +MASKCALL :: HookMask{.CALL} +MASKRET :: HookMask{.RET} +MASKLINE :: HookMask{.LINE} +MASKCOUNT :: HookMask{.COUNT} + +/* activation record */ +Debug :: struct { + event: HookEvent, + name: cstring, /* (n) */ + namewhat: cstring, /* (n) 'global', 'local', 'field', 'method' */ + what: cstring, /* (S) 'Lua', 'C', 'main', 'tail' */ + source: cstring, /* (S) */ + currentline: c.int, /* (l) */ + nups: c.int, /* (u) number of upvalues */ + linedefined: c.int, /* (S) */ + lastlinedefined: c.int, /* (S) */ + short_src: [IDSIZE]u8 `fmt:"s"`, /* (S) */ + /* private part */ + i_ci: c.int, /* active function */ +} + + +/* Functions to be called by the debugger in specific events */ +Hook :: #type proc "c" (L: ^State, ar: ^Debug) + + +State :: struct {} // opaque data type + + +@(link_prefix="lua_") +@(default_calling_convention="c") +foreign lib { + /* + ** RCS ident string + */ + + ident: [^]u8 // TODO(bill): is this correct? + + + /* + ** state manipulation + */ + + newstate :: proc(f: Alloc, ud: rawptr) -> ^State --- + close :: proc(L: ^State) --- + newthread :: proc(L: ^State) -> ^State --- + + atpanic :: proc(L: ^State, panicf: CFunction) -> CFunction --- + + + /* + ** basic stack manipulation + */ + + gettop :: proc (L: ^State) -> c.int --- + settop :: proc (L: ^State, idx: c.int) --- + pushvalue :: proc (L: ^State, idx: c.int) --- + remove :: proc (L: ^State, idx: c.int) --- + insert :: proc (L: ^State, idx: c.int) --- + replace :: proc (L: ^State, idx: c.int) --- + checkstack :: proc (L: ^State, sz: c.int) -> c.int --- + + xmove :: proc(from, to: ^State, n: c.int) --- + + + /* + ** access functions (stack -> C) + */ + + isnumber :: proc(L: ^State, idx: c.int) -> b32 --- + isstring :: proc(L: ^State, idx: c.int) -> b32 --- + iscfunction :: proc(L: ^State, idx: c.int) -> b32 --- + isinteger :: proc(L: ^State, idx: c.int) -> b32 --- + isuserdata :: proc(L: ^State, idx: c.int) -> b32 --- + type :: proc(L: ^State, idx: c.int) -> Type --- + typename :: proc(L: ^State, tp: Type) -> cstring --- + + equal :: proc(L: ^State, idx1, idx2: c.int) -> b32 --- + rawequal :: proc(L: ^State, idx1, idx2: c.int) -> b32 --- + lessthan :: proc(L: ^State, idx1, idx2: c.int) -> b32 --- + + toboolean :: proc(L: ^State, idx: c.int) -> b32 --- + tolstring :: proc(L: ^State, idx: c.int, len: ^c.size_t) -> cstring --- + objlen :: proc(L: ^State, idx: c.int) -> c.size_t --- + tocfunction :: proc(L: ^State, idx: c.int) -> CFunction --- + touserdata :: proc(L: ^State, idx: c.int) -> rawptr --- + tothread :: proc(L: ^State, idx: c.int) -> ^State --- + topointer :: proc(L: ^State, idx: c.int) -> rawptr --- + + /* + ** push functions (C -> stack) + */ + + pushnil :: proc(L: ^State) --- + pushnumber :: proc(L: ^State, n: Number) --- + pushinteger :: proc(L: ^State, n: Integer) --- + pushlstring :: proc(L: ^State, s: cstring, l: c.size_t) --- + pushstring :: proc(L: ^State, s: cstring) --- + pushvfstring :: proc(L: ^State, fmt: cstring, argp: c.va_list) -> cstring --- + pushfstring :: proc(L: ^State, fmt: cstring, #c_vararg args: ..any) -> cstring --- + pushcclosure :: proc(L: ^State, fn: CFunction, n: c.int) --- + pushboolean :: proc(L: ^State, b: b32) --- + pushlightuserdata :: proc(L: ^State, p: rawptr) --- + pushthread :: proc(L: ^State) -> Status --- + + /* + ** get functions (Lua -> stack) + */ + + gettable :: proc(L: ^State, idx: c.int) --- + getfield :: proc(L: ^State, idx: c.int, k: cstring) --- + geti :: proc(L: ^State, idx: c.int, n: Integer) --- + rawget :: proc(L: ^State, idx: c.int) --- + rawgeti :: proc(L: ^State, idx: c.int, n: Integer) --- + rawgetp :: proc(L: ^State, idx: c.int, p: rawptr) --- + + createtable :: proc(L: ^State, narr, nrec: c.int) --- + newuserdata :: proc(L: ^State, sz: c.size_t) -> rawptr --- + getmetatable :: proc(L: ^State, objindex: c.int) -> c.int --- + getfenv :: proc(L: ^State, idx: c.int) --- + + + /* + ** set functions (stack -> Lua) + */ + + settable :: proc(L: ^State, idx: c.int) --- + setfield :: proc(L: ^State, idx: c.int, k: cstring) --- + rawset :: proc(L: ^State, idx: c.int) --- + rawseti :: proc(L: ^State, idx: c.int, n: c.int) --- + rawsetp :: proc(L: ^State, idx: c.int, p: rawptr) --- + setmetatable :: proc(L: ^State, objindex: c.int) -> c.int --- + setfenv :: proc(L: ^State, idx: c.int) -> c.int --- + + + /* + ** 'load' and 'call' functions (load and run Lua code) + */ + + call :: proc(L: ^State, nargs, nresults: c.int) --- + + getctx :: proc(L: ^State, ctx: ^c.int) -> c.int --- + + pcall :: proc(L: ^State, nargs, nresults: c.int, errfunc: c.int) -> c.int --- + cpcall :: proc(L: ^State, func: CFunction, ud: rawptr) -> c.int --- + + load :: proc(L: ^State, reader: Reader, dt: rawptr, + chunkname: cstring) -> Status --- + + dump :: proc(L: ^State, writer: Writer, data: rawptr) -> Status --- + + + /* + ** coroutine functions + */ + + yield :: proc(L: ^State, nresults: c.int) -> Status --- + resume :: proc(L: ^State, narg: c.int) -> Status --- + status :: proc(L: ^State) -> Status --- + + + /* + ** garbage-collection function and options + */ + + + + gc :: proc(L: ^State, what: GCWhat, data: c.int) -> c.int --- + + + /* + ** miscellaneous functions + */ + + error :: proc(L: ^State) -> Status --- + + next :: proc(L: ^State, idx: c.int) -> c.int --- + + concat :: proc(L: ^State, n: c.int) --- + len :: proc(L: ^State, idx: c.int) --- + + getallocf :: proc(L: State, ud: ^rawptr) -> Alloc --- + setallocf :: proc(L: ^State, f: Alloc, ud: rawptr) --- + + /* + ** {====================================================================== + ** Debug API + ** ======================================================================= + */ + + getstack :: proc(L: ^State, level: c.int, ar: ^Debug) -> c.int --- + getinfo :: proc(L: ^State, what: cstring, ar: ^Debug) -> c.int --- + getlocal :: proc(L: ^State, ar: ^Debug, n: c.int) -> cstring --- + setlocal :: proc(L: ^State, ar: ^Debug, n: c.int) -> cstring --- + getupvalue :: proc(L: ^State, funcindex: c.int, n: c.int) -> cstring --- + setupvalue :: proc(L: ^State, funcindex: c.int, n: c.int) -> cstring --- + + sethook :: proc(L: ^State, func: Hook, mask: HookMask, count: c.int) -> c.int --- + gethook :: proc(L: ^State) -> Hook --- + gethookmask :: proc(L: ^State) -> HookMask --- + gethookcount :: proc(L: ^State) -> c.int --- + + /* }============================================================== */ +} + + + +COLIBNAME :: "coroutine" +TABLIBNAME :: "table" +IOLIBNAME :: "io" +OSLIBNAME :: "os" +STRLIBNAME :: "string" +UTF8LIBNAME :: "utf8" +MATHLIBNAME :: "math" +DBLIBNAME :: "debug" +LOADLIBNAME :: "package" + +@(link_prefix="lua") +@(default_calling_convention="c") +foreign lib { + open_base :: proc(L: ^State) -> c.int --- + open_table :: proc(L: ^State) -> c.int --- + open_io :: proc(L: ^State) -> c.int --- + open_os :: proc(L: ^State) -> c.int --- + open_string :: proc(L: ^State) -> c.int --- + open_utf8 :: proc(L: ^State) -> c.int --- + open_math :: proc(L: ^State) -> c.int --- + open_debug :: proc(L: ^State) -> c.int --- + open_package :: proc(L: ^State) -> c.int --- + + /* open all previous libraries */ + + L_openlibs :: proc(L: ^State) --- +} + + + +GNAME :: "_G" + +L_Reg :: struct { + name: cstring, + func: CFunction, +} + +/* predefined references */ +NOREF :: -2 +REFNIL :: -1 + +@(link_prefix="lua") +@(default_calling_convention="c") +foreign lib { + L_openlib :: proc(L: ^State, libname: cstring, l: [^]L_Reg, nup: c.int) --- + L_register :: proc(L: ^State, libname: cstring, l: ^L_Reg) --- + L_getmetafield :: proc(L: ^State, obj: c.int, e: cstring) -> c.int --- + L_callmeta :: proc(L: ^State, obj: c.int, e: cstring) -> c.int --- + L_typeerror :: proc(L: ^State, narg: c.int, tname: cstring) -> c.int --- + L_argerror :: proc(L: ^State, numarg: c.int, extramsg: cstring) -> c.int --- + @(link_name="luaL_checklstring") + L_checkstring :: proc(L: ^State, numArg: c.int, l: ^c.size_t = nil) -> cstring --- + @(link_name="luaL_optlstring") + L_optstring :: proc(L: ^State, numArg: c.int, def: cstring, l: ^c.size_t = nil) -> cstring --- + L_checknumber :: proc(L: ^State, numArg: c.int) -> Number --- + L_optnumber :: proc(L: ^State, nArg: c.int, def: Number) -> Number --- + + L_checkinteger :: proc(L: ^State, numArg: c.int) -> Integer --- + L_optinteger :: proc(L: ^State, nArg: c.int, def: Integer) -> Integer --- + + + L_checkstack :: proc(L: ^State, sz: c.int, msg: cstring) --- + L_checktype :: proc(L: ^State, narg: c.int, t: c.int) --- + L_checkany :: proc(L: ^State, narg: c.int) --- + + L_newmetatable :: proc(L: ^State, tname: cstring) -> c.int --- + L_checkudata :: proc(L: ^State, ud: c.int, tname: cstring) -> rawptr --- + + L_where :: proc(L: ^State, lvl: c.int) --- + L_error :: proc(L: ^State, fmt: cstring, #c_vararg args: ..any) -> Status --- + + L_checkoption :: proc(L: ^State, narg: c.int, def: cstring, lst: [^]cstring) -> c.int --- + + + L_ref :: proc(L: ^State, t: c.int) -> c.int --- + L_unref :: proc(L: ^State, t: c.int, ref: c.int) --- + + L_loadfile :: proc (L: ^State, filename: cstring) -> Status --- + + L_loadbuffer :: proc(L: ^State, buff: [^]byte, sz: c.size_t, name: cstring) -> Status --- + L_loadstring :: proc(L: ^State, s: cstring) -> Status --- + + L_newstate :: proc() -> ^State --- + + L_gsub :: proc(L: ^State, s, p, r: cstring) -> cstring --- + + L_findtable :: proc(L: ^State, idx: c.int, fname: cstring, szhint: c.int) -> cstring --- +} +/* +** {====================================================== +** Generic Buffer manipulation +** ======================================================= +*/ + + +L_Buffer :: struct { + p: [^]byte, /* buffer address */ + lvl: c.int, /* number of strings in the stack (level) */ + L: ^State, + buffer: [L_BUFFERSIZE]byte, /* initial buffer */ +} + +L_addchar :: #force_inline proc "c" (B: ^L_Buffer, c: byte) { + end := ([^]byte)(&B.buffer)[L_BUFFERSIZE:] + if B.p < end { + L_prepbuffer(B) + } + B.p[0] = c + B.p = B.p[1:] +} +L_putchar :: L_addchar + +L_addsize :: #force_inline proc "c" (B: ^L_Buffer, s: c.size_t) -> [^]byte { + B.p = B.p[s:] + return B.p +} + + +@(link_prefix="lua") +@(default_calling_convention="c") +foreign lib { + L_buffinit :: proc(L: ^State, B: ^L_Buffer) --- + L_prepbuffer :: proc(B: ^L_Buffer) -> [^]byte --- + L_addlstring :: proc(B: ^L_Buffer, s: cstring, l: c.size_t) --- + L_addstring :: proc(B: ^L_Buffer, s: cstring) --- + L_addvalue :: proc(B: ^L_Buffer) --- + L_pushresult :: proc(B: ^L_Buffer) --- + L_pushresultsize :: proc(B: ^L_Buffer, sz: c.size_t) --- + L_buffinitsize :: proc(L: ^State, B: ^L_Buffer, sz: c.size_t) -> [^]byte --- +} + +@(link_prefix="lua_") +@(default_calling_convention="c") +foreign lib { + /* hack */ + setlevel :: proc(from, to: ^State) --- +} + + +/* }====================================================== */ + + + + +/* +** {============================================================== +** some useful macros +** =============================================================== +*/ + +pop :: #force_inline proc "c" (L: ^State, n: c.int) { + settop(L, -n-1) +} +newtable :: #force_inline proc "c" (L: ^State) { + createtable(L, 0, 0) +} +register :: #force_inline proc "c" (L: ^State, n: cstring, f: CFunction) { + pushcfunction(L, f) + setglobal(L, n) +} + +pushcfunction :: #force_inline proc "c" (L: ^State, f: CFunction) { + pushcclosure(L, f, 0) +} + +strlen :: #force_inline proc "c" (L: ^State, i: c.int) -> c.size_t { + return objlen(L, i) +} + + +isfunction :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .FUNCTION } +istable :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .TABLE } +islightuserdata :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .LIGHTUSERDATA } +isnil :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .NIL } +isboolean :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .BOOLEAN } +isthread :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .THREAD } +isnone :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .NONE } +isnoneornil :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) <= .NIL } + + +pushliteral :: pushstring +setglobal :: #force_inline proc "c" (L: ^State, s: cstring) { + setfield(L, GLOBALSINDEX, s) +} +getglobal :: #force_inline proc "c" (L: ^State, s: cstring) { + getfield(L, GLOBALSINDEX, s) +} +tostring :: #force_inline proc "c" (L: ^State, i: c.int) -> cstring { + return tolstring(L, i, nil) +} + +open :: newstate +getregistry :: #force_inline proc "c" (L: ^State) { + pushvalue(L, REGISTRYINDEX) +} + +getgccount :: #force_inline proc "c" (L: ^State) -> c.int { + return gc(L, .COUNT, 0) +} + +Chunkreader :: Reader +Chunkwriter :: Writer + + +L_argcheck :: #force_inline proc "c" (L: ^State, cond: bool, numarg: c.int, extramsg: cstring) { + if cond { + L_argerror(L, numarg, extramsg) + } +} + +L_typename :: #force_inline proc "c" (L: ^State, i: c.int) -> cstring { + return typename(L, type(L, i)) +} +L_dofile :: #force_inline proc "c" (L: ^State, s: cstring) -> c.int { + err := L_loadfile(L, s) + return pcall(L, 0, MULTRET, 0) if err == nil else c.int(err) +} +L_dostring :: #force_inline proc "c" (L: ^State, s: cstring) -> c.int { + err := L_loadstring(L, s) + return pcall(L, 0, MULTRET, 0) if err == nil else c.int(err) +} +L_getmetatable :: #force_inline proc "c" (L: ^State, n: cstring) { + getfield(L, REGISTRYINDEX, n) +} +L_opt :: #force_inline proc "c" (L: ^State, f: $F, n: c.int, d: $T) -> T where intrinsics.type_is_proc(F) { + return d if isnoneornil(L, n) else f(L, n) +} + + + +ref :: #force_inline proc "c" (L: ^State, lock: bool) -> c.int { + if lock { + return L_ref(L, REGISTRYINDEX) + } + pushstring(L, "unlocked references are obsolete") + error(L) + return 0 +} +unref :: #force_inline proc "c" (L: ^State, ref: c.int) { + L_unref(L,REGISTRYINDEX, ref) +} +getref :: #force_inline proc "c" (L: ^State, ref: Integer) { + rawgeti(L, REGISTRYINDEX, ref) +} + + +/* }============================================================== */ diff --git a/vendor/lua/5.1/windows/lua5.1.dll b/vendor/lua/5.1/windows/lua5.1.dll new file mode 100644 index 000000000..353c21940 Binary files /dev/null and b/vendor/lua/5.1/windows/lua5.1.dll differ diff --git a/vendor/lua/5.1/windows/lua5.1.dll.lib b/vendor/lua/5.1/windows/lua5.1.dll.lib new file mode 100644 index 000000000..6e1497cc1 Binary files /dev/null and b/vendor/lua/5.1/windows/lua5.1.dll.lib differ diff --git a/vendor/lua/5.2/include/lauxlib.h b/vendor/lua/5.2/include/lauxlib.h new file mode 100644 index 000000000..0fb023b8e --- /dev/null +++ b/vendor/lua/5.2/include/lauxlib.h @@ -0,0 +1,212 @@ +/* +** $Id: lauxlib.h,v 1.120.1.1 2013/04/12 18:48:47 roberto Exp $ +** Auxiliary functions for building Lua libraries +** See Copyright Notice in lua.h +*/ + + +#ifndef lauxlib_h +#define lauxlib_h + + +#include +#include + +#include "lua.h" + + + +/* extra error code for `luaL_load' */ +#define LUA_ERRFILE (LUA_ERRERR+1) + + +typedef struct luaL_Reg { + const char *name; + lua_CFunction func; +} luaL_Reg; + + +LUALIB_API void (luaL_checkversion_) (lua_State *L, lua_Number ver); +#define luaL_checkversion(L) luaL_checkversion_(L, LUA_VERSION_NUM) + +LUALIB_API int (luaL_getmetafield) (lua_State *L, int obj, const char *e); +LUALIB_API int (luaL_callmeta) (lua_State *L, int obj, const char *e); +LUALIB_API const char *(luaL_tolstring) (lua_State *L, int idx, size_t *len); +LUALIB_API int (luaL_argerror) (lua_State *L, int numarg, const char *extramsg); +LUALIB_API const char *(luaL_checklstring) (lua_State *L, int numArg, + size_t *l); +LUALIB_API const char *(luaL_optlstring) (lua_State *L, int numArg, + const char *def, size_t *l); +LUALIB_API lua_Number (luaL_checknumber) (lua_State *L, int numArg); +LUALIB_API lua_Number (luaL_optnumber) (lua_State *L, int nArg, lua_Number def); + +LUALIB_API lua_Integer (luaL_checkinteger) (lua_State *L, int numArg); +LUALIB_API lua_Integer (luaL_optinteger) (lua_State *L, int nArg, + lua_Integer def); +LUALIB_API lua_Unsigned (luaL_checkunsigned) (lua_State *L, int numArg); +LUALIB_API lua_Unsigned (luaL_optunsigned) (lua_State *L, int numArg, + lua_Unsigned def); + +LUALIB_API void (luaL_checkstack) (lua_State *L, int sz, const char *msg); +LUALIB_API void (luaL_checktype) (lua_State *L, int narg, int t); +LUALIB_API void (luaL_checkany) (lua_State *L, int narg); + +LUALIB_API int (luaL_newmetatable) (lua_State *L, const char *tname); +LUALIB_API void (luaL_setmetatable) (lua_State *L, const char *tname); +LUALIB_API void *(luaL_testudata) (lua_State *L, int ud, const char *tname); +LUALIB_API void *(luaL_checkudata) (lua_State *L, int ud, const char *tname); + +LUALIB_API void (luaL_where) (lua_State *L, int lvl); +LUALIB_API int (luaL_error) (lua_State *L, const char *fmt, ...); + +LUALIB_API int (luaL_checkoption) (lua_State *L, int narg, const char *def, + const char *const lst[]); + +LUALIB_API int (luaL_fileresult) (lua_State *L, int stat, const char *fname); +LUALIB_API int (luaL_execresult) (lua_State *L, int stat); + +/* pre-defined references */ +#define LUA_NOREF (-2) +#define LUA_REFNIL (-1) + +LUALIB_API int (luaL_ref) (lua_State *L, int t); +LUALIB_API void (luaL_unref) (lua_State *L, int t, int ref); + +LUALIB_API int (luaL_loadfilex) (lua_State *L, const char *filename, + const char *mode); + +#define luaL_loadfile(L,f) luaL_loadfilex(L,f,NULL) + +LUALIB_API int (luaL_loadbufferx) (lua_State *L, const char *buff, size_t sz, + const char *name, const char *mode); +LUALIB_API int (luaL_loadstring) (lua_State *L, const char *s); + +LUALIB_API lua_State *(luaL_newstate) (void); + +LUALIB_API int (luaL_len) (lua_State *L, int idx); + +LUALIB_API const char *(luaL_gsub) (lua_State *L, const char *s, const char *p, + const char *r); + +LUALIB_API void (luaL_setfuncs) (lua_State *L, const luaL_Reg *l, int nup); + +LUALIB_API int (luaL_getsubtable) (lua_State *L, int idx, const char *fname); + +LUALIB_API void (luaL_traceback) (lua_State *L, lua_State *L1, + const char *msg, int level); + +LUALIB_API void (luaL_requiref) (lua_State *L, const char *modname, + lua_CFunction openf, int glb); + +/* +** =============================================================== +** some useful macros +** =============================================================== +*/ + + +#define luaL_newlibtable(L,l) \ + lua_createtable(L, 0, sizeof(l)/sizeof((l)[0]) - 1) + +#define luaL_newlib(L,l) (luaL_newlibtable(L,l), luaL_setfuncs(L,l,0)) + +#define luaL_argcheck(L, cond,numarg,extramsg) \ + ((void)((cond) || luaL_argerror(L, (numarg), (extramsg)))) +#define luaL_checkstring(L,n) (luaL_checklstring(L, (n), NULL)) +#define luaL_optstring(L,n,d) (luaL_optlstring(L, (n), (d), NULL)) +#define luaL_checkint(L,n) ((int)luaL_checkinteger(L, (n))) +#define luaL_optint(L,n,d) ((int)luaL_optinteger(L, (n), (d))) +#define luaL_checklong(L,n) ((long)luaL_checkinteger(L, (n))) +#define luaL_optlong(L,n,d) ((long)luaL_optinteger(L, (n), (d))) + +#define luaL_typename(L,i) lua_typename(L, lua_type(L,(i))) + +#define luaL_dofile(L, fn) \ + (luaL_loadfile(L, fn) || lua_pcall(L, 0, LUA_MULTRET, 0)) + +#define luaL_dostring(L, s) \ + (luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0)) + +#define luaL_getmetatable(L,n) (lua_getfield(L, LUA_REGISTRYINDEX, (n))) + +#define luaL_opt(L,f,n,d) (lua_isnoneornil(L,(n)) ? (d) : f(L,(n))) + +#define luaL_loadbuffer(L,s,sz,n) luaL_loadbufferx(L,s,sz,n,NULL) + + +/* +** {====================================================== +** Generic Buffer manipulation +** ======================================================= +*/ + +typedef struct luaL_Buffer { + char *b; /* buffer address */ + size_t size; /* buffer size */ + size_t n; /* number of characters in buffer */ + lua_State *L; + char initb[LUAL_BUFFERSIZE]; /* initial buffer */ +} luaL_Buffer; + + +#define luaL_addchar(B,c) \ + ((void)((B)->n < (B)->size || luaL_prepbuffsize((B), 1)), \ + ((B)->b[(B)->n++] = (c))) + +#define luaL_addsize(B,s) ((B)->n += (s)) + +LUALIB_API void (luaL_buffinit) (lua_State *L, luaL_Buffer *B); +LUALIB_API char *(luaL_prepbuffsize) (luaL_Buffer *B, size_t sz); +LUALIB_API void (luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l); +LUALIB_API void (luaL_addstring) (luaL_Buffer *B, const char *s); +LUALIB_API void (luaL_addvalue) (luaL_Buffer *B); +LUALIB_API void (luaL_pushresult) (luaL_Buffer *B); +LUALIB_API void (luaL_pushresultsize) (luaL_Buffer *B, size_t sz); +LUALIB_API char *(luaL_buffinitsize) (lua_State *L, luaL_Buffer *B, size_t sz); + +#define luaL_prepbuffer(B) luaL_prepbuffsize(B, LUAL_BUFFERSIZE) + +/* }====================================================== */ + + + +/* +** {====================================================== +** File handles for IO library +** ======================================================= +*/ + +/* +** A file handle is a userdata with metatable 'LUA_FILEHANDLE' and +** initial structure 'luaL_Stream' (it may contain other fields +** after that initial structure). +*/ + +#define LUA_FILEHANDLE "FILE*" + + +typedef struct luaL_Stream { + FILE *f; /* stream (NULL for incompletely created streams) */ + lua_CFunction closef; /* to close stream (NULL for closed streams) */ +} luaL_Stream; + +/* }====================================================== */ + + + +/* compatibility with old module system */ +#if defined(LUA_COMPAT_MODULE) + +LUALIB_API void (luaL_pushmodule) (lua_State *L, const char *modname, + int sizehint); +LUALIB_API void (luaL_openlib) (lua_State *L, const char *libname, + const luaL_Reg *l, int nup); + +#define luaL_register(L,n,l) (luaL_openlib(L,(n),(l),0)) + +#endif + + +#endif + + diff --git a/vendor/lua/5.2/include/lua.h b/vendor/lua/5.2/include/lua.h new file mode 100644 index 000000000..ff4a10861 --- /dev/null +++ b/vendor/lua/5.2/include/lua.h @@ -0,0 +1,444 @@ +/* +** $Id: lua.h,v 1.285.1.4 2015/02/21 14:04:50 roberto Exp $ +** Lua - A Scripting Language +** Lua.org, PUC-Rio, Brazil (http://www.lua.org) +** See Copyright Notice at the end of this file +*/ + + +#ifndef lua_h +#define lua_h + +#include +#include + + +#include "luaconf.h" + + +#define LUA_VERSION_MAJOR "5" +#define LUA_VERSION_MINOR "2" +#define LUA_VERSION_NUM 502 +#define LUA_VERSION_RELEASE "4" + +#define LUA_VERSION "Lua " LUA_VERSION_MAJOR "." LUA_VERSION_MINOR +#define LUA_RELEASE LUA_VERSION "." LUA_VERSION_RELEASE +#define LUA_COPYRIGHT LUA_RELEASE " Copyright (C) 1994-2015 Lua.org, PUC-Rio" +#define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo, W. Celes" + + +/* mark for precompiled code ('Lua') */ +#define LUA_SIGNATURE "\033Lua" + +/* option for multiple returns in 'lua_pcall' and 'lua_call' */ +#define LUA_MULTRET (-1) + + +/* +** pseudo-indices +*/ +#define LUA_REGISTRYINDEX LUAI_FIRSTPSEUDOIDX +#define lua_upvalueindex(i) (LUA_REGISTRYINDEX - (i)) + + +/* thread status */ +#define LUA_OK 0 +#define LUA_YIELD 1 +#define LUA_ERRRUN 2 +#define LUA_ERRSYNTAX 3 +#define LUA_ERRMEM 4 +#define LUA_ERRGCMM 5 +#define LUA_ERRERR 6 + + +typedef struct lua_State lua_State; + +typedef int (*lua_CFunction) (lua_State *L); + + +/* +** functions that read/write blocks when loading/dumping Lua chunks +*/ +typedef const char * (*lua_Reader) (lua_State *L, void *ud, size_t *sz); + +typedef int (*lua_Writer) (lua_State *L, const void* p, size_t sz, void* ud); + + +/* +** prototype for memory-allocation functions +*/ +typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize); + + +/* +** basic types +*/ +#define LUA_TNONE (-1) + +#define LUA_TNIL 0 +#define LUA_TBOOLEAN 1 +#define LUA_TLIGHTUSERDATA 2 +#define LUA_TNUMBER 3 +#define LUA_TSTRING 4 +#define LUA_TTABLE 5 +#define LUA_TFUNCTION 6 +#define LUA_TUSERDATA 7 +#define LUA_TTHREAD 8 + +#define LUA_NUMTAGS 9 + + + +/* minimum Lua stack available to a C function */ +#define LUA_MINSTACK 20 + + +/* predefined values in the registry */ +#define LUA_RIDX_MAINTHREAD 1 +#define LUA_RIDX_GLOBALS 2 +#define LUA_RIDX_LAST LUA_RIDX_GLOBALS + + +/* type of numbers in Lua */ +typedef LUA_NUMBER lua_Number; + + +/* type for integer functions */ +typedef LUA_INTEGER lua_Integer; + +/* unsigned integer type */ +typedef LUA_UNSIGNED lua_Unsigned; + + + +/* +** generic extra include file +*/ +#if defined(LUA_USER_H) +#include LUA_USER_H +#endif + + +/* +** RCS ident string +*/ +extern const char lua_ident[]; + + +/* +** state manipulation +*/ +LUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud); +LUA_API void (lua_close) (lua_State *L); +LUA_API lua_State *(lua_newthread) (lua_State *L); + +LUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf); + + +LUA_API const lua_Number *(lua_version) (lua_State *L); + + +/* +** basic stack manipulation +*/ +LUA_API int (lua_absindex) (lua_State *L, int idx); +LUA_API int (lua_gettop) (lua_State *L); +LUA_API void (lua_settop) (lua_State *L, int idx); +LUA_API void (lua_pushvalue) (lua_State *L, int idx); +LUA_API void (lua_remove) (lua_State *L, int idx); +LUA_API void (lua_insert) (lua_State *L, int idx); +LUA_API void (lua_replace) (lua_State *L, int idx); +LUA_API void (lua_copy) (lua_State *L, int fromidx, int toidx); +LUA_API int (lua_checkstack) (lua_State *L, int sz); + +LUA_API void (lua_xmove) (lua_State *from, lua_State *to, int n); + + +/* +** access functions (stack -> C) +*/ + +LUA_API int (lua_isnumber) (lua_State *L, int idx); +LUA_API int (lua_isstring) (lua_State *L, int idx); +LUA_API int (lua_iscfunction) (lua_State *L, int idx); +LUA_API int (lua_isuserdata) (lua_State *L, int idx); +LUA_API int (lua_type) (lua_State *L, int idx); +LUA_API const char *(lua_typename) (lua_State *L, int tp); + +LUA_API lua_Number (lua_tonumberx) (lua_State *L, int idx, int *isnum); +LUA_API lua_Integer (lua_tointegerx) (lua_State *L, int idx, int *isnum); +LUA_API lua_Unsigned (lua_tounsignedx) (lua_State *L, int idx, int *isnum); +LUA_API int (lua_toboolean) (lua_State *L, int idx); +LUA_API const char *(lua_tolstring) (lua_State *L, int idx, size_t *len); +LUA_API size_t (lua_rawlen) (lua_State *L, int idx); +LUA_API lua_CFunction (lua_tocfunction) (lua_State *L, int idx); +LUA_API void *(lua_touserdata) (lua_State *L, int idx); +LUA_API lua_State *(lua_tothread) (lua_State *L, int idx); +LUA_API const void *(lua_topointer) (lua_State *L, int idx); + + +/* +** Comparison and arithmetic functions +*/ + +#define LUA_OPADD 0 /* ORDER TM */ +#define LUA_OPSUB 1 +#define LUA_OPMUL 2 +#define LUA_OPDIV 3 +#define LUA_OPMOD 4 +#define LUA_OPPOW 5 +#define LUA_OPUNM 6 + +LUA_API void (lua_arith) (lua_State *L, int op); + +#define LUA_OPEQ 0 +#define LUA_OPLT 1 +#define LUA_OPLE 2 + +LUA_API int (lua_rawequal) (lua_State *L, int idx1, int idx2); +LUA_API int (lua_compare) (lua_State *L, int idx1, int idx2, int op); + + +/* +** push functions (C -> stack) +*/ +LUA_API void (lua_pushnil) (lua_State *L); +LUA_API void (lua_pushnumber) (lua_State *L, lua_Number n); +LUA_API void (lua_pushinteger) (lua_State *L, lua_Integer n); +LUA_API void (lua_pushunsigned) (lua_State *L, lua_Unsigned n); +LUA_API const char *(lua_pushlstring) (lua_State *L, const char *s, size_t l); +LUA_API const char *(lua_pushstring) (lua_State *L, const char *s); +LUA_API const char *(lua_pushvfstring) (lua_State *L, const char *fmt, + va_list argp); +LUA_API const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...); +LUA_API void (lua_pushcclosure) (lua_State *L, lua_CFunction fn, int n); +LUA_API void (lua_pushboolean) (lua_State *L, int b); +LUA_API void (lua_pushlightuserdata) (lua_State *L, void *p); +LUA_API int (lua_pushthread) (lua_State *L); + + +/* +** get functions (Lua -> stack) +*/ +LUA_API void (lua_getglobal) (lua_State *L, const char *var); +LUA_API void (lua_gettable) (lua_State *L, int idx); +LUA_API void (lua_getfield) (lua_State *L, int idx, const char *k); +LUA_API void (lua_rawget) (lua_State *L, int idx); +LUA_API void (lua_rawgeti) (lua_State *L, int idx, int n); +LUA_API void (lua_rawgetp) (lua_State *L, int idx, const void *p); +LUA_API void (lua_createtable) (lua_State *L, int narr, int nrec); +LUA_API void *(lua_newuserdata) (lua_State *L, size_t sz); +LUA_API int (lua_getmetatable) (lua_State *L, int objindex); +LUA_API void (lua_getuservalue) (lua_State *L, int idx); + + +/* +** set functions (stack -> Lua) +*/ +LUA_API void (lua_setglobal) (lua_State *L, const char *var); +LUA_API void (lua_settable) (lua_State *L, int idx); +LUA_API void (lua_setfield) (lua_State *L, int idx, const char *k); +LUA_API void (lua_rawset) (lua_State *L, int idx); +LUA_API void (lua_rawseti) (lua_State *L, int idx, int n); +LUA_API void (lua_rawsetp) (lua_State *L, int idx, const void *p); +LUA_API int (lua_setmetatable) (lua_State *L, int objindex); +LUA_API void (lua_setuservalue) (lua_State *L, int idx); + + +/* +** 'load' and 'call' functions (load and run Lua code) +*/ +LUA_API void (lua_callk) (lua_State *L, int nargs, int nresults, int ctx, + lua_CFunction k); +#define lua_call(L,n,r) lua_callk(L, (n), (r), 0, NULL) + +LUA_API int (lua_getctx) (lua_State *L, int *ctx); + +LUA_API int (lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc, + int ctx, lua_CFunction k); +#define lua_pcall(L,n,r,f) lua_pcallk(L, (n), (r), (f), 0, NULL) + +LUA_API int (lua_load) (lua_State *L, lua_Reader reader, void *dt, + const char *chunkname, + const char *mode); + +LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data); + + +/* +** coroutine functions +*/ +LUA_API int (lua_yieldk) (lua_State *L, int nresults, int ctx, + lua_CFunction k); +#define lua_yield(L,n) lua_yieldk(L, (n), 0, NULL) +LUA_API int (lua_resume) (lua_State *L, lua_State *from, int narg); +LUA_API int (lua_status) (lua_State *L); + +/* +** garbage-collection function and options +*/ + +#define LUA_GCSTOP 0 +#define LUA_GCRESTART 1 +#define LUA_GCCOLLECT 2 +#define LUA_GCCOUNT 3 +#define LUA_GCCOUNTB 4 +#define LUA_GCSTEP 5 +#define LUA_GCSETPAUSE 6 +#define LUA_GCSETSTEPMUL 7 +#define LUA_GCSETMAJORINC 8 +#define LUA_GCISRUNNING 9 +#define LUA_GCGEN 10 +#define LUA_GCINC 11 + +LUA_API int (lua_gc) (lua_State *L, int what, int data); + + +/* +** miscellaneous functions +*/ + +LUA_API int (lua_error) (lua_State *L); + +LUA_API int (lua_next) (lua_State *L, int idx); + +LUA_API void (lua_concat) (lua_State *L, int n); +LUA_API void (lua_len) (lua_State *L, int idx); + +LUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud); +LUA_API void (lua_setallocf) (lua_State *L, lua_Alloc f, void *ud); + + + +/* +** =============================================================== +** some useful macros +** =============================================================== +*/ + +#define lua_tonumber(L,i) lua_tonumberx(L,i,NULL) +#define lua_tointeger(L,i) lua_tointegerx(L,i,NULL) +#define lua_tounsigned(L,i) lua_tounsignedx(L,i,NULL) + +#define lua_pop(L,n) lua_settop(L, -(n)-1) + +#define lua_newtable(L) lua_createtable(L, 0, 0) + +#define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n))) + +#define lua_pushcfunction(L,f) lua_pushcclosure(L, (f), 0) + +#define lua_isfunction(L,n) (lua_type(L, (n)) == LUA_TFUNCTION) +#define lua_istable(L,n) (lua_type(L, (n)) == LUA_TTABLE) +#define lua_islightuserdata(L,n) (lua_type(L, (n)) == LUA_TLIGHTUSERDATA) +#define lua_isnil(L,n) (lua_type(L, (n)) == LUA_TNIL) +#define lua_isboolean(L,n) (lua_type(L, (n)) == LUA_TBOOLEAN) +#define lua_isthread(L,n) (lua_type(L, (n)) == LUA_TTHREAD) +#define lua_isnone(L,n) (lua_type(L, (n)) == LUA_TNONE) +#define lua_isnoneornil(L, n) (lua_type(L, (n)) <= 0) + +#define lua_pushliteral(L, s) \ + lua_pushlstring(L, "" s, (sizeof(s)/sizeof(char))-1) + +#define lua_pushglobaltable(L) \ + lua_rawgeti(L, LUA_REGISTRYINDEX, LUA_RIDX_GLOBALS) + +#define lua_tostring(L,i) lua_tolstring(L, (i), NULL) + + + +/* +** {====================================================================== +** Debug API +** ======================================================================= +*/ + + +/* +** Event codes +*/ +#define LUA_HOOKCALL 0 +#define LUA_HOOKRET 1 +#define LUA_HOOKLINE 2 +#define LUA_HOOKCOUNT 3 +#define LUA_HOOKTAILCALL 4 + + +/* +** Event masks +*/ +#define LUA_MASKCALL (1 << LUA_HOOKCALL) +#define LUA_MASKRET (1 << LUA_HOOKRET) +#define LUA_MASKLINE (1 << LUA_HOOKLINE) +#define LUA_MASKCOUNT (1 << LUA_HOOKCOUNT) + +typedef struct lua_Debug lua_Debug; /* activation record */ + + +/* Functions to be called by the debugger in specific events */ +typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar); + + +LUA_API int (lua_getstack) (lua_State *L, int level, lua_Debug *ar); +LUA_API int (lua_getinfo) (lua_State *L, const char *what, lua_Debug *ar); +LUA_API const char *(lua_getlocal) (lua_State *L, const lua_Debug *ar, int n); +LUA_API const char *(lua_setlocal) (lua_State *L, const lua_Debug *ar, int n); +LUA_API const char *(lua_getupvalue) (lua_State *L, int funcindex, int n); +LUA_API const char *(lua_setupvalue) (lua_State *L, int funcindex, int n); + +LUA_API void *(lua_upvalueid) (lua_State *L, int fidx, int n); +LUA_API void (lua_upvaluejoin) (lua_State *L, int fidx1, int n1, + int fidx2, int n2); + +LUA_API int (lua_sethook) (lua_State *L, lua_Hook func, int mask, int count); +LUA_API lua_Hook (lua_gethook) (lua_State *L); +LUA_API int (lua_gethookmask) (lua_State *L); +LUA_API int (lua_gethookcount) (lua_State *L); + + +struct lua_Debug { + int event; + const char *name; /* (n) */ + const char *namewhat; /* (n) 'global', 'local', 'field', 'method' */ + const char *what; /* (S) 'Lua', 'C', 'main', 'tail' */ + const char *source; /* (S) */ + int currentline; /* (l) */ + int linedefined; /* (S) */ + int lastlinedefined; /* (S) */ + unsigned char nups; /* (u) number of upvalues */ + unsigned char nparams;/* (u) number of parameters */ + char isvararg; /* (u) */ + char istailcall; /* (t) */ + char short_src[LUA_IDSIZE]; /* (S) */ + /* private part */ + struct CallInfo *i_ci; /* active function */ +}; + +/* }====================================================================== */ + + +/****************************************************************************** +* Copyright (C) 1994-2015 Lua.org, PUC-Rio. +* +* Permission is hereby granted, free of charge, to any person obtaining +* a copy of this software and associated documentation files (the +* "Software"), to deal in the Software without restriction, including +* without limitation the rights to use, copy, modify, merge, publish, +* distribute, sublicense, and/or sell copies of the Software, and to +* permit persons to whom the Software is furnished to do so, subject to +* the following conditions: +* +* The above copyright notice and this permission notice shall be +* included in all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +******************************************************************************/ + + +#endif diff --git a/vendor/lua/5.2/include/lua.hpp b/vendor/lua/5.2/include/lua.hpp new file mode 100644 index 000000000..ec417f594 --- /dev/null +++ b/vendor/lua/5.2/include/lua.hpp @@ -0,0 +1,9 @@ +// lua.hpp +// Lua header files for C++ +// <> not supplied automatically because Lua also compiles as C++ + +extern "C" { +#include "lua.h" +#include "lualib.h" +#include "lauxlib.h" +} diff --git a/vendor/lua/5.2/include/luaconf.h b/vendor/lua/5.2/include/luaconf.h new file mode 100644 index 000000000..03db8542d --- /dev/null +++ b/vendor/lua/5.2/include/luaconf.h @@ -0,0 +1,553 @@ +/* +** $Id: luaconf.h,v 1.176.1.2 2013/11/21 17:26:16 roberto Exp $ +** Configuration file for Lua +** See Copyright Notice in lua.h +*/ + + +#ifndef lconfig_h +#define lconfig_h + +#include +#include + + +/* +** ================================================================== +** Search for "@@" to find all configurable definitions. +** =================================================================== +*/ + + +/* +@@ LUA_ANSI controls the use of non-ansi features. +** CHANGE it (define it) if you want Lua to avoid the use of any +** non-ansi feature or library. +*/ +#if !defined(LUA_ANSI) && defined(__STRICT_ANSI__) +#define LUA_ANSI +#endif + + +#if !defined(LUA_ANSI) && defined(_WIN32) && !defined(_WIN32_WCE) +#define LUA_WIN /* enable goodies for regular Windows platforms */ +#endif + +#if defined(LUA_WIN) +#define LUA_DL_DLL +#define LUA_USE_AFORMAT /* assume 'printf' handles 'aA' specifiers */ +#endif + + + +#if defined(LUA_USE_LINUX) +#define LUA_USE_POSIX +#define LUA_USE_DLOPEN /* needs an extra library: -ldl */ +#define LUA_USE_READLINE /* needs some extra libraries */ +#define LUA_USE_STRTODHEX /* assume 'strtod' handles hex formats */ +#define LUA_USE_AFORMAT /* assume 'printf' handles 'aA' specifiers */ +#define LUA_USE_LONGLONG /* assume support for long long */ +#endif + +#if defined(LUA_USE_MACOSX) +#define LUA_USE_POSIX +#define LUA_USE_DLOPEN /* does not need -ldl */ +#define LUA_USE_READLINE /* needs an extra library: -lreadline */ +#define LUA_USE_STRTODHEX /* assume 'strtod' handles hex formats */ +#define LUA_USE_AFORMAT /* assume 'printf' handles 'aA' specifiers */ +#define LUA_USE_LONGLONG /* assume support for long long */ +#endif + + + +/* +@@ LUA_USE_POSIX includes all functionality listed as X/Open System +@* Interfaces Extension (XSI). +** CHANGE it (define it) if your system is XSI compatible. +*/ +#if defined(LUA_USE_POSIX) +#define LUA_USE_MKSTEMP +#define LUA_USE_ISATTY +#define LUA_USE_POPEN +#define LUA_USE_ULONGJMP +#define LUA_USE_GMTIME_R +#endif + + + +/* +@@ LUA_PATH_DEFAULT is the default path that Lua uses to look for +@* Lua libraries. +@@ LUA_CPATH_DEFAULT is the default path that Lua uses to look for +@* C libraries. +** CHANGE them if your machine has a non-conventional directory +** hierarchy or if you want to install your libraries in +** non-conventional directories. +*/ +#if defined(_WIN32) /* { */ +/* +** In Windows, any exclamation mark ('!') in the path is replaced by the +** path of the directory of the executable file of the current process. +*/ +#define LUA_LDIR "!\\lua\\" +#define LUA_CDIR "!\\" +#define LUA_PATH_DEFAULT \ + LUA_LDIR"?.lua;" LUA_LDIR"?\\init.lua;" \ + LUA_CDIR"?.lua;" LUA_CDIR"?\\init.lua;" ".\\?.lua" +#define LUA_CPATH_DEFAULT \ + LUA_CDIR"?.dll;" LUA_CDIR"loadall.dll;" ".\\?.dll;" \ + LUA_CDIR"?52.dll;" ".\\?52.dll" + +#else /* }{ */ + +#define LUA_VDIR LUA_VERSION_MAJOR "." LUA_VERSION_MINOR "/" +#define LUA_ROOT "/usr/local/" +#define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR +#define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR +#define LUA_PATH_DEFAULT \ + LUA_LDIR"?.lua;" LUA_LDIR"?/init.lua;" \ + LUA_CDIR"?.lua;" LUA_CDIR"?/init.lua;" "./?.lua" +#define LUA_CPATH_DEFAULT \ + LUA_CDIR"?.so;" LUA_CDIR"loadall.so;" "./?.so;" \ + LUA_CDIR"lib?52.so;" "./lib?52.so" +#endif /* } */ + + +/* +@@ LUA_DIRSEP is the directory separator (for submodules). +** CHANGE it if your machine does not use "/" as the directory separator +** and is not Windows. (On Windows Lua automatically uses "\".) +*/ +#if defined(_WIN32) +#define LUA_DIRSEP "\\" +#else +#define LUA_DIRSEP "/" +#endif + + +/* +@@ LUA_ENV is the name of the variable that holds the current +@@ environment, used to access global names. +** CHANGE it if you do not like this name. +*/ +#define LUA_ENV "_ENV" + + +/* +@@ LUA_API is a mark for all core API functions. +@@ LUALIB_API is a mark for all auxiliary library functions. +@@ LUAMOD_API is a mark for all standard library opening functions. +** CHANGE them if you need to define those functions in some special way. +** For instance, if you want to create one Windows DLL with the core and +** the libraries, you may want to use the following definition (define +** LUA_BUILD_AS_DLL to get it). +*/ +#if defined(LUA_BUILD_AS_DLL) /* { */ + +#if defined(LUA_CORE) || defined(LUA_LIB) /* { */ +#define LUA_API __declspec(dllexport) +#else /* }{ */ +#define LUA_API __declspec(dllimport) +#endif /* } */ + +#else /* }{ */ + +#define LUA_API extern + +#endif /* } */ + + +/* more often than not the libs go together with the core */ +#define LUALIB_API LUA_API +#define LUAMOD_API LUALIB_API + + +/* +@@ LUAI_FUNC is a mark for all extern functions that are not to be +@* exported to outside modules. +@@ LUAI_DDEF and LUAI_DDEC are marks for all extern (const) variables +@* that are not to be exported to outside modules (LUAI_DDEF for +@* definitions and LUAI_DDEC for declarations). +** CHANGE them if you need to mark them in some special way. Elf/gcc +** (versions 3.2 and later) mark them as "hidden" to optimize access +** when Lua is compiled as a shared library. Not all elf targets support +** this attribute. Unfortunately, gcc does not offer a way to check +** whether the target offers that support, and those without support +** give a warning about it. To avoid these warnings, change to the +** default definition. +*/ +#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 302) && \ + defined(__ELF__) /* { */ +#define LUAI_FUNC __attribute__((visibility("hidden"))) extern +#define LUAI_DDEC LUAI_FUNC +#define LUAI_DDEF /* empty */ + +#else /* }{ */ +#define LUAI_FUNC extern +#define LUAI_DDEC extern +#define LUAI_DDEF /* empty */ +#endif /* } */ + + + +/* +@@ LUA_QL describes how error messages quote program elements. +** CHANGE it if you want a different appearance. +*/ +#define LUA_QL(x) "'" x "'" +#define LUA_QS LUA_QL("%s") + + +/* +@@ LUA_IDSIZE gives the maximum size for the description of the source +@* of a function in debug information. +** CHANGE it if you want a different size. +*/ +#define LUA_IDSIZE 60 + + +/* +@@ luai_writestring/luai_writeline define how 'print' prints its results. +** They are only used in libraries and the stand-alone program. (The #if +** avoids including 'stdio.h' everywhere.) +*/ +#if defined(LUA_LIB) || defined(lua_c) +#include +#define luai_writestring(s,l) fwrite((s), sizeof(char), (l), stdout) +#define luai_writeline() (luai_writestring("\n", 1), fflush(stdout)) +#endif + +/* +@@ luai_writestringerror defines how to print error messages. +** (A format string with one argument is enough for Lua...) +*/ +#define luai_writestringerror(s,p) \ + (fprintf(stderr, (s), (p)), fflush(stderr)) + + +/* +@@ LUAI_MAXSHORTLEN is the maximum length for short strings, that is, +** strings that are internalized. (Cannot be smaller than reserved words +** or tags for metamethods, as these strings must be internalized; +** #("function") = 8, #("__newindex") = 10.) +*/ +#define LUAI_MAXSHORTLEN 40 + + + +/* +** {================================================================== +** Compatibility with previous versions +** =================================================================== +*/ + +/* +@@ LUA_COMPAT_ALL controls all compatibility options. +** You can define it to get all options, or change specific options +** to fit your specific needs. +*/ +#if defined(LUA_COMPAT_ALL) /* { */ + +/* +@@ LUA_COMPAT_UNPACK controls the presence of global 'unpack'. +** You can replace it with 'table.unpack'. +*/ +#define LUA_COMPAT_UNPACK + +/* +@@ LUA_COMPAT_LOADERS controls the presence of table 'package.loaders'. +** You can replace it with 'package.searchers'. +*/ +#define LUA_COMPAT_LOADERS + +/* +@@ macro 'lua_cpcall' emulates deprecated function lua_cpcall. +** You can call your C function directly (with light C functions). +*/ +#define lua_cpcall(L,f,u) \ + (lua_pushcfunction(L, (f)), \ + lua_pushlightuserdata(L,(u)), \ + lua_pcall(L,1,0,0)) + + +/* +@@ LUA_COMPAT_LOG10 defines the function 'log10' in the math library. +** You can rewrite 'log10(x)' as 'log(x, 10)'. +*/ +#define LUA_COMPAT_LOG10 + +/* +@@ LUA_COMPAT_LOADSTRING defines the function 'loadstring' in the base +** library. You can rewrite 'loadstring(s)' as 'load(s)'. +*/ +#define LUA_COMPAT_LOADSTRING + +/* +@@ LUA_COMPAT_MAXN defines the function 'maxn' in the table library. +*/ +#define LUA_COMPAT_MAXN + +/* +@@ The following macros supply trivial compatibility for some +** changes in the API. The macros themselves document how to +** change your code to avoid using them. +*/ +#define lua_strlen(L,i) lua_rawlen(L, (i)) + +#define lua_objlen(L,i) lua_rawlen(L, (i)) + +#define lua_equal(L,idx1,idx2) lua_compare(L,(idx1),(idx2),LUA_OPEQ) +#define lua_lessthan(L,idx1,idx2) lua_compare(L,(idx1),(idx2),LUA_OPLT) + +/* +@@ LUA_COMPAT_MODULE controls compatibility with previous +** module functions 'module' (Lua) and 'luaL_register' (C). +*/ +#define LUA_COMPAT_MODULE + +#endif /* } */ + +/* }================================================================== */ + + + +/* +@@ LUAI_BITSINT defines the number of bits in an int. +** CHANGE here if Lua cannot automatically detect the number of bits of +** your machine. Probably you do not need to change this. +*/ +/* avoid overflows in comparison */ +#if INT_MAX-20 < 32760 /* { */ +#define LUAI_BITSINT 16 +#elif INT_MAX > 2147483640L /* }{ */ +/* int has at least 32 bits */ +#define LUAI_BITSINT 32 +#else /* }{ */ +#error "you must define LUA_BITSINT with number of bits in an integer" +#endif /* } */ + + +/* +@@ LUA_INT32 is a signed integer with exactly 32 bits. +@@ LUAI_UMEM is an unsigned integer big enough to count the total +@* memory used by Lua. +@@ LUAI_MEM is a signed integer big enough to count the total memory +@* used by Lua. +** CHANGE here if for some weird reason the default definitions are not +** good enough for your machine. Probably you do not need to change +** this. +*/ +#if LUAI_BITSINT >= 32 /* { */ +#define LUA_INT32 int +#define LUAI_UMEM size_t +#define LUAI_MEM ptrdiff_t +#else /* }{ */ +/* 16-bit ints */ +#define LUA_INT32 long +#define LUAI_UMEM unsigned long +#define LUAI_MEM long +#endif /* } */ + + +/* +@@ LUAI_MAXSTACK limits the size of the Lua stack. +** CHANGE it if you need a different limit. This limit is arbitrary; +** its only purpose is to stop Lua from consuming unlimited stack +** space (and to reserve some numbers for pseudo-indices). +*/ +#if LUAI_BITSINT >= 32 +#define LUAI_MAXSTACK 1000000 +#else +#define LUAI_MAXSTACK 15000 +#endif + +/* reserve some space for error handling */ +#define LUAI_FIRSTPSEUDOIDX (-LUAI_MAXSTACK - 1000) + + + + +/* +@@ LUAL_BUFFERSIZE is the buffer size used by the lauxlib buffer system. +** CHANGE it if it uses too much C-stack space. +*/ +#define LUAL_BUFFERSIZE BUFSIZ + + + + +/* +** {================================================================== +@@ LUA_NUMBER is the type of numbers in Lua. +** CHANGE the following definitions only if you want to build Lua +** with a number type different from double. You may also need to +** change lua_number2int & lua_number2integer. +** =================================================================== +*/ + +#define LUA_NUMBER_DOUBLE +#define LUA_NUMBER double + +/* +@@ LUAI_UACNUMBER is the result of an 'usual argument conversion' +@* over a number. +*/ +#define LUAI_UACNUMBER double + + +/* +@@ LUA_NUMBER_SCAN is the format for reading numbers. +@@ LUA_NUMBER_FMT is the format for writing numbers. +@@ lua_number2str converts a number to a string. +@@ LUAI_MAXNUMBER2STR is maximum size of previous conversion. +*/ +#define LUA_NUMBER_SCAN "%lf" +#define LUA_NUMBER_FMT "%.14g" +#define lua_number2str(s,n) sprintf((s), LUA_NUMBER_FMT, (n)) +#define LUAI_MAXNUMBER2STR 32 /* 16 digits, sign, point, and \0 */ + + +/* +@@ l_mathop allows the addition of an 'l' or 'f' to all math operations +*/ +#define l_mathop(x) (x) + + +/* +@@ lua_str2number converts a decimal numeric string to a number. +@@ lua_strx2number converts an hexadecimal numeric string to a number. +** In C99, 'strtod' does both conversions. C89, however, has no function +** to convert floating hexadecimal strings to numbers. For these +** systems, you can leave 'lua_strx2number' undefined and Lua will +** provide its own implementation. +*/ +#define lua_str2number(s,p) strtod((s), (p)) + +#if defined(LUA_USE_STRTODHEX) +#define lua_strx2number(s,p) strtod((s), (p)) +#endif + + +/* +@@ The luai_num* macros define the primitive operations over numbers. +*/ + +/* the following operations need the math library */ +#if defined(lobject_c) || defined(lvm_c) +#include +#define luai_nummod(L,a,b) ((a) - l_mathop(floor)((a)/(b))*(b)) +#define luai_numpow(L,a,b) (l_mathop(pow)(a,b)) +#endif + +/* these are quite standard operations */ +#if defined(LUA_CORE) +#define luai_numadd(L,a,b) ((a)+(b)) +#define luai_numsub(L,a,b) ((a)-(b)) +#define luai_nummul(L,a,b) ((a)*(b)) +#define luai_numdiv(L,a,b) ((a)/(b)) +#define luai_numunm(L,a) (-(a)) +#define luai_numeq(a,b) ((a)==(b)) +#define luai_numlt(L,a,b) ((a)<(b)) +#define luai_numle(L,a,b) ((a)<=(b)) +#define luai_numisnan(L,a) (!luai_numeq((a), (a))) +#endif + + + +/* +@@ LUA_INTEGER is the integral type used by lua_pushinteger/lua_tointeger. +** CHANGE that if ptrdiff_t is not adequate on your machine. (On most +** machines, ptrdiff_t gives a good choice between int or long.) +*/ +#define LUA_INTEGER ptrdiff_t + +/* +@@ LUA_UNSIGNED is the integral type used by lua_pushunsigned/lua_tounsigned. +** It must have at least 32 bits. +*/ +#define LUA_UNSIGNED unsigned LUA_INT32 + + + +/* +** Some tricks with doubles +*/ + +#if defined(LUA_NUMBER_DOUBLE) && !defined(LUA_ANSI) /* { */ +/* +** The next definitions activate some tricks to speed up the +** conversion from doubles to integer types, mainly to LUA_UNSIGNED. +** +@@ LUA_MSASMTRICK uses Microsoft assembler to avoid clashes with a +** DirectX idiosyncrasy. +** +@@ LUA_IEEE754TRICK uses a trick that should work on any machine +** using IEEE754 with a 32-bit integer type. +** +@@ LUA_IEEELL extends the trick to LUA_INTEGER; should only be +** defined when LUA_INTEGER is a 32-bit integer. +** +@@ LUA_IEEEENDIAN is the endianness of doubles in your machine +** (0 for little endian, 1 for big endian); if not defined, Lua will +** check it dynamically for LUA_IEEE754TRICK (but not for LUA_NANTRICK). +** +@@ LUA_NANTRICK controls the use of a trick to pack all types into +** a single double value, using NaN values to represent non-number +** values. The trick only works on 32-bit machines (ints and pointers +** are 32-bit values) with numbers represented as IEEE 754-2008 doubles +** with conventional endianess (12345678 or 87654321), in CPUs that do +** not produce signaling NaN values (all NaNs are quiet). +*/ + +/* Microsoft compiler on a Pentium (32 bit) ? */ +#if defined(LUA_WIN) && defined(_MSC_VER) && defined(_M_IX86) /* { */ + +#define LUA_MSASMTRICK +#define LUA_IEEEENDIAN 0 +#define LUA_NANTRICK + + +/* pentium 32 bits? */ +#elif defined(__i386__) || defined(__i386) || defined(__X86__) /* }{ */ + +#define LUA_IEEE754TRICK +#define LUA_IEEELL +#define LUA_IEEEENDIAN 0 +#define LUA_NANTRICK + +/* pentium 64 bits? */ +#elif defined(__x86_64) /* }{ */ + +#define LUA_IEEE754TRICK +#define LUA_IEEEENDIAN 0 + +#elif defined(__POWERPC__) || defined(__ppc__) /* }{ */ + +#define LUA_IEEE754TRICK +#define LUA_IEEEENDIAN 1 + +#else /* }{ */ + +/* assume IEEE754 and a 32-bit integer type */ +#define LUA_IEEE754TRICK + +#endif /* } */ + +#endif /* } */ + +/* }================================================================== */ + + + + +/* =================================================================== */ + +/* +** Local configuration. You can use this space to add your redefinitions +** without modifying the main part of the file. +*/ + + + +#endif + diff --git a/vendor/lua/5.2/include/lualib.h b/vendor/lua/5.2/include/lualib.h new file mode 100644 index 000000000..da82005c9 --- /dev/null +++ b/vendor/lua/5.2/include/lualib.h @@ -0,0 +1,55 @@ +/* +** $Id: lualib.h,v 1.43.1.1 2013/04/12 18:48:47 roberto Exp $ +** Lua standard libraries +** See Copyright Notice in lua.h +*/ + + +#ifndef lualib_h +#define lualib_h + +#include "lua.h" + + + +LUAMOD_API int (luaopen_base) (lua_State *L); + +#define LUA_COLIBNAME "coroutine" +LUAMOD_API int (luaopen_coroutine) (lua_State *L); + +#define LUA_TABLIBNAME "table" +LUAMOD_API int (luaopen_table) (lua_State *L); + +#define LUA_IOLIBNAME "io" +LUAMOD_API int (luaopen_io) (lua_State *L); + +#define LUA_OSLIBNAME "os" +LUAMOD_API int (luaopen_os) (lua_State *L); + +#define LUA_STRLIBNAME "string" +LUAMOD_API int (luaopen_string) (lua_State *L); + +#define LUA_BITLIBNAME "bit32" +LUAMOD_API int (luaopen_bit32) (lua_State *L); + +#define LUA_MATHLIBNAME "math" +LUAMOD_API int (luaopen_math) (lua_State *L); + +#define LUA_DBLIBNAME "debug" +LUAMOD_API int (luaopen_debug) (lua_State *L); + +#define LUA_LOADLIBNAME "package" +LUAMOD_API int (luaopen_package) (lua_State *L); + + +/* open all previous libraries */ +LUALIB_API void (luaL_openlibs) (lua_State *L); + + + +#if !defined(lua_assert) +#define lua_assert(x) ((void)0) +#endif + + +#endif diff --git a/vendor/lua/5.2/linux/liblua52.a b/vendor/lua/5.2/linux/liblua52.a new file mode 100644 index 000000000..828b775c8 Binary files /dev/null and b/vendor/lua/5.2/linux/liblua52.a differ diff --git a/vendor/lua/5.2/linux/liblua52.so b/vendor/lua/5.2/linux/liblua52.so new file mode 100644 index 000000000..e2c474192 Binary files /dev/null and b/vendor/lua/5.2/linux/liblua52.so differ diff --git a/vendor/lua/5.2/lua.odin b/vendor/lua/5.2/lua.odin new file mode 100644 index 000000000..c71c1925e --- /dev/null +++ b/vendor/lua/5.2/lua.odin @@ -0,0 +1,728 @@ +package lua_5_2 + +import "core:intrinsics" +import "core:builtin" + +import c "core:c/libc" + +#assert(size_of(c.int) == size_of(b32)) + +when ODIN_OS == .Windows { + foreign import lib "windows/lua52dll.lib" +} else when ODIN_OS == .Linux { + foreign import lib "linux/liblua52.a" +} else { + foreign import lib "system:liblua52.a" +} + +VERSION_MAJOR :: "5" +VERSION_MINOR :: "2" +VERSION_NUM :: 502 +VERSION_RELEASE :: "4" + +VERSION :: "Lua " + VERSION_MAJOR + "." + VERSION_MINOR +RELEASE :: VERSION + "." + VERSION_RELEASE +COPYRIGHT :: RELEASE + " Copyright (C) 1994-2015 Lua.org, PUC-Rio" +AUTHORS :: "R. Ierusalimschy, L. H. de Figueiredo, W. Celes" + + +/* mark for precompiled code ('Lua') */ +SIGNATURE :: "\x1bLua" + +/* option for multiple returns in 'lua_pcall' and 'lua_call' */ +MULTRET :: -1 + +FIRSTPSEUDOIDX :: -MAXSTACK - 1000 + +REGISTRYINDEX :: -FIRSTPSEUDOIDX + + +/* +@@ LUAI_MAXSTACK limits the size of the Lua stack. +** CHANGE it if you need a different limit. This limit is arbitrary; +** its only purpose is to stop Lua from consuming unlimited stack +** space (and to reserve some numbers for pseudo-indices). +** (It must fit into max(size_t)/32.) +*/ +MAXSTACK :: 1000000 when size_of(rawptr) == 4 else 15000 + + +/* +@@ LUA_EXTRASPACE defines the size of a raw memory area associated with +** a Lua state with very fast access. +** CHANGE it if you need a different size. +*/ +EXTRASPACE :: size_of(rawptr) + + + +/* +@@ LUA_IDSIZE gives the maximum size for the description of the source +@@ of a function in debug information. +** CHANGE it if you want a different size. +*/ +IDSIZE :: 60 + + +/* +@@ LUAL_BUFFERSIZE is the buffer size used by the lauxlib buffer system. +*/ +L_BUFFERSIZE :: c.int(16 * size_of(rawptr) * size_of(Number)) + + +MAXALIGNVAL :: max(align_of(Number), align_of(f64), align_of(rawptr), align_of(Integer), align_of(c.long)) + + +Status :: enum c.int { + OK = 0, + YIELD = 1, + ERRRUN = 2, + ERRSYNTAX = 3, + ERRMEM = 4, + ERRERR = 5, + ERRGCMM = 6, + ERRFILE = 7, +} + +/* thread status */ +OK :: Status.OK +YIELD :: Status.YIELD +ERRRUN :: Status.ERRRUN +ERRSYNTAX :: Status.ERRSYNTAX +ERRMEM :: Status.ERRMEM +ERRERR :: Status.ERRERR +ERRFILE :: Status.ERRFILE + +/* +** basic types +*/ + + +Type :: enum c.int { + NONE = -1, + + NIL = 0, + BOOLEAN = 1, + LIGHTUSERDATA = 2, + NUMBER = 3, + STRING = 4, + TABLE = 5, + FUNCTION = 6, + USERDATA = 7, + THREAD = 8, +} + +TNONE :: Type.NONE +TNIL :: Type.NIL +TBOOLEAN :: Type.BOOLEAN +TLIGHTUSERDATA :: Type.LIGHTUSERDATA +TNUMBER :: Type.NUMBER +TSTRING :: Type.STRING +TTABLE :: Type.TABLE +TFUNCTION :: Type.FUNCTION +TUSERDATA :: Type.USERDATA +TTHREAD :: Type.THREAD +NUMTYPES :: 9 + + + +ArithOp :: enum c.int { + ADD = 0, /* ORDER TM, ORDER OP */ + SUB = 1, + MUL = 2, + DIV = 3, + MOD = 4, + POW = 5, + UNM = 6, +} + +CompareOp :: enum c.int { + EQ = 0, + LT = 1, + LE = 2, +} + +OPADD :: ArithOp.ADD +OPSUB :: ArithOp.SUB +OPMUL :: ArithOp.MUL +OPDIV :: ArithOp.DIV +OPMOD :: ArithOp.MOD +OPPOW :: ArithOp.POW +OPUNM :: ArithOp.UNM + +OPEQ :: CompareOp.EQ +OPLT :: CompareOp.LT +OPLE :: CompareOp.LE + + +/* minimum Lua stack available to a C function */ +MINSTACK :: 20 + + +/* predefined values in the registry */ +RIDX_MAINTHREAD :: 1 +RIDX_GLOBALS :: 2 +RIDX_LAST :: RIDX_GLOBALS + + +/* type of numbers in Lua */ +Number :: distinct (f32 when size_of(uintptr) == 4 else f64) + + +/* type for integer functions */ +Integer :: distinct (i32 when size_of(uintptr) == 4 else i64) + +/* unsigned integer type */ +Unsigned :: distinct (u32 when size_of(uintptr) == 4 else u64) + + +/* +** Type for C functions registered with Lua +*/ +CFunction :: #type proc "c" (L: ^State) -> c.int + + + +/* +** Type for functions that read/write blocks when loading/dumping Lua chunks +*/ +Reader :: #type proc "c" (L: ^State, ud: rawptr, sz: ^c.size_t) -> cstring +Writer :: #type proc "c" (L: ^State, p: rawptr, sz: ^c.size_t, ud: rawptr) -> c.int + + +/* +** Type for memory-allocation functions +*/ +Alloc :: #type proc "c" (ud: rawptr, ptr: rawptr, osize, nsize: c.size_t) -> rawptr + + +GCWhat :: enum c.int { + STOP = 0, + RESTART = 1, + COLLECT = 2, + COUNT = 3, + COUNTB = 4, + STEP = 5, + SETPAUSE = 6, + SETSTEPMUL = 7, + SETMAJORINC = 8, + ISRUNNING = 9, + GEN = 10, + INC = 11, +} +GCSTOP :: GCWhat.STOP +GCRESTART :: GCWhat.RESTART +GCCOLLECT :: GCWhat.COLLECT +GCCOUNT :: GCWhat.COUNT +GCCOUNTB :: GCWhat.COUNTB +GCSTEP :: GCWhat.STEP +GCSETPAUSE :: GCWhat.SETPAUSE +GCSETSTEPMUL :: GCWhat.SETSTEPMUL +GCSETMAJORINC :: GCWhat.SETMAJORINC +GCISRUNNING :: GCWhat.ISRUNNING +GCGEN :: GCWhat.GEN +GCINC :: GCWhat.INC + + + +/* +** Event codes +*/ + +HookEvent :: enum c.int { + CALL = 0, + RET = 1, + LINE = 2, + COUNT = 3, + TAILCALL = 4, +} +HOOKCALL :: HookEvent.CALL +HOOKRET :: HookEvent.RET +HOOKLINE :: HookEvent.LINE +HOOKCOUNT :: HookEvent.COUNT +HOOKTAILCALL :: HookEvent.TAILCALL + + +/* +** Event masks +*/ +HookMask :: distinct bit_set[HookEvent; c.int] +MASKCALL :: HookMask{.CALL} +MASKRET :: HookMask{.RET} +MASKLINE :: HookMask{.LINE} +MASKCOUNT :: HookMask{.COUNT} + +/* activation record */ +Debug :: struct { + event: HookEvent, + name: cstring, /* (n) */ + namewhat: cstring, /* (n) 'global', 'local', 'field', 'method' */ + what: cstring, /* (S) 'Lua', 'C', 'main', 'tail' */ + source: cstring, /* (S) */ + currentline: c.int, /* (l) */ + linedefined: c.int, /* (S) */ + lastlinedefined: c.int, /* (S) */ + nups: u8, /* (u) number of upvalues */ + nparams: u8, /* (u) number of parameters */ + isvararg: bool, /* (u) */ + istailcall: bool, /* (t) */ + short_src: [IDSIZE]u8 `fmt:"s"`, /* (S) */ + /* private part */ + i_ci: rawptr, /* active function */ +} + + +/* Functions to be called by the debugger in specific events */ +Hook :: #type proc "c" (L: ^State, ar: ^Debug) + + +State :: struct {} // opaque data type + + +@(link_prefix="lua_") +@(default_calling_convention="c") +foreign lib { + /* + ** RCS ident string + */ + + ident: [^]u8 // TODO(bill): is this correct? + + + /* + ** state manipulation + */ + + newstate :: proc(f: Alloc, ud: rawptr) -> ^State --- + close :: proc(L: ^State) --- + newthread :: proc(L: ^State) -> ^State --- + + atpanic :: proc(L: ^State, panicf: CFunction) -> CFunction --- + + version :: proc(L: ^State) -> ^Number --- + + + /* + ** basic stack manipulation + */ + + absindex :: proc (L: ^State, idx: c.int) -> c.int --- + gettop :: proc (L: ^State) -> c.int --- + settop :: proc (L: ^State, idx: c.int) --- + pushvalue :: proc (L: ^State, idx: c.int) --- + remove :: proc (L: ^State, idx: c.int) --- + insert :: proc (L: ^State, idx: c.int) --- + replace :: proc (L: ^State, idx: c.int) --- + copy :: proc (L: ^State, fromidx, toidx: c.int) --- + checkstack :: proc (L: ^State, sz: c.int) -> c.int --- + + xmove :: proc(from, to: ^State, n: c.int) --- + + + /* + ** access functions (stack -> C) + */ + + isnumber :: proc(L: ^State, idx: c.int) -> b32 --- + isstring :: proc(L: ^State, idx: c.int) -> b32 --- + iscfunction :: proc(L: ^State, idx: c.int) -> b32 --- + isinteger :: proc(L: ^State, idx: c.int) -> b32 --- + isuserdata :: proc(L: ^State, idx: c.int) -> b32 --- + type :: proc(L: ^State, idx: c.int) -> Type --- + typename :: proc(L: ^State, tp: Type) -> cstring --- + + @(link_name="lua_tonumberx") + tonumber :: proc(L: ^State, idx: c.int, isnum: ^b32 = nil) -> Number --- + @(link_name="lua_tointegerx") + tointeger :: proc(L: ^State, idx: c.int, isnum: ^b32 = nil) -> Integer --- + @(link_name="lua_tounsignedx") + tounsigned :: proc(L: ^State, idx: c.int, isnum: ^b32 = nil) -> Unsigned --- + toboolean :: proc(L: ^State, idx: c.int) -> b32 --- + tolstring :: proc(L: ^State, idx: c.int, len: ^c.size_t) -> cstring --- + rawlen :: proc(L: ^State, idx: c.int) -> c.size_t --- + tocfunction :: proc(L: ^State, idx: c.int) -> CFunction --- + touserdata :: proc(L: ^State, idx: c.int) -> rawptr --- + tothread :: proc(L: ^State, idx: c.int) -> ^State --- + topointer :: proc(L: ^State, idx: c.int) -> rawptr --- + + /* + ** Comparison and arithmetic functions + */ + + arith :: proc(L: ^State, op: ArithOp) --- + rawequal :: proc(L: ^State, idx1, idx2: c.int) -> b32 --- + compare :: proc(L: ^State, idx1, idx2: c.int, op: CompareOp) -> b32 --- + + /* + ** push functions (C -> stack) + */ + + pushnil :: proc(L: ^State) --- + pushnumber :: proc(L: ^State, n: Number) --- + pushinteger :: proc(L: ^State, n: Integer) --- + pushunsigned :: proc(L: ^State, n: Unsigned) --- + pushlstring :: proc(L: ^State, s: cstring, l: c.size_t) -> cstring --- + pushstring :: proc(L: ^State, s: cstring) -> cstring --- + pushvfstring :: proc(L: ^State, fmt: cstring, argp: c.va_list) -> cstring --- + pushfstring :: proc(L: ^State, fmt: cstring, #c_vararg args: ..any) -> cstring --- + pushcclosure :: proc(L: ^State, fn: CFunction, n: c.int) --- + pushboolean :: proc(L: ^State, b: b32) --- + pushlightuserdata :: proc(L: ^State, p: rawptr) --- + pushthread :: proc(L: ^State) -> Status --- + + /* + ** get functions (Lua -> stack) + */ + + getglobal :: proc(L: ^State, name: cstring) --- + gettable :: proc(L: ^State, idx: c.int) --- + getfield :: proc(L: ^State, idx: c.int, k: cstring) --- + geti :: proc(L: ^State, idx: c.int, n: Integer) --- + rawget :: proc(L: ^State, idx: c.int) --- + rawgeti :: proc(L: ^State, idx: c.int, n: Integer) --- + rawgetp :: proc(L: ^State, idx: c.int, p: rawptr) --- + + createtable :: proc(L: ^State, narr, nrec: c.int) --- + newuserdata :: proc(L: ^State, sz: c.size_t) -> rawptr --- + getmetatable :: proc(L: ^State, objindex: c.int) -> c.int --- + getuservalue :: proc(L: ^State, idx: c.int) --- + + + /* + ** set functions (stack -> Lua) + */ + + setglobal :: proc(L: ^State, var: cstring) --- + settable :: proc(L: ^State, idx: c.int) --- + setfield :: proc(L: ^State, idx: c.int, k: cstring) --- + rawset :: proc(L: ^State, idx: c.int) --- + rawseti :: proc(L: ^State, idx: c.int, n: c.int) --- + rawsetp :: proc(L: ^State, idx: c.int, p: rawptr) --- + setmetatable :: proc(L: ^State, objindex: c.int) -> c.int --- + setuservalue :: proc(L: ^State, idx: c.int) -> c.int --- + + + /* + ** 'load' and 'call' functions (load and run Lua code) + */ + + @(link_name="lua_callk") + call :: proc(L: ^State, nargs, nresults: c.int, ctx: c.int = 0, + k: CFunction = nil) --- + + getctx :: proc(L: ^State, ctx: ^c.int) -> c.int --- + + @(link_name="lua_pcallk") + pcall :: proc(L: ^State, nargs, nresults: c.int, errfunc: c.int, + ctx: c.int = 0, k: CFunction = nil) -> c.int --- + + load :: proc(L: ^State, reader: Reader, dt: rawptr, + chunkname, mode: cstring) -> Status --- + + dump :: proc(L: ^State, writer: Writer, data: rawptr) -> Status --- + + + /* + ** coroutine functions + */ + + @(link_name="lua_yieldk") + yield :: proc(L: ^State, nresults: c.int, ctx: c.int = 0, k: CFunction = nil) -> Status --- + resume :: proc(L: ^State, from: ^State, narg: c.int) -> Status --- + status :: proc(L: ^State) -> Status --- + + + /* + ** garbage-collection function and options + */ + + + + gc :: proc(L: ^State, what: GCWhat, data: c.int) -> c.int --- + + + /* + ** miscellaneous functions + */ + + error :: proc(L: ^State) -> Status --- + + next :: proc(L: ^State, idx: c.int) -> c.int --- + + concat :: proc(L: ^State, n: c.int) --- + len :: proc(L: ^State, idx: c.int) --- + + getallocf :: proc(L: State, ud: ^rawptr) -> Alloc --- + setallocf :: proc(L: ^State, f: Alloc, ud: rawptr) --- + + /* + ** {====================================================================== + ** Debug API + ** ======================================================================= + */ + + getstack :: proc(L: ^State, level: c.int, ar: ^Debug) -> c.int --- + getinfo :: proc(L: ^State, what: cstring, ar: ^Debug) -> c.int --- + getlocal :: proc(L: ^State, ar: ^Debug, n: c.int) -> cstring --- + setlocal :: proc(L: ^State, ar: ^Debug, n: c.int) -> cstring --- + getupvalue :: proc(L: ^State, funcindex: c.int, n: c.int) -> cstring --- + setupvalue :: proc(L: ^State, funcindex: c.int, n: c.int) -> cstring --- + + upvalueid :: proc(L: ^State, fidx, n: c.int) -> rawptr --- + upvaluejoin :: proc(L: ^State, fidx1, n1, fidx2, n2: c.int) --- + + sethook :: proc(L: ^State, func: Hook, mask: HookMask, count: c.int) -> c.int --- + gethook :: proc(L: ^State) -> Hook --- + gethookmask :: proc(L: ^State) -> HookMask --- + gethookcount :: proc(L: ^State) -> c.int --- + + /* }============================================================== */ +} + + + +/* version suffix for environment variable names */ +VERSUFFIX :: "_" + VERSION_MAJOR + "_" + VERSION_MINOR + +COLIBNAME :: "coroutine" +TABLIBNAME :: "table" +IOLIBNAME :: "io" +OSLIBNAME :: "os" +STRLIBNAME :: "string" +UTF8LIBNAME :: "utf8" +BITLIBNAME :: "bit32" +MATHLIBNAME :: "math" +DBLIBNAME :: "debug" +LOADLIBNAME :: "package" + +@(link_prefix="lua") +@(default_calling_convention="c") +foreign lib { + open_base :: proc(L: ^State) -> c.int --- + open_coroutine :: proc(L: ^State) -> c.int --- + open_table :: proc(L: ^State) -> c.int --- + open_io :: proc(L: ^State) -> c.int --- + open_os :: proc(L: ^State) -> c.int --- + open_string :: proc(L: ^State) -> c.int --- + open_utf8 :: proc(L: ^State) -> c.int --- + open_bit32 :: proc(L: ^State) -> c.int --- + open_math :: proc(L: ^State) -> c.int --- + open_debug :: proc(L: ^State) -> c.int --- + open_package :: proc(L: ^State) -> c.int --- + + /* open all previous libraries */ + + L_openlibs :: proc(L: ^State) --- +} + + + +GNAME :: "_G" + +L_Reg :: struct { + name: cstring, + func: CFunction, +} + + +/* predefined references */ +NOREF :: -2 +REFNIL :: -1 + + +@(link_prefix="lua") +@(default_calling_convention="c") +foreign lib { + @(link_name="luaL_checkversion_") + L_checkversion :: proc(L: ^State, ver: Number = VERSION_NUM) --- + + + L_getmetafield :: proc(L: ^State, obj: c.int, e: cstring) -> c.int --- + L_callmeta :: proc(L: ^State, obj: c.int, e: cstring) -> c.int --- + @(link_name="luaL_tolstring") + L_tostring :: proc(L: ^State, idx: c.int, len: ^c.size_t = nil) -> cstring --- + L_argerror :: proc(L: ^State, numarg: c.int, extramsg: cstring) -> c.int --- + @(link_name="luaL_checklstring") + L_checkstring :: proc(L: ^State, numArg: c.int, l: ^c.size_t = nil) -> cstring --- + @(link_name="luaL_optlstring") + L_optstring :: proc(L: ^State, numArg: c.int, def: cstring, l: ^c.size_t = nil) -> cstring --- + L_checknumber :: proc(L: ^State, numArg: c.int) -> Number --- + L_optnumber :: proc(L: ^State, nArg: c.int, def: Number) -> Number --- + + L_checkinteger :: proc(L: ^State, numArg: c.int) -> Integer --- + L_optinteger :: proc(L: ^State, nArg: c.int, def: Integer) -> Integer --- + L_checkunsigned :: proc(L: ^State, numArg: c.int) -> Unsigned --- + L_optunsigned :: proc(L: ^State, nArg: c.int, def: Unsigned) -> Unsigned --- + + + L_checkstack :: proc(L: ^State, sz: c.int, msg: cstring) --- + L_checktype :: proc(L: ^State, narg: c.int, t: c.int) --- + L_checkany :: proc(L: ^State, narg: c.int) --- + + L_newmetatable :: proc(L: ^State, tname: cstring) -> c.int --- + L_setmetatable :: proc(L: ^State, tname: cstring) --- + L_testudata :: proc(L: ^State, ud: c.int, tname: cstring) -> rawptr --- + L_checkudata :: proc(L: ^State, ud: c.int, tname: cstring) -> rawptr --- + + L_where :: proc(L: ^State, lvl: c.int) --- + L_error :: proc(L: ^State, fmt: cstring, #c_vararg args: ..any) -> Status --- + + L_checkoption :: proc(L: ^State, narg: c.int, def: cstring, lst: [^]cstring) -> c.int --- + + L_fileresult :: proc(L: ^State, stat: c.int, fname: cstring) -> c.int --- + L_execresult :: proc(L: ^State, stat: c.int) -> c.int --- + + + L_ref :: proc(L: ^State, t: c.int) -> c.int --- + L_unref :: proc(L: ^State, t: c.int, ref: c.int) --- + + @(link_name="luaL_loadfilex") + L_loadfile :: proc (L: ^State, filename: cstring, mode: cstring = nil) -> Status --- + + @(link_name="luaL_loadbufferx") + L_loadbuffer :: proc(L: ^State, buff: [^]byte, sz: c.size_t, name: cstring, mode: cstring = nil) -> Status --- + L_loadstring :: proc(L: ^State, s: cstring) -> Status --- + + L_newstate :: proc() -> ^State --- + + L_len :: proc(L: ^State, idx: c.int) -> c.int --- + + L_gsub :: proc(L: ^State, s, p, r: cstring) -> cstring --- + + L_setfuncs :: proc(L: ^State, l: [^]L_Reg, nup: c.int) --- + + L_getsubtable :: proc(L: ^State, idx: c.int, fname: cstring) -> c.int --- + + L_traceback :: proc(L: ^State, L1: ^State, msg: cstring, level: c.int) --- + + L_requiref :: proc(L: ^State, modname: cstring, openf: CFunction, glb: c.int) --- + +} +/* +** {====================================================== +** Generic Buffer manipulation +** ======================================================= +*/ + + +L_Buffer :: struct { + b: [^]byte, /* buffer address */ + size: c.size_t, /* buffer size */ + n: c.size_t, /* number of characters in buffer */ + L: ^State, + initb: [L_BUFFERSIZE]byte, /* initial buffer */ +} + +L_addchar :: #force_inline proc "c" (B: ^L_Buffer, c: byte) { + if B.n < B.size { + L_prepbuffsize(B, 1) + } + B.b[B.n] = c + B.n += 1 +} + +L_addsize :: #force_inline proc "c" (B: ^L_Buffer, s: c.size_t) -> c.size_t { + B.n += s + return B.n +} + +L_prepbuffer :: #force_inline proc "c" (B: ^L_Buffer) -> [^]byte { + return L_prepbuffsize(B, c.size_t(L_BUFFERSIZE)) +} + + +@(link_prefix="lua") +@(default_calling_convention="c") +foreign lib { + L_buffinit :: proc(L: ^State, B: ^L_Buffer) --- + L_prepbuffsize :: proc(B: ^L_Buffer, sz: c.size_t) -> [^]byte --- + L_addlstring :: proc(B: ^L_Buffer, s: cstring, l: c.size_t) --- + L_addstring :: proc(B: ^L_Buffer, s: cstring) --- + L_addvalue :: proc(B: ^L_Buffer) --- + L_pushresult :: proc(B: ^L_Buffer) --- + L_pushresultsize :: proc(B: ^L_Buffer, sz: c.size_t) --- + L_buffinitsize :: proc(L: ^State, B: ^L_Buffer, sz: c.size_t) -> [^]byte --- +} + + +/* }====================================================== */ + + + + +/* +** {============================================================== +** some useful macros +** =============================================================== +*/ + +pop :: #force_inline proc "c" (L: ^State, n: c.int) { + settop(L, -n-1) +} +newtable :: #force_inline proc "c" (L: ^State) { + createtable(L, 0, 0) +} +register :: #force_inline proc "c" (L: ^State, n: cstring, f: CFunction) { + pushcfunction(L, f) + setglobal(L, n) +} + +pushcfunction :: #force_inline proc "c" (L: ^State, f: CFunction) { + pushcclosure(L, f, 0) +} + + +isfunction :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .FUNCTION } +istable :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .TABLE } +islightuserdata :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .LIGHTUSERDATA } +isnil :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .NIL } +isboolean :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .BOOLEAN } +isthread :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .THREAD } +isnone :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .NONE } +isnoneornil :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) <= .NIL } + + +pushliteral :: pushstring +pushglobaltable :: #force_inline proc "c" (L: ^State) { + rawgeti(L, REGISTRYINDEX, RIDX_GLOBALS) +} +tostring :: #force_inline proc "c" (L: ^State, i: c.int) -> cstring { + return tolstring(L, i, nil) +} + +L_newlibtable :: #force_inline proc "c" (L: ^State, l: []L_Reg) { + createtable(L, 0, c.int(builtin.len(l) - 1)) +} + +L_newlib :: proc(L: ^State, l: []L_Reg) { + L_newlibtable(L, l) + L_setfuncs(L, raw_data(l), 0) +} + +L_argcheck :: #force_inline proc "c" (L: ^State, cond: bool, numarg: c.int, extramsg: cstring) { + if cond { + L_argerror(L, numarg, extramsg) + } +} + +L_typename :: #force_inline proc "c" (L: ^State, i: c.int) -> cstring { + return typename(L, type(L, i)) +} +L_dofile :: #force_inline proc "c" (L: ^State, s: cstring) -> c.int { + err := L_loadfile(L, s) + return pcall(L, 0, MULTRET, 0) if err == nil else c.int(err) +} +L_dostring :: #force_inline proc "c" (L: ^State, s: cstring) -> c.int { + err := L_loadstring(L, s) + return pcall(L, 0, MULTRET, 0) if err == nil else c.int(err) +} +L_getmetatable :: #force_inline proc "c" (L: ^State, n: cstring) { + getfield(L, REGISTRYINDEX, n) +} +L_opt :: #force_inline proc "c" (L: ^State, f: $F, n: c.int, d: $T) -> T where intrinsics.type_is_proc(F) { + return d if isnoneornil(L, n) else f(L, n) +} + + + +/* }============================================================== */ diff --git a/vendor/lua/5.2/windows/lua52.dll b/vendor/lua/5.2/windows/lua52.dll new file mode 100644 index 000000000..b7e15d585 Binary files /dev/null and b/vendor/lua/5.2/windows/lua52.dll differ diff --git a/vendor/lua/5.2/windows/lua52dll.lib b/vendor/lua/5.2/windows/lua52dll.lib new file mode 100644 index 000000000..0d6ffb751 Binary files /dev/null and b/vendor/lua/5.2/windows/lua52dll.lib differ diff --git a/vendor/lua/5.3/include/lauxlib.h b/vendor/lua/5.3/include/lauxlib.h new file mode 100644 index 000000000..9857d3a83 --- /dev/null +++ b/vendor/lua/5.3/include/lauxlib.h @@ -0,0 +1,264 @@ +/* +** $Id: lauxlib.h,v 1.131.1.1 2017/04/19 17:20:42 roberto Exp $ +** Auxiliary functions for building Lua libraries +** See Copyright Notice in lua.h +*/ + + +#ifndef lauxlib_h +#define lauxlib_h + + +#include +#include + +#include "lua.h" + + + +/* extra error code for 'luaL_loadfilex' */ +#define LUA_ERRFILE (LUA_ERRERR+1) + + +/* key, in the registry, for table of loaded modules */ +#define LUA_LOADED_TABLE "_LOADED" + + +/* key, in the registry, for table of preloaded loaders */ +#define LUA_PRELOAD_TABLE "_PRELOAD" + + +typedef struct luaL_Reg { + const char *name; + lua_CFunction func; +} luaL_Reg; + + +#define LUAL_NUMSIZES (sizeof(lua_Integer)*16 + sizeof(lua_Number)) + +LUALIB_API void (luaL_checkversion_) (lua_State *L, lua_Number ver, size_t sz); +#define luaL_checkversion(L) \ + luaL_checkversion_(L, LUA_VERSION_NUM, LUAL_NUMSIZES) + +LUALIB_API int (luaL_getmetafield) (lua_State *L, int obj, const char *e); +LUALIB_API int (luaL_callmeta) (lua_State *L, int obj, const char *e); +LUALIB_API const char *(luaL_tolstring) (lua_State *L, int idx, size_t *len); +LUALIB_API int (luaL_argerror) (lua_State *L, int arg, const char *extramsg); +LUALIB_API const char *(luaL_checklstring) (lua_State *L, int arg, + size_t *l); +LUALIB_API const char *(luaL_optlstring) (lua_State *L, int arg, + const char *def, size_t *l); +LUALIB_API lua_Number (luaL_checknumber) (lua_State *L, int arg); +LUALIB_API lua_Number (luaL_optnumber) (lua_State *L, int arg, lua_Number def); + +LUALIB_API lua_Integer (luaL_checkinteger) (lua_State *L, int arg); +LUALIB_API lua_Integer (luaL_optinteger) (lua_State *L, int arg, + lua_Integer def); + +LUALIB_API void (luaL_checkstack) (lua_State *L, int sz, const char *msg); +LUALIB_API void (luaL_checktype) (lua_State *L, int arg, int t); +LUALIB_API void (luaL_checkany) (lua_State *L, int arg); + +LUALIB_API int (luaL_newmetatable) (lua_State *L, const char *tname); +LUALIB_API void (luaL_setmetatable) (lua_State *L, const char *tname); +LUALIB_API void *(luaL_testudata) (lua_State *L, int ud, const char *tname); +LUALIB_API void *(luaL_checkudata) (lua_State *L, int ud, const char *tname); + +LUALIB_API void (luaL_where) (lua_State *L, int lvl); +LUALIB_API int (luaL_error) (lua_State *L, const char *fmt, ...); + +LUALIB_API int (luaL_checkoption) (lua_State *L, int arg, const char *def, + const char *const lst[]); + +LUALIB_API int (luaL_fileresult) (lua_State *L, int stat, const char *fname); +LUALIB_API int (luaL_execresult) (lua_State *L, int stat); + +/* predefined references */ +#define LUA_NOREF (-2) +#define LUA_REFNIL (-1) + +LUALIB_API int (luaL_ref) (lua_State *L, int t); +LUALIB_API void (luaL_unref) (lua_State *L, int t, int ref); + +LUALIB_API int (luaL_loadfilex) (lua_State *L, const char *filename, + const char *mode); + +#define luaL_loadfile(L,f) luaL_loadfilex(L,f,NULL) + +LUALIB_API int (luaL_loadbufferx) (lua_State *L, const char *buff, size_t sz, + const char *name, const char *mode); +LUALIB_API int (luaL_loadstring) (lua_State *L, const char *s); + +LUALIB_API lua_State *(luaL_newstate) (void); + +LUALIB_API lua_Integer (luaL_len) (lua_State *L, int idx); + +LUALIB_API const char *(luaL_gsub) (lua_State *L, const char *s, const char *p, + const char *r); + +LUALIB_API void (luaL_setfuncs) (lua_State *L, const luaL_Reg *l, int nup); + +LUALIB_API int (luaL_getsubtable) (lua_State *L, int idx, const char *fname); + +LUALIB_API void (luaL_traceback) (lua_State *L, lua_State *L1, + const char *msg, int level); + +LUALIB_API void (luaL_requiref) (lua_State *L, const char *modname, + lua_CFunction openf, int glb); + +/* +** =============================================================== +** some useful macros +** =============================================================== +*/ + + +#define luaL_newlibtable(L,l) \ + lua_createtable(L, 0, sizeof(l)/sizeof((l)[0]) - 1) + +#define luaL_newlib(L,l) \ + (luaL_checkversion(L), luaL_newlibtable(L,l), luaL_setfuncs(L,l,0)) + +#define luaL_argcheck(L, cond,arg,extramsg) \ + ((void)((cond) || luaL_argerror(L, (arg), (extramsg)))) +#define luaL_checkstring(L,n) (luaL_checklstring(L, (n), NULL)) +#define luaL_optstring(L,n,d) (luaL_optlstring(L, (n), (d), NULL)) + +#define luaL_typename(L,i) lua_typename(L, lua_type(L,(i))) + +#define luaL_dofile(L, fn) \ + (luaL_loadfile(L, fn) || lua_pcall(L, 0, LUA_MULTRET, 0)) + +#define luaL_dostring(L, s) \ + (luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0)) + +#define luaL_getmetatable(L,n) (lua_getfield(L, LUA_REGISTRYINDEX, (n))) + +#define luaL_opt(L,f,n,d) (lua_isnoneornil(L,(n)) ? (d) : f(L,(n))) + +#define luaL_loadbuffer(L,s,sz,n) luaL_loadbufferx(L,s,sz,n,NULL) + + +/* +** {====================================================== +** Generic Buffer manipulation +** ======================================================= +*/ + +typedef struct luaL_Buffer { + char *b; /* buffer address */ + size_t size; /* buffer size */ + size_t n; /* number of characters in buffer */ + lua_State *L; + char initb[LUAL_BUFFERSIZE]; /* initial buffer */ +} luaL_Buffer; + + +#define luaL_addchar(B,c) \ + ((void)((B)->n < (B)->size || luaL_prepbuffsize((B), 1)), \ + ((B)->b[(B)->n++] = (c))) + +#define luaL_addsize(B,s) ((B)->n += (s)) + +LUALIB_API void (luaL_buffinit) (lua_State *L, luaL_Buffer *B); +LUALIB_API char *(luaL_prepbuffsize) (luaL_Buffer *B, size_t sz); +LUALIB_API void (luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l); +LUALIB_API void (luaL_addstring) (luaL_Buffer *B, const char *s); +LUALIB_API void (luaL_addvalue) (luaL_Buffer *B); +LUALIB_API void (luaL_pushresult) (luaL_Buffer *B); +LUALIB_API void (luaL_pushresultsize) (luaL_Buffer *B, size_t sz); +LUALIB_API char *(luaL_buffinitsize) (lua_State *L, luaL_Buffer *B, size_t sz); + +#define luaL_prepbuffer(B) luaL_prepbuffsize(B, LUAL_BUFFERSIZE) + +/* }====================================================== */ + + + +/* +** {====================================================== +** File handles for IO library +** ======================================================= +*/ + +/* +** A file handle is a userdata with metatable 'LUA_FILEHANDLE' and +** initial structure 'luaL_Stream' (it may contain other fields +** after that initial structure). +*/ + +#define LUA_FILEHANDLE "FILE*" + + +typedef struct luaL_Stream { + FILE *f; /* stream (NULL for incompletely created streams) */ + lua_CFunction closef; /* to close stream (NULL for closed streams) */ +} luaL_Stream; + +/* }====================================================== */ + + + +/* compatibility with old module system */ +#if defined(LUA_COMPAT_MODULE) + +LUALIB_API void (luaL_pushmodule) (lua_State *L, const char *modname, + int sizehint); +LUALIB_API void (luaL_openlib) (lua_State *L, const char *libname, + const luaL_Reg *l, int nup); + +#define luaL_register(L,n,l) (luaL_openlib(L,(n),(l),0)) + +#endif + + +/* +** {================================================================== +** "Abstraction Layer" for basic report of messages and errors +** =================================================================== +*/ + +/* print a string */ +#if !defined(lua_writestring) +#define lua_writestring(s,l) fwrite((s), sizeof(char), (l), stdout) +#endif + +/* print a newline and flush the output */ +#if !defined(lua_writeline) +#define lua_writeline() (lua_writestring("\n", 1), fflush(stdout)) +#endif + +/* print an error message */ +#if !defined(lua_writestringerror) +#define lua_writestringerror(s,p) \ + (fprintf(stderr, (s), (p)), fflush(stderr)) +#endif + +/* }================================================================== */ + + +/* +** {============================================================ +** Compatibility with deprecated conversions +** ============================================================= +*/ +#if defined(LUA_COMPAT_APIINTCASTS) + +#define luaL_checkunsigned(L,a) ((lua_Unsigned)luaL_checkinteger(L,a)) +#define luaL_optunsigned(L,a,d) \ + ((lua_Unsigned)luaL_optinteger(L,a,(lua_Integer)(d))) + +#define luaL_checkint(L,n) ((int)luaL_checkinteger(L, (n))) +#define luaL_optint(L,n,d) ((int)luaL_optinteger(L, (n), (d))) + +#define luaL_checklong(L,n) ((long)luaL_checkinteger(L, (n))) +#define luaL_optlong(L,n,d) ((long)luaL_optinteger(L, (n), (d))) + +#endif +/* }============================================================ */ + + + +#endif + + diff --git a/vendor/lua/5.3/include/lua.h b/vendor/lua/5.3/include/lua.h new file mode 100644 index 000000000..9394c5ef8 --- /dev/null +++ b/vendor/lua/5.3/include/lua.h @@ -0,0 +1,485 @@ +/* +** Lua - A Scripting Language +** Lua.org, PUC-Rio, Brazil (http://www.lua.org) +** See Copyright Notice at the end of this file +*/ + + +#ifndef lua_h +#define lua_h + +#include +#include + + +#include "luaconf.h" + + +#define LUA_VERSION_MAJOR "5" +#define LUA_VERSION_MINOR "3" +#define LUA_VERSION_NUM 503 +#define LUA_VERSION_RELEASE "6" + +#define LUA_VERSION "Lua " LUA_VERSION_MAJOR "." LUA_VERSION_MINOR +#define LUA_RELEASE LUA_VERSION "." LUA_VERSION_RELEASE +#define LUA_COPYRIGHT LUA_RELEASE " Copyright (C) 1994-2020 Lua.org, PUC-Rio" +#define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo, W. Celes" + + +/* mark for precompiled code ('Lua') */ +#define LUA_SIGNATURE "\x1bLua" + +/* option for multiple returns in 'lua_pcall' and 'lua_call' */ +#define LUA_MULTRET (-1) + + +/* +** Pseudo-indices +** (-LUAI_MAXSTACK is the minimum valid index; we keep some free empty +** space after that to help overflow detection) +*/ +#define LUA_REGISTRYINDEX (-LUAI_MAXSTACK - 1000) +#define lua_upvalueindex(i) (LUA_REGISTRYINDEX - (i)) + + +/* thread status */ +#define LUA_OK 0 +#define LUA_YIELD 1 +#define LUA_ERRRUN 2 +#define LUA_ERRSYNTAX 3 +#define LUA_ERRMEM 4 +#define LUA_ERRGCMM 5 +#define LUA_ERRERR 6 + + +typedef struct lua_State lua_State; + + +/* +** basic types +*/ +#define LUA_TNONE (-1) + +#define LUA_TNIL 0 +#define LUA_TBOOLEAN 1 +#define LUA_TLIGHTUSERDATA 2 +#define LUA_TNUMBER 3 +#define LUA_TSTRING 4 +#define LUA_TTABLE 5 +#define LUA_TFUNCTION 6 +#define LUA_TUSERDATA 7 +#define LUA_TTHREAD 8 + +#define LUA_NUMTAGS 9 + + + +/* minimum Lua stack available to a C function */ +#define LUA_MINSTACK 20 + + +/* predefined values in the registry */ +#define LUA_RIDX_MAINTHREAD 1 +#define LUA_RIDX_GLOBALS 2 +#define LUA_RIDX_LAST LUA_RIDX_GLOBALS + + +/* type of numbers in Lua */ +typedef LUA_NUMBER lua_Number; + + +/* type for integer functions */ +typedef LUA_INTEGER lua_Integer; + +/* unsigned integer type */ +typedef LUA_UNSIGNED lua_Unsigned; + +/* type for continuation-function contexts */ +typedef LUA_KCONTEXT lua_KContext; + + +/* +** Type for C functions registered with Lua +*/ +typedef int (*lua_CFunction) (lua_State *L); + +/* +** Type for continuation functions +*/ +typedef int (*lua_KFunction) (lua_State *L, int status, lua_KContext ctx); + + +/* +** Type for functions that read/write blocks when loading/dumping Lua chunks +*/ +typedef const char * (*lua_Reader) (lua_State *L, void *ud, size_t *sz); + +typedef int (*lua_Writer) (lua_State *L, const void *p, size_t sz, void *ud); + + +/* +** Type for memory-allocation functions +*/ +typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize); + + + +/* +** generic extra include file +*/ +#if defined(LUA_USER_H) +#include LUA_USER_H +#endif + + +/* +** RCS ident string +*/ +extern const char lua_ident[]; + + +/* +** state manipulation +*/ +LUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud); +LUA_API void (lua_close) (lua_State *L); +LUA_API lua_State *(lua_newthread) (lua_State *L); + +LUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf); + + +LUA_API const lua_Number *(lua_version) (lua_State *L); + + +/* +** basic stack manipulation +*/ +LUA_API int (lua_absindex) (lua_State *L, int idx); +LUA_API int (lua_gettop) (lua_State *L); +LUA_API void (lua_settop) (lua_State *L, int idx); +LUA_API void (lua_pushvalue) (lua_State *L, int idx); +LUA_API void (lua_rotate) (lua_State *L, int idx, int n); +LUA_API void (lua_copy) (lua_State *L, int fromidx, int toidx); +LUA_API int (lua_checkstack) (lua_State *L, int n); + +LUA_API void (lua_xmove) (lua_State *from, lua_State *to, int n); + + +/* +** access functions (stack -> C) +*/ + +LUA_API int (lua_isnumber) (lua_State *L, int idx); +LUA_API int (lua_isstring) (lua_State *L, int idx); +LUA_API int (lua_iscfunction) (lua_State *L, int idx); +LUA_API int (lua_isinteger) (lua_State *L, int idx); +LUA_API int (lua_isuserdata) (lua_State *L, int idx); +LUA_API int (lua_type) (lua_State *L, int idx); +LUA_API const char *(lua_typename) (lua_State *L, int tp); + +LUA_API lua_Number (lua_tonumberx) (lua_State *L, int idx, int *isnum); +LUA_API lua_Integer (lua_tointegerx) (lua_State *L, int idx, int *isnum); +LUA_API int (lua_toboolean) (lua_State *L, int idx); +LUA_API const char *(lua_tolstring) (lua_State *L, int idx, size_t *len); +LUA_API size_t (lua_rawlen) (lua_State *L, int idx); +LUA_API lua_CFunction (lua_tocfunction) (lua_State *L, int idx); +LUA_API void *(lua_touserdata) (lua_State *L, int idx); +LUA_API lua_State *(lua_tothread) (lua_State *L, int idx); +LUA_API const void *(lua_topointer) (lua_State *L, int idx); + + +/* +** Comparison and arithmetic functions +*/ + +#define LUA_OPADD 0 /* ORDER TM, ORDER OP */ +#define LUA_OPSUB 1 +#define LUA_OPMUL 2 +#define LUA_OPMOD 3 +#define LUA_OPPOW 4 +#define LUA_OPDIV 5 +#define LUA_OPIDIV 6 +#define LUA_OPBAND 7 +#define LUA_OPBOR 8 +#define LUA_OPBXOR 9 +#define LUA_OPSHL 10 +#define LUA_OPSHR 11 +#define LUA_OPUNM 12 +#define LUA_OPBNOT 13 + +LUA_API void (lua_arith) (lua_State *L, int op); + +#define LUA_OPEQ 0 +#define LUA_OPLT 1 +#define LUA_OPLE 2 + +LUA_API int (lua_rawequal) (lua_State *L, int idx1, int idx2); +LUA_API int (lua_compare) (lua_State *L, int idx1, int idx2, int op); + + +/* +** push functions (C -> stack) +*/ +LUA_API void (lua_pushnil) (lua_State *L); +LUA_API void (lua_pushnumber) (lua_State *L, lua_Number n); +LUA_API void (lua_pushinteger) (lua_State *L, lua_Integer n); +LUA_API const char *(lua_pushlstring) (lua_State *L, const char *s, size_t len); +LUA_API const char *(lua_pushstring) (lua_State *L, const char *s); +LUA_API const char *(lua_pushvfstring) (lua_State *L, const char *fmt, + va_list argp); +LUA_API const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...); +LUA_API void (lua_pushcclosure) (lua_State *L, lua_CFunction fn, int n); +LUA_API void (lua_pushboolean) (lua_State *L, int b); +LUA_API void (lua_pushlightuserdata) (lua_State *L, void *p); +LUA_API int (lua_pushthread) (lua_State *L); + + +/* +** get functions (Lua -> stack) +*/ +LUA_API int (lua_getglobal) (lua_State *L, const char *name); +LUA_API int (lua_gettable) (lua_State *L, int idx); +LUA_API int (lua_getfield) (lua_State *L, int idx, const char *k); +LUA_API int (lua_geti) (lua_State *L, int idx, lua_Integer n); +LUA_API int (lua_rawget) (lua_State *L, int idx); +LUA_API int (lua_rawgeti) (lua_State *L, int idx, lua_Integer n); +LUA_API int (lua_rawgetp) (lua_State *L, int idx, const void *p); + +LUA_API void (lua_createtable) (lua_State *L, int narr, int nrec); +LUA_API void *(lua_newuserdata) (lua_State *L, size_t sz); +LUA_API int (lua_getmetatable) (lua_State *L, int objindex); +LUA_API int (lua_getuservalue) (lua_State *L, int idx); + + +/* +** set functions (stack -> Lua) +*/ +LUA_API void (lua_setglobal) (lua_State *L, const char *name); +LUA_API void (lua_settable) (lua_State *L, int idx); +LUA_API void (lua_setfield) (lua_State *L, int idx, const char *k); +LUA_API void (lua_seti) (lua_State *L, int idx, lua_Integer n); +LUA_API void (lua_rawset) (lua_State *L, int idx); +LUA_API void (lua_rawseti) (lua_State *L, int idx, lua_Integer n); +LUA_API void (lua_rawsetp) (lua_State *L, int idx, const void *p); +LUA_API int (lua_setmetatable) (lua_State *L, int objindex); +LUA_API void (lua_setuservalue) (lua_State *L, int idx); + + +/* +** 'load' and 'call' functions (load and run Lua code) +*/ +LUA_API void (lua_callk) (lua_State *L, int nargs, int nresults, + lua_KContext ctx, lua_KFunction k); +#define lua_call(L,n,r) lua_callk(L, (n), (r), 0, NULL) + +LUA_API int (lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc, + lua_KContext ctx, lua_KFunction k); +#define lua_pcall(L,n,r,f) lua_pcallk(L, (n), (r), (f), 0, NULL) + +LUA_API int (lua_load) (lua_State *L, lua_Reader reader, void *dt, + const char *chunkname, const char *mode); + +LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data, int strip); + + +/* +** coroutine functions +*/ +LUA_API int (lua_yieldk) (lua_State *L, int nresults, lua_KContext ctx, + lua_KFunction k); +LUA_API int (lua_resume) (lua_State *L, lua_State *from, int narg); +LUA_API int (lua_status) (lua_State *L); +LUA_API int (lua_isyieldable) (lua_State *L); + +#define lua_yield(L,n) lua_yieldk(L, (n), 0, NULL) + + +/* +** garbage-collection function and options +*/ + +#define LUA_GCSTOP 0 +#define LUA_GCRESTART 1 +#define LUA_GCCOLLECT 2 +#define LUA_GCCOUNT 3 +#define LUA_GCCOUNTB 4 +#define LUA_GCSTEP 5 +#define LUA_GCSETPAUSE 6 +#define LUA_GCSETSTEPMUL 7 +#define LUA_GCISRUNNING 9 + +LUA_API int (lua_gc) (lua_State *L, int what, int data); + + +/* +** miscellaneous functions +*/ + +LUA_API int (lua_error) (lua_State *L); + +LUA_API int (lua_next) (lua_State *L, int idx); + +LUA_API void (lua_concat) (lua_State *L, int n); +LUA_API void (lua_len) (lua_State *L, int idx); + +LUA_API size_t (lua_stringtonumber) (lua_State *L, const char *s); + +LUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud); +LUA_API void (lua_setallocf) (lua_State *L, lua_Alloc f, void *ud); + + + +/* +** {============================================================== +** some useful macros +** =============================================================== +*/ + +#define lua_getextraspace(L) ((void *)((char *)(L) - LUA_EXTRASPACE)) + +#define lua_tonumber(L,i) lua_tonumberx(L,(i),NULL) +#define lua_tointeger(L,i) lua_tointegerx(L,(i),NULL) + +#define lua_pop(L,n) lua_settop(L, -(n)-1) + +#define lua_newtable(L) lua_createtable(L, 0, 0) + +#define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n))) + +#define lua_pushcfunction(L,f) lua_pushcclosure(L, (f), 0) + +#define lua_isfunction(L,n) (lua_type(L, (n)) == LUA_TFUNCTION) +#define lua_istable(L,n) (lua_type(L, (n)) == LUA_TTABLE) +#define lua_islightuserdata(L,n) (lua_type(L, (n)) == LUA_TLIGHTUSERDATA) +#define lua_isnil(L,n) (lua_type(L, (n)) == LUA_TNIL) +#define lua_isboolean(L,n) (lua_type(L, (n)) == LUA_TBOOLEAN) +#define lua_isthread(L,n) (lua_type(L, (n)) == LUA_TTHREAD) +#define lua_isnone(L,n) (lua_type(L, (n)) == LUA_TNONE) +#define lua_isnoneornil(L, n) (lua_type(L, (n)) <= 0) + +#define lua_pushliteral(L, s) lua_pushstring(L, "" s) + +#define lua_pushglobaltable(L) \ + ((void)lua_rawgeti(L, LUA_REGISTRYINDEX, LUA_RIDX_GLOBALS)) + +#define lua_tostring(L,i) lua_tolstring(L, (i), NULL) + + +#define lua_insert(L,idx) lua_rotate(L, (idx), 1) + +#define lua_remove(L,idx) (lua_rotate(L, (idx), -1), lua_pop(L, 1)) + +#define lua_replace(L,idx) (lua_copy(L, -1, (idx)), lua_pop(L, 1)) + +/* }============================================================== */ + + +/* +** {============================================================== +** compatibility macros for unsigned conversions +** =============================================================== +*/ +#if defined(LUA_COMPAT_APIINTCASTS) + +#define lua_pushunsigned(L,n) lua_pushinteger(L, (lua_Integer)(n)) +#define lua_tounsignedx(L,i,is) ((lua_Unsigned)lua_tointegerx(L,i,is)) +#define lua_tounsigned(L,i) lua_tounsignedx(L,(i),NULL) + +#endif +/* }============================================================== */ + +/* +** {====================================================================== +** Debug API +** ======================================================================= +*/ + + +/* +** Event codes +*/ +#define LUA_HOOKCALL 0 +#define LUA_HOOKRET 1 +#define LUA_HOOKLINE 2 +#define LUA_HOOKCOUNT 3 +#define LUA_HOOKTAILCALL 4 + + +/* +** Event masks +*/ +#define LUA_MASKCALL (1 << LUA_HOOKCALL) +#define LUA_MASKRET (1 << LUA_HOOKRET) +#define LUA_MASKLINE (1 << LUA_HOOKLINE) +#define LUA_MASKCOUNT (1 << LUA_HOOKCOUNT) + +typedef struct lua_Debug lua_Debug; /* activation record */ + + +/* Functions to be called by the debugger in specific events */ +typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar); + + +LUA_API int (lua_getstack) (lua_State *L, int level, lua_Debug *ar); +LUA_API int (lua_getinfo) (lua_State *L, const char *what, lua_Debug *ar); +LUA_API const char *(lua_getlocal) (lua_State *L, const lua_Debug *ar, int n); +LUA_API const char *(lua_setlocal) (lua_State *L, const lua_Debug *ar, int n); +LUA_API const char *(lua_getupvalue) (lua_State *L, int funcindex, int n); +LUA_API const char *(lua_setupvalue) (lua_State *L, int funcindex, int n); + +LUA_API void *(lua_upvalueid) (lua_State *L, int fidx, int n); +LUA_API void (lua_upvaluejoin) (lua_State *L, int fidx1, int n1, + int fidx2, int n2); + +LUA_API void (lua_sethook) (lua_State *L, lua_Hook func, int mask, int count); +LUA_API lua_Hook (lua_gethook) (lua_State *L); +LUA_API int (lua_gethookmask) (lua_State *L); +LUA_API int (lua_gethookcount) (lua_State *L); + + +struct lua_Debug { + int event; + const char *name; /* (n) */ + const char *namewhat; /* (n) 'global', 'local', 'field', 'method' */ + const char *what; /* (S) 'Lua', 'C', 'main', 'tail' */ + const char *source; /* (S) */ + int currentline; /* (l) */ + int linedefined; /* (S) */ + int lastlinedefined; /* (S) */ + unsigned char nups; /* (u) number of upvalues */ + unsigned char nparams;/* (u) number of parameters */ + char isvararg; /* (u) */ + char istailcall; /* (t) */ + char short_src[LUA_IDSIZE]; /* (S) */ + /* private part */ + struct CallInfo *i_ci; /* active function */ +}; + +/* }====================================================================== */ + + +/****************************************************************************** +* Copyright (C) 1994-2020 Lua.org, PUC-Rio. +* +* Permission is hereby granted, free of charge, to any person obtaining +* a copy of this software and associated documentation files (the +* "Software"), to deal in the Software without restriction, including +* without limitation the rights to use, copy, modify, merge, publish, +* distribute, sublicense, and/or sell copies of the Software, and to +* permit persons to whom the Software is furnished to do so, subject to +* the following conditions: +* +* The above copyright notice and this permission notice shall be +* included in all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +******************************************************************************/ + + +#endif diff --git a/vendor/lua/5.3/include/lua.hpp b/vendor/lua/5.3/include/lua.hpp new file mode 100644 index 000000000..ec417f594 --- /dev/null +++ b/vendor/lua/5.3/include/lua.hpp @@ -0,0 +1,9 @@ +// lua.hpp +// Lua header files for C++ +// <> not supplied automatically because Lua also compiles as C++ + +extern "C" { +#include "lua.h" +#include "lualib.h" +#include "lauxlib.h" +} diff --git a/vendor/lua/5.3/include/luaconf.h b/vendor/lua/5.3/include/luaconf.h new file mode 100644 index 000000000..f95555689 --- /dev/null +++ b/vendor/lua/5.3/include/luaconf.h @@ -0,0 +1,792 @@ +/* +** $Id: luaconf.h,v 1.259.1.1 2017/04/19 17:29:57 roberto Exp $ +** Configuration file for Lua +** See Copyright Notice in lua.h +*/ + + +#ifndef luaconf_h +#define luaconf_h + +#include +#include + + +/* +** =================================================================== +** Search for "@@" to find all configurable definitions. +** =================================================================== +*/ + + +/* +** {==================================================================== +** System Configuration: macros to adapt (if needed) Lua to some +** particular platform, for instance compiling it with 32-bit numbers or +** restricting it to C89. +** ===================================================================== +*/ + +/* +@@ LUA_32BITS enables Lua with 32-bit integers and 32-bit floats. You +** can also define LUA_32BITS in the make file, but changing here you +** ensure that all software connected to Lua will be compiled with the +** same configuration. +*/ +/* #define LUA_32BITS */ + + +/* +@@ LUA_USE_C89 controls the use of non-ISO-C89 features. +** Define it if you want Lua to avoid the use of a few C99 features +** or Windows-specific features on Windows. +*/ +/* #define LUA_USE_C89 */ + + +/* +** By default, Lua on Windows use (some) specific Windows features +*/ +#if !defined(LUA_USE_C89) && defined(_WIN32) && !defined(_WIN32_WCE) +#define LUA_USE_WINDOWS /* enable goodies for regular Windows */ +#endif + + +#if defined(LUA_USE_WINDOWS) +#define LUA_DL_DLL /* enable support for DLL */ +#define LUA_USE_C89 /* broadly, Windows is C89 */ +#endif + + +#if defined(LUA_USE_LINUX) +#define LUA_USE_POSIX +#define LUA_USE_DLOPEN /* needs an extra library: -ldl */ +#define LUA_USE_READLINE /* needs some extra libraries */ +#endif + + +#if defined(LUA_USE_MACOSX) +#define LUA_USE_POSIX +#define LUA_USE_DLOPEN /* MacOS does not need -ldl */ +#define LUA_USE_READLINE /* needs an extra library: -lreadline */ +#endif + + +/* +@@ LUA_C89_NUMBERS ensures that Lua uses the largest types available for +** C89 ('long' and 'double'); Windows always has '__int64', so it does +** not need to use this case. +*/ +#if defined(LUA_USE_C89) && !defined(LUA_USE_WINDOWS) +#define LUA_C89_NUMBERS +#endif + + + +/* +@@ LUAI_BITSINT defines the (minimum) number of bits in an 'int'. +*/ +/* avoid undefined shifts */ +#if ((INT_MAX >> 15) >> 15) >= 1 +#define LUAI_BITSINT 32 +#else +/* 'int' always must have at least 16 bits */ +#define LUAI_BITSINT 16 +#endif + + +/* +@@ LUA_INT_TYPE defines the type for Lua integers. +@@ LUA_FLOAT_TYPE defines the type for Lua floats. +** Lua should work fine with any mix of these options (if supported +** by your C compiler). The usual configurations are 64-bit integers +** and 'double' (the default), 32-bit integers and 'float' (for +** restricted platforms), and 'long'/'double' (for C compilers not +** compliant with C99, which may not have support for 'long long'). +*/ + +/* predefined options for LUA_INT_TYPE */ +#define LUA_INT_INT 1 +#define LUA_INT_LONG 2 +#define LUA_INT_LONGLONG 3 + +/* predefined options for LUA_FLOAT_TYPE */ +#define LUA_FLOAT_FLOAT 1 +#define LUA_FLOAT_DOUBLE 2 +#define LUA_FLOAT_LONGDOUBLE 3 + +#if defined(LUA_32BITS) /* { */ +/* +** 32-bit integers and 'float' +*/ +#if LUAI_BITSINT >= 32 /* use 'int' if big enough */ +#define LUA_INT_TYPE LUA_INT_INT +#else /* otherwise use 'long' */ +#define LUA_INT_TYPE LUA_INT_LONG +#endif +#define LUA_FLOAT_TYPE LUA_FLOAT_FLOAT + +#elif defined(LUA_C89_NUMBERS) /* }{ */ +/* +** largest types available for C89 ('long' and 'double') +*/ +#define LUA_INT_TYPE LUA_INT_LONG +#define LUA_FLOAT_TYPE LUA_FLOAT_DOUBLE + +#endif /* } */ + + +/* +** default configuration for 64-bit Lua ('long long' and 'double') +*/ +#if !defined(LUA_INT_TYPE) +#define LUA_INT_TYPE LUA_INT_LONGLONG +#endif + +#if !defined(LUA_FLOAT_TYPE) +#define LUA_FLOAT_TYPE LUA_FLOAT_DOUBLE +#endif + +/* }================================================================== */ + + + + +/* +** {================================================================== +** Configuration for Paths. +** =================================================================== +*/ + +/* +** LUA_PATH_SEP is the character that separates templates in a path. +** LUA_PATH_MARK is the string that marks the substitution points in a +** template. +** LUA_EXEC_DIR in a Windows path is replaced by the executable's +** directory. +*/ +#define LUA_PATH_SEP ";" +#define LUA_PATH_MARK "?" +#define LUA_EXEC_DIR "!" + + +/* +@@ LUA_PATH_DEFAULT is the default path that Lua uses to look for +** Lua libraries. +@@ LUA_CPATH_DEFAULT is the default path that Lua uses to look for +** C libraries. +** CHANGE them if your machine has a non-conventional directory +** hierarchy or if you want to install your libraries in +** non-conventional directories. +*/ +#define LUA_VDIR LUA_VERSION_MAJOR "." LUA_VERSION_MINOR +#if defined(_WIN32) /* { */ +/* +** In Windows, any exclamation mark ('!') in the path is replaced by the +** path of the directory of the executable file of the current process. +*/ +#define LUA_LDIR "!\\lua\\" +#define LUA_CDIR "!\\" +#define LUA_SHRDIR "!\\..\\share\\lua\\" LUA_VDIR "\\" +#define LUA_PATH_DEFAULT \ + LUA_LDIR"?.lua;" LUA_LDIR"?\\init.lua;" \ + LUA_CDIR"?.lua;" LUA_CDIR"?\\init.lua;" \ + LUA_SHRDIR"?.lua;" LUA_SHRDIR"?\\init.lua;" \ + ".\\?.lua;" ".\\?\\init.lua" +#define LUA_CPATH_DEFAULT \ + LUA_CDIR"?.dll;" \ + LUA_CDIR"..\\lib\\lua\\" LUA_VDIR "\\?.dll;" \ + LUA_CDIR"loadall.dll;" ".\\?.dll;" \ + LUA_CDIR"?53.dll;" ".\\?53.dll" + +#else /* }{ */ + +#define LUA_ROOT "/usr/local/" +#define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR "/" +#define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR "/" +#define LUA_PATH_DEFAULT \ + LUA_LDIR"?.lua;" LUA_LDIR"?/init.lua;" \ + LUA_CDIR"?.lua;" LUA_CDIR"?/init.lua;" \ + "./?.lua;" "./?/init.lua" +#define LUA_CPATH_DEFAULT \ + LUA_CDIR"?.so;" LUA_CDIR"loadall.so;" "./?.so;" \ + LUA_CDIR"lib?53.so;" "./lib?53.so" +#endif /* } */ + + +/* +@@ LUA_DIRSEP is the directory separator (for submodules). +** CHANGE it if your machine does not use "/" as the directory separator +** and is not Windows. (On Windows Lua automatically uses "\".) +*/ +#if defined(_WIN32) +#define LUA_DIRSEP "\\" +#else +#define LUA_DIRSEP "/" +#endif + +/* }================================================================== */ + + +/* +** {================================================================== +** Marks for exported symbols in the C code +** =================================================================== +*/ + +/* +@@ LUA_API is a mark for all core API functions. +@@ LUALIB_API is a mark for all auxiliary library functions. +@@ LUAMOD_API is a mark for all standard library opening functions. +** CHANGE them if you need to define those functions in some special way. +** For instance, if you want to create one Windows DLL with the core and +** the libraries, you may want to use the following definition (define +** LUA_BUILD_AS_DLL to get it). +*/ +#if defined(LUA_BUILD_AS_DLL) /* { */ + +#if defined(LUA_CORE) || defined(LUA_LIB) /* { */ +#define LUA_API __declspec(dllexport) +#else /* }{ */ +#define LUA_API __declspec(dllimport) +#endif /* } */ + +#else /* }{ */ + +#define LUA_API extern + +#endif /* } */ + + +/* more often than not the libs go together with the core */ +#define LUALIB_API LUA_API +#define LUAMOD_API LUALIB_API + + +/* +@@ LUAI_FUNC is a mark for all extern functions that are not to be +** exported to outside modules. +@@ LUAI_DDEF and LUAI_DDEC are marks for all extern (const) variables +** that are not to be exported to outside modules (LUAI_DDEF for +** definitions and LUAI_DDEC for declarations). +** CHANGE them if you need to mark them in some special way. Elf/gcc +** (versions 3.2 and later) mark them as "hidden" to optimize access +** when Lua is compiled as a shared library. Not all elf targets support +** this attribute. Unfortunately, gcc does not offer a way to check +** whether the target offers that support, and those without support +** give a warning about it. To avoid these warnings, change to the +** default definition. +*/ +#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 302) && \ + defined(__ELF__) /* { */ +#define LUAI_FUNC __attribute__((visibility("hidden"))) extern +#else /* }{ */ +#define LUAI_FUNC extern +#endif /* } */ + +#define LUAI_DDEC LUAI_FUNC +#define LUAI_DDEF /* empty */ + +/* }================================================================== */ + + +/* +** {================================================================== +** Compatibility with previous versions +** =================================================================== +*/ + +/* +@@ LUA_COMPAT_5_2 controls other macros for compatibility with Lua 5.2. +@@ LUA_COMPAT_5_1 controls other macros for compatibility with Lua 5.1. +** You can define it to get all options, or change specific options +** to fit your specific needs. +*/ +#if defined(LUA_COMPAT_5_2) /* { */ + +/* +@@ LUA_COMPAT_MATHLIB controls the presence of several deprecated +** functions in the mathematical library. +*/ +#define LUA_COMPAT_MATHLIB + +/* +@@ LUA_COMPAT_BITLIB controls the presence of library 'bit32'. +*/ +#define LUA_COMPAT_BITLIB + +/* +@@ LUA_COMPAT_IPAIRS controls the effectiveness of the __ipairs metamethod. +*/ +#define LUA_COMPAT_IPAIRS + +/* +@@ LUA_COMPAT_APIINTCASTS controls the presence of macros for +** manipulating other integer types (lua_pushunsigned, lua_tounsigned, +** luaL_checkint, luaL_checklong, etc.) +*/ +#define LUA_COMPAT_APIINTCASTS + +#endif /* } */ + + +#if defined(LUA_COMPAT_5_1) /* { */ + +/* Incompatibilities from 5.2 -> 5.3 */ +#define LUA_COMPAT_MATHLIB +#define LUA_COMPAT_APIINTCASTS + +/* +@@ LUA_COMPAT_UNPACK controls the presence of global 'unpack'. +** You can replace it with 'table.unpack'. +*/ +#define LUA_COMPAT_UNPACK + +/* +@@ LUA_COMPAT_LOADERS controls the presence of table 'package.loaders'. +** You can replace it with 'package.searchers'. +*/ +#define LUA_COMPAT_LOADERS + +/* +@@ macro 'lua_cpcall' emulates deprecated function lua_cpcall. +** You can call your C function directly (with light C functions). +*/ +#define lua_cpcall(L,f,u) \ + (lua_pushcfunction(L, (f)), \ + lua_pushlightuserdata(L,(u)), \ + lua_pcall(L,1,0,0)) + + +/* +@@ LUA_COMPAT_LOG10 defines the function 'log10' in the math library. +** You can rewrite 'log10(x)' as 'log(x, 10)'. +*/ +#define LUA_COMPAT_LOG10 + +/* +@@ LUA_COMPAT_LOADSTRING defines the function 'loadstring' in the base +** library. You can rewrite 'loadstring(s)' as 'load(s)'. +*/ +#define LUA_COMPAT_LOADSTRING + +/* +@@ LUA_COMPAT_MAXN defines the function 'maxn' in the table library. +*/ +#define LUA_COMPAT_MAXN + +/* +@@ The following macros supply trivial compatibility for some +** changes in the API. The macros themselves document how to +** change your code to avoid using them. +*/ +#define lua_strlen(L,i) lua_rawlen(L, (i)) + +#define lua_objlen(L,i) lua_rawlen(L, (i)) + +#define lua_equal(L,idx1,idx2) lua_compare(L,(idx1),(idx2),LUA_OPEQ) +#define lua_lessthan(L,idx1,idx2) lua_compare(L,(idx1),(idx2),LUA_OPLT) + +/* +@@ LUA_COMPAT_MODULE controls compatibility with previous +** module functions 'module' (Lua) and 'luaL_register' (C). +*/ +#define LUA_COMPAT_MODULE + +#endif /* } */ + + +/* +@@ LUA_COMPAT_FLOATSTRING makes Lua format integral floats without a +@@ a float mark ('.0'). +** This macro is not on by default even in compatibility mode, +** because this is not really an incompatibility. +*/ +/* #define LUA_COMPAT_FLOATSTRING */ + +/* }================================================================== */ + + + +/* +** {================================================================== +** Configuration for Numbers. +** Change these definitions if no predefined LUA_FLOAT_* / LUA_INT_* +** satisfy your needs. +** =================================================================== +*/ + +/* +@@ LUA_NUMBER is the floating-point type used by Lua. +@@ LUAI_UACNUMBER is the result of a 'default argument promotion' +@@ over a floating number. +@@ l_mathlim(x) corrects limit name 'x' to the proper float type +** by prefixing it with one of FLT/DBL/LDBL. +@@ LUA_NUMBER_FRMLEN is the length modifier for writing floats. +@@ LUA_NUMBER_FMT is the format for writing floats. +@@ lua_number2str converts a float to a string. +@@ l_mathop allows the addition of an 'l' or 'f' to all math operations. +@@ l_floor takes the floor of a float. +@@ lua_str2number converts a decimal numeric string to a number. +*/ + + +/* The following definitions are good for most cases here */ + +#define l_floor(x) (l_mathop(floor)(x)) + +#define lua_number2str(s,sz,n) \ + l_sprintf((s), sz, LUA_NUMBER_FMT, (LUAI_UACNUMBER)(n)) + +/* +@@ lua_numbertointeger converts a float number to an integer, or +** returns 0 if float is not within the range of a lua_Integer. +** (The range comparisons are tricky because of rounding. The tests +** here assume a two-complement representation, where MININTEGER always +** has an exact representation as a float; MAXINTEGER may not have one, +** and therefore its conversion to float may have an ill-defined value.) +*/ +#define lua_numbertointeger(n,p) \ + ((n) >= (LUA_NUMBER)(LUA_MININTEGER) && \ + (n) < -(LUA_NUMBER)(LUA_MININTEGER) && \ + (*(p) = (LUA_INTEGER)(n), 1)) + + +/* now the variable definitions */ + +#if LUA_FLOAT_TYPE == LUA_FLOAT_FLOAT /* { single float */ + +#define LUA_NUMBER float + +#define l_mathlim(n) (FLT_##n) + +#define LUAI_UACNUMBER double + +#define LUA_NUMBER_FRMLEN "" +#define LUA_NUMBER_FMT "%.7g" + +#define l_mathop(op) op##f + +#define lua_str2number(s,p) strtof((s), (p)) + + +#elif LUA_FLOAT_TYPE == LUA_FLOAT_LONGDOUBLE /* }{ long double */ + +#define LUA_NUMBER long double + +#define l_mathlim(n) (LDBL_##n) + +#define LUAI_UACNUMBER long double + +#define LUA_NUMBER_FRMLEN "L" +#define LUA_NUMBER_FMT "%.19Lg" + +#define l_mathop(op) op##l + +#define lua_str2number(s,p) strtold((s), (p)) + +#elif LUA_FLOAT_TYPE == LUA_FLOAT_DOUBLE /* }{ double */ + +#define LUA_NUMBER double + +#define l_mathlim(n) (DBL_##n) + +#define LUAI_UACNUMBER double + +#define LUA_NUMBER_FRMLEN "" +#define LUA_NUMBER_FMT "%.14g" + +#define l_mathop(op) op + +#define lua_str2number(s,p) strtod((s), (p)) + +#else /* }{ */ + +#error "numeric float type not defined" + +#endif /* } */ + + + +/* +@@ LUA_INTEGER is the integer type used by Lua. +** +@@ LUA_UNSIGNED is the unsigned version of LUA_INTEGER. +** +@@ LUAI_UACINT is the result of a 'default argument promotion' +@@ over a lUA_INTEGER. +@@ LUA_INTEGER_FRMLEN is the length modifier for reading/writing integers. +@@ LUA_INTEGER_FMT is the format for writing integers. +@@ LUA_MAXINTEGER is the maximum value for a LUA_INTEGER. +@@ LUA_MININTEGER is the minimum value for a LUA_INTEGER. +@@ lua_integer2str converts an integer to a string. +*/ + + +/* The following definitions are good for most cases here */ + +#define LUA_INTEGER_FMT "%" LUA_INTEGER_FRMLEN "d" + +#define LUAI_UACINT LUA_INTEGER + +#define lua_integer2str(s,sz,n) \ + l_sprintf((s), sz, LUA_INTEGER_FMT, (LUAI_UACINT)(n)) + +/* +** use LUAI_UACINT here to avoid problems with promotions (which +** can turn a comparison between unsigneds into a signed comparison) +*/ +#define LUA_UNSIGNED unsigned LUAI_UACINT + + +/* now the variable definitions */ + +#if LUA_INT_TYPE == LUA_INT_INT /* { int */ + +#define LUA_INTEGER int +#define LUA_INTEGER_FRMLEN "" + +#define LUA_MAXINTEGER INT_MAX +#define LUA_MININTEGER INT_MIN + +#elif LUA_INT_TYPE == LUA_INT_LONG /* }{ long */ + +#define LUA_INTEGER long +#define LUA_INTEGER_FRMLEN "l" + +#define LUA_MAXINTEGER LONG_MAX +#define LUA_MININTEGER LONG_MIN + +#elif LUA_INT_TYPE == LUA_INT_LONGLONG /* }{ long long */ + +/* use presence of macro LLONG_MAX as proxy for C99 compliance */ +#if defined(LLONG_MAX) /* { */ +/* use ISO C99 stuff */ + +#define LUA_INTEGER long long +#define LUA_INTEGER_FRMLEN "ll" + +#define LUA_MAXINTEGER LLONG_MAX +#define LUA_MININTEGER LLONG_MIN + +#elif defined(LUA_USE_WINDOWS) /* }{ */ +/* in Windows, can use specific Windows types */ + +#define LUA_INTEGER __int64 +#define LUA_INTEGER_FRMLEN "I64" + +#define LUA_MAXINTEGER _I64_MAX +#define LUA_MININTEGER _I64_MIN + +#else /* }{ */ + +#error "Compiler does not support 'long long'. Use option '-DLUA_32BITS' \ + or '-DLUA_C89_NUMBERS' (see file 'luaconf.h' for details)" + +#endif /* } */ + +#else /* }{ */ + +#error "numeric integer type not defined" + +#endif /* } */ + +/* }================================================================== */ + + +/* +** {================================================================== +** Dependencies with C99 and other C details +** =================================================================== +*/ + +/* +@@ l_sprintf is equivalent to 'snprintf' or 'sprintf' in C89. +** (All uses in Lua have only one format item.) +*/ +#if !defined(LUA_USE_C89) +#define l_sprintf(s,sz,f,i) snprintf(s,sz,f,i) +#else +#define l_sprintf(s,sz,f,i) ((void)(sz), sprintf(s,f,i)) +#endif + + +/* +@@ lua_strx2number converts an hexadecimal numeric string to a number. +** In C99, 'strtod' does that conversion. Otherwise, you can +** leave 'lua_strx2number' undefined and Lua will provide its own +** implementation. +*/ +#if !defined(LUA_USE_C89) +#define lua_strx2number(s,p) lua_str2number(s,p) +#endif + + +/* +@@ lua_pointer2str converts a pointer to a readable string in a +** non-specified way. +*/ +#define lua_pointer2str(buff,sz,p) l_sprintf(buff,sz,"%p",p) + + +/* +@@ lua_number2strx converts a float to an hexadecimal numeric string. +** In C99, 'sprintf' (with format specifiers '%a'/'%A') does that. +** Otherwise, you can leave 'lua_number2strx' undefined and Lua will +** provide its own implementation. +*/ +#if !defined(LUA_USE_C89) +#define lua_number2strx(L,b,sz,f,n) \ + ((void)L, l_sprintf(b,sz,f,(LUAI_UACNUMBER)(n))) +#endif + + +/* +** 'strtof' and 'opf' variants for math functions are not valid in +** C89. Otherwise, the macro 'HUGE_VALF' is a good proxy for testing the +** availability of these variants. ('math.h' is already included in +** all files that use these macros.) +*/ +#if defined(LUA_USE_C89) || (defined(HUGE_VAL) && !defined(HUGE_VALF)) +#undef l_mathop /* variants not available */ +#undef lua_str2number +#define l_mathop(op) (lua_Number)op /* no variant */ +#define lua_str2number(s,p) ((lua_Number)strtod((s), (p))) +#endif + + +/* +@@ LUA_KCONTEXT is the type of the context ('ctx') for continuation +** functions. It must be a numerical type; Lua will use 'intptr_t' if +** available, otherwise it will use 'ptrdiff_t' (the nearest thing to +** 'intptr_t' in C89) +*/ +#define LUA_KCONTEXT ptrdiff_t + +#if !defined(LUA_USE_C89) && defined(__STDC_VERSION__) && \ + __STDC_VERSION__ >= 199901L +#include +#if defined(INTPTR_MAX) /* even in C99 this type is optional */ +#undef LUA_KCONTEXT +#define LUA_KCONTEXT intptr_t +#endif +#endif + + +/* +@@ lua_getlocaledecpoint gets the locale "radix character" (decimal point). +** Change that if you do not want to use C locales. (Code using this +** macro must include header 'locale.h'.) +*/ +#if !defined(lua_getlocaledecpoint) +#define lua_getlocaledecpoint() (localeconv()->decimal_point[0]) +#endif + +/* }================================================================== */ + + +/* +** {================================================================== +** Language Variations +** ===================================================================== +*/ + +/* +@@ LUA_NOCVTN2S/LUA_NOCVTS2N control how Lua performs some +** coercions. Define LUA_NOCVTN2S to turn off automatic coercion from +** numbers to strings. Define LUA_NOCVTS2N to turn off automatic +** coercion from strings to numbers. +*/ +/* #define LUA_NOCVTN2S */ +/* #define LUA_NOCVTS2N */ + + +/* +@@ LUA_USE_APICHECK turns on several consistency checks on the C API. +** Define it as a help when debugging C code. +*/ +#if defined(LUA_USE_APICHECK) +#include +#define luai_apicheck(l,e) assert(e) +#endif + +/* }================================================================== */ + + +/* +** {================================================================== +** Macros that affect the API and must be stable (that is, must be the +** same when you compile Lua and when you compile code that links to +** Lua). You probably do not want/need to change them. +** ===================================================================== +*/ + +/* +@@ LUAI_MAXSTACK limits the size of the Lua stack. +** CHANGE it if you need a different limit. This limit is arbitrary; +** its only purpose is to stop Lua from consuming unlimited stack +** space (and to reserve some numbers for pseudo-indices). +*/ +#if LUAI_BITSINT >= 32 +#define LUAI_MAXSTACK 1000000 +#else +#define LUAI_MAXSTACK 15000 +#endif + + +/* +@@ LUA_EXTRASPACE defines the size of a raw memory area associated with +** a Lua state with very fast access. +** CHANGE it if you need a different size. +*/ +#define LUA_EXTRASPACE (sizeof(void *)) + + +/* +@@ LUA_IDSIZE gives the maximum size for the description of the source +@@ of a function in debug information. +** CHANGE it if you want a different size. +*/ +#define LUA_IDSIZE 60 + + +/* +@@ LUAL_BUFFERSIZE is the buffer size used by the lauxlib buffer system. +** CHANGE it if it uses too much C-stack space. (For long double, +** 'string.format("%.99f", -1e4932)' needs 5034 bytes, so a +** smaller buffer would force a memory allocation for each call to +** 'string.format'.) +*/ +#if LUA_FLOAT_TYPE == LUA_FLOAT_LONGDOUBLE +#define LUAL_BUFFERSIZE 8192 +#else +#define LUAL_BUFFERSIZE ((int)(0x80 * sizeof(void*) * sizeof(lua_Integer))) +#endif + +/* }================================================================== */ + + +/* +@@ LUA_QL describes how error messages quote program elements. +** Lua does not use these macros anymore; they are here for +** compatibility only. +*/ +#define LUA_QL(x) "'" x "'" +#define LUA_QS LUA_QL("%s") + + + + +/* =================================================================== */ + +/* +** Local configuration. You can use this space to add your redefinitions +** without modifying the main part of the file. +*/ + + + + + +#endif + diff --git a/vendor/lua/5.3/include/lualib.h b/vendor/lua/5.3/include/lualib.h new file mode 100644 index 000000000..f5304aa0d --- /dev/null +++ b/vendor/lua/5.3/include/lualib.h @@ -0,0 +1,61 @@ +/* +** $Id: lualib.h,v 1.45.1.1 2017/04/19 17:20:42 roberto Exp $ +** Lua standard libraries +** See Copyright Notice in lua.h +*/ + + +#ifndef lualib_h +#define lualib_h + +#include "lua.h" + + +/* version suffix for environment variable names */ +#define LUA_VERSUFFIX "_" LUA_VERSION_MAJOR "_" LUA_VERSION_MINOR + + +LUAMOD_API int (luaopen_base) (lua_State *L); + +#define LUA_COLIBNAME "coroutine" +LUAMOD_API int (luaopen_coroutine) (lua_State *L); + +#define LUA_TABLIBNAME "table" +LUAMOD_API int (luaopen_table) (lua_State *L); + +#define LUA_IOLIBNAME "io" +LUAMOD_API int (luaopen_io) (lua_State *L); + +#define LUA_OSLIBNAME "os" +LUAMOD_API int (luaopen_os) (lua_State *L); + +#define LUA_STRLIBNAME "string" +LUAMOD_API int (luaopen_string) (lua_State *L); + +#define LUA_UTF8LIBNAME "utf8" +LUAMOD_API int (luaopen_utf8) (lua_State *L); + +#define LUA_BITLIBNAME "bit32" +LUAMOD_API int (luaopen_bit32) (lua_State *L); + +#define LUA_MATHLIBNAME "math" +LUAMOD_API int (luaopen_math) (lua_State *L); + +#define LUA_DBLIBNAME "debug" +LUAMOD_API int (luaopen_debug) (lua_State *L); + +#define LUA_LOADLIBNAME "package" +LUAMOD_API int (luaopen_package) (lua_State *L); + + +/* open all previous libraries */ +LUALIB_API void (luaL_openlibs) (lua_State *L); + + + +#if !defined(lua_assert) +#define lua_assert(x) ((void)0) +#endif + + +#endif diff --git a/vendor/lua/5.3/linux/liblua53.a b/vendor/lua/5.3/linux/liblua53.a new file mode 100644 index 000000000..67b462b1b Binary files /dev/null and b/vendor/lua/5.3/linux/liblua53.a differ diff --git a/vendor/lua/5.3/linux/liblua53.so b/vendor/lua/5.3/linux/liblua53.so new file mode 100644 index 000000000..83c5fbd68 Binary files /dev/null and b/vendor/lua/5.3/linux/liblua53.so differ diff --git a/vendor/lua/5.3/lua.odin b/vendor/lua/5.3/lua.odin new file mode 100644 index 000000000..718d52250 --- /dev/null +++ b/vendor/lua/5.3/lua.odin @@ -0,0 +1,759 @@ +package lua_5_3 + +import "core:intrinsics" +import "core:builtin" + +import c "core:c/libc" + +#assert(size_of(c.int) == size_of(b32)) + +when ODIN_OS == .Windows { + foreign import lib "windows/lua53dll.lib" +} else when ODIN_OS == .Linux { + foreign import lib "linux/liblua53.a" +} else { + foreign import lib "system:liblua53.a" +} + +VERSION_MAJOR :: "5" +VERSION_MINOR :: "3" +VERSION_NUM :: 503 +VERSION_RELEASE :: "6" + +VERSION :: "Lua " + VERSION_MAJOR + "." + VERSION_MINOR +RELEASE :: VERSION + "." + VERSION_RELEASE +COPYRIGHT :: RELEASE + " Copyright (C) 1994-2020 Lua.org, PUC-Rio" +AUTHORS :: "R. Ierusalimschy, L. H. de Figueiredo, W. Celes" + + +/* mark for precompiled code ('Lua') */ +SIGNATURE :: "\x1bLua" + +/* option for multiple returns in 'lua_pcall' and 'lua_call' */ +MULTRET :: -1 + +REGISTRYINDEX :: -MAXSTACK - 1000 + + +/* +@@ LUAI_MAXSTACK limits the size of the Lua stack. +** CHANGE it if you need a different limit. This limit is arbitrary; +** its only purpose is to stop Lua from consuming unlimited stack +** space (and to reserve some numbers for pseudo-indices). +** (It must fit into max(size_t)/32.) +*/ +MAXSTACK :: 1000000 when size_of(rawptr) == 4 else 15000 + + +/* +@@ LUA_EXTRASPACE defines the size of a raw memory area associated with +** a Lua state with very fast access. +** CHANGE it if you need a different size. +*/ +EXTRASPACE :: size_of(rawptr) + + + +/* +@@ LUA_IDSIZE gives the maximum size for the description of the source +@@ of a function in debug information. +** CHANGE it if you want a different size. +*/ +IDSIZE :: 60 + + +/* +@@ LUAL_BUFFERSIZE is the buffer size used by the lauxlib buffer system. +*/ +L_BUFFERSIZE :: c.int(16 * size_of(rawptr) * size_of(Number)) + + +MAXALIGNVAL :: max(align_of(Number), align_of(f64), align_of(rawptr), align_of(Integer), align_of(c.long)) + + +Status :: enum c.int { + OK = 0, + YIELD = 1, + ERRRUN = 2, + ERRSYNTAX = 3, + ERRMEM = 4, + ERRERR = 5, + ERRGCMM = 6, + ERRFILE = 7, +} + +/* thread status */ +OK :: Status.OK +YIELD :: Status.YIELD +ERRRUN :: Status.ERRRUN +ERRSYNTAX :: Status.ERRSYNTAX +ERRMEM :: Status.ERRMEM +ERRERR :: Status.ERRERR +ERRFILE :: Status.ERRFILE + +/* +** basic types +*/ + + +Type :: enum c.int { + NONE = -1, + + NIL = 0, + BOOLEAN = 1, + LIGHTUSERDATA = 2, + NUMBER = 3, + STRING = 4, + TABLE = 5, + FUNCTION = 6, + USERDATA = 7, + THREAD = 8, +} + +TNONE :: Type.NONE +TNIL :: Type.NIL +TBOOLEAN :: Type.BOOLEAN +TLIGHTUSERDATA :: Type.LIGHTUSERDATA +TNUMBER :: Type.NUMBER +TSTRING :: Type.STRING +TTABLE :: Type.TABLE +TFUNCTION :: Type.FUNCTION +TUSERDATA :: Type.USERDATA +TTHREAD :: Type.THREAD +NUMTYPES :: 9 + + + +ArithOp :: enum c.int { + ADD = 0, /* ORDER TM, ORDER OP */ + SUB = 1, + MUL = 2, + MOD = 3, + POW = 4, + DIV = 5, + IDIV = 6, + BAND = 7, + BOR = 8, + BXOR = 9, + SHL = 10, + SHR = 11, + UNM = 12, + BNOT = 13, +} + +CompareOp :: enum c.int { + EQ = 0, + LT = 1, + LE = 2, +} + +OPADD :: ArithOp.ADD +OPSUB :: ArithOp.SUB +OPMUL :: ArithOp.MUL +OPMOD :: ArithOp.MOD +OPPOW :: ArithOp.POW +OPDIV :: ArithOp.DIV +OPIDIV :: ArithOp.IDIV +OPBAND :: ArithOp.BAND +OPBOR :: ArithOp.BOR +OPBXOR :: ArithOp.BXOR +OPSHL :: ArithOp.SHL +OPSHR :: ArithOp.SHR +OPUNM :: ArithOp.UNM +OPBNOT :: ArithOp.BNOT + +OPEQ :: CompareOp.EQ +OPLT :: CompareOp.LT +OPLE :: CompareOp.LE + + +/* minimum Lua stack available to a C function */ +MINSTACK :: 20 + + +/* predefined values in the registry */ +RIDX_MAINTHREAD :: 1 +RIDX_GLOBALS :: 2 +RIDX_LAST :: RIDX_GLOBALS + + +/* type of numbers in Lua */ +Number :: distinct (f32 when size_of(uintptr) == 4 else f64) + + +/* type for integer functions */ +Integer :: distinct (i32 when size_of(uintptr) == 4 else i64) + +/* unsigned integer type */ +Unsigned :: distinct (u32 when size_of(uintptr) == 4 else u64) + +/* type for continuation-function contexts */ +KContext :: distinct int + + +/* +** Type for C functions registered with Lua +*/ +CFunction :: #type proc "c" (L: ^State) -> c.int + +/* +** Type for continuation functions +*/ +KFunction :: #type proc "c" (L: ^State, status: c.int, ctx: KContext) -> c.int + + +/* +** Type for functions that read/write blocks when loading/dumping Lua chunks +*/ +Reader :: #type proc "c" (L: ^State, ud: rawptr, sz: ^c.size_t) -> cstring +Writer :: #type proc "c" (L: ^State, p: rawptr, sz: ^c.size_t, ud: rawptr) -> c.int + + +/* +** Type for memory-allocation functions +*/ +Alloc :: #type proc "c" (ud: rawptr, ptr: rawptr, osize, nsize: c.size_t) -> rawptr + + +GCWhat :: enum c.int { + STOP = 0, + RESTART = 1, + COLLECT = 2, + COUNT = 3, + COUNTB = 4, + STEP = 5, + SETPAUSE = 6, + SETSTEPMUL = 7, + ISRUNNING = 9, +} +GCSTOP :: GCWhat.STOP +GCRESTART :: GCWhat.RESTART +GCCOLLECT :: GCWhat.COLLECT +GCCOUNT :: GCWhat.COUNT +GCCOUNTB :: GCWhat.COUNTB +GCSTEP :: GCWhat.STEP +GCSETPAUSE :: GCWhat.SETPAUSE +GCSETSTEPMUL :: GCWhat.SETSTEPMUL +GCISRUNNING :: GCWhat.ISRUNNING + + + +/* +** Event codes +*/ + +HookEvent :: enum c.int { + CALL = 0, + RET = 1, + LINE = 2, + COUNT = 3, + TAILCALL = 4, +} +HOOKCALL :: HookEvent.CALL +HOOKRET :: HookEvent.RET +HOOKLINE :: HookEvent.LINE +HOOKCOUNT :: HookEvent.COUNT +HOOKTAILCALL :: HookEvent.TAILCALL + + +/* +** Event masks +*/ +HookMask :: distinct bit_set[HookEvent; c.int] +MASKCALL :: HookMask{.CALL} +MASKRET :: HookMask{.RET} +MASKLINE :: HookMask{.LINE} +MASKCOUNT :: HookMask{.COUNT} + +/* activation record */ +Debug :: struct { + event: HookEvent, + name: cstring, /* (n) */ + namewhat: cstring, /* (n) 'global', 'local', 'field', 'method' */ + what: cstring, /* (S) 'Lua', 'C', 'main', 'tail' */ + source: cstring, /* (S) */ + currentline: c.int, /* (l) */ + linedefined: c.int, /* (S) */ + lastlinedefined: c.int, /* (S) */ + nups: u8, /* (u) number of upvalues */ + nparams: u8, /* (u) number of parameters */ + isvararg: bool, /* (u) */ + istailcall: bool, /* (t) */ + short_src: [IDSIZE]u8 `fmt:"s"`, /* (S) */ + /* private part */ + i_ci: rawptr, /* active function */ +} + + +/* Functions to be called by the debugger in specific events */ +Hook :: #type proc "c" (L: ^State, ar: ^Debug) + + +State :: struct {} // opaque data type + + +@(link_prefix="lua_") +@(default_calling_convention="c") +foreign lib { + /* + ** RCS ident string + */ + + ident: [^]u8 // TODO(bill): is this correct? + + + /* + ** state manipulation + */ + + newstate :: proc(f: Alloc, ud: rawptr) -> ^State --- + close :: proc(L: ^State) --- + newthread :: proc(L: ^State) -> ^State --- + + atpanic :: proc(L: ^State, panicf: CFunction) -> CFunction --- + + version :: proc(L: ^State) -> ^Number --- + + + /* + ** basic stack manipulation + */ + + absindex :: proc (L: ^State, idx: c.int) -> c.int --- + gettop :: proc (L: ^State) -> c.int --- + settop :: proc (L: ^State, idx: c.int) --- + pushvalue :: proc (L: ^State, idx: c.int) --- + rotate :: proc (L: ^State, idx: c.int, n: c.int) --- + copy :: proc (L: ^State, fromidx, toidx: c.int) --- + checkstack :: proc (L: ^State, n: c.int) -> c.int --- + + xmove :: proc(from, to: ^State, n: c.int) --- + + + /* + ** access functions (stack -> C) + */ + + isnumber :: proc(L: ^State, idx: c.int) -> b32 --- + isstring :: proc(L: ^State, idx: c.int) -> b32 --- + iscfunction :: proc(L: ^State, idx: c.int) -> b32 --- + isinteger :: proc(L: ^State, idx: c.int) -> b32 --- + isuserdata :: proc(L: ^State, idx: c.int) -> b32 --- + type :: proc(L: ^State, idx: c.int) -> Type --- + typename :: proc(L: ^State, tp: Type) -> cstring --- + + @(link_name="lua_tonumberx") + tonumber :: proc(L: ^State, idx: c.int, isnum: ^b32 = nil) -> Number --- + @(link_name="lua_tointegerx") + tointeger :: proc(L: ^State, idx: c.int, isnum: ^b32 = nil) -> Integer --- + toboolean :: proc(L: ^State, idx: c.int) -> b32 --- + tolstring :: proc(L: ^State, idx: c.int, len: ^c.size_t) -> cstring --- + rawlen :: proc(L: ^State, idx: c.int) -> c.size_t --- + tocfunction :: proc(L: ^State, idx: c.int) -> CFunction --- + touserdata :: proc(L: ^State, idx: c.int) -> rawptr --- + tothread :: proc(L: ^State, idx: c.int) -> ^State --- + topointer :: proc(L: ^State, idx: c.int) -> rawptr --- + + /* + ** Comparison and arithmetic functions + */ + + arith :: proc(L: ^State, op: ArithOp) --- + rawequal :: proc(L: ^State, idx1, idx2: c.int) -> b32 --- + compare :: proc(L: ^State, idx1, idx2: c.int, op: CompareOp) -> b32 --- + + /* + ** push functions (C -> stack) + */ + + pushnil :: proc(L: ^State) --- + pushnumber :: proc(L: ^State, n: Number) --- + pushinteger :: proc(L: ^State, n: Integer) --- + pushlstring :: proc(L: ^State, s: cstring, len: c.size_t) -> cstring --- + pushstring :: proc(L: ^State, s: cstring) -> cstring --- + pushvfstring :: proc(L: ^State, fmt: cstring, argp: c.va_list) -> cstring --- + pushfstring :: proc(L: ^State, fmt: cstring, #c_vararg args: ..any) -> cstring --- + pushcclosure :: proc(L: ^State, fn: CFunction, n: c.int) --- + pushboolean :: proc(L: ^State, b: b32) --- + pushlightuserdata :: proc(L: ^State, p: rawptr) --- + pushthread :: proc(L: ^State) -> Status --- + + /* + ** get functions (Lua -> stack) + */ + + getglobal :: proc(L: ^State, name: cstring) -> c.int --- + gettable :: proc(L: ^State, idx: c.int) -> c.int --- + getfield :: proc(L: ^State, idx: c.int, k: cstring) -> c.int --- + geti :: proc(L: ^State, idx: c.int, n: Integer) -> c.int --- + rawget :: proc(L: ^State, idx: c.int) -> c.int --- + rawgeti :: proc(L: ^State, idx: c.int, n: Integer) -> c.int --- + rawgetp :: proc(L: ^State, idx: c.int, p: rawptr) -> c.int --- + + createtable :: proc(L: ^State, narr, nrec: c.int) --- + newuserdata :: proc(L: ^State, sz: c.size_t) -> rawptr --- + getmetatable :: proc(L: ^State, objindex: c.int) -> c.int --- + getuservalue :: proc(L: ^State, idx: c.int) -> c.int --- + + + /* + ** set functions (stack -> Lua) + */ + + setglobal :: proc(L: ^State, name: cstring) --- + settable :: proc(L: ^State, idx: c.int) --- + setfield :: proc(L: ^State, idx: c.int, k: cstring) --- + seti :: proc(L: ^State, idx: c.int, n: Integer) --- + rawset :: proc(L: ^State, idx: c.int) --- + rawseti :: proc(L: ^State, idx: c.int, n: Integer) --- + rawsetp :: proc(L: ^State, idx: c.int, p: rawptr) --- + setmetatable :: proc(L: ^State, objindex: c.int) -> c.int --- + setuservalue :: proc(L: ^State, idx: c.int) -> c.int --- + + + /* + ** 'load' and 'call' functions (load and run Lua code) + */ + + @(link_name="lua_callk") + call :: proc(L: ^State, nargs, nresults: c.int, + ctx: KContext = 0, k: KFunction = nil) --- + + @(link_name="lua_pcallk") + pcall :: proc(L: ^State, nargs, nresults: c.int, errfunc: c.int, + ctx: KContext = 0, k: KFunction = nil) -> c.int --- + + load :: proc(L: ^State, reader: Reader, dt: rawptr, + chunkname, mode: cstring) -> Status --- + + dump :: proc(L: ^State, writer: Writer, data: rawptr, strip: b32) -> Status --- + + + /* + ** coroutine functions + */ + + @(link_name="lua_yieldk") + yield :: proc(L: ^State, nresults: c.int, ctx: KContext = 0, k: KFunction = nil) -> Status --- + resume :: proc(L: ^State, from: ^State, narg: c.int) -> Status --- + status :: proc(L: ^State) -> Status --- + isyieldable :: proc(L: ^State) -> b32 --- + + + /* + ** garbage-collection function and options + */ + + + + gc :: proc(L: ^State, what: GCWhat, data: c.int) -> c.int --- + + + /* + ** miscellaneous functions + */ + + error :: proc(L: ^State) -> Status --- + + next :: proc(L: ^State, idx: c.int) -> c.int --- + + concat :: proc(L: ^State, n: c.int) --- + len :: proc(L: ^State, idx: c.int) --- + + stringtonumber :: proc(L: ^State, s: cstring) -> c.size_t --- + + getallocf :: proc(L: State, ud: ^rawptr) -> Alloc --- + setallocf :: proc(L: ^State, f: Alloc, ud: rawptr) --- + + /* + ** {====================================================================== + ** Debug API + ** ======================================================================= + */ + + getstack :: proc(L: ^State, level: c.int, ar: ^Debug) -> c.int --- + getinfo :: proc(L: ^State, what: cstring, ar: ^Debug) -> c.int --- + getlocal :: proc(L: ^State, ar: ^Debug, n: c.int) -> cstring --- + setlocal :: proc(L: ^State, ar: ^Debug, n: c.int) -> cstring --- + getupvalue :: proc(L: ^State, funcindex: c.int, n: c.int) -> cstring --- + setupvalue :: proc(L: ^State, funcindex: c.int, n: c.int) -> cstring --- + + upvalueid :: proc(L: ^State, fidx, n: c.int) -> rawptr --- + upvaluejoin :: proc(L: ^State, fidx1, n1, fidx2, n2: c.int) --- + + sethook :: proc(L: ^State, func: Hook, mask: HookMask, count: c.int) --- + gethook :: proc(L: ^State) -> Hook --- + gethookmask :: proc(L: ^State) -> HookMask --- + gethookcount :: proc(L: ^State) -> c.int --- + + /* }============================================================== */ +} + + + +/* version suffix for environment variable names */ +VERSUFFIX :: "_" + VERSION_MAJOR + "_" + VERSION_MINOR + +COLIBNAME :: "coroutine" +TABLIBNAME :: "table" +IOLIBNAME :: "io" +OSLIBNAME :: "os" +STRLIBNAME :: "string" +UTF8LIBNAME :: "utf8" +BITLIBNAME :: "bit32" +MATHLIBNAME :: "math" +DBLIBNAME :: "debug" +LOADLIBNAME :: "package" + +@(link_prefix="lua") +@(default_calling_convention="c") +foreign lib { + open_base :: proc(L: ^State) -> c.int --- + open_coroutine :: proc(L: ^State) -> c.int --- + open_table :: proc(L: ^State) -> c.int --- + open_io :: proc(L: ^State) -> c.int --- + open_os :: proc(L: ^State) -> c.int --- + open_string :: proc(L: ^State) -> c.int --- + open_utf8 :: proc(L: ^State) -> c.int --- + open_bit32 :: proc(L: ^State) -> c.int --- + open_math :: proc(L: ^State) -> c.int --- + open_debug :: proc(L: ^State) -> c.int --- + open_package :: proc(L: ^State) -> c.int --- + + /* open all previous libraries */ + + L_openlibs :: proc(L: ^State) --- +} + + + +GNAME :: "_G" + +/* key, in the registry, for table of loaded modules */ +LOADED_TABLE :: "_LOADED" + + +/* key, in the registry, for table of preloaded loaders */ +PRELOAD_TABLE :: "_PRELOAD" + +L_Reg :: struct { + name: cstring, + func: CFunction, +} + +L_NUMSIZES :: size_of(Integer)*16 + size_of(Number) + + +/* predefined references */ +NOREF :: -2 +REFNIL :: -1 + + +@(link_prefix="lua") +@(default_calling_convention="c") +foreign lib { + @(link_name="luaL_checkversion_") + L_checkversion :: proc(L: ^State, ver: Number = VERSION_NUM, sz: c.size_t = L_NUMSIZES) --- + + + L_getmetafield :: proc(L: ^State, obj: c.int, e: cstring) -> c.int --- + L_callmeta :: proc(L: ^State, obj: c.int, e: cstring) -> c.int --- + @(link_name="luaL_tolstring") + L_tostring :: proc(L: ^State, idx: c.int, len: ^c.size_t = nil) -> cstring --- + L_argerror :: proc(L: ^State, arg: c.int, extramsg: cstring) -> c.int --- + @(link_name="luaL_checklstring") + L_checkstring :: proc(L: ^State, arg: c.int, l: ^c.size_t = nil) -> cstring --- + @(link_name="luaL_optlstring") + L_optstring :: proc(L: ^State, arg: c.int, def: cstring, l: ^c.size_t = nil) -> cstring --- + L_checknumber :: proc(L: ^State, arg: c.int) -> Number --- + L_optnumber :: proc(L: ^State, arg: c.int, def: Number) -> Number --- + + L_checkinteger :: proc(L: ^State, arg: c.int) -> Integer --- + L_optinteger :: proc(L: ^State, arg: c.int, def: Integer) -> Integer --- + + L_checkstack :: proc(L: ^State, sz: c.int, msg: cstring) --- + L_checktype :: proc(L: ^State, arg: c.int, t: c.int) --- + L_checkany :: proc(L: ^State, arg: c.int) --- + + L_newmetatable :: proc(L: ^State, tname: cstring) -> c.int --- + L_setmetatable :: proc(L: ^State, tname: cstring) --- + L_testudata :: proc(L: ^State, ud: c.int, tname: cstring) -> rawptr --- + L_checkudata :: proc(L: ^State, ud: c.int, tname: cstring) -> rawptr --- + + L_where :: proc(L: ^State, lvl: c.int) --- + L_error :: proc(L: ^State, fmt: cstring, #c_vararg args: ..any) -> Status --- + + L_checkoption :: proc(L: ^State, arg: c.int, def: cstring, lst: [^]cstring) -> c.int --- + + L_fileresult :: proc(L: ^State, stat: c.int, fname: cstring) -> c.int --- + L_execresult :: proc(L: ^State, stat: c.int) -> c.int --- + + + L_ref :: proc(L: ^State, t: c.int) -> c.int --- + L_unref :: proc(L: ^State, t: c.int, ref: c.int) --- + + @(link_name="luaL_loadfilex") + L_loadfile :: proc (L: ^State, filename: cstring, mode: cstring = nil) -> Status --- + + @(link_name="luaL_loadbufferx") + L_loadbuffer :: proc(L: ^State, buff: [^]byte, sz: c.size_t, name: cstring, mode: cstring = nil) -> Status --- + L_loadstring :: proc(L: ^State, s: cstring) -> Status --- + + L_newstate :: proc() -> ^State --- + + L_len :: proc(L: ^State, idx: c.int) -> Integer --- + + L_gsub :: proc(L: ^State, s, p, r: cstring) -> cstring --- + + L_setfuncs :: proc(L: ^State, l: [^]L_Reg, nup: c.int) --- + + L_getsubtable :: proc(L: ^State, idx: c.int, fname: cstring) -> c.int --- + + L_traceback :: proc(L: ^State, L1: ^State, msg: cstring, level: c.int) --- + + L_requiref :: proc(L: ^State, modname: cstring, openf: CFunction, glb: c.int) --- + +} +/* +** {====================================================== +** Generic Buffer manipulation +** ======================================================= +*/ + + +L_Buffer :: struct { + b: [^]byte, /* buffer address */ + size: c.size_t, /* buffer size */ + n: c.size_t, /* number of characters in buffer */ + L: ^State, + initb: [L_BUFFERSIZE]byte, /* initial buffer */ +} + +L_addchar :: #force_inline proc "c" (B: ^L_Buffer, c: byte) { + if B.n < B.size { + L_prepbuffsize(B, 1) + } + B.b[B.n] = c + B.n += 1 +} + +L_addsize :: #force_inline proc "c" (B: ^L_Buffer, s: c.size_t) -> c.size_t { + B.n += s + return B.n +} + +L_prepbuffer :: #force_inline proc "c" (B: ^L_Buffer) -> [^]byte { + return L_prepbuffsize(B, c.size_t(L_BUFFERSIZE)) +} + + +@(link_prefix="lua") +@(default_calling_convention="c") +foreign lib { + L_buffinit :: proc(L: ^State, B: ^L_Buffer) --- + L_prepbuffsize :: proc(B: ^L_Buffer, sz: c.size_t) -> [^]byte --- + L_addlstring :: proc(B: ^L_Buffer, s: cstring, l: c.size_t) --- + L_addstring :: proc(B: ^L_Buffer, s: cstring) --- + L_addvalue :: proc(B: ^L_Buffer) --- + L_pushresult :: proc(B: ^L_Buffer) --- + L_pushresultsize :: proc(B: ^L_Buffer, sz: c.size_t) --- + L_buffinitsize :: proc(L: ^State, B: ^L_Buffer, sz: c.size_t) -> [^]byte --- +} + + +/* }====================================================== */ + + + + +/* +** {============================================================== +** some useful macros +** =============================================================== +*/ + +getextraspace :: #force_inline proc "c" (L: ^State) -> rawptr { + return rawptr(([^]byte)(L)[-EXTRASPACE:]) +} +pop :: #force_inline proc "c" (L: ^State, n: c.int) { + settop(L, -n-1) +} +newtable :: #force_inline proc "c" (L: ^State) { + createtable(L, 0, 0) +} +register :: #force_inline proc "c" (L: ^State, n: cstring, f: CFunction) { + pushcfunction(L, f) + setglobal(L, n) +} + +pushcfunction :: #force_inline proc "c" (L: ^State, f: CFunction) { + pushcclosure(L, f, 0) +} + + +isfunction :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .FUNCTION } +istable :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .TABLE } +islightuserdata :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .LIGHTUSERDATA } +isnil :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .NIL } +isboolean :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .BOOLEAN } +isthread :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .THREAD } +isnone :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .NONE } +isnoneornil :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) <= .NIL } + + +pushliteral :: pushstring +pushglobaltable :: #force_inline proc "c" (L: ^State) { + rawgeti(L, REGISTRYINDEX, RIDX_GLOBALS) +} +tostring :: #force_inline proc "c" (L: ^State, i: c.int) -> cstring { + return tolstring(L, i, nil) +} +insert :: #force_inline proc "c" (L: ^State, idx: c.int) { + rotate(L, idx, 1) +} +remove :: #force_inline proc "c" (L: ^State, idx: c.int) { + rotate(L, idx, -1) + pop(L, 1) +} +replace :: #force_inline proc "c" (L: ^State, idx: c.int) { + copy(L, -1, idx) + pop(L, 1) +} + +L_newlibtable :: #force_inline proc "c" (L: ^State, l: []L_Reg) { + createtable(L, 0, c.int(builtin.len(l) - 1)) +} + +L_newlib :: proc(L: ^State, l: []L_Reg) { + L_checkversion(L) + L_newlibtable(L, l) + L_setfuncs(L, raw_data(l), 0) +} + +L_argcheck :: #force_inline proc "c" (L: ^State, cond: bool, arg: c.int, extramsg: cstring) { + if cond { + L_argerror(L, arg, extramsg) + } +} + +L_typename :: #force_inline proc "c" (L: ^State, i: c.int) -> cstring { + return typename(L, type(L, i)) +} +L_dofile :: #force_inline proc "c" (L: ^State, s: cstring) -> c.int { + err := L_loadfile(L, s) + return pcall(L, 0, MULTRET, 0) if err == nil else c.int(err) +} +L_dostring :: #force_inline proc "c" (L: ^State, s: cstring) -> c.int { + err := L_loadstring(L, s) + return pcall(L, 0, MULTRET, 0) if err == nil else c.int(err) +} +L_getmetatable :: #force_inline proc "c" (L: ^State, n: cstring) -> c.int { + return getfield(L, REGISTRYINDEX, n) +} +L_opt :: #force_inline proc "c" (L: ^State, f: $F, n: c.int, d: $T) -> T where intrinsics.type_is_proc(F) { + return d if isnoneornil(L, n) else f(L, n) +} + + + +/* }============================================================== */ diff --git a/vendor/lua/5.3/windows/lua53.dll b/vendor/lua/5.3/windows/lua53.dll new file mode 100644 index 000000000..fca1529ee Binary files /dev/null and b/vendor/lua/5.3/windows/lua53.dll differ diff --git a/vendor/lua/5.3/windows/lua53dll.lib b/vendor/lua/5.3/windows/lua53dll.lib new file mode 100644 index 000000000..5d204d37f Binary files /dev/null and b/vendor/lua/5.3/windows/lua53dll.lib differ diff --git a/vendor/lua/5.4/include/lauxlib.h b/vendor/lua/5.4/include/lauxlib.h new file mode 100644 index 000000000..59fef6af1 --- /dev/null +++ b/vendor/lua/5.4/include/lauxlib.h @@ -0,0 +1,276 @@ +/* +** $Id: lauxlib.h $ +** Auxiliary functions for building Lua libraries +** See Copyright Notice in lua.h +*/ + + +#ifndef lauxlib_h +#define lauxlib_h + + +#include +#include + +#include "lua.h" + + +/* global table */ +#define LUA_GNAME "_G" + + +typedef struct luaL_Buffer luaL_Buffer; + + +/* extra error code for 'luaL_loadfilex' */ +#define LUA_ERRFILE (LUA_ERRERR+1) + + +/* key, in the registry, for table of loaded modules */ +#define LUA_LOADED_TABLE "_LOADED" + + +/* key, in the registry, for table of preloaded loaders */ +#define LUA_PRELOAD_TABLE "_PRELOAD" + + +typedef struct luaL_Reg { + const char *name; + lua_CFunction func; +} luaL_Reg; + + +#define LUAL_NUMSIZES (sizeof(lua_Integer)*16 + sizeof(lua_Number)) + +LUALIB_API void (luaL_checkversion_) (lua_State *L, lua_Number ver, size_t sz); +#define luaL_checkversion(L) \ + luaL_checkversion_(L, LUA_VERSION_NUM, LUAL_NUMSIZES) + +LUALIB_API int (luaL_getmetafield) (lua_State *L, int obj, const char *e); +LUALIB_API int (luaL_callmeta) (lua_State *L, int obj, const char *e); +LUALIB_API const char *(luaL_tolstring) (lua_State *L, int idx, size_t *len); +LUALIB_API int (luaL_argerror) (lua_State *L, int arg, const char *extramsg); +LUALIB_API int (luaL_typeerror) (lua_State *L, int arg, const char *tname); +LUALIB_API const char *(luaL_checklstring) (lua_State *L, int arg, + size_t *l); +LUALIB_API const char *(luaL_optlstring) (lua_State *L, int arg, + const char *def, size_t *l); +LUALIB_API lua_Number (luaL_checknumber) (lua_State *L, int arg); +LUALIB_API lua_Number (luaL_optnumber) (lua_State *L, int arg, lua_Number def); + +LUALIB_API lua_Integer (luaL_checkinteger) (lua_State *L, int arg); +LUALIB_API lua_Integer (luaL_optinteger) (lua_State *L, int arg, + lua_Integer def); + +LUALIB_API void (luaL_checkstack) (lua_State *L, int sz, const char *msg); +LUALIB_API void (luaL_checktype) (lua_State *L, int arg, int t); +LUALIB_API void (luaL_checkany) (lua_State *L, int arg); + +LUALIB_API int (luaL_newmetatable) (lua_State *L, const char *tname); +LUALIB_API void (luaL_setmetatable) (lua_State *L, const char *tname); +LUALIB_API void *(luaL_testudata) (lua_State *L, int ud, const char *tname); +LUALIB_API void *(luaL_checkudata) (lua_State *L, int ud, const char *tname); + +LUALIB_API void (luaL_where) (lua_State *L, int lvl); +LUALIB_API int (luaL_error) (lua_State *L, const char *fmt, ...); + +LUALIB_API int (luaL_checkoption) (lua_State *L, int arg, const char *def, + const char *const lst[]); + +LUALIB_API int (luaL_fileresult) (lua_State *L, int stat, const char *fname); +LUALIB_API int (luaL_execresult) (lua_State *L, int stat); + + +/* predefined references */ +#define LUA_NOREF (-2) +#define LUA_REFNIL (-1) + +LUALIB_API int (luaL_ref) (lua_State *L, int t); +LUALIB_API void (luaL_unref) (lua_State *L, int t, int ref); + +LUALIB_API int (luaL_loadfilex) (lua_State *L, const char *filename, + const char *mode); + +#define luaL_loadfile(L,f) luaL_loadfilex(L,f,NULL) + +LUALIB_API int (luaL_loadbufferx) (lua_State *L, const char *buff, size_t sz, + const char *name, const char *mode); +LUALIB_API int (luaL_loadstring) (lua_State *L, const char *s); + +LUALIB_API lua_State *(luaL_newstate) (void); + +LUALIB_API lua_Integer (luaL_len) (lua_State *L, int idx); + +LUALIB_API void luaL_addgsub (luaL_Buffer *b, const char *s, + const char *p, const char *r); +LUALIB_API const char *(luaL_gsub) (lua_State *L, const char *s, + const char *p, const char *r); + +LUALIB_API void (luaL_setfuncs) (lua_State *L, const luaL_Reg *l, int nup); + +LUALIB_API int (luaL_getsubtable) (lua_State *L, int idx, const char *fname); + +LUALIB_API void (luaL_traceback) (lua_State *L, lua_State *L1, + const char *msg, int level); + +LUALIB_API void (luaL_requiref) (lua_State *L, const char *modname, + lua_CFunction openf, int glb); + +/* +** =============================================================== +** some useful macros +** =============================================================== +*/ + + +#define luaL_newlibtable(L,l) \ + lua_createtable(L, 0, sizeof(l)/sizeof((l)[0]) - 1) + +#define luaL_newlib(L,l) \ + (luaL_checkversion(L), luaL_newlibtable(L,l), luaL_setfuncs(L,l,0)) + +#define luaL_argcheck(L, cond,arg,extramsg) \ + ((void)((cond) || luaL_argerror(L, (arg), (extramsg)))) + +#define luaL_argexpected(L,cond,arg,tname) \ + ((void)((cond) || luaL_typeerror(L, (arg), (tname)))) + +#define luaL_checkstring(L,n) (luaL_checklstring(L, (n), NULL)) +#define luaL_optstring(L,n,d) (luaL_optlstring(L, (n), (d), NULL)) + +#define luaL_typename(L,i) lua_typename(L, lua_type(L,(i))) + +#define luaL_dofile(L, fn) \ + (luaL_loadfile(L, fn) || lua_pcall(L, 0, LUA_MULTRET, 0)) + +#define luaL_dostring(L, s) \ + (luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0)) + +#define luaL_getmetatable(L,n) (lua_getfield(L, LUA_REGISTRYINDEX, (n))) + +#define luaL_opt(L,f,n,d) (lua_isnoneornil(L,(n)) ? (d) : f(L,(n))) + +#define luaL_loadbuffer(L,s,sz,n) luaL_loadbufferx(L,s,sz,n,NULL) + + +/* push the value used to represent failure/error */ +#define luaL_pushfail(L) lua_pushnil(L) + + +/* +** {====================================================== +** Generic Buffer manipulation +** ======================================================= +*/ + +struct luaL_Buffer { + char *b; /* buffer address */ + size_t size; /* buffer size */ + size_t n; /* number of characters in buffer */ + lua_State *L; + union { + LUAI_MAXALIGN; /* ensure maximum alignment for buffer */ + char b[LUAL_BUFFERSIZE]; /* initial buffer */ + } init; +}; + + +#define luaL_bufflen(bf) ((bf)->n) +#define luaL_buffaddr(bf) ((bf)->b) + + +#define luaL_addchar(B,c) \ + ((void)((B)->n < (B)->size || luaL_prepbuffsize((B), 1)), \ + ((B)->b[(B)->n++] = (c))) + +#define luaL_addsize(B,s) ((B)->n += (s)) + +#define luaL_buffsub(B,s) ((B)->n -= (s)) + +LUALIB_API void (luaL_buffinit) (lua_State *L, luaL_Buffer *B); +LUALIB_API char *(luaL_prepbuffsize) (luaL_Buffer *B, size_t sz); +LUALIB_API void (luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l); +LUALIB_API void (luaL_addstring) (luaL_Buffer *B, const char *s); +LUALIB_API void (luaL_addvalue) (luaL_Buffer *B); +LUALIB_API void (luaL_pushresult) (luaL_Buffer *B); +LUALIB_API void (luaL_pushresultsize) (luaL_Buffer *B, size_t sz); +LUALIB_API char *(luaL_buffinitsize) (lua_State *L, luaL_Buffer *B, size_t sz); + +#define luaL_prepbuffer(B) luaL_prepbuffsize(B, LUAL_BUFFERSIZE) + +/* }====================================================== */ + + + +/* +** {====================================================== +** File handles for IO library +** ======================================================= +*/ + +/* +** A file handle is a userdata with metatable 'LUA_FILEHANDLE' and +** initial structure 'luaL_Stream' (it may contain other fields +** after that initial structure). +*/ + +#define LUA_FILEHANDLE "FILE*" + + +typedef struct luaL_Stream { + FILE *f; /* stream (NULL for incompletely created streams) */ + lua_CFunction closef; /* to close stream (NULL for closed streams) */ +} luaL_Stream; + +/* }====================================================== */ + +/* +** {================================================================== +** "Abstraction Layer" for basic report of messages and errors +** =================================================================== +*/ + +/* print a string */ +#if !defined(lua_writestring) +#define lua_writestring(s,l) fwrite((s), sizeof(char), (l), stdout) +#endif + +/* print a newline and flush the output */ +#if !defined(lua_writeline) +#define lua_writeline() (lua_writestring("\n", 1), fflush(stdout)) +#endif + +/* print an error message */ +#if !defined(lua_writestringerror) +#define lua_writestringerror(s,p) \ + (fprintf(stderr, (s), (p)), fflush(stderr)) +#endif + +/* }================================================================== */ + + +/* +** {============================================================ +** Compatibility with deprecated conversions +** ============================================================= +*/ +#if defined(LUA_COMPAT_APIINTCASTS) + +#define luaL_checkunsigned(L,a) ((lua_Unsigned)luaL_checkinteger(L,a)) +#define luaL_optunsigned(L,a,d) \ + ((lua_Unsigned)luaL_optinteger(L,a,(lua_Integer)(d))) + +#define luaL_checkint(L,n) ((int)luaL_checkinteger(L, (n))) +#define luaL_optint(L,n,d) ((int)luaL_optinteger(L, (n), (d))) + +#define luaL_checklong(L,n) ((long)luaL_checkinteger(L, (n))) +#define luaL_optlong(L,n,d) ((long)luaL_optinteger(L, (n), (d))) + +#endif +/* }============================================================ */ + + + +#endif + + diff --git a/vendor/lua/5.4/include/lua.h b/vendor/lua/5.4/include/lua.h new file mode 100644 index 000000000..c9d64d7f2 --- /dev/null +++ b/vendor/lua/5.4/include/lua.h @@ -0,0 +1,517 @@ +/* +** $Id: lua.h $ +** Lua - A Scripting Language +** Lua.org, PUC-Rio, Brazil (http://www.lua.org) +** See Copyright Notice at the end of this file +*/ + + +#ifndef lua_h +#define lua_h + +#include +#include + + +#include "luaconf.h" + + +#define LUA_VERSION_MAJOR "5" +#define LUA_VERSION_MINOR "4" +#define LUA_VERSION_RELEASE "2" + +#define LUA_VERSION_NUM 504 +#define LUA_VERSION_RELEASE_NUM (LUA_VERSION_NUM * 100 + 0) + +#define LUA_VERSION "Lua " LUA_VERSION_MAJOR "." LUA_VERSION_MINOR +#define LUA_RELEASE LUA_VERSION "." LUA_VERSION_RELEASE +#define LUA_COPYRIGHT LUA_RELEASE " Copyright (C) 1994-2020 Lua.org, PUC-Rio" +#define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo, W. Celes" + + +/* mark for precompiled code ('Lua') */ +#define LUA_SIGNATURE "\x1bLua" + +/* option for multiple returns in 'lua_pcall' and 'lua_call' */ +#define LUA_MULTRET (-1) + + +/* +** Pseudo-indices +** (-LUAI_MAXSTACK is the minimum valid index; we keep some free empty +** space after that to help overflow detection) +*/ +#define LUA_REGISTRYINDEX (-LUAI_MAXSTACK - 1000) +#define lua_upvalueindex(i) (LUA_REGISTRYINDEX - (i)) + + +/* thread status */ +#define LUA_OK 0 +#define LUA_YIELD 1 +#define LUA_ERRRUN 2 +#define LUA_ERRSYNTAX 3 +#define LUA_ERRMEM 4 +#define LUA_ERRERR 5 + + +typedef struct lua_State lua_State; + + +/* +** basic types +*/ +#define LUA_TNONE (-1) + +#define LUA_TNIL 0 +#define LUA_TBOOLEAN 1 +#define LUA_TLIGHTUSERDATA 2 +#define LUA_TNUMBER 3 +#define LUA_TSTRING 4 +#define LUA_TTABLE 5 +#define LUA_TFUNCTION 6 +#define LUA_TUSERDATA 7 +#define LUA_TTHREAD 8 + +#define LUA_NUMTYPES 9 + + + +/* minimum Lua stack available to a C function */ +#define LUA_MINSTACK 20 + + +/* predefined values in the registry */ +#define LUA_RIDX_MAINTHREAD 1 +#define LUA_RIDX_GLOBALS 2 +#define LUA_RIDX_LAST LUA_RIDX_GLOBALS + + +/* type of numbers in Lua */ +typedef LUA_NUMBER lua_Number; + + +/* type for integer functions */ +typedef LUA_INTEGER lua_Integer; + +/* unsigned integer type */ +typedef LUA_UNSIGNED lua_Unsigned; + +/* type for continuation-function contexts */ +typedef LUA_KCONTEXT lua_KContext; + + +/* +** Type for C functions registered with Lua +*/ +typedef int (*lua_CFunction) (lua_State *L); + +/* +** Type for continuation functions +*/ +typedef int (*lua_KFunction) (lua_State *L, int status, lua_KContext ctx); + + +/* +** Type for functions that read/write blocks when loading/dumping Lua chunks +*/ +typedef const char * (*lua_Reader) (lua_State *L, void *ud, size_t *sz); + +typedef int (*lua_Writer) (lua_State *L, const void *p, size_t sz, void *ud); + + +/* +** Type for memory-allocation functions +*/ +typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize); + + +/* +** Type for warning functions +*/ +typedef void (*lua_WarnFunction) (void *ud, const char *msg, int tocont); + + + + +/* +** generic extra include file +*/ +#if defined(LUA_USER_H) +#include LUA_USER_H +#endif + + +/* +** RCS ident string +*/ +extern const char lua_ident[]; + + +/* +** state manipulation +*/ +LUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud); +LUA_API void (lua_close) (lua_State *L); +LUA_API lua_State *(lua_newthread) (lua_State *L); +LUA_API int (lua_resetthread) (lua_State *L); + +LUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf); + + +LUA_API lua_Number (lua_version) (lua_State *L); + + +/* +** basic stack manipulation +*/ +LUA_API int (lua_absindex) (lua_State *L, int idx); +LUA_API int (lua_gettop) (lua_State *L); +LUA_API void (lua_settop) (lua_State *L, int idx); +LUA_API void (lua_pushvalue) (lua_State *L, int idx); +LUA_API void (lua_rotate) (lua_State *L, int idx, int n); +LUA_API void (lua_copy) (lua_State *L, int fromidx, int toidx); +LUA_API int (lua_checkstack) (lua_State *L, int n); + +LUA_API void (lua_xmove) (lua_State *from, lua_State *to, int n); + + +/* +** access functions (stack -> C) +*/ + +LUA_API int (lua_isnumber) (lua_State *L, int idx); +LUA_API int (lua_isstring) (lua_State *L, int idx); +LUA_API int (lua_iscfunction) (lua_State *L, int idx); +LUA_API int (lua_isinteger) (lua_State *L, int idx); +LUA_API int (lua_isuserdata) (lua_State *L, int idx); +LUA_API int (lua_type) (lua_State *L, int idx); +LUA_API const char *(lua_typename) (lua_State *L, int tp); + +LUA_API lua_Number (lua_tonumberx) (lua_State *L, int idx, int *isnum); +LUA_API lua_Integer (lua_tointegerx) (lua_State *L, int idx, int *isnum); +LUA_API int (lua_toboolean) (lua_State *L, int idx); +LUA_API const char *(lua_tolstring) (lua_State *L, int idx, size_t *len); +LUA_API lua_Unsigned (lua_rawlen) (lua_State *L, int idx); +LUA_API lua_CFunction (lua_tocfunction) (lua_State *L, int idx); +LUA_API void *(lua_touserdata) (lua_State *L, int idx); +LUA_API lua_State *(lua_tothread) (lua_State *L, int idx); +LUA_API const void *(lua_topointer) (lua_State *L, int idx); + + +/* +** Comparison and arithmetic functions +*/ + +#define LUA_OPADD 0 /* ORDER TM, ORDER OP */ +#define LUA_OPSUB 1 +#define LUA_OPMUL 2 +#define LUA_OPMOD 3 +#define LUA_OPPOW 4 +#define LUA_OPDIV 5 +#define LUA_OPIDIV 6 +#define LUA_OPBAND 7 +#define LUA_OPBOR 8 +#define LUA_OPBXOR 9 +#define LUA_OPSHL 10 +#define LUA_OPSHR 11 +#define LUA_OPUNM 12 +#define LUA_OPBNOT 13 + +LUA_API void (lua_arith) (lua_State *L, int op); + +#define LUA_OPEQ 0 +#define LUA_OPLT 1 +#define LUA_OPLE 2 + +LUA_API int (lua_rawequal) (lua_State *L, int idx1, int idx2); +LUA_API int (lua_compare) (lua_State *L, int idx1, int idx2, int op); + + +/* +** push functions (C -> stack) +*/ +LUA_API void (lua_pushnil) (lua_State *L); +LUA_API void (lua_pushnumber) (lua_State *L, lua_Number n); +LUA_API void (lua_pushinteger) (lua_State *L, lua_Integer n); +LUA_API const char *(lua_pushlstring) (lua_State *L, const char *s, size_t len); +LUA_API const char *(lua_pushstring) (lua_State *L, const char *s); +LUA_API const char *(lua_pushvfstring) (lua_State *L, const char *fmt, + va_list argp); +LUA_API const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...); +LUA_API void (lua_pushcclosure) (lua_State *L, lua_CFunction fn, int n); +LUA_API void (lua_pushboolean) (lua_State *L, int b); +LUA_API void (lua_pushlightuserdata) (lua_State *L, void *p); +LUA_API int (lua_pushthread) (lua_State *L); + + +/* +** get functions (Lua -> stack) +*/ +LUA_API int (lua_getglobal) (lua_State *L, const char *name); +LUA_API int (lua_gettable) (lua_State *L, int idx); +LUA_API int (lua_getfield) (lua_State *L, int idx, const char *k); +LUA_API int (lua_geti) (lua_State *L, int idx, lua_Integer n); +LUA_API int (lua_rawget) (lua_State *L, int idx); +LUA_API int (lua_rawgeti) (lua_State *L, int idx, lua_Integer n); +LUA_API int (lua_rawgetp) (lua_State *L, int idx, const void *p); + +LUA_API void (lua_createtable) (lua_State *L, int narr, int nrec); +LUA_API void *(lua_newuserdatauv) (lua_State *L, size_t sz, int nuvalue); +LUA_API int (lua_getmetatable) (lua_State *L, int objindex); +LUA_API int (lua_getiuservalue) (lua_State *L, int idx, int n); + + +/* +** set functions (stack -> Lua) +*/ +LUA_API void (lua_setglobal) (lua_State *L, const char *name); +LUA_API void (lua_settable) (lua_State *L, int idx); +LUA_API void (lua_setfield) (lua_State *L, int idx, const char *k); +LUA_API void (lua_seti) (lua_State *L, int idx, lua_Integer n); +LUA_API void (lua_rawset) (lua_State *L, int idx); +LUA_API void (lua_rawseti) (lua_State *L, int idx, lua_Integer n); +LUA_API void (lua_rawsetp) (lua_State *L, int idx, const void *p); +LUA_API int (lua_setmetatable) (lua_State *L, int objindex); +LUA_API int (lua_setiuservalue) (lua_State *L, int idx, int n); + + +/* +** 'load' and 'call' functions (load and run Lua code) +*/ +LUA_API void (lua_callk) (lua_State *L, int nargs, int nresults, + lua_KContext ctx, lua_KFunction k); +#define lua_call(L,n,r) lua_callk(L, (n), (r), 0, NULL) + +LUA_API int (lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc, + lua_KContext ctx, lua_KFunction k); +#define lua_pcall(L,n,r,f) lua_pcallk(L, (n), (r), (f), 0, NULL) + +LUA_API int (lua_load) (lua_State *L, lua_Reader reader, void *dt, + const char *chunkname, const char *mode); + +LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data, int strip); + + +/* +** coroutine functions +*/ +LUA_API int (lua_yieldk) (lua_State *L, int nresults, lua_KContext ctx, + lua_KFunction k); +LUA_API int (lua_resume) (lua_State *L, lua_State *from, int narg, + int *nres); +LUA_API int (lua_status) (lua_State *L); +LUA_API int (lua_isyieldable) (lua_State *L); + +#define lua_yield(L,n) lua_yieldk(L, (n), 0, NULL) + + +/* +** Warning-related functions +*/ +LUA_API void (lua_setwarnf) (lua_State *L, lua_WarnFunction f, void *ud); +LUA_API void (lua_warning) (lua_State *L, const char *msg, int tocont); + + +/* +** garbage-collection function and options +*/ + +#define LUA_GCSTOP 0 +#define LUA_GCRESTART 1 +#define LUA_GCCOLLECT 2 +#define LUA_GCCOUNT 3 +#define LUA_GCCOUNTB 4 +#define LUA_GCSTEP 5 +#define LUA_GCSETPAUSE 6 +#define LUA_GCSETSTEPMUL 7 +#define LUA_GCISRUNNING 9 +#define LUA_GCGEN 10 +#define LUA_GCINC 11 + +LUA_API int (lua_gc) (lua_State *L, int what, ...); + + +/* +** miscellaneous functions +*/ + +LUA_API int (lua_error) (lua_State *L); + +LUA_API int (lua_next) (lua_State *L, int idx); + +LUA_API void (lua_concat) (lua_State *L, int n); +LUA_API void (lua_len) (lua_State *L, int idx); + +LUA_API size_t (lua_stringtonumber) (lua_State *L, const char *s); + +LUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud); +LUA_API void (lua_setallocf) (lua_State *L, lua_Alloc f, void *ud); + +LUA_API void (lua_toclose) (lua_State *L, int idx); + + +/* +** {============================================================== +** some useful macros +** =============================================================== +*/ + +#define lua_getextraspace(L) ((void *)((char *)(L) - LUA_EXTRASPACE)) + +#define lua_tonumber(L,i) lua_tonumberx(L,(i),NULL) +#define lua_tointeger(L,i) lua_tointegerx(L,(i),NULL) + +#define lua_pop(L,n) lua_settop(L, -(n)-1) + +#define lua_newtable(L) lua_createtable(L, 0, 0) + +#define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n))) + +#define lua_pushcfunction(L,f) lua_pushcclosure(L, (f), 0) + +#define lua_isfunction(L,n) (lua_type(L, (n)) == LUA_TFUNCTION) +#define lua_istable(L,n) (lua_type(L, (n)) == LUA_TTABLE) +#define lua_islightuserdata(L,n) (lua_type(L, (n)) == LUA_TLIGHTUSERDATA) +#define lua_isnil(L,n) (lua_type(L, (n)) == LUA_TNIL) +#define lua_isboolean(L,n) (lua_type(L, (n)) == LUA_TBOOLEAN) +#define lua_isthread(L,n) (lua_type(L, (n)) == LUA_TTHREAD) +#define lua_isnone(L,n) (lua_type(L, (n)) == LUA_TNONE) +#define lua_isnoneornil(L, n) (lua_type(L, (n)) <= 0) + +#define lua_pushliteral(L, s) lua_pushstring(L, "" s) + +#define lua_pushglobaltable(L) \ + ((void)lua_rawgeti(L, LUA_REGISTRYINDEX, LUA_RIDX_GLOBALS)) + +#define lua_tostring(L,i) lua_tolstring(L, (i), NULL) + + +#define lua_insert(L,idx) lua_rotate(L, (idx), 1) + +#define lua_remove(L,idx) (lua_rotate(L, (idx), -1), lua_pop(L, 1)) + +#define lua_replace(L,idx) (lua_copy(L, -1, (idx)), lua_pop(L, 1)) + +/* }============================================================== */ + + +/* +** {============================================================== +** compatibility macros +** =============================================================== +*/ +#if defined(LUA_COMPAT_APIINTCASTS) + +#define lua_pushunsigned(L,n) lua_pushinteger(L, (lua_Integer)(n)) +#define lua_tounsignedx(L,i,is) ((lua_Unsigned)lua_tointegerx(L,i,is)) +#define lua_tounsigned(L,i) lua_tounsignedx(L,(i),NULL) + +#endif + +#define lua_newuserdata(L,s) lua_newuserdatauv(L,s,1) +#define lua_getuservalue(L,idx) lua_getiuservalue(L,idx,1) +#define lua_setuservalue(L,idx) lua_setiuservalue(L,idx,1) + +#define LUA_NUMTAGS LUA_NUMTYPES + +/* }============================================================== */ + +/* +** {====================================================================== +** Debug API +** ======================================================================= +*/ + + +/* +** Event codes +*/ +#define LUA_HOOKCALL 0 +#define LUA_HOOKRET 1 +#define LUA_HOOKLINE 2 +#define LUA_HOOKCOUNT 3 +#define LUA_HOOKTAILCALL 4 + + +/* +** Event masks +*/ +#define LUA_MASKCALL (1 << LUA_HOOKCALL) +#define LUA_MASKRET (1 << LUA_HOOKRET) +#define LUA_MASKLINE (1 << LUA_HOOKLINE) +#define LUA_MASKCOUNT (1 << LUA_HOOKCOUNT) + +typedef struct lua_Debug lua_Debug; /* activation record */ + + +/* Functions to be called by the debugger in specific events */ +typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar); + + +LUA_API int (lua_getstack) (lua_State *L, int level, lua_Debug *ar); +LUA_API int (lua_getinfo) (lua_State *L, const char *what, lua_Debug *ar); +LUA_API const char *(lua_getlocal) (lua_State *L, const lua_Debug *ar, int n); +LUA_API const char *(lua_setlocal) (lua_State *L, const lua_Debug *ar, int n); +LUA_API const char *(lua_getupvalue) (lua_State *L, int funcindex, int n); +LUA_API const char *(lua_setupvalue) (lua_State *L, int funcindex, int n); + +LUA_API void *(lua_upvalueid) (lua_State *L, int fidx, int n); +LUA_API void (lua_upvaluejoin) (lua_State *L, int fidx1, int n1, + int fidx2, int n2); + +LUA_API void (lua_sethook) (lua_State *L, lua_Hook func, int mask, int count); +LUA_API lua_Hook (lua_gethook) (lua_State *L); +LUA_API int (lua_gethookmask) (lua_State *L); +LUA_API int (lua_gethookcount) (lua_State *L); + +LUA_API int (lua_setcstacklimit) (lua_State *L, unsigned int limit); + +struct lua_Debug { + int event; + const char *name; /* (n) */ + const char *namewhat; /* (n) 'global', 'local', 'field', 'method' */ + const char *what; /* (S) 'Lua', 'C', 'main', 'tail' */ + const char *source; /* (S) */ + size_t srclen; /* (S) */ + int currentline; /* (l) */ + int linedefined; /* (S) */ + int lastlinedefined; /* (S) */ + unsigned char nups; /* (u) number of upvalues */ + unsigned char nparams;/* (u) number of parameters */ + char isvararg; /* (u) */ + char istailcall; /* (t) */ + unsigned short ftransfer; /* (r) index of first value transferred */ + unsigned short ntransfer; /* (r) number of transferred values */ + char short_src[LUA_IDSIZE]; /* (S) */ + /* private part */ + struct CallInfo *i_ci; /* active function */ +}; + +/* }====================================================================== */ + + +/****************************************************************************** +* Copyright (C) 1994-2020 Lua.org, PUC-Rio. +* +* Permission is hereby granted, free of charge, to any person obtaining +* a copy of this software and associated documentation files (the +* "Software"), to deal in the Software without restriction, including +* without limitation the rights to use, copy, modify, merge, publish, +* distribute, sublicense, and/or sell copies of the Software, and to +* permit persons to whom the Software is furnished to do so, subject to +* the following conditions: +* +* The above copyright notice and this permission notice shall be +* included in all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +******************************************************************************/ + + +#endif diff --git a/vendor/lua/5.4/include/lua.hpp b/vendor/lua/5.4/include/lua.hpp new file mode 100644 index 000000000..ec417f594 --- /dev/null +++ b/vendor/lua/5.4/include/lua.hpp @@ -0,0 +1,9 @@ +// lua.hpp +// Lua header files for C++ +// <> not supplied automatically because Lua also compiles as C++ + +extern "C" { +#include "lua.h" +#include "lualib.h" +#include "lauxlib.h" +} diff --git a/vendor/lua/5.4/include/luaconf.h b/vendor/lua/5.4/include/luaconf.h new file mode 100644 index 000000000..3ad294e4f --- /dev/null +++ b/vendor/lua/5.4/include/luaconf.h @@ -0,0 +1,763 @@ +/* +** $Id: luaconf.h $ +** Configuration file for Lua +** See Copyright Notice in lua.h +*/ + + +#ifndef luaconf_h +#define luaconf_h + +#include +#include + + +/* +** =================================================================== +** General Configuration File for Lua +** +** Some definitions here can be changed externally, through the +** compiler (e.g., with '-D' options). Those are protected by +** '#if !defined' guards. However, several other definitions should +** be changed directly here, either because they affect the Lua +** ABI (by making the changes here, you ensure that all software +** connected to Lua, such as C libraries, will be compiled with the +** same configuration); or because they are seldom changed. +** +** Search for "@@" to find all configurable definitions. +** =================================================================== +*/ + + +/* +** {==================================================================== +** System Configuration: macros to adapt (if needed) Lua to some +** particular platform, for instance restricting it to C89. +** ===================================================================== +*/ + +/* +@@ LUA_USE_C89 controls the use of non-ISO-C89 features. +** Define it if you want Lua to avoid the use of a few C99 features +** or Windows-specific features on Windows. +*/ +/* #define LUA_USE_C89 */ + + +/* +** By default, Lua on Windows use (some) specific Windows features +*/ +#if !defined(LUA_USE_C89) && defined(_WIN32) && !defined(_WIN32_WCE) +#define LUA_USE_WINDOWS /* enable goodies for regular Windows */ +#endif + + +#if defined(LUA_USE_WINDOWS) +#define LUA_DL_DLL /* enable support for DLL */ +#define LUA_USE_C89 /* broadly, Windows is C89 */ +#endif + + +#if defined(LUA_USE_LINUX) +#define LUA_USE_POSIX +#define LUA_USE_DLOPEN /* needs an extra library: -ldl */ +#endif + + +#if defined(LUA_USE_MACOSX) +#define LUA_USE_POSIX +#define LUA_USE_DLOPEN /* MacOS does not need -ldl */ +#endif + + +/* +@@ LUAI_IS32INT is true iff 'int' has (at least) 32 bits. +*/ +#define LUAI_IS32INT ((UINT_MAX >> 30) >= 3) + +/* }================================================================== */ + + + +/* +** {================================================================== +** Configuration for Number types. +** =================================================================== +*/ + +/* +@@ LUA_32BITS enables Lua with 32-bit integers and 32-bit floats. +*/ +/* #define LUA_32BITS */ + + +/* +@@ LUA_C89_NUMBERS ensures that Lua uses the largest types available for +** C89 ('long' and 'double'); Windows always has '__int64', so it does +** not need to use this case. +*/ +#if defined(LUA_USE_C89) && !defined(LUA_USE_WINDOWS) +#define LUA_C89_NUMBERS +#endif + + +/* +@@ LUA_INT_TYPE defines the type for Lua integers. +@@ LUA_FLOAT_TYPE defines the type for Lua floats. +** Lua should work fine with any mix of these options supported +** by your C compiler. The usual configurations are 64-bit integers +** and 'double' (the default), 32-bit integers and 'float' (for +** restricted platforms), and 'long'/'double' (for C compilers not +** compliant with C99, which may not have support for 'long long'). +*/ + +/* predefined options for LUA_INT_TYPE */ +#define LUA_INT_INT 1 +#define LUA_INT_LONG 2 +#define LUA_INT_LONGLONG 3 + +/* predefined options for LUA_FLOAT_TYPE */ +#define LUA_FLOAT_FLOAT 1 +#define LUA_FLOAT_DOUBLE 2 +#define LUA_FLOAT_LONGDOUBLE 3 + +#if defined(LUA_32BITS) /* { */ +/* +** 32-bit integers and 'float' +*/ +#if LUAI_IS32INT /* use 'int' if big enough */ +#define LUA_INT_TYPE LUA_INT_INT +#else /* otherwise use 'long' */ +#define LUA_INT_TYPE LUA_INT_LONG +#endif +#define LUA_FLOAT_TYPE LUA_FLOAT_FLOAT + +#elif defined(LUA_C89_NUMBERS) /* }{ */ +/* +** largest types available for C89 ('long' and 'double') +*/ +#define LUA_INT_TYPE LUA_INT_LONG +#define LUA_FLOAT_TYPE LUA_FLOAT_DOUBLE + +#endif /* } */ + + +/* +** default configuration for 64-bit Lua ('long long' and 'double') +*/ +#if !defined(LUA_INT_TYPE) +#define LUA_INT_TYPE LUA_INT_LONGLONG +#endif + +#if !defined(LUA_FLOAT_TYPE) +#define LUA_FLOAT_TYPE LUA_FLOAT_DOUBLE +#endif + +/* }================================================================== */ + + + +/* +** {================================================================== +** Configuration for Paths. +** =================================================================== +*/ + +/* +** LUA_PATH_SEP is the character that separates templates in a path. +** LUA_PATH_MARK is the string that marks the substitution points in a +** template. +** LUA_EXEC_DIR in a Windows path is replaced by the executable's +** directory. +*/ +#define LUA_PATH_SEP ";" +#define LUA_PATH_MARK "?" +#define LUA_EXEC_DIR "!" + + +/* +@@ LUA_PATH_DEFAULT is the default path that Lua uses to look for +** Lua libraries. +@@ LUA_CPATH_DEFAULT is the default path that Lua uses to look for +** C libraries. +** CHANGE them if your machine has a non-conventional directory +** hierarchy or if you want to install your libraries in +** non-conventional directories. +*/ + +#define LUA_VDIR LUA_VERSION_MAJOR "." LUA_VERSION_MINOR +#if defined(_WIN32) /* { */ +/* +** In Windows, any exclamation mark ('!') in the path is replaced by the +** path of the directory of the executable file of the current process. +*/ +#define LUA_LDIR "!\\lua\\" +#define LUA_CDIR "!\\" +#define LUA_SHRDIR "!\\..\\share\\lua\\" LUA_VDIR "\\" + +#if !defined(LUA_PATH_DEFAULT) +#define LUA_PATH_DEFAULT \ + LUA_LDIR"?.lua;" LUA_LDIR"?\\init.lua;" \ + LUA_CDIR"?.lua;" LUA_CDIR"?\\init.lua;" \ + LUA_SHRDIR"?.lua;" LUA_SHRDIR"?\\init.lua;" \ + ".\\?.lua;" ".\\?\\init.lua" +#endif + +#if !defined(LUA_CPATH_DEFAULT) +#define LUA_CPATH_DEFAULT \ + LUA_CDIR"?.dll;" \ + LUA_CDIR"..\\lib\\lua\\" LUA_VDIR "\\?.dll;" \ + LUA_CDIR"loadall.dll;" ".\\?.dll;" \ + LUA_CDIR"?54.dll;" ".\\?54.dll" +#endif + +#else /* }{ */ + +#define LUA_ROOT "/usr/local/" +#define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR "/" +#define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR "/" + +#if !defined(LUA_PATH_DEFAULT) +#define LUA_PATH_DEFAULT \ + LUA_LDIR"?.lua;" LUA_LDIR"?/init.lua;" \ + LUA_CDIR"?.lua;" LUA_CDIR"?/init.lua;" \ + "./?.lua;" "./?/init.lua" +#endif + +#if !defined(LUA_CPATH_DEFAULT) +#define LUA_CPATH_DEFAULT \ + LUA_CDIR"?.so;" LUA_CDIR"loadall.so;" "./?.so;" \ + LUA_CDIR"lib?54.so;" "./lib?54.so" +#endif + +#endif /* } */ + + +/* +@@ LUA_DIRSEP is the directory separator (for submodules). +** CHANGE it if your machine does not use "/" as the directory separator +** and is not Windows. (On Windows Lua automatically uses "\".) +*/ +#if !defined(LUA_DIRSEP) + +#if defined(_WIN32) +#define LUA_DIRSEP "\\" +#else +#define LUA_DIRSEP "/" +#endif + +#endif + +/* }================================================================== */ + + +/* +** {================================================================== +** Marks for exported symbols in the C code +** =================================================================== +*/ + +/* +@@ LUA_API is a mark for all core API functions. +@@ LUALIB_API is a mark for all auxiliary library functions. +@@ LUAMOD_API is a mark for all standard library opening functions. +** CHANGE them if you need to define those functions in some special way. +** For instance, if you want to create one Windows DLL with the core and +** the libraries, you may want to use the following definition (define +** LUA_BUILD_AS_DLL to get it). +*/ +#if defined(LUA_BUILD_AS_DLL) /* { */ + +#if defined(LUA_CORE) || defined(LUA_LIB) /* { */ +#define LUA_API __declspec(dllexport) +#else /* }{ */ +#define LUA_API __declspec(dllimport) +#endif /* } */ + +#else /* }{ */ + +#define LUA_API extern + +#endif /* } */ + + +/* +** More often than not the libs go together with the core. +*/ +#define LUALIB_API LUA_API +#define LUAMOD_API LUA_API + + +/* +@@ LUAI_FUNC is a mark for all extern functions that are not to be +** exported to outside modules. +@@ LUAI_DDEF and LUAI_DDEC are marks for all extern (const) variables, +** none of which to be exported to outside modules (LUAI_DDEF for +** definitions and LUAI_DDEC for declarations). +** CHANGE them if you need to mark them in some special way. Elf/gcc +** (versions 3.2 and later) mark them as "hidden" to optimize access +** when Lua is compiled as a shared library. Not all elf targets support +** this attribute. Unfortunately, gcc does not offer a way to check +** whether the target offers that support, and those without support +** give a warning about it. To avoid these warnings, change to the +** default definition. +*/ +#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 302) && \ + defined(__ELF__) /* { */ +#define LUAI_FUNC __attribute__((visibility("internal"))) extern +#else /* }{ */ +#define LUAI_FUNC extern +#endif /* } */ + +#define LUAI_DDEC(dec) LUAI_FUNC dec +#define LUAI_DDEF /* empty */ + +/* }================================================================== */ + + +/* +** {================================================================== +** Compatibility with previous versions +** =================================================================== +*/ + +/* +@@ LUA_COMPAT_5_3 controls other macros for compatibility with Lua 5.3. +** You can define it to get all options, or change specific options +** to fit your specific needs. +*/ +#if defined(LUA_COMPAT_5_3) /* { */ + +/* +@@ LUA_COMPAT_MATHLIB controls the presence of several deprecated +** functions in the mathematical library. +** (These functions were already officially removed in 5.3; +** nevertheless they are still available here.) +*/ +#define LUA_COMPAT_MATHLIB + +/* +@@ LUA_COMPAT_APIINTCASTS controls the presence of macros for +** manipulating other integer types (lua_pushunsigned, lua_tounsigned, +** luaL_checkint, luaL_checklong, etc.) +** (These macros were also officially removed in 5.3, but they are still +** available here.) +*/ +#define LUA_COMPAT_APIINTCASTS + + +/* +@@ LUA_COMPAT_LT_LE controls the emulation of the '__le' metamethod +** using '__lt'. +*/ +#define LUA_COMPAT_LT_LE + + +/* +@@ The following macros supply trivial compatibility for some +** changes in the API. The macros themselves document how to +** change your code to avoid using them. +** (Once more, these macros were officially removed in 5.3, but they are +** still available here.) +*/ +#define lua_strlen(L,i) lua_rawlen(L, (i)) + +#define lua_objlen(L,i) lua_rawlen(L, (i)) + +#define lua_equal(L,idx1,idx2) lua_compare(L,(idx1),(idx2),LUA_OPEQ) +#define lua_lessthan(L,idx1,idx2) lua_compare(L,(idx1),(idx2),LUA_OPLT) + +#endif /* } */ + +/* }================================================================== */ + + + +/* +** {================================================================== +** Configuration for Numbers. +** Change these definitions if no predefined LUA_FLOAT_* / LUA_INT_* +** satisfy your needs. +** =================================================================== +*/ + +/* +@@ LUA_NUMBER is the floating-point type used by Lua. +@@ LUAI_UACNUMBER is the result of a 'default argument promotion' +@@ over a floating number. +@@ l_floatatt(x) corrects float attribute 'x' to the proper float type +** by prefixing it with one of FLT/DBL/LDBL. +@@ LUA_NUMBER_FRMLEN is the length modifier for writing floats. +@@ LUA_NUMBER_FMT is the format for writing floats. +@@ lua_number2str converts a float to a string. +@@ l_mathop allows the addition of an 'l' or 'f' to all math operations. +@@ l_floor takes the floor of a float. +@@ lua_str2number converts a decimal numeral to a number. +*/ + + +/* The following definitions are good for most cases here */ + +#define l_floor(x) (l_mathop(floor)(x)) + +#define lua_number2str(s,sz,n) \ + l_sprintf((s), sz, LUA_NUMBER_FMT, (LUAI_UACNUMBER)(n)) + +/* +@@ lua_numbertointeger converts a float number with an integral value +** to an integer, or returns 0 if float is not within the range of +** a lua_Integer. (The range comparisons are tricky because of +** rounding. The tests here assume a two-complement representation, +** where MININTEGER always has an exact representation as a float; +** MAXINTEGER may not have one, and therefore its conversion to float +** may have an ill-defined value.) +*/ +#define lua_numbertointeger(n,p) \ + ((n) >= (LUA_NUMBER)(LUA_MININTEGER) && \ + (n) < -(LUA_NUMBER)(LUA_MININTEGER) && \ + (*(p) = (LUA_INTEGER)(n), 1)) + + +/* now the variable definitions */ + +#if LUA_FLOAT_TYPE == LUA_FLOAT_FLOAT /* { single float */ + +#define LUA_NUMBER float + +#define l_floatatt(n) (FLT_##n) + +#define LUAI_UACNUMBER double + +#define LUA_NUMBER_FRMLEN "" +#define LUA_NUMBER_FMT "%.7g" + +#define l_mathop(op) op##f + +#define lua_str2number(s,p) strtof((s), (p)) + + +#elif LUA_FLOAT_TYPE == LUA_FLOAT_LONGDOUBLE /* }{ long double */ + +#define LUA_NUMBER long double + +#define l_floatatt(n) (LDBL_##n) + +#define LUAI_UACNUMBER long double + +#define LUA_NUMBER_FRMLEN "L" +#define LUA_NUMBER_FMT "%.19Lg" + +#define l_mathop(op) op##l + +#define lua_str2number(s,p) strtold((s), (p)) + +#elif LUA_FLOAT_TYPE == LUA_FLOAT_DOUBLE /* }{ double */ + +#define LUA_NUMBER double + +#define l_floatatt(n) (DBL_##n) + +#define LUAI_UACNUMBER double + +#define LUA_NUMBER_FRMLEN "" +#define LUA_NUMBER_FMT "%.14g" + +#define l_mathop(op) op + +#define lua_str2number(s,p) strtod((s), (p)) + +#else /* }{ */ + +#error "numeric float type not defined" + +#endif /* } */ + + + +/* +@@ LUA_INTEGER is the integer type used by Lua. +** +@@ LUA_UNSIGNED is the unsigned version of LUA_INTEGER. +** +@@ LUAI_UACINT is the result of a 'default argument promotion' +@@ over a LUA_INTEGER. +@@ LUA_INTEGER_FRMLEN is the length modifier for reading/writing integers. +@@ LUA_INTEGER_FMT is the format for writing integers. +@@ LUA_MAXINTEGER is the maximum value for a LUA_INTEGER. +@@ LUA_MININTEGER is the minimum value for a LUA_INTEGER. +@@ LUA_MAXUNSIGNED is the maximum value for a LUA_UNSIGNED. +@@ LUA_UNSIGNEDBITS is the number of bits in a LUA_UNSIGNED. +@@ lua_integer2str converts an integer to a string. +*/ + + +/* The following definitions are good for most cases here */ + +#define LUA_INTEGER_FMT "%" LUA_INTEGER_FRMLEN "d" + +#define LUAI_UACINT LUA_INTEGER + +#define lua_integer2str(s,sz,n) \ + l_sprintf((s), sz, LUA_INTEGER_FMT, (LUAI_UACINT)(n)) + +/* +** use LUAI_UACINT here to avoid problems with promotions (which +** can turn a comparison between unsigneds into a signed comparison) +*/ +#define LUA_UNSIGNED unsigned LUAI_UACINT + + +#define LUA_UNSIGNEDBITS (sizeof(LUA_UNSIGNED) * CHAR_BIT) + + +/* now the variable definitions */ + +#if LUA_INT_TYPE == LUA_INT_INT /* { int */ + +#define LUA_INTEGER int +#define LUA_INTEGER_FRMLEN "" + +#define LUA_MAXINTEGER INT_MAX +#define LUA_MININTEGER INT_MIN + +#define LUA_MAXUNSIGNED UINT_MAX + +#elif LUA_INT_TYPE == LUA_INT_LONG /* }{ long */ + +#define LUA_INTEGER long +#define LUA_INTEGER_FRMLEN "l" + +#define LUA_MAXINTEGER LONG_MAX +#define LUA_MININTEGER LONG_MIN + +#define LUA_MAXUNSIGNED ULONG_MAX + +#elif LUA_INT_TYPE == LUA_INT_LONGLONG /* }{ long long */ + +/* use presence of macro LLONG_MAX as proxy for C99 compliance */ +#if defined(LLONG_MAX) /* { */ +/* use ISO C99 stuff */ + +#define LUA_INTEGER long long +#define LUA_INTEGER_FRMLEN "ll" + +#define LUA_MAXINTEGER LLONG_MAX +#define LUA_MININTEGER LLONG_MIN + +#define LUA_MAXUNSIGNED ULLONG_MAX + +#elif defined(LUA_USE_WINDOWS) /* }{ */ +/* in Windows, can use specific Windows types */ + +#define LUA_INTEGER __int64 +#define LUA_INTEGER_FRMLEN "I64" + +#define LUA_MAXINTEGER _I64_MAX +#define LUA_MININTEGER _I64_MIN + +#define LUA_MAXUNSIGNED _UI64_MAX + +#else /* }{ */ + +#error "Compiler does not support 'long long'. Use option '-DLUA_32BITS' \ + or '-DLUA_C89_NUMBERS' (see file 'luaconf.h' for details)" + +#endif /* } */ + +#else /* }{ */ + +#error "numeric integer type not defined" + +#endif /* } */ + +/* }================================================================== */ + + +/* +** {================================================================== +** Dependencies with C99 and other C details +** =================================================================== +*/ + +/* +@@ l_sprintf is equivalent to 'snprintf' or 'sprintf' in C89. +** (All uses in Lua have only one format item.) +*/ +#if !defined(LUA_USE_C89) +#define l_sprintf(s,sz,f,i) snprintf(s,sz,f,i) +#else +#define l_sprintf(s,sz,f,i) ((void)(sz), sprintf(s,f,i)) +#endif + + +/* +@@ lua_strx2number converts a hexadecimal numeral to a number. +** In C99, 'strtod' does that conversion. Otherwise, you can +** leave 'lua_strx2number' undefined and Lua will provide its own +** implementation. +*/ +#if !defined(LUA_USE_C89) +#define lua_strx2number(s,p) lua_str2number(s,p) +#endif + + +/* +@@ lua_pointer2str converts a pointer to a readable string in a +** non-specified way. +*/ +#define lua_pointer2str(buff,sz,p) l_sprintf(buff,sz,"%p",p) + + +/* +@@ lua_number2strx converts a float to a hexadecimal numeral. +** In C99, 'sprintf' (with format specifiers '%a'/'%A') does that. +** Otherwise, you can leave 'lua_number2strx' undefined and Lua will +** provide its own implementation. +*/ +#if !defined(LUA_USE_C89) +#define lua_number2strx(L,b,sz,f,n) \ + ((void)L, l_sprintf(b,sz,f,(LUAI_UACNUMBER)(n))) +#endif + + +/* +** 'strtof' and 'opf' variants for math functions are not valid in +** C89. Otherwise, the macro 'HUGE_VALF' is a good proxy for testing the +** availability of these variants. ('math.h' is already included in +** all files that use these macros.) +*/ +#if defined(LUA_USE_C89) || (defined(HUGE_VAL) && !defined(HUGE_VALF)) +#undef l_mathop /* variants not available */ +#undef lua_str2number +#define l_mathop(op) (lua_Number)op /* no variant */ +#define lua_str2number(s,p) ((lua_Number)strtod((s), (p))) +#endif + + +/* +@@ LUA_KCONTEXT is the type of the context ('ctx') for continuation +** functions. It must be a numerical type; Lua will use 'intptr_t' if +** available, otherwise it will use 'ptrdiff_t' (the nearest thing to +** 'intptr_t' in C89) +*/ +#define LUA_KCONTEXT ptrdiff_t + +#if !defined(LUA_USE_C89) && defined(__STDC_VERSION__) && \ + __STDC_VERSION__ >= 199901L +#include +#if defined(INTPTR_MAX) /* even in C99 this type is optional */ +#undef LUA_KCONTEXT +#define LUA_KCONTEXT intptr_t +#endif +#endif + + +/* +@@ lua_getlocaledecpoint gets the locale "radix character" (decimal point). +** Change that if you do not want to use C locales. (Code using this +** macro must include the header 'locale.h'.) +*/ +#if !defined(lua_getlocaledecpoint) +#define lua_getlocaledecpoint() (localeconv()->decimal_point[0]) +#endif + +/* }================================================================== */ + + +/* +** {================================================================== +** Language Variations +** ===================================================================== +*/ + +/* +@@ LUA_NOCVTN2S/LUA_NOCVTS2N control how Lua performs some +** coercions. Define LUA_NOCVTN2S to turn off automatic coercion from +** numbers to strings. Define LUA_NOCVTS2N to turn off automatic +** coercion from strings to numbers. +*/ +/* #define LUA_NOCVTN2S */ +/* #define LUA_NOCVTS2N */ + + +/* +@@ LUA_USE_APICHECK turns on several consistency checks on the C API. +** Define it as a help when debugging C code. +*/ +#if defined(LUA_USE_APICHECK) +#include +#define luai_apicheck(l,e) assert(e) +#endif + +/* }================================================================== */ + + +/* +** {================================================================== +** Macros that affect the API and must be stable (that is, must be the +** same when you compile Lua and when you compile code that links to +** Lua). +** ===================================================================== +*/ + +/* +@@ LUAI_MAXSTACK limits the size of the Lua stack. +** CHANGE it if you need a different limit. This limit is arbitrary; +** its only purpose is to stop Lua from consuming unlimited stack +** space (and to reserve some numbers for pseudo-indices). +** (It must fit into max(size_t)/32.) +*/ +#if LUAI_IS32INT +#define LUAI_MAXSTACK 1000000 +#else +#define LUAI_MAXSTACK 15000 +#endif + + +/* +@@ LUA_EXTRASPACE defines the size of a raw memory area associated with +** a Lua state with very fast access. +** CHANGE it if you need a different size. +*/ +#define LUA_EXTRASPACE (sizeof(void *)) + + +/* +@@ LUA_IDSIZE gives the maximum size for the description of the source +@@ of a function in debug information. +** CHANGE it if you want a different size. +*/ +#define LUA_IDSIZE 60 + + +/* +@@ LUAL_BUFFERSIZE is the buffer size used by the lauxlib buffer system. +*/ +#define LUAL_BUFFERSIZE ((int)(16 * sizeof(void*) * sizeof(lua_Number))) + + +/* +@@ LUAI_MAXALIGN defines fields that, when used in a union, ensure +** maximum alignment for the other items in that union. +*/ +#define LUAI_MAXALIGN lua_Number n; double u; void *s; lua_Integer i; long l + +/* }================================================================== */ + + + + + +/* =================================================================== */ + +/* +** Local configuration. You can use this space to add your redefinitions +** without modifying the main part of the file. +*/ + + + + + +#endif + diff --git a/vendor/lua/5.4/include/lualib.h b/vendor/lua/5.4/include/lualib.h new file mode 100644 index 000000000..eb08b530a --- /dev/null +++ b/vendor/lua/5.4/include/lualib.h @@ -0,0 +1,58 @@ +/* +** $Id: lualib.h $ +** Lua standard libraries +** See Copyright Notice in lua.h +*/ + + +#ifndef lualib_h +#define lualib_h + +#include "lua.h" + + +/* version suffix for environment variable names */ +#define LUA_VERSUFFIX "_" LUA_VERSION_MAJOR "_" LUA_VERSION_MINOR + + +LUAMOD_API int (luaopen_base) (lua_State *L); + +#define LUA_COLIBNAME "coroutine" +LUAMOD_API int (luaopen_coroutine) (lua_State *L); + +#define LUA_TABLIBNAME "table" +LUAMOD_API int (luaopen_table) (lua_State *L); + +#define LUA_IOLIBNAME "io" +LUAMOD_API int (luaopen_io) (lua_State *L); + +#define LUA_OSLIBNAME "os" +LUAMOD_API int (luaopen_os) (lua_State *L); + +#define LUA_STRLIBNAME "string" +LUAMOD_API int (luaopen_string) (lua_State *L); + +#define LUA_UTF8LIBNAME "utf8" +LUAMOD_API int (luaopen_utf8) (lua_State *L); + +#define LUA_MATHLIBNAME "math" +LUAMOD_API int (luaopen_math) (lua_State *L); + +#define LUA_DBLIBNAME "debug" +LUAMOD_API int (luaopen_debug) (lua_State *L); + +#define LUA_LOADLIBNAME "package" +LUAMOD_API int (luaopen_package) (lua_State *L); + + +/* open all previous libraries */ +LUALIB_API void (luaL_openlibs) (lua_State *L); + + + +#if !defined(lua_assert) +#define lua_assert(x) ((void)0) +#endif + + +#endif diff --git a/vendor/lua/5.4/linux/liblua54.a b/vendor/lua/5.4/linux/liblua54.a new file mode 100644 index 000000000..479aa3322 Binary files /dev/null and b/vendor/lua/5.4/linux/liblua54.a differ diff --git a/vendor/lua/5.4/linux/liblua54.so b/vendor/lua/5.4/linux/liblua54.so new file mode 100644 index 000000000..d7a0cf075 Binary files /dev/null and b/vendor/lua/5.4/linux/liblua54.so differ diff --git a/vendor/lua/5.4/lua.odin b/vendor/lua/5.4/lua.odin new file mode 100644 index 000000000..06199dee7 --- /dev/null +++ b/vendor/lua/5.4/lua.odin @@ -0,0 +1,826 @@ +package lua_5_4 + +import "core:intrinsics" +import "core:builtin" + +import c "core:c/libc" + +#assert(size_of(c.int) == size_of(b32)) + +when ODIN_OS == .Windows { + foreign import lib "windows/lua54dll.lib" +} else when ODIN_OS == .Linux { + foreign import lib "linux/liblua54.a" +} else { + foreign import lib "system:liblua54.a" +} + +VERSION_MAJOR :: "5" +VERSION_MINOR :: "4" +VERSION_RELEASE :: "2" + +VERSION_NUM :: 504 +VERSION_RELEASE_NUM :: VERSION_NUM * 100 + 0 + +VERSION :: "Lua " + VERSION_MAJOR + "." + VERSION_MINOR +RELEASE :: VERSION + "." + VERSION_RELEASE +COPYRIGHT :: RELEASE + " Copyright (C) 1994-2020 Lua.org, PUC-Rio" +AUTHORS :: "R. Ierusalimschy, L. H. de Figueiredo, W. Celes" + + +/* mark for precompiled code ('Lua') */ +SIGNATURE :: "\x1bLua" + +/* option for multiple returns in 'lua_pcall' and 'lua_call' */ +MULTRET :: -1 + +REGISTRYINDEX :: -MAXSTACK - 1000 + + +/* +@@ LUAI_MAXSTACK limits the size of the Lua stack. +** CHANGE it if you need a different limit. This limit is arbitrary; +** its only purpose is to stop Lua from consuming unlimited stack +** space (and to reserve some numbers for pseudo-indices). +** (It must fit into max(size_t)/32.) +*/ +MAXSTACK :: 1000000 when size_of(rawptr) == 4 else 15000 + + +/* +@@ LUA_EXTRASPACE defines the size of a raw memory area associated with +** a Lua state with very fast access. +** CHANGE it if you need a different size. +*/ +EXTRASPACE :: size_of(rawptr) + + + +/* +@@ LUA_IDSIZE gives the maximum size for the description of the source +@@ of a function in debug information. +** CHANGE it if you want a different size. +*/ +IDSIZE :: 60 + + +/* +@@ LUAL_BUFFERSIZE is the buffer size used by the lauxlib buffer system. +*/ +L_BUFFERSIZE :: c.int(16 * size_of(rawptr) * size_of(Number)) + + +MAXALIGNVAL :: max(align_of(Number), align_of(f64), align_of(rawptr), align_of(Integer), align_of(c.long)) + + +Status :: enum c.int { + OK = 0, + YIELD = 1, + ERRRUN = 2, + ERRSYNTAX = 3, + ERRMEM = 4, + ERRERR = 5, + ERRFILE = 6, +} + +/* thread status */ +OK :: Status.OK +YIELD :: Status.YIELD +ERRRUN :: Status.ERRRUN +ERRSYNTAX :: Status.ERRSYNTAX +ERRMEM :: Status.ERRMEM +ERRERR :: Status.ERRERR +ERRFILE :: Status.ERRFILE + +/* +** basic types +*/ + + +Type :: enum c.int { + NONE = -1, + + NIL = 0, + BOOLEAN = 1, + LIGHTUSERDATA = 2, + NUMBER = 3, + STRING = 4, + TABLE = 5, + FUNCTION = 6, + USERDATA = 7, + THREAD = 8, +} + +TNONE :: Type.NONE +TNIL :: Type.NIL +TBOOLEAN :: Type.BOOLEAN +TLIGHTUSERDATA :: Type.LIGHTUSERDATA +TNUMBER :: Type.NUMBER +TSTRING :: Type.STRING +TTABLE :: Type.TABLE +TFUNCTION :: Type.FUNCTION +TUSERDATA :: Type.USERDATA +TTHREAD :: Type.THREAD +NUMTYPES :: 9 + + + +ArithOp :: enum c.int { + ADD = 0, /* ORDER TM, ORDER OP */ + SUB = 1, + MUL = 2, + MOD = 3, + POW = 4, + DIV = 5, + IDIV = 6, + BAND = 7, + BOR = 8, + BXOR = 9, + SHL = 10, + SHR = 11, + UNM = 12, + BNOT = 13, +} + +CompareOp :: enum c.int { + EQ = 0, + LT = 1, + LE = 2, +} + +OPADD :: ArithOp.ADD +OPSUB :: ArithOp.SUB +OPMUL :: ArithOp.MUL +OPMOD :: ArithOp.MOD +OPPOW :: ArithOp.POW +OPDIV :: ArithOp.DIV +OPIDIV :: ArithOp.IDIV +OPBAND :: ArithOp.BAND +OPBOR :: ArithOp.BOR +OPBXOR :: ArithOp.BXOR +OPSHL :: ArithOp.SHL +OPSHR :: ArithOp.SHR +OPUNM :: ArithOp.UNM +OPBNOT :: ArithOp.BNOT + +OPEQ :: CompareOp.EQ +OPLT :: CompareOp.LT +OPLE :: CompareOp.LE + + +/* minimum Lua stack available to a C function */ +MINSTACK :: 20 + + +/* predefined values in the registry */ +RIDX_MAINTHREAD :: 1 +RIDX_GLOBALS :: 2 +RIDX_LAST :: RIDX_GLOBALS + + +/* type of numbers in Lua */ +Number :: distinct (f32 when size_of(uintptr) == 4 else f64) + + +/* type for integer functions */ +Integer :: distinct (i32 when size_of(uintptr) == 4 else i64) + +/* unsigned integer type */ +Unsigned :: distinct (u32 when size_of(uintptr) == 4 else u64) + +/* type for continuation-function contexts */ +KContext :: distinct int + + +/* +** Type for C functions registered with Lua +*/ +CFunction :: #type proc "c" (L: ^State) -> c.int + +/* +** Type for continuation functions +*/ +KFunction :: #type proc "c" (L: ^State, status: c.int, ctx: KContext) -> c.int + + +/* +** Type for functions that read/write blocks when loading/dumping Lua chunks +*/ +Reader :: #type proc "c" (L: ^State, ud: rawptr, sz: ^c.size_t) -> cstring +Writer :: #type proc "c" (L: ^State, p: rawptr, sz: ^c.size_t, ud: rawptr) -> c.int + + +/* +** Type for memory-allocation functions +*/ +Alloc :: #type proc "c" (ud: rawptr, ptr: rawptr, osize, nsize: c.size_t) -> rawptr + + +/* +** Type for warning functions +*/ +WarnFunction :: #type proc "c" (ud: rawptr, msg: rawptr, tocont: c.int) + +GCWhat :: enum c.int { + STOP = 0, + RESTART = 1, + COLLECT = 2, + COUNT = 3, + COUNTB = 4, + STEP = 5, + SETPAUSE = 6, + SETSTEPMUL = 7, + ISRUNNING = 9, + GEN = 10, + INC = 11, +} +GCSTOP :: GCWhat.STOP +GCRESTART :: GCWhat.RESTART +GCCOLLECT :: GCWhat.COLLECT +GCCOUNT :: GCWhat.COUNT +GCCOUNTB :: GCWhat.COUNTB +GCSTEP :: GCWhat.STEP +GCSETPAUSE :: GCWhat.SETPAUSE +GCSETSTEPMUL :: GCWhat.SETSTEPMUL +GCISRUNNING :: GCWhat.ISRUNNING +GCGEN :: GCWhat.GEN +GCINC :: GCWhat.INC + + + +/* +** Event codes +*/ + +HookEvent :: enum c.int { + CALL = 0, + RET = 1, + LINE = 2, + COUNT = 3, + TAILCALL = 4, +} +HOOKCALL :: HookEvent.CALL +HOOKRET :: HookEvent.RET +HOOKLINE :: HookEvent.LINE +HOOKCOUNT :: HookEvent.COUNT +HOOKTAILCALL :: HookEvent.TAILCALL + + +/* +** Event masks +*/ +HookMask :: distinct bit_set[HookEvent; c.int] +MASKCALL :: HookMask{.CALL} +MASKRET :: HookMask{.RET} +MASKLINE :: HookMask{.LINE} +MASKCOUNT :: HookMask{.COUNT} + +/* activation record */ +Debug :: struct { + event: HookEvent, + name: cstring, /* (n) */ + namewhat: cstring, /* (n) 'global', 'local', 'field', 'method' */ + what: cstring, /* (S) 'Lua', 'C', 'main', 'tail' */ + source: cstring, /* (S) */ + srclen: c.size_t, /* (S) */ + currentline: c.int, /* (l) */ + linedefined: c.int, /* (S) */ + lastlinedefined: c.int, /* (S) */ + nups: u8, /* (u) number of upvalues */ + nparams: u8, /* (u) number of parameters */ + isvararg: bool, /* (u) */ + istailcall: bool, /* (t) */ + ftransfer: u16, /* (r) index of first value transferred */ + ntransfer: u16, /* (r) number of transferred values */ + short_src: [IDSIZE]u8 `fmt:"s"`, /* (S) */ + /* private part */ + i_ci: rawptr, /* active function */ +} + + +/* Functions to be called by the debugger in specific events */ +Hook :: #type proc "c" (L: ^State, ar: ^Debug) + + +State :: struct {} // opaque data type + + +@(link_prefix="lua_") +@(default_calling_convention="c") +foreign lib { + /* + ** RCS ident string + */ + + ident: [^]u8 // TODO(bill): is this correct? + + + /* + ** state manipulation + */ + + newstate :: proc(f: Alloc, ud: rawptr) -> ^State --- + close :: proc(L: ^State) --- + newthread :: proc(L: ^State) -> ^State --- + resetthread :: proc(L: ^State) -> Status --- + + atpanic :: proc(L: ^State, panicf: CFunction) -> CFunction --- + + version :: proc(L: ^State) -> Number --- + + + /* + ** basic stack manipulation + */ + + absindex :: proc (L: ^State, idx: c.int) -> c.int --- + gettop :: proc (L: ^State) -> c.int --- + settop :: proc (L: ^State, idx: c.int) --- + pushvalue :: proc (L: ^State, idx: c.int) --- + rotate :: proc (L: ^State, idx: c.int, n: c.int) --- + copy :: proc (L: ^State, fromidx, toidx: c.int) --- + checkstack :: proc (L: ^State, n: c.int) -> c.int --- + + xmove :: proc(from, to: ^State, n: c.int) --- + + + /* + ** access functions (stack -> C) + */ + + isnumber :: proc(L: ^State, idx: c.int) -> b32 --- + isstring :: proc(L: ^State, idx: c.int) -> b32 --- + iscfunction :: proc(L: ^State, idx: c.int) -> b32 --- + isinteger :: proc(L: ^State, idx: c.int) -> b32 --- + isuserdata :: proc(L: ^State, idx: c.int) -> b32 --- + type :: proc(L: ^State, idx: c.int) -> Type --- + typename :: proc(L: ^State, tp: Type) -> cstring --- + + @(link_name="lua_tonumberx") + tonumber :: proc(L: ^State, idx: c.int, isnum: ^b32 = nil) -> Number --- + @(link_name="lua_tointegerx") + tointeger :: proc(L: ^State, idx: c.int, isnum: ^b32 = nil) -> Integer --- + toboolean :: proc(L: ^State, idx: c.int) -> b32 --- + tolstring :: proc(L: ^State, idx: c.int, len: ^c.size_t) -> cstring --- + rawlen :: proc(L: ^State, idx: c.int) -> Unsigned --- + tocfunction :: proc(L: ^State, idx: c.int) -> CFunction --- + touserdata :: proc(L: ^State, idx: c.int) -> rawptr --- + tothread :: proc(L: ^State, idx: c.int) -> ^State --- + topointer :: proc(L: ^State, idx: c.int) -> rawptr --- + + /* + ** Comparison and arithmetic functions + */ + + arith :: proc(L: ^State, op: ArithOp) --- + rawequal :: proc(L: ^State, idx1, idx2: c.int) -> b32 --- + compare :: proc(L: ^State, idx1, idx2: c.int, op: CompareOp) -> b32 --- + + /* + ** push functions (C -> stack) + */ + + pushnil :: proc(L: ^State) --- + pushnumber :: proc(L: ^State, n: Number) --- + pushinteger :: proc(L: ^State, n: Integer) --- + pushlstring :: proc(L: ^State, s: cstring, len: c.size_t) -> cstring --- + pushstring :: proc(L: ^State, s: cstring) -> cstring --- + pushvfstring :: proc(L: ^State, fmt: cstring, argp: c.va_list) -> cstring --- + pushfstring :: proc(L: ^State, fmt: cstring, #c_vararg args: ..any) -> cstring --- + pushcclosure :: proc(L: ^State, fn: CFunction, n: c.int) --- + pushboolean :: proc(L: ^State, b: b32) --- + pushlightuserdata :: proc(L: ^State, p: rawptr) --- + pushthread :: proc(L: ^State) -> Status --- + + /* + ** get functions (Lua -> stack) + */ + + getglobal :: proc(L: ^State, name: cstring) -> c.int --- + gettable :: proc(L: ^State, idx: c.int) -> c.int --- + getfield :: proc(L: ^State, idx: c.int, k: cstring) -> c.int --- + geti :: proc(L: ^State, idx: c.int, n: Integer) -> c.int --- + rawget :: proc(L: ^State, idx: c.int) -> c.int --- + rawgeti :: proc(L: ^State, idx: c.int, n: Integer) -> c.int --- + rawgetp :: proc(L: ^State, idx: c.int, p: rawptr) -> c.int --- + + createtable :: proc(L: ^State, narr, nrec: c.int) --- + newuserdatauv :: proc(L: ^State, sz: c.size_t, nuvalue: c.int) -> rawptr --- + getmetatable :: proc(L: ^State, objindex: c.int) -> c.int --- + getiuservalue :: proc(L: ^State, idx: c.int, n: c.int) -> c.int --- + + + /* + ** set functions (stack -> Lua) + */ + + setglobal :: proc(L: ^State, name: cstring) --- + settable :: proc(L: ^State, idx: c.int) --- + setfield :: proc(L: ^State, idx: c.int, k: cstring) --- + seti :: proc(L: ^State, idx: c.int, n: Integer) --- + rawset :: proc(L: ^State, idx: c.int) --- + rawseti :: proc(L: ^State, idx: c.int, n: Integer) --- + rawsetp :: proc(L: ^State, idx: c.int, p: rawptr) --- + setmetatable :: proc(L: ^State, objindex: c.int) -> c.int --- + setiuservalue :: proc(L: ^State, idx: c.int, n: c.int) -> c.int --- + + + /* + ** 'load' and 'call' functions (load and run Lua code) + */ + + @(link_name="lua_callk") + call :: proc(L: ^State, nargs, nresults: c.int, + ctx: KContext = 0, k: KFunction = nil) --- + + @(link_name="lua_pcallk") + pcall :: proc(L: ^State, nargs, nresults: c.int, errfunc: c.int, + ctx: KContext = 0, k: KFunction = nil) -> c.int --- + + load :: proc(L: ^State, reader: Reader, dt: rawptr, + chunkname, mode: cstring) -> Status --- + + dump :: proc(L: ^State, writer: Writer, data: rawptr, strip: b32) -> Status --- + + + /* + ** coroutine functions + */ + + @(link_name="lua_yieldk") + yield :: proc(L: ^State, nresults: c.int, ctx: KContext = 0, k: KFunction = nil) -> Status --- + resume :: proc(L: ^State, from: ^State, narg: c.int, nres: ^c.int) -> Status --- + status :: proc(L: ^State) -> Status --- + isyieldable :: proc(L: ^State) -> b32 --- + + + /* + ** Warning-related functions + */ + + setwarnf :: proc(L: ^State, f: WarnFunction, ud: rawptr) --- + warning :: proc(L: ^State, msg: string, tocont: b32) --- + + + /* + ** garbage-collection function and options + */ + + + + gc :: proc(L: ^State, what: GCWhat, #c_vararg args: ..any) -> c.int --- + + + /* + ** miscellaneous functions + */ + + error :: proc(L: ^State) -> Status --- + + next :: proc(L: ^State, idx: c.int) -> c.int --- + + concat :: proc(L: ^State, n: c.int) --- + len :: proc(L: ^State, idx: c.int) --- + + stringtonumber :: proc(L: ^State, s: cstring) -> c.size_t --- + + getallocf :: proc(L: State, ud: ^rawptr) -> Alloc --- + setallocf :: proc(L: ^State, f: Alloc, ud: rawptr) --- + + toclose :: proc(L: ^State, idx: c.int) --- + + /* + ** {====================================================================== + ** Debug API + ** ======================================================================= + */ + + getstack :: proc(L: ^State, level: c.int, ar: ^Debug) -> c.int --- + getinfo :: proc(L: ^State, what: cstring, ar: ^Debug) -> c.int --- + getlocal :: proc(L: ^State, ar: ^Debug, n: c.int) -> cstring --- + setlocal :: proc(L: ^State, ar: ^Debug, n: c.int) -> cstring --- + getupvalue :: proc(L: ^State, funcindex: c.int, n: c.int) -> cstring --- + setupvalue :: proc(L: ^State, funcindex: c.int, n: c.int) -> cstring --- + + upvalueid :: proc(L: ^State, fidx, n: c.int) -> rawptr --- + upvaluejoin :: proc(L: ^State, fidx1, n1, fidx2, n2: c.int) --- + + sethook :: proc(L: ^State, func: Hook, mask: HookMask, count: c.int) --- + gethook :: proc(L: ^State) -> Hook --- + gethookmask :: proc(L: ^State) -> HookMask --- + gethookcount :: proc(L: ^State) -> c.int --- + + setcstacklimit :: proc(L: ^State, limit: c.uint) -> c.int --- + + /* }============================================================== */ +} + + + +/* version suffix for environment variable names */ +VERSUFFIX :: "_" + VERSION_MAJOR + "_" + VERSION_MINOR + +COLIBNAME :: "coroutine" +TABLIBNAME :: "table" +IOLIBNAME :: "io" +OSLIBNAME :: "os" +STRLIBNAME :: "string" +UTF8LIBNAME :: "utf8" +MATHLIBNAME :: "math" +DBLIBNAME :: "debug" +LOADLIBNAME :: "package" + +@(link_prefix="lua") +@(default_calling_convention="c") +foreign lib { + open_base :: proc(L: ^State) -> c.int --- + open_coroutine :: proc(L: ^State) -> c.int --- + open_table :: proc(L: ^State) -> c.int --- + open_io :: proc(L: ^State) -> c.int --- + open_os :: proc(L: ^State) -> c.int --- + open_string :: proc(L: ^State) -> c.int --- + open_utf8 :: proc(L: ^State) -> c.int --- + open_math :: proc(L: ^State) -> c.int --- + open_debug :: proc(L: ^State) -> c.int --- + open_package :: proc(L: ^State) -> c.int --- + + /* open all previous libraries */ + + L_openlibs :: proc(L: ^State) --- +} + + + +GNAME :: "_G" + +/* key, in the registry, for table of loaded modules */ +LOADED_TABLE :: "_LOADED" + + +/* key, in the registry, for table of preloaded loaders */ +PRELOAD_TABLE :: "_PRELOAD" + +L_Reg :: struct { + name: cstring, + func: CFunction, +} + +L_NUMSIZES :: size_of(Integer)*16 + size_of(Number) + + +/* predefined references */ +NOREF :: -2 +REFNIL :: -1 + + +@(link_prefix="lua") +@(default_calling_convention="c") +foreign lib { + @(link_name="luaL_checkversion_") + L_checkversion :: proc(L: ^State, ver: Number = VERSION_NUM, sz: c.size_t = L_NUMSIZES) --- + + + L_getmetafield :: proc(L: ^State, obj: c.int, e: cstring) -> c.int --- + L_callmeta :: proc(L: ^State, obj: c.int, e: cstring) -> c.int --- + @(link_name="luaL_tolstring") + L_tostring :: proc(L: ^State, idx: c.int, len: ^c.size_t = nil) -> cstring --- + L_argerror :: proc(L: ^State, arg: c.int, extramsg: cstring) -> c.int --- + L_typeerror :: proc(L: ^State, arg: c.int, tname: cstring) -> c.int --- + @(link_name="luaL_checklstring") + L_checkstring :: proc(L: ^State, arg: c.int, l: ^c.size_t = nil) -> cstring --- + @(link_name="luaL_optlstring") + L_optstring :: proc(L: ^State, arg: c.int, def: cstring, l: ^c.size_t = nil) -> cstring --- + L_checknumber :: proc(L: ^State, arg: c.int) -> Number --- + L_optnumber :: proc(L: ^State, arg: c.int, def: Number) -> Number --- + + L_checkinteger :: proc(L: ^State, arg: c.int) -> Integer --- + L_optinteger :: proc(L: ^State, arg: c.int, def: Integer) -> Integer --- + + L_checkstack :: proc(L: ^State, sz: c.int, msg: cstring) --- + L_checktype :: proc(L: ^State, arg: c.int, t: c.int) --- + L_checkany :: proc(L: ^State, arg: c.int) --- + + L_newmetatable :: proc(L: ^State, tname: cstring) -> c.int --- + L_setmetatable :: proc(L: ^State, tname: cstring) --- + L_testudata :: proc(L: ^State, ud: c.int, tname: cstring) -> rawptr --- + L_checkudata :: proc(L: ^State, ud: c.int, tname: cstring) -> rawptr --- + + L_where :: proc(L: ^State, lvl: c.int) --- + L_error :: proc(L: ^State, fmt: cstring, #c_vararg args: ..any) -> Status --- + + L_checkoption :: proc(L: ^State, arg: c.int, def: cstring, lst: [^]cstring) -> c.int --- + + L_fileresult :: proc(L: ^State, stat: c.int, fname: cstring) -> c.int --- + L_execresult :: proc(L: ^State, stat: c.int) -> c.int --- + + + L_ref :: proc(L: ^State, t: c.int) -> c.int --- + L_unref :: proc(L: ^State, t: c.int, ref: c.int) --- + + @(link_name="luaL_loadfilex") + L_loadfile :: proc (L: ^State, filename: cstring, mode: cstring = nil) -> Status --- + + @(link_name="luaL_loadbufferx") + L_loadbuffer :: proc(L: ^State, buff: [^]byte, sz: c.size_t, name: cstring, mode: cstring = nil) -> Status --- + L_loadstring :: proc(L: ^State, s: cstring) -> Status --- + + L_newstate :: proc() -> ^State --- + + L_len :: proc(L: ^State, idx: c.int) -> Integer --- + + L_addgsub :: proc(b: ^L_Buffer, s, p, r: cstring) --- + L_gsub :: proc(L: ^State, s, p, r: cstring) -> cstring --- + + L_setfuncs :: proc(L: ^State, l: [^]L_Reg, nup: c.int) --- + + L_getsubtable :: proc(L: ^State, idx: c.int, fname: cstring) -> c.int --- + + L_traceback :: proc(L: ^State, L1: ^State, msg: cstring, level: c.int) --- + + L_requiref :: proc(L: ^State, modname: cstring, openf: CFunction, glb: c.int) --- + +} +/* +** {====================================================== +** Generic Buffer manipulation +** ======================================================= +*/ + + +L_Buffer :: struct { + b: [^]byte, /* buffer address */ + size: c.size_t, /* buffer size */ + n: c.size_t, /* number of characters in buffer */ + L: ^State, + init: struct #raw_union { + n: Number, u: f64, s: rawptr, i: Integer, l: c.long, + b: [L_BUFFERSIZE]byte, /* initial buffer */ + }, +} +L_bufflen :: #force_inline proc "c" (bf: ^L_Buffer) -> c.size_t { + return bf.n +} +L_buffaddr :: #force_inline proc "c" (bf: ^L_Buffer) -> [^]byte { + return bf.b +} + +L_addchar :: #force_inline proc "c" (B: ^L_Buffer, c: byte) { + if B.n < B.size { + L_prepbuffsize(B, 1) + } + B.b[B.n] = c + B.n += 1 +} + +L_addsize :: #force_inline proc "c" (B: ^L_Buffer, s: c.size_t) -> c.size_t { + B.n += s + return B.n +} + +L_buffsub :: #force_inline proc "c" (B: ^L_Buffer, s: c.size_t) -> c.size_t { + B.n -= s + return B.n +} + +L_prepbuffer :: #force_inline proc "c" (B: ^L_Buffer) -> [^]byte { + return L_prepbuffsize(B, c.size_t(L_BUFFERSIZE)) +} + + +@(link_prefix="lua") +@(default_calling_convention="c") +foreign lib { + L_buffinit :: proc(L: ^State, B: ^L_Buffer) --- + L_prepbuffsize :: proc(B: ^L_Buffer, sz: c.size_t) -> [^]byte --- + L_addlstring :: proc(B: ^L_Buffer, s: cstring, l: c.size_t) --- + L_addstring :: proc(B: ^L_Buffer, s: cstring) --- + L_addvalue :: proc(B: ^L_Buffer) --- + L_pushresult :: proc(B: ^L_Buffer) --- + L_pushresultsize :: proc(B: ^L_Buffer, sz: c.size_t) --- + L_buffinitsize :: proc(L: ^State, B: ^L_Buffer, sz: c.size_t) -> [^]byte --- +} + + +/* }====================================================== */ + + + + +/* +** {============================================================== +** some useful macros +** =============================================================== +*/ + +getextraspace :: #force_inline proc "c" (L: ^State) -> rawptr { + return rawptr(([^]byte)(L)[-EXTRASPACE:]) +} +pop :: #force_inline proc "c" (L: ^State, n: c.int) { + settop(L, -n-1) +} +newtable :: #force_inline proc "c" (L: ^State) { + createtable(L, 0, 0) +} +register :: #force_inline proc "c" (L: ^State, n: cstring, f: CFunction) { + pushcfunction(L, f) + setglobal(L, n) +} + +pushcfunction :: #force_inline proc "c" (L: ^State, f: CFunction) { + pushcclosure(L, f, 0) +} + + +isfunction :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .FUNCTION } +istable :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .TABLE } +islightuserdata :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .LIGHTUSERDATA } +isnil :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .NIL } +isboolean :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .BOOLEAN } +isthread :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .THREAD } +isnone :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) == .NONE } +isnoneornil :: #force_inline proc "c" (L: ^State, n: c.int) -> bool { return type(L, n) <= .NIL } + + +pushliteral :: pushstring +pushglobaltable :: #force_inline proc "c" (L: ^State) { + rawgeti(L, REGISTRYINDEX, RIDX_GLOBALS) +} +tostring :: #force_inline proc "c" (L: ^State, i: c.int) -> cstring { + return tolstring(L, i, nil) +} +insert :: #force_inline proc "c" (L: ^State, idx: c.int) { + rotate(L, idx, 1) +} +remove :: #force_inline proc "c" (L: ^State, idx: c.int) { + rotate(L, idx, -1) + pop(L, 1) +} +replace :: #force_inline proc "c" (L: ^State, idx: c.int) { + copy(L, -1, idx) + pop(L, 1) +} + +L_newlibtable :: #force_inline proc "c" (L: ^State, l: []L_Reg) { + createtable(L, 0, c.int(builtin.len(l) - 1)) +} + +L_newlib :: proc(L: ^State, l: []L_Reg) { + L_checkversion(L) + L_newlibtable(L, l) + L_setfuncs(L, raw_data(l), 0) +} + +L_argcheck :: #force_inline proc "c" (L: ^State, cond: bool, arg: c.int, extramsg: cstring) { + if cond { + L_argerror(L, arg, extramsg) + } +} + +L_argexpected :: #force_inline proc "c" (L: ^State, cond: bool, arg: c.int, tname: cstring) { + if cond { + L_typeerror(L, arg, tname) + } +} + +L_typename :: #force_inline proc "c" (L: ^State, i: c.int) -> cstring { + return typename(L, type(L, i)) +} +L_dofile :: #force_inline proc "c" (L: ^State, s: cstring) -> c.int { + err := L_loadfile(L, s) + return pcall(L, 0, MULTRET, 0) if err == nil else c.int(err) +} +L_dostring :: #force_inline proc "c" (L: ^State, s: cstring) -> c.int { + err := L_loadstring(L, s) + return pcall(L, 0, MULTRET, 0) if err == nil else c.int(err) +} +L_getmetatable :: #force_inline proc "c" (L: ^State, n: cstring) -> c.int { + return getfield(L, REGISTRYINDEX, n) +} +L_opt :: #force_inline proc "c" (L: ^State, f: $F, n: c.int, d: $T) -> T where intrinsics.type_is_proc(F) { + return d if isnoneornil(L, n) else f(L, n) +} + + + +/* push the value used to represent failure/error */ +pushfail :: pushnil + + +/* }============================================================== */ + + +/* +** {============================================================== +** compatibility macros +** =============================================================== +*/ + +newuserdata :: #force_inline proc "c" (L: ^State, s: c.size_t) -> rawptr { + return newuserdatauv(L, s, 1) +} +getuservalue :: #force_inline proc "c" (L: ^State, idx: c.int) -> c.int { + return getiuservalue(L, idx, 1) +} +setuservalue :: #force_inline proc "c" (L: ^State, idx: c.int) -> c.int { + return setiuservalue(L, idx, 1) +} diff --git a/vendor/lua/5.4/windows/lua54.dll b/vendor/lua/5.4/windows/lua54.dll new file mode 100644 index 000000000..44130fad2 Binary files /dev/null and b/vendor/lua/5.4/windows/lua54.dll differ diff --git a/vendor/lua/5.4/windows/lua54dll.lib b/vendor/lua/5.4/windows/lua54dll.lib new file mode 100644 index 000000000..21bdd6ebd Binary files /dev/null and b/vendor/lua/5.4/windows/lua54dll.lib differ diff --git a/vendor/lua/LICENSE b/vendor/lua/LICENSE new file mode 100644 index 000000000..4a17a5230 --- /dev/null +++ b/vendor/lua/LICENSE @@ -0,0 +1,6 @@ +Copyright © 1994–2023 Lua.org, PUC-Rio. +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/vendor/lua/README.md b/vendor/lua/README.md new file mode 100644 index 000000000..8f4b0f5a5 --- /dev/null +++ b/vendor/lua/README.md @@ -0,0 +1,12 @@ +# Lua in Odin + +```odin +import lua "vendor:lua/5.4" // or whatever version you want +``` + +Lua packages + +* `vendor:lua/5.1` (version 5.1.5) +* `vendor:lua/5.2` (version 5.2.4) +* `vendor:lua/5.3` (version 5.3.6) +* `vendor:lua/5.4` (version 5.4.2) \ No newline at end of file diff --git a/vendor/sdl2/sdl2.odin b/vendor/sdl2/sdl2.odin index adf6dbd49..b3abce483 100644 --- a/vendor/sdl2/sdl2.odin +++ b/vendor/sdl2/sdl2.odin @@ -26,11 +26,13 @@ import "core:c" import "core:intrinsics" when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" + foreign import _lib "SDL2.lib" } else { - foreign import lib "system:SDL2" + foreign import _lib "system:SDL2" } +lib :: _lib + version :: struct { major: u8, /**< major version */ minor: u8, /**< minor version */ @@ -45,7 +47,6 @@ PATCHLEVEL :: 16 foreign lib { GetVersion :: proc(ver: ^version) --- GetRevision :: proc() -> cstring --- - } InitFlag :: enum u32 { diff --git a/vendor/sdl2/sdl_audio.odin b/vendor/sdl2/sdl_audio.odin index 28a59d947..914adc0df 100644 --- a/vendor/sdl2/sdl_audio.odin +++ b/vendor/sdl2/sdl_audio.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - /** * \brief Audio format flags. * diff --git a/vendor/sdl2/sdl_blendmode.odin b/vendor/sdl2/sdl_blendmode.odin index 4fde5111b..07aab1dec 100644 --- a/vendor/sdl2/sdl_blendmode.odin +++ b/vendor/sdl2/sdl_blendmode.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - /** * \brief The blend mode used in SDL_RenderCopy() and drawing operations. */ diff --git a/vendor/sdl2/sdl_cpuinfo.odin b/vendor/sdl2/sdl_cpuinfo.odin index c5175e4d5..4987bd092 100644 --- a/vendor/sdl2/sdl_cpuinfo.odin +++ b/vendor/sdl2/sdl_cpuinfo.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - /* This is a guess for the cacheline size used for padding. * Most x86 processors have a 64 byte cache line. * The 64-bit PowerPC processors have a 128 byte cache line. diff --git a/vendor/sdl2/sdl_events.odin b/vendor/sdl2/sdl_events.odin index 60daaea56..8710c4765 100644 --- a/vendor/sdl2/sdl_events.odin +++ b/vendor/sdl2/sdl_events.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - RELEASED :: 0 PRESSED :: 1 diff --git a/vendor/sdl2/sdl_gamecontroller.odin b/vendor/sdl2/sdl_gamecontroller.odin index 8772faa26..497da0836 100644 --- a/vendor/sdl2/sdl_gamecontroller.odin +++ b/vendor/sdl2/sdl_gamecontroller.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - GameController :: struct {} GameControllerType :: enum c.int { diff --git a/vendor/sdl2/sdl_gesture_haptic.odin b/vendor/sdl2/sdl_gesture_haptic.odin index a21e0df06..92b9d83d4 100644 --- a/vendor/sdl2/sdl_gesture_haptic.odin +++ b/vendor/sdl2/sdl_gesture_haptic.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - // Gesture GestureID :: distinct i64 diff --git a/vendor/sdl2/sdl_hints.odin b/vendor/sdl2/sdl_hints.odin index 913d4ea12..57b264c00 100644 --- a/vendor/sdl2/sdl_hints.odin +++ b/vendor/sdl2/sdl_hints.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - HINT_ACCELEROMETER_AS_JOYSTICK :: "SDL_ACCELEROMETER_AS_JOYSTICK" HINT_ALLOW_ALT_TAB_WHILE_GRABBED :: "SDL_ALLOW_ALT_TAB_WHILE_GRABBED" HINT_ALLOW_TOPMOST :: "SDL_ALLOW_TOPMOST" diff --git a/vendor/sdl2/sdl_joystick.odin b/vendor/sdl2/sdl_joystick.odin index 35ca5cdcc..d0d1d62a3 100644 --- a/vendor/sdl2/sdl_joystick.odin +++ b/vendor/sdl2/sdl_joystick.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - Joystick :: struct {} JoystickGUID :: struct { diff --git a/vendor/sdl2/sdl_keyboard.odin b/vendor/sdl2/sdl_keyboard.odin index f880286aa..077d5f102 100644 --- a/vendor/sdl2/sdl_keyboard.odin +++ b/vendor/sdl2/sdl_keyboard.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - Keysym :: struct { scancode: Scancode, /**< SDL physical key code - see ::SDL_Scancode for details */ sym: Keycode, /**< SDL virtual key code - see ::SDL_Keycode for details */ diff --git a/vendor/sdl2/sdl_keycode.odin b/vendor/sdl2/sdl_keycode.odin index c03fdc2a9..466d8c2a6 100644 --- a/vendor/sdl2/sdl_keycode.odin +++ b/vendor/sdl2/sdl_keycode.odin @@ -1,6 +1,5 @@ package sdl2 - SCANCODE_MASK :: 1<<30 SCANCODE_TO_KEYCODE :: #force_inline proc "c" (X: Scancode) -> Keycode { return Keycode(i32(X) | SCANCODE_MASK) diff --git a/vendor/sdl2/sdl_log.odin b/vendor/sdl2/sdl_log.odin index 09b7eaef0..a1db184c9 100644 --- a/vendor/sdl2/sdl_log.odin +++ b/vendor/sdl2/sdl_log.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - MAX_LOG_MESSAGE :: 4096 LogCategory :: enum c.int { diff --git a/vendor/sdl2/sdl_messagebox.odin b/vendor/sdl2/sdl_messagebox.odin index 6228704ac..2c8e8da48 100644 --- a/vendor/sdl2/sdl_messagebox.odin +++ b/vendor/sdl2/sdl_messagebox.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - MessageBoxFlag :: enum u32 { _ = 0, ERROR = 4, /**< error dialog */ diff --git a/vendor/sdl2/sdl_metal.odin b/vendor/sdl2/sdl_metal.odin index 1eccf7f5a..ca7bd91d2 100644 --- a/vendor/sdl2/sdl_metal.odin +++ b/vendor/sdl2/sdl_metal.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - MetalView :: distinct rawptr @(default_calling_convention="c", link_prefix="SDL_") diff --git a/vendor/sdl2/sdl_mouse.odin b/vendor/sdl2/sdl_mouse.odin index 0243b6623..a612a15a1 100644 --- a/vendor/sdl2/sdl_mouse.odin +++ b/vendor/sdl2/sdl_mouse.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - Cursor :: struct {} BUTTON :: #force_inline proc "c" (X: c.int) -> c.int { return 1 << u32(X-1) } diff --git a/vendor/sdl2/sdl_mutex.odin b/vendor/sdl2/sdl_mutex.odin index 1fd5849e0..54d8fc671 100644 --- a/vendor/sdl2/sdl_mutex.odin +++ b/vendor/sdl2/sdl_mutex.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - MUTEX_TIMEDOUT :: 1 MUTEX_MAXWAIT :: ~u32(0) diff --git a/vendor/sdl2/sdl_pixels.odin b/vendor/sdl2/sdl_pixels.odin index 8ee06aa1a..d526e86ba 100644 --- a/vendor/sdl2/sdl_pixels.odin +++ b/vendor/sdl2/sdl_pixels.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - ALPHA_OPAQUE :: 255 ALPHA_TRANSPARENT :: 0 diff --git a/vendor/sdl2/sdl_rect.odin b/vendor/sdl2/sdl_rect.odin index 852309cd2..de6a0848f 100644 --- a/vendor/sdl2/sdl_rect.odin +++ b/vendor/sdl2/sdl_rect.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - Point :: struct { x: c.int, y: c.int, diff --git a/vendor/sdl2/sdl_render.odin b/vendor/sdl2/sdl_render.odin index f948b39b0..a7b90e61a 100644 --- a/vendor/sdl2/sdl_render.odin +++ b/vendor/sdl2/sdl_render.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - RendererFlag :: enum u32 { SOFTWARE = 0, /**< The renderer is a software fallback */ ACCELERATED = 1, /**< The renderer uses hardware acceleration */ diff --git a/vendor/sdl2/sdl_rwops.odin b/vendor/sdl2/sdl_rwops.odin index 86fb23c75..7add9b2f0 100644 --- a/vendor/sdl2/sdl_rwops.odin +++ b/vendor/sdl2/sdl_rwops.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - /* RWops Types */ RWOPS_UNKNOWN :: 0 /**< Unknown stream type */ RWOPS_WINFILE :: 1 /**< Win32 file */ diff --git a/vendor/sdl2/sdl_stdinc.odin b/vendor/sdl2/sdl_stdinc.odin index 97722f4fe..178007919 100644 --- a/vendor/sdl2/sdl_stdinc.odin +++ b/vendor/sdl2/sdl_stdinc.odin @@ -5,12 +5,6 @@ import "core:intrinsics" import "core:runtime" _, _ :: intrinsics, runtime -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - bool :: distinct b32 #assert(size_of(bool) == size_of(c.int)) diff --git a/vendor/sdl2/sdl_surface.odin b/vendor/sdl2/sdl_surface.odin index f50de35f7..a36131a42 100644 --- a/vendor/sdl2/sdl_surface.odin +++ b/vendor/sdl2/sdl_surface.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - SWSURFACE :: 0 /**< Just here for compatibility */ PREALLOC :: 0x00000001 /**< Surface uses preallocated memory */ RLEACCEL :: 0x00000002 /**< Surface is RLE encoded */ diff --git a/vendor/sdl2/sdl_system.odin b/vendor/sdl2/sdl_system.odin index d9b6b98df..b8787624e 100644 --- a/vendor/sdl2/sdl_system.odin +++ b/vendor/sdl2/sdl_system.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - // General @(default_calling_convention="c", link_prefix="SDL_") foreign lib { diff --git a/vendor/sdl2/sdl_syswm.odin b/vendor/sdl2/sdl_syswm.odin index 62ca9d628..5dc50c394 100644 --- a/vendor/sdl2/sdl_syswm.odin +++ b/vendor/sdl2/sdl_syswm.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - SYSWM_TYPE :: enum c.int { UNKNOWN, WINDOWS, diff --git a/vendor/sdl2/sdl_thread.odin b/vendor/sdl2/sdl_thread.odin index 5d1c0bd37..8acc71849 100644 --- a/vendor/sdl2/sdl_thread.odin +++ b/vendor/sdl2/sdl_thread.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - Thread :: struct {} threadID :: distinct c.ulong diff --git a/vendor/sdl2/sdl_timer.odin b/vendor/sdl2/sdl_timer.odin index d71ed2da5..6b19a6c13 100644 --- a/vendor/sdl2/sdl_timer.odin +++ b/vendor/sdl2/sdl_timer.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - TimerCallback :: proc "c" (interval: u32, param: rawptr) -> u32 TimerID :: distinct c.int diff --git a/vendor/sdl2/sdl_touch.odin b/vendor/sdl2/sdl_touch.odin index f2a8cc695..3ba59b651 100644 --- a/vendor/sdl2/sdl_touch.odin +++ b/vendor/sdl2/sdl_touch.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - TouchID :: distinct i64 FingerID :: distinct i64 diff --git a/vendor/sdl2/sdl_video.odin b/vendor/sdl2/sdl_video.odin index 86b564541..6f4deaf3f 100644 --- a/vendor/sdl2/sdl_video.odin +++ b/vendor/sdl2/sdl_video.odin @@ -2,12 +2,6 @@ package sdl2 import "core:c" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - DisplayMode :: struct { format: u32, /**< pixel format */ w: c.int, /**< width, in screen coordinates */ diff --git a/vendor/sdl2/sdl_vulkan.odin b/vendor/sdl2/sdl_vulkan.odin index 33bb8e51c..2258682c0 100644 --- a/vendor/sdl2/sdl_vulkan.odin +++ b/vendor/sdl2/sdl_vulkan.odin @@ -3,12 +3,6 @@ package sdl2 import "core:c" import vk "vendor:vulkan" -when ODIN_OS == .Windows { - foreign import lib "SDL2.lib" -} else { - foreign import lib "system:SDL2" -} - VkInstance :: vk.Instance VkSurfaceKHR :: vk.SurfaceKHR diff --git a/vendor/vulkan/_gen/create_vulkan_odin_wrapper.py b/vendor/vulkan/_gen/create_vulkan_odin_wrapper.py index 1dbac58d8..76d62f519 100644 --- a/vendor/vulkan/_gen/create_vulkan_odin_wrapper.py +++ b/vendor/vulkan/_gen/create_vulkan_odin_wrapper.py @@ -7,14 +7,15 @@ import os.path import math file_and_urls = [ - ("vk_platform.h", 'https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/include/vulkan/vk_platform.h', True), - ("vulkan_core.h", 'https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/include/vulkan/vulkan_core.h', False), - ("vk_layer.h", 'https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/include/vulkan/vk_layer.h', True), - ("vk_icd.h", 'https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/include/vulkan/vk_icd.h', True), - ("vulkan_win32.h", 'https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/include/vulkan/vulkan_win32.h', False), - ("vulkan_metal.h", 'https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/include/vulkan/vulkan_metal.h', False), - ("vulkan_macos.h", 'https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/include/vulkan/vulkan_macos.h', False), - ("vulkan_ios.h", 'https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/include/vulkan/vulkan_ios.h', False), + ("vk_platform.h", 'https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/include/vulkan/vk_platform.h', True), + ("vulkan_core.h", 'https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/include/vulkan/vulkan_core.h', False), + ("vk_layer.h", 'https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/include/vulkan/vk_layer.h', True), + ("vk_icd.h", 'https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/include/vulkan/vk_icd.h', True), + ("vulkan_win32.h", 'https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/include/vulkan/vulkan_win32.h', False), + ("vulkan_metal.h", 'https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/include/vulkan/vulkan_metal.h', False), + ("vulkan_macos.h", 'https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/include/vulkan/vulkan_macos.h', False), + ("vulkan_ios.h", 'https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/include/vulkan/vulkan_ios.h', False), + ("vulkan_wayland.h", 'https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/include/vulkan/vulkan_wayland.h', False), ] for file, url, _ in file_and_urls: @@ -38,6 +39,11 @@ def no_vk(t): t = t.replace('VK_', '') return t +OPAQUE_STRUCTS = """ +wl_surface :: struct {} // Opaque struct defined by Wayland +wl_display :: struct {} // Opaque struct defined by Wayland +""" + def convert_type(t, prev_name, curr_name): table = { "Bool32": 'b32', @@ -66,8 +72,10 @@ def convert_type(t, prev_name, curr_name): "const AccelerationStructureBuildRangeInfoKHR* const*": "^[^]AccelerationStructureBuildRangeInfoKHR", "struct BaseOutStructure": "BaseOutStructure", "struct BaseInStructure": "BaseInStructure", + "struct wl_display": "wl_display", + "struct wl_surface": "wl_surface", 'v': '', - } + } if t in table.keys(): return table[t] @@ -431,6 +439,8 @@ def parse_structs(f): f.write("}\n\n") + f.write("// Opaque structs\n") + f.write(OPAQUE_STRUCTS) f.write("// Aliases\n") data = re.findall(r"typedef Vk(\w+?) Vk(\w+?);", src, re.S) diff --git a/vendor/vulkan/_gen/vulkan_wayland.h b/vendor/vulkan/_gen/vulkan_wayland.h new file mode 100644 index 000000000..bdf4fdfad --- /dev/null +++ b/vendor/vulkan/_gen/vulkan_wayland.h @@ -0,0 +1,54 @@ +#ifndef VULKAN_WAYLAND_H_ +#define VULKAN_WAYLAND_H_ 1 + +/* +** Copyright 2015-2023 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_KHR_wayland_surface 1 +#define VK_KHR_WAYLAND_SURFACE_SPEC_VERSION 6 +#define VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME "VK_KHR_wayland_surface" +typedef VkFlags VkWaylandSurfaceCreateFlagsKHR; +typedef struct VkWaylandSurfaceCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkWaylandSurfaceCreateFlagsKHR flags; + struct wl_display* display; + struct wl_surface* surface; +} VkWaylandSurfaceCreateInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateWaylandSurfaceKHR)(VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); +typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct wl_display* display); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateWaylandSurfaceKHR( + VkInstance instance, + const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); + +VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWaylandPresentationSupportKHR( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + struct wl_display* display); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/vulkan/core.odin b/vendor/vulkan/core.odin index b90bfad17..414d546a1 100644 --- a/vendor/vulkan/core.odin +++ b/vendor/vulkan/core.odin @@ -1,834 +1,837 @@ -// -// Vulkan wrapper generated from "https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/master/include/vulkan/vulkan_core.h" -// -package vulkan -API_VERSION_1_0 :: (1<<22) | (0<<12) | (0) -API_VERSION_1_1 :: (1<<22) | (1<<12) | (0) -API_VERSION_1_2 :: (1<<22) | (2<<12) | (0) -API_VERSION_1_3 :: (1<<22) | (3<<12) | (0) - -MAKE_VERSION :: proc(major, minor, patch: u32) -> u32 { - return (major<<22) | (minor<<12) | (patch) -} - -// Base types -Flags :: distinct u32 -Flags64 :: distinct u64 -DeviceSize :: distinct u64 -DeviceAddress :: distinct u64 -SampleMask :: distinct u32 - -Handle :: distinct rawptr -NonDispatchableHandle :: distinct u64 - -SetProcAddressType :: #type proc(p: rawptr, name: cstring) - - -RemoteAddressNV :: distinct rawptr // Declared inline before MemoryGetRemoteAddressInfoNV - -// Base constants -LOD_CLAMP_NONE :: 1000.0 -REMAINING_MIP_LEVELS :: ~u32(0) -REMAINING_ARRAY_LAYERS :: ~u32(0) -WHOLE_SIZE :: ~u64(0) -ATTACHMENT_UNUSED :: ~u32(0) -TRUE :: 1 -FALSE :: 0 -QUEUE_FAMILY_IGNORED :: ~u32(0) -SUBPASS_EXTERNAL :: ~u32(0) -MAX_PHYSICAL_DEVICE_NAME_SIZE :: 256 -UUID_SIZE :: 16 -MAX_MEMORY_TYPES :: 32 -MAX_MEMORY_HEAPS :: 16 -MAX_EXTENSION_NAME_SIZE :: 256 -MAX_DESCRIPTION_SIZE :: 256 -MAX_DEVICE_GROUP_SIZE :: 32 -LUID_SIZE_KHX :: 8 -LUID_SIZE :: 8 -MAX_QUEUE_FAMILY_EXTERNAL :: ~u32(1) -MAX_GLOBAL_PRIORITY_SIZE_EXT :: 16 -QUEUE_FAMILY_EXTERNAL :: MAX_QUEUE_FAMILY_EXTERNAL - -// General Constants -HEADER_VERSION :: 211 -MAX_DRIVER_NAME_SIZE :: 256 -MAX_DRIVER_INFO_SIZE :: 256 - -// Vendor Constants -KHR_surface :: 1 -KHR_SURFACE_SPEC_VERSION :: 25 -KHR_SURFACE_EXTENSION_NAME :: "VK_KHR_surface" -KHR_swapchain :: 1 -KHR_SWAPCHAIN_SPEC_VERSION :: 70 -KHR_SWAPCHAIN_EXTENSION_NAME :: "VK_KHR_swapchain" -KHR_display :: 1 -KHR_DISPLAY_SPEC_VERSION :: 23 -KHR_DISPLAY_EXTENSION_NAME :: "VK_KHR_display" -KHR_display_swapchain :: 1 -KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION :: 10 -KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME :: "VK_KHR_display_swapchain" -KHR_sampler_mirror_clamp_to_edge :: 1 -KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION :: 3 -KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME :: "VK_KHR_sampler_mirror_clamp_to_edge" -KHR_dynamic_rendering :: 1 -KHR_DYNAMIC_RENDERING_SPEC_VERSION :: 1 -KHR_DYNAMIC_RENDERING_EXTENSION_NAME :: "VK_KHR_dynamic_rendering" -KHR_multiview :: 1 -KHR_MULTIVIEW_SPEC_VERSION :: 1 -KHR_MULTIVIEW_EXTENSION_NAME :: "VK_KHR_multiview" -KHR_get_physical_device_properties2 :: 1 -KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION :: 2 -KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME :: "VK_KHR_get_physical_device_properties2" -KHR_device_group :: 1 -KHR_DEVICE_GROUP_SPEC_VERSION :: 4 -KHR_DEVICE_GROUP_EXTENSION_NAME :: "VK_KHR_device_group" -KHR_shader_draw_parameters :: 1 -KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION :: 1 -KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME :: "VK_KHR_shader_draw_parameters" -KHR_maintenance1 :: 1 -KHR_MAINTENANCE_1_SPEC_VERSION :: 2 -KHR_MAINTENANCE_1_EXTENSION_NAME :: "VK_KHR_maintenance1" -KHR_MAINTENANCE1_SPEC_VERSION :: KHR_MAINTENANCE_1_SPEC_VERSION -KHR_MAINTENANCE1_EXTENSION_NAME :: KHR_MAINTENANCE_1_EXTENSION_NAME -KHR_device_group_creation :: 1 -KHR_DEVICE_GROUP_CREATION_SPEC_VERSION :: 1 -KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME :: "VK_KHR_device_group_creation" -MAX_DEVICE_GROUP_SIZE_KHR :: MAX_DEVICE_GROUP_SIZE -KHR_external_memory_capabilities :: 1 -KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION :: 1 -KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME :: "VK_KHR_external_memory_capabilities" -LUID_SIZE_KHR :: LUID_SIZE -KHR_external_memory :: 1 -KHR_EXTERNAL_MEMORY_SPEC_VERSION :: 1 -KHR_EXTERNAL_MEMORY_EXTENSION_NAME :: "VK_KHR_external_memory" -QUEUE_FAMILY_EXTERNAL_KHR :: QUEUE_FAMILY_EXTERNAL -KHR_external_memory_fd :: 1 -KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION :: 1 -KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME :: "VK_KHR_external_memory_fd" -KHR_external_semaphore_capabilities :: 1 -KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION :: 1 -KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME :: "VK_KHR_external_semaphore_capabilities" -KHR_external_semaphore :: 1 -KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION :: 1 -KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME :: "VK_KHR_external_semaphore" -KHR_external_semaphore_fd :: 1 -KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION :: 1 -KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME :: "VK_KHR_external_semaphore_fd" -KHR_push_descriptor :: 1 -KHR_PUSH_DESCRIPTOR_SPEC_VERSION :: 2 -KHR_PUSH_DESCRIPTOR_EXTENSION_NAME :: "VK_KHR_push_descriptor" -KHR_shader_float16_int8 :: 1 -KHR_SHADER_FLOAT16_INT8_SPEC_VERSION :: 1 -KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME :: "VK_KHR_shader_float16_int8" -KHR_16bit_storage :: 1 -KHR_16BIT_STORAGE_SPEC_VERSION :: 1 -KHR_16BIT_STORAGE_EXTENSION_NAME :: "VK_KHR_16bit_storage" -KHR_incremental_present :: 1 -KHR_INCREMENTAL_PRESENT_SPEC_VERSION :: 2 -KHR_INCREMENTAL_PRESENT_EXTENSION_NAME :: "VK_KHR_incremental_present" -KHR_descriptor_update_template :: 1 -KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION :: 1 -KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME :: "VK_KHR_descriptor_update_template" -KHR_imageless_framebuffer :: 1 -KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION :: 1 -KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME :: "VK_KHR_imageless_framebuffer" -KHR_create_renderpass2 :: 1 -KHR_CREATE_RENDERPASS_2_SPEC_VERSION :: 1 -KHR_CREATE_RENDERPASS_2_EXTENSION_NAME :: "VK_KHR_create_renderpass2" -KHR_shared_presentable_image :: 1 -KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION :: 1 -KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME :: "VK_KHR_shared_presentable_image" -KHR_external_fence_capabilities :: 1 -KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION :: 1 -KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME :: "VK_KHR_external_fence_capabilities" -KHR_external_fence :: 1 -KHR_EXTERNAL_FENCE_SPEC_VERSION :: 1 -KHR_EXTERNAL_FENCE_EXTENSION_NAME :: "VK_KHR_external_fence" -KHR_external_fence_fd :: 1 -KHR_EXTERNAL_FENCE_FD_SPEC_VERSION :: 1 -KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME :: "VK_KHR_external_fence_fd" -KHR_performance_query :: 1 -KHR_PERFORMANCE_QUERY_SPEC_VERSION :: 1 -KHR_PERFORMANCE_QUERY_EXTENSION_NAME :: "VK_KHR_performance_query" -KHR_maintenance2 :: 1 -KHR_MAINTENANCE_2_SPEC_VERSION :: 1 -KHR_MAINTENANCE_2_EXTENSION_NAME :: "VK_KHR_maintenance2" -KHR_MAINTENANCE2_SPEC_VERSION :: KHR_MAINTENANCE_2_SPEC_VERSION -KHR_MAINTENANCE2_EXTENSION_NAME :: KHR_MAINTENANCE_2_EXTENSION_NAME -KHR_get_surface_capabilities2 :: 1 -KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION :: 1 -KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME :: "VK_KHR_get_surface_capabilities2" -KHR_variable_pointers :: 1 -KHR_VARIABLE_POINTERS_SPEC_VERSION :: 1 -KHR_VARIABLE_POINTERS_EXTENSION_NAME :: "VK_KHR_variable_pointers" -KHR_get_display_properties2 :: 1 -KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION :: 1 -KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME :: "VK_KHR_get_display_properties2" -KHR_dedicated_allocation :: 1 -KHR_DEDICATED_ALLOCATION_SPEC_VERSION :: 3 -KHR_DEDICATED_ALLOCATION_EXTENSION_NAME :: "VK_KHR_dedicated_allocation" -KHR_storage_buffer_storage_class :: 1 -KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION :: 1 -KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME :: "VK_KHR_storage_buffer_storage_class" -KHR_relaxed_block_layout :: 1 -KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION :: 1 -KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME :: "VK_KHR_relaxed_block_layout" -KHR_get_memory_requirements2 :: 1 -KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION :: 1 -KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME :: "VK_KHR_get_memory_requirements2" -KHR_image_format_list :: 1 -KHR_IMAGE_FORMAT_LIST_SPEC_VERSION :: 1 -KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME :: "VK_KHR_image_format_list" -KHR_sampler_ycbcr_conversion :: 1 -KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION :: 14 -KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME :: "VK_KHR_sampler_ycbcr_conversion" -KHR_bind_memory2 :: 1 -KHR_BIND_MEMORY_2_SPEC_VERSION :: 1 -KHR_BIND_MEMORY_2_EXTENSION_NAME :: "VK_KHR_bind_memory2" -KHR_maintenance3 :: 1 -KHR_MAINTENANCE_3_SPEC_VERSION :: 1 -KHR_MAINTENANCE_3_EXTENSION_NAME :: "VK_KHR_maintenance3" -KHR_MAINTENANCE3_SPEC_VERSION :: KHR_MAINTENANCE_3_SPEC_VERSION -KHR_MAINTENANCE3_EXTENSION_NAME :: KHR_MAINTENANCE_3_EXTENSION_NAME -KHR_draw_indirect_count :: 1 -KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION :: 1 -KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME :: "VK_KHR_draw_indirect_count" -KHR_shader_subgroup_extended_types :: 1 -KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION :: 1 -KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME :: "VK_KHR_shader_subgroup_extended_types" -KHR_8bit_storage :: 1 -KHR_8BIT_STORAGE_SPEC_VERSION :: 1 -KHR_8BIT_STORAGE_EXTENSION_NAME :: "VK_KHR_8bit_storage" -KHR_shader_atomic_int64 :: 1 -KHR_SHADER_ATOMIC_INT64_SPEC_VERSION :: 1 -KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME :: "VK_KHR_shader_atomic_int64" -KHR_shader_clock :: 1 -KHR_SHADER_CLOCK_SPEC_VERSION :: 1 -KHR_SHADER_CLOCK_EXTENSION_NAME :: "VK_KHR_shader_clock" -KHR_global_priority :: 1 -MAX_GLOBAL_PRIORITY_SIZE_KHR :: 16 -KHR_GLOBAL_PRIORITY_SPEC_VERSION :: 1 -KHR_GLOBAL_PRIORITY_EXTENSION_NAME :: "VK_KHR_global_priority" -KHR_driver_properties :: 1 -KHR_DRIVER_PROPERTIES_SPEC_VERSION :: 1 -KHR_DRIVER_PROPERTIES_EXTENSION_NAME :: "VK_KHR_driver_properties" -MAX_DRIVER_NAME_SIZE_KHR :: MAX_DRIVER_NAME_SIZE -MAX_DRIVER_INFO_SIZE_KHR :: MAX_DRIVER_INFO_SIZE -KHR_shader_float_controls :: 1 -KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION :: 4 -KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME :: "VK_KHR_shader_float_controls" -KHR_depth_stencil_resolve :: 1 -KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION :: 1 -KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME :: "VK_KHR_depth_stencil_resolve" -KHR_swapchain_mutable_format :: 1 -KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION :: 1 -KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME :: "VK_KHR_swapchain_mutable_format" -KHR_timeline_semaphore :: 1 -KHR_TIMELINE_SEMAPHORE_SPEC_VERSION :: 2 -KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME :: "VK_KHR_timeline_semaphore" -KHR_vulkan_memory_model :: 1 -KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION :: 3 -KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME :: "VK_KHR_vulkan_memory_model" -KHR_shader_terminate_invocation :: 1 -KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION :: 1 -KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME :: "VK_KHR_shader_terminate_invocation" -KHR_fragment_shading_rate :: 1 -KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION :: 2 -KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME :: "VK_KHR_fragment_shading_rate" -KHR_spirv_1_4 :: 1 -KHR_SPIRV_1_4_SPEC_VERSION :: 1 -KHR_SPIRV_1_4_EXTENSION_NAME :: "VK_KHR_spirv_1_4" -KHR_surface_protected_capabilities :: 1 -KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION :: 1 -KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME :: "VK_KHR_surface_protected_capabilities" -KHR_separate_depth_stencil_layouts :: 1 -KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION :: 1 -KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME :: "VK_KHR_separate_depth_stencil_layouts" -KHR_present_wait :: 1 -KHR_PRESENT_WAIT_SPEC_VERSION :: 1 -KHR_PRESENT_WAIT_EXTENSION_NAME :: "VK_KHR_present_wait" -KHR_uniform_buffer_standard_layout :: 1 -KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION :: 1 -KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME :: "VK_KHR_uniform_buffer_standard_layout" -KHR_buffer_device_address :: 1 -KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION :: 1 -KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME :: "VK_KHR_buffer_device_address" -KHR_deferred_host_operations :: 1 -KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION :: 4 -KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME :: "VK_KHR_deferred_host_operations" -KHR_pipeline_executable_properties :: 1 -KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION :: 1 -KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME :: "VK_KHR_pipeline_executable_properties" -KHR_shader_integer_dot_product :: 1 -KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION :: 1 -KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME :: "VK_KHR_shader_integer_dot_product" -KHR_pipeline_library :: 1 -KHR_PIPELINE_LIBRARY_SPEC_VERSION :: 1 -KHR_PIPELINE_LIBRARY_EXTENSION_NAME :: "VK_KHR_pipeline_library" -KHR_shader_non_semantic_info :: 1 -KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION :: 1 -KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME :: "VK_KHR_shader_non_semantic_info" -KHR_present_id :: 1 -KHR_PRESENT_ID_SPEC_VERSION :: 1 -KHR_PRESENT_ID_EXTENSION_NAME :: "VK_KHR_present_id" -KHR_synchronization2 :: 1 -KHR_SYNCHRONIZATION_2_SPEC_VERSION :: 1 -KHR_SYNCHRONIZATION_2_EXTENSION_NAME :: "VK_KHR_synchronization2" -KHR_shader_subgroup_uniform_control_flow :: 1 -KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION :: 1 -KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME :: "VK_KHR_shader_subgroup_uniform_control_flow" -KHR_zero_initialize_workgroup_memory :: 1 -KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION :: 1 -KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME :: "VK_KHR_zero_initialize_workgroup_memory" -KHR_workgroup_memory_explicit_layout :: 1 -KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION :: 1 -KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME :: "VK_KHR_workgroup_memory_explicit_layout" -KHR_copy_commands2 :: 1 -KHR_COPY_COMMANDS_2_SPEC_VERSION :: 1 -KHR_COPY_COMMANDS_2_EXTENSION_NAME :: "VK_KHR_copy_commands2" -KHR_format_feature_flags2 :: 1 -KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION :: 1 -KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME :: "VK_KHR_format_feature_flags2" -KHR_portability_enumeration :: 1 -KHR_PORTABILITY_ENUMERATION_SPEC_VERSION :: 1 -KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME :: "VK_KHR_portability_enumeration" -KHR_maintenance4 :: 1 -KHR_MAINTENANCE_4_SPEC_VERSION :: 2 -KHR_MAINTENANCE_4_EXTENSION_NAME :: "VK_KHR_maintenance4" -EXT_debug_report :: 1 -EXT_DEBUG_REPORT_SPEC_VERSION :: 10 -EXT_DEBUG_REPORT_EXTENSION_NAME :: "VK_EXT_debug_report" -NV_glsl_shader :: 1 -NV_GLSL_SHADER_SPEC_VERSION :: 1 -NV_GLSL_SHADER_EXTENSION_NAME :: "VK_NV_glsl_shader" -EXT_depth_range_unrestricted :: 1 -EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION :: 1 -EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME :: "VK_EXT_depth_range_unrestricted" -AMD_rasterization_order :: 1 -AMD_RASTERIZATION_ORDER_SPEC_VERSION :: 1 -AMD_RASTERIZATION_ORDER_EXTENSION_NAME :: "VK_AMD_rasterization_order" -AMD_shader_trinary_minmax :: 1 -AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION :: 1 -AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME :: "VK_AMD_shader_trinary_minmax" -AMD_shader_explicit_vertex_parameter :: 1 -AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION :: 1 -AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME :: "VK_AMD_shader_explicit_vertex_parameter" -EXT_debug_marker :: 1 -EXT_DEBUG_MARKER_SPEC_VERSION :: 4 -EXT_DEBUG_MARKER_EXTENSION_NAME :: "VK_EXT_debug_marker" -AMD_gcn_shader :: 1 -AMD_GCN_SHADER_SPEC_VERSION :: 1 -AMD_GCN_SHADER_EXTENSION_NAME :: "VK_AMD_gcn_shader" -NV_dedicated_allocation :: 1 -NV_DEDICATED_ALLOCATION_SPEC_VERSION :: 1 -NV_DEDICATED_ALLOCATION_EXTENSION_NAME :: "VK_NV_dedicated_allocation" -EXT_transform_feedback :: 1 -EXT_TRANSFORM_FEEDBACK_SPEC_VERSION :: 1 -EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME :: "VK_EXT_transform_feedback" -NVX_binary_import :: 1 -NVX_BINARY_IMPORT_SPEC_VERSION :: 1 -NVX_BINARY_IMPORT_EXTENSION_NAME :: "VK_NVX_binary_import" -NVX_image_view_handle :: 1 -NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION :: 2 -NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME :: "VK_NVX_image_view_handle" -AMD_draw_indirect_count :: 1 -AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION :: 2 -AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME :: "VK_AMD_draw_indirect_count" -AMD_negative_viewport_height :: 1 -AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION :: 1 -AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME :: "VK_AMD_negative_viewport_height" -AMD_gpu_shader_half_float :: 1 -AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION :: 2 -AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME :: "VK_AMD_gpu_shader_half_float" -AMD_shader_ballot :: 1 -AMD_SHADER_BALLOT_SPEC_VERSION :: 1 -AMD_SHADER_BALLOT_EXTENSION_NAME :: "VK_AMD_shader_ballot" -AMD_texture_gather_bias_lod :: 1 -AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION :: 1 -AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME :: "VK_AMD_texture_gather_bias_lod" -AMD_shader_info :: 1 -AMD_SHADER_INFO_SPEC_VERSION :: 1 -AMD_SHADER_INFO_EXTENSION_NAME :: "VK_AMD_shader_info" -AMD_shader_image_load_store_lod :: 1 -AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION :: 1 -AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME :: "VK_AMD_shader_image_load_store_lod" -NV_corner_sampled_image :: 1 -NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION :: 2 -NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME :: "VK_NV_corner_sampled_image" -NV_external_memory_capabilities :: 1 -NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION :: 1 -NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME :: "VK_NV_external_memory_capabilities" -NV_external_memory :: 1 -NV_EXTERNAL_MEMORY_SPEC_VERSION :: 1 -NV_EXTERNAL_MEMORY_EXTENSION_NAME :: "VK_NV_external_memory" -EXT_validation_flags :: 1 -EXT_VALIDATION_FLAGS_SPEC_VERSION :: 2 -EXT_VALIDATION_FLAGS_EXTENSION_NAME :: "VK_EXT_validation_flags" -EXT_shader_subgroup_ballot :: 1 -EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION :: 1 -EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME :: "VK_EXT_shader_subgroup_ballot" -EXT_shader_subgroup_vote :: 1 -EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION :: 1 -EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME :: "VK_EXT_shader_subgroup_vote" -EXT_texture_compression_astc_hdr :: 1 -EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION :: 1 -EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME :: "VK_EXT_texture_compression_astc_hdr" -EXT_astc_decode_mode :: 1 -EXT_ASTC_DECODE_MODE_SPEC_VERSION :: 1 -EXT_ASTC_DECODE_MODE_EXTENSION_NAME :: "VK_EXT_astc_decode_mode" -EXT_conditional_rendering :: 1 -EXT_CONDITIONAL_RENDERING_SPEC_VERSION :: 2 -EXT_CONDITIONAL_RENDERING_EXTENSION_NAME :: "VK_EXT_conditional_rendering" -NV_clip_space_w_scaling :: 1 -NV_CLIP_SPACE_W_SCALING_SPEC_VERSION :: 1 -NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME :: "VK_NV_clip_space_w_scaling" -EXT_direct_mode_display :: 1 -EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION :: 1 -EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME :: "VK_EXT_direct_mode_display" -EXT_display_surface_counter :: 1 -EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION :: 1 -EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME :: "VK_EXT_display_surface_counter" -EXT_display_control :: 1 -EXT_DISPLAY_CONTROL_SPEC_VERSION :: 1 -EXT_DISPLAY_CONTROL_EXTENSION_NAME :: "VK_EXT_display_control" -GOOGLE_display_timing :: 1 -GOOGLE_DISPLAY_TIMING_SPEC_VERSION :: 1 -GOOGLE_DISPLAY_TIMING_EXTENSION_NAME :: "VK_GOOGLE_display_timing" -NV_sample_mask_override_coverage :: 1 -NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION :: 1 -NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME :: "VK_NV_sample_mask_override_coverage" -NV_geometry_shader_passthrough :: 1 -NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION :: 1 -NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME :: "VK_NV_geometry_shader_passthrough" -NV_viewport_array2 :: 1 -NV_VIEWPORT_ARRAY_2_SPEC_VERSION :: 1 -NV_VIEWPORT_ARRAY_2_EXTENSION_NAME :: "VK_NV_viewport_array2" -NV_VIEWPORT_ARRAY2_SPEC_VERSION :: NV_VIEWPORT_ARRAY_2_SPEC_VERSION -NV_VIEWPORT_ARRAY2_EXTENSION_NAME :: NV_VIEWPORT_ARRAY_2_EXTENSION_NAME -NVX_multiview_per_view_attributes :: 1 -NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION :: 1 -NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME :: "VK_NVX_multiview_per_view_attributes" -NV_viewport_swizzle :: 1 -NV_VIEWPORT_SWIZZLE_SPEC_VERSION :: 1 -NV_VIEWPORT_SWIZZLE_EXTENSION_NAME :: "VK_NV_viewport_swizzle" -EXT_discard_rectangles :: 1 -EXT_DISCARD_RECTANGLES_SPEC_VERSION :: 1 -EXT_DISCARD_RECTANGLES_EXTENSION_NAME :: "VK_EXT_discard_rectangles" -EXT_conservative_rasterization :: 1 -EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION :: 1 -EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME :: "VK_EXT_conservative_rasterization" -EXT_depth_clip_enable :: 1 -EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION :: 1 -EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME :: "VK_EXT_depth_clip_enable" -EXT_swapchain_colorspace :: 1 -EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION :: 4 -EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME :: "VK_EXT_swapchain_colorspace" -EXT_hdr_metadata :: 1 -EXT_HDR_METADATA_SPEC_VERSION :: 2 -EXT_HDR_METADATA_EXTENSION_NAME :: "VK_EXT_hdr_metadata" -EXT_external_memory_dma_buf :: 1 -EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION :: 1 -EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME :: "VK_EXT_external_memory_dma_buf" -EXT_queue_family_foreign :: 1 -EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION :: 1 -EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME :: "VK_EXT_queue_family_foreign" -EXT_debug_utils :: 1 -EXT_DEBUG_UTILS_SPEC_VERSION :: 2 -EXT_DEBUG_UTILS_EXTENSION_NAME :: "VK_EXT_debug_utils" -EXT_sampler_filter_minmax :: 1 -EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION :: 2 -EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME :: "VK_EXT_sampler_filter_minmax" -AMD_gpu_shader_int16 :: 1 -AMD_GPU_SHADER_INT16_SPEC_VERSION :: 2 -AMD_GPU_SHADER_INT16_EXTENSION_NAME :: "VK_AMD_gpu_shader_int16" -AMD_mixed_attachment_samples :: 1 -AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION :: 1 -AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME :: "VK_AMD_mixed_attachment_samples" -AMD_shader_fragment_mask :: 1 -AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION :: 1 -AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME :: "VK_AMD_shader_fragment_mask" -EXT_inline_uniform_block :: 1 -EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION :: 1 -EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME :: "VK_EXT_inline_uniform_block" -EXT_shader_stencil_export :: 1 -EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION :: 1 -EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME :: "VK_EXT_shader_stencil_export" -EXT_sample_locations :: 1 -EXT_SAMPLE_LOCATIONS_SPEC_VERSION :: 1 -EXT_SAMPLE_LOCATIONS_EXTENSION_NAME :: "VK_EXT_sample_locations" -EXT_blend_operation_advanced :: 1 -EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION :: 2 -EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME :: "VK_EXT_blend_operation_advanced" -NV_fragment_coverage_to_color :: 1 -NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION :: 1 -NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME :: "VK_NV_fragment_coverage_to_color" -NV_framebuffer_mixed_samples :: 1 -NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION :: 1 -NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME :: "VK_NV_framebuffer_mixed_samples" -NV_fill_rectangle :: 1 -NV_FILL_RECTANGLE_SPEC_VERSION :: 1 -NV_FILL_RECTANGLE_EXTENSION_NAME :: "VK_NV_fill_rectangle" -NV_shader_sm_builtins :: 1 -NV_SHADER_SM_BUILTINS_SPEC_VERSION :: 1 -NV_SHADER_SM_BUILTINS_EXTENSION_NAME :: "VK_NV_shader_sm_builtins" -EXT_post_depth_coverage :: 1 -EXT_POST_DEPTH_COVERAGE_SPEC_VERSION :: 1 -EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME :: "VK_EXT_post_depth_coverage" -EXT_image_drm_format_modifier :: 1 -EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION :: 2 -EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME :: "VK_EXT_image_drm_format_modifier" -EXT_validation_cache :: 1 -EXT_VALIDATION_CACHE_SPEC_VERSION :: 1 -EXT_VALIDATION_CACHE_EXTENSION_NAME :: "VK_EXT_validation_cache" -EXT_descriptor_indexing :: 1 -EXT_DESCRIPTOR_INDEXING_SPEC_VERSION :: 2 -EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME :: "VK_EXT_descriptor_indexing" -EXT_shader_viewport_index_layer :: 1 -EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION :: 1 -EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME :: "VK_EXT_shader_viewport_index_layer" -NV_shading_rate_image :: 1 -NV_SHADING_RATE_IMAGE_SPEC_VERSION :: 3 -NV_SHADING_RATE_IMAGE_EXTENSION_NAME :: "VK_NV_shading_rate_image" -NV_ray_tracing :: 1 -NV_RAY_TRACING_SPEC_VERSION :: 3 -NV_RAY_TRACING_EXTENSION_NAME :: "VK_NV_ray_tracing" -SHADER_UNUSED_KHR :: 0 -NV_representative_fragment_test :: 1 -NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION :: 2 -NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME :: "VK_NV_representative_fragment_test" -EXT_filter_cubic :: 1 -EXT_FILTER_CUBIC_SPEC_VERSION :: 3 -EXT_FILTER_CUBIC_EXTENSION_NAME :: "VK_EXT_filter_cubic" -EXT_global_priority :: 1 -EXT_GLOBAL_PRIORITY_SPEC_VERSION :: 2 -EXT_GLOBAL_PRIORITY_EXTENSION_NAME :: "VK_EXT_global_priority" -EXT_external_memory_host :: 1 -EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION :: 1 -EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME :: "VK_EXT_external_memory_host" -AMD_buffer_marker :: 1 -AMD_BUFFER_MARKER_SPEC_VERSION :: 1 -AMD_BUFFER_MARKER_EXTENSION_NAME :: "VK_AMD_buffer_marker" -AMD_pipeline_compiler_control :: 1 -AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION :: 1 -AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME :: "VK_AMD_pipeline_compiler_control" -EXT_calibrated_timestamps :: 1 -EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION :: 2 -EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME :: "VK_EXT_calibrated_timestamps" -AMD_shader_core_properties :: 1 -AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION :: 2 -AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME :: "VK_AMD_shader_core_properties" -AMD_memory_overallocation_behavior :: 1 -AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION :: 1 -AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME :: "VK_AMD_memory_overallocation_behavior" -EXT_vertex_attribute_divisor :: 1 -EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION :: 3 -EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME :: "VK_EXT_vertex_attribute_divisor" -EXT_pipeline_creation_feedback :: 1 -EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION :: 1 -EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME :: "VK_EXT_pipeline_creation_feedback" -NV_shader_subgroup_partitioned :: 1 -NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION :: 1 -NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME :: "VK_NV_shader_subgroup_partitioned" -NV_compute_shader_derivatives :: 1 -NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION :: 1 -NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME :: "VK_NV_compute_shader_derivatives" -NV_mesh_shader :: 1 -NV_MESH_SHADER_SPEC_VERSION :: 1 -NV_MESH_SHADER_EXTENSION_NAME :: "VK_NV_mesh_shader" -NV_fragment_shader_barycentric :: 1 -NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION :: 1 -NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME :: "VK_NV_fragment_shader_barycentric" -NV_shader_image_footprint :: 1 -NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION :: 2 -NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME :: "VK_NV_shader_image_footprint" -NV_scissor_exclusive :: 1 -NV_SCISSOR_EXCLUSIVE_SPEC_VERSION :: 1 -NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME :: "VK_NV_scissor_exclusive" -NV_device_diagnostic_checkpoints :: 1 -NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION :: 2 -NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME :: "VK_NV_device_diagnostic_checkpoints" -EXT_pci_bus_info :: 1 -EXT_PCI_BUS_INFO_SPEC_VERSION :: 2 -EXT_PCI_BUS_INFO_EXTENSION_NAME :: "VK_EXT_pci_bus_info" -AMD_display_native_hdr :: 1 -AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION :: 1 -AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME :: "VK_AMD_display_native_hdr" -EXT_fragment_density_map :: 1 -EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION :: 2 -EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME :: "VK_EXT_fragment_density_map" -EXT_scalar_block_layout :: 1 -EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION :: 1 -EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME :: "VK_EXT_scalar_block_layout" -GOOGLE_hlsl_functionality1 :: 1 -GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION :: 1 -GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME :: "VK_GOOGLE_hlsl_functionality1" -GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION :: GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION -GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME :: GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME -GOOGLE_decorate_string :: 1 -GOOGLE_DECORATE_STRING_SPEC_VERSION :: 1 -GOOGLE_DECORATE_STRING_EXTENSION_NAME :: "VK_GOOGLE_decorate_string" -EXT_subgroup_size_control :: 1 -EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION :: 2 -EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME :: "VK_EXT_subgroup_size_control" -AMD_shader_core_properties2 :: 1 -AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION :: 1 -AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME :: "VK_AMD_shader_core_properties2" -AMD_device_coherent_memory :: 1 -AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION :: 1 -AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME :: "VK_AMD_device_coherent_memory" -EXT_shader_image_atomic_int64 :: 1 -EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION :: 1 -EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME :: "VK_EXT_shader_image_atomic_int64" -EXT_memory_budget :: 1 -EXT_MEMORY_BUDGET_SPEC_VERSION :: 1 -EXT_MEMORY_BUDGET_EXTENSION_NAME :: "VK_EXT_memory_budget" -EXT_memory_priority :: 1 -EXT_MEMORY_PRIORITY_SPEC_VERSION :: 1 -EXT_MEMORY_PRIORITY_EXTENSION_NAME :: "VK_EXT_memory_priority" -NV_dedicated_allocation_image_aliasing :: 1 -NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION :: 1 -NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME :: "VK_NV_dedicated_allocation_image_aliasing" -EXT_buffer_device_address :: 1 -EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION :: 2 -EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME :: "VK_EXT_buffer_device_address" -EXT_tooling_info :: 1 -EXT_TOOLING_INFO_SPEC_VERSION :: 1 -EXT_TOOLING_INFO_EXTENSION_NAME :: "VK_EXT_tooling_info" -EXT_separate_stencil_usage :: 1 -EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION :: 1 -EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME :: "VK_EXT_separate_stencil_usage" -EXT_validation_features :: 1 -EXT_VALIDATION_FEATURES_SPEC_VERSION :: 5 -EXT_VALIDATION_FEATURES_EXTENSION_NAME :: "VK_EXT_validation_features" -NV_cooperative_matrix :: 1 -NV_COOPERATIVE_MATRIX_SPEC_VERSION :: 1 -NV_COOPERATIVE_MATRIX_EXTENSION_NAME :: "VK_NV_cooperative_matrix" -NV_coverage_reduction_mode :: 1 -NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION :: 1 -NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME :: "VK_NV_coverage_reduction_mode" -EXT_fragment_shader_interlock :: 1 -EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION :: 1 -EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME :: "VK_EXT_fragment_shader_interlock" -EXT_ycbcr_image_arrays :: 1 -EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION :: 1 -EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME :: "VK_EXT_ycbcr_image_arrays" -EXT_provoking_vertex :: 1 -EXT_PROVOKING_VERTEX_SPEC_VERSION :: 1 -EXT_PROVOKING_VERTEX_EXTENSION_NAME :: "VK_EXT_provoking_vertex" -EXT_headless_surface :: 1 -EXT_HEADLESS_SURFACE_SPEC_VERSION :: 1 -EXT_HEADLESS_SURFACE_EXTENSION_NAME :: "VK_EXT_headless_surface" -EXT_line_rasterization :: 1 -EXT_LINE_RASTERIZATION_SPEC_VERSION :: 1 -EXT_LINE_RASTERIZATION_EXTENSION_NAME :: "VK_EXT_line_rasterization" -EXT_shader_atomic_float :: 1 -EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION :: 1 -EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME :: "VK_EXT_shader_atomic_float" -EXT_host_query_reset :: 1 -EXT_HOST_QUERY_RESET_SPEC_VERSION :: 1 -EXT_HOST_QUERY_RESET_EXTENSION_NAME :: "VK_EXT_host_query_reset" -EXT_index_type_uint8 :: 1 -EXT_INDEX_TYPE_UINT8_SPEC_VERSION :: 1 -EXT_INDEX_TYPE_UINT8_EXTENSION_NAME :: "VK_EXT_index_type_uint8" -EXT_extended_dynamic_state :: 1 -EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION :: 1 -EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME :: "VK_EXT_extended_dynamic_state" -EXT_shader_atomic_float2 :: 1 -EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION :: 1 -EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME :: "VK_EXT_shader_atomic_float2" -EXT_shader_demote_to_helper_invocation :: 1 -EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION :: 1 -EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME :: "VK_EXT_shader_demote_to_helper_invocation" -NV_device_generated_commands :: 1 -NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION :: 3 -NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME :: "VK_NV_device_generated_commands" -NV_inherited_viewport_scissor :: 1 -NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION :: 1 -NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME :: "VK_NV_inherited_viewport_scissor" -EXT_texel_buffer_alignment :: 1 -EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION :: 1 -EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME :: "VK_EXT_texel_buffer_alignment" -EXT_device_memory_report :: 1 -EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION :: 2 -EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME :: "VK_EXT_device_memory_report" -EXT_acquire_drm_display :: 1 -EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION :: 1 -EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME :: "VK_EXT_acquire_drm_display" -EXT_robustness2 :: 1 -EXT_ROBUSTNESS_2_SPEC_VERSION :: 1 -EXT_ROBUSTNESS_2_EXTENSION_NAME :: "VK_EXT_robustness2" -EXT_custom_border_color :: 1 -EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION :: 12 -EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME :: "VK_EXT_custom_border_color" -GOOGLE_user_type :: 1 -GOOGLE_USER_TYPE_SPEC_VERSION :: 1 -GOOGLE_USER_TYPE_EXTENSION_NAME :: "VK_GOOGLE_user_type" -EXT_private_data :: 1 -EXT_PRIVATE_DATA_SPEC_VERSION :: 1 -EXT_PRIVATE_DATA_EXTENSION_NAME :: "VK_EXT_private_data" -EXT_pipeline_creation_cache_control :: 1 -EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION :: 3 -EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME :: "VK_EXT_pipeline_creation_cache_control" -NV_device_diagnostics_config :: 1 -NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION :: 1 -NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME :: "VK_NV_device_diagnostics_config" -EXT_graphics_pipeline_library :: 1 -EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION :: 1 -EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME :: "VK_EXT_graphics_pipeline_library" -NV_fragment_shading_rate_enums :: 1 -NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION :: 1 -NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME :: "VK_NV_fragment_shading_rate_enums" -NV_ray_tracing_motion_blur :: 1 -NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION :: 1 -NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME :: "VK_NV_ray_tracing_motion_blur" -EXT_ycbcr_2plane_444_formats :: 1 -EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION :: 1 -EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME :: "VK_EXT_ycbcr_2plane_444_formats" -EXT_fragment_density_map2 :: 1 -EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION :: 1 -EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME :: "VK_EXT_fragment_density_map2" -EXT_image_robustness :: 1 -EXT_IMAGE_ROBUSTNESS_SPEC_VERSION :: 1 -EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME :: "VK_EXT_image_robustness" -EXT_4444_formats :: 1 -EXT_4444_FORMATS_SPEC_VERSION :: 1 -EXT_4444_FORMATS_EXTENSION_NAME :: "VK_EXT_4444_formats" -EXT_rgba10x6_formats :: 1 -EXT_RGBA10X6_FORMATS_SPEC_VERSION :: 1 -EXT_RGBA10X6_FORMATS_EXTENSION_NAME :: "VK_EXT_rgba10x6_formats" -NV_acquire_winrt_display :: 1 -NV_ACQUIRE_WINRT_DISPLAY_SPEC_VERSION :: 1 -NV_ACQUIRE_WINRT_DISPLAY_EXTENSION_NAME :: "VK_NV_acquire_winrt_display" -EXT_vertex_input_dynamic_state :: 1 -EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION :: 2 -EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME :: "VK_EXT_vertex_input_dynamic_state" -EXT_physical_device_drm :: 1 -EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION :: 1 -EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME :: "VK_EXT_physical_device_drm" -EXT_depth_clip_control :: 1 -EXT_DEPTH_CLIP_CONTROL_SPEC_VERSION :: 1 -EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME :: "VK_EXT_depth_clip_control" -EXT_primitive_topology_list_restart :: 1 -EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION :: 1 -EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME :: "VK_EXT_primitive_topology_list_restart" -NV_external_memory_rdma :: 1 -NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION :: 1 -NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME :: "VK_NV_external_memory_rdma" -EXT_extended_dynamic_state2 :: 1 -EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION :: 1 -EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME :: "VK_EXT_extended_dynamic_state2" -EXT_color_write_enable :: 1 -EXT_COLOR_WRITE_ENABLE_SPEC_VERSION :: 1 -EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME :: "VK_EXT_color_write_enable" -EXT_primitives_generated_query :: 1 -EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION :: 1 -EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME :: "VK_EXT_primitives_generated_query" -EXT_global_priority_query :: 1 -EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION :: 1 -EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME :: "VK_EXT_global_priority_query" -EXT_image_view_min_lod :: 1 -EXT_IMAGE_VIEW_MIN_LOD_SPEC_VERSION :: 1 -EXT_IMAGE_VIEW_MIN_LOD_EXTENSION_NAME :: "VK_EXT_image_view_min_lod" -EXT_multi_draw :: 1 -EXT_MULTI_DRAW_SPEC_VERSION :: 1 -EXT_MULTI_DRAW_EXTENSION_NAME :: "VK_EXT_multi_draw" -EXT_image_2d_view_of_3d :: 1 -EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION :: 1 -EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME :: "VK_EXT_image_2d_view_of_3d" -EXT_load_store_op_none :: 1 -EXT_LOAD_STORE_OP_NONE_SPEC_VERSION :: 1 -EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME :: "VK_EXT_load_store_op_none" -EXT_border_color_swizzle :: 1 -EXT_BORDER_COLOR_SWIZZLE_SPEC_VERSION :: 1 -EXT_BORDER_COLOR_SWIZZLE_EXTENSION_NAME :: "VK_EXT_border_color_swizzle" -EXT_pageable_device_local_memory :: 1 -EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION :: 1 -EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME :: "VK_EXT_pageable_device_local_memory" -NV_linear_color_attachment :: 1 -NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION :: 1 -NV_LINEAR_COLOR_ATTACHMENT_EXTENSION_NAME :: "VK_NV_linear_color_attachment" -GOOGLE_surfaceless_query :: 1 -GOOGLE_SURFACELESS_QUERY_SPEC_VERSION :: 1 -GOOGLE_SURFACELESS_QUERY_EXTENSION_NAME :: "VK_GOOGLE_surfaceless_query" -KHR_acceleration_structure :: 1 -KHR_ACCELERATION_STRUCTURE_SPEC_VERSION :: 13 -KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME :: "VK_KHR_acceleration_structure" -KHR_ray_tracing_pipeline :: 1 -KHR_RAY_TRACING_PIPELINE_SPEC_VERSION :: 1 -KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME :: "VK_KHR_ray_tracing_pipeline" -KHR_ray_query :: 1 -KHR_RAY_QUERY_SPEC_VERSION :: 1 -KHR_RAY_QUERY_EXTENSION_NAME :: "VK_KHR_ray_query" -KHR_win32_surface :: 1 -KHR_WIN32_SURFACE_SPEC_VERSION :: 6 -KHR_WIN32_SURFACE_EXTENSION_NAME :: "VK_KHR_win32_surface" -KHR_external_memory_win32 :: 1 -KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION :: 1 -KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME :: "VK_KHR_external_memory_win32" -KHR_win32_keyed_mutex :: 1 -KHR_WIN32_KEYED_MUTEX_SPEC_VERSION :: 1 -KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME :: "VK_KHR_win32_keyed_mutex" -KHR_external_semaphore_win32 :: 1 -KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION :: 1 -KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME :: "VK_KHR_external_semaphore_win32" -KHR_external_fence_win32 :: 1 -KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION :: 1 -KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME :: "VK_KHR_external_fence_win32" -NV_external_memory_win32 :: 1 -NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION :: 1 -NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME :: "VK_NV_external_memory_win32" -NV_win32_keyed_mutex :: 1 -NV_WIN32_KEYED_MUTEX_SPEC_VERSION :: 2 -NV_WIN32_KEYED_MUTEX_EXTENSION_NAME :: "VK_NV_win32_keyed_mutex" -EXT_full_screen_exclusive :: 1 -EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION :: 4 -EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME :: "VK_EXT_full_screen_exclusive" -EXT_metal_surface :: 1 -EXT_METAL_SURFACE_SPEC_VERSION :: 1 -EXT_METAL_SURFACE_EXTENSION_NAME :: "VK_EXT_metal_surface" - -// Handles types -Instance :: distinct Handle -PhysicalDevice :: distinct Handle -Device :: distinct Handle -Queue :: distinct Handle -CommandBuffer :: distinct Handle -Buffer :: distinct NonDispatchableHandle -Image :: distinct NonDispatchableHandle -Semaphore :: distinct NonDispatchableHandle -Fence :: distinct NonDispatchableHandle -DeviceMemory :: distinct NonDispatchableHandle -Event :: distinct NonDispatchableHandle -QueryPool :: distinct NonDispatchableHandle -BufferView :: distinct NonDispatchableHandle -ImageView :: distinct NonDispatchableHandle -ShaderModule :: distinct NonDispatchableHandle -PipelineCache :: distinct NonDispatchableHandle -PipelineLayout :: distinct NonDispatchableHandle -Pipeline :: distinct NonDispatchableHandle -RenderPass :: distinct NonDispatchableHandle -DescriptorSetLayout :: distinct NonDispatchableHandle -Sampler :: distinct NonDispatchableHandle -DescriptorSet :: distinct NonDispatchableHandle -DescriptorPool :: distinct NonDispatchableHandle -Framebuffer :: distinct NonDispatchableHandle -CommandPool :: distinct NonDispatchableHandle -SamplerYcbcrConversion :: distinct NonDispatchableHandle -DescriptorUpdateTemplate :: distinct NonDispatchableHandle -PrivateDataSlot :: distinct NonDispatchableHandle -SurfaceKHR :: distinct NonDispatchableHandle -SwapchainKHR :: distinct NonDispatchableHandle -DisplayKHR :: distinct NonDispatchableHandle -DisplayModeKHR :: distinct NonDispatchableHandle -DeferredOperationKHR :: distinct NonDispatchableHandle -DebugReportCallbackEXT :: distinct NonDispatchableHandle -CuModuleNVX :: distinct NonDispatchableHandle -CuFunctionNVX :: distinct NonDispatchableHandle -DebugUtilsMessengerEXT :: distinct NonDispatchableHandle -ValidationCacheEXT :: distinct NonDispatchableHandle -AccelerationStructureNV :: distinct NonDispatchableHandle -PerformanceConfigurationINTEL :: distinct NonDispatchableHandle -IndirectCommandsLayoutNV :: distinct NonDispatchableHandle -AccelerationStructureKHR :: distinct NonDispatchableHandle - - +// +// Vulkan wrapper generated from "https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/master/include/vulkan/vulkan_core.h" +// +package vulkan +API_VERSION_1_0 :: (1<<22) | (0<<12) | (0) +API_VERSION_1_1 :: (1<<22) | (1<<12) | (0) +API_VERSION_1_2 :: (1<<22) | (2<<12) | (0) +API_VERSION_1_3 :: (1<<22) | (3<<12) | (0) + +MAKE_VERSION :: proc(major, minor, patch: u32) -> u32 { + return (major<<22) | (minor<<12) | (patch) +} + +// Base types +Flags :: distinct u32 +Flags64 :: distinct u64 +DeviceSize :: distinct u64 +DeviceAddress :: distinct u64 +SampleMask :: distinct u32 + +Handle :: distinct rawptr +NonDispatchableHandle :: distinct u64 + +SetProcAddressType :: #type proc(p: rawptr, name: cstring) + + +RemoteAddressNV :: distinct rawptr // Declared inline before MemoryGetRemoteAddressInfoNV + +// Base constants +LOD_CLAMP_NONE :: 1000.0 +REMAINING_MIP_LEVELS :: ~u32(0) +REMAINING_ARRAY_LAYERS :: ~u32(0) +WHOLE_SIZE :: ~u64(0) +ATTACHMENT_UNUSED :: ~u32(0) +TRUE :: 1 +FALSE :: 0 +QUEUE_FAMILY_IGNORED :: ~u32(0) +SUBPASS_EXTERNAL :: ~u32(0) +MAX_PHYSICAL_DEVICE_NAME_SIZE :: 256 +UUID_SIZE :: 16 +MAX_MEMORY_TYPES :: 32 +MAX_MEMORY_HEAPS :: 16 +MAX_EXTENSION_NAME_SIZE :: 256 +MAX_DESCRIPTION_SIZE :: 256 +MAX_DEVICE_GROUP_SIZE :: 32 +LUID_SIZE_KHX :: 8 +LUID_SIZE :: 8 +MAX_QUEUE_FAMILY_EXTERNAL :: ~u32(1) +MAX_GLOBAL_PRIORITY_SIZE_EXT :: 16 +QUEUE_FAMILY_EXTERNAL :: MAX_QUEUE_FAMILY_EXTERNAL + +// General Constants +HEADER_VERSION :: 211 +MAX_DRIVER_NAME_SIZE :: 256 +MAX_DRIVER_INFO_SIZE :: 256 + +// Vendor Constants +KHR_surface :: 1 +KHR_SURFACE_SPEC_VERSION :: 25 +KHR_SURFACE_EXTENSION_NAME :: "VK_KHR_surface" +KHR_swapchain :: 1 +KHR_SWAPCHAIN_SPEC_VERSION :: 70 +KHR_SWAPCHAIN_EXTENSION_NAME :: "VK_KHR_swapchain" +KHR_display :: 1 +KHR_DISPLAY_SPEC_VERSION :: 23 +KHR_DISPLAY_EXTENSION_NAME :: "VK_KHR_display" +KHR_display_swapchain :: 1 +KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION :: 10 +KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME :: "VK_KHR_display_swapchain" +KHR_sampler_mirror_clamp_to_edge :: 1 +KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION :: 3 +KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME :: "VK_KHR_sampler_mirror_clamp_to_edge" +KHR_dynamic_rendering :: 1 +KHR_DYNAMIC_RENDERING_SPEC_VERSION :: 1 +KHR_DYNAMIC_RENDERING_EXTENSION_NAME :: "VK_KHR_dynamic_rendering" +KHR_multiview :: 1 +KHR_MULTIVIEW_SPEC_VERSION :: 1 +KHR_MULTIVIEW_EXTENSION_NAME :: "VK_KHR_multiview" +KHR_get_physical_device_properties2 :: 1 +KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION :: 2 +KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME :: "VK_KHR_get_physical_device_properties2" +KHR_device_group :: 1 +KHR_DEVICE_GROUP_SPEC_VERSION :: 4 +KHR_DEVICE_GROUP_EXTENSION_NAME :: "VK_KHR_device_group" +KHR_shader_draw_parameters :: 1 +KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION :: 1 +KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME :: "VK_KHR_shader_draw_parameters" +KHR_maintenance1 :: 1 +KHR_MAINTENANCE_1_SPEC_VERSION :: 2 +KHR_MAINTENANCE_1_EXTENSION_NAME :: "VK_KHR_maintenance1" +KHR_MAINTENANCE1_SPEC_VERSION :: KHR_MAINTENANCE_1_SPEC_VERSION +KHR_MAINTENANCE1_EXTENSION_NAME :: KHR_MAINTENANCE_1_EXTENSION_NAME +KHR_device_group_creation :: 1 +KHR_DEVICE_GROUP_CREATION_SPEC_VERSION :: 1 +KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME :: "VK_KHR_device_group_creation" +MAX_DEVICE_GROUP_SIZE_KHR :: MAX_DEVICE_GROUP_SIZE +KHR_external_memory_capabilities :: 1 +KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION :: 1 +KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME :: "VK_KHR_external_memory_capabilities" +LUID_SIZE_KHR :: LUID_SIZE +KHR_external_memory :: 1 +KHR_EXTERNAL_MEMORY_SPEC_VERSION :: 1 +KHR_EXTERNAL_MEMORY_EXTENSION_NAME :: "VK_KHR_external_memory" +QUEUE_FAMILY_EXTERNAL_KHR :: QUEUE_FAMILY_EXTERNAL +KHR_external_memory_fd :: 1 +KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION :: 1 +KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME :: "VK_KHR_external_memory_fd" +KHR_external_semaphore_capabilities :: 1 +KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION :: 1 +KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME :: "VK_KHR_external_semaphore_capabilities" +KHR_external_semaphore :: 1 +KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION :: 1 +KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME :: "VK_KHR_external_semaphore" +KHR_external_semaphore_fd :: 1 +KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION :: 1 +KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME :: "VK_KHR_external_semaphore_fd" +KHR_push_descriptor :: 1 +KHR_PUSH_DESCRIPTOR_SPEC_VERSION :: 2 +KHR_PUSH_DESCRIPTOR_EXTENSION_NAME :: "VK_KHR_push_descriptor" +KHR_shader_float16_int8 :: 1 +KHR_SHADER_FLOAT16_INT8_SPEC_VERSION :: 1 +KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME :: "VK_KHR_shader_float16_int8" +KHR_16bit_storage :: 1 +KHR_16BIT_STORAGE_SPEC_VERSION :: 1 +KHR_16BIT_STORAGE_EXTENSION_NAME :: "VK_KHR_16bit_storage" +KHR_incremental_present :: 1 +KHR_INCREMENTAL_PRESENT_SPEC_VERSION :: 2 +KHR_INCREMENTAL_PRESENT_EXTENSION_NAME :: "VK_KHR_incremental_present" +KHR_descriptor_update_template :: 1 +KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION :: 1 +KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME :: "VK_KHR_descriptor_update_template" +KHR_imageless_framebuffer :: 1 +KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION :: 1 +KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME :: "VK_KHR_imageless_framebuffer" +KHR_create_renderpass2 :: 1 +KHR_CREATE_RENDERPASS_2_SPEC_VERSION :: 1 +KHR_CREATE_RENDERPASS_2_EXTENSION_NAME :: "VK_KHR_create_renderpass2" +KHR_shared_presentable_image :: 1 +KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION :: 1 +KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME :: "VK_KHR_shared_presentable_image" +KHR_external_fence_capabilities :: 1 +KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION :: 1 +KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME :: "VK_KHR_external_fence_capabilities" +KHR_external_fence :: 1 +KHR_EXTERNAL_FENCE_SPEC_VERSION :: 1 +KHR_EXTERNAL_FENCE_EXTENSION_NAME :: "VK_KHR_external_fence" +KHR_external_fence_fd :: 1 +KHR_EXTERNAL_FENCE_FD_SPEC_VERSION :: 1 +KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME :: "VK_KHR_external_fence_fd" +KHR_performance_query :: 1 +KHR_PERFORMANCE_QUERY_SPEC_VERSION :: 1 +KHR_PERFORMANCE_QUERY_EXTENSION_NAME :: "VK_KHR_performance_query" +KHR_maintenance2 :: 1 +KHR_MAINTENANCE_2_SPEC_VERSION :: 1 +KHR_MAINTENANCE_2_EXTENSION_NAME :: "VK_KHR_maintenance2" +KHR_MAINTENANCE2_SPEC_VERSION :: KHR_MAINTENANCE_2_SPEC_VERSION +KHR_MAINTENANCE2_EXTENSION_NAME :: KHR_MAINTENANCE_2_EXTENSION_NAME +KHR_get_surface_capabilities2 :: 1 +KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION :: 1 +KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME :: "VK_KHR_get_surface_capabilities2" +KHR_variable_pointers :: 1 +KHR_VARIABLE_POINTERS_SPEC_VERSION :: 1 +KHR_VARIABLE_POINTERS_EXTENSION_NAME :: "VK_KHR_variable_pointers" +KHR_get_display_properties2 :: 1 +KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION :: 1 +KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME :: "VK_KHR_get_display_properties2" +KHR_dedicated_allocation :: 1 +KHR_DEDICATED_ALLOCATION_SPEC_VERSION :: 3 +KHR_DEDICATED_ALLOCATION_EXTENSION_NAME :: "VK_KHR_dedicated_allocation" +KHR_storage_buffer_storage_class :: 1 +KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION :: 1 +KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME :: "VK_KHR_storage_buffer_storage_class" +KHR_relaxed_block_layout :: 1 +KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION :: 1 +KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME :: "VK_KHR_relaxed_block_layout" +KHR_get_memory_requirements2 :: 1 +KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION :: 1 +KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME :: "VK_KHR_get_memory_requirements2" +KHR_image_format_list :: 1 +KHR_IMAGE_FORMAT_LIST_SPEC_VERSION :: 1 +KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME :: "VK_KHR_image_format_list" +KHR_sampler_ycbcr_conversion :: 1 +KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION :: 14 +KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME :: "VK_KHR_sampler_ycbcr_conversion" +KHR_bind_memory2 :: 1 +KHR_BIND_MEMORY_2_SPEC_VERSION :: 1 +KHR_BIND_MEMORY_2_EXTENSION_NAME :: "VK_KHR_bind_memory2" +KHR_maintenance3 :: 1 +KHR_MAINTENANCE_3_SPEC_VERSION :: 1 +KHR_MAINTENANCE_3_EXTENSION_NAME :: "VK_KHR_maintenance3" +KHR_MAINTENANCE3_SPEC_VERSION :: KHR_MAINTENANCE_3_SPEC_VERSION +KHR_MAINTENANCE3_EXTENSION_NAME :: KHR_MAINTENANCE_3_EXTENSION_NAME +KHR_draw_indirect_count :: 1 +KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION :: 1 +KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME :: "VK_KHR_draw_indirect_count" +KHR_shader_subgroup_extended_types :: 1 +KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION :: 1 +KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME :: "VK_KHR_shader_subgroup_extended_types" +KHR_8bit_storage :: 1 +KHR_8BIT_STORAGE_SPEC_VERSION :: 1 +KHR_8BIT_STORAGE_EXTENSION_NAME :: "VK_KHR_8bit_storage" +KHR_shader_atomic_int64 :: 1 +KHR_SHADER_ATOMIC_INT64_SPEC_VERSION :: 1 +KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME :: "VK_KHR_shader_atomic_int64" +KHR_shader_clock :: 1 +KHR_SHADER_CLOCK_SPEC_VERSION :: 1 +KHR_SHADER_CLOCK_EXTENSION_NAME :: "VK_KHR_shader_clock" +KHR_global_priority :: 1 +MAX_GLOBAL_PRIORITY_SIZE_KHR :: 16 +KHR_GLOBAL_PRIORITY_SPEC_VERSION :: 1 +KHR_GLOBAL_PRIORITY_EXTENSION_NAME :: "VK_KHR_global_priority" +KHR_driver_properties :: 1 +KHR_DRIVER_PROPERTIES_SPEC_VERSION :: 1 +KHR_DRIVER_PROPERTIES_EXTENSION_NAME :: "VK_KHR_driver_properties" +MAX_DRIVER_NAME_SIZE_KHR :: MAX_DRIVER_NAME_SIZE +MAX_DRIVER_INFO_SIZE_KHR :: MAX_DRIVER_INFO_SIZE +KHR_shader_float_controls :: 1 +KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION :: 4 +KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME :: "VK_KHR_shader_float_controls" +KHR_depth_stencil_resolve :: 1 +KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION :: 1 +KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME :: "VK_KHR_depth_stencil_resolve" +KHR_swapchain_mutable_format :: 1 +KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION :: 1 +KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME :: "VK_KHR_swapchain_mutable_format" +KHR_timeline_semaphore :: 1 +KHR_TIMELINE_SEMAPHORE_SPEC_VERSION :: 2 +KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME :: "VK_KHR_timeline_semaphore" +KHR_vulkan_memory_model :: 1 +KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION :: 3 +KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME :: "VK_KHR_vulkan_memory_model" +KHR_shader_terminate_invocation :: 1 +KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION :: 1 +KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME :: "VK_KHR_shader_terminate_invocation" +KHR_fragment_shading_rate :: 1 +KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION :: 2 +KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME :: "VK_KHR_fragment_shading_rate" +KHR_spirv_1_4 :: 1 +KHR_SPIRV_1_4_SPEC_VERSION :: 1 +KHR_SPIRV_1_4_EXTENSION_NAME :: "VK_KHR_spirv_1_4" +KHR_surface_protected_capabilities :: 1 +KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION :: 1 +KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME :: "VK_KHR_surface_protected_capabilities" +KHR_separate_depth_stencil_layouts :: 1 +KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION :: 1 +KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME :: "VK_KHR_separate_depth_stencil_layouts" +KHR_present_wait :: 1 +KHR_PRESENT_WAIT_SPEC_VERSION :: 1 +KHR_PRESENT_WAIT_EXTENSION_NAME :: "VK_KHR_present_wait" +KHR_uniform_buffer_standard_layout :: 1 +KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION :: 1 +KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME :: "VK_KHR_uniform_buffer_standard_layout" +KHR_buffer_device_address :: 1 +KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION :: 1 +KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME :: "VK_KHR_buffer_device_address" +KHR_deferred_host_operations :: 1 +KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION :: 4 +KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME :: "VK_KHR_deferred_host_operations" +KHR_pipeline_executable_properties :: 1 +KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION :: 1 +KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME :: "VK_KHR_pipeline_executable_properties" +KHR_shader_integer_dot_product :: 1 +KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION :: 1 +KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME :: "VK_KHR_shader_integer_dot_product" +KHR_pipeline_library :: 1 +KHR_PIPELINE_LIBRARY_SPEC_VERSION :: 1 +KHR_PIPELINE_LIBRARY_EXTENSION_NAME :: "VK_KHR_pipeline_library" +KHR_shader_non_semantic_info :: 1 +KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION :: 1 +KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME :: "VK_KHR_shader_non_semantic_info" +KHR_present_id :: 1 +KHR_PRESENT_ID_SPEC_VERSION :: 1 +KHR_PRESENT_ID_EXTENSION_NAME :: "VK_KHR_present_id" +KHR_synchronization2 :: 1 +KHR_SYNCHRONIZATION_2_SPEC_VERSION :: 1 +KHR_SYNCHRONIZATION_2_EXTENSION_NAME :: "VK_KHR_synchronization2" +KHR_shader_subgroup_uniform_control_flow :: 1 +KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION :: 1 +KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME :: "VK_KHR_shader_subgroup_uniform_control_flow" +KHR_zero_initialize_workgroup_memory :: 1 +KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION :: 1 +KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME :: "VK_KHR_zero_initialize_workgroup_memory" +KHR_workgroup_memory_explicit_layout :: 1 +KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION :: 1 +KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME :: "VK_KHR_workgroup_memory_explicit_layout" +KHR_copy_commands2 :: 1 +KHR_COPY_COMMANDS_2_SPEC_VERSION :: 1 +KHR_COPY_COMMANDS_2_EXTENSION_NAME :: "VK_KHR_copy_commands2" +KHR_format_feature_flags2 :: 1 +KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION :: 1 +KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME :: "VK_KHR_format_feature_flags2" +KHR_portability_enumeration :: 1 +KHR_PORTABILITY_ENUMERATION_SPEC_VERSION :: 1 +KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME :: "VK_KHR_portability_enumeration" +KHR_maintenance4 :: 1 +KHR_MAINTENANCE_4_SPEC_VERSION :: 2 +KHR_MAINTENANCE_4_EXTENSION_NAME :: "VK_KHR_maintenance4" +EXT_debug_report :: 1 +EXT_DEBUG_REPORT_SPEC_VERSION :: 10 +EXT_DEBUG_REPORT_EXTENSION_NAME :: "VK_EXT_debug_report" +NV_glsl_shader :: 1 +NV_GLSL_SHADER_SPEC_VERSION :: 1 +NV_GLSL_SHADER_EXTENSION_NAME :: "VK_NV_glsl_shader" +EXT_depth_range_unrestricted :: 1 +EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION :: 1 +EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME :: "VK_EXT_depth_range_unrestricted" +AMD_rasterization_order :: 1 +AMD_RASTERIZATION_ORDER_SPEC_VERSION :: 1 +AMD_RASTERIZATION_ORDER_EXTENSION_NAME :: "VK_AMD_rasterization_order" +AMD_shader_trinary_minmax :: 1 +AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION :: 1 +AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME :: "VK_AMD_shader_trinary_minmax" +AMD_shader_explicit_vertex_parameter :: 1 +AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION :: 1 +AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME :: "VK_AMD_shader_explicit_vertex_parameter" +EXT_debug_marker :: 1 +EXT_DEBUG_MARKER_SPEC_VERSION :: 4 +EXT_DEBUG_MARKER_EXTENSION_NAME :: "VK_EXT_debug_marker" +AMD_gcn_shader :: 1 +AMD_GCN_SHADER_SPEC_VERSION :: 1 +AMD_GCN_SHADER_EXTENSION_NAME :: "VK_AMD_gcn_shader" +NV_dedicated_allocation :: 1 +NV_DEDICATED_ALLOCATION_SPEC_VERSION :: 1 +NV_DEDICATED_ALLOCATION_EXTENSION_NAME :: "VK_NV_dedicated_allocation" +EXT_transform_feedback :: 1 +EXT_TRANSFORM_FEEDBACK_SPEC_VERSION :: 1 +EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME :: "VK_EXT_transform_feedback" +NVX_binary_import :: 1 +NVX_BINARY_IMPORT_SPEC_VERSION :: 1 +NVX_BINARY_IMPORT_EXTENSION_NAME :: "VK_NVX_binary_import" +NVX_image_view_handle :: 1 +NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION :: 2 +NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME :: "VK_NVX_image_view_handle" +AMD_draw_indirect_count :: 1 +AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION :: 2 +AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME :: "VK_AMD_draw_indirect_count" +AMD_negative_viewport_height :: 1 +AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION :: 1 +AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME :: "VK_AMD_negative_viewport_height" +AMD_gpu_shader_half_float :: 1 +AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION :: 2 +AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME :: "VK_AMD_gpu_shader_half_float" +AMD_shader_ballot :: 1 +AMD_SHADER_BALLOT_SPEC_VERSION :: 1 +AMD_SHADER_BALLOT_EXTENSION_NAME :: "VK_AMD_shader_ballot" +AMD_texture_gather_bias_lod :: 1 +AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION :: 1 +AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME :: "VK_AMD_texture_gather_bias_lod" +AMD_shader_info :: 1 +AMD_SHADER_INFO_SPEC_VERSION :: 1 +AMD_SHADER_INFO_EXTENSION_NAME :: "VK_AMD_shader_info" +AMD_shader_image_load_store_lod :: 1 +AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION :: 1 +AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME :: "VK_AMD_shader_image_load_store_lod" +NV_corner_sampled_image :: 1 +NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION :: 2 +NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME :: "VK_NV_corner_sampled_image" +NV_external_memory_capabilities :: 1 +NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION :: 1 +NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME :: "VK_NV_external_memory_capabilities" +NV_external_memory :: 1 +NV_EXTERNAL_MEMORY_SPEC_VERSION :: 1 +NV_EXTERNAL_MEMORY_EXTENSION_NAME :: "VK_NV_external_memory" +EXT_validation_flags :: 1 +EXT_VALIDATION_FLAGS_SPEC_VERSION :: 2 +EXT_VALIDATION_FLAGS_EXTENSION_NAME :: "VK_EXT_validation_flags" +EXT_shader_subgroup_ballot :: 1 +EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION :: 1 +EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME :: "VK_EXT_shader_subgroup_ballot" +EXT_shader_subgroup_vote :: 1 +EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION :: 1 +EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME :: "VK_EXT_shader_subgroup_vote" +EXT_texture_compression_astc_hdr :: 1 +EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION :: 1 +EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME :: "VK_EXT_texture_compression_astc_hdr" +EXT_astc_decode_mode :: 1 +EXT_ASTC_DECODE_MODE_SPEC_VERSION :: 1 +EXT_ASTC_DECODE_MODE_EXTENSION_NAME :: "VK_EXT_astc_decode_mode" +EXT_conditional_rendering :: 1 +EXT_CONDITIONAL_RENDERING_SPEC_VERSION :: 2 +EXT_CONDITIONAL_RENDERING_EXTENSION_NAME :: "VK_EXT_conditional_rendering" +NV_clip_space_w_scaling :: 1 +NV_CLIP_SPACE_W_SCALING_SPEC_VERSION :: 1 +NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME :: "VK_NV_clip_space_w_scaling" +EXT_direct_mode_display :: 1 +EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION :: 1 +EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME :: "VK_EXT_direct_mode_display" +EXT_display_surface_counter :: 1 +EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION :: 1 +EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME :: "VK_EXT_display_surface_counter" +EXT_display_control :: 1 +EXT_DISPLAY_CONTROL_SPEC_VERSION :: 1 +EXT_DISPLAY_CONTROL_EXTENSION_NAME :: "VK_EXT_display_control" +GOOGLE_display_timing :: 1 +GOOGLE_DISPLAY_TIMING_SPEC_VERSION :: 1 +GOOGLE_DISPLAY_TIMING_EXTENSION_NAME :: "VK_GOOGLE_display_timing" +NV_sample_mask_override_coverage :: 1 +NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION :: 1 +NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME :: "VK_NV_sample_mask_override_coverage" +NV_geometry_shader_passthrough :: 1 +NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION :: 1 +NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME :: "VK_NV_geometry_shader_passthrough" +NV_viewport_array2 :: 1 +NV_VIEWPORT_ARRAY_2_SPEC_VERSION :: 1 +NV_VIEWPORT_ARRAY_2_EXTENSION_NAME :: "VK_NV_viewport_array2" +NV_VIEWPORT_ARRAY2_SPEC_VERSION :: NV_VIEWPORT_ARRAY_2_SPEC_VERSION +NV_VIEWPORT_ARRAY2_EXTENSION_NAME :: NV_VIEWPORT_ARRAY_2_EXTENSION_NAME +NVX_multiview_per_view_attributes :: 1 +NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION :: 1 +NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME :: "VK_NVX_multiview_per_view_attributes" +NV_viewport_swizzle :: 1 +NV_VIEWPORT_SWIZZLE_SPEC_VERSION :: 1 +NV_VIEWPORT_SWIZZLE_EXTENSION_NAME :: "VK_NV_viewport_swizzle" +EXT_discard_rectangles :: 1 +EXT_DISCARD_RECTANGLES_SPEC_VERSION :: 1 +EXT_DISCARD_RECTANGLES_EXTENSION_NAME :: "VK_EXT_discard_rectangles" +EXT_conservative_rasterization :: 1 +EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION :: 1 +EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME :: "VK_EXT_conservative_rasterization" +EXT_depth_clip_enable :: 1 +EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION :: 1 +EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME :: "VK_EXT_depth_clip_enable" +EXT_swapchain_colorspace :: 1 +EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION :: 4 +EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME :: "VK_EXT_swapchain_colorspace" +EXT_hdr_metadata :: 1 +EXT_HDR_METADATA_SPEC_VERSION :: 2 +EXT_HDR_METADATA_EXTENSION_NAME :: "VK_EXT_hdr_metadata" +EXT_external_memory_dma_buf :: 1 +EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION :: 1 +EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME :: "VK_EXT_external_memory_dma_buf" +EXT_queue_family_foreign :: 1 +EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION :: 1 +EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME :: "VK_EXT_queue_family_foreign" +EXT_debug_utils :: 1 +EXT_DEBUG_UTILS_SPEC_VERSION :: 2 +EXT_DEBUG_UTILS_EXTENSION_NAME :: "VK_EXT_debug_utils" +EXT_sampler_filter_minmax :: 1 +EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION :: 2 +EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME :: "VK_EXT_sampler_filter_minmax" +AMD_gpu_shader_int16 :: 1 +AMD_GPU_SHADER_INT16_SPEC_VERSION :: 2 +AMD_GPU_SHADER_INT16_EXTENSION_NAME :: "VK_AMD_gpu_shader_int16" +AMD_mixed_attachment_samples :: 1 +AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION :: 1 +AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME :: "VK_AMD_mixed_attachment_samples" +AMD_shader_fragment_mask :: 1 +AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION :: 1 +AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME :: "VK_AMD_shader_fragment_mask" +EXT_inline_uniform_block :: 1 +EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION :: 1 +EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME :: "VK_EXT_inline_uniform_block" +EXT_shader_stencil_export :: 1 +EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION :: 1 +EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME :: "VK_EXT_shader_stencil_export" +EXT_sample_locations :: 1 +EXT_SAMPLE_LOCATIONS_SPEC_VERSION :: 1 +EXT_SAMPLE_LOCATIONS_EXTENSION_NAME :: "VK_EXT_sample_locations" +EXT_blend_operation_advanced :: 1 +EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION :: 2 +EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME :: "VK_EXT_blend_operation_advanced" +NV_fragment_coverage_to_color :: 1 +NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION :: 1 +NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME :: "VK_NV_fragment_coverage_to_color" +NV_framebuffer_mixed_samples :: 1 +NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION :: 1 +NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME :: "VK_NV_framebuffer_mixed_samples" +NV_fill_rectangle :: 1 +NV_FILL_RECTANGLE_SPEC_VERSION :: 1 +NV_FILL_RECTANGLE_EXTENSION_NAME :: "VK_NV_fill_rectangle" +NV_shader_sm_builtins :: 1 +NV_SHADER_SM_BUILTINS_SPEC_VERSION :: 1 +NV_SHADER_SM_BUILTINS_EXTENSION_NAME :: "VK_NV_shader_sm_builtins" +EXT_post_depth_coverage :: 1 +EXT_POST_DEPTH_COVERAGE_SPEC_VERSION :: 1 +EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME :: "VK_EXT_post_depth_coverage" +EXT_image_drm_format_modifier :: 1 +EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION :: 2 +EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME :: "VK_EXT_image_drm_format_modifier" +EXT_validation_cache :: 1 +EXT_VALIDATION_CACHE_SPEC_VERSION :: 1 +EXT_VALIDATION_CACHE_EXTENSION_NAME :: "VK_EXT_validation_cache" +EXT_descriptor_indexing :: 1 +EXT_DESCRIPTOR_INDEXING_SPEC_VERSION :: 2 +EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME :: "VK_EXT_descriptor_indexing" +EXT_shader_viewport_index_layer :: 1 +EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION :: 1 +EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME :: "VK_EXT_shader_viewport_index_layer" +NV_shading_rate_image :: 1 +NV_SHADING_RATE_IMAGE_SPEC_VERSION :: 3 +NV_SHADING_RATE_IMAGE_EXTENSION_NAME :: "VK_NV_shading_rate_image" +NV_ray_tracing :: 1 +NV_RAY_TRACING_SPEC_VERSION :: 3 +NV_RAY_TRACING_EXTENSION_NAME :: "VK_NV_ray_tracing" +SHADER_UNUSED_KHR :: 0 +NV_representative_fragment_test :: 1 +NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION :: 2 +NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME :: "VK_NV_representative_fragment_test" +EXT_filter_cubic :: 1 +EXT_FILTER_CUBIC_SPEC_VERSION :: 3 +EXT_FILTER_CUBIC_EXTENSION_NAME :: "VK_EXT_filter_cubic" +EXT_global_priority :: 1 +EXT_GLOBAL_PRIORITY_SPEC_VERSION :: 2 +EXT_GLOBAL_PRIORITY_EXTENSION_NAME :: "VK_EXT_global_priority" +EXT_external_memory_host :: 1 +EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION :: 1 +EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME :: "VK_EXT_external_memory_host" +AMD_buffer_marker :: 1 +AMD_BUFFER_MARKER_SPEC_VERSION :: 1 +AMD_BUFFER_MARKER_EXTENSION_NAME :: "VK_AMD_buffer_marker" +AMD_pipeline_compiler_control :: 1 +AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION :: 1 +AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME :: "VK_AMD_pipeline_compiler_control" +EXT_calibrated_timestamps :: 1 +EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION :: 2 +EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME :: "VK_EXT_calibrated_timestamps" +AMD_shader_core_properties :: 1 +AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION :: 2 +AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME :: "VK_AMD_shader_core_properties" +AMD_memory_overallocation_behavior :: 1 +AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION :: 1 +AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME :: "VK_AMD_memory_overallocation_behavior" +EXT_vertex_attribute_divisor :: 1 +EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION :: 3 +EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME :: "VK_EXT_vertex_attribute_divisor" +EXT_pipeline_creation_feedback :: 1 +EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION :: 1 +EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME :: "VK_EXT_pipeline_creation_feedback" +NV_shader_subgroup_partitioned :: 1 +NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION :: 1 +NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME :: "VK_NV_shader_subgroup_partitioned" +NV_compute_shader_derivatives :: 1 +NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION :: 1 +NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME :: "VK_NV_compute_shader_derivatives" +NV_mesh_shader :: 1 +NV_MESH_SHADER_SPEC_VERSION :: 1 +NV_MESH_SHADER_EXTENSION_NAME :: "VK_NV_mesh_shader" +NV_fragment_shader_barycentric :: 1 +NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION :: 1 +NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME :: "VK_NV_fragment_shader_barycentric" +NV_shader_image_footprint :: 1 +NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION :: 2 +NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME :: "VK_NV_shader_image_footprint" +NV_scissor_exclusive :: 1 +NV_SCISSOR_EXCLUSIVE_SPEC_VERSION :: 1 +NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME :: "VK_NV_scissor_exclusive" +NV_device_diagnostic_checkpoints :: 1 +NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION :: 2 +NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME :: "VK_NV_device_diagnostic_checkpoints" +EXT_pci_bus_info :: 1 +EXT_PCI_BUS_INFO_SPEC_VERSION :: 2 +EXT_PCI_BUS_INFO_EXTENSION_NAME :: "VK_EXT_pci_bus_info" +AMD_display_native_hdr :: 1 +AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION :: 1 +AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME :: "VK_AMD_display_native_hdr" +EXT_fragment_density_map :: 1 +EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION :: 2 +EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME :: "VK_EXT_fragment_density_map" +EXT_scalar_block_layout :: 1 +EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION :: 1 +EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME :: "VK_EXT_scalar_block_layout" +GOOGLE_hlsl_functionality1 :: 1 +GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION :: 1 +GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME :: "VK_GOOGLE_hlsl_functionality1" +GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION :: GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION +GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME :: GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME +GOOGLE_decorate_string :: 1 +GOOGLE_DECORATE_STRING_SPEC_VERSION :: 1 +GOOGLE_DECORATE_STRING_EXTENSION_NAME :: "VK_GOOGLE_decorate_string" +EXT_subgroup_size_control :: 1 +EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION :: 2 +EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME :: "VK_EXT_subgroup_size_control" +AMD_shader_core_properties2 :: 1 +AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION :: 1 +AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME :: "VK_AMD_shader_core_properties2" +AMD_device_coherent_memory :: 1 +AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION :: 1 +AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME :: "VK_AMD_device_coherent_memory" +EXT_shader_image_atomic_int64 :: 1 +EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION :: 1 +EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME :: "VK_EXT_shader_image_atomic_int64" +EXT_memory_budget :: 1 +EXT_MEMORY_BUDGET_SPEC_VERSION :: 1 +EXT_MEMORY_BUDGET_EXTENSION_NAME :: "VK_EXT_memory_budget" +EXT_memory_priority :: 1 +EXT_MEMORY_PRIORITY_SPEC_VERSION :: 1 +EXT_MEMORY_PRIORITY_EXTENSION_NAME :: "VK_EXT_memory_priority" +NV_dedicated_allocation_image_aliasing :: 1 +NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION :: 1 +NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME :: "VK_NV_dedicated_allocation_image_aliasing" +EXT_buffer_device_address :: 1 +EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION :: 2 +EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME :: "VK_EXT_buffer_device_address" +EXT_tooling_info :: 1 +EXT_TOOLING_INFO_SPEC_VERSION :: 1 +EXT_TOOLING_INFO_EXTENSION_NAME :: "VK_EXT_tooling_info" +EXT_separate_stencil_usage :: 1 +EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION :: 1 +EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME :: "VK_EXT_separate_stencil_usage" +EXT_validation_features :: 1 +EXT_VALIDATION_FEATURES_SPEC_VERSION :: 5 +EXT_VALIDATION_FEATURES_EXTENSION_NAME :: "VK_EXT_validation_features" +NV_cooperative_matrix :: 1 +NV_COOPERATIVE_MATRIX_SPEC_VERSION :: 1 +NV_COOPERATIVE_MATRIX_EXTENSION_NAME :: "VK_NV_cooperative_matrix" +NV_coverage_reduction_mode :: 1 +NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION :: 1 +NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME :: "VK_NV_coverage_reduction_mode" +EXT_fragment_shader_interlock :: 1 +EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION :: 1 +EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME :: "VK_EXT_fragment_shader_interlock" +EXT_ycbcr_image_arrays :: 1 +EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION :: 1 +EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME :: "VK_EXT_ycbcr_image_arrays" +EXT_provoking_vertex :: 1 +EXT_PROVOKING_VERTEX_SPEC_VERSION :: 1 +EXT_PROVOKING_VERTEX_EXTENSION_NAME :: "VK_EXT_provoking_vertex" +EXT_headless_surface :: 1 +EXT_HEADLESS_SURFACE_SPEC_VERSION :: 1 +EXT_HEADLESS_SURFACE_EXTENSION_NAME :: "VK_EXT_headless_surface" +EXT_line_rasterization :: 1 +EXT_LINE_RASTERIZATION_SPEC_VERSION :: 1 +EXT_LINE_RASTERIZATION_EXTENSION_NAME :: "VK_EXT_line_rasterization" +EXT_shader_atomic_float :: 1 +EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION :: 1 +EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME :: "VK_EXT_shader_atomic_float" +EXT_host_query_reset :: 1 +EXT_HOST_QUERY_RESET_SPEC_VERSION :: 1 +EXT_HOST_QUERY_RESET_EXTENSION_NAME :: "VK_EXT_host_query_reset" +EXT_index_type_uint8 :: 1 +EXT_INDEX_TYPE_UINT8_SPEC_VERSION :: 1 +EXT_INDEX_TYPE_UINT8_EXTENSION_NAME :: "VK_EXT_index_type_uint8" +EXT_extended_dynamic_state :: 1 +EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION :: 1 +EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME :: "VK_EXT_extended_dynamic_state" +EXT_shader_atomic_float2 :: 1 +EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION :: 1 +EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME :: "VK_EXT_shader_atomic_float2" +EXT_shader_demote_to_helper_invocation :: 1 +EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION :: 1 +EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME :: "VK_EXT_shader_demote_to_helper_invocation" +NV_device_generated_commands :: 1 +NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION :: 3 +NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME :: "VK_NV_device_generated_commands" +NV_inherited_viewport_scissor :: 1 +NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION :: 1 +NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME :: "VK_NV_inherited_viewport_scissor" +EXT_texel_buffer_alignment :: 1 +EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION :: 1 +EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME :: "VK_EXT_texel_buffer_alignment" +EXT_device_memory_report :: 1 +EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION :: 2 +EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME :: "VK_EXT_device_memory_report" +EXT_acquire_drm_display :: 1 +EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION :: 1 +EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME :: "VK_EXT_acquire_drm_display" +EXT_robustness2 :: 1 +EXT_ROBUSTNESS_2_SPEC_VERSION :: 1 +EXT_ROBUSTNESS_2_EXTENSION_NAME :: "VK_EXT_robustness2" +EXT_custom_border_color :: 1 +EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION :: 12 +EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME :: "VK_EXT_custom_border_color" +GOOGLE_user_type :: 1 +GOOGLE_USER_TYPE_SPEC_VERSION :: 1 +GOOGLE_USER_TYPE_EXTENSION_NAME :: "VK_GOOGLE_user_type" +EXT_private_data :: 1 +EXT_PRIVATE_DATA_SPEC_VERSION :: 1 +EXT_PRIVATE_DATA_EXTENSION_NAME :: "VK_EXT_private_data" +EXT_pipeline_creation_cache_control :: 1 +EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION :: 3 +EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME :: "VK_EXT_pipeline_creation_cache_control" +NV_device_diagnostics_config :: 1 +NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION :: 1 +NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME :: "VK_NV_device_diagnostics_config" +EXT_graphics_pipeline_library :: 1 +EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION :: 1 +EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME :: "VK_EXT_graphics_pipeline_library" +NV_fragment_shading_rate_enums :: 1 +NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION :: 1 +NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME :: "VK_NV_fragment_shading_rate_enums" +NV_ray_tracing_motion_blur :: 1 +NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION :: 1 +NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME :: "VK_NV_ray_tracing_motion_blur" +EXT_ycbcr_2plane_444_formats :: 1 +EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION :: 1 +EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME :: "VK_EXT_ycbcr_2plane_444_formats" +EXT_fragment_density_map2 :: 1 +EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION :: 1 +EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME :: "VK_EXT_fragment_density_map2" +EXT_image_robustness :: 1 +EXT_IMAGE_ROBUSTNESS_SPEC_VERSION :: 1 +EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME :: "VK_EXT_image_robustness" +EXT_4444_formats :: 1 +EXT_4444_FORMATS_SPEC_VERSION :: 1 +EXT_4444_FORMATS_EXTENSION_NAME :: "VK_EXT_4444_formats" +EXT_rgba10x6_formats :: 1 +EXT_RGBA10X6_FORMATS_SPEC_VERSION :: 1 +EXT_RGBA10X6_FORMATS_EXTENSION_NAME :: "VK_EXT_rgba10x6_formats" +NV_acquire_winrt_display :: 1 +NV_ACQUIRE_WINRT_DISPLAY_SPEC_VERSION :: 1 +NV_ACQUIRE_WINRT_DISPLAY_EXTENSION_NAME :: "VK_NV_acquire_winrt_display" +EXT_vertex_input_dynamic_state :: 1 +EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION :: 2 +EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME :: "VK_EXT_vertex_input_dynamic_state" +EXT_physical_device_drm :: 1 +EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION :: 1 +EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME :: "VK_EXT_physical_device_drm" +EXT_depth_clip_control :: 1 +EXT_DEPTH_CLIP_CONTROL_SPEC_VERSION :: 1 +EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME :: "VK_EXT_depth_clip_control" +EXT_primitive_topology_list_restart :: 1 +EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION :: 1 +EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME :: "VK_EXT_primitive_topology_list_restart" +NV_external_memory_rdma :: 1 +NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION :: 1 +NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME :: "VK_NV_external_memory_rdma" +EXT_extended_dynamic_state2 :: 1 +EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION :: 1 +EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME :: "VK_EXT_extended_dynamic_state2" +EXT_color_write_enable :: 1 +EXT_COLOR_WRITE_ENABLE_SPEC_VERSION :: 1 +EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME :: "VK_EXT_color_write_enable" +EXT_primitives_generated_query :: 1 +EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION :: 1 +EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME :: "VK_EXT_primitives_generated_query" +EXT_global_priority_query :: 1 +EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION :: 1 +EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME :: "VK_EXT_global_priority_query" +EXT_image_view_min_lod :: 1 +EXT_IMAGE_VIEW_MIN_LOD_SPEC_VERSION :: 1 +EXT_IMAGE_VIEW_MIN_LOD_EXTENSION_NAME :: "VK_EXT_image_view_min_lod" +EXT_multi_draw :: 1 +EXT_MULTI_DRAW_SPEC_VERSION :: 1 +EXT_MULTI_DRAW_EXTENSION_NAME :: "VK_EXT_multi_draw" +EXT_image_2d_view_of_3d :: 1 +EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION :: 1 +EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME :: "VK_EXT_image_2d_view_of_3d" +EXT_load_store_op_none :: 1 +EXT_LOAD_STORE_OP_NONE_SPEC_VERSION :: 1 +EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME :: "VK_EXT_load_store_op_none" +EXT_border_color_swizzle :: 1 +EXT_BORDER_COLOR_SWIZZLE_SPEC_VERSION :: 1 +EXT_BORDER_COLOR_SWIZZLE_EXTENSION_NAME :: "VK_EXT_border_color_swizzle" +EXT_pageable_device_local_memory :: 1 +EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION :: 1 +EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME :: "VK_EXT_pageable_device_local_memory" +NV_linear_color_attachment :: 1 +NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION :: 1 +NV_LINEAR_COLOR_ATTACHMENT_EXTENSION_NAME :: "VK_NV_linear_color_attachment" +GOOGLE_surfaceless_query :: 1 +GOOGLE_SURFACELESS_QUERY_SPEC_VERSION :: 1 +GOOGLE_SURFACELESS_QUERY_EXTENSION_NAME :: "VK_GOOGLE_surfaceless_query" +KHR_acceleration_structure :: 1 +KHR_ACCELERATION_STRUCTURE_SPEC_VERSION :: 13 +KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME :: "VK_KHR_acceleration_structure" +KHR_ray_tracing_pipeline :: 1 +KHR_RAY_TRACING_PIPELINE_SPEC_VERSION :: 1 +KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME :: "VK_KHR_ray_tracing_pipeline" +KHR_ray_query :: 1 +KHR_RAY_QUERY_SPEC_VERSION :: 1 +KHR_RAY_QUERY_EXTENSION_NAME :: "VK_KHR_ray_query" +KHR_win32_surface :: 1 +KHR_WIN32_SURFACE_SPEC_VERSION :: 6 +KHR_WIN32_SURFACE_EXTENSION_NAME :: "VK_KHR_win32_surface" +KHR_external_memory_win32 :: 1 +KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION :: 1 +KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME :: "VK_KHR_external_memory_win32" +KHR_win32_keyed_mutex :: 1 +KHR_WIN32_KEYED_MUTEX_SPEC_VERSION :: 1 +KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME :: "VK_KHR_win32_keyed_mutex" +KHR_external_semaphore_win32 :: 1 +KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION :: 1 +KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME :: "VK_KHR_external_semaphore_win32" +KHR_external_fence_win32 :: 1 +KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION :: 1 +KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME :: "VK_KHR_external_fence_win32" +NV_external_memory_win32 :: 1 +NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION :: 1 +NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME :: "VK_NV_external_memory_win32" +NV_win32_keyed_mutex :: 1 +NV_WIN32_KEYED_MUTEX_SPEC_VERSION :: 2 +NV_WIN32_KEYED_MUTEX_EXTENSION_NAME :: "VK_NV_win32_keyed_mutex" +EXT_full_screen_exclusive :: 1 +EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION :: 4 +EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME :: "VK_EXT_full_screen_exclusive" +EXT_metal_surface :: 1 +EXT_METAL_SURFACE_SPEC_VERSION :: 1 +EXT_METAL_SURFACE_EXTENSION_NAME :: "VK_EXT_metal_surface" +KHR_wayland_surface :: 1 +KHR_WAYLAND_SURFACE_SPEC_VERSION :: 6 +KHR_WAYLAND_SURFACE_EXTENSION_NAME :: "VK_KHR_wayland_surface" + +// Handles types +Instance :: distinct Handle +PhysicalDevice :: distinct Handle +Device :: distinct Handle +Queue :: distinct Handle +CommandBuffer :: distinct Handle +Buffer :: distinct NonDispatchableHandle +Image :: distinct NonDispatchableHandle +Semaphore :: distinct NonDispatchableHandle +Fence :: distinct NonDispatchableHandle +DeviceMemory :: distinct NonDispatchableHandle +Event :: distinct NonDispatchableHandle +QueryPool :: distinct NonDispatchableHandle +BufferView :: distinct NonDispatchableHandle +ImageView :: distinct NonDispatchableHandle +ShaderModule :: distinct NonDispatchableHandle +PipelineCache :: distinct NonDispatchableHandle +PipelineLayout :: distinct NonDispatchableHandle +Pipeline :: distinct NonDispatchableHandle +RenderPass :: distinct NonDispatchableHandle +DescriptorSetLayout :: distinct NonDispatchableHandle +Sampler :: distinct NonDispatchableHandle +DescriptorSet :: distinct NonDispatchableHandle +DescriptorPool :: distinct NonDispatchableHandle +Framebuffer :: distinct NonDispatchableHandle +CommandPool :: distinct NonDispatchableHandle +SamplerYcbcrConversion :: distinct NonDispatchableHandle +DescriptorUpdateTemplate :: distinct NonDispatchableHandle +PrivateDataSlot :: distinct NonDispatchableHandle +SurfaceKHR :: distinct NonDispatchableHandle +SwapchainKHR :: distinct NonDispatchableHandle +DisplayKHR :: distinct NonDispatchableHandle +DisplayModeKHR :: distinct NonDispatchableHandle +DeferredOperationKHR :: distinct NonDispatchableHandle +DebugReportCallbackEXT :: distinct NonDispatchableHandle +CuModuleNVX :: distinct NonDispatchableHandle +CuFunctionNVX :: distinct NonDispatchableHandle +DebugUtilsMessengerEXT :: distinct NonDispatchableHandle +ValidationCacheEXT :: distinct NonDispatchableHandle +AccelerationStructureNV :: distinct NonDispatchableHandle +PerformanceConfigurationINTEL :: distinct NonDispatchableHandle +IndirectCommandsLayoutNV :: distinct NonDispatchableHandle +AccelerationStructureKHR :: distinct NonDispatchableHandle + + diff --git a/vendor/vulkan/enums.odin b/vendor/vulkan/enums.odin index b2eec06ab..9360a1e3e 100644 --- a/vendor/vulkan/enums.odin +++ b/vendor/vulkan/enums.odin @@ -1,3179 +1,3181 @@ -// -// Vulkan wrapper generated from "https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/master/include/vulkan/vulkan_core.h" -// -package vulkan - -import "core:c" - -// Enums -AccelerationStructureBuildTypeKHR :: enum c.int { - HOST = 0, - DEVICE = 1, - HOST_OR_DEVICE = 2, -} - -AccelerationStructureCompatibilityKHR :: enum c.int { - COMPATIBLE = 0, - INCOMPATIBLE = 1, -} - -AccelerationStructureCreateFlagsKHR :: distinct bit_set[AccelerationStructureCreateFlagKHR; Flags] -AccelerationStructureCreateFlagKHR :: enum Flags { - DEVICE_ADDRESS_CAPTURE_REPLAY = 0, - MOTION_NV = 2, -} - -AccelerationStructureMemoryRequirementsTypeNV :: enum c.int { - OBJECT = 0, - BUILD_SCRATCH = 1, - UPDATE_SCRATCH = 2, -} - -AccelerationStructureMotionInstanceTypeNV :: enum c.int { - STATIC = 0, - MATRIX_MOTION = 1, - SRT_MOTION = 2, -} - -AccelerationStructureTypeKHR :: enum c.int { - TOP_LEVEL = 0, - BOTTOM_LEVEL = 1, - GENERIC = 2, - TOP_LEVEL_NV = TOP_LEVEL, - BOTTOM_LEVEL_NV = BOTTOM_LEVEL, -} - -AccessFlags :: distinct bit_set[AccessFlag; Flags] -AccessFlag :: enum Flags { - INDIRECT_COMMAND_READ = 0, - INDEX_READ = 1, - VERTEX_ATTRIBUTE_READ = 2, - UNIFORM_READ = 3, - INPUT_ATTACHMENT_READ = 4, - SHADER_READ = 5, - SHADER_WRITE = 6, - COLOR_ATTACHMENT_READ = 7, - COLOR_ATTACHMENT_WRITE = 8, - DEPTH_STENCIL_ATTACHMENT_READ = 9, - DEPTH_STENCIL_ATTACHMENT_WRITE = 10, - TRANSFER_READ = 11, - TRANSFER_WRITE = 12, - HOST_READ = 13, - HOST_WRITE = 14, - MEMORY_READ = 15, - MEMORY_WRITE = 16, - TRANSFORM_FEEDBACK_WRITE_EXT = 25, - TRANSFORM_FEEDBACK_COUNTER_READ_EXT = 26, - TRANSFORM_FEEDBACK_COUNTER_WRITE_EXT = 27, - CONDITIONAL_RENDERING_READ_EXT = 20, - COLOR_ATTACHMENT_READ_NONCOHERENT_EXT = 19, - ACCELERATION_STRUCTURE_READ_KHR = 21, - ACCELERATION_STRUCTURE_WRITE_KHR = 22, - FRAGMENT_DENSITY_MAP_READ_EXT = 24, - FRAGMENT_SHADING_RATE_ATTACHMENT_READ_KHR = 23, - COMMAND_PREPROCESS_READ_NV = 17, - COMMAND_PREPROCESS_WRITE_NV = 18, - SHADING_RATE_IMAGE_READ_NV = FRAGMENT_SHADING_RATE_ATTACHMENT_READ_KHR, - ACCELERATION_STRUCTURE_READ_NV = ACCELERATION_STRUCTURE_READ_KHR, - ACCELERATION_STRUCTURE_WRITE_NV = ACCELERATION_STRUCTURE_WRITE_KHR, -} - -AccessFlags_NONE :: AccessFlags{} - - -AcquireProfilingLockFlagsKHR :: distinct bit_set[AcquireProfilingLockFlagKHR; Flags] -AcquireProfilingLockFlagKHR :: enum Flags { -} - -AttachmentDescriptionFlags :: distinct bit_set[AttachmentDescriptionFlag; Flags] -AttachmentDescriptionFlag :: enum Flags { - MAY_ALIAS = 0, -} - -AttachmentLoadOp :: enum c.int { - LOAD = 0, - CLEAR = 1, - DONT_CARE = 2, - NONE_EXT = 1000400000, -} - -AttachmentStoreOp :: enum c.int { - STORE = 0, - DONT_CARE = 1, - NONE = 1000301000, -} - -BlendFactor :: enum c.int { - ZERO = 0, - ONE = 1, - SRC_COLOR = 2, - ONE_MINUS_SRC_COLOR = 3, - DST_COLOR = 4, - ONE_MINUS_DST_COLOR = 5, - SRC_ALPHA = 6, - ONE_MINUS_SRC_ALPHA = 7, - DST_ALPHA = 8, - ONE_MINUS_DST_ALPHA = 9, - CONSTANT_COLOR = 10, - ONE_MINUS_CONSTANT_COLOR = 11, - CONSTANT_ALPHA = 12, - ONE_MINUS_CONSTANT_ALPHA = 13, - SRC_ALPHA_SATURATE = 14, - SRC1_COLOR = 15, - ONE_MINUS_SRC1_COLOR = 16, - SRC1_ALPHA = 17, - ONE_MINUS_SRC1_ALPHA = 18, -} - -BlendOp :: enum c.int { - ADD = 0, - SUBTRACT = 1, - REVERSE_SUBTRACT = 2, - MIN = 3, - MAX = 4, - ZERO_EXT = 1000148000, - SRC_EXT = 1000148001, - DST_EXT = 1000148002, - SRC_OVER_EXT = 1000148003, - DST_OVER_EXT = 1000148004, - SRC_IN_EXT = 1000148005, - DST_IN_EXT = 1000148006, - SRC_OUT_EXT = 1000148007, - DST_OUT_EXT = 1000148008, - SRC_ATOP_EXT = 1000148009, - DST_ATOP_EXT = 1000148010, - XOR_EXT = 1000148011, - MULTIPLY_EXT = 1000148012, - SCREEN_EXT = 1000148013, - OVERLAY_EXT = 1000148014, - DARKEN_EXT = 1000148015, - LIGHTEN_EXT = 1000148016, - COLORDODGE_EXT = 1000148017, - COLORBURN_EXT = 1000148018, - HARDLIGHT_EXT = 1000148019, - SOFTLIGHT_EXT = 1000148020, - DIFFERENCE_EXT = 1000148021, - EXCLUSION_EXT = 1000148022, - INVERT_EXT = 1000148023, - INVERT_RGB_EXT = 1000148024, - LINEARDODGE_EXT = 1000148025, - LINEARBURN_EXT = 1000148026, - VIVIDLIGHT_EXT = 1000148027, - LINEARLIGHT_EXT = 1000148028, - PINLIGHT_EXT = 1000148029, - HARDMIX_EXT = 1000148030, - HSL_HUE_EXT = 1000148031, - HSL_SATURATION_EXT = 1000148032, - HSL_COLOR_EXT = 1000148033, - HSL_LUMINOSITY_EXT = 1000148034, - PLUS_EXT = 1000148035, - PLUS_CLAMPED_EXT = 1000148036, - PLUS_CLAMPED_ALPHA_EXT = 1000148037, - PLUS_DARKER_EXT = 1000148038, - MINUS_EXT = 1000148039, - MINUS_CLAMPED_EXT = 1000148040, - CONTRAST_EXT = 1000148041, - INVERT_OVG_EXT = 1000148042, - RED_EXT = 1000148043, - GREEN_EXT = 1000148044, - BLUE_EXT = 1000148045, -} - -BlendOverlapEXT :: enum c.int { - UNCORRELATED = 0, - DISJOINT = 1, - CONJOINT = 2, -} - -BorderColor :: enum c.int { - FLOAT_TRANSPARENT_BLACK = 0, - INT_TRANSPARENT_BLACK = 1, - FLOAT_OPAQUE_BLACK = 2, - INT_OPAQUE_BLACK = 3, - FLOAT_OPAQUE_WHITE = 4, - INT_OPAQUE_WHITE = 5, - FLOAT_CUSTOM_EXT = 1000287003, - INT_CUSTOM_EXT = 1000287004, -} - -BufferCreateFlags :: distinct bit_set[BufferCreateFlag; Flags] -BufferCreateFlag :: enum Flags { - SPARSE_BINDING = 0, - SPARSE_RESIDENCY = 1, - SPARSE_ALIASED = 2, - PROTECTED = 3, - DEVICE_ADDRESS_CAPTURE_REPLAY = 4, - DEVICE_ADDRESS_CAPTURE_REPLAY_EXT = DEVICE_ADDRESS_CAPTURE_REPLAY, - DEVICE_ADDRESS_CAPTURE_REPLAY_KHR = DEVICE_ADDRESS_CAPTURE_REPLAY, -} - -BufferUsageFlags :: distinct bit_set[BufferUsageFlag; Flags] -BufferUsageFlag :: enum Flags { - TRANSFER_SRC = 0, - TRANSFER_DST = 1, - UNIFORM_TEXEL_BUFFER = 2, - STORAGE_TEXEL_BUFFER = 3, - UNIFORM_BUFFER = 4, - STORAGE_BUFFER = 5, - INDEX_BUFFER = 6, - VERTEX_BUFFER = 7, - INDIRECT_BUFFER = 8, - SHADER_DEVICE_ADDRESS = 17, - VIDEO_DECODE_SRC_KHR = 13, - VIDEO_DECODE_DST_KHR = 14, - TRANSFORM_FEEDBACK_BUFFER_EXT = 11, - TRANSFORM_FEEDBACK_COUNTER_BUFFER_EXT = 12, - CONDITIONAL_RENDERING_EXT = 9, - ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_KHR = 19, - ACCELERATION_STRUCTURE_STORAGE_KHR = 20, - SHADER_BINDING_TABLE_KHR = 10, - VIDEO_ENCODE_DST_KHR = 15, - VIDEO_ENCODE_SRC_KHR = 16, - RAY_TRACING_NV = SHADER_BINDING_TABLE_KHR, - SHADER_DEVICE_ADDRESS_EXT = SHADER_DEVICE_ADDRESS, - SHADER_DEVICE_ADDRESS_KHR = SHADER_DEVICE_ADDRESS, -} - -BuildAccelerationStructureFlagsKHR :: distinct bit_set[BuildAccelerationStructureFlagKHR; Flags] -BuildAccelerationStructureFlagKHR :: enum Flags { - ALLOW_UPDATE = 0, - ALLOW_COMPACTION = 1, - PREFER_FAST_TRACE = 2, - PREFER_FAST_BUILD = 3, - LOW_MEMORY = 4, - MOTION_NV = 5, - ALLOW_UPDATE_NV = ALLOW_UPDATE, - ALLOW_COMPACTION_NV = ALLOW_COMPACTION, - PREFER_FAST_TRACE_NV = PREFER_FAST_TRACE, - PREFER_FAST_BUILD_NV = PREFER_FAST_BUILD, - LOW_MEMORY_NV = LOW_MEMORY, -} - -BuildAccelerationStructureModeKHR :: enum c.int { - BUILD = 0, - UPDATE = 1, -} - -ChromaLocation :: enum c.int { - COSITED_EVEN = 0, - MIDPOINT = 1, - COSITED_EVEN_KHR = COSITED_EVEN, - MIDPOINT_KHR = MIDPOINT, -} - -CoarseSampleOrderTypeNV :: enum c.int { - DEFAULT = 0, - CUSTOM = 1, - PIXEL_MAJOR = 2, - SAMPLE_MAJOR = 3, -} - -ColorComponentFlags :: distinct bit_set[ColorComponentFlag; Flags] -ColorComponentFlag :: enum Flags { - R = 0, - G = 1, - B = 2, - A = 3, -} - -ColorSpaceKHR :: enum c.int { - SRGB_NONLINEAR = 0, - DISPLAY_P3_NONLINEAR_EXT = 1000104001, - EXTENDED_SRGB_LINEAR_EXT = 1000104002, - DISPLAY_P3_LINEAR_EXT = 1000104003, - DCI_P3_NONLINEAR_EXT = 1000104004, - BT709_LINEAR_EXT = 1000104005, - BT709_NONLINEAR_EXT = 1000104006, - BT2020_LINEAR_EXT = 1000104007, - HDR10_ST2084_EXT = 1000104008, - DOLBYVISION_EXT = 1000104009, - HDR10_HLG_EXT = 1000104010, - ADOBERGB_LINEAR_EXT = 1000104011, - ADOBERGB_NONLINEAR_EXT = 1000104012, - PASS_THROUGH_EXT = 1000104013, - EXTENDED_SRGB_NONLINEAR_EXT = 1000104014, - DISPLAY_NATIVE_AMD = 1000213000, - COLORSPACE_SRGB_NONLINEAR = SRGB_NONLINEAR, - DCI_P3_LINEAR_EXT = DISPLAY_P3_LINEAR_EXT, -} - -CommandBufferLevel :: enum c.int { - PRIMARY = 0, - SECONDARY = 1, -} - -CommandBufferResetFlags :: distinct bit_set[CommandBufferResetFlag; Flags] -CommandBufferResetFlag :: enum Flags { - RELEASE_RESOURCES = 0, -} - -CommandBufferUsageFlags :: distinct bit_set[CommandBufferUsageFlag; Flags] -CommandBufferUsageFlag :: enum Flags { - ONE_TIME_SUBMIT = 0, - RENDER_PASS_CONTINUE = 1, - SIMULTANEOUS_USE = 2, -} - -CommandPoolCreateFlags :: distinct bit_set[CommandPoolCreateFlag; Flags] -CommandPoolCreateFlag :: enum Flags { - TRANSIENT = 0, - RESET_COMMAND_BUFFER = 1, - PROTECTED = 2, -} - -CommandPoolResetFlags :: distinct bit_set[CommandPoolResetFlag; Flags] -CommandPoolResetFlag :: enum Flags { - RELEASE_RESOURCES = 0, -} - -CompareOp :: enum c.int { - NEVER = 0, - LESS = 1, - EQUAL = 2, - LESS_OR_EQUAL = 3, - GREATER = 4, - NOT_EQUAL = 5, - GREATER_OR_EQUAL = 6, - ALWAYS = 7, -} - -ComponentSwizzle :: enum c.int { - IDENTITY = 0, - ZERO = 1, - ONE = 2, - R = 3, - G = 4, - B = 5, - A = 6, -} - -ComponentTypeNV :: enum c.int { - FLOAT16 = 0, - FLOAT32 = 1, - FLOAT64 = 2, - SINT8 = 3, - SINT16 = 4, - SINT32 = 5, - SINT64 = 6, - UINT8 = 7, - UINT16 = 8, - UINT32 = 9, - UINT64 = 10, -} - -CompositeAlphaFlagsKHR :: distinct bit_set[CompositeAlphaFlagKHR; Flags] -CompositeAlphaFlagKHR :: enum Flags { - OPAQUE = 0, - PRE_MULTIPLIED = 1, - POST_MULTIPLIED = 2, - INHERIT = 3, -} - -ConditionalRenderingFlagsEXT :: distinct bit_set[ConditionalRenderingFlagEXT; Flags] -ConditionalRenderingFlagEXT :: enum Flags { - INVERTED = 0, -} - -ConservativeRasterizationModeEXT :: enum c.int { - DISABLED = 0, - OVERESTIMATE = 1, - UNDERESTIMATE = 2, -} - -CopyAccelerationStructureModeKHR :: enum c.int { - CLONE = 0, - COMPACT = 1, - SERIALIZE = 2, - DESERIALIZE = 3, - CLONE_NV = CLONE, - COMPACT_NV = COMPACT, -} - -CoverageModulationModeNV :: enum c.int { - NONE = 0, - RGB = 1, - ALPHA = 2, - RGBA = 3, -} - -CoverageReductionModeNV :: enum c.int { - MERGE = 0, - TRUNCATE = 1, -} - -CullModeFlags :: distinct bit_set[CullModeFlag; Flags] -CullModeFlag :: enum Flags { - FRONT = 0, - BACK = 1, -} - -CullModeFlags_NONE :: CullModeFlags{} -CullModeFlags_FRONT_AND_BACK :: CullModeFlags{.FRONT, .BACK} - - -DebugReportFlagsEXT :: distinct bit_set[DebugReportFlagEXT; Flags] -DebugReportFlagEXT :: enum Flags { - INFORMATION = 0, - WARNING = 1, - PERFORMANCE_WARNING = 2, - ERROR = 3, - DEBUG = 4, -} - -DebugReportObjectTypeEXT :: enum c.int { - UNKNOWN = 0, - INSTANCE = 1, - PHYSICAL_DEVICE = 2, - DEVICE = 3, - QUEUE = 4, - SEMAPHORE = 5, - COMMAND_BUFFER = 6, - FENCE = 7, - DEVICE_MEMORY = 8, - BUFFER = 9, - IMAGE = 10, - EVENT = 11, - QUERY_POOL = 12, - BUFFER_VIEW = 13, - IMAGE_VIEW = 14, - SHADER_MODULE = 15, - PIPELINE_CACHE = 16, - PIPELINE_LAYOUT = 17, - RENDER_PASS = 18, - PIPELINE = 19, - DESCRIPTOR_SET_LAYOUT = 20, - SAMPLER = 21, - DESCRIPTOR_POOL = 22, - DESCRIPTOR_SET = 23, - FRAMEBUFFER = 24, - COMMAND_POOL = 25, - SURFACE_KHR = 26, - SWAPCHAIN_KHR = 27, - DEBUG_REPORT_CALLBACK_EXT = 28, - DISPLAY_KHR = 29, - DISPLAY_MODE_KHR = 30, - VALIDATION_CACHE_EXT = 33, - SAMPLER_YCBCR_CONVERSION = 1000156000, - DESCRIPTOR_UPDATE_TEMPLATE = 1000085000, - CU_MODULE_NVX = 1000029000, - CU_FUNCTION_NVX = 1000029001, - ACCELERATION_STRUCTURE_KHR = 1000150000, - ACCELERATION_STRUCTURE_NV = 1000165000, - BUFFER_COLLECTION_FUCHSIA = 1000366000, - DEBUG_REPORT = DEBUG_REPORT_CALLBACK_EXT, - VALIDATION_CACHE = VALIDATION_CACHE_EXT, - DESCRIPTOR_UPDATE_TEMPLATE_KHR = DESCRIPTOR_UPDATE_TEMPLATE, - SAMPLER_YCBCR_CONVERSION_KHR = SAMPLER_YCBCR_CONVERSION, -} - -DebugUtilsMessageSeverityFlagsEXT :: distinct bit_set[DebugUtilsMessageSeverityFlagEXT; Flags] -DebugUtilsMessageSeverityFlagEXT :: enum Flags { - VERBOSE = 0, - INFO = 4, - WARNING = 8, - ERROR = 12, -} - -DebugUtilsMessageTypeFlagsEXT :: distinct bit_set[DebugUtilsMessageTypeFlagEXT; Flags] -DebugUtilsMessageTypeFlagEXT :: enum Flags { - GENERAL = 0, - VALIDATION = 1, - PERFORMANCE = 2, -} - -DependencyFlags :: distinct bit_set[DependencyFlag; Flags] -DependencyFlag :: enum Flags { - BY_REGION = 0, - DEVICE_GROUP = 2, - VIEW_LOCAL = 1, - VIEW_LOCAL_KHR = VIEW_LOCAL, - DEVICE_GROUP_KHR = DEVICE_GROUP, -} - -DescriptorBindingFlags :: distinct bit_set[DescriptorBindingFlag; Flags] -DescriptorBindingFlag :: enum Flags { - UPDATE_AFTER_BIND = 0, - UPDATE_UNUSED_WHILE_PENDING = 1, - PARTIALLY_BOUND = 2, - VARIABLE_DESCRIPTOR_COUNT = 3, - UPDATE_AFTER_BIND_EXT = UPDATE_AFTER_BIND, - UPDATE_UNUSED_WHILE_PENDING_EXT = UPDATE_UNUSED_WHILE_PENDING, - PARTIALLY_BOUND_EXT = PARTIALLY_BOUND, - VARIABLE_DESCRIPTOR_COUNT_EXT = VARIABLE_DESCRIPTOR_COUNT, -} - -DescriptorPoolCreateFlags :: distinct bit_set[DescriptorPoolCreateFlag; Flags] -DescriptorPoolCreateFlag :: enum Flags { - FREE_DESCRIPTOR_SET = 0, - UPDATE_AFTER_BIND = 1, - HOST_ONLY_VALVE = 2, - UPDATE_AFTER_BIND_EXT = UPDATE_AFTER_BIND, -} - -DescriptorSetLayoutCreateFlags :: distinct bit_set[DescriptorSetLayoutCreateFlag; Flags] -DescriptorSetLayoutCreateFlag :: enum Flags { - UPDATE_AFTER_BIND_POOL = 1, - PUSH_DESCRIPTOR_KHR = 0, - HOST_ONLY_POOL_VALVE = 2, - UPDATE_AFTER_BIND_POOL_EXT = UPDATE_AFTER_BIND_POOL, -} - -DescriptorType :: enum c.int { - SAMPLER = 0, - COMBINED_IMAGE_SAMPLER = 1, - SAMPLED_IMAGE = 2, - STORAGE_IMAGE = 3, - UNIFORM_TEXEL_BUFFER = 4, - STORAGE_TEXEL_BUFFER = 5, - UNIFORM_BUFFER = 6, - STORAGE_BUFFER = 7, - UNIFORM_BUFFER_DYNAMIC = 8, - STORAGE_BUFFER_DYNAMIC = 9, - INPUT_ATTACHMENT = 10, - INLINE_UNIFORM_BLOCK = 1000138000, - ACCELERATION_STRUCTURE_KHR = 1000150000, - ACCELERATION_STRUCTURE_NV = 1000165000, - MUTABLE_VALVE = 1000351000, - INLINE_UNIFORM_BLOCK_EXT = INLINE_UNIFORM_BLOCK, -} - -DescriptorUpdateTemplateType :: enum c.int { - DESCRIPTOR_SET = 0, - PUSH_DESCRIPTORS_KHR = 1, - DESCRIPTOR_SET_KHR = DESCRIPTOR_SET, -} - -DeviceDiagnosticsConfigFlagsNV :: distinct bit_set[DeviceDiagnosticsConfigFlagNV; Flags] -DeviceDiagnosticsConfigFlagNV :: enum Flags { - ENABLE_SHADER_DEBUG_INFO = 0, - ENABLE_RESOURCE_TRACKING = 1, - ENABLE_AUTOMATIC_CHECKPOINTS = 2, -} - -DeviceEventTypeEXT :: enum c.int { - DISPLAY_HOTPLUG = 0, -} - -DeviceGroupPresentModeFlagsKHR :: distinct bit_set[DeviceGroupPresentModeFlagKHR; Flags] -DeviceGroupPresentModeFlagKHR :: enum Flags { - LOCAL = 0, - REMOTE = 1, - SUM = 2, - LOCAL_MULTI_DEVICE = 3, -} - -DeviceMemoryReportEventTypeEXT :: enum c.int { - ALLOCATE = 0, - FREE = 1, - IMPORT = 2, - UNIMPORT = 3, - ALLOCATION_FAILED = 4, -} - -DeviceQueueCreateFlags :: distinct bit_set[DeviceQueueCreateFlag; Flags] -DeviceQueueCreateFlag :: enum Flags { - PROTECTED = 0, -} - -DiscardRectangleModeEXT :: enum c.int { - INCLUSIVE = 0, - EXCLUSIVE = 1, -} - -DisplayEventTypeEXT :: enum c.int { - FIRST_PIXEL_OUT = 0, -} - -DisplayPlaneAlphaFlagsKHR :: distinct bit_set[DisplayPlaneAlphaFlagKHR; Flags] -DisplayPlaneAlphaFlagKHR :: enum Flags { - OPAQUE = 0, - GLOBAL = 1, - PER_PIXEL = 2, - PER_PIXEL_PREMULTIPLIED = 3, -} - -DisplayPowerStateEXT :: enum c.int { - OFF = 0, - SUSPEND = 1, - ON = 2, -} - -DriverId :: enum c.int { - AMD_PROPRIETARY = 1, - AMD_OPEN_SOURCE = 2, - MESA_RADV = 3, - NVIDIA_PROPRIETARY = 4, - INTEL_PROPRIETARY_WINDOWS = 5, - INTEL_OPEN_SOURCE_MESA = 6, - IMAGINATION_PROPRIETARY = 7, - QUALCOMM_PROPRIETARY = 8, - ARM_PROPRIETARY = 9, - GOOGLE_SWIFTSHADER = 10, - GGP_PROPRIETARY = 11, - BROADCOM_PROPRIETARY = 12, - MESA_LLVMPIPE = 13, - MOLTENVK = 14, - COREAVI_PROPRIETARY = 15, - JUICE_PROPRIETARY = 16, - VERISILICON_PROPRIETARY = 17, - MESA_TURNIP = 18, - MESA_V3DV = 19, - MESA_PANVK = 20, - SAMSUNG_PROPRIETARY = 21, - MESA_VENUS = 22, - AMD_PROPRIETARY_KHR = AMD_PROPRIETARY, - AMD_OPEN_SOURCE_KHR = AMD_OPEN_SOURCE, - MESA_RADV_KHR = MESA_RADV, - NVIDIA_PROPRIETARY_KHR = NVIDIA_PROPRIETARY, - INTEL_PROPRIETARY_WINDOWS_KHR = INTEL_PROPRIETARY_WINDOWS, - INTEL_OPEN_SOURCE_MESA_KHR = INTEL_OPEN_SOURCE_MESA, - IMAGINATION_PROPRIETARY_KHR = IMAGINATION_PROPRIETARY, - QUALCOMM_PROPRIETARY_KHR = QUALCOMM_PROPRIETARY, - ARM_PROPRIETARY_KHR = ARM_PROPRIETARY, - GOOGLE_SWIFTSHADER_KHR = GOOGLE_SWIFTSHADER, - GGP_PROPRIETARY_KHR = GGP_PROPRIETARY, - BROADCOM_PROPRIETARY_KHR = BROADCOM_PROPRIETARY, -} - -DynamicState :: enum c.int { - VIEWPORT = 0, - SCISSOR = 1, - LINE_WIDTH = 2, - DEPTH_BIAS = 3, - BLEND_CONSTANTS = 4, - DEPTH_BOUNDS = 5, - STENCIL_COMPARE_MASK = 6, - STENCIL_WRITE_MASK = 7, - STENCIL_REFERENCE = 8, - CULL_MODE = 1000267000, - FRONT_FACE = 1000267001, - PRIMITIVE_TOPOLOGY = 1000267002, - VIEWPORT_WITH_COUNT = 1000267003, - SCISSOR_WITH_COUNT = 1000267004, - VERTEX_INPUT_BINDING_STRIDE = 1000267005, - DEPTH_TEST_ENABLE = 1000267006, - DEPTH_WRITE_ENABLE = 1000267007, - DEPTH_COMPARE_OP = 1000267008, - DEPTH_BOUNDS_TEST_ENABLE = 1000267009, - STENCIL_TEST_ENABLE = 1000267010, - STENCIL_OP = 1000267011, - RASTERIZER_DISCARD_ENABLE = 1000377001, - DEPTH_BIAS_ENABLE = 1000377002, - PRIMITIVE_RESTART_ENABLE = 1000377004, - VIEWPORT_W_SCALING_NV = 1000087000, - DISCARD_RECTANGLE_EXT = 1000099000, - SAMPLE_LOCATIONS_EXT = 1000143000, - RAY_TRACING_PIPELINE_STACK_SIZE_KHR = 1000347000, - VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004, - VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006, - EXCLUSIVE_SCISSOR_NV = 1000205001, - FRAGMENT_SHADING_RATE_KHR = 1000226000, - LINE_STIPPLE_EXT = 1000259000, - VERTEX_INPUT_EXT = 1000352000, - PATCH_CONTROL_POINTS_EXT = 1000377000, - LOGIC_OP_EXT = 1000377003, - COLOR_WRITE_ENABLE_EXT = 1000381000, - CULL_MODE_EXT = CULL_MODE, - FRONT_FACE_EXT = FRONT_FACE, - PRIMITIVE_TOPOLOGY_EXT = PRIMITIVE_TOPOLOGY, - VIEWPORT_WITH_COUNT_EXT = VIEWPORT_WITH_COUNT, - SCISSOR_WITH_COUNT_EXT = SCISSOR_WITH_COUNT, - VERTEX_INPUT_BINDING_STRIDE_EXT = VERTEX_INPUT_BINDING_STRIDE, - DEPTH_TEST_ENABLE_EXT = DEPTH_TEST_ENABLE, - DEPTH_WRITE_ENABLE_EXT = DEPTH_WRITE_ENABLE, - DEPTH_COMPARE_OP_EXT = DEPTH_COMPARE_OP, - DEPTH_BOUNDS_TEST_ENABLE_EXT = DEPTH_BOUNDS_TEST_ENABLE, - STENCIL_TEST_ENABLE_EXT = STENCIL_TEST_ENABLE, - STENCIL_OP_EXT = STENCIL_OP, - RASTERIZER_DISCARD_ENABLE_EXT = RASTERIZER_DISCARD_ENABLE, - DEPTH_BIAS_ENABLE_EXT = DEPTH_BIAS_ENABLE, - PRIMITIVE_RESTART_ENABLE_EXT = PRIMITIVE_RESTART_ENABLE, -} - -EventCreateFlags :: distinct bit_set[EventCreateFlag; Flags] -EventCreateFlag :: enum Flags { - DEVICE_ONLY = 0, - DEVICE_ONLY_KHR = DEVICE_ONLY, -} - -ExternalFenceFeatureFlags :: distinct bit_set[ExternalFenceFeatureFlag; Flags] -ExternalFenceFeatureFlag :: enum Flags { - EXPORTABLE = 0, - IMPORTABLE = 1, - EXPORTABLE_KHR = EXPORTABLE, - IMPORTABLE_KHR = IMPORTABLE, -} - -ExternalFenceHandleTypeFlags :: distinct bit_set[ExternalFenceHandleTypeFlag; Flags] -ExternalFenceHandleTypeFlag :: enum Flags { - OPAQUE_FD = 0, - OPAQUE_WIN32 = 1, - OPAQUE_WIN32_KMT = 2, - SYNC_FD = 3, - OPAQUE_FD_KHR = OPAQUE_FD, - OPAQUE_WIN32_KHR = OPAQUE_WIN32, - OPAQUE_WIN32_KMT_KHR = OPAQUE_WIN32_KMT, - SYNC_FD_KHR = SYNC_FD, -} - -ExternalMemoryFeatureFlags :: distinct bit_set[ExternalMemoryFeatureFlag; Flags] -ExternalMemoryFeatureFlag :: enum Flags { - DEDICATED_ONLY = 0, - EXPORTABLE = 1, - IMPORTABLE = 2, - DEDICATED_ONLY_KHR = DEDICATED_ONLY, - EXPORTABLE_KHR = EXPORTABLE, - IMPORTABLE_KHR = IMPORTABLE, -} - -ExternalMemoryFeatureFlagsNV :: distinct bit_set[ExternalMemoryFeatureFlagNV; Flags] -ExternalMemoryFeatureFlagNV :: enum Flags { - DEDICATED_ONLY = 0, - EXPORTABLE = 1, - IMPORTABLE = 2, -} - -ExternalMemoryHandleTypeFlags :: distinct bit_set[ExternalMemoryHandleTypeFlag; Flags] -ExternalMemoryHandleTypeFlag :: enum Flags { - OPAQUE_FD = 0, - OPAQUE_WIN32 = 1, - OPAQUE_WIN32_KMT = 2, - D3D11_TEXTURE = 3, - D3D11_TEXTURE_KMT = 4, - D3D12_HEAP = 5, - D3D12_RESOURCE = 6, - DMA_BUF_EXT = 9, - ANDROID_HARDWARE_BUFFER_ANDROID = 10, - HOST_ALLOCATION_EXT = 7, - HOST_MAPPED_FOREIGN_MEMORY_EXT = 8, - ZIRCON_VMO_FUCHSIA = 11, - RDMA_ADDRESS_NV = 12, - OPAQUE_FD_KHR = OPAQUE_FD, - OPAQUE_WIN32_KHR = OPAQUE_WIN32, - OPAQUE_WIN32_KMT_KHR = OPAQUE_WIN32_KMT, - D3D11_TEXTURE_KHR = D3D11_TEXTURE, - D3D11_TEXTURE_KMT_KHR = D3D11_TEXTURE_KMT, - D3D12_HEAP_KHR = D3D12_HEAP, - D3D12_RESOURCE_KHR = D3D12_RESOURCE, -} - -ExternalMemoryHandleTypeFlagsNV :: distinct bit_set[ExternalMemoryHandleTypeFlagNV; Flags] -ExternalMemoryHandleTypeFlagNV :: enum Flags { - OPAQUE_WIN32 = 0, - OPAQUE_WIN32_KMT = 1, - D3D11_IMAGE = 2, - D3D11_IMAGE_KMT = 3, -} - -ExternalSemaphoreFeatureFlags :: distinct bit_set[ExternalSemaphoreFeatureFlag; Flags] -ExternalSemaphoreFeatureFlag :: enum Flags { - EXPORTABLE = 0, - IMPORTABLE = 1, - EXPORTABLE_KHR = EXPORTABLE, - IMPORTABLE_KHR = IMPORTABLE, -} - -ExternalSemaphoreHandleTypeFlags :: distinct bit_set[ExternalSemaphoreHandleTypeFlag; Flags] -ExternalSemaphoreHandleTypeFlag :: enum Flags { - OPAQUE_FD = 0, - OPAQUE_WIN32 = 1, - OPAQUE_WIN32_KMT = 2, - D3D12_FENCE = 3, - SYNC_FD = 4, - ZIRCON_EVENT_FUCHSIA = 7, - D3D11_FENCE = D3D12_FENCE, - OPAQUE_FD_KHR = OPAQUE_FD, - OPAQUE_WIN32_KHR = OPAQUE_WIN32, - OPAQUE_WIN32_KMT_KHR = OPAQUE_WIN32_KMT, - D3D12_FENCE_KHR = D3D12_FENCE, - SYNC_FD_KHR = SYNC_FD, -} - -FenceCreateFlags :: distinct bit_set[FenceCreateFlag; Flags] -FenceCreateFlag :: enum Flags { - SIGNALED = 0, -} - -FenceImportFlags :: distinct bit_set[FenceImportFlag; Flags] -FenceImportFlag :: enum Flags { - TEMPORARY = 0, - TEMPORARY_KHR = TEMPORARY, -} - -Filter :: enum c.int { - NEAREST = 0, - LINEAR = 1, - CUBIC_IMG = 1000015000, - CUBIC_EXT = CUBIC_IMG, -} - -Format :: enum c.int { - UNDEFINED = 0, - R4G4_UNORM_PACK8 = 1, - R4G4B4A4_UNORM_PACK16 = 2, - B4G4R4A4_UNORM_PACK16 = 3, - R5G6B5_UNORM_PACK16 = 4, - B5G6R5_UNORM_PACK16 = 5, - R5G5B5A1_UNORM_PACK16 = 6, - B5G5R5A1_UNORM_PACK16 = 7, - A1R5G5B5_UNORM_PACK16 = 8, - R8_UNORM = 9, - R8_SNORM = 10, - R8_USCALED = 11, - R8_SSCALED = 12, - R8_UINT = 13, - R8_SINT = 14, - R8_SRGB = 15, - R8G8_UNORM = 16, - R8G8_SNORM = 17, - R8G8_USCALED = 18, - R8G8_SSCALED = 19, - R8G8_UINT = 20, - R8G8_SINT = 21, - R8G8_SRGB = 22, - R8G8B8_UNORM = 23, - R8G8B8_SNORM = 24, - R8G8B8_USCALED = 25, - R8G8B8_SSCALED = 26, - R8G8B8_UINT = 27, - R8G8B8_SINT = 28, - R8G8B8_SRGB = 29, - B8G8R8_UNORM = 30, - B8G8R8_SNORM = 31, - B8G8R8_USCALED = 32, - B8G8R8_SSCALED = 33, - B8G8R8_UINT = 34, - B8G8R8_SINT = 35, - B8G8R8_SRGB = 36, - R8G8B8A8_UNORM = 37, - R8G8B8A8_SNORM = 38, - R8G8B8A8_USCALED = 39, - R8G8B8A8_SSCALED = 40, - R8G8B8A8_UINT = 41, - R8G8B8A8_SINT = 42, - R8G8B8A8_SRGB = 43, - B8G8R8A8_UNORM = 44, - B8G8R8A8_SNORM = 45, - B8G8R8A8_USCALED = 46, - B8G8R8A8_SSCALED = 47, - B8G8R8A8_UINT = 48, - B8G8R8A8_SINT = 49, - B8G8R8A8_SRGB = 50, - A8B8G8R8_UNORM_PACK32 = 51, - A8B8G8R8_SNORM_PACK32 = 52, - A8B8G8R8_USCALED_PACK32 = 53, - A8B8G8R8_SSCALED_PACK32 = 54, - A8B8G8R8_UINT_PACK32 = 55, - A8B8G8R8_SINT_PACK32 = 56, - A8B8G8R8_SRGB_PACK32 = 57, - A2R10G10B10_UNORM_PACK32 = 58, - A2R10G10B10_SNORM_PACK32 = 59, - A2R10G10B10_USCALED_PACK32 = 60, - A2R10G10B10_SSCALED_PACK32 = 61, - A2R10G10B10_UINT_PACK32 = 62, - A2R10G10B10_SINT_PACK32 = 63, - A2B10G10R10_UNORM_PACK32 = 64, - A2B10G10R10_SNORM_PACK32 = 65, - A2B10G10R10_USCALED_PACK32 = 66, - A2B10G10R10_SSCALED_PACK32 = 67, - A2B10G10R10_UINT_PACK32 = 68, - A2B10G10R10_SINT_PACK32 = 69, - R16_UNORM = 70, - R16_SNORM = 71, - R16_USCALED = 72, - R16_SSCALED = 73, - R16_UINT = 74, - R16_SINT = 75, - R16_SFLOAT = 76, - R16G16_UNORM = 77, - R16G16_SNORM = 78, - R16G16_USCALED = 79, - R16G16_SSCALED = 80, - R16G16_UINT = 81, - R16G16_SINT = 82, - R16G16_SFLOAT = 83, - R16G16B16_UNORM = 84, - R16G16B16_SNORM = 85, - R16G16B16_USCALED = 86, - R16G16B16_SSCALED = 87, - R16G16B16_UINT = 88, - R16G16B16_SINT = 89, - R16G16B16_SFLOAT = 90, - R16G16B16A16_UNORM = 91, - R16G16B16A16_SNORM = 92, - R16G16B16A16_USCALED = 93, - R16G16B16A16_SSCALED = 94, - R16G16B16A16_UINT = 95, - R16G16B16A16_SINT = 96, - R16G16B16A16_SFLOAT = 97, - R32_UINT = 98, - R32_SINT = 99, - R32_SFLOAT = 100, - R32G32_UINT = 101, - R32G32_SINT = 102, - R32G32_SFLOAT = 103, - R32G32B32_UINT = 104, - R32G32B32_SINT = 105, - R32G32B32_SFLOAT = 106, - R32G32B32A32_UINT = 107, - R32G32B32A32_SINT = 108, - R32G32B32A32_SFLOAT = 109, - R64_UINT = 110, - R64_SINT = 111, - R64_SFLOAT = 112, - R64G64_UINT = 113, - R64G64_SINT = 114, - R64G64_SFLOAT = 115, - R64G64B64_UINT = 116, - R64G64B64_SINT = 117, - R64G64B64_SFLOAT = 118, - R64G64B64A64_UINT = 119, - R64G64B64A64_SINT = 120, - R64G64B64A64_SFLOAT = 121, - B10G11R11_UFLOAT_PACK32 = 122, - E5B9G9R9_UFLOAT_PACK32 = 123, - D16_UNORM = 124, - X8_D24_UNORM_PACK32 = 125, - D32_SFLOAT = 126, - S8_UINT = 127, - D16_UNORM_S8_UINT = 128, - D24_UNORM_S8_UINT = 129, - D32_SFLOAT_S8_UINT = 130, - BC1_RGB_UNORM_BLOCK = 131, - BC1_RGB_SRGB_BLOCK = 132, - BC1_RGBA_UNORM_BLOCK = 133, - BC1_RGBA_SRGB_BLOCK = 134, - BC2_UNORM_BLOCK = 135, - BC2_SRGB_BLOCK = 136, - BC3_UNORM_BLOCK = 137, - BC3_SRGB_BLOCK = 138, - BC4_UNORM_BLOCK = 139, - BC4_SNORM_BLOCK = 140, - BC5_UNORM_BLOCK = 141, - BC5_SNORM_BLOCK = 142, - BC6H_UFLOAT_BLOCK = 143, - BC6H_SFLOAT_BLOCK = 144, - BC7_UNORM_BLOCK = 145, - BC7_SRGB_BLOCK = 146, - ETC2_R8G8B8_UNORM_BLOCK = 147, - ETC2_R8G8B8_SRGB_BLOCK = 148, - ETC2_R8G8B8A1_UNORM_BLOCK = 149, - ETC2_R8G8B8A1_SRGB_BLOCK = 150, - ETC2_R8G8B8A8_UNORM_BLOCK = 151, - ETC2_R8G8B8A8_SRGB_BLOCK = 152, - EAC_R11_UNORM_BLOCK = 153, - EAC_R11_SNORM_BLOCK = 154, - EAC_R11G11_UNORM_BLOCK = 155, - EAC_R11G11_SNORM_BLOCK = 156, - ASTC_4x4_UNORM_BLOCK = 157, - ASTC_4x4_SRGB_BLOCK = 158, - ASTC_5x4_UNORM_BLOCK = 159, - ASTC_5x4_SRGB_BLOCK = 160, - ASTC_5x5_UNORM_BLOCK = 161, - ASTC_5x5_SRGB_BLOCK = 162, - ASTC_6x5_UNORM_BLOCK = 163, - ASTC_6x5_SRGB_BLOCK = 164, - ASTC_6x6_UNORM_BLOCK = 165, - ASTC_6x6_SRGB_BLOCK = 166, - ASTC_8x5_UNORM_BLOCK = 167, - ASTC_8x5_SRGB_BLOCK = 168, - ASTC_8x6_UNORM_BLOCK = 169, - ASTC_8x6_SRGB_BLOCK = 170, - ASTC_8x8_UNORM_BLOCK = 171, - ASTC_8x8_SRGB_BLOCK = 172, - ASTC_10x5_UNORM_BLOCK = 173, - ASTC_10x5_SRGB_BLOCK = 174, - ASTC_10x6_UNORM_BLOCK = 175, - ASTC_10x6_SRGB_BLOCK = 176, - ASTC_10x8_UNORM_BLOCK = 177, - ASTC_10x8_SRGB_BLOCK = 178, - ASTC_10x10_UNORM_BLOCK = 179, - ASTC_10x10_SRGB_BLOCK = 180, - ASTC_12x10_UNORM_BLOCK = 181, - ASTC_12x10_SRGB_BLOCK = 182, - ASTC_12x12_UNORM_BLOCK = 183, - ASTC_12x12_SRGB_BLOCK = 184, - G8B8G8R8_422_UNORM = 1000156000, - B8G8R8G8_422_UNORM = 1000156001, - G8_B8_R8_3PLANE_420_UNORM = 1000156002, - G8_B8R8_2PLANE_420_UNORM = 1000156003, - G8_B8_R8_3PLANE_422_UNORM = 1000156004, - G8_B8R8_2PLANE_422_UNORM = 1000156005, - G8_B8_R8_3PLANE_444_UNORM = 1000156006, - R10X6_UNORM_PACK16 = 1000156007, - R10X6G10X6_UNORM_2PACK16 = 1000156008, - R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009, - G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010, - B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011, - G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012, - G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013, - G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014, - G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015, - G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016, - R12X4_UNORM_PACK16 = 1000156017, - R12X4G12X4_UNORM_2PACK16 = 1000156018, - R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019, - G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020, - B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021, - G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022, - G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023, - G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024, - G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025, - G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026, - G16B16G16R16_422_UNORM = 1000156027, - B16G16R16G16_422_UNORM = 1000156028, - G16_B16_R16_3PLANE_420_UNORM = 1000156029, - G16_B16R16_2PLANE_420_UNORM = 1000156030, - G16_B16_R16_3PLANE_422_UNORM = 1000156031, - G16_B16R16_2PLANE_422_UNORM = 1000156032, - G16_B16_R16_3PLANE_444_UNORM = 1000156033, - G8_B8R8_2PLANE_444_UNORM = 1000330000, - G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16 = 1000330001, - G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16 = 1000330002, - G16_B16R16_2PLANE_444_UNORM = 1000330003, - A4R4G4B4_UNORM_PACK16 = 1000340000, - A4B4G4R4_UNORM_PACK16 = 1000340001, - ASTC_4x4_SFLOAT_BLOCK = 1000066000, - ASTC_5x4_SFLOAT_BLOCK = 1000066001, - ASTC_5x5_SFLOAT_BLOCK = 1000066002, - ASTC_6x5_SFLOAT_BLOCK = 1000066003, - ASTC_6x6_SFLOAT_BLOCK = 1000066004, - ASTC_8x5_SFLOAT_BLOCK = 1000066005, - ASTC_8x6_SFLOAT_BLOCK = 1000066006, - ASTC_8x8_SFLOAT_BLOCK = 1000066007, - ASTC_10x5_SFLOAT_BLOCK = 1000066008, - ASTC_10x6_SFLOAT_BLOCK = 1000066009, - ASTC_10x8_SFLOAT_BLOCK = 1000066010, - ASTC_10x10_SFLOAT_BLOCK = 1000066011, - ASTC_12x10_SFLOAT_BLOCK = 1000066012, - ASTC_12x12_SFLOAT_BLOCK = 1000066013, - PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000, - PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001, - PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002, - PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003, - PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004, - PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005, - PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006, - PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007, - ASTC_4x4_SFLOAT_BLOCK_EXT = ASTC_4x4_SFLOAT_BLOCK, - ASTC_5x4_SFLOAT_BLOCK_EXT = ASTC_5x4_SFLOAT_BLOCK, - ASTC_5x5_SFLOAT_BLOCK_EXT = ASTC_5x5_SFLOAT_BLOCK, - ASTC_6x5_SFLOAT_BLOCK_EXT = ASTC_6x5_SFLOAT_BLOCK, - ASTC_6x6_SFLOAT_BLOCK_EXT = ASTC_6x6_SFLOAT_BLOCK, - ASTC_8x5_SFLOAT_BLOCK_EXT = ASTC_8x5_SFLOAT_BLOCK, - ASTC_8x6_SFLOAT_BLOCK_EXT = ASTC_8x6_SFLOAT_BLOCK, - ASTC_8x8_SFLOAT_BLOCK_EXT = ASTC_8x8_SFLOAT_BLOCK, - ASTC_10x5_SFLOAT_BLOCK_EXT = ASTC_10x5_SFLOAT_BLOCK, - ASTC_10x6_SFLOAT_BLOCK_EXT = ASTC_10x6_SFLOAT_BLOCK, - ASTC_10x8_SFLOAT_BLOCK_EXT = ASTC_10x8_SFLOAT_BLOCK, - ASTC_10x10_SFLOAT_BLOCK_EXT = ASTC_10x10_SFLOAT_BLOCK, - ASTC_12x10_SFLOAT_BLOCK_EXT = ASTC_12x10_SFLOAT_BLOCK, - ASTC_12x12_SFLOAT_BLOCK_EXT = ASTC_12x12_SFLOAT_BLOCK, - G8B8G8R8_422_UNORM_KHR = G8B8G8R8_422_UNORM, - B8G8R8G8_422_UNORM_KHR = B8G8R8G8_422_UNORM, - G8_B8_R8_3PLANE_420_UNORM_KHR = G8_B8_R8_3PLANE_420_UNORM, - G8_B8R8_2PLANE_420_UNORM_KHR = G8_B8R8_2PLANE_420_UNORM, - G8_B8_R8_3PLANE_422_UNORM_KHR = G8_B8_R8_3PLANE_422_UNORM, - G8_B8R8_2PLANE_422_UNORM_KHR = G8_B8R8_2PLANE_422_UNORM, - G8_B8_R8_3PLANE_444_UNORM_KHR = G8_B8_R8_3PLANE_444_UNORM, - R10X6_UNORM_PACK16_KHR = R10X6_UNORM_PACK16, - R10X6G10X6_UNORM_2PACK16_KHR = R10X6G10X6_UNORM_2PACK16, - R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = R10X6G10X6B10X6A10X6_UNORM_4PACK16, - G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = G10X6B10X6G10X6R10X6_422_UNORM_4PACK16, - B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = B10X6G10X6R10X6G10X6_422_UNORM_4PACK16, - G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16, - G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16, - G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16, - G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16, - G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16, - R12X4_UNORM_PACK16_KHR = R12X4_UNORM_PACK16, - R12X4G12X4_UNORM_2PACK16_KHR = R12X4G12X4_UNORM_2PACK16, - R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = R12X4G12X4B12X4A12X4_UNORM_4PACK16, - G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = G12X4B12X4G12X4R12X4_422_UNORM_4PACK16, - B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = B12X4G12X4R12X4G12X4_422_UNORM_4PACK16, - G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16, - G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16, - G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16, - G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16, - G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16, - G16B16G16R16_422_UNORM_KHR = G16B16G16R16_422_UNORM, - B16G16R16G16_422_UNORM_KHR = B16G16R16G16_422_UNORM, - G16_B16_R16_3PLANE_420_UNORM_KHR = G16_B16_R16_3PLANE_420_UNORM, - G16_B16R16_2PLANE_420_UNORM_KHR = G16_B16R16_2PLANE_420_UNORM, - G16_B16_R16_3PLANE_422_UNORM_KHR = G16_B16_R16_3PLANE_422_UNORM, - G16_B16R16_2PLANE_422_UNORM_KHR = G16_B16R16_2PLANE_422_UNORM, - G16_B16_R16_3PLANE_444_UNORM_KHR = G16_B16_R16_3PLANE_444_UNORM, - G8_B8R8_2PLANE_444_UNORM_EXT = G8_B8R8_2PLANE_444_UNORM, - G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT = G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16, - G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT = G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16, - G16_B16R16_2PLANE_444_UNORM_EXT = G16_B16R16_2PLANE_444_UNORM, - A4R4G4B4_UNORM_PACK16_EXT = A4R4G4B4_UNORM_PACK16, - A4B4G4R4_UNORM_PACK16_EXT = A4B4G4R4_UNORM_PACK16, -} - -FormatFeatureFlags :: distinct bit_set[FormatFeatureFlag; Flags] -FormatFeatureFlag :: enum Flags { - SAMPLED_IMAGE = 0, - STORAGE_IMAGE = 1, - STORAGE_IMAGE_ATOMIC = 2, - UNIFORM_TEXEL_BUFFER = 3, - STORAGE_TEXEL_BUFFER = 4, - STORAGE_TEXEL_BUFFER_ATOMIC = 5, - VERTEX_BUFFER = 6, - COLOR_ATTACHMENT = 7, - COLOR_ATTACHMENT_BLEND = 8, - DEPTH_STENCIL_ATTACHMENT = 9, - BLIT_SRC = 10, - BLIT_DST = 11, - SAMPLED_IMAGE_FILTER_LINEAR = 12, - TRANSFER_SRC = 14, - TRANSFER_DST = 15, - MIDPOINT_CHROMA_SAMPLES = 17, - SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER = 18, - SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER = 19, - SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT = 20, - SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE = 21, - DISJOINT = 22, - COSITED_CHROMA_SAMPLES = 23, - SAMPLED_IMAGE_FILTER_MINMAX = 16, - SAMPLED_IMAGE_FILTER_CUBIC_IMG = 13, - VIDEO_DECODE_OUTPUT_KHR = 25, - VIDEO_DECODE_DPB_KHR = 26, - ACCELERATION_STRUCTURE_VERTEX_BUFFER_KHR = 29, - FRAGMENT_DENSITY_MAP_EXT = 24, - FRAGMENT_SHADING_RATE_ATTACHMENT_KHR = 30, - VIDEO_ENCODE_INPUT_KHR = 27, - VIDEO_ENCODE_DPB_KHR = 28, - TRANSFER_SRC_KHR = TRANSFER_SRC, - TRANSFER_DST_KHR = TRANSFER_DST, - SAMPLED_IMAGE_FILTER_MINMAX_EXT = SAMPLED_IMAGE_FILTER_MINMAX, - MIDPOINT_CHROMA_SAMPLES_KHR = MIDPOINT_CHROMA_SAMPLES, - SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_KHR = SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER, - SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_KHR = SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER, - SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_KHR = SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT, - SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_KHR = SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE, - DISJOINT_KHR = DISJOINT, - COSITED_CHROMA_SAMPLES_KHR = COSITED_CHROMA_SAMPLES, - SAMPLED_IMAGE_FILTER_CUBIC_EXT = SAMPLED_IMAGE_FILTER_CUBIC_IMG, -} - -FragmentShadingRateCombinerOpKHR :: enum c.int { - KEEP = 0, - REPLACE = 1, - MIN = 2, - MAX = 3, - MUL = 4, -} - -FragmentShadingRateNV :: enum c.int { - _1_INVOCATION_PER_PIXEL = 0, - _1_INVOCATION_PER_1X2_PIXELS = 1, - _1_INVOCATION_PER_2X1_PIXELS = 4, - _1_INVOCATION_PER_2X2_PIXELS = 5, - _1_INVOCATION_PER_2X4_PIXELS = 6, - _1_INVOCATION_PER_4X2_PIXELS = 9, - _1_INVOCATION_PER_4X4_PIXELS = 10, - _2_INVOCATIONS_PER_PIXEL = 11, - _4_INVOCATIONS_PER_PIXEL = 12, - _8_INVOCATIONS_PER_PIXEL = 13, - _16_INVOCATIONS_PER_PIXEL = 14, - NO_INVOCATIONS = 15, -} - -FragmentShadingRateTypeNV :: enum c.int { - FRAGMENT_SIZE = 0, - ENUMS = 1, -} - -FramebufferCreateFlags :: distinct bit_set[FramebufferCreateFlag; Flags] -FramebufferCreateFlag :: enum Flags { - IMAGELESS = 0, - IMAGELESS_KHR = IMAGELESS, -} - -FrontFace :: enum c.int { - COUNTER_CLOCKWISE = 0, - CLOCKWISE = 1, -} - -FullScreenExclusiveEXT :: enum c.int { - DEFAULT = 0, - ALLOWED = 1, - DISALLOWED = 2, - APPLICATION_CONTROLLED = 3, -} - -GeometryFlagsKHR :: distinct bit_set[GeometryFlagKHR; Flags] -GeometryFlagKHR :: enum Flags { - OPAQUE = 0, - NO_DUPLICATE_ANY_HIT_INVOCATION = 1, - OPAQUE_NV = OPAQUE, - NO_DUPLICATE_ANY_HIT_INVOCATION_NV = NO_DUPLICATE_ANY_HIT_INVOCATION, -} - -GeometryInstanceFlagsKHR :: distinct bit_set[GeometryInstanceFlagKHR; Flags] -GeometryInstanceFlagKHR :: enum Flags { - TRIANGLE_FACING_CULL_DISABLE = 0, - TRIANGLE_FLIP_FACING = 1, - FORCE_OPAQUE = 2, - FORCE_NO_OPAQUE = 3, - TRIANGLE_FRONT_COUNTERCLOCKWISE = TRIANGLE_FLIP_FACING, - TRIANGLE_CULL_DISABLE_NV = TRIANGLE_FACING_CULL_DISABLE, - TRIANGLE_FRONT_COUNTERCLOCKWISE_NV = TRIANGLE_FRONT_COUNTERCLOCKWISE, - FORCE_OPAQUE_NV = FORCE_OPAQUE, - FORCE_NO_OPAQUE_NV = FORCE_NO_OPAQUE, -} - -GeometryTypeKHR :: enum c.int { - TRIANGLES = 0, - AABBS = 1, - INSTANCES = 2, - TRIANGLES_NV = TRIANGLES, - AABBS_NV = AABBS, -} - -GraphicsPipelineLibraryFlagsEXT :: distinct bit_set[GraphicsPipelineLibraryFlagEXT; Flags] -GraphicsPipelineLibraryFlagEXT :: enum Flags { - VERTEX_INPUT_INTERFACE = 0, - PRE_RASTERIZATION_SHADERS = 1, - FRAGMENT_SHADER = 2, - FRAGMENT_OUTPUT_INTERFACE = 3, -} - -ImageAspectFlags :: distinct bit_set[ImageAspectFlag; Flags] -ImageAspectFlag :: enum Flags { - COLOR = 0, - DEPTH = 1, - STENCIL = 2, - METADATA = 3, - PLANE_0 = 4, - PLANE_1 = 5, - PLANE_2 = 6, - MEMORY_PLANE_0_EXT = 7, - MEMORY_PLANE_1_EXT = 8, - MEMORY_PLANE_2_EXT = 9, - MEMORY_PLANE_3_EXT = 10, - PLANE_0_KHR = PLANE_0, - PLANE_1_KHR = PLANE_1, - PLANE_2_KHR = PLANE_2, -} - -ImageAspectFlags_NONE :: ImageAspectFlags{} - - -ImageCreateFlags :: distinct bit_set[ImageCreateFlag; Flags] -ImageCreateFlag :: enum Flags { - SPARSE_BINDING = 0, - SPARSE_RESIDENCY = 1, - SPARSE_ALIASED = 2, - MUTABLE_FORMAT = 3, - CUBE_COMPATIBLE = 4, - ALIAS = 10, - SPLIT_INSTANCE_BIND_REGIONS = 6, - D2_ARRAY_COMPATIBLE = 5, - BLOCK_TEXEL_VIEW_COMPATIBLE = 7, - EXTENDED_USAGE = 8, - PROTECTED = 11, - DISJOINT = 9, - CORNER_SAMPLED_NV = 13, - SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_EXT = 12, - SUBSAMPLED_EXT = 14, - D2_VIEW_COMPATIBLE_EXT = 17, - FRAGMENT_DENSITY_MAP_OFFSET_QCOM = 15, - SPLIT_INSTANCE_BIND_REGIONS_KHR = SPLIT_INSTANCE_BIND_REGIONS, - D2_ARRAY_COMPATIBLE_KHR = D2_ARRAY_COMPATIBLE, - BLOCK_TEXEL_VIEW_COMPATIBLE_KHR = BLOCK_TEXEL_VIEW_COMPATIBLE, - EXTENDED_USAGE_KHR = EXTENDED_USAGE, - DISJOINT_KHR = DISJOINT, - ALIAS_KHR = ALIAS, -} - -ImageLayout :: enum c.int { - UNDEFINED = 0, - GENERAL = 1, - COLOR_ATTACHMENT_OPTIMAL = 2, - DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3, - DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4, - SHADER_READ_ONLY_OPTIMAL = 5, - TRANSFER_SRC_OPTIMAL = 6, - TRANSFER_DST_OPTIMAL = 7, - PREINITIALIZED = 8, - DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000, - DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001, - DEPTH_ATTACHMENT_OPTIMAL = 1000241000, - DEPTH_READ_ONLY_OPTIMAL = 1000241001, - STENCIL_ATTACHMENT_OPTIMAL = 1000241002, - STENCIL_READ_ONLY_OPTIMAL = 1000241003, - READ_ONLY_OPTIMAL = 1000314000, - ATTACHMENT_OPTIMAL = 1000314001, - PRESENT_SRC_KHR = 1000001002, - VIDEO_DECODE_DST_KHR = 1000024000, - VIDEO_DECODE_SRC_KHR = 1000024001, - VIDEO_DECODE_DPB_KHR = 1000024002, - SHARED_PRESENT_KHR = 1000111000, - FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000, - FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003, - VIDEO_ENCODE_DST_KHR = 1000299000, - VIDEO_ENCODE_SRC_KHR = 1000299001, - VIDEO_ENCODE_DPB_KHR = 1000299002, - DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, - DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, - SHADING_RATE_OPTIMAL_NV = FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR, - DEPTH_ATTACHMENT_OPTIMAL_KHR = DEPTH_ATTACHMENT_OPTIMAL, - DEPTH_READ_ONLY_OPTIMAL_KHR = DEPTH_READ_ONLY_OPTIMAL, - STENCIL_ATTACHMENT_OPTIMAL_KHR = STENCIL_ATTACHMENT_OPTIMAL, - STENCIL_READ_ONLY_OPTIMAL_KHR = STENCIL_READ_ONLY_OPTIMAL, - READ_ONLY_OPTIMAL_KHR = READ_ONLY_OPTIMAL, - ATTACHMENT_OPTIMAL_KHR = ATTACHMENT_OPTIMAL, -} - -ImageTiling :: enum c.int { - OPTIMAL = 0, - LINEAR = 1, - DRM_FORMAT_MODIFIER_EXT = 1000158000, -} - -ImageType :: enum c.int { - D1 = 0, - D2 = 1, - D3 = 2, -} - -ImageUsageFlags :: distinct bit_set[ImageUsageFlag; Flags] -ImageUsageFlag :: enum Flags { - TRANSFER_SRC = 0, - TRANSFER_DST = 1, - SAMPLED = 2, - STORAGE = 3, - COLOR_ATTACHMENT = 4, - DEPTH_STENCIL_ATTACHMENT = 5, - TRANSIENT_ATTACHMENT = 6, - INPUT_ATTACHMENT = 7, - VIDEO_DECODE_DST_KHR = 10, - VIDEO_DECODE_SRC_KHR = 11, - VIDEO_DECODE_DPB_KHR = 12, - FRAGMENT_DENSITY_MAP_EXT = 9, - FRAGMENT_SHADING_RATE_ATTACHMENT_KHR = 8, - VIDEO_ENCODE_DST_KHR = 13, - VIDEO_ENCODE_SRC_KHR = 14, - VIDEO_ENCODE_DPB_KHR = 15, - INVOCATION_MASK_HUAWEI = 18, - SHADING_RATE_IMAGE_NV = FRAGMENT_SHADING_RATE_ATTACHMENT_KHR, -} - -ImageViewCreateFlags :: distinct bit_set[ImageViewCreateFlag; Flags] -ImageViewCreateFlag :: enum Flags { - FRAGMENT_DENSITY_MAP_DYNAMIC_EXT = 0, - FRAGMENT_DENSITY_MAP_DEFERRED_EXT = 1, -} - -ImageViewType :: enum c.int { - D1 = 0, - D2 = 1, - D3 = 2, - CUBE = 3, - D1_ARRAY = 4, - D2_ARRAY = 5, - CUBE_ARRAY = 6, -} - -IndexType :: enum c.int { - UINT16 = 0, - UINT32 = 1, - NONE_KHR = 1000165000, - UINT8_EXT = 1000265000, - NONE_NV = NONE_KHR, -} - -IndirectCommandsLayoutUsageFlagsNV :: distinct bit_set[IndirectCommandsLayoutUsageFlagNV; Flags] -IndirectCommandsLayoutUsageFlagNV :: enum Flags { - EXPLICIT_PREPROCESS = 0, - INDEXED_SEQUENCES = 1, - UNORDERED_SEQUENCES = 2, -} - -IndirectCommandsTokenTypeNV :: enum c.int { - SHADER_GROUP = 0, - STATE_FLAGS = 1, - INDEX_BUFFER = 2, - VERTEX_BUFFER = 3, - PUSH_CONSTANT = 4, - DRAW_INDEXED = 5, - DRAW = 6, - DRAW_TASKS = 7, -} - -IndirectStateFlagsNV :: distinct bit_set[IndirectStateFlagNV; Flags] -IndirectStateFlagNV :: enum Flags { - FLAG_FRONTFACE = 0, -} - -InstanceCreateFlags :: distinct bit_set[InstanceCreateFlag; Flags] -InstanceCreateFlag :: enum Flags { - ENUMERATE_PORTABILITY_KHR = 0, -} - -InternalAllocationType :: enum c.int { - EXECUTABLE = 0, -} - -LineRasterizationModeEXT :: enum c.int { - DEFAULT = 0, - RECTANGULAR = 1, - BRESENHAM = 2, - RECTANGULAR_SMOOTH = 3, -} - -LogicOp :: enum c.int { - CLEAR = 0, - AND = 1, - AND_REVERSE = 2, - COPY = 3, - AND_INVERTED = 4, - NO_OP = 5, - XOR = 6, - OR = 7, - NOR = 8, - EQUIVALENT = 9, - INVERT = 10, - OR_REVERSE = 11, - COPY_INVERTED = 12, - OR_INVERTED = 13, - NAND = 14, - SET = 15, -} - -MemoryAllocateFlags :: distinct bit_set[MemoryAllocateFlag; Flags] -MemoryAllocateFlag :: enum Flags { - DEVICE_MASK = 0, - DEVICE_ADDRESS = 1, - DEVICE_ADDRESS_CAPTURE_REPLAY = 2, - DEVICE_MASK_KHR = DEVICE_MASK, - DEVICE_ADDRESS_KHR = DEVICE_ADDRESS, - DEVICE_ADDRESS_CAPTURE_REPLAY_KHR = DEVICE_ADDRESS_CAPTURE_REPLAY, -} - -MemoryHeapFlags :: distinct bit_set[MemoryHeapFlag; Flags] -MemoryHeapFlag :: enum Flags { - DEVICE_LOCAL = 0, - MULTI_INSTANCE = 1, - MULTI_INSTANCE_KHR = MULTI_INSTANCE, -} - -MemoryOverallocationBehaviorAMD :: enum c.int { - DEFAULT = 0, - ALLOWED = 1, - DISALLOWED = 2, -} - -MemoryPropertyFlags :: distinct bit_set[MemoryPropertyFlag; Flags] -MemoryPropertyFlag :: enum Flags { - DEVICE_LOCAL = 0, - HOST_VISIBLE = 1, - HOST_COHERENT = 2, - HOST_CACHED = 3, - LAZILY_ALLOCATED = 4, - PROTECTED = 5, - DEVICE_COHERENT_AMD = 6, - DEVICE_UNCACHED_AMD = 7, - RDMA_CAPABLE_NV = 8, -} - -ObjectType :: enum c.int { - UNKNOWN = 0, - INSTANCE = 1, - PHYSICAL_DEVICE = 2, - DEVICE = 3, - QUEUE = 4, - SEMAPHORE = 5, - COMMAND_BUFFER = 6, - FENCE = 7, - DEVICE_MEMORY = 8, - BUFFER = 9, - IMAGE = 10, - EVENT = 11, - QUERY_POOL = 12, - BUFFER_VIEW = 13, - IMAGE_VIEW = 14, - SHADER_MODULE = 15, - PIPELINE_CACHE = 16, - PIPELINE_LAYOUT = 17, - RENDER_PASS = 18, - PIPELINE = 19, - DESCRIPTOR_SET_LAYOUT = 20, - SAMPLER = 21, - DESCRIPTOR_POOL = 22, - DESCRIPTOR_SET = 23, - FRAMEBUFFER = 24, - COMMAND_POOL = 25, - SAMPLER_YCBCR_CONVERSION = 1000156000, - DESCRIPTOR_UPDATE_TEMPLATE = 1000085000, - PRIVATE_DATA_SLOT = 1000295000, - SURFACE_KHR = 1000000000, - SWAPCHAIN_KHR = 1000001000, - DISPLAY_KHR = 1000002000, - DISPLAY_MODE_KHR = 1000002001, - DEBUG_REPORT_CALLBACK_EXT = 1000011000, - VIDEO_SESSION_KHR = 1000023000, - VIDEO_SESSION_PARAMETERS_KHR = 1000023001, - CU_MODULE_NVX = 1000029000, - CU_FUNCTION_NVX = 1000029001, - DEBUG_UTILS_MESSENGER_EXT = 1000128000, - ACCELERATION_STRUCTURE_KHR = 1000150000, - VALIDATION_CACHE_EXT = 1000160000, - ACCELERATION_STRUCTURE_NV = 1000165000, - PERFORMANCE_CONFIGURATION_INTEL = 1000210000, - DEFERRED_OPERATION_KHR = 1000268000, - INDIRECT_COMMANDS_LAYOUT_NV = 1000277000, - BUFFER_COLLECTION_FUCHSIA = 1000366000, - DESCRIPTOR_UPDATE_TEMPLATE_KHR = DESCRIPTOR_UPDATE_TEMPLATE, - SAMPLER_YCBCR_CONVERSION_KHR = SAMPLER_YCBCR_CONVERSION, - PRIVATE_DATA_SLOT_EXT = PRIVATE_DATA_SLOT, -} - -PeerMemoryFeatureFlags :: distinct bit_set[PeerMemoryFeatureFlag; Flags] -PeerMemoryFeatureFlag :: enum Flags { - COPY_SRC = 0, - COPY_DST = 1, - GENERIC_SRC = 2, - GENERIC_DST = 3, - COPY_SRC_KHR = COPY_SRC, - COPY_DST_KHR = COPY_DST, - GENERIC_SRC_KHR = GENERIC_SRC, - GENERIC_DST_KHR = GENERIC_DST, -} - -PerformanceConfigurationTypeINTEL :: enum c.int { - PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0, -} - -PerformanceCounterDescriptionFlagsKHR :: distinct bit_set[PerformanceCounterDescriptionFlagKHR; Flags] -PerformanceCounterDescriptionFlagKHR :: enum Flags { - PERFORMANCE_IMPACTING = 0, - CONCURRENTLY_IMPACTED = 1, -} - -PerformanceCounterScopeKHR :: enum c.int { - COMMAND_BUFFER = 0, - RENDER_PASS = 1, - COMMAND = 2, - QUERY_SCOPE_COMMAND_BUFFER = COMMAND_BUFFER, - QUERY_SCOPE_RENDER_PASS = RENDER_PASS, - QUERY_SCOPE_COMMAND = COMMAND, -} - -PerformanceCounterStorageKHR :: enum c.int { - INT32 = 0, - INT64 = 1, - UINT32 = 2, - UINT64 = 3, - FLOAT32 = 4, - FLOAT64 = 5, -} - -PerformanceCounterUnitKHR :: enum c.int { - GENERIC = 0, - PERCENTAGE = 1, - NANOSECONDS = 2, - BYTES = 3, - BYTES_PER_SECOND = 4, - KELVIN = 5, - WATTS = 6, - VOLTS = 7, - AMPS = 8, - HERTZ = 9, - CYCLES = 10, -} - -PerformanceOverrideTypeINTEL :: enum c.int { - PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0, - PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1, -} - -PerformanceParameterTypeINTEL :: enum c.int { - PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0, - PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1, -} - -PerformanceValueTypeINTEL :: enum c.int { - PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0, - PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1, - PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2, - PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3, - PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4, -} - -PhysicalDeviceType :: enum c.int { - OTHER = 0, - INTEGRATED_GPU = 1, - DISCRETE_GPU = 2, - VIRTUAL_GPU = 3, - CPU = 4, -} - -PipelineBindPoint :: enum c.int { - GRAPHICS = 0, - COMPUTE = 1, - RAY_TRACING_KHR = 1000165000, - SUBPASS_SHADING_HUAWEI = 1000369003, - RAY_TRACING_NV = RAY_TRACING_KHR, -} - -PipelineCacheCreateFlags :: distinct bit_set[PipelineCacheCreateFlag; Flags] -PipelineCacheCreateFlag :: enum Flags { - EXTERNALLY_SYNCHRONIZED = 0, - EXTERNALLY_SYNCHRONIZED_EXT = EXTERNALLY_SYNCHRONIZED, -} - -PipelineCacheHeaderVersion :: enum c.int { - ONE = 1, -} - -PipelineColorBlendStateCreateFlags :: distinct bit_set[PipelineColorBlendStateCreateFlag; Flags] -PipelineColorBlendStateCreateFlag :: enum Flags { - RASTERIZATION_ORDER_ATTACHMENT_ACCESS_ARM = 0, -} - -PipelineCompilerControlFlagsAMD :: distinct bit_set[PipelineCompilerControlFlagAMD; Flags] -PipelineCompilerControlFlagAMD :: enum Flags { -} - -PipelineCreateFlags :: distinct bit_set[PipelineCreateFlag; Flags] -PipelineCreateFlag :: enum Flags { - DISABLE_OPTIMIZATION = 0, - ALLOW_DERIVATIVES = 1, - DERIVATIVE = 2, - VIEW_INDEX_FROM_DEVICE_INDEX = 3, - DISPATCH_BASE = 4, - FAIL_ON_PIPELINE_COMPILE_REQUIRED = 8, - EARLY_RETURN_ON_FAILURE = 9, - RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_KHR = 21, - RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_EXT = 22, - RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_KHR = 14, - RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_KHR = 15, - RAY_TRACING_NO_NULL_MISS_SHADERS_KHR = 16, - RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_KHR = 17, - RAY_TRACING_SKIP_TRIANGLES_KHR = 12, - RAY_TRACING_SKIP_AABBS_KHR = 13, - RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_KHR = 19, - DEFER_COMPILE_NV = 5, - CAPTURE_STATISTICS_KHR = 6, - CAPTURE_INTERNAL_REPRESENTATIONS_KHR = 7, - INDIRECT_BINDABLE_NV = 18, - LIBRARY_KHR = 11, - RETAIN_LINK_TIME_OPTIMIZATION_INFO_EXT = 23, - LINK_TIME_OPTIMIZATION_EXT = 10, - RAY_TRACING_ALLOW_MOTION_NV = 20, - PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_KHR = RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_KHR, - PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_EXT = RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_EXT, - VIEW_INDEX_FROM_DEVICE_INDEX_KHR = VIEW_INDEX_FROM_DEVICE_INDEX, - DISPATCH_BASE_KHR = DISPATCH_BASE, - FAIL_ON_PIPELINE_COMPILE_REQUIRED_EXT = FAIL_ON_PIPELINE_COMPILE_REQUIRED, - EARLY_RETURN_ON_FAILURE_EXT = EARLY_RETURN_ON_FAILURE, -} - -PipelineCreationFeedbackFlags :: distinct bit_set[PipelineCreationFeedbackFlag; Flags] -PipelineCreationFeedbackFlag :: enum Flags { - VALID = 0, - APPLICATION_PIPELINE_CACHE_HIT = 1, - BASE_PIPELINE_ACCELERATION = 2, - VALID_EXT = VALID, - APPLICATION_PIPELINE_CACHE_HIT_EXT = APPLICATION_PIPELINE_CACHE_HIT, - BASE_PIPELINE_ACCELERATION_EXT = BASE_PIPELINE_ACCELERATION, -} - -PipelineDepthStencilStateCreateFlags :: distinct bit_set[PipelineDepthStencilStateCreateFlag; Flags] -PipelineDepthStencilStateCreateFlag :: enum Flags { - RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_ARM = 0, - RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_ARM = 1, -} - -PipelineExecutableStatisticFormatKHR :: enum c.int { - BOOL32 = 0, - INT64 = 1, - UINT64 = 2, - FLOAT64 = 3, -} - -PipelineLayoutCreateFlags :: distinct bit_set[PipelineLayoutCreateFlag; Flags] -PipelineLayoutCreateFlag :: enum Flags { - INDEPENDENT_SETS_EXT = 1, -} - -PipelineShaderStageCreateFlags :: distinct bit_set[PipelineShaderStageCreateFlag; Flags] -PipelineShaderStageCreateFlag :: enum Flags { - ALLOW_VARYING_SUBGROUP_SIZE = 0, - REQUIRE_FULL_SUBGROUPS = 1, - ALLOW_VARYING_SUBGROUP_SIZE_EXT = ALLOW_VARYING_SUBGROUP_SIZE, - REQUIRE_FULL_SUBGROUPS_EXT = REQUIRE_FULL_SUBGROUPS, -} - -PipelineStageFlags :: distinct bit_set[PipelineStageFlag; Flags] -PipelineStageFlag :: enum Flags { - TOP_OF_PIPE = 0, - DRAW_INDIRECT = 1, - VERTEX_INPUT = 2, - VERTEX_SHADER = 3, - TESSELLATION_CONTROL_SHADER = 4, - TESSELLATION_EVALUATION_SHADER = 5, - GEOMETRY_SHADER = 6, - FRAGMENT_SHADER = 7, - EARLY_FRAGMENT_TESTS = 8, - LATE_FRAGMENT_TESTS = 9, - COLOR_ATTACHMENT_OUTPUT = 10, - COMPUTE_SHADER = 11, - TRANSFER = 12, - BOTTOM_OF_PIPE = 13, - HOST = 14, - ALL_GRAPHICS = 15, - ALL_COMMANDS = 16, - TRANSFORM_FEEDBACK_EXT = 24, - CONDITIONAL_RENDERING_EXT = 18, - ACCELERATION_STRUCTURE_BUILD_KHR = 25, - RAY_TRACING_SHADER_KHR = 21, - TASK_SHADER_NV = 19, - MESH_SHADER_NV = 20, - FRAGMENT_DENSITY_PROCESS_EXT = 23, - FRAGMENT_SHADING_RATE_ATTACHMENT_KHR = 22, - COMMAND_PREPROCESS_NV = 17, - SHADING_RATE_IMAGE_NV = FRAGMENT_SHADING_RATE_ATTACHMENT_KHR, - RAY_TRACING_SHADER_NV = RAY_TRACING_SHADER_KHR, - ACCELERATION_STRUCTURE_BUILD_NV = ACCELERATION_STRUCTURE_BUILD_KHR, -} - -PipelineStageFlags_NONE :: PipelineStageFlags{} - - -PointClippingBehavior :: enum c.int { - ALL_CLIP_PLANES = 0, - USER_CLIP_PLANES_ONLY = 1, - ALL_CLIP_PLANES_KHR = ALL_CLIP_PLANES, - USER_CLIP_PLANES_ONLY_KHR = USER_CLIP_PLANES_ONLY, -} - -PolygonMode :: enum c.int { - FILL = 0, - LINE = 1, - POINT = 2, - FILL_RECTANGLE_NV = 1000153000, -} - -PresentModeKHR :: enum c.int { - IMMEDIATE = 0, - MAILBOX = 1, - FIFO = 2, - FIFO_RELAXED = 3, - SHARED_DEMAND_REFRESH = 1000111000, - SHARED_CONTINUOUS_REFRESH = 1000111001, -} - -PrimitiveTopology :: enum c.int { - POINT_LIST = 0, - LINE_LIST = 1, - LINE_STRIP = 2, - TRIANGLE_LIST = 3, - TRIANGLE_STRIP = 4, - TRIANGLE_FAN = 5, - LINE_LIST_WITH_ADJACENCY = 6, - LINE_STRIP_WITH_ADJACENCY = 7, - TRIANGLE_LIST_WITH_ADJACENCY = 8, - TRIANGLE_STRIP_WITH_ADJACENCY = 9, - PATCH_LIST = 10, -} - -ProvokingVertexModeEXT :: enum c.int { - FIRST_VERTEX = 0, - LAST_VERTEX = 1, -} - -QueryControlFlags :: distinct bit_set[QueryControlFlag; Flags] -QueryControlFlag :: enum Flags { - PRECISE = 0, -} - -QueryPipelineStatisticFlags :: distinct bit_set[QueryPipelineStatisticFlag; Flags] -QueryPipelineStatisticFlag :: enum Flags { - INPUT_ASSEMBLY_VERTICES = 0, - INPUT_ASSEMBLY_PRIMITIVES = 1, - VERTEX_SHADER_INVOCATIONS = 2, - GEOMETRY_SHADER_INVOCATIONS = 3, - GEOMETRY_SHADER_PRIMITIVES = 4, - CLIPPING_INVOCATIONS = 5, - CLIPPING_PRIMITIVES = 6, - FRAGMENT_SHADER_INVOCATIONS = 7, - TESSELLATION_CONTROL_SHADER_PATCHES = 8, - TESSELLATION_EVALUATION_SHADER_INVOCATIONS = 9, - COMPUTE_SHADER_INVOCATIONS = 10, -} - -QueryPoolSamplingModeINTEL :: enum c.int { - QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0, -} - -QueryResultFlags :: distinct bit_set[QueryResultFlag; Flags] -QueryResultFlag :: enum Flags { - _64 = 0, - WAIT = 1, - WITH_AVAILABILITY = 2, - PARTIAL = 3, - WITH_STATUS_KHR = 4, -} - -QueryType :: enum c.int { - OCCLUSION = 0, - PIPELINE_STATISTICS = 1, - TIMESTAMP = 2, - RESULT_STATUS_ONLY_KHR = 1000023000, - TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004, - PERFORMANCE_QUERY_KHR = 1000116000, - ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000150000, - ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150001, - ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000, - PERFORMANCE_QUERY_INTEL = 1000210000, - VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR = 1000299000, - PRIMITIVES_GENERATED_EXT = 1000382000, -} - -QueueFlags :: distinct bit_set[QueueFlag; Flags] -QueueFlag :: enum Flags { - GRAPHICS = 0, - COMPUTE = 1, - TRANSFER = 2, - SPARSE_BINDING = 3, - PROTECTED = 4, - VIDEO_DECODE_KHR = 5, - VIDEO_ENCODE_KHR = 6, -} - -QueueGlobalPriorityKHR :: enum c.int { - LOW = 128, - MEDIUM = 256, - HIGH = 512, - REALTIME = 1024, - LOW_EXT = LOW, - MEDIUM_EXT = MEDIUM, - HIGH_EXT = HIGH, - REALTIME_EXT = REALTIME, -} - -RasterizationOrderAMD :: enum c.int { - STRICT = 0, - RELAXED = 1, -} - -RayTracingShaderGroupTypeKHR :: enum c.int { - GENERAL = 0, - TRIANGLES_HIT_GROUP = 1, - PROCEDURAL_HIT_GROUP = 2, - GENERAL_NV = GENERAL, - TRIANGLES_HIT_GROUP_NV = TRIANGLES_HIT_GROUP, - PROCEDURAL_HIT_GROUP_NV = PROCEDURAL_HIT_GROUP, -} - -RenderPassCreateFlags :: distinct bit_set[RenderPassCreateFlag; Flags] -RenderPassCreateFlag :: enum Flags { - TRANSFORM_QCOM = 1, -} - -RenderingFlags :: distinct bit_set[RenderingFlag; Flags] -RenderingFlag :: enum Flags { - CONTENTS_SECONDARY_COMMAND_BUFFERS = 0, - SUSPENDING = 1, - RESUMING = 2, - CONTENTS_SECONDARY_COMMAND_BUFFERS_KHR = CONTENTS_SECONDARY_COMMAND_BUFFERS, - SUSPENDING_KHR = SUSPENDING, - RESUMING_KHR = RESUMING, -} - -ResolveModeFlags :: distinct bit_set[ResolveModeFlag; Flags] -ResolveModeFlag :: enum Flags { - SAMPLE_ZERO = 0, - AVERAGE = 1, - MIN = 2, - MAX = 3, - SAMPLE_ZERO_KHR = SAMPLE_ZERO, - AVERAGE_KHR = AVERAGE, - MIN_KHR = MIN, - MAX_KHR = MAX, -} - -ResolveModeFlags_NONE :: ResolveModeFlags{} - - -Result :: enum c.int { - SUCCESS = 0, - NOT_READY = 1, - TIMEOUT = 2, - EVENT_SET = 3, - EVENT_RESET = 4, - INCOMPLETE = 5, - ERROR_OUT_OF_HOST_MEMORY = -1, - ERROR_OUT_OF_DEVICE_MEMORY = -2, - ERROR_INITIALIZATION_FAILED = -3, - ERROR_DEVICE_LOST = -4, - ERROR_MEMORY_MAP_FAILED = -5, - ERROR_LAYER_NOT_PRESENT = -6, - ERROR_EXTENSION_NOT_PRESENT = -7, - ERROR_FEATURE_NOT_PRESENT = -8, - ERROR_INCOMPATIBLE_DRIVER = -9, - ERROR_TOO_MANY_OBJECTS = -10, - ERROR_FORMAT_NOT_SUPPORTED = -11, - ERROR_FRAGMENTED_POOL = -12, - ERROR_UNKNOWN = -13, - ERROR_OUT_OF_POOL_MEMORY = -1000069000, - ERROR_INVALID_EXTERNAL_HANDLE = -1000072003, - ERROR_FRAGMENTATION = -1000161000, - ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000, - PIPELINE_COMPILE_REQUIRED = 1000297000, - ERROR_SURFACE_LOST_KHR = -1000000000, - ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001, - SUBOPTIMAL_KHR = 1000001003, - ERROR_OUT_OF_DATE_KHR = -1000001004, - ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001, - ERROR_VALIDATION_FAILED_EXT = -1000011001, - ERROR_INVALID_SHADER_NV = -1000012000, - ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000, - ERROR_NOT_PERMITTED_KHR = -1000174001, - ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000, - THREAD_IDLE_KHR = 1000268000, - THREAD_DONE_KHR = 1000268001, - OPERATION_DEFERRED_KHR = 1000268002, - OPERATION_NOT_DEFERRED_KHR = 1000268003, - ERROR_OUT_OF_POOL_MEMORY_KHR = ERROR_OUT_OF_POOL_MEMORY, - ERROR_INVALID_EXTERNAL_HANDLE_KHR = ERROR_INVALID_EXTERNAL_HANDLE, - ERROR_FRAGMENTATION_EXT = ERROR_FRAGMENTATION, - ERROR_NOT_PERMITTED_EXT = ERROR_NOT_PERMITTED_KHR, - ERROR_INVALID_DEVICE_ADDRESS_EXT = ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS, - ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS, - PIPELINE_COMPILE_REQUIRED_EXT = PIPELINE_COMPILE_REQUIRED, - ERROR_PIPELINE_COMPILE_REQUIRED_EXT = PIPELINE_COMPILE_REQUIRED, -} - -SampleCountFlags :: distinct bit_set[SampleCountFlag; Flags] -SampleCountFlag :: enum Flags { - _1 = 0, - _2 = 1, - _4 = 2, - _8 = 3, - _16 = 4, - _32 = 5, - _64 = 6, -} - -SamplerAddressMode :: enum c.int { - REPEAT = 0, - MIRRORED_REPEAT = 1, - CLAMP_TO_EDGE = 2, - CLAMP_TO_BORDER = 3, - MIRROR_CLAMP_TO_EDGE = 4, - MIRROR_CLAMP_TO_EDGE_KHR = MIRROR_CLAMP_TO_EDGE, -} - -SamplerCreateFlags :: distinct bit_set[SamplerCreateFlag; Flags] -SamplerCreateFlag :: enum Flags { - SUBSAMPLED_EXT = 0, - SUBSAMPLED_COARSE_RECONSTRUCTION_EXT = 1, -} - -SamplerMipmapMode :: enum c.int { - NEAREST = 0, - LINEAR = 1, -} - -SamplerReductionMode :: enum c.int { - WEIGHTED_AVERAGE = 0, - MIN = 1, - MAX = 2, - WEIGHTED_AVERAGE_EXT = WEIGHTED_AVERAGE, - MIN_EXT = MIN, - MAX_EXT = MAX, -} - -SamplerYcbcrModelConversion :: enum c.int { - RGB_IDENTITY = 0, - YCBCR_IDENTITY = 1, - YCBCR_709 = 2, - YCBCR_601 = 3, - YCBCR_2020 = 4, - RGB_IDENTITY_KHR = RGB_IDENTITY, - YCBCR_IDENTITY_KHR = YCBCR_IDENTITY, - YCBCR_709_KHR = YCBCR_709, - YCBCR_601_KHR = YCBCR_601, - YCBCR_2020_KHR = YCBCR_2020, -} - -SamplerYcbcrRange :: enum c.int { - ITU_FULL = 0, - ITU_NARROW = 1, - ITU_FULL_KHR = ITU_FULL, - ITU_NARROW_KHR = ITU_NARROW, -} - -ScopeNV :: enum c.int { - DEVICE = 1, - WORKGROUP = 2, - SUBGROUP = 3, - QUEUE_FAMILY = 5, -} - -SemaphoreImportFlags :: distinct bit_set[SemaphoreImportFlag; Flags] -SemaphoreImportFlag :: enum Flags { - TEMPORARY = 0, - TEMPORARY_KHR = TEMPORARY, -} - -SemaphoreType :: enum c.int { - BINARY = 0, - TIMELINE = 1, - BINARY_KHR = BINARY, - TIMELINE_KHR = TIMELINE, -} - -SemaphoreWaitFlags :: distinct bit_set[SemaphoreWaitFlag; Flags] -SemaphoreWaitFlag :: enum Flags { - ANY = 0, - ANY_KHR = ANY, -} - -ShaderCorePropertiesFlagsAMD :: distinct bit_set[ShaderCorePropertiesFlagAMD; Flags] -ShaderCorePropertiesFlagAMD :: enum Flags { -} - -ShaderFloatControlsIndependence :: enum c.int { - _32_BIT_ONLY = 0, - ALL = 1, - NONE = 2, - _32_BIT_ONLY_KHR = _32_BIT_ONLY, - ALL_KHR = ALL, -} - -ShaderGroupShaderKHR :: enum c.int { - GENERAL = 0, - CLOSEST_HIT = 1, - ANY_HIT = 2, - INTERSECTION = 3, -} - -ShaderInfoTypeAMD :: enum c.int { - STATISTICS = 0, - BINARY = 1, - DISASSEMBLY = 2, -} - -ShaderStageFlags :: distinct bit_set[ShaderStageFlag; Flags] -ShaderStageFlag :: enum Flags { - VERTEX = 0, - TESSELLATION_CONTROL = 1, - TESSELLATION_EVALUATION = 2, - GEOMETRY = 3, - FRAGMENT = 4, - COMPUTE = 5, - RAYGEN_KHR = 8, - ANY_HIT_KHR = 9, - CLOSEST_HIT_KHR = 10, - MISS_KHR = 11, - INTERSECTION_KHR = 12, - CALLABLE_KHR = 13, - TASK_NV = 6, - MESH_NV = 7, - SUBPASS_SHADING_HUAWEI = 14, - RAYGEN_NV = RAYGEN_KHR, - ANY_HIT_NV = ANY_HIT_KHR, - CLOSEST_HIT_NV = CLOSEST_HIT_KHR, - MISS_NV = MISS_KHR, - INTERSECTION_NV = INTERSECTION_KHR, - CALLABLE_NV = CALLABLE_KHR, - _MAX = 31, // Needed for the *_ALL bit set -} - -ShaderStageFlags_ALL_GRAPHICS :: ShaderStageFlags{.VERTEX, .TESSELLATION_CONTROL, .TESSELLATION_EVALUATION, .GEOMETRY, .FRAGMENT} -ShaderStageFlags_ALL :: ShaderStageFlags{.VERTEX, .TESSELLATION_CONTROL, .TESSELLATION_EVALUATION, .GEOMETRY, .FRAGMENT, .COMPUTE, .TASK_NV, .MESH_NV, .RAYGEN_KHR, .ANY_HIT_KHR, .CLOSEST_HIT_KHR, .MISS_KHR, .INTERSECTION_KHR, .CALLABLE_KHR, .SUBPASS_SHADING_HUAWEI, ShaderStageFlag(15), ShaderStageFlag(16), ShaderStageFlag(17), ShaderStageFlag(18), ShaderStageFlag(19), ShaderStageFlag(20), ShaderStageFlag(21), ShaderStageFlag(22), ShaderStageFlag(23), ShaderStageFlag(24), ShaderStageFlag(25), ShaderStageFlag(26), ShaderStageFlag(27), ShaderStageFlag(28), ShaderStageFlag(29), ShaderStageFlag(30)} - - -ShadingRatePaletteEntryNV :: enum c.int { - NO_INVOCATIONS = 0, - _16_INVOCATIONS_PER_PIXEL = 1, - _8_INVOCATIONS_PER_PIXEL = 2, - _4_INVOCATIONS_PER_PIXEL = 3, - _2_INVOCATIONS_PER_PIXEL = 4, - _1_INVOCATION_PER_PIXEL = 5, - _1_INVOCATION_PER_2X1_PIXELS = 6, - _1_INVOCATION_PER_1X2_PIXELS = 7, - _1_INVOCATION_PER_2X2_PIXELS = 8, - _1_INVOCATION_PER_4X2_PIXELS = 9, - _1_INVOCATION_PER_2X4_PIXELS = 10, - _1_INVOCATION_PER_4X4_PIXELS = 11, -} - -SharingMode :: enum c.int { - EXCLUSIVE = 0, - CONCURRENT = 1, -} - -SparseImageFormatFlags :: distinct bit_set[SparseImageFormatFlag; Flags] -SparseImageFormatFlag :: enum Flags { - SINGLE_MIPTAIL = 0, - ALIGNED_MIP_SIZE = 1, - NONSTANDARD_BLOCK_SIZE = 2, -} - -SparseMemoryBindFlags :: distinct bit_set[SparseMemoryBindFlag; Flags] -SparseMemoryBindFlag :: enum Flags { - METADATA = 0, -} - -StencilFaceFlags :: distinct bit_set[StencilFaceFlag; Flags] -StencilFaceFlag :: enum Flags { - FRONT = 0, - BACK = 1, -} - -StencilFaceFlags_FRONT_AND_BACK :: StencilFaceFlags{.FRONT, .BACK} - - -StencilOp :: enum c.int { - KEEP = 0, - ZERO = 1, - REPLACE = 2, - INCREMENT_AND_CLAMP = 3, - DECREMENT_AND_CLAMP = 4, - INVERT = 5, - INCREMENT_AND_WRAP = 6, - DECREMENT_AND_WRAP = 7, -} - -StructureType :: enum c.int { - APPLICATION_INFO = 0, - INSTANCE_CREATE_INFO = 1, - DEVICE_QUEUE_CREATE_INFO = 2, - DEVICE_CREATE_INFO = 3, - SUBMIT_INFO = 4, - MEMORY_ALLOCATE_INFO = 5, - MAPPED_MEMORY_RANGE = 6, - BIND_SPARSE_INFO = 7, - FENCE_CREATE_INFO = 8, - SEMAPHORE_CREATE_INFO = 9, - EVENT_CREATE_INFO = 10, - QUERY_POOL_CREATE_INFO = 11, - BUFFER_CREATE_INFO = 12, - BUFFER_VIEW_CREATE_INFO = 13, - IMAGE_CREATE_INFO = 14, - IMAGE_VIEW_CREATE_INFO = 15, - SHADER_MODULE_CREATE_INFO = 16, - PIPELINE_CACHE_CREATE_INFO = 17, - PIPELINE_SHADER_STAGE_CREATE_INFO = 18, - PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19, - PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20, - PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21, - PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22, - PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23, - PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24, - PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25, - PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26, - PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27, - GRAPHICS_PIPELINE_CREATE_INFO = 28, - COMPUTE_PIPELINE_CREATE_INFO = 29, - PIPELINE_LAYOUT_CREATE_INFO = 30, - SAMPLER_CREATE_INFO = 31, - DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32, - DESCRIPTOR_POOL_CREATE_INFO = 33, - DESCRIPTOR_SET_ALLOCATE_INFO = 34, - WRITE_DESCRIPTOR_SET = 35, - COPY_DESCRIPTOR_SET = 36, - FRAMEBUFFER_CREATE_INFO = 37, - RENDER_PASS_CREATE_INFO = 38, - COMMAND_POOL_CREATE_INFO = 39, - COMMAND_BUFFER_ALLOCATE_INFO = 40, - COMMAND_BUFFER_INHERITANCE_INFO = 41, - COMMAND_BUFFER_BEGIN_INFO = 42, - RENDER_PASS_BEGIN_INFO = 43, - BUFFER_MEMORY_BARRIER = 44, - IMAGE_MEMORY_BARRIER = 45, - MEMORY_BARRIER = 46, - LOADER_INSTANCE_CREATE_INFO = 47, - LOADER_DEVICE_CREATE_INFO = 48, - PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000, - BIND_BUFFER_MEMORY_INFO = 1000157000, - BIND_IMAGE_MEMORY_INFO = 1000157001, - PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000, - MEMORY_DEDICATED_REQUIREMENTS = 1000127000, - MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001, - MEMORY_ALLOCATE_FLAGS_INFO = 1000060000, - DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003, - DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004, - DEVICE_GROUP_SUBMIT_INFO = 1000060005, - DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006, - BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013, - BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014, - PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000, - DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001, - BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000, - IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001, - IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002, - MEMORY_REQUIREMENTS_2 = 1000146003, - SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004, - PHYSICAL_DEVICE_FEATURES_2 = 1000059000, - PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001, - FORMAT_PROPERTIES_2 = 1000059002, - IMAGE_FORMAT_PROPERTIES_2 = 1000059003, - PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004, - QUEUE_FAMILY_PROPERTIES_2 = 1000059005, - PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006, - SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007, - PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008, - PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000, - RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001, - IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002, - PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003, - RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000, - PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001, - PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002, - PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000, - PROTECTED_SUBMIT_INFO = 1000145000, - PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001, - PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002, - DEVICE_QUEUE_INFO_2 = 1000145003, - SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000, - SAMPLER_YCBCR_CONVERSION_INFO = 1000156001, - BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002, - IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003, - PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004, - SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005, - DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000, - PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000, - EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001, - PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002, - EXTERNAL_BUFFER_PROPERTIES = 1000071003, - PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004, - EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000, - EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001, - EXPORT_MEMORY_ALLOCATE_INFO = 1000072002, - PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000, - EXTERNAL_FENCE_PROPERTIES = 1000112001, - EXPORT_FENCE_CREATE_INFO = 1000113000, - EXPORT_SEMAPHORE_CREATE_INFO = 1000077000, - PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000, - EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001, - PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000, - DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001, - PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000, - PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49, - PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50, - PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51, - PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52, - IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000, - ATTACHMENT_DESCRIPTION_2 = 1000109000, - ATTACHMENT_REFERENCE_2 = 1000109001, - SUBPASS_DESCRIPTION_2 = 1000109002, - SUBPASS_DEPENDENCY_2 = 1000109003, - RENDER_PASS_CREATE_INFO_2 = 1000109004, - SUBPASS_BEGIN_INFO = 1000109005, - SUBPASS_END_INFO = 1000109006, - PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000, - PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000, - PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000, - PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000, - PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000, - DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000, - PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001, - PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002, - DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003, - DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004, - PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000, - SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001, - PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000, - IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000, - PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000, - SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001, - PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000, - PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000, - FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001, - FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002, - RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003, - PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000, - PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000, - PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000, - ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001, - ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002, - PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000, - PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000, - PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001, - SEMAPHORE_TYPE_CREATE_INFO = 1000207002, - TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003, - SEMAPHORE_WAIT_INFO = 1000207004, - SEMAPHORE_SIGNAL_INFO = 1000207005, - PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000, - BUFFER_DEVICE_ADDRESS_INFO = 1000244001, - BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002, - MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003, - DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004, - PHYSICAL_DEVICE_VULKAN_1_3_FEATURES = 53, - PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES = 54, - PIPELINE_CREATION_FEEDBACK_CREATE_INFO = 1000192000, - PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES = 1000215000, - PHYSICAL_DEVICE_TOOL_PROPERTIES = 1000245000, - PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES = 1000276000, - PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES = 1000295000, - DEVICE_PRIVATE_DATA_CREATE_INFO = 1000295001, - PRIVATE_DATA_SLOT_CREATE_INFO = 1000295002, - PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES = 1000297000, - MEMORY_BARRIER_2 = 1000314000, - BUFFER_MEMORY_BARRIER_2 = 1000314001, - IMAGE_MEMORY_BARRIER_2 = 1000314002, - DEPENDENCY_INFO = 1000314003, - SUBMIT_INFO_2 = 1000314004, - SEMAPHORE_SUBMIT_INFO = 1000314005, - COMMAND_BUFFER_SUBMIT_INFO = 1000314006, - PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES = 1000314007, - PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES = 1000325000, - PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES = 1000335000, - COPY_BUFFER_INFO_2 = 1000337000, - COPY_IMAGE_INFO_2 = 1000337001, - COPY_BUFFER_TO_IMAGE_INFO_2 = 1000337002, - COPY_IMAGE_TO_BUFFER_INFO_2 = 1000337003, - BLIT_IMAGE_INFO_2 = 1000337004, - RESOLVE_IMAGE_INFO_2 = 1000337005, - BUFFER_COPY_2 = 1000337006, - IMAGE_COPY_2 = 1000337007, - IMAGE_BLIT_2 = 1000337008, - BUFFER_IMAGE_COPY_2 = 1000337009, - IMAGE_RESOLVE_2 = 1000337010, - PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES = 1000225000, - PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO = 1000225001, - PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES = 1000225002, - PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES = 1000138000, - PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES = 1000138001, - WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK = 1000138002, - DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO = 1000138003, - PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES = 1000066000, - RENDERING_INFO = 1000044000, - RENDERING_ATTACHMENT_INFO = 1000044001, - PIPELINE_RENDERING_CREATE_INFO = 1000044002, - PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES = 1000044003, - COMMAND_BUFFER_INHERITANCE_RENDERING_INFO = 1000044004, - PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES = 1000280000, - PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES = 1000280001, - PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES = 1000281001, - FORMAT_PROPERTIES_3 = 1000360000, - PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES = 1000413000, - PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001, - DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002, - DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003, - SWAPCHAIN_CREATE_INFO_KHR = 1000001000, - PRESENT_INFO_KHR = 1000001001, - DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007, - IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008, - BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009, - ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010, - DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011, - DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012, - DISPLAY_MODE_CREATE_INFO_KHR = 1000002000, - DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001, - DISPLAY_PRESENT_INFO_KHR = 1000003000, - XLIB_SURFACE_CREATE_INFO_KHR = 1000004000, - XCB_SURFACE_CREATE_INFO_KHR = 1000005000, - WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000, - ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000, - WIN32_SURFACE_CREATE_INFO_KHR = 1000009000, - DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000, - PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000, - DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000, - DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001, - DEBUG_MARKER_MARKER_INFO_EXT = 1000022002, - VIDEO_PROFILE_KHR = 1000023000, - VIDEO_CAPABILITIES_KHR = 1000023001, - VIDEO_PICTURE_RESOURCE_KHR = 1000023002, - VIDEO_GET_MEMORY_PROPERTIES_KHR = 1000023003, - VIDEO_BIND_MEMORY_KHR = 1000023004, - VIDEO_SESSION_CREATE_INFO_KHR = 1000023005, - VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000023006, - VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR = 1000023007, - VIDEO_BEGIN_CODING_INFO_KHR = 1000023008, - VIDEO_END_CODING_INFO_KHR = 1000023009, - VIDEO_CODING_CONTROL_INFO_KHR = 1000023010, - VIDEO_REFERENCE_SLOT_KHR = 1000023011, - VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000023012, - VIDEO_PROFILES_KHR = 1000023013, - PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR = 1000023014, - VIDEO_FORMAT_PROPERTIES_KHR = 1000023015, - QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_2_KHR = 1000023016, - VIDEO_DECODE_INFO_KHR = 1000024000, - VIDEO_DECODE_CAPABILITIES_KHR = 1000024001, - DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000, - DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001, - DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002, - PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000, - PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001, - PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002, - CU_MODULE_CREATE_INFO_NVX = 1000029000, - CU_FUNCTION_CREATE_INFO_NVX = 1000029001, - CU_LAUNCH_INFO_NVX = 1000029002, - IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000, - IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001, - VIDEO_ENCODE_H264_CAPABILITIES_EXT = 1000038000, - VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000038001, - VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT = 1000038002, - VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT = 1000038003, - VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT = 1000038004, - VIDEO_ENCODE_H264_NALU_SLICE_EXT = 1000038005, - VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT = 1000038006, - VIDEO_ENCODE_H264_PROFILE_EXT = 1000038007, - VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT = 1000038008, - VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT = 1000038009, - VIDEO_ENCODE_H264_REFERENCE_LISTS_EXT = 1000038010, - VIDEO_ENCODE_H265_CAPABILITIES_EXT = 1000039000, - VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000039001, - VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT = 1000039002, - VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT = 1000039003, - VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT = 1000039004, - VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_EXT = 1000039005, - VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_EXT = 1000039006, - VIDEO_ENCODE_H265_PROFILE_EXT = 1000039007, - VIDEO_ENCODE_H265_REFERENCE_LISTS_EXT = 1000039008, - VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT = 1000039009, - VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT = 1000039010, - VIDEO_DECODE_H264_CAPABILITIES_EXT = 1000040000, - VIDEO_DECODE_H264_PICTURE_INFO_EXT = 1000040001, - VIDEO_DECODE_H264_MVC_EXT = 1000040002, - VIDEO_DECODE_H264_PROFILE_EXT = 1000040003, - VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000040004, - VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT = 1000040005, - VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT = 1000040006, - TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000, - RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006, - RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007, - ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008, - MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009, - STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000, - PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000, - EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000, - EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001, - IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000, - EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001, - WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000, - VALIDATION_FLAGS_EXT = 1000061000, - VI_SURFACE_CREATE_INFO_NN = 1000062000, - IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000, - PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001, - IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000, - EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001, - MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002, - MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003, - IMPORT_MEMORY_FD_INFO_KHR = 1000074000, - MEMORY_FD_PROPERTIES_KHR = 1000074001, - MEMORY_GET_FD_INFO_KHR = 1000074002, - WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000, - IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000, - EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001, - D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002, - SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003, - IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000, - SEMAPHORE_GET_FD_INFO_KHR = 1000079001, - PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000, - COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000, - PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001, - CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002, - PRESENT_REGIONS_KHR = 1000084000, - PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000, - SURFACE_CAPABILITIES_2_EXT = 1000090000, - DISPLAY_POWER_INFO_EXT = 1000091000, - DEVICE_EVENT_INFO_EXT = 1000091001, - DISPLAY_EVENT_INFO_EXT = 1000091002, - SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003, - PRESENT_TIMES_INFO_GOOGLE = 1000092000, - PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000, - PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000, - PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000, - PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001, - PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000, - PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001, - PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000, - PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001, - HDR_METADATA_EXT = 1000105000, - SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000, - IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000, - EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001, - FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002, - IMPORT_FENCE_FD_INFO_KHR = 1000115000, - FENCE_GET_FD_INFO_KHR = 1000115001, - PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000, - PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001, - QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002, - PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003, - ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004, - PERFORMANCE_COUNTER_KHR = 1000116005, - PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006, - PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000, - SURFACE_CAPABILITIES_2_KHR = 1000119001, - SURFACE_FORMAT_2_KHR = 1000119002, - DISPLAY_PROPERTIES_2_KHR = 1000121000, - DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001, - DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002, - DISPLAY_PLANE_INFO_2_KHR = 1000121003, - DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004, - IOS_SURFACE_CREATE_INFO_MVK = 1000122000, - MACOS_SURFACE_CREATE_INFO_MVK = 1000123000, - DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000, - DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001, - DEBUG_UTILS_LABEL_EXT = 1000128002, - DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003, - DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004, - ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000, - ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001, - ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002, - IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003, - MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004, - EXTERNAL_FORMAT_ANDROID = 1000129005, - ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006, - SAMPLE_LOCATIONS_INFO_EXT = 1000143000, - RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001, - PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002, - PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003, - MULTISAMPLE_PROPERTIES_EXT = 1000143004, - PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000, - PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001, - PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002, - PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000, - WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000150007, - ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000, - ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002, - ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003, - ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004, - ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005, - ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006, - ACCELERATION_STRUCTURE_VERSION_INFO_KHR = 1000150009, - COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010, - COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011, - COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012, - PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR = 1000150013, - PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR = 1000150014, - ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017, - ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR = 1000150020, - PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR = 1000347000, - PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR = 1000347001, - RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015, - RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016, - RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018, - PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR = 1000348013, - PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000, - PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000, - PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001, - DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000, - PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002, - IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003, - IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004, - IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005, - DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT = 1000158006, - VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000, - SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001, - PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR = 1000163000, - PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR = 1000163001, - PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000, - PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001, - PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002, - PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005, - RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000, - ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001, - GEOMETRY_NV = 1000165003, - GEOMETRY_TRIANGLES_NV = 1000165004, - GEOMETRY_AABB_NV = 1000165005, - BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006, - WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007, - ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008, - PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009, - RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011, - ACCELERATION_STRUCTURE_INFO_NV = 1000165012, - PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000, - PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001, - PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000, - FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001, - IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000, - MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001, - PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002, - PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000, - PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000, - CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000, - PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000, - VIDEO_DECODE_H265_CAPABILITIES_EXT = 1000187000, - VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000187001, - VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT = 1000187002, - VIDEO_DECODE_H265_PROFILE_EXT = 1000187003, - VIDEO_DECODE_H265_PICTURE_INFO_EXT = 1000187004, - VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT = 1000187005, - DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000, - PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000, - QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001, - DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000, - PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000, - PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001, - PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002, - PRESENT_FRAME_TOKEN_GGP = 1000191000, - PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000, - PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000, - PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001, - PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000, - PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000, - PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000, - PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002, - CHECKPOINT_DATA_NV = 1000206000, - QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001, - PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000, - QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000, - INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001, - PERFORMANCE_MARKER_INFO_INTEL = 1000210002, - PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003, - PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004, - PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005, - PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000, - DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000, - SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001, - IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000, - METAL_SURFACE_CREATE_INFO_EXT = 1000217000, - PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000, - PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001, - RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002, - FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000226000, - PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR = 1000226001, - PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR = 1000226002, - PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR = 1000226003, - PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR = 1000226004, - PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000, - PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000, - PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT = 1000234000, - PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000, - PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000, - MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001, - SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000, - PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000, - PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000, - BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002, - VALIDATION_FEATURES_EXT = 1000247000, - PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR = 1000248000, - PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000, - COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001, - PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002, - PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000, - PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001, - FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002, - PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000, - PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000, - PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT = 1000254000, - PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT = 1000254001, - PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT = 1000254002, - SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000, - SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002, - SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001, - HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000, - PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000, - PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001, - PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002, - PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000, - PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000, - PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000, - PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000, - PIPELINE_INFO_KHR = 1000269001, - PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002, - PIPELINE_EXECUTABLE_INFO_KHR = 1000269003, - PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004, - PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005, - PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000, - PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000, - GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001, - GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002, - INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003, - INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004, - GENERATED_COMMANDS_INFO_NV = 1000277005, - GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006, - PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007, - PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV = 1000278000, - COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV = 1000278001, - PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000, - COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000, - RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001, - PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT = 1000284000, - DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT = 1000284001, - DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT = 1000284002, - PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000, - PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001, - SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000, - PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001, - PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002, - PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000, - PRESENT_ID_KHR = 1000294000, - PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001, - VIDEO_ENCODE_INFO_KHR = 1000299000, - VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001, - VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR = 1000299002, - VIDEO_ENCODE_CAPABILITIES_KHR = 1000299003, - PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000, - DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001, - QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008, - CHECKPOINT_DATA_2_NV = 1000314009, - PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT = 1000320000, - PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT = 1000320001, - GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT = 1000320002, - PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR = 1000323000, - PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV = 1000326000, - PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV = 1000326001, - PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV = 1000326002, - ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV = 1000327000, - PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV = 1000327001, - ACCELERATION_STRUCTURE_MOTION_INFO_NV = 1000327002, - PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT = 1000330000, - PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000, - PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001, - COPY_COMMAND_TRANSFORM_INFO_QCOM = 1000333000, - PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000, - PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000, - PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = 1000342000, - PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT = 1000344000, - DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000, - PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = 1000351000, - MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = 1000351002, - PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT = 1000352000, - VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT = 1000352001, - VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT = 1000352002, - PHYSICAL_DEVICE_DRM_PROPERTIES_EXT = 1000353000, - PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT = 1000355000, - PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT = 1000355001, - PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT = 1000356000, - IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364000, - MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA = 1000364001, - MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364002, - IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA = 1000365000, - SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA = 1000365001, - BUFFER_COLLECTION_CREATE_INFO_FUCHSIA = 1000366000, - IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA = 1000366001, - BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA = 1000366002, - BUFFER_COLLECTION_PROPERTIES_FUCHSIA = 1000366003, - BUFFER_CONSTRAINTS_INFO_FUCHSIA = 1000366004, - BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA = 1000366005, - IMAGE_CONSTRAINTS_INFO_FUCHSIA = 1000366006, - IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA = 1000366007, - SYSMEM_COLOR_SPACE_FUCHSIA = 1000366008, - BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA = 1000366009, - SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI = 1000369000, - PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI = 1000369001, - PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI = 1000369002, - PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI = 1000370000, - MEMORY_GET_REMOTE_ADDRESS_INFO_NV = 1000371000, - PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001, - PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT = 1000377000, - SCREEN_SURFACE_CREATE_INFO_QNX = 1000378000, - PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT = 1000381000, - PIPELINE_COLOR_WRITE_CREATE_INFO_EXT = 1000381001, - PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT = 1000382000, - PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT = 1000391000, - IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT = 1000391001, - PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000, - PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001, - PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = 1000393000, - PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000, - SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001, - PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000, - PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000, - DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = 1000420001, - DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002, - PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000, - PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001, - SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002, - PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000, - PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, - PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, - DEBUG_REPORT_CREATE_INFO_EXT = DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT, - RENDERING_INFO_KHR = RENDERING_INFO, - RENDERING_ATTACHMENT_INFO_KHR = RENDERING_ATTACHMENT_INFO, - PIPELINE_RENDERING_CREATE_INFO_KHR = PIPELINE_RENDERING_CREATE_INFO, - PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES, - COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = COMMAND_BUFFER_INHERITANCE_RENDERING_INFO, - ATTACHMENT_SAMPLE_COUNT_INFO_NV = ATTACHMENT_SAMPLE_COUNT_INFO_AMD, - RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = RENDER_PASS_MULTIVIEW_CREATE_INFO, - PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = PHYSICAL_DEVICE_MULTIVIEW_FEATURES, - PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES, - PHYSICAL_DEVICE_FEATURES_2_KHR = PHYSICAL_DEVICE_FEATURES_2, - PHYSICAL_DEVICE_PROPERTIES_2_KHR = PHYSICAL_DEVICE_PROPERTIES_2, - FORMAT_PROPERTIES_2_KHR = FORMAT_PROPERTIES_2, - IMAGE_FORMAT_PROPERTIES_2_KHR = IMAGE_FORMAT_PROPERTIES_2, - PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2, - QUEUE_FAMILY_PROPERTIES_2_KHR = QUEUE_FAMILY_PROPERTIES_2, - PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = PHYSICAL_DEVICE_MEMORY_PROPERTIES_2, - SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = SPARSE_IMAGE_FORMAT_PROPERTIES_2, - PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2, - MEMORY_ALLOCATE_FLAGS_INFO_KHR = MEMORY_ALLOCATE_FLAGS_INFO, - DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = DEVICE_GROUP_RENDER_PASS_BEGIN_INFO, - DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO, - DEVICE_GROUP_SUBMIT_INFO_KHR = DEVICE_GROUP_SUBMIT_INFO, - DEVICE_GROUP_BIND_SPARSE_INFO_KHR = DEVICE_GROUP_BIND_SPARSE_INFO, - BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO, - BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO, - PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES, - PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = PHYSICAL_DEVICE_GROUP_PROPERTIES, - DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = DEVICE_GROUP_DEVICE_CREATE_INFO, - PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO, - EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = EXTERNAL_IMAGE_FORMAT_PROPERTIES, - PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO, - EXTERNAL_BUFFER_PROPERTIES_KHR = EXTERNAL_BUFFER_PROPERTIES, - PHYSICAL_DEVICE_ID_PROPERTIES_KHR = PHYSICAL_DEVICE_ID_PROPERTIES, - EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = EXTERNAL_MEMORY_BUFFER_CREATE_INFO, - EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = EXTERNAL_MEMORY_IMAGE_CREATE_INFO, - EXPORT_MEMORY_ALLOCATE_INFO_KHR = EXPORT_MEMORY_ALLOCATE_INFO, - PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO, - EXTERNAL_SEMAPHORE_PROPERTIES_KHR = EXTERNAL_SEMAPHORE_PROPERTIES, - EXPORT_SEMAPHORE_CREATE_INFO_KHR = EXPORT_SEMAPHORE_CREATE_INFO, - PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, - PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, - PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, - DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, - SURFACE_CAPABILITIES2_EXT = SURFACE_CAPABILITIES_2_EXT, - PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES, - FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = FRAMEBUFFER_ATTACHMENTS_CREATE_INFO, - FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = FRAMEBUFFER_ATTACHMENT_IMAGE_INFO, - RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = RENDER_PASS_ATTACHMENT_BEGIN_INFO, - ATTACHMENT_DESCRIPTION_2_KHR = ATTACHMENT_DESCRIPTION_2, - ATTACHMENT_REFERENCE_2_KHR = ATTACHMENT_REFERENCE_2, - SUBPASS_DESCRIPTION_2_KHR = SUBPASS_DESCRIPTION_2, - SUBPASS_DEPENDENCY_2_KHR = SUBPASS_DEPENDENCY_2, - RENDER_PASS_CREATE_INFO_2_KHR = RENDER_PASS_CREATE_INFO_2, - SUBPASS_BEGIN_INFO_KHR = SUBPASS_BEGIN_INFO, - SUBPASS_END_INFO_KHR = SUBPASS_END_INFO, - PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO, - EXTERNAL_FENCE_PROPERTIES_KHR = EXTERNAL_FENCE_PROPERTIES, - EXPORT_FENCE_CREATE_INFO_KHR = EXPORT_FENCE_CREATE_INFO, - PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES, - RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO, - IMAGE_VIEW_USAGE_CREATE_INFO_KHR = IMAGE_VIEW_USAGE_CREATE_INFO, - PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO, - PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, - PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR, - MEMORY_DEDICATED_REQUIREMENTS_KHR = MEMORY_DEDICATED_REQUIREMENTS, - MEMORY_DEDICATED_ALLOCATE_INFO_KHR = MEMORY_DEDICATED_ALLOCATE_INFO, - PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES, - SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = SAMPLER_REDUCTION_MODE_CREATE_INFO, - PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES, - PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES, - WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK, - DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO, - BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = BUFFER_MEMORY_REQUIREMENTS_INFO_2, - IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = IMAGE_MEMORY_REQUIREMENTS_INFO_2, - IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2, - MEMORY_REQUIREMENTS_2_KHR = MEMORY_REQUIREMENTS_2, - SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = SPARSE_IMAGE_MEMORY_REQUIREMENTS_2, - IMAGE_FORMAT_LIST_CREATE_INFO_KHR = IMAGE_FORMAT_LIST_CREATE_INFO, - SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = SAMPLER_YCBCR_CONVERSION_CREATE_INFO, - SAMPLER_YCBCR_CONVERSION_INFO_KHR = SAMPLER_YCBCR_CONVERSION_INFO, - BIND_IMAGE_PLANE_MEMORY_INFO_KHR = BIND_IMAGE_PLANE_MEMORY_INFO, - IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO, - PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, - SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES, - BIND_BUFFER_MEMORY_INFO_KHR = BIND_BUFFER_MEMORY_INFO, - BIND_IMAGE_MEMORY_INFO_KHR = BIND_IMAGE_MEMORY_INFO, - DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO, - PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES, - PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES, - DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO, - DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT, - PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES, - DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = DESCRIPTOR_SET_LAYOUT_SUPPORT, - DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR, - PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES, - PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES, - PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES, - PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = PIPELINE_CREATION_FEEDBACK_CREATE_INFO, - PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = PHYSICAL_DEVICE_DRIVER_PROPERTIES, - PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES, - PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES, - SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE, - PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES, - PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES, - SEMAPHORE_TYPE_CREATE_INFO_KHR = SEMAPHORE_TYPE_CREATE_INFO, - TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = TIMELINE_SEMAPHORE_SUBMIT_INFO, - SEMAPHORE_WAIT_INFO_KHR = SEMAPHORE_WAIT_INFO, - SEMAPHORE_SIGNAL_INFO_KHR = SEMAPHORE_SIGNAL_INFO, - QUERY_POOL_CREATE_INFO_INTEL = QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL, - PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES, - PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR = PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES, - PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES, - PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES, - PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO, - PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES, - PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES, - ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = ATTACHMENT_REFERENCE_STENCIL_LAYOUT, - ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT, - PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT, - BUFFER_DEVICE_ADDRESS_INFO_EXT = BUFFER_DEVICE_ADDRESS_INFO, - PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = PHYSICAL_DEVICE_TOOL_PROPERTIES, - IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = IMAGE_STENCIL_USAGE_CREATE_INFO, - PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES, - PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES, - BUFFER_DEVICE_ADDRESS_INFO_KHR = BUFFER_DEVICE_ADDRESS_INFO, - BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO, - MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO, - DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO, - PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES, - PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES, - PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES, - PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES, - PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES, - PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES, - DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = DEVICE_PRIVATE_DATA_CREATE_INFO, - PRIVATE_DATA_SLOT_CREATE_INFO_EXT = PRIVATE_DATA_SLOT_CREATE_INFO, - PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES, - MEMORY_BARRIER_2_KHR = MEMORY_BARRIER_2, - BUFFER_MEMORY_BARRIER_2_KHR = BUFFER_MEMORY_BARRIER_2, - IMAGE_MEMORY_BARRIER_2_KHR = IMAGE_MEMORY_BARRIER_2, - DEPENDENCY_INFO_KHR = DEPENDENCY_INFO, - SUBMIT_INFO_2_KHR = SUBMIT_INFO_2, - SEMAPHORE_SUBMIT_INFO_KHR = SEMAPHORE_SUBMIT_INFO, - COMMAND_BUFFER_SUBMIT_INFO_KHR = COMMAND_BUFFER_SUBMIT_INFO, - PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR = PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES, - PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR = PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES, - PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES, - COPY_BUFFER_INFO_2_KHR = COPY_BUFFER_INFO_2, - COPY_IMAGE_INFO_2_KHR = COPY_IMAGE_INFO_2, - COPY_BUFFER_TO_IMAGE_INFO_2_KHR = COPY_BUFFER_TO_IMAGE_INFO_2, - COPY_IMAGE_TO_BUFFER_INFO_2_KHR = COPY_IMAGE_TO_BUFFER_INFO_2, - BLIT_IMAGE_INFO_2_KHR = BLIT_IMAGE_INFO_2, - RESOLVE_IMAGE_INFO_2_KHR = RESOLVE_IMAGE_INFO_2, - BUFFER_COPY_2_KHR = BUFFER_COPY_2, - IMAGE_COPY_2_KHR = IMAGE_COPY_2, - IMAGE_BLIT_2_KHR = IMAGE_BLIT_2, - BUFFER_IMAGE_COPY_2_KHR = BUFFER_IMAGE_COPY_2, - IMAGE_RESOLVE_2_KHR = IMAGE_RESOLVE_2, - FORMAT_PROPERTIES_3_KHR = FORMAT_PROPERTIES_3, - PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR, - QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR, - PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR = PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES, - PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES, - DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = DEVICE_BUFFER_MEMORY_REQUIREMENTS, - DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = DEVICE_IMAGE_MEMORY_REQUIREMENTS, -} - -SubgroupFeatureFlags :: distinct bit_set[SubgroupFeatureFlag; Flags] -SubgroupFeatureFlag :: enum Flags { - BASIC = 0, - VOTE = 1, - ARITHMETIC = 2, - BALLOT = 3, - SHUFFLE = 4, - SHUFFLE_RELATIVE = 5, - CLUSTERED = 6, - QUAD = 7, - PARTITIONED_NV = 8, -} - -SubmitFlags :: distinct bit_set[SubmitFlag; Flags] -SubmitFlag :: enum Flags { - PROTECTED = 0, - PROTECTED_KHR = PROTECTED, -} - -SubpassContents :: enum c.int { - INLINE = 0, - SECONDARY_COMMAND_BUFFERS = 1, -} - -SubpassDescriptionFlags :: distinct bit_set[SubpassDescriptionFlag; Flags] -SubpassDescriptionFlag :: enum Flags { - PER_VIEW_ATTRIBUTES_NVX = 0, - PER_VIEW_POSITION_X_ONLY_NVX = 1, - FRAGMENT_REGION_QCOM = 2, - SHADER_RESOLVE_QCOM = 3, - RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_ARM = 4, - RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_ARM = 5, - RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_ARM = 6, -} - -SurfaceCounterFlagsEXT :: distinct bit_set[SurfaceCounterFlagEXT; Flags] -SurfaceCounterFlagEXT :: enum Flags { - VBLANK = 0, -} - -SurfaceTransformFlagsKHR :: distinct bit_set[SurfaceTransformFlagKHR; Flags] -SurfaceTransformFlagKHR :: enum Flags { - IDENTITY = 0, - ROTATE_90 = 1, - ROTATE_180 = 2, - ROTATE_270 = 3, - HORIZONTAL_MIRROR = 4, - HORIZONTAL_MIRROR_ROTATE_90 = 5, - HORIZONTAL_MIRROR_ROTATE_180 = 6, - HORIZONTAL_MIRROR_ROTATE_270 = 7, - INHERIT = 8, -} - -SwapchainCreateFlagsKHR :: distinct bit_set[SwapchainCreateFlagKHR; Flags] -SwapchainCreateFlagKHR :: enum Flags { - SPLIT_INSTANCE_BIND_REGIONS = 0, - PROTECTED = 1, - MUTABLE_FORMAT = 2, -} - -SystemAllocationScope :: enum c.int { - COMMAND = 0, - OBJECT = 1, - CACHE = 2, - DEVICE = 3, - INSTANCE = 4, -} - -TessellationDomainOrigin :: enum c.int { - UPPER_LEFT = 0, - LOWER_LEFT = 1, - UPPER_LEFT_KHR = UPPER_LEFT, - LOWER_LEFT_KHR = LOWER_LEFT, -} - -TimeDomainEXT :: enum c.int { - DEVICE = 0, - CLOCK_MONOTONIC = 1, - CLOCK_MONOTONIC_RAW = 2, - QUERY_PERFORMANCE_COUNTER = 3, -} - -ToolPurposeFlags :: distinct bit_set[ToolPurposeFlag; Flags] -ToolPurposeFlag :: enum Flags { - VALIDATION = 0, - PROFILING = 1, - TRACING = 2, - ADDITIONAL_FEATURES = 3, - MODIFYING_FEATURES = 4, - DEBUG_REPORTING_EXT = 5, - DEBUG_MARKERS_EXT = 6, - VALIDATION_EXT = VALIDATION, - PROFILING_EXT = PROFILING, - TRACING_EXT = TRACING, - ADDITIONAL_FEATURES_EXT = ADDITIONAL_FEATURES, - MODIFYING_FEATURES_EXT = MODIFYING_FEATURES, -} - -ValidationCacheHeaderVersionEXT :: enum c.int { - ONE = 1, -} - -ValidationCheckEXT :: enum c.int { - ALL = 0, - SHADERS = 1, -} - -ValidationFeatureDisableEXT :: enum c.int { - ALL = 0, - SHADERS = 1, - THREAD_SAFETY = 2, - API_PARAMETERS = 3, - OBJECT_LIFETIMES = 4, - CORE_CHECKS = 5, - UNIQUE_HANDLES = 6, - SHADER_VALIDATION_CACHE = 7, -} - -ValidationFeatureEnableEXT :: enum c.int { - GPU_ASSISTED = 0, - GPU_ASSISTED_RESERVE_BINDING_SLOT = 1, - BEST_PRACTICES = 2, - DEBUG_PRINTF = 3, - SYNCHRONIZATION_VALIDATION = 4, -} - -VendorId :: enum c.int { - VIV = 0x10001, - VSI = 0x10002, - KAZAN = 0x10003, - CODEPLAY = 0x10004, - MESA = 0x10005, - POCL = 0x10006, -} - -VertexInputRate :: enum c.int { - VERTEX = 0, - INSTANCE = 1, -} - -ViewportCoordinateSwizzleNV :: enum c.int { - POSITIVE_X = 0, - NEGATIVE_X = 1, - POSITIVE_Y = 2, - NEGATIVE_Y = 3, - POSITIVE_Z = 4, - NEGATIVE_Z = 5, - POSITIVE_W = 6, - NEGATIVE_W = 7, -} - -AccelerationStructureMotionInfoFlagsNV :: distinct bit_set[AccelerationStructureMotionInfoFlagNV; Flags] -AccelerationStructureMotionInfoFlagNV :: enum u32 {} -AccelerationStructureMotionInstanceFlagsNV :: distinct bit_set[AccelerationStructureMotionInstanceFlagNV; Flags] -AccelerationStructureMotionInstanceFlagNV :: enum u32 {} -BufferViewCreateFlags :: distinct bit_set[BufferViewCreateFlag; Flags] -BufferViewCreateFlag :: enum u32 {} -CommandPoolTrimFlags :: distinct bit_set[CommandPoolTrimFlag; Flags] -CommandPoolTrimFlag :: enum u32 {} -DebugUtilsMessengerCallbackDataFlagsEXT :: distinct bit_set[DebugUtilsMessengerCallbackDataFlagEXT; Flags] -DebugUtilsMessengerCallbackDataFlagEXT :: enum u32 {} -DebugUtilsMessengerCreateFlagsEXT :: distinct bit_set[DebugUtilsMessengerCreateFlagEXT; Flags] -DebugUtilsMessengerCreateFlagEXT :: enum u32 {} -DescriptorPoolResetFlags :: distinct bit_set[DescriptorPoolResetFlag; Flags] -DescriptorPoolResetFlag :: enum u32 {} -DescriptorUpdateTemplateCreateFlags :: distinct bit_set[DescriptorUpdateTemplateCreateFlag; Flags] -DescriptorUpdateTemplateCreateFlag :: enum u32 {} -DeviceCreateFlags :: distinct bit_set[DeviceCreateFlag; Flags] -DeviceCreateFlag :: enum u32 {} -DeviceMemoryReportFlagsEXT :: distinct bit_set[DeviceMemoryReportFlagEXT; Flags] -DeviceMemoryReportFlagEXT :: enum u32 {} -DisplayModeCreateFlagsKHR :: distinct bit_set[DisplayModeCreateFlagKHR; Flags] -DisplayModeCreateFlagKHR :: enum u32 {} -DisplaySurfaceCreateFlagsKHR :: distinct bit_set[DisplaySurfaceCreateFlagKHR; Flags] -DisplaySurfaceCreateFlagKHR :: enum u32 {} -HeadlessSurfaceCreateFlagsEXT :: distinct bit_set[HeadlessSurfaceCreateFlagEXT; Flags] -HeadlessSurfaceCreateFlagEXT :: enum u32 {} -IOSSurfaceCreateFlagsMVK :: distinct bit_set[IOSSurfaceCreateFlagMVK; Flags] -IOSSurfaceCreateFlagMVK :: enum u32 {} -MacOSSurfaceCreateFlagsMVK :: distinct bit_set[MacOSSurfaceCreateFlagMVK; Flags] -MacOSSurfaceCreateFlagMVK :: enum u32 {} -MemoryMapFlags :: distinct bit_set[MemoryMapFlag; Flags] -MemoryMapFlag :: enum u32 {} -MetalSurfaceCreateFlagsEXT :: distinct bit_set[MetalSurfaceCreateFlagEXT; Flags] -MetalSurfaceCreateFlagEXT :: enum u32 {} -PipelineCoverageModulationStateCreateFlagsNV :: distinct bit_set[PipelineCoverageModulationStateCreateFlagNV; Flags] -PipelineCoverageModulationStateCreateFlagNV :: enum u32 {} -PipelineCoverageReductionStateCreateFlagsNV :: distinct bit_set[PipelineCoverageReductionStateCreateFlagNV; Flags] -PipelineCoverageReductionStateCreateFlagNV :: enum u32 {} -PipelineCoverageToColorStateCreateFlagsNV :: distinct bit_set[PipelineCoverageToColorStateCreateFlagNV; Flags] -PipelineCoverageToColorStateCreateFlagNV :: enum u32 {} -PipelineDiscardRectangleStateCreateFlagsEXT :: distinct bit_set[PipelineDiscardRectangleStateCreateFlagEXT; Flags] -PipelineDiscardRectangleStateCreateFlagEXT :: enum u32 {} -PipelineDynamicStateCreateFlags :: distinct bit_set[PipelineDynamicStateCreateFlag; Flags] -PipelineDynamicStateCreateFlag :: enum u32 {} -PipelineInputAssemblyStateCreateFlags :: distinct bit_set[PipelineInputAssemblyStateCreateFlag; Flags] -PipelineInputAssemblyStateCreateFlag :: enum u32 {} -PipelineMultisampleStateCreateFlags :: distinct bit_set[PipelineMultisampleStateCreateFlag; Flags] -PipelineMultisampleStateCreateFlag :: enum u32 {} -PipelineRasterizationConservativeStateCreateFlagsEXT :: distinct bit_set[PipelineRasterizationConservativeStateCreateFlagEXT; Flags] -PipelineRasterizationConservativeStateCreateFlagEXT :: enum u32 {} -PipelineRasterizationDepthClipStateCreateFlagsEXT :: distinct bit_set[PipelineRasterizationDepthClipStateCreateFlagEXT; Flags] -PipelineRasterizationDepthClipStateCreateFlagEXT :: enum u32 {} -PipelineRasterizationStateCreateFlags :: distinct bit_set[PipelineRasterizationStateCreateFlag; Flags] -PipelineRasterizationStateCreateFlag :: enum u32 {} -PipelineRasterizationStateStreamCreateFlagsEXT :: distinct bit_set[PipelineRasterizationStateStreamCreateFlagEXT; Flags] -PipelineRasterizationStateStreamCreateFlagEXT :: enum u32 {} -PipelineTessellationStateCreateFlags :: distinct bit_set[PipelineTessellationStateCreateFlag; Flags] -PipelineTessellationStateCreateFlag :: enum u32 {} -PipelineVertexInputStateCreateFlags :: distinct bit_set[PipelineVertexInputStateCreateFlag; Flags] -PipelineVertexInputStateCreateFlag :: enum u32 {} -PipelineViewportStateCreateFlags :: distinct bit_set[PipelineViewportStateCreateFlag; Flags] -PipelineViewportStateCreateFlag :: enum u32 {} -PipelineViewportSwizzleStateCreateFlagsNV :: distinct bit_set[PipelineViewportSwizzleStateCreateFlagNV; Flags] -PipelineViewportSwizzleStateCreateFlagNV :: enum u32 {} -PrivateDataSlotCreateFlags :: distinct bit_set[PrivateDataSlotCreateFlag; Flags] -PrivateDataSlotCreateFlag :: enum u32 {} -QueryPoolCreateFlags :: distinct bit_set[QueryPoolCreateFlag; Flags] -QueryPoolCreateFlag :: enum u32 {} -SemaphoreCreateFlags :: distinct bit_set[SemaphoreCreateFlag; Flags] -SemaphoreCreateFlag :: enum u32 {} -ShaderModuleCreateFlags :: distinct bit_set[ShaderModuleCreateFlag; Flags] -ShaderModuleCreateFlag :: enum u32 {} -ValidationCacheCreateFlagsEXT :: distinct bit_set[ValidationCacheCreateFlagEXT; Flags] -ValidationCacheCreateFlagEXT :: enum u32 {} -Win32SurfaceCreateFlagsKHR :: distinct bit_set[Win32SurfaceCreateFlagKHR; Flags] -Win32SurfaceCreateFlagKHR :: enum u32 {} - - +// +// Vulkan wrapper generated from "https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/master/include/vulkan/vulkan_core.h" +// +package vulkan + +import "core:c" + +// Enums +AccelerationStructureBuildTypeKHR :: enum c.int { + HOST = 0, + DEVICE = 1, + HOST_OR_DEVICE = 2, +} + +AccelerationStructureCompatibilityKHR :: enum c.int { + COMPATIBLE = 0, + INCOMPATIBLE = 1, +} + +AccelerationStructureCreateFlagsKHR :: distinct bit_set[AccelerationStructureCreateFlagKHR; Flags] +AccelerationStructureCreateFlagKHR :: enum Flags { + DEVICE_ADDRESS_CAPTURE_REPLAY = 0, + MOTION_NV = 2, +} + +AccelerationStructureMemoryRequirementsTypeNV :: enum c.int { + OBJECT = 0, + BUILD_SCRATCH = 1, + UPDATE_SCRATCH = 2, +} + +AccelerationStructureMotionInstanceTypeNV :: enum c.int { + STATIC = 0, + MATRIX_MOTION = 1, + SRT_MOTION = 2, +} + +AccelerationStructureTypeKHR :: enum c.int { + TOP_LEVEL = 0, + BOTTOM_LEVEL = 1, + GENERIC = 2, + TOP_LEVEL_NV = TOP_LEVEL, + BOTTOM_LEVEL_NV = BOTTOM_LEVEL, +} + +AccessFlags :: distinct bit_set[AccessFlag; Flags] +AccessFlag :: enum Flags { + INDIRECT_COMMAND_READ = 0, + INDEX_READ = 1, + VERTEX_ATTRIBUTE_READ = 2, + UNIFORM_READ = 3, + INPUT_ATTACHMENT_READ = 4, + SHADER_READ = 5, + SHADER_WRITE = 6, + COLOR_ATTACHMENT_READ = 7, + COLOR_ATTACHMENT_WRITE = 8, + DEPTH_STENCIL_ATTACHMENT_READ = 9, + DEPTH_STENCIL_ATTACHMENT_WRITE = 10, + TRANSFER_READ = 11, + TRANSFER_WRITE = 12, + HOST_READ = 13, + HOST_WRITE = 14, + MEMORY_READ = 15, + MEMORY_WRITE = 16, + TRANSFORM_FEEDBACK_WRITE_EXT = 25, + TRANSFORM_FEEDBACK_COUNTER_READ_EXT = 26, + TRANSFORM_FEEDBACK_COUNTER_WRITE_EXT = 27, + CONDITIONAL_RENDERING_READ_EXT = 20, + COLOR_ATTACHMENT_READ_NONCOHERENT_EXT = 19, + ACCELERATION_STRUCTURE_READ_KHR = 21, + ACCELERATION_STRUCTURE_WRITE_KHR = 22, + FRAGMENT_DENSITY_MAP_READ_EXT = 24, + FRAGMENT_SHADING_RATE_ATTACHMENT_READ_KHR = 23, + COMMAND_PREPROCESS_READ_NV = 17, + COMMAND_PREPROCESS_WRITE_NV = 18, + SHADING_RATE_IMAGE_READ_NV = FRAGMENT_SHADING_RATE_ATTACHMENT_READ_KHR, + ACCELERATION_STRUCTURE_READ_NV = ACCELERATION_STRUCTURE_READ_KHR, + ACCELERATION_STRUCTURE_WRITE_NV = ACCELERATION_STRUCTURE_WRITE_KHR, +} + +AccessFlags_NONE :: AccessFlags{} + + +AcquireProfilingLockFlagsKHR :: distinct bit_set[AcquireProfilingLockFlagKHR; Flags] +AcquireProfilingLockFlagKHR :: enum Flags { +} + +AttachmentDescriptionFlags :: distinct bit_set[AttachmentDescriptionFlag; Flags] +AttachmentDescriptionFlag :: enum Flags { + MAY_ALIAS = 0, +} + +AttachmentLoadOp :: enum c.int { + LOAD = 0, + CLEAR = 1, + DONT_CARE = 2, + NONE_EXT = 1000400000, +} + +AttachmentStoreOp :: enum c.int { + STORE = 0, + DONT_CARE = 1, + NONE = 1000301000, +} + +BlendFactor :: enum c.int { + ZERO = 0, + ONE = 1, + SRC_COLOR = 2, + ONE_MINUS_SRC_COLOR = 3, + DST_COLOR = 4, + ONE_MINUS_DST_COLOR = 5, + SRC_ALPHA = 6, + ONE_MINUS_SRC_ALPHA = 7, + DST_ALPHA = 8, + ONE_MINUS_DST_ALPHA = 9, + CONSTANT_COLOR = 10, + ONE_MINUS_CONSTANT_COLOR = 11, + CONSTANT_ALPHA = 12, + ONE_MINUS_CONSTANT_ALPHA = 13, + SRC_ALPHA_SATURATE = 14, + SRC1_COLOR = 15, + ONE_MINUS_SRC1_COLOR = 16, + SRC1_ALPHA = 17, + ONE_MINUS_SRC1_ALPHA = 18, +} + +BlendOp :: enum c.int { + ADD = 0, + SUBTRACT = 1, + REVERSE_SUBTRACT = 2, + MIN = 3, + MAX = 4, + ZERO_EXT = 1000148000, + SRC_EXT = 1000148001, + DST_EXT = 1000148002, + SRC_OVER_EXT = 1000148003, + DST_OVER_EXT = 1000148004, + SRC_IN_EXT = 1000148005, + DST_IN_EXT = 1000148006, + SRC_OUT_EXT = 1000148007, + DST_OUT_EXT = 1000148008, + SRC_ATOP_EXT = 1000148009, + DST_ATOP_EXT = 1000148010, + XOR_EXT = 1000148011, + MULTIPLY_EXT = 1000148012, + SCREEN_EXT = 1000148013, + OVERLAY_EXT = 1000148014, + DARKEN_EXT = 1000148015, + LIGHTEN_EXT = 1000148016, + COLORDODGE_EXT = 1000148017, + COLORBURN_EXT = 1000148018, + HARDLIGHT_EXT = 1000148019, + SOFTLIGHT_EXT = 1000148020, + DIFFERENCE_EXT = 1000148021, + EXCLUSION_EXT = 1000148022, + INVERT_EXT = 1000148023, + INVERT_RGB_EXT = 1000148024, + LINEARDODGE_EXT = 1000148025, + LINEARBURN_EXT = 1000148026, + VIVIDLIGHT_EXT = 1000148027, + LINEARLIGHT_EXT = 1000148028, + PINLIGHT_EXT = 1000148029, + HARDMIX_EXT = 1000148030, + HSL_HUE_EXT = 1000148031, + HSL_SATURATION_EXT = 1000148032, + HSL_COLOR_EXT = 1000148033, + HSL_LUMINOSITY_EXT = 1000148034, + PLUS_EXT = 1000148035, + PLUS_CLAMPED_EXT = 1000148036, + PLUS_CLAMPED_ALPHA_EXT = 1000148037, + PLUS_DARKER_EXT = 1000148038, + MINUS_EXT = 1000148039, + MINUS_CLAMPED_EXT = 1000148040, + CONTRAST_EXT = 1000148041, + INVERT_OVG_EXT = 1000148042, + RED_EXT = 1000148043, + GREEN_EXT = 1000148044, + BLUE_EXT = 1000148045, +} + +BlendOverlapEXT :: enum c.int { + UNCORRELATED = 0, + DISJOINT = 1, + CONJOINT = 2, +} + +BorderColor :: enum c.int { + FLOAT_TRANSPARENT_BLACK = 0, + INT_TRANSPARENT_BLACK = 1, + FLOAT_OPAQUE_BLACK = 2, + INT_OPAQUE_BLACK = 3, + FLOAT_OPAQUE_WHITE = 4, + INT_OPAQUE_WHITE = 5, + FLOAT_CUSTOM_EXT = 1000287003, + INT_CUSTOM_EXT = 1000287004, +} + +BufferCreateFlags :: distinct bit_set[BufferCreateFlag; Flags] +BufferCreateFlag :: enum Flags { + SPARSE_BINDING = 0, + SPARSE_RESIDENCY = 1, + SPARSE_ALIASED = 2, + PROTECTED = 3, + DEVICE_ADDRESS_CAPTURE_REPLAY = 4, + DEVICE_ADDRESS_CAPTURE_REPLAY_EXT = DEVICE_ADDRESS_CAPTURE_REPLAY, + DEVICE_ADDRESS_CAPTURE_REPLAY_KHR = DEVICE_ADDRESS_CAPTURE_REPLAY, +} + +BufferUsageFlags :: distinct bit_set[BufferUsageFlag; Flags] +BufferUsageFlag :: enum Flags { + TRANSFER_SRC = 0, + TRANSFER_DST = 1, + UNIFORM_TEXEL_BUFFER = 2, + STORAGE_TEXEL_BUFFER = 3, + UNIFORM_BUFFER = 4, + STORAGE_BUFFER = 5, + INDEX_BUFFER = 6, + VERTEX_BUFFER = 7, + INDIRECT_BUFFER = 8, + SHADER_DEVICE_ADDRESS = 17, + VIDEO_DECODE_SRC_KHR = 13, + VIDEO_DECODE_DST_KHR = 14, + TRANSFORM_FEEDBACK_BUFFER_EXT = 11, + TRANSFORM_FEEDBACK_COUNTER_BUFFER_EXT = 12, + CONDITIONAL_RENDERING_EXT = 9, + ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_KHR = 19, + ACCELERATION_STRUCTURE_STORAGE_KHR = 20, + SHADER_BINDING_TABLE_KHR = 10, + VIDEO_ENCODE_DST_KHR = 15, + VIDEO_ENCODE_SRC_KHR = 16, + RAY_TRACING_NV = SHADER_BINDING_TABLE_KHR, + SHADER_DEVICE_ADDRESS_EXT = SHADER_DEVICE_ADDRESS, + SHADER_DEVICE_ADDRESS_KHR = SHADER_DEVICE_ADDRESS, +} + +BuildAccelerationStructureFlagsKHR :: distinct bit_set[BuildAccelerationStructureFlagKHR; Flags] +BuildAccelerationStructureFlagKHR :: enum Flags { + ALLOW_UPDATE = 0, + ALLOW_COMPACTION = 1, + PREFER_FAST_TRACE = 2, + PREFER_FAST_BUILD = 3, + LOW_MEMORY = 4, + MOTION_NV = 5, + ALLOW_UPDATE_NV = ALLOW_UPDATE, + ALLOW_COMPACTION_NV = ALLOW_COMPACTION, + PREFER_FAST_TRACE_NV = PREFER_FAST_TRACE, + PREFER_FAST_BUILD_NV = PREFER_FAST_BUILD, + LOW_MEMORY_NV = LOW_MEMORY, +} + +BuildAccelerationStructureModeKHR :: enum c.int { + BUILD = 0, + UPDATE = 1, +} + +ChromaLocation :: enum c.int { + COSITED_EVEN = 0, + MIDPOINT = 1, + COSITED_EVEN_KHR = COSITED_EVEN, + MIDPOINT_KHR = MIDPOINT, +} + +CoarseSampleOrderTypeNV :: enum c.int { + DEFAULT = 0, + CUSTOM = 1, + PIXEL_MAJOR = 2, + SAMPLE_MAJOR = 3, +} + +ColorComponentFlags :: distinct bit_set[ColorComponentFlag; Flags] +ColorComponentFlag :: enum Flags { + R = 0, + G = 1, + B = 2, + A = 3, +} + +ColorSpaceKHR :: enum c.int { + SRGB_NONLINEAR = 0, + DISPLAY_P3_NONLINEAR_EXT = 1000104001, + EXTENDED_SRGB_LINEAR_EXT = 1000104002, + DISPLAY_P3_LINEAR_EXT = 1000104003, + DCI_P3_NONLINEAR_EXT = 1000104004, + BT709_LINEAR_EXT = 1000104005, + BT709_NONLINEAR_EXT = 1000104006, + BT2020_LINEAR_EXT = 1000104007, + HDR10_ST2084_EXT = 1000104008, + DOLBYVISION_EXT = 1000104009, + HDR10_HLG_EXT = 1000104010, + ADOBERGB_LINEAR_EXT = 1000104011, + ADOBERGB_NONLINEAR_EXT = 1000104012, + PASS_THROUGH_EXT = 1000104013, + EXTENDED_SRGB_NONLINEAR_EXT = 1000104014, + DISPLAY_NATIVE_AMD = 1000213000, + COLORSPACE_SRGB_NONLINEAR = SRGB_NONLINEAR, + DCI_P3_LINEAR_EXT = DISPLAY_P3_LINEAR_EXT, +} + +CommandBufferLevel :: enum c.int { + PRIMARY = 0, + SECONDARY = 1, +} + +CommandBufferResetFlags :: distinct bit_set[CommandBufferResetFlag; Flags] +CommandBufferResetFlag :: enum Flags { + RELEASE_RESOURCES = 0, +} + +CommandBufferUsageFlags :: distinct bit_set[CommandBufferUsageFlag; Flags] +CommandBufferUsageFlag :: enum Flags { + ONE_TIME_SUBMIT = 0, + RENDER_PASS_CONTINUE = 1, + SIMULTANEOUS_USE = 2, +} + +CommandPoolCreateFlags :: distinct bit_set[CommandPoolCreateFlag; Flags] +CommandPoolCreateFlag :: enum Flags { + TRANSIENT = 0, + RESET_COMMAND_BUFFER = 1, + PROTECTED = 2, +} + +CommandPoolResetFlags :: distinct bit_set[CommandPoolResetFlag; Flags] +CommandPoolResetFlag :: enum Flags { + RELEASE_RESOURCES = 0, +} + +CompareOp :: enum c.int { + NEVER = 0, + LESS = 1, + EQUAL = 2, + LESS_OR_EQUAL = 3, + GREATER = 4, + NOT_EQUAL = 5, + GREATER_OR_EQUAL = 6, + ALWAYS = 7, +} + +ComponentSwizzle :: enum c.int { + IDENTITY = 0, + ZERO = 1, + ONE = 2, + R = 3, + G = 4, + B = 5, + A = 6, +} + +ComponentTypeNV :: enum c.int { + FLOAT16 = 0, + FLOAT32 = 1, + FLOAT64 = 2, + SINT8 = 3, + SINT16 = 4, + SINT32 = 5, + SINT64 = 6, + UINT8 = 7, + UINT16 = 8, + UINT32 = 9, + UINT64 = 10, +} + +CompositeAlphaFlagsKHR :: distinct bit_set[CompositeAlphaFlagKHR; Flags] +CompositeAlphaFlagKHR :: enum Flags { + OPAQUE = 0, + PRE_MULTIPLIED = 1, + POST_MULTIPLIED = 2, + INHERIT = 3, +} + +ConditionalRenderingFlagsEXT :: distinct bit_set[ConditionalRenderingFlagEXT; Flags] +ConditionalRenderingFlagEXT :: enum Flags { + INVERTED = 0, +} + +ConservativeRasterizationModeEXT :: enum c.int { + DISABLED = 0, + OVERESTIMATE = 1, + UNDERESTIMATE = 2, +} + +CopyAccelerationStructureModeKHR :: enum c.int { + CLONE = 0, + COMPACT = 1, + SERIALIZE = 2, + DESERIALIZE = 3, + CLONE_NV = CLONE, + COMPACT_NV = COMPACT, +} + +CoverageModulationModeNV :: enum c.int { + NONE = 0, + RGB = 1, + ALPHA = 2, + RGBA = 3, +} + +CoverageReductionModeNV :: enum c.int { + MERGE = 0, + TRUNCATE = 1, +} + +CullModeFlags :: distinct bit_set[CullModeFlag; Flags] +CullModeFlag :: enum Flags { + FRONT = 0, + BACK = 1, +} + +CullModeFlags_NONE :: CullModeFlags{} +CullModeFlags_FRONT_AND_BACK :: CullModeFlags{.FRONT, .BACK} + + +DebugReportFlagsEXT :: distinct bit_set[DebugReportFlagEXT; Flags] +DebugReportFlagEXT :: enum Flags { + INFORMATION = 0, + WARNING = 1, + PERFORMANCE_WARNING = 2, + ERROR = 3, + DEBUG = 4, +} + +DebugReportObjectTypeEXT :: enum c.int { + UNKNOWN = 0, + INSTANCE = 1, + PHYSICAL_DEVICE = 2, + DEVICE = 3, + QUEUE = 4, + SEMAPHORE = 5, + COMMAND_BUFFER = 6, + FENCE = 7, + DEVICE_MEMORY = 8, + BUFFER = 9, + IMAGE = 10, + EVENT = 11, + QUERY_POOL = 12, + BUFFER_VIEW = 13, + IMAGE_VIEW = 14, + SHADER_MODULE = 15, + PIPELINE_CACHE = 16, + PIPELINE_LAYOUT = 17, + RENDER_PASS = 18, + PIPELINE = 19, + DESCRIPTOR_SET_LAYOUT = 20, + SAMPLER = 21, + DESCRIPTOR_POOL = 22, + DESCRIPTOR_SET = 23, + FRAMEBUFFER = 24, + COMMAND_POOL = 25, + SURFACE_KHR = 26, + SWAPCHAIN_KHR = 27, + DEBUG_REPORT_CALLBACK_EXT = 28, + DISPLAY_KHR = 29, + DISPLAY_MODE_KHR = 30, + VALIDATION_CACHE_EXT = 33, + SAMPLER_YCBCR_CONVERSION = 1000156000, + DESCRIPTOR_UPDATE_TEMPLATE = 1000085000, + CU_MODULE_NVX = 1000029000, + CU_FUNCTION_NVX = 1000029001, + ACCELERATION_STRUCTURE_KHR = 1000150000, + ACCELERATION_STRUCTURE_NV = 1000165000, + BUFFER_COLLECTION_FUCHSIA = 1000366000, + DEBUG_REPORT = DEBUG_REPORT_CALLBACK_EXT, + VALIDATION_CACHE = VALIDATION_CACHE_EXT, + DESCRIPTOR_UPDATE_TEMPLATE_KHR = DESCRIPTOR_UPDATE_TEMPLATE, + SAMPLER_YCBCR_CONVERSION_KHR = SAMPLER_YCBCR_CONVERSION, +} + +DebugUtilsMessageSeverityFlagsEXT :: distinct bit_set[DebugUtilsMessageSeverityFlagEXT; Flags] +DebugUtilsMessageSeverityFlagEXT :: enum Flags { + VERBOSE = 0, + INFO = 4, + WARNING = 8, + ERROR = 12, +} + +DebugUtilsMessageTypeFlagsEXT :: distinct bit_set[DebugUtilsMessageTypeFlagEXT; Flags] +DebugUtilsMessageTypeFlagEXT :: enum Flags { + GENERAL = 0, + VALIDATION = 1, + PERFORMANCE = 2, +} + +DependencyFlags :: distinct bit_set[DependencyFlag; Flags] +DependencyFlag :: enum Flags { + BY_REGION = 0, + DEVICE_GROUP = 2, + VIEW_LOCAL = 1, + VIEW_LOCAL_KHR = VIEW_LOCAL, + DEVICE_GROUP_KHR = DEVICE_GROUP, +} + +DescriptorBindingFlags :: distinct bit_set[DescriptorBindingFlag; Flags] +DescriptorBindingFlag :: enum Flags { + UPDATE_AFTER_BIND = 0, + UPDATE_UNUSED_WHILE_PENDING = 1, + PARTIALLY_BOUND = 2, + VARIABLE_DESCRIPTOR_COUNT = 3, + UPDATE_AFTER_BIND_EXT = UPDATE_AFTER_BIND, + UPDATE_UNUSED_WHILE_PENDING_EXT = UPDATE_UNUSED_WHILE_PENDING, + PARTIALLY_BOUND_EXT = PARTIALLY_BOUND, + VARIABLE_DESCRIPTOR_COUNT_EXT = VARIABLE_DESCRIPTOR_COUNT, +} + +DescriptorPoolCreateFlags :: distinct bit_set[DescriptorPoolCreateFlag; Flags] +DescriptorPoolCreateFlag :: enum Flags { + FREE_DESCRIPTOR_SET = 0, + UPDATE_AFTER_BIND = 1, + HOST_ONLY_VALVE = 2, + UPDATE_AFTER_BIND_EXT = UPDATE_AFTER_BIND, +} + +DescriptorSetLayoutCreateFlags :: distinct bit_set[DescriptorSetLayoutCreateFlag; Flags] +DescriptorSetLayoutCreateFlag :: enum Flags { + UPDATE_AFTER_BIND_POOL = 1, + PUSH_DESCRIPTOR_KHR = 0, + HOST_ONLY_POOL_VALVE = 2, + UPDATE_AFTER_BIND_POOL_EXT = UPDATE_AFTER_BIND_POOL, +} + +DescriptorType :: enum c.int { + SAMPLER = 0, + COMBINED_IMAGE_SAMPLER = 1, + SAMPLED_IMAGE = 2, + STORAGE_IMAGE = 3, + UNIFORM_TEXEL_BUFFER = 4, + STORAGE_TEXEL_BUFFER = 5, + UNIFORM_BUFFER = 6, + STORAGE_BUFFER = 7, + UNIFORM_BUFFER_DYNAMIC = 8, + STORAGE_BUFFER_DYNAMIC = 9, + INPUT_ATTACHMENT = 10, + INLINE_UNIFORM_BLOCK = 1000138000, + ACCELERATION_STRUCTURE_KHR = 1000150000, + ACCELERATION_STRUCTURE_NV = 1000165000, + MUTABLE_VALVE = 1000351000, + INLINE_UNIFORM_BLOCK_EXT = INLINE_UNIFORM_BLOCK, +} + +DescriptorUpdateTemplateType :: enum c.int { + DESCRIPTOR_SET = 0, + PUSH_DESCRIPTORS_KHR = 1, + DESCRIPTOR_SET_KHR = DESCRIPTOR_SET, +} + +DeviceDiagnosticsConfigFlagsNV :: distinct bit_set[DeviceDiagnosticsConfigFlagNV; Flags] +DeviceDiagnosticsConfigFlagNV :: enum Flags { + ENABLE_SHADER_DEBUG_INFO = 0, + ENABLE_RESOURCE_TRACKING = 1, + ENABLE_AUTOMATIC_CHECKPOINTS = 2, +} + +DeviceEventTypeEXT :: enum c.int { + DISPLAY_HOTPLUG = 0, +} + +DeviceGroupPresentModeFlagsKHR :: distinct bit_set[DeviceGroupPresentModeFlagKHR; Flags] +DeviceGroupPresentModeFlagKHR :: enum Flags { + LOCAL = 0, + REMOTE = 1, + SUM = 2, + LOCAL_MULTI_DEVICE = 3, +} + +DeviceMemoryReportEventTypeEXT :: enum c.int { + ALLOCATE = 0, + FREE = 1, + IMPORT = 2, + UNIMPORT = 3, + ALLOCATION_FAILED = 4, +} + +DeviceQueueCreateFlags :: distinct bit_set[DeviceQueueCreateFlag; Flags] +DeviceQueueCreateFlag :: enum Flags { + PROTECTED = 0, +} + +DiscardRectangleModeEXT :: enum c.int { + INCLUSIVE = 0, + EXCLUSIVE = 1, +} + +DisplayEventTypeEXT :: enum c.int { + FIRST_PIXEL_OUT = 0, +} + +DisplayPlaneAlphaFlagsKHR :: distinct bit_set[DisplayPlaneAlphaFlagKHR; Flags] +DisplayPlaneAlphaFlagKHR :: enum Flags { + OPAQUE = 0, + GLOBAL = 1, + PER_PIXEL = 2, + PER_PIXEL_PREMULTIPLIED = 3, +} + +DisplayPowerStateEXT :: enum c.int { + OFF = 0, + SUSPEND = 1, + ON = 2, +} + +DriverId :: enum c.int { + AMD_PROPRIETARY = 1, + AMD_OPEN_SOURCE = 2, + MESA_RADV = 3, + NVIDIA_PROPRIETARY = 4, + INTEL_PROPRIETARY_WINDOWS = 5, + INTEL_OPEN_SOURCE_MESA = 6, + IMAGINATION_PROPRIETARY = 7, + QUALCOMM_PROPRIETARY = 8, + ARM_PROPRIETARY = 9, + GOOGLE_SWIFTSHADER = 10, + GGP_PROPRIETARY = 11, + BROADCOM_PROPRIETARY = 12, + MESA_LLVMPIPE = 13, + MOLTENVK = 14, + COREAVI_PROPRIETARY = 15, + JUICE_PROPRIETARY = 16, + VERISILICON_PROPRIETARY = 17, + MESA_TURNIP = 18, + MESA_V3DV = 19, + MESA_PANVK = 20, + SAMSUNG_PROPRIETARY = 21, + MESA_VENUS = 22, + AMD_PROPRIETARY_KHR = AMD_PROPRIETARY, + AMD_OPEN_SOURCE_KHR = AMD_OPEN_SOURCE, + MESA_RADV_KHR = MESA_RADV, + NVIDIA_PROPRIETARY_KHR = NVIDIA_PROPRIETARY, + INTEL_PROPRIETARY_WINDOWS_KHR = INTEL_PROPRIETARY_WINDOWS, + INTEL_OPEN_SOURCE_MESA_KHR = INTEL_OPEN_SOURCE_MESA, + IMAGINATION_PROPRIETARY_KHR = IMAGINATION_PROPRIETARY, + QUALCOMM_PROPRIETARY_KHR = QUALCOMM_PROPRIETARY, + ARM_PROPRIETARY_KHR = ARM_PROPRIETARY, + GOOGLE_SWIFTSHADER_KHR = GOOGLE_SWIFTSHADER, + GGP_PROPRIETARY_KHR = GGP_PROPRIETARY, + BROADCOM_PROPRIETARY_KHR = BROADCOM_PROPRIETARY, +} + +DynamicState :: enum c.int { + VIEWPORT = 0, + SCISSOR = 1, + LINE_WIDTH = 2, + DEPTH_BIAS = 3, + BLEND_CONSTANTS = 4, + DEPTH_BOUNDS = 5, + STENCIL_COMPARE_MASK = 6, + STENCIL_WRITE_MASK = 7, + STENCIL_REFERENCE = 8, + CULL_MODE = 1000267000, + FRONT_FACE = 1000267001, + PRIMITIVE_TOPOLOGY = 1000267002, + VIEWPORT_WITH_COUNT = 1000267003, + SCISSOR_WITH_COUNT = 1000267004, + VERTEX_INPUT_BINDING_STRIDE = 1000267005, + DEPTH_TEST_ENABLE = 1000267006, + DEPTH_WRITE_ENABLE = 1000267007, + DEPTH_COMPARE_OP = 1000267008, + DEPTH_BOUNDS_TEST_ENABLE = 1000267009, + STENCIL_TEST_ENABLE = 1000267010, + STENCIL_OP = 1000267011, + RASTERIZER_DISCARD_ENABLE = 1000377001, + DEPTH_BIAS_ENABLE = 1000377002, + PRIMITIVE_RESTART_ENABLE = 1000377004, + VIEWPORT_W_SCALING_NV = 1000087000, + DISCARD_RECTANGLE_EXT = 1000099000, + SAMPLE_LOCATIONS_EXT = 1000143000, + RAY_TRACING_PIPELINE_STACK_SIZE_KHR = 1000347000, + VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004, + VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006, + EXCLUSIVE_SCISSOR_NV = 1000205001, + FRAGMENT_SHADING_RATE_KHR = 1000226000, + LINE_STIPPLE_EXT = 1000259000, + VERTEX_INPUT_EXT = 1000352000, + PATCH_CONTROL_POINTS_EXT = 1000377000, + LOGIC_OP_EXT = 1000377003, + COLOR_WRITE_ENABLE_EXT = 1000381000, + CULL_MODE_EXT = CULL_MODE, + FRONT_FACE_EXT = FRONT_FACE, + PRIMITIVE_TOPOLOGY_EXT = PRIMITIVE_TOPOLOGY, + VIEWPORT_WITH_COUNT_EXT = VIEWPORT_WITH_COUNT, + SCISSOR_WITH_COUNT_EXT = SCISSOR_WITH_COUNT, + VERTEX_INPUT_BINDING_STRIDE_EXT = VERTEX_INPUT_BINDING_STRIDE, + DEPTH_TEST_ENABLE_EXT = DEPTH_TEST_ENABLE, + DEPTH_WRITE_ENABLE_EXT = DEPTH_WRITE_ENABLE, + DEPTH_COMPARE_OP_EXT = DEPTH_COMPARE_OP, + DEPTH_BOUNDS_TEST_ENABLE_EXT = DEPTH_BOUNDS_TEST_ENABLE, + STENCIL_TEST_ENABLE_EXT = STENCIL_TEST_ENABLE, + STENCIL_OP_EXT = STENCIL_OP, + RASTERIZER_DISCARD_ENABLE_EXT = RASTERIZER_DISCARD_ENABLE, + DEPTH_BIAS_ENABLE_EXT = DEPTH_BIAS_ENABLE, + PRIMITIVE_RESTART_ENABLE_EXT = PRIMITIVE_RESTART_ENABLE, +} + +EventCreateFlags :: distinct bit_set[EventCreateFlag; Flags] +EventCreateFlag :: enum Flags { + DEVICE_ONLY = 0, + DEVICE_ONLY_KHR = DEVICE_ONLY, +} + +ExternalFenceFeatureFlags :: distinct bit_set[ExternalFenceFeatureFlag; Flags] +ExternalFenceFeatureFlag :: enum Flags { + EXPORTABLE = 0, + IMPORTABLE = 1, + EXPORTABLE_KHR = EXPORTABLE, + IMPORTABLE_KHR = IMPORTABLE, +} + +ExternalFenceHandleTypeFlags :: distinct bit_set[ExternalFenceHandleTypeFlag; Flags] +ExternalFenceHandleTypeFlag :: enum Flags { + OPAQUE_FD = 0, + OPAQUE_WIN32 = 1, + OPAQUE_WIN32_KMT = 2, + SYNC_FD = 3, + OPAQUE_FD_KHR = OPAQUE_FD, + OPAQUE_WIN32_KHR = OPAQUE_WIN32, + OPAQUE_WIN32_KMT_KHR = OPAQUE_WIN32_KMT, + SYNC_FD_KHR = SYNC_FD, +} + +ExternalMemoryFeatureFlags :: distinct bit_set[ExternalMemoryFeatureFlag; Flags] +ExternalMemoryFeatureFlag :: enum Flags { + DEDICATED_ONLY = 0, + EXPORTABLE = 1, + IMPORTABLE = 2, + DEDICATED_ONLY_KHR = DEDICATED_ONLY, + EXPORTABLE_KHR = EXPORTABLE, + IMPORTABLE_KHR = IMPORTABLE, +} + +ExternalMemoryFeatureFlagsNV :: distinct bit_set[ExternalMemoryFeatureFlagNV; Flags] +ExternalMemoryFeatureFlagNV :: enum Flags { + DEDICATED_ONLY = 0, + EXPORTABLE = 1, + IMPORTABLE = 2, +} + +ExternalMemoryHandleTypeFlags :: distinct bit_set[ExternalMemoryHandleTypeFlag; Flags] +ExternalMemoryHandleTypeFlag :: enum Flags { + OPAQUE_FD = 0, + OPAQUE_WIN32 = 1, + OPAQUE_WIN32_KMT = 2, + D3D11_TEXTURE = 3, + D3D11_TEXTURE_KMT = 4, + D3D12_HEAP = 5, + D3D12_RESOURCE = 6, + DMA_BUF_EXT = 9, + ANDROID_HARDWARE_BUFFER_ANDROID = 10, + HOST_ALLOCATION_EXT = 7, + HOST_MAPPED_FOREIGN_MEMORY_EXT = 8, + ZIRCON_VMO_FUCHSIA = 11, + RDMA_ADDRESS_NV = 12, + OPAQUE_FD_KHR = OPAQUE_FD, + OPAQUE_WIN32_KHR = OPAQUE_WIN32, + OPAQUE_WIN32_KMT_KHR = OPAQUE_WIN32_KMT, + D3D11_TEXTURE_KHR = D3D11_TEXTURE, + D3D11_TEXTURE_KMT_KHR = D3D11_TEXTURE_KMT, + D3D12_HEAP_KHR = D3D12_HEAP, + D3D12_RESOURCE_KHR = D3D12_RESOURCE, +} + +ExternalMemoryHandleTypeFlagsNV :: distinct bit_set[ExternalMemoryHandleTypeFlagNV; Flags] +ExternalMemoryHandleTypeFlagNV :: enum Flags { + OPAQUE_WIN32 = 0, + OPAQUE_WIN32_KMT = 1, + D3D11_IMAGE = 2, + D3D11_IMAGE_KMT = 3, +} + +ExternalSemaphoreFeatureFlags :: distinct bit_set[ExternalSemaphoreFeatureFlag; Flags] +ExternalSemaphoreFeatureFlag :: enum Flags { + EXPORTABLE = 0, + IMPORTABLE = 1, + EXPORTABLE_KHR = EXPORTABLE, + IMPORTABLE_KHR = IMPORTABLE, +} + +ExternalSemaphoreHandleTypeFlags :: distinct bit_set[ExternalSemaphoreHandleTypeFlag; Flags] +ExternalSemaphoreHandleTypeFlag :: enum Flags { + OPAQUE_FD = 0, + OPAQUE_WIN32 = 1, + OPAQUE_WIN32_KMT = 2, + D3D12_FENCE = 3, + SYNC_FD = 4, + ZIRCON_EVENT_FUCHSIA = 7, + D3D11_FENCE = D3D12_FENCE, + OPAQUE_FD_KHR = OPAQUE_FD, + OPAQUE_WIN32_KHR = OPAQUE_WIN32, + OPAQUE_WIN32_KMT_KHR = OPAQUE_WIN32_KMT, + D3D12_FENCE_KHR = D3D12_FENCE, + SYNC_FD_KHR = SYNC_FD, +} + +FenceCreateFlags :: distinct bit_set[FenceCreateFlag; Flags] +FenceCreateFlag :: enum Flags { + SIGNALED = 0, +} + +FenceImportFlags :: distinct bit_set[FenceImportFlag; Flags] +FenceImportFlag :: enum Flags { + TEMPORARY = 0, + TEMPORARY_KHR = TEMPORARY, +} + +Filter :: enum c.int { + NEAREST = 0, + LINEAR = 1, + CUBIC_IMG = 1000015000, + CUBIC_EXT = CUBIC_IMG, +} + +Format :: enum c.int { + UNDEFINED = 0, + R4G4_UNORM_PACK8 = 1, + R4G4B4A4_UNORM_PACK16 = 2, + B4G4R4A4_UNORM_PACK16 = 3, + R5G6B5_UNORM_PACK16 = 4, + B5G6R5_UNORM_PACK16 = 5, + R5G5B5A1_UNORM_PACK16 = 6, + B5G5R5A1_UNORM_PACK16 = 7, + A1R5G5B5_UNORM_PACK16 = 8, + R8_UNORM = 9, + R8_SNORM = 10, + R8_USCALED = 11, + R8_SSCALED = 12, + R8_UINT = 13, + R8_SINT = 14, + R8_SRGB = 15, + R8G8_UNORM = 16, + R8G8_SNORM = 17, + R8G8_USCALED = 18, + R8G8_SSCALED = 19, + R8G8_UINT = 20, + R8G8_SINT = 21, + R8G8_SRGB = 22, + R8G8B8_UNORM = 23, + R8G8B8_SNORM = 24, + R8G8B8_USCALED = 25, + R8G8B8_SSCALED = 26, + R8G8B8_UINT = 27, + R8G8B8_SINT = 28, + R8G8B8_SRGB = 29, + B8G8R8_UNORM = 30, + B8G8R8_SNORM = 31, + B8G8R8_USCALED = 32, + B8G8R8_SSCALED = 33, + B8G8R8_UINT = 34, + B8G8R8_SINT = 35, + B8G8R8_SRGB = 36, + R8G8B8A8_UNORM = 37, + R8G8B8A8_SNORM = 38, + R8G8B8A8_USCALED = 39, + R8G8B8A8_SSCALED = 40, + R8G8B8A8_UINT = 41, + R8G8B8A8_SINT = 42, + R8G8B8A8_SRGB = 43, + B8G8R8A8_UNORM = 44, + B8G8R8A8_SNORM = 45, + B8G8R8A8_USCALED = 46, + B8G8R8A8_SSCALED = 47, + B8G8R8A8_UINT = 48, + B8G8R8A8_SINT = 49, + B8G8R8A8_SRGB = 50, + A8B8G8R8_UNORM_PACK32 = 51, + A8B8G8R8_SNORM_PACK32 = 52, + A8B8G8R8_USCALED_PACK32 = 53, + A8B8G8R8_SSCALED_PACK32 = 54, + A8B8G8R8_UINT_PACK32 = 55, + A8B8G8R8_SINT_PACK32 = 56, + A8B8G8R8_SRGB_PACK32 = 57, + A2R10G10B10_UNORM_PACK32 = 58, + A2R10G10B10_SNORM_PACK32 = 59, + A2R10G10B10_USCALED_PACK32 = 60, + A2R10G10B10_SSCALED_PACK32 = 61, + A2R10G10B10_UINT_PACK32 = 62, + A2R10G10B10_SINT_PACK32 = 63, + A2B10G10R10_UNORM_PACK32 = 64, + A2B10G10R10_SNORM_PACK32 = 65, + A2B10G10R10_USCALED_PACK32 = 66, + A2B10G10R10_SSCALED_PACK32 = 67, + A2B10G10R10_UINT_PACK32 = 68, + A2B10G10R10_SINT_PACK32 = 69, + R16_UNORM = 70, + R16_SNORM = 71, + R16_USCALED = 72, + R16_SSCALED = 73, + R16_UINT = 74, + R16_SINT = 75, + R16_SFLOAT = 76, + R16G16_UNORM = 77, + R16G16_SNORM = 78, + R16G16_USCALED = 79, + R16G16_SSCALED = 80, + R16G16_UINT = 81, + R16G16_SINT = 82, + R16G16_SFLOAT = 83, + R16G16B16_UNORM = 84, + R16G16B16_SNORM = 85, + R16G16B16_USCALED = 86, + R16G16B16_SSCALED = 87, + R16G16B16_UINT = 88, + R16G16B16_SINT = 89, + R16G16B16_SFLOAT = 90, + R16G16B16A16_UNORM = 91, + R16G16B16A16_SNORM = 92, + R16G16B16A16_USCALED = 93, + R16G16B16A16_SSCALED = 94, + R16G16B16A16_UINT = 95, + R16G16B16A16_SINT = 96, + R16G16B16A16_SFLOAT = 97, + R32_UINT = 98, + R32_SINT = 99, + R32_SFLOAT = 100, + R32G32_UINT = 101, + R32G32_SINT = 102, + R32G32_SFLOAT = 103, + R32G32B32_UINT = 104, + R32G32B32_SINT = 105, + R32G32B32_SFLOAT = 106, + R32G32B32A32_UINT = 107, + R32G32B32A32_SINT = 108, + R32G32B32A32_SFLOAT = 109, + R64_UINT = 110, + R64_SINT = 111, + R64_SFLOAT = 112, + R64G64_UINT = 113, + R64G64_SINT = 114, + R64G64_SFLOAT = 115, + R64G64B64_UINT = 116, + R64G64B64_SINT = 117, + R64G64B64_SFLOAT = 118, + R64G64B64A64_UINT = 119, + R64G64B64A64_SINT = 120, + R64G64B64A64_SFLOAT = 121, + B10G11R11_UFLOAT_PACK32 = 122, + E5B9G9R9_UFLOAT_PACK32 = 123, + D16_UNORM = 124, + X8_D24_UNORM_PACK32 = 125, + D32_SFLOAT = 126, + S8_UINT = 127, + D16_UNORM_S8_UINT = 128, + D24_UNORM_S8_UINT = 129, + D32_SFLOAT_S8_UINT = 130, + BC1_RGB_UNORM_BLOCK = 131, + BC1_RGB_SRGB_BLOCK = 132, + BC1_RGBA_UNORM_BLOCK = 133, + BC1_RGBA_SRGB_BLOCK = 134, + BC2_UNORM_BLOCK = 135, + BC2_SRGB_BLOCK = 136, + BC3_UNORM_BLOCK = 137, + BC3_SRGB_BLOCK = 138, + BC4_UNORM_BLOCK = 139, + BC4_SNORM_BLOCK = 140, + BC5_UNORM_BLOCK = 141, + BC5_SNORM_BLOCK = 142, + BC6H_UFLOAT_BLOCK = 143, + BC6H_SFLOAT_BLOCK = 144, + BC7_UNORM_BLOCK = 145, + BC7_SRGB_BLOCK = 146, + ETC2_R8G8B8_UNORM_BLOCK = 147, + ETC2_R8G8B8_SRGB_BLOCK = 148, + ETC2_R8G8B8A1_UNORM_BLOCK = 149, + ETC2_R8G8B8A1_SRGB_BLOCK = 150, + ETC2_R8G8B8A8_UNORM_BLOCK = 151, + ETC2_R8G8B8A8_SRGB_BLOCK = 152, + EAC_R11_UNORM_BLOCK = 153, + EAC_R11_SNORM_BLOCK = 154, + EAC_R11G11_UNORM_BLOCK = 155, + EAC_R11G11_SNORM_BLOCK = 156, + ASTC_4x4_UNORM_BLOCK = 157, + ASTC_4x4_SRGB_BLOCK = 158, + ASTC_5x4_UNORM_BLOCK = 159, + ASTC_5x4_SRGB_BLOCK = 160, + ASTC_5x5_UNORM_BLOCK = 161, + ASTC_5x5_SRGB_BLOCK = 162, + ASTC_6x5_UNORM_BLOCK = 163, + ASTC_6x5_SRGB_BLOCK = 164, + ASTC_6x6_UNORM_BLOCK = 165, + ASTC_6x6_SRGB_BLOCK = 166, + ASTC_8x5_UNORM_BLOCK = 167, + ASTC_8x5_SRGB_BLOCK = 168, + ASTC_8x6_UNORM_BLOCK = 169, + ASTC_8x6_SRGB_BLOCK = 170, + ASTC_8x8_UNORM_BLOCK = 171, + ASTC_8x8_SRGB_BLOCK = 172, + ASTC_10x5_UNORM_BLOCK = 173, + ASTC_10x5_SRGB_BLOCK = 174, + ASTC_10x6_UNORM_BLOCK = 175, + ASTC_10x6_SRGB_BLOCK = 176, + ASTC_10x8_UNORM_BLOCK = 177, + ASTC_10x8_SRGB_BLOCK = 178, + ASTC_10x10_UNORM_BLOCK = 179, + ASTC_10x10_SRGB_BLOCK = 180, + ASTC_12x10_UNORM_BLOCK = 181, + ASTC_12x10_SRGB_BLOCK = 182, + ASTC_12x12_UNORM_BLOCK = 183, + ASTC_12x12_SRGB_BLOCK = 184, + G8B8G8R8_422_UNORM = 1000156000, + B8G8R8G8_422_UNORM = 1000156001, + G8_B8_R8_3PLANE_420_UNORM = 1000156002, + G8_B8R8_2PLANE_420_UNORM = 1000156003, + G8_B8_R8_3PLANE_422_UNORM = 1000156004, + G8_B8R8_2PLANE_422_UNORM = 1000156005, + G8_B8_R8_3PLANE_444_UNORM = 1000156006, + R10X6_UNORM_PACK16 = 1000156007, + R10X6G10X6_UNORM_2PACK16 = 1000156008, + R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009, + G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010, + B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011, + G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012, + G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013, + G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014, + G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015, + G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016, + R12X4_UNORM_PACK16 = 1000156017, + R12X4G12X4_UNORM_2PACK16 = 1000156018, + R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019, + G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020, + B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021, + G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022, + G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023, + G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024, + G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025, + G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026, + G16B16G16R16_422_UNORM = 1000156027, + B16G16R16G16_422_UNORM = 1000156028, + G16_B16_R16_3PLANE_420_UNORM = 1000156029, + G16_B16R16_2PLANE_420_UNORM = 1000156030, + G16_B16_R16_3PLANE_422_UNORM = 1000156031, + G16_B16R16_2PLANE_422_UNORM = 1000156032, + G16_B16_R16_3PLANE_444_UNORM = 1000156033, + G8_B8R8_2PLANE_444_UNORM = 1000330000, + G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16 = 1000330001, + G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16 = 1000330002, + G16_B16R16_2PLANE_444_UNORM = 1000330003, + A4R4G4B4_UNORM_PACK16 = 1000340000, + A4B4G4R4_UNORM_PACK16 = 1000340001, + ASTC_4x4_SFLOAT_BLOCK = 1000066000, + ASTC_5x4_SFLOAT_BLOCK = 1000066001, + ASTC_5x5_SFLOAT_BLOCK = 1000066002, + ASTC_6x5_SFLOAT_BLOCK = 1000066003, + ASTC_6x6_SFLOAT_BLOCK = 1000066004, + ASTC_8x5_SFLOAT_BLOCK = 1000066005, + ASTC_8x6_SFLOAT_BLOCK = 1000066006, + ASTC_8x8_SFLOAT_BLOCK = 1000066007, + ASTC_10x5_SFLOAT_BLOCK = 1000066008, + ASTC_10x6_SFLOAT_BLOCK = 1000066009, + ASTC_10x8_SFLOAT_BLOCK = 1000066010, + ASTC_10x10_SFLOAT_BLOCK = 1000066011, + ASTC_12x10_SFLOAT_BLOCK = 1000066012, + ASTC_12x12_SFLOAT_BLOCK = 1000066013, + PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000, + PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001, + PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002, + PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003, + PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004, + PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005, + PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006, + PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007, + ASTC_4x4_SFLOAT_BLOCK_EXT = ASTC_4x4_SFLOAT_BLOCK, + ASTC_5x4_SFLOAT_BLOCK_EXT = ASTC_5x4_SFLOAT_BLOCK, + ASTC_5x5_SFLOAT_BLOCK_EXT = ASTC_5x5_SFLOAT_BLOCK, + ASTC_6x5_SFLOAT_BLOCK_EXT = ASTC_6x5_SFLOAT_BLOCK, + ASTC_6x6_SFLOAT_BLOCK_EXT = ASTC_6x6_SFLOAT_BLOCK, + ASTC_8x5_SFLOAT_BLOCK_EXT = ASTC_8x5_SFLOAT_BLOCK, + ASTC_8x6_SFLOAT_BLOCK_EXT = ASTC_8x6_SFLOAT_BLOCK, + ASTC_8x8_SFLOAT_BLOCK_EXT = ASTC_8x8_SFLOAT_BLOCK, + ASTC_10x5_SFLOAT_BLOCK_EXT = ASTC_10x5_SFLOAT_BLOCK, + ASTC_10x6_SFLOAT_BLOCK_EXT = ASTC_10x6_SFLOAT_BLOCK, + ASTC_10x8_SFLOAT_BLOCK_EXT = ASTC_10x8_SFLOAT_BLOCK, + ASTC_10x10_SFLOAT_BLOCK_EXT = ASTC_10x10_SFLOAT_BLOCK, + ASTC_12x10_SFLOAT_BLOCK_EXT = ASTC_12x10_SFLOAT_BLOCK, + ASTC_12x12_SFLOAT_BLOCK_EXT = ASTC_12x12_SFLOAT_BLOCK, + G8B8G8R8_422_UNORM_KHR = G8B8G8R8_422_UNORM, + B8G8R8G8_422_UNORM_KHR = B8G8R8G8_422_UNORM, + G8_B8_R8_3PLANE_420_UNORM_KHR = G8_B8_R8_3PLANE_420_UNORM, + G8_B8R8_2PLANE_420_UNORM_KHR = G8_B8R8_2PLANE_420_UNORM, + G8_B8_R8_3PLANE_422_UNORM_KHR = G8_B8_R8_3PLANE_422_UNORM, + G8_B8R8_2PLANE_422_UNORM_KHR = G8_B8R8_2PLANE_422_UNORM, + G8_B8_R8_3PLANE_444_UNORM_KHR = G8_B8_R8_3PLANE_444_UNORM, + R10X6_UNORM_PACK16_KHR = R10X6_UNORM_PACK16, + R10X6G10X6_UNORM_2PACK16_KHR = R10X6G10X6_UNORM_2PACK16, + R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = R10X6G10X6B10X6A10X6_UNORM_4PACK16, + G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = G10X6B10X6G10X6R10X6_422_UNORM_4PACK16, + B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = B10X6G10X6R10X6G10X6_422_UNORM_4PACK16, + G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16, + G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16, + G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16, + G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16, + G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16, + R12X4_UNORM_PACK16_KHR = R12X4_UNORM_PACK16, + R12X4G12X4_UNORM_2PACK16_KHR = R12X4G12X4_UNORM_2PACK16, + R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = R12X4G12X4B12X4A12X4_UNORM_4PACK16, + G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = G12X4B12X4G12X4R12X4_422_UNORM_4PACK16, + B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = B12X4G12X4R12X4G12X4_422_UNORM_4PACK16, + G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16, + G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16, + G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16, + G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16, + G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16, + G16B16G16R16_422_UNORM_KHR = G16B16G16R16_422_UNORM, + B16G16R16G16_422_UNORM_KHR = B16G16R16G16_422_UNORM, + G16_B16_R16_3PLANE_420_UNORM_KHR = G16_B16_R16_3PLANE_420_UNORM, + G16_B16R16_2PLANE_420_UNORM_KHR = G16_B16R16_2PLANE_420_UNORM, + G16_B16_R16_3PLANE_422_UNORM_KHR = G16_B16_R16_3PLANE_422_UNORM, + G16_B16R16_2PLANE_422_UNORM_KHR = G16_B16R16_2PLANE_422_UNORM, + G16_B16_R16_3PLANE_444_UNORM_KHR = G16_B16_R16_3PLANE_444_UNORM, + G8_B8R8_2PLANE_444_UNORM_EXT = G8_B8R8_2PLANE_444_UNORM, + G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT = G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16, + G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT = G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16, + G16_B16R16_2PLANE_444_UNORM_EXT = G16_B16R16_2PLANE_444_UNORM, + A4R4G4B4_UNORM_PACK16_EXT = A4R4G4B4_UNORM_PACK16, + A4B4G4R4_UNORM_PACK16_EXT = A4B4G4R4_UNORM_PACK16, +} + +FormatFeatureFlags :: distinct bit_set[FormatFeatureFlag; Flags] +FormatFeatureFlag :: enum Flags { + SAMPLED_IMAGE = 0, + STORAGE_IMAGE = 1, + STORAGE_IMAGE_ATOMIC = 2, + UNIFORM_TEXEL_BUFFER = 3, + STORAGE_TEXEL_BUFFER = 4, + STORAGE_TEXEL_BUFFER_ATOMIC = 5, + VERTEX_BUFFER = 6, + COLOR_ATTACHMENT = 7, + COLOR_ATTACHMENT_BLEND = 8, + DEPTH_STENCIL_ATTACHMENT = 9, + BLIT_SRC = 10, + BLIT_DST = 11, + SAMPLED_IMAGE_FILTER_LINEAR = 12, + TRANSFER_SRC = 14, + TRANSFER_DST = 15, + MIDPOINT_CHROMA_SAMPLES = 17, + SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER = 18, + SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER = 19, + SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT = 20, + SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE = 21, + DISJOINT = 22, + COSITED_CHROMA_SAMPLES = 23, + SAMPLED_IMAGE_FILTER_MINMAX = 16, + SAMPLED_IMAGE_FILTER_CUBIC_IMG = 13, + VIDEO_DECODE_OUTPUT_KHR = 25, + VIDEO_DECODE_DPB_KHR = 26, + ACCELERATION_STRUCTURE_VERTEX_BUFFER_KHR = 29, + FRAGMENT_DENSITY_MAP_EXT = 24, + FRAGMENT_SHADING_RATE_ATTACHMENT_KHR = 30, + VIDEO_ENCODE_INPUT_KHR = 27, + VIDEO_ENCODE_DPB_KHR = 28, + TRANSFER_SRC_KHR = TRANSFER_SRC, + TRANSFER_DST_KHR = TRANSFER_DST, + SAMPLED_IMAGE_FILTER_MINMAX_EXT = SAMPLED_IMAGE_FILTER_MINMAX, + MIDPOINT_CHROMA_SAMPLES_KHR = MIDPOINT_CHROMA_SAMPLES, + SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_KHR = SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER, + SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_KHR = SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER, + SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_KHR = SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT, + SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_KHR = SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE, + DISJOINT_KHR = DISJOINT, + COSITED_CHROMA_SAMPLES_KHR = COSITED_CHROMA_SAMPLES, + SAMPLED_IMAGE_FILTER_CUBIC_EXT = SAMPLED_IMAGE_FILTER_CUBIC_IMG, +} + +FragmentShadingRateCombinerOpKHR :: enum c.int { + KEEP = 0, + REPLACE = 1, + MIN = 2, + MAX = 3, + MUL = 4, +} + +FragmentShadingRateNV :: enum c.int { + _1_INVOCATION_PER_PIXEL = 0, + _1_INVOCATION_PER_1X2_PIXELS = 1, + _1_INVOCATION_PER_2X1_PIXELS = 4, + _1_INVOCATION_PER_2X2_PIXELS = 5, + _1_INVOCATION_PER_2X4_PIXELS = 6, + _1_INVOCATION_PER_4X2_PIXELS = 9, + _1_INVOCATION_PER_4X4_PIXELS = 10, + _2_INVOCATIONS_PER_PIXEL = 11, + _4_INVOCATIONS_PER_PIXEL = 12, + _8_INVOCATIONS_PER_PIXEL = 13, + _16_INVOCATIONS_PER_PIXEL = 14, + NO_INVOCATIONS = 15, +} + +FragmentShadingRateTypeNV :: enum c.int { + FRAGMENT_SIZE = 0, + ENUMS = 1, +} + +FramebufferCreateFlags :: distinct bit_set[FramebufferCreateFlag; Flags] +FramebufferCreateFlag :: enum Flags { + IMAGELESS = 0, + IMAGELESS_KHR = IMAGELESS, +} + +FrontFace :: enum c.int { + COUNTER_CLOCKWISE = 0, + CLOCKWISE = 1, +} + +FullScreenExclusiveEXT :: enum c.int { + DEFAULT = 0, + ALLOWED = 1, + DISALLOWED = 2, + APPLICATION_CONTROLLED = 3, +} + +GeometryFlagsKHR :: distinct bit_set[GeometryFlagKHR; Flags] +GeometryFlagKHR :: enum Flags { + OPAQUE = 0, + NO_DUPLICATE_ANY_HIT_INVOCATION = 1, + OPAQUE_NV = OPAQUE, + NO_DUPLICATE_ANY_HIT_INVOCATION_NV = NO_DUPLICATE_ANY_HIT_INVOCATION, +} + +GeometryInstanceFlagsKHR :: distinct bit_set[GeometryInstanceFlagKHR; Flags] +GeometryInstanceFlagKHR :: enum Flags { + TRIANGLE_FACING_CULL_DISABLE = 0, + TRIANGLE_FLIP_FACING = 1, + FORCE_OPAQUE = 2, + FORCE_NO_OPAQUE = 3, + TRIANGLE_FRONT_COUNTERCLOCKWISE = TRIANGLE_FLIP_FACING, + TRIANGLE_CULL_DISABLE_NV = TRIANGLE_FACING_CULL_DISABLE, + TRIANGLE_FRONT_COUNTERCLOCKWISE_NV = TRIANGLE_FRONT_COUNTERCLOCKWISE, + FORCE_OPAQUE_NV = FORCE_OPAQUE, + FORCE_NO_OPAQUE_NV = FORCE_NO_OPAQUE, +} + +GeometryTypeKHR :: enum c.int { + TRIANGLES = 0, + AABBS = 1, + INSTANCES = 2, + TRIANGLES_NV = TRIANGLES, + AABBS_NV = AABBS, +} + +GraphicsPipelineLibraryFlagsEXT :: distinct bit_set[GraphicsPipelineLibraryFlagEXT; Flags] +GraphicsPipelineLibraryFlagEXT :: enum Flags { + VERTEX_INPUT_INTERFACE = 0, + PRE_RASTERIZATION_SHADERS = 1, + FRAGMENT_SHADER = 2, + FRAGMENT_OUTPUT_INTERFACE = 3, +} + +ImageAspectFlags :: distinct bit_set[ImageAspectFlag; Flags] +ImageAspectFlag :: enum Flags { + COLOR = 0, + DEPTH = 1, + STENCIL = 2, + METADATA = 3, + PLANE_0 = 4, + PLANE_1 = 5, + PLANE_2 = 6, + MEMORY_PLANE_0_EXT = 7, + MEMORY_PLANE_1_EXT = 8, + MEMORY_PLANE_2_EXT = 9, + MEMORY_PLANE_3_EXT = 10, + PLANE_0_KHR = PLANE_0, + PLANE_1_KHR = PLANE_1, + PLANE_2_KHR = PLANE_2, +} + +ImageAspectFlags_NONE :: ImageAspectFlags{} + + +ImageCreateFlags :: distinct bit_set[ImageCreateFlag; Flags] +ImageCreateFlag :: enum Flags { + SPARSE_BINDING = 0, + SPARSE_RESIDENCY = 1, + SPARSE_ALIASED = 2, + MUTABLE_FORMAT = 3, + CUBE_COMPATIBLE = 4, + ALIAS = 10, + SPLIT_INSTANCE_BIND_REGIONS = 6, + D2_ARRAY_COMPATIBLE = 5, + BLOCK_TEXEL_VIEW_COMPATIBLE = 7, + EXTENDED_USAGE = 8, + PROTECTED = 11, + DISJOINT = 9, + CORNER_SAMPLED_NV = 13, + SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_EXT = 12, + SUBSAMPLED_EXT = 14, + D2_VIEW_COMPATIBLE_EXT = 17, + FRAGMENT_DENSITY_MAP_OFFSET_QCOM = 15, + SPLIT_INSTANCE_BIND_REGIONS_KHR = SPLIT_INSTANCE_BIND_REGIONS, + D2_ARRAY_COMPATIBLE_KHR = D2_ARRAY_COMPATIBLE, + BLOCK_TEXEL_VIEW_COMPATIBLE_KHR = BLOCK_TEXEL_VIEW_COMPATIBLE, + EXTENDED_USAGE_KHR = EXTENDED_USAGE, + DISJOINT_KHR = DISJOINT, + ALIAS_KHR = ALIAS, +} + +ImageLayout :: enum c.int { + UNDEFINED = 0, + GENERAL = 1, + COLOR_ATTACHMENT_OPTIMAL = 2, + DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3, + DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4, + SHADER_READ_ONLY_OPTIMAL = 5, + TRANSFER_SRC_OPTIMAL = 6, + TRANSFER_DST_OPTIMAL = 7, + PREINITIALIZED = 8, + DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000, + DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001, + DEPTH_ATTACHMENT_OPTIMAL = 1000241000, + DEPTH_READ_ONLY_OPTIMAL = 1000241001, + STENCIL_ATTACHMENT_OPTIMAL = 1000241002, + STENCIL_READ_ONLY_OPTIMAL = 1000241003, + READ_ONLY_OPTIMAL = 1000314000, + ATTACHMENT_OPTIMAL = 1000314001, + PRESENT_SRC_KHR = 1000001002, + VIDEO_DECODE_DST_KHR = 1000024000, + VIDEO_DECODE_SRC_KHR = 1000024001, + VIDEO_DECODE_DPB_KHR = 1000024002, + SHARED_PRESENT_KHR = 1000111000, + FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000, + FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003, + VIDEO_ENCODE_DST_KHR = 1000299000, + VIDEO_ENCODE_SRC_KHR = 1000299001, + VIDEO_ENCODE_DPB_KHR = 1000299002, + DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, + DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, + SHADING_RATE_OPTIMAL_NV = FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR, + DEPTH_ATTACHMENT_OPTIMAL_KHR = DEPTH_ATTACHMENT_OPTIMAL, + DEPTH_READ_ONLY_OPTIMAL_KHR = DEPTH_READ_ONLY_OPTIMAL, + STENCIL_ATTACHMENT_OPTIMAL_KHR = STENCIL_ATTACHMENT_OPTIMAL, + STENCIL_READ_ONLY_OPTIMAL_KHR = STENCIL_READ_ONLY_OPTIMAL, + READ_ONLY_OPTIMAL_KHR = READ_ONLY_OPTIMAL, + ATTACHMENT_OPTIMAL_KHR = ATTACHMENT_OPTIMAL, +} + +ImageTiling :: enum c.int { + OPTIMAL = 0, + LINEAR = 1, + DRM_FORMAT_MODIFIER_EXT = 1000158000, +} + +ImageType :: enum c.int { + D1 = 0, + D2 = 1, + D3 = 2, +} + +ImageUsageFlags :: distinct bit_set[ImageUsageFlag; Flags] +ImageUsageFlag :: enum Flags { + TRANSFER_SRC = 0, + TRANSFER_DST = 1, + SAMPLED = 2, + STORAGE = 3, + COLOR_ATTACHMENT = 4, + DEPTH_STENCIL_ATTACHMENT = 5, + TRANSIENT_ATTACHMENT = 6, + INPUT_ATTACHMENT = 7, + VIDEO_DECODE_DST_KHR = 10, + VIDEO_DECODE_SRC_KHR = 11, + VIDEO_DECODE_DPB_KHR = 12, + FRAGMENT_DENSITY_MAP_EXT = 9, + FRAGMENT_SHADING_RATE_ATTACHMENT_KHR = 8, + VIDEO_ENCODE_DST_KHR = 13, + VIDEO_ENCODE_SRC_KHR = 14, + VIDEO_ENCODE_DPB_KHR = 15, + INVOCATION_MASK_HUAWEI = 18, + SHADING_RATE_IMAGE_NV = FRAGMENT_SHADING_RATE_ATTACHMENT_KHR, +} + +ImageViewCreateFlags :: distinct bit_set[ImageViewCreateFlag; Flags] +ImageViewCreateFlag :: enum Flags { + FRAGMENT_DENSITY_MAP_DYNAMIC_EXT = 0, + FRAGMENT_DENSITY_MAP_DEFERRED_EXT = 1, +} + +ImageViewType :: enum c.int { + D1 = 0, + D2 = 1, + D3 = 2, + CUBE = 3, + D1_ARRAY = 4, + D2_ARRAY = 5, + CUBE_ARRAY = 6, +} + +IndexType :: enum c.int { + UINT16 = 0, + UINT32 = 1, + NONE_KHR = 1000165000, + UINT8_EXT = 1000265000, + NONE_NV = NONE_KHR, +} + +IndirectCommandsLayoutUsageFlagsNV :: distinct bit_set[IndirectCommandsLayoutUsageFlagNV; Flags] +IndirectCommandsLayoutUsageFlagNV :: enum Flags { + EXPLICIT_PREPROCESS = 0, + INDEXED_SEQUENCES = 1, + UNORDERED_SEQUENCES = 2, +} + +IndirectCommandsTokenTypeNV :: enum c.int { + SHADER_GROUP = 0, + STATE_FLAGS = 1, + INDEX_BUFFER = 2, + VERTEX_BUFFER = 3, + PUSH_CONSTANT = 4, + DRAW_INDEXED = 5, + DRAW = 6, + DRAW_TASKS = 7, +} + +IndirectStateFlagsNV :: distinct bit_set[IndirectStateFlagNV; Flags] +IndirectStateFlagNV :: enum Flags { + FLAG_FRONTFACE = 0, +} + +InstanceCreateFlags :: distinct bit_set[InstanceCreateFlag; Flags] +InstanceCreateFlag :: enum Flags { + ENUMERATE_PORTABILITY_KHR = 0, +} + +InternalAllocationType :: enum c.int { + EXECUTABLE = 0, +} + +LineRasterizationModeEXT :: enum c.int { + DEFAULT = 0, + RECTANGULAR = 1, + BRESENHAM = 2, + RECTANGULAR_SMOOTH = 3, +} + +LogicOp :: enum c.int { + CLEAR = 0, + AND = 1, + AND_REVERSE = 2, + COPY = 3, + AND_INVERTED = 4, + NO_OP = 5, + XOR = 6, + OR = 7, + NOR = 8, + EQUIVALENT = 9, + INVERT = 10, + OR_REVERSE = 11, + COPY_INVERTED = 12, + OR_INVERTED = 13, + NAND = 14, + SET = 15, +} + +MemoryAllocateFlags :: distinct bit_set[MemoryAllocateFlag; Flags] +MemoryAllocateFlag :: enum Flags { + DEVICE_MASK = 0, + DEVICE_ADDRESS = 1, + DEVICE_ADDRESS_CAPTURE_REPLAY = 2, + DEVICE_MASK_KHR = DEVICE_MASK, + DEVICE_ADDRESS_KHR = DEVICE_ADDRESS, + DEVICE_ADDRESS_CAPTURE_REPLAY_KHR = DEVICE_ADDRESS_CAPTURE_REPLAY, +} + +MemoryHeapFlags :: distinct bit_set[MemoryHeapFlag; Flags] +MemoryHeapFlag :: enum Flags { + DEVICE_LOCAL = 0, + MULTI_INSTANCE = 1, + MULTI_INSTANCE_KHR = MULTI_INSTANCE, +} + +MemoryOverallocationBehaviorAMD :: enum c.int { + DEFAULT = 0, + ALLOWED = 1, + DISALLOWED = 2, +} + +MemoryPropertyFlags :: distinct bit_set[MemoryPropertyFlag; Flags] +MemoryPropertyFlag :: enum Flags { + DEVICE_LOCAL = 0, + HOST_VISIBLE = 1, + HOST_COHERENT = 2, + HOST_CACHED = 3, + LAZILY_ALLOCATED = 4, + PROTECTED = 5, + DEVICE_COHERENT_AMD = 6, + DEVICE_UNCACHED_AMD = 7, + RDMA_CAPABLE_NV = 8, +} + +ObjectType :: enum c.int { + UNKNOWN = 0, + INSTANCE = 1, + PHYSICAL_DEVICE = 2, + DEVICE = 3, + QUEUE = 4, + SEMAPHORE = 5, + COMMAND_BUFFER = 6, + FENCE = 7, + DEVICE_MEMORY = 8, + BUFFER = 9, + IMAGE = 10, + EVENT = 11, + QUERY_POOL = 12, + BUFFER_VIEW = 13, + IMAGE_VIEW = 14, + SHADER_MODULE = 15, + PIPELINE_CACHE = 16, + PIPELINE_LAYOUT = 17, + RENDER_PASS = 18, + PIPELINE = 19, + DESCRIPTOR_SET_LAYOUT = 20, + SAMPLER = 21, + DESCRIPTOR_POOL = 22, + DESCRIPTOR_SET = 23, + FRAMEBUFFER = 24, + COMMAND_POOL = 25, + SAMPLER_YCBCR_CONVERSION = 1000156000, + DESCRIPTOR_UPDATE_TEMPLATE = 1000085000, + PRIVATE_DATA_SLOT = 1000295000, + SURFACE_KHR = 1000000000, + SWAPCHAIN_KHR = 1000001000, + DISPLAY_KHR = 1000002000, + DISPLAY_MODE_KHR = 1000002001, + DEBUG_REPORT_CALLBACK_EXT = 1000011000, + VIDEO_SESSION_KHR = 1000023000, + VIDEO_SESSION_PARAMETERS_KHR = 1000023001, + CU_MODULE_NVX = 1000029000, + CU_FUNCTION_NVX = 1000029001, + DEBUG_UTILS_MESSENGER_EXT = 1000128000, + ACCELERATION_STRUCTURE_KHR = 1000150000, + VALIDATION_CACHE_EXT = 1000160000, + ACCELERATION_STRUCTURE_NV = 1000165000, + PERFORMANCE_CONFIGURATION_INTEL = 1000210000, + DEFERRED_OPERATION_KHR = 1000268000, + INDIRECT_COMMANDS_LAYOUT_NV = 1000277000, + BUFFER_COLLECTION_FUCHSIA = 1000366000, + DESCRIPTOR_UPDATE_TEMPLATE_KHR = DESCRIPTOR_UPDATE_TEMPLATE, + SAMPLER_YCBCR_CONVERSION_KHR = SAMPLER_YCBCR_CONVERSION, + PRIVATE_DATA_SLOT_EXT = PRIVATE_DATA_SLOT, +} + +PeerMemoryFeatureFlags :: distinct bit_set[PeerMemoryFeatureFlag; Flags] +PeerMemoryFeatureFlag :: enum Flags { + COPY_SRC = 0, + COPY_DST = 1, + GENERIC_SRC = 2, + GENERIC_DST = 3, + COPY_SRC_KHR = COPY_SRC, + COPY_DST_KHR = COPY_DST, + GENERIC_SRC_KHR = GENERIC_SRC, + GENERIC_DST_KHR = GENERIC_DST, +} + +PerformanceConfigurationTypeINTEL :: enum c.int { + PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0, +} + +PerformanceCounterDescriptionFlagsKHR :: distinct bit_set[PerformanceCounterDescriptionFlagKHR; Flags] +PerformanceCounterDescriptionFlagKHR :: enum Flags { + PERFORMANCE_IMPACTING = 0, + CONCURRENTLY_IMPACTED = 1, +} + +PerformanceCounterScopeKHR :: enum c.int { + COMMAND_BUFFER = 0, + RENDER_PASS = 1, + COMMAND = 2, + QUERY_SCOPE_COMMAND_BUFFER = COMMAND_BUFFER, + QUERY_SCOPE_RENDER_PASS = RENDER_PASS, + QUERY_SCOPE_COMMAND = COMMAND, +} + +PerformanceCounterStorageKHR :: enum c.int { + INT32 = 0, + INT64 = 1, + UINT32 = 2, + UINT64 = 3, + FLOAT32 = 4, + FLOAT64 = 5, +} + +PerformanceCounterUnitKHR :: enum c.int { + GENERIC = 0, + PERCENTAGE = 1, + NANOSECONDS = 2, + BYTES = 3, + BYTES_PER_SECOND = 4, + KELVIN = 5, + WATTS = 6, + VOLTS = 7, + AMPS = 8, + HERTZ = 9, + CYCLES = 10, +} + +PerformanceOverrideTypeINTEL :: enum c.int { + PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0, + PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1, +} + +PerformanceParameterTypeINTEL :: enum c.int { + PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0, + PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1, +} + +PerformanceValueTypeINTEL :: enum c.int { + PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0, + PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1, + PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2, + PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3, + PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4, +} + +PhysicalDeviceType :: enum c.int { + OTHER = 0, + INTEGRATED_GPU = 1, + DISCRETE_GPU = 2, + VIRTUAL_GPU = 3, + CPU = 4, +} + +PipelineBindPoint :: enum c.int { + GRAPHICS = 0, + COMPUTE = 1, + RAY_TRACING_KHR = 1000165000, + SUBPASS_SHADING_HUAWEI = 1000369003, + RAY_TRACING_NV = RAY_TRACING_KHR, +} + +PipelineCacheCreateFlags :: distinct bit_set[PipelineCacheCreateFlag; Flags] +PipelineCacheCreateFlag :: enum Flags { + EXTERNALLY_SYNCHRONIZED = 0, + EXTERNALLY_SYNCHRONIZED_EXT = EXTERNALLY_SYNCHRONIZED, +} + +PipelineCacheHeaderVersion :: enum c.int { + ONE = 1, +} + +PipelineColorBlendStateCreateFlags :: distinct bit_set[PipelineColorBlendStateCreateFlag; Flags] +PipelineColorBlendStateCreateFlag :: enum Flags { + RASTERIZATION_ORDER_ATTACHMENT_ACCESS_ARM = 0, +} + +PipelineCompilerControlFlagsAMD :: distinct bit_set[PipelineCompilerControlFlagAMD; Flags] +PipelineCompilerControlFlagAMD :: enum Flags { +} + +PipelineCreateFlags :: distinct bit_set[PipelineCreateFlag; Flags] +PipelineCreateFlag :: enum Flags { + DISABLE_OPTIMIZATION = 0, + ALLOW_DERIVATIVES = 1, + DERIVATIVE = 2, + VIEW_INDEX_FROM_DEVICE_INDEX = 3, + DISPATCH_BASE = 4, + FAIL_ON_PIPELINE_COMPILE_REQUIRED = 8, + EARLY_RETURN_ON_FAILURE = 9, + RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_KHR = 21, + RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_EXT = 22, + RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_KHR = 14, + RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_KHR = 15, + RAY_TRACING_NO_NULL_MISS_SHADERS_KHR = 16, + RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_KHR = 17, + RAY_TRACING_SKIP_TRIANGLES_KHR = 12, + RAY_TRACING_SKIP_AABBS_KHR = 13, + RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_KHR = 19, + DEFER_COMPILE_NV = 5, + CAPTURE_STATISTICS_KHR = 6, + CAPTURE_INTERNAL_REPRESENTATIONS_KHR = 7, + INDIRECT_BINDABLE_NV = 18, + LIBRARY_KHR = 11, + RETAIN_LINK_TIME_OPTIMIZATION_INFO_EXT = 23, + LINK_TIME_OPTIMIZATION_EXT = 10, + RAY_TRACING_ALLOW_MOTION_NV = 20, + PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_KHR = RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_KHR, + PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_EXT = RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_EXT, + VIEW_INDEX_FROM_DEVICE_INDEX_KHR = VIEW_INDEX_FROM_DEVICE_INDEX, + DISPATCH_BASE_KHR = DISPATCH_BASE, + FAIL_ON_PIPELINE_COMPILE_REQUIRED_EXT = FAIL_ON_PIPELINE_COMPILE_REQUIRED, + EARLY_RETURN_ON_FAILURE_EXT = EARLY_RETURN_ON_FAILURE, +} + +PipelineCreationFeedbackFlags :: distinct bit_set[PipelineCreationFeedbackFlag; Flags] +PipelineCreationFeedbackFlag :: enum Flags { + VALID = 0, + APPLICATION_PIPELINE_CACHE_HIT = 1, + BASE_PIPELINE_ACCELERATION = 2, + VALID_EXT = VALID, + APPLICATION_PIPELINE_CACHE_HIT_EXT = APPLICATION_PIPELINE_CACHE_HIT, + BASE_PIPELINE_ACCELERATION_EXT = BASE_PIPELINE_ACCELERATION, +} + +PipelineDepthStencilStateCreateFlags :: distinct bit_set[PipelineDepthStencilStateCreateFlag; Flags] +PipelineDepthStencilStateCreateFlag :: enum Flags { + RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_ARM = 0, + RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_ARM = 1, +} + +PipelineExecutableStatisticFormatKHR :: enum c.int { + BOOL32 = 0, + INT64 = 1, + UINT64 = 2, + FLOAT64 = 3, +} + +PipelineLayoutCreateFlags :: distinct bit_set[PipelineLayoutCreateFlag; Flags] +PipelineLayoutCreateFlag :: enum Flags { + INDEPENDENT_SETS_EXT = 1, +} + +PipelineShaderStageCreateFlags :: distinct bit_set[PipelineShaderStageCreateFlag; Flags] +PipelineShaderStageCreateFlag :: enum Flags { + ALLOW_VARYING_SUBGROUP_SIZE = 0, + REQUIRE_FULL_SUBGROUPS = 1, + ALLOW_VARYING_SUBGROUP_SIZE_EXT = ALLOW_VARYING_SUBGROUP_SIZE, + REQUIRE_FULL_SUBGROUPS_EXT = REQUIRE_FULL_SUBGROUPS, +} + +PipelineStageFlags :: distinct bit_set[PipelineStageFlag; Flags] +PipelineStageFlag :: enum Flags { + TOP_OF_PIPE = 0, + DRAW_INDIRECT = 1, + VERTEX_INPUT = 2, + VERTEX_SHADER = 3, + TESSELLATION_CONTROL_SHADER = 4, + TESSELLATION_EVALUATION_SHADER = 5, + GEOMETRY_SHADER = 6, + FRAGMENT_SHADER = 7, + EARLY_FRAGMENT_TESTS = 8, + LATE_FRAGMENT_TESTS = 9, + COLOR_ATTACHMENT_OUTPUT = 10, + COMPUTE_SHADER = 11, + TRANSFER = 12, + BOTTOM_OF_PIPE = 13, + HOST = 14, + ALL_GRAPHICS = 15, + ALL_COMMANDS = 16, + TRANSFORM_FEEDBACK_EXT = 24, + CONDITIONAL_RENDERING_EXT = 18, + ACCELERATION_STRUCTURE_BUILD_KHR = 25, + RAY_TRACING_SHADER_KHR = 21, + TASK_SHADER_NV = 19, + MESH_SHADER_NV = 20, + FRAGMENT_DENSITY_PROCESS_EXT = 23, + FRAGMENT_SHADING_RATE_ATTACHMENT_KHR = 22, + COMMAND_PREPROCESS_NV = 17, + SHADING_RATE_IMAGE_NV = FRAGMENT_SHADING_RATE_ATTACHMENT_KHR, + RAY_TRACING_SHADER_NV = RAY_TRACING_SHADER_KHR, + ACCELERATION_STRUCTURE_BUILD_NV = ACCELERATION_STRUCTURE_BUILD_KHR, +} + +PipelineStageFlags_NONE :: PipelineStageFlags{} + + +PointClippingBehavior :: enum c.int { + ALL_CLIP_PLANES = 0, + USER_CLIP_PLANES_ONLY = 1, + ALL_CLIP_PLANES_KHR = ALL_CLIP_PLANES, + USER_CLIP_PLANES_ONLY_KHR = USER_CLIP_PLANES_ONLY, +} + +PolygonMode :: enum c.int { + FILL = 0, + LINE = 1, + POINT = 2, + FILL_RECTANGLE_NV = 1000153000, +} + +PresentModeKHR :: enum c.int { + IMMEDIATE = 0, + MAILBOX = 1, + FIFO = 2, + FIFO_RELAXED = 3, + SHARED_DEMAND_REFRESH = 1000111000, + SHARED_CONTINUOUS_REFRESH = 1000111001, +} + +PrimitiveTopology :: enum c.int { + POINT_LIST = 0, + LINE_LIST = 1, + LINE_STRIP = 2, + TRIANGLE_LIST = 3, + TRIANGLE_STRIP = 4, + TRIANGLE_FAN = 5, + LINE_LIST_WITH_ADJACENCY = 6, + LINE_STRIP_WITH_ADJACENCY = 7, + TRIANGLE_LIST_WITH_ADJACENCY = 8, + TRIANGLE_STRIP_WITH_ADJACENCY = 9, + PATCH_LIST = 10, +} + +ProvokingVertexModeEXT :: enum c.int { + FIRST_VERTEX = 0, + LAST_VERTEX = 1, +} + +QueryControlFlags :: distinct bit_set[QueryControlFlag; Flags] +QueryControlFlag :: enum Flags { + PRECISE = 0, +} + +QueryPipelineStatisticFlags :: distinct bit_set[QueryPipelineStatisticFlag; Flags] +QueryPipelineStatisticFlag :: enum Flags { + INPUT_ASSEMBLY_VERTICES = 0, + INPUT_ASSEMBLY_PRIMITIVES = 1, + VERTEX_SHADER_INVOCATIONS = 2, + GEOMETRY_SHADER_INVOCATIONS = 3, + GEOMETRY_SHADER_PRIMITIVES = 4, + CLIPPING_INVOCATIONS = 5, + CLIPPING_PRIMITIVES = 6, + FRAGMENT_SHADER_INVOCATIONS = 7, + TESSELLATION_CONTROL_SHADER_PATCHES = 8, + TESSELLATION_EVALUATION_SHADER_INVOCATIONS = 9, + COMPUTE_SHADER_INVOCATIONS = 10, +} + +QueryPoolSamplingModeINTEL :: enum c.int { + QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0, +} + +QueryResultFlags :: distinct bit_set[QueryResultFlag; Flags] +QueryResultFlag :: enum Flags { + _64 = 0, + WAIT = 1, + WITH_AVAILABILITY = 2, + PARTIAL = 3, + WITH_STATUS_KHR = 4, +} + +QueryType :: enum c.int { + OCCLUSION = 0, + PIPELINE_STATISTICS = 1, + TIMESTAMP = 2, + RESULT_STATUS_ONLY_KHR = 1000023000, + TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004, + PERFORMANCE_QUERY_KHR = 1000116000, + ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000150000, + ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150001, + ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000, + PERFORMANCE_QUERY_INTEL = 1000210000, + VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR = 1000299000, + PRIMITIVES_GENERATED_EXT = 1000382000, +} + +QueueFlags :: distinct bit_set[QueueFlag; Flags] +QueueFlag :: enum Flags { + GRAPHICS = 0, + COMPUTE = 1, + TRANSFER = 2, + SPARSE_BINDING = 3, + PROTECTED = 4, + VIDEO_DECODE_KHR = 5, + VIDEO_ENCODE_KHR = 6, +} + +QueueGlobalPriorityKHR :: enum c.int { + LOW = 128, + MEDIUM = 256, + HIGH = 512, + REALTIME = 1024, + LOW_EXT = LOW, + MEDIUM_EXT = MEDIUM, + HIGH_EXT = HIGH, + REALTIME_EXT = REALTIME, +} + +RasterizationOrderAMD :: enum c.int { + STRICT = 0, + RELAXED = 1, +} + +RayTracingShaderGroupTypeKHR :: enum c.int { + GENERAL = 0, + TRIANGLES_HIT_GROUP = 1, + PROCEDURAL_HIT_GROUP = 2, + GENERAL_NV = GENERAL, + TRIANGLES_HIT_GROUP_NV = TRIANGLES_HIT_GROUP, + PROCEDURAL_HIT_GROUP_NV = PROCEDURAL_HIT_GROUP, +} + +RenderPassCreateFlags :: distinct bit_set[RenderPassCreateFlag; Flags] +RenderPassCreateFlag :: enum Flags { + TRANSFORM_QCOM = 1, +} + +RenderingFlags :: distinct bit_set[RenderingFlag; Flags] +RenderingFlag :: enum Flags { + CONTENTS_SECONDARY_COMMAND_BUFFERS = 0, + SUSPENDING = 1, + RESUMING = 2, + CONTENTS_SECONDARY_COMMAND_BUFFERS_KHR = CONTENTS_SECONDARY_COMMAND_BUFFERS, + SUSPENDING_KHR = SUSPENDING, + RESUMING_KHR = RESUMING, +} + +ResolveModeFlags :: distinct bit_set[ResolveModeFlag; Flags] +ResolveModeFlag :: enum Flags { + SAMPLE_ZERO = 0, + AVERAGE = 1, + MIN = 2, + MAX = 3, + SAMPLE_ZERO_KHR = SAMPLE_ZERO, + AVERAGE_KHR = AVERAGE, + MIN_KHR = MIN, + MAX_KHR = MAX, +} + +ResolveModeFlags_NONE :: ResolveModeFlags{} + + +Result :: enum c.int { + SUCCESS = 0, + NOT_READY = 1, + TIMEOUT = 2, + EVENT_SET = 3, + EVENT_RESET = 4, + INCOMPLETE = 5, + ERROR_OUT_OF_HOST_MEMORY = -1, + ERROR_OUT_OF_DEVICE_MEMORY = -2, + ERROR_INITIALIZATION_FAILED = -3, + ERROR_DEVICE_LOST = -4, + ERROR_MEMORY_MAP_FAILED = -5, + ERROR_LAYER_NOT_PRESENT = -6, + ERROR_EXTENSION_NOT_PRESENT = -7, + ERROR_FEATURE_NOT_PRESENT = -8, + ERROR_INCOMPATIBLE_DRIVER = -9, + ERROR_TOO_MANY_OBJECTS = -10, + ERROR_FORMAT_NOT_SUPPORTED = -11, + ERROR_FRAGMENTED_POOL = -12, + ERROR_UNKNOWN = -13, + ERROR_OUT_OF_POOL_MEMORY = -1000069000, + ERROR_INVALID_EXTERNAL_HANDLE = -1000072003, + ERROR_FRAGMENTATION = -1000161000, + ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000, + PIPELINE_COMPILE_REQUIRED = 1000297000, + ERROR_SURFACE_LOST_KHR = -1000000000, + ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001, + SUBOPTIMAL_KHR = 1000001003, + ERROR_OUT_OF_DATE_KHR = -1000001004, + ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001, + ERROR_VALIDATION_FAILED_EXT = -1000011001, + ERROR_INVALID_SHADER_NV = -1000012000, + ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000, + ERROR_NOT_PERMITTED_KHR = -1000174001, + ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000, + THREAD_IDLE_KHR = 1000268000, + THREAD_DONE_KHR = 1000268001, + OPERATION_DEFERRED_KHR = 1000268002, + OPERATION_NOT_DEFERRED_KHR = 1000268003, + ERROR_OUT_OF_POOL_MEMORY_KHR = ERROR_OUT_OF_POOL_MEMORY, + ERROR_INVALID_EXTERNAL_HANDLE_KHR = ERROR_INVALID_EXTERNAL_HANDLE, + ERROR_FRAGMENTATION_EXT = ERROR_FRAGMENTATION, + ERROR_NOT_PERMITTED_EXT = ERROR_NOT_PERMITTED_KHR, + ERROR_INVALID_DEVICE_ADDRESS_EXT = ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS, + ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS, + PIPELINE_COMPILE_REQUIRED_EXT = PIPELINE_COMPILE_REQUIRED, + ERROR_PIPELINE_COMPILE_REQUIRED_EXT = PIPELINE_COMPILE_REQUIRED, +} + +SampleCountFlags :: distinct bit_set[SampleCountFlag; Flags] +SampleCountFlag :: enum Flags { + _1 = 0, + _2 = 1, + _4 = 2, + _8 = 3, + _16 = 4, + _32 = 5, + _64 = 6, +} + +SamplerAddressMode :: enum c.int { + REPEAT = 0, + MIRRORED_REPEAT = 1, + CLAMP_TO_EDGE = 2, + CLAMP_TO_BORDER = 3, + MIRROR_CLAMP_TO_EDGE = 4, + MIRROR_CLAMP_TO_EDGE_KHR = MIRROR_CLAMP_TO_EDGE, +} + +SamplerCreateFlags :: distinct bit_set[SamplerCreateFlag; Flags] +SamplerCreateFlag :: enum Flags { + SUBSAMPLED_EXT = 0, + SUBSAMPLED_COARSE_RECONSTRUCTION_EXT = 1, +} + +SamplerMipmapMode :: enum c.int { + NEAREST = 0, + LINEAR = 1, +} + +SamplerReductionMode :: enum c.int { + WEIGHTED_AVERAGE = 0, + MIN = 1, + MAX = 2, + WEIGHTED_AVERAGE_EXT = WEIGHTED_AVERAGE, + MIN_EXT = MIN, + MAX_EXT = MAX, +} + +SamplerYcbcrModelConversion :: enum c.int { + RGB_IDENTITY = 0, + YCBCR_IDENTITY = 1, + YCBCR_709 = 2, + YCBCR_601 = 3, + YCBCR_2020 = 4, + RGB_IDENTITY_KHR = RGB_IDENTITY, + YCBCR_IDENTITY_KHR = YCBCR_IDENTITY, + YCBCR_709_KHR = YCBCR_709, + YCBCR_601_KHR = YCBCR_601, + YCBCR_2020_KHR = YCBCR_2020, +} + +SamplerYcbcrRange :: enum c.int { + ITU_FULL = 0, + ITU_NARROW = 1, + ITU_FULL_KHR = ITU_FULL, + ITU_NARROW_KHR = ITU_NARROW, +} + +ScopeNV :: enum c.int { + DEVICE = 1, + WORKGROUP = 2, + SUBGROUP = 3, + QUEUE_FAMILY = 5, +} + +SemaphoreImportFlags :: distinct bit_set[SemaphoreImportFlag; Flags] +SemaphoreImportFlag :: enum Flags { + TEMPORARY = 0, + TEMPORARY_KHR = TEMPORARY, +} + +SemaphoreType :: enum c.int { + BINARY = 0, + TIMELINE = 1, + BINARY_KHR = BINARY, + TIMELINE_KHR = TIMELINE, +} + +SemaphoreWaitFlags :: distinct bit_set[SemaphoreWaitFlag; Flags] +SemaphoreWaitFlag :: enum Flags { + ANY = 0, + ANY_KHR = ANY, +} + +ShaderCorePropertiesFlagsAMD :: distinct bit_set[ShaderCorePropertiesFlagAMD; Flags] +ShaderCorePropertiesFlagAMD :: enum Flags { +} + +ShaderFloatControlsIndependence :: enum c.int { + _32_BIT_ONLY = 0, + ALL = 1, + NONE = 2, + _32_BIT_ONLY_KHR = _32_BIT_ONLY, + ALL_KHR = ALL, +} + +ShaderGroupShaderKHR :: enum c.int { + GENERAL = 0, + CLOSEST_HIT = 1, + ANY_HIT = 2, + INTERSECTION = 3, +} + +ShaderInfoTypeAMD :: enum c.int { + STATISTICS = 0, + BINARY = 1, + DISASSEMBLY = 2, +} + +ShaderStageFlags :: distinct bit_set[ShaderStageFlag; Flags] +ShaderStageFlag :: enum Flags { + VERTEX = 0, + TESSELLATION_CONTROL = 1, + TESSELLATION_EVALUATION = 2, + GEOMETRY = 3, + FRAGMENT = 4, + COMPUTE = 5, + RAYGEN_KHR = 8, + ANY_HIT_KHR = 9, + CLOSEST_HIT_KHR = 10, + MISS_KHR = 11, + INTERSECTION_KHR = 12, + CALLABLE_KHR = 13, + TASK_NV = 6, + MESH_NV = 7, + SUBPASS_SHADING_HUAWEI = 14, + RAYGEN_NV = RAYGEN_KHR, + ANY_HIT_NV = ANY_HIT_KHR, + CLOSEST_HIT_NV = CLOSEST_HIT_KHR, + MISS_NV = MISS_KHR, + INTERSECTION_NV = INTERSECTION_KHR, + CALLABLE_NV = CALLABLE_KHR, + _MAX = 31, // Needed for the *_ALL bit set +} + +ShaderStageFlags_ALL_GRAPHICS :: ShaderStageFlags{.VERTEX, .TESSELLATION_CONTROL, .TESSELLATION_EVALUATION, .GEOMETRY, .FRAGMENT} +ShaderStageFlags_ALL :: ShaderStageFlags{.VERTEX, .TESSELLATION_CONTROL, .TESSELLATION_EVALUATION, .GEOMETRY, .FRAGMENT, .COMPUTE, .TASK_NV, .MESH_NV, .RAYGEN_KHR, .ANY_HIT_KHR, .CLOSEST_HIT_KHR, .MISS_KHR, .INTERSECTION_KHR, .CALLABLE_KHR, .SUBPASS_SHADING_HUAWEI, ShaderStageFlag(15), ShaderStageFlag(16), ShaderStageFlag(17), ShaderStageFlag(18), ShaderStageFlag(19), ShaderStageFlag(20), ShaderStageFlag(21), ShaderStageFlag(22), ShaderStageFlag(23), ShaderStageFlag(24), ShaderStageFlag(25), ShaderStageFlag(26), ShaderStageFlag(27), ShaderStageFlag(28), ShaderStageFlag(29), ShaderStageFlag(30)} + + +ShadingRatePaletteEntryNV :: enum c.int { + NO_INVOCATIONS = 0, + _16_INVOCATIONS_PER_PIXEL = 1, + _8_INVOCATIONS_PER_PIXEL = 2, + _4_INVOCATIONS_PER_PIXEL = 3, + _2_INVOCATIONS_PER_PIXEL = 4, + _1_INVOCATION_PER_PIXEL = 5, + _1_INVOCATION_PER_2X1_PIXELS = 6, + _1_INVOCATION_PER_1X2_PIXELS = 7, + _1_INVOCATION_PER_2X2_PIXELS = 8, + _1_INVOCATION_PER_4X2_PIXELS = 9, + _1_INVOCATION_PER_2X4_PIXELS = 10, + _1_INVOCATION_PER_4X4_PIXELS = 11, +} + +SharingMode :: enum c.int { + EXCLUSIVE = 0, + CONCURRENT = 1, +} + +SparseImageFormatFlags :: distinct bit_set[SparseImageFormatFlag; Flags] +SparseImageFormatFlag :: enum Flags { + SINGLE_MIPTAIL = 0, + ALIGNED_MIP_SIZE = 1, + NONSTANDARD_BLOCK_SIZE = 2, +} + +SparseMemoryBindFlags :: distinct bit_set[SparseMemoryBindFlag; Flags] +SparseMemoryBindFlag :: enum Flags { + METADATA = 0, +} + +StencilFaceFlags :: distinct bit_set[StencilFaceFlag; Flags] +StencilFaceFlag :: enum Flags { + FRONT = 0, + BACK = 1, +} + +StencilFaceFlags_FRONT_AND_BACK :: StencilFaceFlags{.FRONT, .BACK} + + +StencilOp :: enum c.int { + KEEP = 0, + ZERO = 1, + REPLACE = 2, + INCREMENT_AND_CLAMP = 3, + DECREMENT_AND_CLAMP = 4, + INVERT = 5, + INCREMENT_AND_WRAP = 6, + DECREMENT_AND_WRAP = 7, +} + +StructureType :: enum c.int { + APPLICATION_INFO = 0, + INSTANCE_CREATE_INFO = 1, + DEVICE_QUEUE_CREATE_INFO = 2, + DEVICE_CREATE_INFO = 3, + SUBMIT_INFO = 4, + MEMORY_ALLOCATE_INFO = 5, + MAPPED_MEMORY_RANGE = 6, + BIND_SPARSE_INFO = 7, + FENCE_CREATE_INFO = 8, + SEMAPHORE_CREATE_INFO = 9, + EVENT_CREATE_INFO = 10, + QUERY_POOL_CREATE_INFO = 11, + BUFFER_CREATE_INFO = 12, + BUFFER_VIEW_CREATE_INFO = 13, + IMAGE_CREATE_INFO = 14, + IMAGE_VIEW_CREATE_INFO = 15, + SHADER_MODULE_CREATE_INFO = 16, + PIPELINE_CACHE_CREATE_INFO = 17, + PIPELINE_SHADER_STAGE_CREATE_INFO = 18, + PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19, + PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20, + PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21, + PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22, + PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23, + PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24, + PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25, + PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26, + PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27, + GRAPHICS_PIPELINE_CREATE_INFO = 28, + COMPUTE_PIPELINE_CREATE_INFO = 29, + PIPELINE_LAYOUT_CREATE_INFO = 30, + SAMPLER_CREATE_INFO = 31, + DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32, + DESCRIPTOR_POOL_CREATE_INFO = 33, + DESCRIPTOR_SET_ALLOCATE_INFO = 34, + WRITE_DESCRIPTOR_SET = 35, + COPY_DESCRIPTOR_SET = 36, + FRAMEBUFFER_CREATE_INFO = 37, + RENDER_PASS_CREATE_INFO = 38, + COMMAND_POOL_CREATE_INFO = 39, + COMMAND_BUFFER_ALLOCATE_INFO = 40, + COMMAND_BUFFER_INHERITANCE_INFO = 41, + COMMAND_BUFFER_BEGIN_INFO = 42, + RENDER_PASS_BEGIN_INFO = 43, + BUFFER_MEMORY_BARRIER = 44, + IMAGE_MEMORY_BARRIER = 45, + MEMORY_BARRIER = 46, + LOADER_INSTANCE_CREATE_INFO = 47, + LOADER_DEVICE_CREATE_INFO = 48, + PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000, + BIND_BUFFER_MEMORY_INFO = 1000157000, + BIND_IMAGE_MEMORY_INFO = 1000157001, + PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000, + MEMORY_DEDICATED_REQUIREMENTS = 1000127000, + MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001, + MEMORY_ALLOCATE_FLAGS_INFO = 1000060000, + DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003, + DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004, + DEVICE_GROUP_SUBMIT_INFO = 1000060005, + DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006, + BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013, + BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014, + PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000, + DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001, + BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000, + IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001, + IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002, + MEMORY_REQUIREMENTS_2 = 1000146003, + SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004, + PHYSICAL_DEVICE_FEATURES_2 = 1000059000, + PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001, + FORMAT_PROPERTIES_2 = 1000059002, + IMAGE_FORMAT_PROPERTIES_2 = 1000059003, + PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004, + QUEUE_FAMILY_PROPERTIES_2 = 1000059005, + PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006, + SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007, + PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008, + PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000, + RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001, + IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002, + PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003, + RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000, + PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001, + PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002, + PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000, + PROTECTED_SUBMIT_INFO = 1000145000, + PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001, + PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002, + DEVICE_QUEUE_INFO_2 = 1000145003, + SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000, + SAMPLER_YCBCR_CONVERSION_INFO = 1000156001, + BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002, + IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003, + PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004, + SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005, + DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000, + PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000, + EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001, + PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002, + EXTERNAL_BUFFER_PROPERTIES = 1000071003, + PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004, + EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000, + EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001, + EXPORT_MEMORY_ALLOCATE_INFO = 1000072002, + PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000, + EXTERNAL_FENCE_PROPERTIES = 1000112001, + EXPORT_FENCE_CREATE_INFO = 1000113000, + EXPORT_SEMAPHORE_CREATE_INFO = 1000077000, + PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000, + EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001, + PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000, + DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001, + PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000, + PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49, + PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50, + PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51, + PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52, + IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000, + ATTACHMENT_DESCRIPTION_2 = 1000109000, + ATTACHMENT_REFERENCE_2 = 1000109001, + SUBPASS_DESCRIPTION_2 = 1000109002, + SUBPASS_DEPENDENCY_2 = 1000109003, + RENDER_PASS_CREATE_INFO_2 = 1000109004, + SUBPASS_BEGIN_INFO = 1000109005, + SUBPASS_END_INFO = 1000109006, + PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000, + PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000, + PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000, + PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000, + PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000, + DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000, + PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001, + PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002, + DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003, + DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004, + PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000, + SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001, + PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000, + IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000, + PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000, + SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001, + PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000, + PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000, + FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001, + FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002, + RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003, + PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000, + PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000, + PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000, + ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001, + ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002, + PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000, + PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000, + PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001, + SEMAPHORE_TYPE_CREATE_INFO = 1000207002, + TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003, + SEMAPHORE_WAIT_INFO = 1000207004, + SEMAPHORE_SIGNAL_INFO = 1000207005, + PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000, + BUFFER_DEVICE_ADDRESS_INFO = 1000244001, + BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002, + MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003, + DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004, + PHYSICAL_DEVICE_VULKAN_1_3_FEATURES = 53, + PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES = 54, + PIPELINE_CREATION_FEEDBACK_CREATE_INFO = 1000192000, + PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES = 1000215000, + PHYSICAL_DEVICE_TOOL_PROPERTIES = 1000245000, + PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES = 1000276000, + PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES = 1000295000, + DEVICE_PRIVATE_DATA_CREATE_INFO = 1000295001, + PRIVATE_DATA_SLOT_CREATE_INFO = 1000295002, + PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES = 1000297000, + MEMORY_BARRIER_2 = 1000314000, + BUFFER_MEMORY_BARRIER_2 = 1000314001, + IMAGE_MEMORY_BARRIER_2 = 1000314002, + DEPENDENCY_INFO = 1000314003, + SUBMIT_INFO_2 = 1000314004, + SEMAPHORE_SUBMIT_INFO = 1000314005, + COMMAND_BUFFER_SUBMIT_INFO = 1000314006, + PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES = 1000314007, + PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES = 1000325000, + PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES = 1000335000, + COPY_BUFFER_INFO_2 = 1000337000, + COPY_IMAGE_INFO_2 = 1000337001, + COPY_BUFFER_TO_IMAGE_INFO_2 = 1000337002, + COPY_IMAGE_TO_BUFFER_INFO_2 = 1000337003, + BLIT_IMAGE_INFO_2 = 1000337004, + RESOLVE_IMAGE_INFO_2 = 1000337005, + BUFFER_COPY_2 = 1000337006, + IMAGE_COPY_2 = 1000337007, + IMAGE_BLIT_2 = 1000337008, + BUFFER_IMAGE_COPY_2 = 1000337009, + IMAGE_RESOLVE_2 = 1000337010, + PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES = 1000225000, + PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO = 1000225001, + PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES = 1000225002, + PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES = 1000138000, + PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES = 1000138001, + WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK = 1000138002, + DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO = 1000138003, + PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES = 1000066000, + RENDERING_INFO = 1000044000, + RENDERING_ATTACHMENT_INFO = 1000044001, + PIPELINE_RENDERING_CREATE_INFO = 1000044002, + PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES = 1000044003, + COMMAND_BUFFER_INHERITANCE_RENDERING_INFO = 1000044004, + PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES = 1000280000, + PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES = 1000280001, + PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES = 1000281001, + FORMAT_PROPERTIES_3 = 1000360000, + PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES = 1000413000, + PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001, + DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002, + DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003, + SWAPCHAIN_CREATE_INFO_KHR = 1000001000, + PRESENT_INFO_KHR = 1000001001, + DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007, + IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008, + BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009, + ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010, + DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011, + DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012, + DISPLAY_MODE_CREATE_INFO_KHR = 1000002000, + DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001, + DISPLAY_PRESENT_INFO_KHR = 1000003000, + XLIB_SURFACE_CREATE_INFO_KHR = 1000004000, + XCB_SURFACE_CREATE_INFO_KHR = 1000005000, + WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000, + ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000, + WIN32_SURFACE_CREATE_INFO_KHR = 1000009000, + DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000, + PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000, + DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000, + DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001, + DEBUG_MARKER_MARKER_INFO_EXT = 1000022002, + VIDEO_PROFILE_KHR = 1000023000, + VIDEO_CAPABILITIES_KHR = 1000023001, + VIDEO_PICTURE_RESOURCE_KHR = 1000023002, + VIDEO_GET_MEMORY_PROPERTIES_KHR = 1000023003, + VIDEO_BIND_MEMORY_KHR = 1000023004, + VIDEO_SESSION_CREATE_INFO_KHR = 1000023005, + VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000023006, + VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR = 1000023007, + VIDEO_BEGIN_CODING_INFO_KHR = 1000023008, + VIDEO_END_CODING_INFO_KHR = 1000023009, + VIDEO_CODING_CONTROL_INFO_KHR = 1000023010, + VIDEO_REFERENCE_SLOT_KHR = 1000023011, + VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000023012, + VIDEO_PROFILES_KHR = 1000023013, + PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR = 1000023014, + VIDEO_FORMAT_PROPERTIES_KHR = 1000023015, + QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_2_KHR = 1000023016, + VIDEO_DECODE_INFO_KHR = 1000024000, + VIDEO_DECODE_CAPABILITIES_KHR = 1000024001, + DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000, + DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001, + DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002, + PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000, + PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001, + PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002, + CU_MODULE_CREATE_INFO_NVX = 1000029000, + CU_FUNCTION_CREATE_INFO_NVX = 1000029001, + CU_LAUNCH_INFO_NVX = 1000029002, + IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000, + IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001, + VIDEO_ENCODE_H264_CAPABILITIES_EXT = 1000038000, + VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000038001, + VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT = 1000038002, + VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT = 1000038003, + VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT = 1000038004, + VIDEO_ENCODE_H264_NALU_SLICE_EXT = 1000038005, + VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT = 1000038006, + VIDEO_ENCODE_H264_PROFILE_EXT = 1000038007, + VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT = 1000038008, + VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT = 1000038009, + VIDEO_ENCODE_H264_REFERENCE_LISTS_EXT = 1000038010, + VIDEO_ENCODE_H265_CAPABILITIES_EXT = 1000039000, + VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000039001, + VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT = 1000039002, + VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT = 1000039003, + VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT = 1000039004, + VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_EXT = 1000039005, + VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_EXT = 1000039006, + VIDEO_ENCODE_H265_PROFILE_EXT = 1000039007, + VIDEO_ENCODE_H265_REFERENCE_LISTS_EXT = 1000039008, + VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT = 1000039009, + VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT = 1000039010, + VIDEO_DECODE_H264_CAPABILITIES_EXT = 1000040000, + VIDEO_DECODE_H264_PICTURE_INFO_EXT = 1000040001, + VIDEO_DECODE_H264_MVC_EXT = 1000040002, + VIDEO_DECODE_H264_PROFILE_EXT = 1000040003, + VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000040004, + VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT = 1000040005, + VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT = 1000040006, + TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000, + RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006, + RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007, + ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008, + MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009, + STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000, + PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000, + EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000, + EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001, + IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000, + EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001, + WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000, + VALIDATION_FLAGS_EXT = 1000061000, + VI_SURFACE_CREATE_INFO_NN = 1000062000, + IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000, + PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001, + IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000, + EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001, + MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002, + MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003, + IMPORT_MEMORY_FD_INFO_KHR = 1000074000, + MEMORY_FD_PROPERTIES_KHR = 1000074001, + MEMORY_GET_FD_INFO_KHR = 1000074002, + WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000, + IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000, + EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001, + D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002, + SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003, + IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000, + SEMAPHORE_GET_FD_INFO_KHR = 1000079001, + PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000, + COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000, + PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001, + CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002, + PRESENT_REGIONS_KHR = 1000084000, + PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000, + SURFACE_CAPABILITIES_2_EXT = 1000090000, + DISPLAY_POWER_INFO_EXT = 1000091000, + DEVICE_EVENT_INFO_EXT = 1000091001, + DISPLAY_EVENT_INFO_EXT = 1000091002, + SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003, + PRESENT_TIMES_INFO_GOOGLE = 1000092000, + PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000, + PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000, + PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000, + PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001, + PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000, + PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001, + PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000, + PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001, + HDR_METADATA_EXT = 1000105000, + SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000, + IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000, + EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001, + FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002, + IMPORT_FENCE_FD_INFO_KHR = 1000115000, + FENCE_GET_FD_INFO_KHR = 1000115001, + PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000, + PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001, + QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002, + PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003, + ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004, + PERFORMANCE_COUNTER_KHR = 1000116005, + PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006, + PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000, + SURFACE_CAPABILITIES_2_KHR = 1000119001, + SURFACE_FORMAT_2_KHR = 1000119002, + DISPLAY_PROPERTIES_2_KHR = 1000121000, + DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001, + DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002, + DISPLAY_PLANE_INFO_2_KHR = 1000121003, + DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004, + IOS_SURFACE_CREATE_INFO_MVK = 1000122000, + MACOS_SURFACE_CREATE_INFO_MVK = 1000123000, + DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000, + DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001, + DEBUG_UTILS_LABEL_EXT = 1000128002, + DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003, + DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004, + ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000, + ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001, + ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002, + IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003, + MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004, + EXTERNAL_FORMAT_ANDROID = 1000129005, + ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006, + SAMPLE_LOCATIONS_INFO_EXT = 1000143000, + RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001, + PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002, + PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003, + MULTISAMPLE_PROPERTIES_EXT = 1000143004, + PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000, + PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001, + PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002, + PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000, + WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000150007, + ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000, + ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002, + ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003, + ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004, + ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005, + ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006, + ACCELERATION_STRUCTURE_VERSION_INFO_KHR = 1000150009, + COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010, + COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011, + COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012, + PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR = 1000150013, + PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR = 1000150014, + ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017, + ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR = 1000150020, + PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR = 1000347000, + PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR = 1000347001, + RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015, + RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016, + RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018, + PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR = 1000348013, + PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000, + PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000, + PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001, + DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000, + PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002, + IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003, + IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004, + IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005, + DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT = 1000158006, + VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000, + SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001, + PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR = 1000163000, + PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR = 1000163001, + PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000, + PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001, + PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002, + PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005, + RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000, + ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001, + GEOMETRY_NV = 1000165003, + GEOMETRY_TRIANGLES_NV = 1000165004, + GEOMETRY_AABB_NV = 1000165005, + BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006, + WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007, + ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008, + PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009, + RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011, + ACCELERATION_STRUCTURE_INFO_NV = 1000165012, + PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000, + PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001, + PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000, + FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001, + IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000, + MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001, + PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002, + PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000, + PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000, + CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000, + PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000, + VIDEO_DECODE_H265_CAPABILITIES_EXT = 1000187000, + VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000187001, + VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT = 1000187002, + VIDEO_DECODE_H265_PROFILE_EXT = 1000187003, + VIDEO_DECODE_H265_PICTURE_INFO_EXT = 1000187004, + VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT = 1000187005, + DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000, + PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000, + QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001, + DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000, + PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000, + PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001, + PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002, + PRESENT_FRAME_TOKEN_GGP = 1000191000, + PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000, + PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000, + PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001, + PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000, + PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000, + PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000, + PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002, + CHECKPOINT_DATA_NV = 1000206000, + QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001, + PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000, + QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000, + INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001, + PERFORMANCE_MARKER_INFO_INTEL = 1000210002, + PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003, + PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004, + PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005, + PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000, + DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000, + SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001, + IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000, + METAL_SURFACE_CREATE_INFO_EXT = 1000217000, + PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000, + PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001, + RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002, + FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000226000, + PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR = 1000226001, + PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR = 1000226002, + PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR = 1000226003, + PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR = 1000226004, + PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000, + PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000, + PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT = 1000234000, + PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000, + PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000, + MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001, + SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000, + PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000, + PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000, + BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002, + VALIDATION_FEATURES_EXT = 1000247000, + PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR = 1000248000, + PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000, + COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001, + PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002, + PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000, + PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001, + FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002, + PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000, + PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000, + PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT = 1000254000, + PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT = 1000254001, + PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT = 1000254002, + SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000, + SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002, + SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001, + HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000, + PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000, + PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001, + PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002, + PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000, + PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000, + PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000, + PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000, + PIPELINE_INFO_KHR = 1000269001, + PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002, + PIPELINE_EXECUTABLE_INFO_KHR = 1000269003, + PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004, + PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005, + PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000, + PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000, + GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001, + GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002, + INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003, + INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004, + GENERATED_COMMANDS_INFO_NV = 1000277005, + GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006, + PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007, + PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV = 1000278000, + COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV = 1000278001, + PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000, + COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000, + RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001, + PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT = 1000284000, + DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT = 1000284001, + DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT = 1000284002, + PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000, + PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001, + SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000, + PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001, + PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002, + PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000, + PRESENT_ID_KHR = 1000294000, + PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001, + VIDEO_ENCODE_INFO_KHR = 1000299000, + VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001, + VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR = 1000299002, + VIDEO_ENCODE_CAPABILITIES_KHR = 1000299003, + PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000, + DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001, + QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008, + CHECKPOINT_DATA_2_NV = 1000314009, + PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT = 1000320000, + PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT = 1000320001, + GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT = 1000320002, + PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR = 1000323000, + PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV = 1000326000, + PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV = 1000326001, + PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV = 1000326002, + ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV = 1000327000, + PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV = 1000327001, + ACCELERATION_STRUCTURE_MOTION_INFO_NV = 1000327002, + PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT = 1000330000, + PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000, + PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001, + COPY_COMMAND_TRANSFORM_INFO_QCOM = 1000333000, + PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000, + PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000, + PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = 1000342000, + PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT = 1000344000, + DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000, + PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = 1000351000, + MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = 1000351002, + PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT = 1000352000, + VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT = 1000352001, + VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT = 1000352002, + PHYSICAL_DEVICE_DRM_PROPERTIES_EXT = 1000353000, + PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT = 1000355000, + PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT = 1000355001, + PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT = 1000356000, + IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364000, + MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA = 1000364001, + MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364002, + IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA = 1000365000, + SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA = 1000365001, + BUFFER_COLLECTION_CREATE_INFO_FUCHSIA = 1000366000, + IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA = 1000366001, + BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA = 1000366002, + BUFFER_COLLECTION_PROPERTIES_FUCHSIA = 1000366003, + BUFFER_CONSTRAINTS_INFO_FUCHSIA = 1000366004, + BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA = 1000366005, + IMAGE_CONSTRAINTS_INFO_FUCHSIA = 1000366006, + IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA = 1000366007, + SYSMEM_COLOR_SPACE_FUCHSIA = 1000366008, + BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA = 1000366009, + SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI = 1000369000, + PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI = 1000369001, + PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI = 1000369002, + PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI = 1000370000, + MEMORY_GET_REMOTE_ADDRESS_INFO_NV = 1000371000, + PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001, + PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT = 1000377000, + SCREEN_SURFACE_CREATE_INFO_QNX = 1000378000, + PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT = 1000381000, + PIPELINE_COLOR_WRITE_CREATE_INFO_EXT = 1000381001, + PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT = 1000382000, + PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT = 1000391000, + IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT = 1000391001, + PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000, + PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001, + PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = 1000393000, + PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000, + SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001, + PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000, + PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000, + DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = 1000420001, + DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002, + PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000, + PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001, + SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002, + PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000, + PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, + PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, + DEBUG_REPORT_CREATE_INFO_EXT = DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT, + RENDERING_INFO_KHR = RENDERING_INFO, + RENDERING_ATTACHMENT_INFO_KHR = RENDERING_ATTACHMENT_INFO, + PIPELINE_RENDERING_CREATE_INFO_KHR = PIPELINE_RENDERING_CREATE_INFO, + PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES, + COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = COMMAND_BUFFER_INHERITANCE_RENDERING_INFO, + ATTACHMENT_SAMPLE_COUNT_INFO_NV = ATTACHMENT_SAMPLE_COUNT_INFO_AMD, + RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = RENDER_PASS_MULTIVIEW_CREATE_INFO, + PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = PHYSICAL_DEVICE_MULTIVIEW_FEATURES, + PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES, + PHYSICAL_DEVICE_FEATURES_2_KHR = PHYSICAL_DEVICE_FEATURES_2, + PHYSICAL_DEVICE_PROPERTIES_2_KHR = PHYSICAL_DEVICE_PROPERTIES_2, + FORMAT_PROPERTIES_2_KHR = FORMAT_PROPERTIES_2, + IMAGE_FORMAT_PROPERTIES_2_KHR = IMAGE_FORMAT_PROPERTIES_2, + PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2, + QUEUE_FAMILY_PROPERTIES_2_KHR = QUEUE_FAMILY_PROPERTIES_2, + PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = PHYSICAL_DEVICE_MEMORY_PROPERTIES_2, + SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = SPARSE_IMAGE_FORMAT_PROPERTIES_2, + PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2, + MEMORY_ALLOCATE_FLAGS_INFO_KHR = MEMORY_ALLOCATE_FLAGS_INFO, + DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = DEVICE_GROUP_RENDER_PASS_BEGIN_INFO, + DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO, + DEVICE_GROUP_SUBMIT_INFO_KHR = DEVICE_GROUP_SUBMIT_INFO, + DEVICE_GROUP_BIND_SPARSE_INFO_KHR = DEVICE_GROUP_BIND_SPARSE_INFO, + BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO, + BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO, + PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES, + PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = PHYSICAL_DEVICE_GROUP_PROPERTIES, + DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = DEVICE_GROUP_DEVICE_CREATE_INFO, + PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO, + EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = EXTERNAL_IMAGE_FORMAT_PROPERTIES, + PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO, + EXTERNAL_BUFFER_PROPERTIES_KHR = EXTERNAL_BUFFER_PROPERTIES, + PHYSICAL_DEVICE_ID_PROPERTIES_KHR = PHYSICAL_DEVICE_ID_PROPERTIES, + EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = EXTERNAL_MEMORY_BUFFER_CREATE_INFO, + EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = EXTERNAL_MEMORY_IMAGE_CREATE_INFO, + EXPORT_MEMORY_ALLOCATE_INFO_KHR = EXPORT_MEMORY_ALLOCATE_INFO, + PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO, + EXTERNAL_SEMAPHORE_PROPERTIES_KHR = EXTERNAL_SEMAPHORE_PROPERTIES, + EXPORT_SEMAPHORE_CREATE_INFO_KHR = EXPORT_SEMAPHORE_CREATE_INFO, + PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, + PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, + PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, + DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, + SURFACE_CAPABILITIES2_EXT = SURFACE_CAPABILITIES_2_EXT, + PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES, + FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = FRAMEBUFFER_ATTACHMENTS_CREATE_INFO, + FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = FRAMEBUFFER_ATTACHMENT_IMAGE_INFO, + RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = RENDER_PASS_ATTACHMENT_BEGIN_INFO, + ATTACHMENT_DESCRIPTION_2_KHR = ATTACHMENT_DESCRIPTION_2, + ATTACHMENT_REFERENCE_2_KHR = ATTACHMENT_REFERENCE_2, + SUBPASS_DESCRIPTION_2_KHR = SUBPASS_DESCRIPTION_2, + SUBPASS_DEPENDENCY_2_KHR = SUBPASS_DEPENDENCY_2, + RENDER_PASS_CREATE_INFO_2_KHR = RENDER_PASS_CREATE_INFO_2, + SUBPASS_BEGIN_INFO_KHR = SUBPASS_BEGIN_INFO, + SUBPASS_END_INFO_KHR = SUBPASS_END_INFO, + PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO, + EXTERNAL_FENCE_PROPERTIES_KHR = EXTERNAL_FENCE_PROPERTIES, + EXPORT_FENCE_CREATE_INFO_KHR = EXPORT_FENCE_CREATE_INFO, + PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES, + RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO, + IMAGE_VIEW_USAGE_CREATE_INFO_KHR = IMAGE_VIEW_USAGE_CREATE_INFO, + PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO, + PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, + PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR, + MEMORY_DEDICATED_REQUIREMENTS_KHR = MEMORY_DEDICATED_REQUIREMENTS, + MEMORY_DEDICATED_ALLOCATE_INFO_KHR = MEMORY_DEDICATED_ALLOCATE_INFO, + PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES, + SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = SAMPLER_REDUCTION_MODE_CREATE_INFO, + PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES, + PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES, + WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK, + DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO, + BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = BUFFER_MEMORY_REQUIREMENTS_INFO_2, + IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = IMAGE_MEMORY_REQUIREMENTS_INFO_2, + IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2, + MEMORY_REQUIREMENTS_2_KHR = MEMORY_REQUIREMENTS_2, + SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = SPARSE_IMAGE_MEMORY_REQUIREMENTS_2, + IMAGE_FORMAT_LIST_CREATE_INFO_KHR = IMAGE_FORMAT_LIST_CREATE_INFO, + SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = SAMPLER_YCBCR_CONVERSION_CREATE_INFO, + SAMPLER_YCBCR_CONVERSION_INFO_KHR = SAMPLER_YCBCR_CONVERSION_INFO, + BIND_IMAGE_PLANE_MEMORY_INFO_KHR = BIND_IMAGE_PLANE_MEMORY_INFO, + IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO, + PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, + SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES, + BIND_BUFFER_MEMORY_INFO_KHR = BIND_BUFFER_MEMORY_INFO, + BIND_IMAGE_MEMORY_INFO_KHR = BIND_IMAGE_MEMORY_INFO, + DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO, + PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES, + PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES, + DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO, + DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT, + PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES, + DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = DESCRIPTOR_SET_LAYOUT_SUPPORT, + DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR, + PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES, + PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES, + PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES, + PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = PIPELINE_CREATION_FEEDBACK_CREATE_INFO, + PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = PHYSICAL_DEVICE_DRIVER_PROPERTIES, + PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES, + PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES, + SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE, + PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES, + PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES, + SEMAPHORE_TYPE_CREATE_INFO_KHR = SEMAPHORE_TYPE_CREATE_INFO, + TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = TIMELINE_SEMAPHORE_SUBMIT_INFO, + SEMAPHORE_WAIT_INFO_KHR = SEMAPHORE_WAIT_INFO, + SEMAPHORE_SIGNAL_INFO_KHR = SEMAPHORE_SIGNAL_INFO, + QUERY_POOL_CREATE_INFO_INTEL = QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL, + PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES, + PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR = PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES, + PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES, + PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES, + PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO, + PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES, + PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES, + ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = ATTACHMENT_REFERENCE_STENCIL_LAYOUT, + ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT, + PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT, + BUFFER_DEVICE_ADDRESS_INFO_EXT = BUFFER_DEVICE_ADDRESS_INFO, + PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = PHYSICAL_DEVICE_TOOL_PROPERTIES, + IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = IMAGE_STENCIL_USAGE_CREATE_INFO, + PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES, + PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES, + BUFFER_DEVICE_ADDRESS_INFO_KHR = BUFFER_DEVICE_ADDRESS_INFO, + BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO, + MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO, + DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO, + PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES, + PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES, + PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES, + PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES, + PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES, + PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES, + DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = DEVICE_PRIVATE_DATA_CREATE_INFO, + PRIVATE_DATA_SLOT_CREATE_INFO_EXT = PRIVATE_DATA_SLOT_CREATE_INFO, + PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES, + MEMORY_BARRIER_2_KHR = MEMORY_BARRIER_2, + BUFFER_MEMORY_BARRIER_2_KHR = BUFFER_MEMORY_BARRIER_2, + IMAGE_MEMORY_BARRIER_2_KHR = IMAGE_MEMORY_BARRIER_2, + DEPENDENCY_INFO_KHR = DEPENDENCY_INFO, + SUBMIT_INFO_2_KHR = SUBMIT_INFO_2, + SEMAPHORE_SUBMIT_INFO_KHR = SEMAPHORE_SUBMIT_INFO, + COMMAND_BUFFER_SUBMIT_INFO_KHR = COMMAND_BUFFER_SUBMIT_INFO, + PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR = PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES, + PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR = PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES, + PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES, + COPY_BUFFER_INFO_2_KHR = COPY_BUFFER_INFO_2, + COPY_IMAGE_INFO_2_KHR = COPY_IMAGE_INFO_2, + COPY_BUFFER_TO_IMAGE_INFO_2_KHR = COPY_BUFFER_TO_IMAGE_INFO_2, + COPY_IMAGE_TO_BUFFER_INFO_2_KHR = COPY_IMAGE_TO_BUFFER_INFO_2, + BLIT_IMAGE_INFO_2_KHR = BLIT_IMAGE_INFO_2, + RESOLVE_IMAGE_INFO_2_KHR = RESOLVE_IMAGE_INFO_2, + BUFFER_COPY_2_KHR = BUFFER_COPY_2, + IMAGE_COPY_2_KHR = IMAGE_COPY_2, + IMAGE_BLIT_2_KHR = IMAGE_BLIT_2, + BUFFER_IMAGE_COPY_2_KHR = BUFFER_IMAGE_COPY_2, + IMAGE_RESOLVE_2_KHR = IMAGE_RESOLVE_2, + FORMAT_PROPERTIES_3_KHR = FORMAT_PROPERTIES_3, + PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR, + QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR, + PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR = PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES, + PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES, + DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = DEVICE_BUFFER_MEMORY_REQUIREMENTS, + DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = DEVICE_IMAGE_MEMORY_REQUIREMENTS, +} + +SubgroupFeatureFlags :: distinct bit_set[SubgroupFeatureFlag; Flags] +SubgroupFeatureFlag :: enum Flags { + BASIC = 0, + VOTE = 1, + ARITHMETIC = 2, + BALLOT = 3, + SHUFFLE = 4, + SHUFFLE_RELATIVE = 5, + CLUSTERED = 6, + QUAD = 7, + PARTITIONED_NV = 8, +} + +SubmitFlags :: distinct bit_set[SubmitFlag; Flags] +SubmitFlag :: enum Flags { + PROTECTED = 0, + PROTECTED_KHR = PROTECTED, +} + +SubpassContents :: enum c.int { + INLINE = 0, + SECONDARY_COMMAND_BUFFERS = 1, +} + +SubpassDescriptionFlags :: distinct bit_set[SubpassDescriptionFlag; Flags] +SubpassDescriptionFlag :: enum Flags { + PER_VIEW_ATTRIBUTES_NVX = 0, + PER_VIEW_POSITION_X_ONLY_NVX = 1, + FRAGMENT_REGION_QCOM = 2, + SHADER_RESOLVE_QCOM = 3, + RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_ARM = 4, + RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_ARM = 5, + RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_ARM = 6, +} + +SurfaceCounterFlagsEXT :: distinct bit_set[SurfaceCounterFlagEXT; Flags] +SurfaceCounterFlagEXT :: enum Flags { + VBLANK = 0, +} + +SurfaceTransformFlagsKHR :: distinct bit_set[SurfaceTransformFlagKHR; Flags] +SurfaceTransformFlagKHR :: enum Flags { + IDENTITY = 0, + ROTATE_90 = 1, + ROTATE_180 = 2, + ROTATE_270 = 3, + HORIZONTAL_MIRROR = 4, + HORIZONTAL_MIRROR_ROTATE_90 = 5, + HORIZONTAL_MIRROR_ROTATE_180 = 6, + HORIZONTAL_MIRROR_ROTATE_270 = 7, + INHERIT = 8, +} + +SwapchainCreateFlagsKHR :: distinct bit_set[SwapchainCreateFlagKHR; Flags] +SwapchainCreateFlagKHR :: enum Flags { + SPLIT_INSTANCE_BIND_REGIONS = 0, + PROTECTED = 1, + MUTABLE_FORMAT = 2, +} + +SystemAllocationScope :: enum c.int { + COMMAND = 0, + OBJECT = 1, + CACHE = 2, + DEVICE = 3, + INSTANCE = 4, +} + +TessellationDomainOrigin :: enum c.int { + UPPER_LEFT = 0, + LOWER_LEFT = 1, + UPPER_LEFT_KHR = UPPER_LEFT, + LOWER_LEFT_KHR = LOWER_LEFT, +} + +TimeDomainEXT :: enum c.int { + DEVICE = 0, + CLOCK_MONOTONIC = 1, + CLOCK_MONOTONIC_RAW = 2, + QUERY_PERFORMANCE_COUNTER = 3, +} + +ToolPurposeFlags :: distinct bit_set[ToolPurposeFlag; Flags] +ToolPurposeFlag :: enum Flags { + VALIDATION = 0, + PROFILING = 1, + TRACING = 2, + ADDITIONAL_FEATURES = 3, + MODIFYING_FEATURES = 4, + DEBUG_REPORTING_EXT = 5, + DEBUG_MARKERS_EXT = 6, + VALIDATION_EXT = VALIDATION, + PROFILING_EXT = PROFILING, + TRACING_EXT = TRACING, + ADDITIONAL_FEATURES_EXT = ADDITIONAL_FEATURES, + MODIFYING_FEATURES_EXT = MODIFYING_FEATURES, +} + +ValidationCacheHeaderVersionEXT :: enum c.int { + ONE = 1, +} + +ValidationCheckEXT :: enum c.int { + ALL = 0, + SHADERS = 1, +} + +ValidationFeatureDisableEXT :: enum c.int { + ALL = 0, + SHADERS = 1, + THREAD_SAFETY = 2, + API_PARAMETERS = 3, + OBJECT_LIFETIMES = 4, + CORE_CHECKS = 5, + UNIQUE_HANDLES = 6, + SHADER_VALIDATION_CACHE = 7, +} + +ValidationFeatureEnableEXT :: enum c.int { + GPU_ASSISTED = 0, + GPU_ASSISTED_RESERVE_BINDING_SLOT = 1, + BEST_PRACTICES = 2, + DEBUG_PRINTF = 3, + SYNCHRONIZATION_VALIDATION = 4, +} + +VendorId :: enum c.int { + VIV = 0x10001, + VSI = 0x10002, + KAZAN = 0x10003, + CODEPLAY = 0x10004, + MESA = 0x10005, + POCL = 0x10006, +} + +VertexInputRate :: enum c.int { + VERTEX = 0, + INSTANCE = 1, +} + +ViewportCoordinateSwizzleNV :: enum c.int { + POSITIVE_X = 0, + NEGATIVE_X = 1, + POSITIVE_Y = 2, + NEGATIVE_Y = 3, + POSITIVE_Z = 4, + NEGATIVE_Z = 5, + POSITIVE_W = 6, + NEGATIVE_W = 7, +} + +AccelerationStructureMotionInfoFlagsNV :: distinct bit_set[AccelerationStructureMotionInfoFlagNV; Flags] +AccelerationStructureMotionInfoFlagNV :: enum u32 {} +AccelerationStructureMotionInstanceFlagsNV :: distinct bit_set[AccelerationStructureMotionInstanceFlagNV; Flags] +AccelerationStructureMotionInstanceFlagNV :: enum u32 {} +BufferViewCreateFlags :: distinct bit_set[BufferViewCreateFlag; Flags] +BufferViewCreateFlag :: enum u32 {} +CommandPoolTrimFlags :: distinct bit_set[CommandPoolTrimFlag; Flags] +CommandPoolTrimFlag :: enum u32 {} +DebugUtilsMessengerCallbackDataFlagsEXT :: distinct bit_set[DebugUtilsMessengerCallbackDataFlagEXT; Flags] +DebugUtilsMessengerCallbackDataFlagEXT :: enum u32 {} +DebugUtilsMessengerCreateFlagsEXT :: distinct bit_set[DebugUtilsMessengerCreateFlagEXT; Flags] +DebugUtilsMessengerCreateFlagEXT :: enum u32 {} +DescriptorPoolResetFlags :: distinct bit_set[DescriptorPoolResetFlag; Flags] +DescriptorPoolResetFlag :: enum u32 {} +DescriptorUpdateTemplateCreateFlags :: distinct bit_set[DescriptorUpdateTemplateCreateFlag; Flags] +DescriptorUpdateTemplateCreateFlag :: enum u32 {} +DeviceCreateFlags :: distinct bit_set[DeviceCreateFlag; Flags] +DeviceCreateFlag :: enum u32 {} +DeviceMemoryReportFlagsEXT :: distinct bit_set[DeviceMemoryReportFlagEXT; Flags] +DeviceMemoryReportFlagEXT :: enum u32 {} +DisplayModeCreateFlagsKHR :: distinct bit_set[DisplayModeCreateFlagKHR; Flags] +DisplayModeCreateFlagKHR :: enum u32 {} +DisplaySurfaceCreateFlagsKHR :: distinct bit_set[DisplaySurfaceCreateFlagKHR; Flags] +DisplaySurfaceCreateFlagKHR :: enum u32 {} +HeadlessSurfaceCreateFlagsEXT :: distinct bit_set[HeadlessSurfaceCreateFlagEXT; Flags] +HeadlessSurfaceCreateFlagEXT :: enum u32 {} +IOSSurfaceCreateFlagsMVK :: distinct bit_set[IOSSurfaceCreateFlagMVK; Flags] +IOSSurfaceCreateFlagMVK :: enum u32 {} +MacOSSurfaceCreateFlagsMVK :: distinct bit_set[MacOSSurfaceCreateFlagMVK; Flags] +MacOSSurfaceCreateFlagMVK :: enum u32 {} +MemoryMapFlags :: distinct bit_set[MemoryMapFlag; Flags] +MemoryMapFlag :: enum u32 {} +MetalSurfaceCreateFlagsEXT :: distinct bit_set[MetalSurfaceCreateFlagEXT; Flags] +MetalSurfaceCreateFlagEXT :: enum u32 {} +PipelineCoverageModulationStateCreateFlagsNV :: distinct bit_set[PipelineCoverageModulationStateCreateFlagNV; Flags] +PipelineCoverageModulationStateCreateFlagNV :: enum u32 {} +PipelineCoverageReductionStateCreateFlagsNV :: distinct bit_set[PipelineCoverageReductionStateCreateFlagNV; Flags] +PipelineCoverageReductionStateCreateFlagNV :: enum u32 {} +PipelineCoverageToColorStateCreateFlagsNV :: distinct bit_set[PipelineCoverageToColorStateCreateFlagNV; Flags] +PipelineCoverageToColorStateCreateFlagNV :: enum u32 {} +PipelineDiscardRectangleStateCreateFlagsEXT :: distinct bit_set[PipelineDiscardRectangleStateCreateFlagEXT; Flags] +PipelineDiscardRectangleStateCreateFlagEXT :: enum u32 {} +PipelineDynamicStateCreateFlags :: distinct bit_set[PipelineDynamicStateCreateFlag; Flags] +PipelineDynamicStateCreateFlag :: enum u32 {} +PipelineInputAssemblyStateCreateFlags :: distinct bit_set[PipelineInputAssemblyStateCreateFlag; Flags] +PipelineInputAssemblyStateCreateFlag :: enum u32 {} +PipelineMultisampleStateCreateFlags :: distinct bit_set[PipelineMultisampleStateCreateFlag; Flags] +PipelineMultisampleStateCreateFlag :: enum u32 {} +PipelineRasterizationConservativeStateCreateFlagsEXT :: distinct bit_set[PipelineRasterizationConservativeStateCreateFlagEXT; Flags] +PipelineRasterizationConservativeStateCreateFlagEXT :: enum u32 {} +PipelineRasterizationDepthClipStateCreateFlagsEXT :: distinct bit_set[PipelineRasterizationDepthClipStateCreateFlagEXT; Flags] +PipelineRasterizationDepthClipStateCreateFlagEXT :: enum u32 {} +PipelineRasterizationStateCreateFlags :: distinct bit_set[PipelineRasterizationStateCreateFlag; Flags] +PipelineRasterizationStateCreateFlag :: enum u32 {} +PipelineRasterizationStateStreamCreateFlagsEXT :: distinct bit_set[PipelineRasterizationStateStreamCreateFlagEXT; Flags] +PipelineRasterizationStateStreamCreateFlagEXT :: enum u32 {} +PipelineTessellationStateCreateFlags :: distinct bit_set[PipelineTessellationStateCreateFlag; Flags] +PipelineTessellationStateCreateFlag :: enum u32 {} +PipelineVertexInputStateCreateFlags :: distinct bit_set[PipelineVertexInputStateCreateFlag; Flags] +PipelineVertexInputStateCreateFlag :: enum u32 {} +PipelineViewportStateCreateFlags :: distinct bit_set[PipelineViewportStateCreateFlag; Flags] +PipelineViewportStateCreateFlag :: enum u32 {} +PipelineViewportSwizzleStateCreateFlagsNV :: distinct bit_set[PipelineViewportSwizzleStateCreateFlagNV; Flags] +PipelineViewportSwizzleStateCreateFlagNV :: enum u32 {} +PrivateDataSlotCreateFlags :: distinct bit_set[PrivateDataSlotCreateFlag; Flags] +PrivateDataSlotCreateFlag :: enum u32 {} +QueryPoolCreateFlags :: distinct bit_set[QueryPoolCreateFlag; Flags] +QueryPoolCreateFlag :: enum u32 {} +SemaphoreCreateFlags :: distinct bit_set[SemaphoreCreateFlag; Flags] +SemaphoreCreateFlag :: enum u32 {} +ShaderModuleCreateFlags :: distinct bit_set[ShaderModuleCreateFlag; Flags] +ShaderModuleCreateFlag :: enum u32 {} +ValidationCacheCreateFlagsEXT :: distinct bit_set[ValidationCacheCreateFlagEXT; Flags] +ValidationCacheCreateFlagEXT :: enum u32 {} +WaylandSurfaceCreateFlagsKHR :: distinct bit_set[WaylandSurfaceCreateFlagKHR; Flags] +WaylandSurfaceCreateFlagKHR :: enum u32 {} +Win32SurfaceCreateFlagsKHR :: distinct bit_set[Win32SurfaceCreateFlagKHR; Flags] +Win32SurfaceCreateFlagKHR :: enum u32 {} + + diff --git a/vendor/vulkan/procedures.odin b/vendor/vulkan/procedures.odin index 02cfa9dbf..8459a5e06 100644 --- a/vendor/vulkan/procedures.odin +++ b/vendor/vulkan/procedures.odin @@ -1,3334 +1,3342 @@ -// -// Vulkan wrapper generated from "https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/master/include/vulkan/vulkan_core.h" -// -package vulkan - -import "core:c" - -// Loader Procedure Types -ProcCreateInstance :: #type proc "system" (pCreateInfo: ^InstanceCreateInfo, pAllocator: ^AllocationCallbacks, pInstance: ^Instance) -> Result -ProcDebugUtilsMessengerCallbackEXT :: #type proc "system" (messageSeverity: DebugUtilsMessageSeverityFlagsEXT, messageTypes: DebugUtilsMessageTypeFlagsEXT, pCallbackData: ^DebugUtilsMessengerCallbackDataEXT, pUserData: rawptr) -> b32 -ProcDeviceMemoryReportCallbackEXT :: #type proc "system" (pCallbackData: ^DeviceMemoryReportCallbackDataEXT, pUserData: rawptr) -ProcEnumerateInstanceExtensionProperties :: #type proc "system" (pLayerName: cstring, pPropertyCount: ^u32, pProperties: [^]ExtensionProperties) -> Result -ProcEnumerateInstanceLayerProperties :: #type proc "system" (pPropertyCount: ^u32, pProperties: [^]LayerProperties) -> Result -ProcEnumerateInstanceVersion :: #type proc "system" (pApiVersion: ^u32) -> Result - -// Misc Procedure Types -ProcAllocationFunction :: #type proc "system" (pUserData: rawptr, size: int, alignment: int, allocationScope: SystemAllocationScope) -> rawptr -ProcDebugReportCallbackEXT :: #type proc "system" (flags: DebugReportFlagsEXT, objectType: DebugReportObjectTypeEXT, object: u64, location: int, messageCode: i32, pLayerPrefix: cstring, pMessage: cstring, pUserData: rawptr) -> b32 -ProcFreeFunction :: #type proc "system" (pUserData: rawptr, pMemory: rawptr) -ProcInternalAllocationNotification :: #type proc "system" (pUserData: rawptr, size: int, allocationType: InternalAllocationType, allocationScope: SystemAllocationScope) -ProcInternalFreeNotification :: #type proc "system" (pUserData: rawptr, size: int, allocationType: InternalAllocationType, allocationScope: SystemAllocationScope) -ProcReallocationFunction :: #type proc "system" (pUserData: rawptr, pOriginal: rawptr, size: int, alignment: int, allocationScope: SystemAllocationScope) -> rawptr -ProcVoidFunction :: #type proc "system" () - -// Instance Procedure Types -ProcAcquireDrmDisplayEXT :: #type proc "system" (physicalDevice: PhysicalDevice, drmFd: i32, display: DisplayKHR) -> Result -ProcAcquireWinrtDisplayNV :: #type proc "system" (physicalDevice: PhysicalDevice, display: DisplayKHR) -> Result -ProcCreateDebugReportCallbackEXT :: #type proc "system" (instance: Instance, pCreateInfo: ^DebugReportCallbackCreateInfoEXT, pAllocator: ^AllocationCallbacks, pCallback: ^DebugReportCallbackEXT) -> Result -ProcCreateDebugUtilsMessengerEXT :: #type proc "system" (instance: Instance, pCreateInfo: ^DebugUtilsMessengerCreateInfoEXT, pAllocator: ^AllocationCallbacks, pMessenger: ^DebugUtilsMessengerEXT) -> Result -ProcCreateDevice :: #type proc "system" (physicalDevice: PhysicalDevice, pCreateInfo: ^DeviceCreateInfo, pAllocator: ^AllocationCallbacks, pDevice: ^Device) -> Result -ProcCreateDisplayModeKHR :: #type proc "system" (physicalDevice: PhysicalDevice, display: DisplayKHR, pCreateInfo: ^DisplayModeCreateInfoKHR, pAllocator: ^AllocationCallbacks, pMode: ^DisplayModeKHR) -> Result -ProcCreateDisplayPlaneSurfaceKHR :: #type proc "system" (instance: Instance, pCreateInfo: ^DisplaySurfaceCreateInfoKHR, pAllocator: ^AllocationCallbacks, pSurface: ^SurfaceKHR) -> Result -ProcCreateHeadlessSurfaceEXT :: #type proc "system" (instance: Instance, pCreateInfo: ^HeadlessSurfaceCreateInfoEXT, pAllocator: ^AllocationCallbacks, pSurface: ^SurfaceKHR) -> Result -ProcCreateIOSSurfaceMVK :: #type proc "system" (instance: Instance, pCreateInfo: ^IOSSurfaceCreateInfoMVK, pAllocator: ^AllocationCallbacks, pSurface: ^SurfaceKHR) -> Result -ProcCreateMacOSSurfaceMVK :: #type proc "system" (instance: Instance, pCreateInfo: ^MacOSSurfaceCreateInfoMVK, pAllocator: ^AllocationCallbacks, pSurface: ^SurfaceKHR) -> Result -ProcCreateMetalSurfaceEXT :: #type proc "system" (instance: Instance, pCreateInfo: ^MetalSurfaceCreateInfoEXT, pAllocator: ^AllocationCallbacks, pSurface: ^SurfaceKHR) -> Result -ProcCreateWin32SurfaceKHR :: #type proc "system" (instance: Instance, pCreateInfo: ^Win32SurfaceCreateInfoKHR, pAllocator: ^AllocationCallbacks, pSurface: ^SurfaceKHR) -> Result -ProcDebugReportMessageEXT :: #type proc "system" (instance: Instance, flags: DebugReportFlagsEXT, objectType: DebugReportObjectTypeEXT, object: u64, location: int, messageCode: i32, pLayerPrefix: cstring, pMessage: cstring) -ProcDestroyDebugReportCallbackEXT :: #type proc "system" (instance: Instance, callback: DebugReportCallbackEXT, pAllocator: ^AllocationCallbacks) -ProcDestroyDebugUtilsMessengerEXT :: #type proc "system" (instance: Instance, messenger: DebugUtilsMessengerEXT, pAllocator: ^AllocationCallbacks) -ProcDestroyInstance :: #type proc "system" (instance: Instance, pAllocator: ^AllocationCallbacks) -ProcDestroySurfaceKHR :: #type proc "system" (instance: Instance, surface: SurfaceKHR, pAllocator: ^AllocationCallbacks) -ProcEnumerateDeviceExtensionProperties :: #type proc "system" (physicalDevice: PhysicalDevice, pLayerName: cstring, pPropertyCount: ^u32, pProperties: [^]ExtensionProperties) -> Result -ProcEnumerateDeviceLayerProperties :: #type proc "system" (physicalDevice: PhysicalDevice, pPropertyCount: ^u32, pProperties: [^]LayerProperties) -> Result -ProcEnumeratePhysicalDeviceGroups :: #type proc "system" (instance: Instance, pPhysicalDeviceGroupCount: ^u32, pPhysicalDeviceGroupProperties: [^]PhysicalDeviceGroupProperties) -> Result -ProcEnumeratePhysicalDeviceGroupsKHR :: #type proc "system" (instance: Instance, pPhysicalDeviceGroupCount: ^u32, pPhysicalDeviceGroupProperties: [^]PhysicalDeviceGroupProperties) -> Result -ProcEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR :: #type proc "system" (physicalDevice: PhysicalDevice, queueFamilyIndex: u32, pCounterCount: ^u32, pCounters: [^]PerformanceCounterKHR, pCounterDescriptions: [^]PerformanceCounterDescriptionKHR) -> Result -ProcEnumeratePhysicalDevices :: #type proc "system" (instance: Instance, pPhysicalDeviceCount: ^u32, pPhysicalDevices: [^]PhysicalDevice) -> Result -ProcGetDisplayModeProperties2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, display: DisplayKHR, pPropertyCount: ^u32, pProperties: [^]DisplayModeProperties2KHR) -> Result -ProcGetDisplayModePropertiesKHR :: #type proc "system" (physicalDevice: PhysicalDevice, display: DisplayKHR, pPropertyCount: ^u32, pProperties: [^]DisplayModePropertiesKHR) -> Result -ProcGetDisplayPlaneCapabilities2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, pDisplayPlaneInfo: ^DisplayPlaneInfo2KHR, pCapabilities: [^]DisplayPlaneCapabilities2KHR) -> Result -ProcGetDisplayPlaneCapabilitiesKHR :: #type proc "system" (physicalDevice: PhysicalDevice, mode: DisplayModeKHR, planeIndex: u32, pCapabilities: [^]DisplayPlaneCapabilitiesKHR) -> Result -ProcGetDisplayPlaneSupportedDisplaysKHR :: #type proc "system" (physicalDevice: PhysicalDevice, planeIndex: u32, pDisplayCount: ^u32, pDisplays: [^]DisplayKHR) -> Result -ProcGetDrmDisplayEXT :: #type proc "system" (physicalDevice: PhysicalDevice, drmFd: i32, connectorId: u32, display: ^DisplayKHR) -> Result -ProcGetInstanceProcAddr :: #type proc "system" (instance: Instance, pName: cstring) -> ProcVoidFunction -ProcGetPhysicalDeviceCalibrateableTimeDomainsEXT :: #type proc "system" (physicalDevice: PhysicalDevice, pTimeDomainCount: ^u32, pTimeDomains: [^]TimeDomainEXT) -> Result -ProcGetPhysicalDeviceCooperativeMatrixPropertiesNV :: #type proc "system" (physicalDevice: PhysicalDevice, pPropertyCount: ^u32, pProperties: [^]CooperativeMatrixPropertiesNV) -> Result -ProcGetPhysicalDeviceDisplayPlaneProperties2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, pPropertyCount: ^u32, pProperties: [^]DisplayPlaneProperties2KHR) -> Result -ProcGetPhysicalDeviceDisplayPlanePropertiesKHR :: #type proc "system" (physicalDevice: PhysicalDevice, pPropertyCount: ^u32, pProperties: [^]DisplayPlanePropertiesKHR) -> Result -ProcGetPhysicalDeviceDisplayProperties2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, pPropertyCount: ^u32, pProperties: [^]DisplayProperties2KHR) -> Result -ProcGetPhysicalDeviceDisplayPropertiesKHR :: #type proc "system" (physicalDevice: PhysicalDevice, pPropertyCount: ^u32, pProperties: [^]DisplayPropertiesKHR) -> Result -ProcGetPhysicalDeviceExternalBufferProperties :: #type proc "system" (physicalDevice: PhysicalDevice, pExternalBufferInfo: ^PhysicalDeviceExternalBufferInfo, pExternalBufferProperties: [^]ExternalBufferProperties) -ProcGetPhysicalDeviceExternalBufferPropertiesKHR :: #type proc "system" (physicalDevice: PhysicalDevice, pExternalBufferInfo: ^PhysicalDeviceExternalBufferInfo, pExternalBufferProperties: [^]ExternalBufferProperties) -ProcGetPhysicalDeviceExternalFenceProperties :: #type proc "system" (physicalDevice: PhysicalDevice, pExternalFenceInfo: ^PhysicalDeviceExternalFenceInfo, pExternalFenceProperties: [^]ExternalFenceProperties) -ProcGetPhysicalDeviceExternalFencePropertiesKHR :: #type proc "system" (physicalDevice: PhysicalDevice, pExternalFenceInfo: ^PhysicalDeviceExternalFenceInfo, pExternalFenceProperties: [^]ExternalFenceProperties) -ProcGetPhysicalDeviceExternalImageFormatPropertiesNV :: #type proc "system" (physicalDevice: PhysicalDevice, format: Format, type: ImageType, tiling: ImageTiling, usage: ImageUsageFlags, flags: ImageCreateFlags, externalHandleType: ExternalMemoryHandleTypeFlagsNV, pExternalImageFormatProperties: [^]ExternalImageFormatPropertiesNV) -> Result -ProcGetPhysicalDeviceExternalSemaphoreProperties :: #type proc "system" (physicalDevice: PhysicalDevice, pExternalSemaphoreInfo: ^PhysicalDeviceExternalSemaphoreInfo, pExternalSemaphoreProperties: [^]ExternalSemaphoreProperties) -ProcGetPhysicalDeviceExternalSemaphorePropertiesKHR :: #type proc "system" (physicalDevice: PhysicalDevice, pExternalSemaphoreInfo: ^PhysicalDeviceExternalSemaphoreInfo, pExternalSemaphoreProperties: [^]ExternalSemaphoreProperties) -ProcGetPhysicalDeviceFeatures :: #type proc "system" (physicalDevice: PhysicalDevice, pFeatures: [^]PhysicalDeviceFeatures) -ProcGetPhysicalDeviceFeatures2 :: #type proc "system" (physicalDevice: PhysicalDevice, pFeatures: [^]PhysicalDeviceFeatures2) -ProcGetPhysicalDeviceFeatures2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, pFeatures: [^]PhysicalDeviceFeatures2) -ProcGetPhysicalDeviceFormatProperties :: #type proc "system" (physicalDevice: PhysicalDevice, format: Format, pFormatProperties: [^]FormatProperties) -ProcGetPhysicalDeviceFormatProperties2 :: #type proc "system" (physicalDevice: PhysicalDevice, format: Format, pFormatProperties: [^]FormatProperties2) -ProcGetPhysicalDeviceFormatProperties2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, format: Format, pFormatProperties: [^]FormatProperties2) -ProcGetPhysicalDeviceFragmentShadingRatesKHR :: #type proc "system" (physicalDevice: PhysicalDevice, pFragmentShadingRateCount: ^u32, pFragmentShadingRates: [^]PhysicalDeviceFragmentShadingRateKHR) -> Result -ProcGetPhysicalDeviceImageFormatProperties :: #type proc "system" (physicalDevice: PhysicalDevice, format: Format, type: ImageType, tiling: ImageTiling, usage: ImageUsageFlags, flags: ImageCreateFlags, pImageFormatProperties: [^]ImageFormatProperties) -> Result -ProcGetPhysicalDeviceImageFormatProperties2 :: #type proc "system" (physicalDevice: PhysicalDevice, pImageFormatInfo: ^PhysicalDeviceImageFormatInfo2, pImageFormatProperties: [^]ImageFormatProperties2) -> Result -ProcGetPhysicalDeviceImageFormatProperties2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, pImageFormatInfo: ^PhysicalDeviceImageFormatInfo2, pImageFormatProperties: [^]ImageFormatProperties2) -> Result -ProcGetPhysicalDeviceMemoryProperties :: #type proc "system" (physicalDevice: PhysicalDevice, pMemoryProperties: [^]PhysicalDeviceMemoryProperties) -ProcGetPhysicalDeviceMemoryProperties2 :: #type proc "system" (physicalDevice: PhysicalDevice, pMemoryProperties: [^]PhysicalDeviceMemoryProperties2) -ProcGetPhysicalDeviceMemoryProperties2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, pMemoryProperties: [^]PhysicalDeviceMemoryProperties2) -ProcGetPhysicalDeviceMultisamplePropertiesEXT :: #type proc "system" (physicalDevice: PhysicalDevice, samples: SampleCountFlags, pMultisampleProperties: [^]MultisamplePropertiesEXT) -ProcGetPhysicalDevicePresentRectanglesKHR :: #type proc "system" (physicalDevice: PhysicalDevice, surface: SurfaceKHR, pRectCount: ^u32, pRects: [^]Rect2D) -> Result -ProcGetPhysicalDeviceProperties :: #type proc "system" (physicalDevice: PhysicalDevice, pProperties: [^]PhysicalDeviceProperties) -ProcGetPhysicalDeviceProperties2 :: #type proc "system" (physicalDevice: PhysicalDevice, pProperties: [^]PhysicalDeviceProperties2) -ProcGetPhysicalDeviceProperties2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, pProperties: [^]PhysicalDeviceProperties2) -ProcGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR :: #type proc "system" (physicalDevice: PhysicalDevice, pPerformanceQueryCreateInfo: ^QueryPoolPerformanceCreateInfoKHR, pNumPasses: [^]u32) -ProcGetPhysicalDeviceQueueFamilyProperties :: #type proc "system" (physicalDevice: PhysicalDevice, pQueueFamilyPropertyCount: ^u32, pQueueFamilyProperties: [^]QueueFamilyProperties) -ProcGetPhysicalDeviceQueueFamilyProperties2 :: #type proc "system" (physicalDevice: PhysicalDevice, pQueueFamilyPropertyCount: ^u32, pQueueFamilyProperties: [^]QueueFamilyProperties2) -ProcGetPhysicalDeviceQueueFamilyProperties2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, pQueueFamilyPropertyCount: ^u32, pQueueFamilyProperties: [^]QueueFamilyProperties2) -ProcGetPhysicalDeviceSparseImageFormatProperties :: #type proc "system" (physicalDevice: PhysicalDevice, format: Format, type: ImageType, samples: SampleCountFlags, usage: ImageUsageFlags, tiling: ImageTiling, pPropertyCount: ^u32, pProperties: [^]SparseImageFormatProperties) -ProcGetPhysicalDeviceSparseImageFormatProperties2 :: #type proc "system" (physicalDevice: PhysicalDevice, pFormatInfo: ^PhysicalDeviceSparseImageFormatInfo2, pPropertyCount: ^u32, pProperties: [^]SparseImageFormatProperties2) -ProcGetPhysicalDeviceSparseImageFormatProperties2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, pFormatInfo: ^PhysicalDeviceSparseImageFormatInfo2, pPropertyCount: ^u32, pProperties: [^]SparseImageFormatProperties2) -ProcGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV :: #type proc "system" (physicalDevice: PhysicalDevice, pCombinationCount: ^u32, pCombinations: [^]FramebufferMixedSamplesCombinationNV) -> Result -ProcGetPhysicalDeviceSurfaceCapabilities2EXT :: #type proc "system" (physicalDevice: PhysicalDevice, surface: SurfaceKHR, pSurfaceCapabilities: [^]SurfaceCapabilities2EXT) -> Result -ProcGetPhysicalDeviceSurfaceCapabilities2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, pSurfaceInfo: ^PhysicalDeviceSurfaceInfo2KHR, pSurfaceCapabilities: [^]SurfaceCapabilities2KHR) -> Result -ProcGetPhysicalDeviceSurfaceCapabilitiesKHR :: #type proc "system" (physicalDevice: PhysicalDevice, surface: SurfaceKHR, pSurfaceCapabilities: [^]SurfaceCapabilitiesKHR) -> Result -ProcGetPhysicalDeviceSurfaceFormats2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, pSurfaceInfo: ^PhysicalDeviceSurfaceInfo2KHR, pSurfaceFormatCount: ^u32, pSurfaceFormats: [^]SurfaceFormat2KHR) -> Result -ProcGetPhysicalDeviceSurfaceFormatsKHR :: #type proc "system" (physicalDevice: PhysicalDevice, surface: SurfaceKHR, pSurfaceFormatCount: ^u32, pSurfaceFormats: [^]SurfaceFormatKHR) -> Result -ProcGetPhysicalDeviceSurfacePresentModes2EXT :: #type proc "system" (physicalDevice: PhysicalDevice, pSurfaceInfo: ^PhysicalDeviceSurfaceInfo2KHR, pPresentModeCount: ^u32, pPresentModes: [^]PresentModeKHR) -> Result -ProcGetPhysicalDeviceSurfacePresentModesKHR :: #type proc "system" (physicalDevice: PhysicalDevice, surface: SurfaceKHR, pPresentModeCount: ^u32, pPresentModes: [^]PresentModeKHR) -> Result -ProcGetPhysicalDeviceSurfaceSupportKHR :: #type proc "system" (physicalDevice: PhysicalDevice, queueFamilyIndex: u32, surface: SurfaceKHR, pSupported: ^b32) -> Result -ProcGetPhysicalDeviceToolProperties :: #type proc "system" (physicalDevice: PhysicalDevice, pToolCount: ^u32, pToolProperties: [^]PhysicalDeviceToolProperties) -> Result -ProcGetPhysicalDeviceToolPropertiesEXT :: #type proc "system" (physicalDevice: PhysicalDevice, pToolCount: ^u32, pToolProperties: [^]PhysicalDeviceToolProperties) -> Result -ProcGetPhysicalDeviceWin32PresentationSupportKHR :: #type proc "system" (physicalDevice: PhysicalDevice, queueFamilyIndex: u32) -> b32 -ProcGetWinrtDisplayNV :: #type proc "system" (physicalDevice: PhysicalDevice, deviceRelativeId: u32, pDisplay: ^DisplayKHR) -> Result -ProcReleaseDisplayEXT :: #type proc "system" (physicalDevice: PhysicalDevice, display: DisplayKHR) -> Result -ProcSubmitDebugUtilsMessageEXT :: #type proc "system" (instance: Instance, messageSeverity: DebugUtilsMessageSeverityFlagsEXT, messageTypes: DebugUtilsMessageTypeFlagsEXT, pCallbackData: ^DebugUtilsMessengerCallbackDataEXT) - -// Device Procedure Types -ProcAcquireFullScreenExclusiveModeEXT :: #type proc "system" (device: Device, swapchain: SwapchainKHR) -> Result -ProcAcquireNextImage2KHR :: #type proc "system" (device: Device, pAcquireInfo: ^AcquireNextImageInfoKHR, pImageIndex: ^u32) -> Result -ProcAcquireNextImageKHR :: #type proc "system" (device: Device, swapchain: SwapchainKHR, timeout: u64, semaphore: Semaphore, fence: Fence, pImageIndex: ^u32) -> Result -ProcAcquirePerformanceConfigurationINTEL :: #type proc "system" (device: Device, pAcquireInfo: ^PerformanceConfigurationAcquireInfoINTEL, pConfiguration: ^PerformanceConfigurationINTEL) -> Result -ProcAcquireProfilingLockKHR :: #type proc "system" (device: Device, pInfo: ^AcquireProfilingLockInfoKHR) -> Result -ProcAllocateCommandBuffers :: #type proc "system" (device: Device, pAllocateInfo: ^CommandBufferAllocateInfo, pCommandBuffers: [^]CommandBuffer) -> Result -ProcAllocateDescriptorSets :: #type proc "system" (device: Device, pAllocateInfo: ^DescriptorSetAllocateInfo, pDescriptorSets: [^]DescriptorSet) -> Result -ProcAllocateMemory :: #type proc "system" (device: Device, pAllocateInfo: ^MemoryAllocateInfo, pAllocator: ^AllocationCallbacks, pMemory: ^DeviceMemory) -> Result -ProcBeginCommandBuffer :: #type proc "system" (commandBuffer: CommandBuffer, pBeginInfo: ^CommandBufferBeginInfo) -> Result -ProcBindAccelerationStructureMemoryNV :: #type proc "system" (device: Device, bindInfoCount: u32, pBindInfos: [^]BindAccelerationStructureMemoryInfoNV) -> Result -ProcBindBufferMemory :: #type proc "system" (device: Device, buffer: Buffer, memory: DeviceMemory, memoryOffset: DeviceSize) -> Result -ProcBindBufferMemory2 :: #type proc "system" (device: Device, bindInfoCount: u32, pBindInfos: [^]BindBufferMemoryInfo) -> Result -ProcBindBufferMemory2KHR :: #type proc "system" (device: Device, bindInfoCount: u32, pBindInfos: [^]BindBufferMemoryInfo) -> Result -ProcBindImageMemory :: #type proc "system" (device: Device, image: Image, memory: DeviceMemory, memoryOffset: DeviceSize) -> Result -ProcBindImageMemory2 :: #type proc "system" (device: Device, bindInfoCount: u32, pBindInfos: [^]BindImageMemoryInfo) -> Result -ProcBindImageMemory2KHR :: #type proc "system" (device: Device, bindInfoCount: u32, pBindInfos: [^]BindImageMemoryInfo) -> Result -ProcBuildAccelerationStructuresKHR :: #type proc "system" (device: Device, deferredOperation: DeferredOperationKHR, infoCount: u32, pInfos: [^]AccelerationStructureBuildGeometryInfoKHR, ppBuildRangeInfos: ^[^]AccelerationStructureBuildRangeInfoKHR) -> Result -ProcCmdBeginConditionalRenderingEXT :: #type proc "system" (commandBuffer: CommandBuffer, pConditionalRenderingBegin: ^ConditionalRenderingBeginInfoEXT) -ProcCmdBeginDebugUtilsLabelEXT :: #type proc "system" (commandBuffer: CommandBuffer, pLabelInfo: ^DebugUtilsLabelEXT) -ProcCmdBeginQuery :: #type proc "system" (commandBuffer: CommandBuffer, queryPool: QueryPool, query: u32, flags: QueryControlFlags) -ProcCmdBeginQueryIndexedEXT :: #type proc "system" (commandBuffer: CommandBuffer, queryPool: QueryPool, query: u32, flags: QueryControlFlags, index: u32) -ProcCmdBeginRenderPass :: #type proc "system" (commandBuffer: CommandBuffer, pRenderPassBegin: ^RenderPassBeginInfo, contents: SubpassContents) -ProcCmdBeginRenderPass2 :: #type proc "system" (commandBuffer: CommandBuffer, pRenderPassBegin: ^RenderPassBeginInfo, pSubpassBeginInfo: ^SubpassBeginInfo) -ProcCmdBeginRenderPass2KHR :: #type proc "system" (commandBuffer: CommandBuffer, pRenderPassBegin: ^RenderPassBeginInfo, pSubpassBeginInfo: ^SubpassBeginInfo) -ProcCmdBeginRendering :: #type proc "system" (commandBuffer: CommandBuffer, pRenderingInfo: ^RenderingInfo) -ProcCmdBeginRenderingKHR :: #type proc "system" (commandBuffer: CommandBuffer, pRenderingInfo: ^RenderingInfo) -ProcCmdBeginTransformFeedbackEXT :: #type proc "system" (commandBuffer: CommandBuffer, firstCounterBuffer: u32, counterBufferCount: u32, pCounterBuffers: [^]Buffer, pCounterBufferOffsets: [^]DeviceSize) -ProcCmdBindDescriptorSets :: #type proc "system" (commandBuffer: CommandBuffer, pipelineBindPoint: PipelineBindPoint, layout: PipelineLayout, firstSet: u32, descriptorSetCount: u32, pDescriptorSets: [^]DescriptorSet, dynamicOffsetCount: u32, pDynamicOffsets: [^]u32) -ProcCmdBindIndexBuffer :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize, indexType: IndexType) -ProcCmdBindInvocationMaskHUAWEI :: #type proc "system" (commandBuffer: CommandBuffer, imageView: ImageView, imageLayout: ImageLayout) -ProcCmdBindPipeline :: #type proc "system" (commandBuffer: CommandBuffer, pipelineBindPoint: PipelineBindPoint, pipeline: Pipeline) -ProcCmdBindPipelineShaderGroupNV :: #type proc "system" (commandBuffer: CommandBuffer, pipelineBindPoint: PipelineBindPoint, pipeline: Pipeline, groupIndex: u32) -ProcCmdBindShadingRateImageNV :: #type proc "system" (commandBuffer: CommandBuffer, imageView: ImageView, imageLayout: ImageLayout) -ProcCmdBindTransformFeedbackBuffersEXT :: #type proc "system" (commandBuffer: CommandBuffer, firstBinding: u32, bindingCount: u32, pBuffers: [^]Buffer, pOffsets: [^]DeviceSize, pSizes: [^]DeviceSize) -ProcCmdBindVertexBuffers :: #type proc "system" (commandBuffer: CommandBuffer, firstBinding: u32, bindingCount: u32, pBuffers: [^]Buffer, pOffsets: [^]DeviceSize) -ProcCmdBindVertexBuffers2 :: #type proc "system" (commandBuffer: CommandBuffer, firstBinding: u32, bindingCount: u32, pBuffers: [^]Buffer, pOffsets: [^]DeviceSize, pSizes: [^]DeviceSize, pStrides: [^]DeviceSize) -ProcCmdBindVertexBuffers2EXT :: #type proc "system" (commandBuffer: CommandBuffer, firstBinding: u32, bindingCount: u32, pBuffers: [^]Buffer, pOffsets: [^]DeviceSize, pSizes: [^]DeviceSize, pStrides: [^]DeviceSize) -ProcCmdBlitImage :: #type proc "system" (commandBuffer: CommandBuffer, srcImage: Image, srcImageLayout: ImageLayout, dstImage: Image, dstImageLayout: ImageLayout, regionCount: u32, pRegions: [^]ImageBlit, filter: Filter) -ProcCmdBlitImage2 :: #type proc "system" (commandBuffer: CommandBuffer, pBlitImageInfo: ^BlitImageInfo2) -ProcCmdBlitImage2KHR :: #type proc "system" (commandBuffer: CommandBuffer, pBlitImageInfo: ^BlitImageInfo2) -ProcCmdBuildAccelerationStructureNV :: #type proc "system" (commandBuffer: CommandBuffer, pInfo: ^AccelerationStructureInfoNV, instanceData: Buffer, instanceOffset: DeviceSize, update: b32, dst: AccelerationStructureNV, src: AccelerationStructureNV, scratch: Buffer, scratchOffset: DeviceSize) -ProcCmdBuildAccelerationStructuresIndirectKHR :: #type proc "system" (commandBuffer: CommandBuffer, infoCount: u32, pInfos: [^]AccelerationStructureBuildGeometryInfoKHR, pIndirectDeviceAddresses: [^]DeviceAddress, pIndirectStrides: [^]u32, ppMaxPrimitiveCounts: ^[^]u32) -ProcCmdBuildAccelerationStructuresKHR :: #type proc "system" (commandBuffer: CommandBuffer, infoCount: u32, pInfos: [^]AccelerationStructureBuildGeometryInfoKHR, ppBuildRangeInfos: ^[^]AccelerationStructureBuildRangeInfoKHR) -ProcCmdClearAttachments :: #type proc "system" (commandBuffer: CommandBuffer, attachmentCount: u32, pAttachments: [^]ClearAttachment, rectCount: u32, pRects: [^]ClearRect) -ProcCmdClearColorImage :: #type proc "system" (commandBuffer: CommandBuffer, image: Image, imageLayout: ImageLayout, pColor: ^ClearColorValue, rangeCount: u32, pRanges: [^]ImageSubresourceRange) -ProcCmdClearDepthStencilImage :: #type proc "system" (commandBuffer: CommandBuffer, image: Image, imageLayout: ImageLayout, pDepthStencil: ^ClearDepthStencilValue, rangeCount: u32, pRanges: [^]ImageSubresourceRange) -ProcCmdCopyAccelerationStructureKHR :: #type proc "system" (commandBuffer: CommandBuffer, pInfo: ^CopyAccelerationStructureInfoKHR) -ProcCmdCopyAccelerationStructureNV :: #type proc "system" (commandBuffer: CommandBuffer, dst: AccelerationStructureNV, src: AccelerationStructureNV, mode: CopyAccelerationStructureModeKHR) -ProcCmdCopyAccelerationStructureToMemoryKHR :: #type proc "system" (commandBuffer: CommandBuffer, pInfo: ^CopyAccelerationStructureToMemoryInfoKHR) -ProcCmdCopyBuffer :: #type proc "system" (commandBuffer: CommandBuffer, srcBuffer: Buffer, dstBuffer: Buffer, regionCount: u32, pRegions: [^]BufferCopy) -ProcCmdCopyBuffer2 :: #type proc "system" (commandBuffer: CommandBuffer, pCopyBufferInfo: ^CopyBufferInfo2) -ProcCmdCopyBuffer2KHR :: #type proc "system" (commandBuffer: CommandBuffer, pCopyBufferInfo: ^CopyBufferInfo2) -ProcCmdCopyBufferToImage :: #type proc "system" (commandBuffer: CommandBuffer, srcBuffer: Buffer, dstImage: Image, dstImageLayout: ImageLayout, regionCount: u32, pRegions: [^]BufferImageCopy) -ProcCmdCopyBufferToImage2 :: #type proc "system" (commandBuffer: CommandBuffer, pCopyBufferToImageInfo: ^CopyBufferToImageInfo2) -ProcCmdCopyBufferToImage2KHR :: #type proc "system" (commandBuffer: CommandBuffer, pCopyBufferToImageInfo: ^CopyBufferToImageInfo2) -ProcCmdCopyImage :: #type proc "system" (commandBuffer: CommandBuffer, srcImage: Image, srcImageLayout: ImageLayout, dstImage: Image, dstImageLayout: ImageLayout, regionCount: u32, pRegions: [^]ImageCopy) -ProcCmdCopyImage2 :: #type proc "system" (commandBuffer: CommandBuffer, pCopyImageInfo: ^CopyImageInfo2) -ProcCmdCopyImage2KHR :: #type proc "system" (commandBuffer: CommandBuffer, pCopyImageInfo: ^CopyImageInfo2) -ProcCmdCopyImageToBuffer :: #type proc "system" (commandBuffer: CommandBuffer, srcImage: Image, srcImageLayout: ImageLayout, dstBuffer: Buffer, regionCount: u32, pRegions: [^]BufferImageCopy) -ProcCmdCopyImageToBuffer2 :: #type proc "system" (commandBuffer: CommandBuffer, pCopyImageToBufferInfo: ^CopyImageToBufferInfo2) -ProcCmdCopyImageToBuffer2KHR :: #type proc "system" (commandBuffer: CommandBuffer, pCopyImageToBufferInfo: ^CopyImageToBufferInfo2) -ProcCmdCopyMemoryToAccelerationStructureKHR :: #type proc "system" (commandBuffer: CommandBuffer, pInfo: ^CopyMemoryToAccelerationStructureInfoKHR) -ProcCmdCopyQueryPoolResults :: #type proc "system" (commandBuffer: CommandBuffer, queryPool: QueryPool, firstQuery: u32, queryCount: u32, dstBuffer: Buffer, dstOffset: DeviceSize, stride: DeviceSize, flags: QueryResultFlags) -ProcCmdCuLaunchKernelNVX :: #type proc "system" (commandBuffer: CommandBuffer, pLaunchInfo: ^CuLaunchInfoNVX) -ProcCmdDebugMarkerBeginEXT :: #type proc "system" (commandBuffer: CommandBuffer, pMarkerInfo: ^DebugMarkerMarkerInfoEXT) -ProcCmdDebugMarkerEndEXT :: #type proc "system" (commandBuffer: CommandBuffer) -ProcCmdDebugMarkerInsertEXT :: #type proc "system" (commandBuffer: CommandBuffer, pMarkerInfo: ^DebugMarkerMarkerInfoEXT) -ProcCmdDispatch :: #type proc "system" (commandBuffer: CommandBuffer, groupCountX: u32, groupCountY: u32, groupCountZ: u32) -ProcCmdDispatchBase :: #type proc "system" (commandBuffer: CommandBuffer, baseGroupX: u32, baseGroupY: u32, baseGroupZ: u32, groupCountX: u32, groupCountY: u32, groupCountZ: u32) -ProcCmdDispatchBaseKHR :: #type proc "system" (commandBuffer: CommandBuffer, baseGroupX: u32, baseGroupY: u32, baseGroupZ: u32, groupCountX: u32, groupCountY: u32, groupCountZ: u32) -ProcCmdDispatchIndirect :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize) -ProcCmdDraw :: #type proc "system" (commandBuffer: CommandBuffer, vertexCount: u32, instanceCount: u32, firstVertex: u32, firstInstance: u32) -ProcCmdDrawIndexed :: #type proc "system" (commandBuffer: CommandBuffer, indexCount: u32, instanceCount: u32, firstIndex: u32, vertexOffset: i32, firstInstance: u32) -ProcCmdDrawIndexedIndirect :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize, drawCount: u32, stride: u32) -ProcCmdDrawIndexedIndirectCount :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize, countBuffer: Buffer, countBufferOffset: DeviceSize, maxDrawCount: u32, stride: u32) -ProcCmdDrawIndexedIndirectCountAMD :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize, countBuffer: Buffer, countBufferOffset: DeviceSize, maxDrawCount: u32, stride: u32) -ProcCmdDrawIndexedIndirectCountKHR :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize, countBuffer: Buffer, countBufferOffset: DeviceSize, maxDrawCount: u32, stride: u32) -ProcCmdDrawIndirect :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize, drawCount: u32, stride: u32) -ProcCmdDrawIndirectByteCountEXT :: #type proc "system" (commandBuffer: CommandBuffer, instanceCount: u32, firstInstance: u32, counterBuffer: Buffer, counterBufferOffset: DeviceSize, counterOffset: u32, vertexStride: u32) -ProcCmdDrawIndirectCount :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize, countBuffer: Buffer, countBufferOffset: DeviceSize, maxDrawCount: u32, stride: u32) -ProcCmdDrawIndirectCountAMD :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize, countBuffer: Buffer, countBufferOffset: DeviceSize, maxDrawCount: u32, stride: u32) -ProcCmdDrawIndirectCountKHR :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize, countBuffer: Buffer, countBufferOffset: DeviceSize, maxDrawCount: u32, stride: u32) -ProcCmdDrawMeshTasksIndirectCountNV :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize, countBuffer: Buffer, countBufferOffset: DeviceSize, maxDrawCount: u32, stride: u32) -ProcCmdDrawMeshTasksIndirectNV :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize, drawCount: u32, stride: u32) -ProcCmdDrawMeshTasksNV :: #type proc "system" (commandBuffer: CommandBuffer, taskCount: u32, firstTask: u32) -ProcCmdDrawMultiEXT :: #type proc "system" (commandBuffer: CommandBuffer, drawCount: u32, pVertexInfo: ^MultiDrawInfoEXT, instanceCount: u32, firstInstance: u32, stride: u32) -ProcCmdDrawMultiIndexedEXT :: #type proc "system" (commandBuffer: CommandBuffer, drawCount: u32, pIndexInfo: ^MultiDrawIndexedInfoEXT, instanceCount: u32, firstInstance: u32, stride: u32, pVertexOffset: ^i32) -ProcCmdEndConditionalRenderingEXT :: #type proc "system" (commandBuffer: CommandBuffer) -ProcCmdEndDebugUtilsLabelEXT :: #type proc "system" (commandBuffer: CommandBuffer) -ProcCmdEndQuery :: #type proc "system" (commandBuffer: CommandBuffer, queryPool: QueryPool, query: u32) -ProcCmdEndQueryIndexedEXT :: #type proc "system" (commandBuffer: CommandBuffer, queryPool: QueryPool, query: u32, index: u32) -ProcCmdEndRenderPass :: #type proc "system" (commandBuffer: CommandBuffer) -ProcCmdEndRenderPass2 :: #type proc "system" (commandBuffer: CommandBuffer, pSubpassEndInfo: ^SubpassEndInfo) -ProcCmdEndRenderPass2KHR :: #type proc "system" (commandBuffer: CommandBuffer, pSubpassEndInfo: ^SubpassEndInfo) -ProcCmdEndRendering :: #type proc "system" (commandBuffer: CommandBuffer) -ProcCmdEndRenderingKHR :: #type proc "system" (commandBuffer: CommandBuffer) -ProcCmdEndTransformFeedbackEXT :: #type proc "system" (commandBuffer: CommandBuffer, firstCounterBuffer: u32, counterBufferCount: u32, pCounterBuffers: [^]Buffer, pCounterBufferOffsets: [^]DeviceSize) -ProcCmdExecuteCommands :: #type proc "system" (commandBuffer: CommandBuffer, commandBufferCount: u32, pCommandBuffers: [^]CommandBuffer) -ProcCmdExecuteGeneratedCommandsNV :: #type proc "system" (commandBuffer: CommandBuffer, isPreprocessed: b32, pGeneratedCommandsInfo: ^GeneratedCommandsInfoNV) -ProcCmdFillBuffer :: #type proc "system" (commandBuffer: CommandBuffer, dstBuffer: Buffer, dstOffset: DeviceSize, size: DeviceSize, data: u32) -ProcCmdInsertDebugUtilsLabelEXT :: #type proc "system" (commandBuffer: CommandBuffer, pLabelInfo: ^DebugUtilsLabelEXT) -ProcCmdNextSubpass :: #type proc "system" (commandBuffer: CommandBuffer, contents: SubpassContents) -ProcCmdNextSubpass2 :: #type proc "system" (commandBuffer: CommandBuffer, pSubpassBeginInfo: ^SubpassBeginInfo, pSubpassEndInfo: ^SubpassEndInfo) -ProcCmdNextSubpass2KHR :: #type proc "system" (commandBuffer: CommandBuffer, pSubpassBeginInfo: ^SubpassBeginInfo, pSubpassEndInfo: ^SubpassEndInfo) -ProcCmdPipelineBarrier :: #type proc "system" (commandBuffer: CommandBuffer, srcStageMask: PipelineStageFlags, dstStageMask: PipelineStageFlags, dependencyFlags: DependencyFlags, memoryBarrierCount: u32, pMemoryBarriers: [^]MemoryBarrier, bufferMemoryBarrierCount: u32, pBufferMemoryBarriers: [^]BufferMemoryBarrier, imageMemoryBarrierCount: u32, pImageMemoryBarriers: [^]ImageMemoryBarrier) -ProcCmdPipelineBarrier2 :: #type proc "system" (commandBuffer: CommandBuffer, pDependencyInfo: ^DependencyInfo) -ProcCmdPipelineBarrier2KHR :: #type proc "system" (commandBuffer: CommandBuffer, pDependencyInfo: ^DependencyInfo) -ProcCmdPreprocessGeneratedCommandsNV :: #type proc "system" (commandBuffer: CommandBuffer, pGeneratedCommandsInfo: ^GeneratedCommandsInfoNV) -ProcCmdPushConstants :: #type proc "system" (commandBuffer: CommandBuffer, layout: PipelineLayout, stageFlags: ShaderStageFlags, offset: u32, size: u32, pValues: rawptr) -ProcCmdPushDescriptorSetKHR :: #type proc "system" (commandBuffer: CommandBuffer, pipelineBindPoint: PipelineBindPoint, layout: PipelineLayout, set: u32, descriptorWriteCount: u32, pDescriptorWrites: [^]WriteDescriptorSet) -ProcCmdPushDescriptorSetWithTemplateKHR :: #type proc "system" (commandBuffer: CommandBuffer, descriptorUpdateTemplate: DescriptorUpdateTemplate, layout: PipelineLayout, set: u32, pData: rawptr) -ProcCmdResetEvent :: #type proc "system" (commandBuffer: CommandBuffer, event: Event, stageMask: PipelineStageFlags) -ProcCmdResetEvent2 :: #type proc "system" (commandBuffer: CommandBuffer, event: Event, stageMask: PipelineStageFlags2) -ProcCmdResetEvent2KHR :: #type proc "system" (commandBuffer: CommandBuffer, event: Event, stageMask: PipelineStageFlags2) -ProcCmdResetQueryPool :: #type proc "system" (commandBuffer: CommandBuffer, queryPool: QueryPool, firstQuery: u32, queryCount: u32) -ProcCmdResolveImage :: #type proc "system" (commandBuffer: CommandBuffer, srcImage: Image, srcImageLayout: ImageLayout, dstImage: Image, dstImageLayout: ImageLayout, regionCount: u32, pRegions: [^]ImageResolve) -ProcCmdResolveImage2 :: #type proc "system" (commandBuffer: CommandBuffer, pResolveImageInfo: ^ResolveImageInfo2) -ProcCmdResolveImage2KHR :: #type proc "system" (commandBuffer: CommandBuffer, pResolveImageInfo: ^ResolveImageInfo2) -ProcCmdSetBlendConstants :: #type proc "system" (commandBuffer: CommandBuffer) -ProcCmdSetCheckpointNV :: #type proc "system" (commandBuffer: CommandBuffer, pCheckpointMarker: rawptr) -ProcCmdSetCoarseSampleOrderNV :: #type proc "system" (commandBuffer: CommandBuffer, sampleOrderType: CoarseSampleOrderTypeNV, customSampleOrderCount: u32, pCustomSampleOrders: [^]CoarseSampleOrderCustomNV) -ProcCmdSetCullMode :: #type proc "system" (commandBuffer: CommandBuffer, cullMode: CullModeFlags) -ProcCmdSetCullModeEXT :: #type proc "system" (commandBuffer: CommandBuffer, cullMode: CullModeFlags) -ProcCmdSetDepthBias :: #type proc "system" (commandBuffer: CommandBuffer, depthBiasConstantFactor: f32, depthBiasClamp: f32, depthBiasSlopeFactor: f32) -ProcCmdSetDepthBiasEnable :: #type proc "system" (commandBuffer: CommandBuffer, depthBiasEnable: b32) -ProcCmdSetDepthBiasEnableEXT :: #type proc "system" (commandBuffer: CommandBuffer, depthBiasEnable: b32) -ProcCmdSetDepthBounds :: #type proc "system" (commandBuffer: CommandBuffer, minDepthBounds: f32, maxDepthBounds: f32) -ProcCmdSetDepthBoundsTestEnable :: #type proc "system" (commandBuffer: CommandBuffer, depthBoundsTestEnable: b32) -ProcCmdSetDepthBoundsTestEnableEXT :: #type proc "system" (commandBuffer: CommandBuffer, depthBoundsTestEnable: b32) -ProcCmdSetDepthCompareOp :: #type proc "system" (commandBuffer: CommandBuffer, depthCompareOp: CompareOp) -ProcCmdSetDepthCompareOpEXT :: #type proc "system" (commandBuffer: CommandBuffer, depthCompareOp: CompareOp) -ProcCmdSetDepthTestEnable :: #type proc "system" (commandBuffer: CommandBuffer, depthTestEnable: b32) -ProcCmdSetDepthTestEnableEXT :: #type proc "system" (commandBuffer: CommandBuffer, depthTestEnable: b32) -ProcCmdSetDepthWriteEnable :: #type proc "system" (commandBuffer: CommandBuffer, depthWriteEnable: b32) -ProcCmdSetDepthWriteEnableEXT :: #type proc "system" (commandBuffer: CommandBuffer, depthWriteEnable: b32) -ProcCmdSetDeviceMask :: #type proc "system" (commandBuffer: CommandBuffer, deviceMask: u32) -ProcCmdSetDeviceMaskKHR :: #type proc "system" (commandBuffer: CommandBuffer, deviceMask: u32) -ProcCmdSetDiscardRectangleEXT :: #type proc "system" (commandBuffer: CommandBuffer, firstDiscardRectangle: u32, discardRectangleCount: u32, pDiscardRectangles: [^]Rect2D) -ProcCmdSetEvent :: #type proc "system" (commandBuffer: CommandBuffer, event: Event, stageMask: PipelineStageFlags) -ProcCmdSetEvent2 :: #type proc "system" (commandBuffer: CommandBuffer, event: Event, pDependencyInfo: ^DependencyInfo) -ProcCmdSetEvent2KHR :: #type proc "system" (commandBuffer: CommandBuffer, event: Event, pDependencyInfo: ^DependencyInfo) -ProcCmdSetExclusiveScissorNV :: #type proc "system" (commandBuffer: CommandBuffer, firstExclusiveScissor: u32, exclusiveScissorCount: u32, pExclusiveScissors: [^]Rect2D) -ProcCmdSetFragmentShadingRateEnumNV :: #type proc "system" (commandBuffer: CommandBuffer, shadingRate: FragmentShadingRateNV) -ProcCmdSetFragmentShadingRateKHR :: #type proc "system" (commandBuffer: CommandBuffer, pFragmentSize: ^Extent2D) -ProcCmdSetFrontFace :: #type proc "system" (commandBuffer: CommandBuffer, frontFace: FrontFace) -ProcCmdSetFrontFaceEXT :: #type proc "system" (commandBuffer: CommandBuffer, frontFace: FrontFace) -ProcCmdSetLineStippleEXT :: #type proc "system" (commandBuffer: CommandBuffer, lineStippleFactor: u32, lineStipplePattern: u16) -ProcCmdSetLineWidth :: #type proc "system" (commandBuffer: CommandBuffer, lineWidth: f32) -ProcCmdSetLogicOpEXT :: #type proc "system" (commandBuffer: CommandBuffer, logicOp: LogicOp) -ProcCmdSetPatchControlPointsEXT :: #type proc "system" (commandBuffer: CommandBuffer, patchControlPoints: u32) -ProcCmdSetPerformanceMarkerINTEL :: #type proc "system" (commandBuffer: CommandBuffer, pMarkerInfo: ^PerformanceMarkerInfoINTEL) -> Result -ProcCmdSetPerformanceOverrideINTEL :: #type proc "system" (commandBuffer: CommandBuffer, pOverrideInfo: ^PerformanceOverrideInfoINTEL) -> Result -ProcCmdSetPerformanceStreamMarkerINTEL :: #type proc "system" (commandBuffer: CommandBuffer, pMarkerInfo: ^PerformanceStreamMarkerInfoINTEL) -> Result -ProcCmdSetPrimitiveRestartEnable :: #type proc "system" (commandBuffer: CommandBuffer, primitiveRestartEnable: b32) -ProcCmdSetPrimitiveRestartEnableEXT :: #type proc "system" (commandBuffer: CommandBuffer, primitiveRestartEnable: b32) -ProcCmdSetPrimitiveTopology :: #type proc "system" (commandBuffer: CommandBuffer, primitiveTopology: PrimitiveTopology) -ProcCmdSetPrimitiveTopologyEXT :: #type proc "system" (commandBuffer: CommandBuffer, primitiveTopology: PrimitiveTopology) -ProcCmdSetRasterizerDiscardEnable :: #type proc "system" (commandBuffer: CommandBuffer, rasterizerDiscardEnable: b32) -ProcCmdSetRasterizerDiscardEnableEXT :: #type proc "system" (commandBuffer: CommandBuffer, rasterizerDiscardEnable: b32) -ProcCmdSetRayTracingPipelineStackSizeKHR :: #type proc "system" (commandBuffer: CommandBuffer, pipelineStackSize: u32) -ProcCmdSetSampleLocationsEXT :: #type proc "system" (commandBuffer: CommandBuffer, pSampleLocationsInfo: ^SampleLocationsInfoEXT) -ProcCmdSetScissor :: #type proc "system" (commandBuffer: CommandBuffer, firstScissor: u32, scissorCount: u32, pScissors: [^]Rect2D) -ProcCmdSetScissorWithCount :: #type proc "system" (commandBuffer: CommandBuffer, scissorCount: u32, pScissors: [^]Rect2D) -ProcCmdSetScissorWithCountEXT :: #type proc "system" (commandBuffer: CommandBuffer, scissorCount: u32, pScissors: [^]Rect2D) -ProcCmdSetStencilCompareMask :: #type proc "system" (commandBuffer: CommandBuffer, faceMask: StencilFaceFlags, compareMask: u32) -ProcCmdSetStencilOp :: #type proc "system" (commandBuffer: CommandBuffer, faceMask: StencilFaceFlags, failOp: StencilOp, passOp: StencilOp, depthFailOp: StencilOp, compareOp: CompareOp) -ProcCmdSetStencilOpEXT :: #type proc "system" (commandBuffer: CommandBuffer, faceMask: StencilFaceFlags, failOp: StencilOp, passOp: StencilOp, depthFailOp: StencilOp, compareOp: CompareOp) -ProcCmdSetStencilReference :: #type proc "system" (commandBuffer: CommandBuffer, faceMask: StencilFaceFlags, reference: u32) -ProcCmdSetStencilTestEnable :: #type proc "system" (commandBuffer: CommandBuffer, stencilTestEnable: b32) -ProcCmdSetStencilTestEnableEXT :: #type proc "system" (commandBuffer: CommandBuffer, stencilTestEnable: b32) -ProcCmdSetStencilWriteMask :: #type proc "system" (commandBuffer: CommandBuffer, faceMask: StencilFaceFlags, writeMask: u32) -ProcCmdSetVertexInputEXT :: #type proc "system" (commandBuffer: CommandBuffer, vertexBindingDescriptionCount: u32, pVertexBindingDescriptions: [^]VertexInputBindingDescription2EXT, vertexAttributeDescriptionCount: u32, pVertexAttributeDescriptions: [^]VertexInputAttributeDescription2EXT) -ProcCmdSetViewport :: #type proc "system" (commandBuffer: CommandBuffer, firstViewport: u32, viewportCount: u32, pViewports: [^]Viewport) -ProcCmdSetViewportShadingRatePaletteNV :: #type proc "system" (commandBuffer: CommandBuffer, firstViewport: u32, viewportCount: u32, pShadingRatePalettes: [^]ShadingRatePaletteNV) -ProcCmdSetViewportWScalingNV :: #type proc "system" (commandBuffer: CommandBuffer, firstViewport: u32, viewportCount: u32, pViewportWScalings: [^]ViewportWScalingNV) -ProcCmdSetViewportWithCount :: #type proc "system" (commandBuffer: CommandBuffer, viewportCount: u32, pViewports: [^]Viewport) -ProcCmdSetViewportWithCountEXT :: #type proc "system" (commandBuffer: CommandBuffer, viewportCount: u32, pViewports: [^]Viewport) -ProcCmdSubpassShadingHUAWEI :: #type proc "system" (commandBuffer: CommandBuffer) -ProcCmdTraceRaysIndirectKHR :: #type proc "system" (commandBuffer: CommandBuffer, pRaygenShaderBindingTable: [^]StridedDeviceAddressRegionKHR, pMissShaderBindingTable: [^]StridedDeviceAddressRegionKHR, pHitShaderBindingTable: [^]StridedDeviceAddressRegionKHR, pCallableShaderBindingTable: [^]StridedDeviceAddressRegionKHR, indirectDeviceAddress: DeviceAddress) -ProcCmdTraceRaysKHR :: #type proc "system" (commandBuffer: CommandBuffer, pRaygenShaderBindingTable: [^]StridedDeviceAddressRegionKHR, pMissShaderBindingTable: [^]StridedDeviceAddressRegionKHR, pHitShaderBindingTable: [^]StridedDeviceAddressRegionKHR, pCallableShaderBindingTable: [^]StridedDeviceAddressRegionKHR, width: u32, height: u32, depth: u32) -ProcCmdTraceRaysNV :: #type proc "system" (commandBuffer: CommandBuffer, raygenShaderBindingTableBuffer: Buffer, raygenShaderBindingOffset: DeviceSize, missShaderBindingTableBuffer: Buffer, missShaderBindingOffset: DeviceSize, missShaderBindingStride: DeviceSize, hitShaderBindingTableBuffer: Buffer, hitShaderBindingOffset: DeviceSize, hitShaderBindingStride: DeviceSize, callableShaderBindingTableBuffer: Buffer, callableShaderBindingOffset: DeviceSize, callableShaderBindingStride: DeviceSize, width: u32, height: u32, depth: u32) -ProcCmdUpdateBuffer :: #type proc "system" (commandBuffer: CommandBuffer, dstBuffer: Buffer, dstOffset: DeviceSize, dataSize: DeviceSize, pData: rawptr) -ProcCmdWaitEvents :: #type proc "system" (commandBuffer: CommandBuffer, eventCount: u32, pEvents: [^]Event, srcStageMask: PipelineStageFlags, dstStageMask: PipelineStageFlags, memoryBarrierCount: u32, pMemoryBarriers: [^]MemoryBarrier, bufferMemoryBarrierCount: u32, pBufferMemoryBarriers: [^]BufferMemoryBarrier, imageMemoryBarrierCount: u32, pImageMemoryBarriers: [^]ImageMemoryBarrier) -ProcCmdWaitEvents2 :: #type proc "system" (commandBuffer: CommandBuffer, eventCount: u32, pEvents: [^]Event, pDependencyInfos: [^]DependencyInfo) -ProcCmdWaitEvents2KHR :: #type proc "system" (commandBuffer: CommandBuffer, eventCount: u32, pEvents: [^]Event, pDependencyInfos: [^]DependencyInfo) -ProcCmdWriteAccelerationStructuresPropertiesKHR :: #type proc "system" (commandBuffer: CommandBuffer, accelerationStructureCount: u32, pAccelerationStructures: [^]AccelerationStructureKHR, queryType: QueryType, queryPool: QueryPool, firstQuery: u32) -ProcCmdWriteAccelerationStructuresPropertiesNV :: #type proc "system" (commandBuffer: CommandBuffer, accelerationStructureCount: u32, pAccelerationStructures: [^]AccelerationStructureNV, queryType: QueryType, queryPool: QueryPool, firstQuery: u32) -ProcCmdWriteBufferMarker2AMD :: #type proc "system" (commandBuffer: CommandBuffer, stage: PipelineStageFlags2, dstBuffer: Buffer, dstOffset: DeviceSize, marker: u32) -ProcCmdWriteBufferMarkerAMD :: #type proc "system" (commandBuffer: CommandBuffer, pipelineStage: PipelineStageFlags, dstBuffer: Buffer, dstOffset: DeviceSize, marker: u32) -ProcCmdWriteTimestamp :: #type proc "system" (commandBuffer: CommandBuffer, pipelineStage: PipelineStageFlags, queryPool: QueryPool, query: u32) -ProcCmdWriteTimestamp2 :: #type proc "system" (commandBuffer: CommandBuffer, stage: PipelineStageFlags2, queryPool: QueryPool, query: u32) -ProcCmdWriteTimestamp2KHR :: #type proc "system" (commandBuffer: CommandBuffer, stage: PipelineStageFlags2, queryPool: QueryPool, query: u32) -ProcCompileDeferredNV :: #type proc "system" (device: Device, pipeline: Pipeline, shader: u32) -> Result -ProcCopyAccelerationStructureKHR :: #type proc "system" (device: Device, deferredOperation: DeferredOperationKHR, pInfo: ^CopyAccelerationStructureInfoKHR) -> Result -ProcCopyAccelerationStructureToMemoryKHR :: #type proc "system" (device: Device, deferredOperation: DeferredOperationKHR, pInfo: ^CopyAccelerationStructureToMemoryInfoKHR) -> Result -ProcCopyMemoryToAccelerationStructureKHR :: #type proc "system" (device: Device, deferredOperation: DeferredOperationKHR, pInfo: ^CopyMemoryToAccelerationStructureInfoKHR) -> Result -ProcCreateAccelerationStructureKHR :: #type proc "system" (device: Device, pCreateInfo: ^AccelerationStructureCreateInfoKHR, pAllocator: ^AllocationCallbacks, pAccelerationStructure: ^AccelerationStructureKHR) -> Result -ProcCreateAccelerationStructureNV :: #type proc "system" (device: Device, pCreateInfo: ^AccelerationStructureCreateInfoNV, pAllocator: ^AllocationCallbacks, pAccelerationStructure: ^AccelerationStructureNV) -> Result -ProcCreateBuffer :: #type proc "system" (device: Device, pCreateInfo: ^BufferCreateInfo, pAllocator: ^AllocationCallbacks, pBuffer: ^Buffer) -> Result -ProcCreateBufferView :: #type proc "system" (device: Device, pCreateInfo: ^BufferViewCreateInfo, pAllocator: ^AllocationCallbacks, pView: ^BufferView) -> Result -ProcCreateCommandPool :: #type proc "system" (device: Device, pCreateInfo: ^CommandPoolCreateInfo, pAllocator: ^AllocationCallbacks, pCommandPool: ^CommandPool) -> Result -ProcCreateComputePipelines :: #type proc "system" (device: Device, pipelineCache: PipelineCache, createInfoCount: u32, pCreateInfos: [^]ComputePipelineCreateInfo, pAllocator: ^AllocationCallbacks, pPipelines: [^]Pipeline) -> Result -ProcCreateCuFunctionNVX :: #type proc "system" (device: Device, pCreateInfo: ^CuFunctionCreateInfoNVX, pAllocator: ^AllocationCallbacks, pFunction: ^CuFunctionNVX) -> Result -ProcCreateCuModuleNVX :: #type proc "system" (device: Device, pCreateInfo: ^CuModuleCreateInfoNVX, pAllocator: ^AllocationCallbacks, pModule: ^CuModuleNVX) -> Result -ProcCreateDeferredOperationKHR :: #type proc "system" (device: Device, pAllocator: ^AllocationCallbacks, pDeferredOperation: ^DeferredOperationKHR) -> Result -ProcCreateDescriptorPool :: #type proc "system" (device: Device, pCreateInfo: ^DescriptorPoolCreateInfo, pAllocator: ^AllocationCallbacks, pDescriptorPool: ^DescriptorPool) -> Result -ProcCreateDescriptorSetLayout :: #type proc "system" (device: Device, pCreateInfo: ^DescriptorSetLayoutCreateInfo, pAllocator: ^AllocationCallbacks, pSetLayout: ^DescriptorSetLayout) -> Result -ProcCreateDescriptorUpdateTemplate :: #type proc "system" (device: Device, pCreateInfo: ^DescriptorUpdateTemplateCreateInfo, pAllocator: ^AllocationCallbacks, pDescriptorUpdateTemplate: ^DescriptorUpdateTemplate) -> Result -ProcCreateDescriptorUpdateTemplateKHR :: #type proc "system" (device: Device, pCreateInfo: ^DescriptorUpdateTemplateCreateInfo, pAllocator: ^AllocationCallbacks, pDescriptorUpdateTemplate: ^DescriptorUpdateTemplate) -> Result -ProcCreateEvent :: #type proc "system" (device: Device, pCreateInfo: ^EventCreateInfo, pAllocator: ^AllocationCallbacks, pEvent: ^Event) -> Result -ProcCreateFence :: #type proc "system" (device: Device, pCreateInfo: ^FenceCreateInfo, pAllocator: ^AllocationCallbacks, pFence: ^Fence) -> Result -ProcCreateFramebuffer :: #type proc "system" (device: Device, pCreateInfo: ^FramebufferCreateInfo, pAllocator: ^AllocationCallbacks, pFramebuffer: ^Framebuffer) -> Result -ProcCreateGraphicsPipelines :: #type proc "system" (device: Device, pipelineCache: PipelineCache, createInfoCount: u32, pCreateInfos: [^]GraphicsPipelineCreateInfo, pAllocator: ^AllocationCallbacks, pPipelines: [^]Pipeline) -> Result -ProcCreateImage :: #type proc "system" (device: Device, pCreateInfo: ^ImageCreateInfo, pAllocator: ^AllocationCallbacks, pImage: ^Image) -> Result -ProcCreateImageView :: #type proc "system" (device: Device, pCreateInfo: ^ImageViewCreateInfo, pAllocator: ^AllocationCallbacks, pView: ^ImageView) -> Result -ProcCreateIndirectCommandsLayoutNV :: #type proc "system" (device: Device, pCreateInfo: ^IndirectCommandsLayoutCreateInfoNV, pAllocator: ^AllocationCallbacks, pIndirectCommandsLayout: ^IndirectCommandsLayoutNV) -> Result -ProcCreatePipelineCache :: #type proc "system" (device: Device, pCreateInfo: ^PipelineCacheCreateInfo, pAllocator: ^AllocationCallbacks, pPipelineCache: ^PipelineCache) -> Result -ProcCreatePipelineLayout :: #type proc "system" (device: Device, pCreateInfo: ^PipelineLayoutCreateInfo, pAllocator: ^AllocationCallbacks, pPipelineLayout: ^PipelineLayout) -> Result -ProcCreatePrivateDataSlot :: #type proc "system" (device: Device, pCreateInfo: ^PrivateDataSlotCreateInfo, pAllocator: ^AllocationCallbacks, pPrivateDataSlot: ^PrivateDataSlot) -> Result -ProcCreatePrivateDataSlotEXT :: #type proc "system" (device: Device, pCreateInfo: ^PrivateDataSlotCreateInfo, pAllocator: ^AllocationCallbacks, pPrivateDataSlot: ^PrivateDataSlot) -> Result -ProcCreateQueryPool :: #type proc "system" (device: Device, pCreateInfo: ^QueryPoolCreateInfo, pAllocator: ^AllocationCallbacks, pQueryPool: ^QueryPool) -> Result -ProcCreateRayTracingPipelinesKHR :: #type proc "system" (device: Device, deferredOperation: DeferredOperationKHR, pipelineCache: PipelineCache, createInfoCount: u32, pCreateInfos: [^]RayTracingPipelineCreateInfoKHR, pAllocator: ^AllocationCallbacks, pPipelines: [^]Pipeline) -> Result -ProcCreateRayTracingPipelinesNV :: #type proc "system" (device: Device, pipelineCache: PipelineCache, createInfoCount: u32, pCreateInfos: [^]RayTracingPipelineCreateInfoNV, pAllocator: ^AllocationCallbacks, pPipelines: [^]Pipeline) -> Result -ProcCreateRenderPass :: #type proc "system" (device: Device, pCreateInfo: ^RenderPassCreateInfo, pAllocator: ^AllocationCallbacks, pRenderPass: [^]RenderPass) -> Result -ProcCreateRenderPass2 :: #type proc "system" (device: Device, pCreateInfo: ^RenderPassCreateInfo2, pAllocator: ^AllocationCallbacks, pRenderPass: [^]RenderPass) -> Result -ProcCreateRenderPass2KHR :: #type proc "system" (device: Device, pCreateInfo: ^RenderPassCreateInfo2, pAllocator: ^AllocationCallbacks, pRenderPass: [^]RenderPass) -> Result -ProcCreateSampler :: #type proc "system" (device: Device, pCreateInfo: ^SamplerCreateInfo, pAllocator: ^AllocationCallbacks, pSampler: ^Sampler) -> Result -ProcCreateSamplerYcbcrConversion :: #type proc "system" (device: Device, pCreateInfo: ^SamplerYcbcrConversionCreateInfo, pAllocator: ^AllocationCallbacks, pYcbcrConversion: ^SamplerYcbcrConversion) -> Result -ProcCreateSamplerYcbcrConversionKHR :: #type proc "system" (device: Device, pCreateInfo: ^SamplerYcbcrConversionCreateInfo, pAllocator: ^AllocationCallbacks, pYcbcrConversion: ^SamplerYcbcrConversion) -> Result -ProcCreateSemaphore :: #type proc "system" (device: Device, pCreateInfo: ^SemaphoreCreateInfo, pAllocator: ^AllocationCallbacks, pSemaphore: ^Semaphore) -> Result -ProcCreateShaderModule :: #type proc "system" (device: Device, pCreateInfo: ^ShaderModuleCreateInfo, pAllocator: ^AllocationCallbacks, pShaderModule: ^ShaderModule) -> Result -ProcCreateSharedSwapchainsKHR :: #type proc "system" (device: Device, swapchainCount: u32, pCreateInfos: [^]SwapchainCreateInfoKHR, pAllocator: ^AllocationCallbacks, pSwapchains: [^]SwapchainKHR) -> Result -ProcCreateSwapchainKHR :: #type proc "system" (device: Device, pCreateInfo: ^SwapchainCreateInfoKHR, pAllocator: ^AllocationCallbacks, pSwapchain: ^SwapchainKHR) -> Result -ProcCreateValidationCacheEXT :: #type proc "system" (device: Device, pCreateInfo: ^ValidationCacheCreateInfoEXT, pAllocator: ^AllocationCallbacks, pValidationCache: ^ValidationCacheEXT) -> Result -ProcDebugMarkerSetObjectNameEXT :: #type proc "system" (device: Device, pNameInfo: ^DebugMarkerObjectNameInfoEXT) -> Result -ProcDebugMarkerSetObjectTagEXT :: #type proc "system" (device: Device, pTagInfo: ^DebugMarkerObjectTagInfoEXT) -> Result -ProcDeferredOperationJoinKHR :: #type proc "system" (device: Device, operation: DeferredOperationKHR) -> Result -ProcDestroyAccelerationStructureKHR :: #type proc "system" (device: Device, accelerationStructure: AccelerationStructureKHR, pAllocator: ^AllocationCallbacks) -ProcDestroyAccelerationStructureNV :: #type proc "system" (device: Device, accelerationStructure: AccelerationStructureNV, pAllocator: ^AllocationCallbacks) -ProcDestroyBuffer :: #type proc "system" (device: Device, buffer: Buffer, pAllocator: ^AllocationCallbacks) -ProcDestroyBufferView :: #type proc "system" (device: Device, bufferView: BufferView, pAllocator: ^AllocationCallbacks) -ProcDestroyCommandPool :: #type proc "system" (device: Device, commandPool: CommandPool, pAllocator: ^AllocationCallbacks) -ProcDestroyCuFunctionNVX :: #type proc "system" (device: Device, function: CuFunctionNVX, pAllocator: ^AllocationCallbacks) -ProcDestroyCuModuleNVX :: #type proc "system" (device: Device, module: CuModuleNVX, pAllocator: ^AllocationCallbacks) -ProcDestroyDeferredOperationKHR :: #type proc "system" (device: Device, operation: DeferredOperationKHR, pAllocator: ^AllocationCallbacks) -ProcDestroyDescriptorPool :: #type proc "system" (device: Device, descriptorPool: DescriptorPool, pAllocator: ^AllocationCallbacks) -ProcDestroyDescriptorSetLayout :: #type proc "system" (device: Device, descriptorSetLayout: DescriptorSetLayout, pAllocator: ^AllocationCallbacks) -ProcDestroyDescriptorUpdateTemplate :: #type proc "system" (device: Device, descriptorUpdateTemplate: DescriptorUpdateTemplate, pAllocator: ^AllocationCallbacks) -ProcDestroyDescriptorUpdateTemplateKHR :: #type proc "system" (device: Device, descriptorUpdateTemplate: DescriptorUpdateTemplate, pAllocator: ^AllocationCallbacks) -ProcDestroyDevice :: #type proc "system" (device: Device, pAllocator: ^AllocationCallbacks) -ProcDestroyEvent :: #type proc "system" (device: Device, event: Event, pAllocator: ^AllocationCallbacks) -ProcDestroyFence :: #type proc "system" (device: Device, fence: Fence, pAllocator: ^AllocationCallbacks) -ProcDestroyFramebuffer :: #type proc "system" (device: Device, framebuffer: Framebuffer, pAllocator: ^AllocationCallbacks) -ProcDestroyImage :: #type proc "system" (device: Device, image: Image, pAllocator: ^AllocationCallbacks) -ProcDestroyImageView :: #type proc "system" (device: Device, imageView: ImageView, pAllocator: ^AllocationCallbacks) -ProcDestroyIndirectCommandsLayoutNV :: #type proc "system" (device: Device, indirectCommandsLayout: IndirectCommandsLayoutNV, pAllocator: ^AllocationCallbacks) -ProcDestroyPipeline :: #type proc "system" (device: Device, pipeline: Pipeline, pAllocator: ^AllocationCallbacks) -ProcDestroyPipelineCache :: #type proc "system" (device: Device, pipelineCache: PipelineCache, pAllocator: ^AllocationCallbacks) -ProcDestroyPipelineLayout :: #type proc "system" (device: Device, pipelineLayout: PipelineLayout, pAllocator: ^AllocationCallbacks) -ProcDestroyPrivateDataSlot :: #type proc "system" (device: Device, privateDataSlot: PrivateDataSlot, pAllocator: ^AllocationCallbacks) -ProcDestroyPrivateDataSlotEXT :: #type proc "system" (device: Device, privateDataSlot: PrivateDataSlot, pAllocator: ^AllocationCallbacks) -ProcDestroyQueryPool :: #type proc "system" (device: Device, queryPool: QueryPool, pAllocator: ^AllocationCallbacks) -ProcDestroyRenderPass :: #type proc "system" (device: Device, renderPass: RenderPass, pAllocator: ^AllocationCallbacks) -ProcDestroySampler :: #type proc "system" (device: Device, sampler: Sampler, pAllocator: ^AllocationCallbacks) -ProcDestroySamplerYcbcrConversion :: #type proc "system" (device: Device, ycbcrConversion: SamplerYcbcrConversion, pAllocator: ^AllocationCallbacks) -ProcDestroySamplerYcbcrConversionKHR :: #type proc "system" (device: Device, ycbcrConversion: SamplerYcbcrConversion, pAllocator: ^AllocationCallbacks) -ProcDestroySemaphore :: #type proc "system" (device: Device, semaphore: Semaphore, pAllocator: ^AllocationCallbacks) -ProcDestroyShaderModule :: #type proc "system" (device: Device, shaderModule: ShaderModule, pAllocator: ^AllocationCallbacks) -ProcDestroySwapchainKHR :: #type proc "system" (device: Device, swapchain: SwapchainKHR, pAllocator: ^AllocationCallbacks) -ProcDestroyValidationCacheEXT :: #type proc "system" (device: Device, validationCache: ValidationCacheEXT, pAllocator: ^AllocationCallbacks) -ProcDeviceWaitIdle :: #type proc "system" (device: Device) -> Result -ProcDisplayPowerControlEXT :: #type proc "system" (device: Device, display: DisplayKHR, pDisplayPowerInfo: ^DisplayPowerInfoEXT) -> Result -ProcEndCommandBuffer :: #type proc "system" (commandBuffer: CommandBuffer) -> Result -ProcFlushMappedMemoryRanges :: #type proc "system" (device: Device, memoryRangeCount: u32, pMemoryRanges: [^]MappedMemoryRange) -> Result -ProcFreeCommandBuffers :: #type proc "system" (device: Device, commandPool: CommandPool, commandBufferCount: u32, pCommandBuffers: [^]CommandBuffer) -ProcFreeDescriptorSets :: #type proc "system" (device: Device, descriptorPool: DescriptorPool, descriptorSetCount: u32, pDescriptorSets: [^]DescriptorSet) -> Result -ProcFreeMemory :: #type proc "system" (device: Device, memory: DeviceMemory, pAllocator: ^AllocationCallbacks) -ProcGetAccelerationStructureBuildSizesKHR :: #type proc "system" (device: Device, buildType: AccelerationStructureBuildTypeKHR, pBuildInfo: ^AccelerationStructureBuildGeometryInfoKHR, pMaxPrimitiveCounts: [^]u32, pSizeInfo: ^AccelerationStructureBuildSizesInfoKHR) -ProcGetAccelerationStructureDeviceAddressKHR :: #type proc "system" (device: Device, pInfo: ^AccelerationStructureDeviceAddressInfoKHR) -> DeviceAddress -ProcGetAccelerationStructureHandleNV :: #type proc "system" (device: Device, accelerationStructure: AccelerationStructureNV, dataSize: int, pData: rawptr) -> Result -ProcGetAccelerationStructureMemoryRequirementsNV :: #type proc "system" (device: Device, pInfo: ^AccelerationStructureMemoryRequirementsInfoNV, pMemoryRequirements: [^]MemoryRequirements2KHR) -ProcGetBufferDeviceAddress :: #type proc "system" (device: Device, pInfo: ^BufferDeviceAddressInfo) -> DeviceAddress -ProcGetBufferDeviceAddressEXT :: #type proc "system" (device: Device, pInfo: ^BufferDeviceAddressInfo) -> DeviceAddress -ProcGetBufferDeviceAddressKHR :: #type proc "system" (device: Device, pInfo: ^BufferDeviceAddressInfo) -> DeviceAddress -ProcGetBufferMemoryRequirements :: #type proc "system" (device: Device, buffer: Buffer, pMemoryRequirements: [^]MemoryRequirements) -ProcGetBufferMemoryRequirements2 :: #type proc "system" (device: Device, pInfo: ^BufferMemoryRequirementsInfo2, pMemoryRequirements: [^]MemoryRequirements2) -ProcGetBufferMemoryRequirements2KHR :: #type proc "system" (device: Device, pInfo: ^BufferMemoryRequirementsInfo2, pMemoryRequirements: [^]MemoryRequirements2) -ProcGetBufferOpaqueCaptureAddress :: #type proc "system" (device: Device, pInfo: ^BufferDeviceAddressInfo) -> u64 -ProcGetBufferOpaqueCaptureAddressKHR :: #type proc "system" (device: Device, pInfo: ^BufferDeviceAddressInfo) -> u64 -ProcGetCalibratedTimestampsEXT :: #type proc "system" (device: Device, timestampCount: u32, pTimestampInfos: [^]CalibratedTimestampInfoEXT, pTimestamps: [^]u64, pMaxDeviation: ^u64) -> Result -ProcGetDeferredOperationMaxConcurrencyKHR :: #type proc "system" (device: Device, operation: DeferredOperationKHR) -> u32 -ProcGetDeferredOperationResultKHR :: #type proc "system" (device: Device, operation: DeferredOperationKHR) -> Result -ProcGetDescriptorSetHostMappingVALVE :: #type proc "system" (device: Device, descriptorSet: DescriptorSet, ppData: ^rawptr) -ProcGetDescriptorSetLayoutHostMappingInfoVALVE :: #type proc "system" (device: Device, pBindingReference: ^DescriptorSetBindingReferenceVALVE, pHostMapping: ^DescriptorSetLayoutHostMappingInfoVALVE) -ProcGetDescriptorSetLayoutSupport :: #type proc "system" (device: Device, pCreateInfo: ^DescriptorSetLayoutCreateInfo, pSupport: ^DescriptorSetLayoutSupport) -ProcGetDescriptorSetLayoutSupportKHR :: #type proc "system" (device: Device, pCreateInfo: ^DescriptorSetLayoutCreateInfo, pSupport: ^DescriptorSetLayoutSupport) -ProcGetDeviceAccelerationStructureCompatibilityKHR :: #type proc "system" (device: Device, pVersionInfo: ^AccelerationStructureVersionInfoKHR, pCompatibility: ^AccelerationStructureCompatibilityKHR) -ProcGetDeviceBufferMemoryRequirements :: #type proc "system" (device: Device, pInfo: ^DeviceBufferMemoryRequirements, pMemoryRequirements: [^]MemoryRequirements2) -ProcGetDeviceBufferMemoryRequirementsKHR :: #type proc "system" (device: Device, pInfo: ^DeviceBufferMemoryRequirements, pMemoryRequirements: [^]MemoryRequirements2) -ProcGetDeviceGroupPeerMemoryFeatures :: #type proc "system" (device: Device, heapIndex: u32, localDeviceIndex: u32, remoteDeviceIndex: u32, pPeerMemoryFeatures: [^]PeerMemoryFeatureFlags) -ProcGetDeviceGroupPeerMemoryFeaturesKHR :: #type proc "system" (device: Device, heapIndex: u32, localDeviceIndex: u32, remoteDeviceIndex: u32, pPeerMemoryFeatures: [^]PeerMemoryFeatureFlags) -ProcGetDeviceGroupPresentCapabilitiesKHR :: #type proc "system" (device: Device, pDeviceGroupPresentCapabilities: [^]DeviceGroupPresentCapabilitiesKHR) -> Result -ProcGetDeviceGroupSurfacePresentModes2EXT :: #type proc "system" (device: Device, pSurfaceInfo: ^PhysicalDeviceSurfaceInfo2KHR, pModes: [^]DeviceGroupPresentModeFlagsKHR) -> Result -ProcGetDeviceGroupSurfacePresentModesKHR :: #type proc "system" (device: Device, surface: SurfaceKHR, pModes: [^]DeviceGroupPresentModeFlagsKHR) -> Result -ProcGetDeviceImageMemoryRequirements :: #type proc "system" (device: Device, pInfo: ^DeviceImageMemoryRequirements, pMemoryRequirements: [^]MemoryRequirements2) -ProcGetDeviceImageMemoryRequirementsKHR :: #type proc "system" (device: Device, pInfo: ^DeviceImageMemoryRequirements, pMemoryRequirements: [^]MemoryRequirements2) -ProcGetDeviceImageSparseMemoryRequirements :: #type proc "system" (device: Device, pInfo: ^DeviceImageMemoryRequirements, pSparseMemoryRequirementCount: ^u32, pSparseMemoryRequirements: [^]SparseImageMemoryRequirements2) -ProcGetDeviceImageSparseMemoryRequirementsKHR :: #type proc "system" (device: Device, pInfo: ^DeviceImageMemoryRequirements, pSparseMemoryRequirementCount: ^u32, pSparseMemoryRequirements: [^]SparseImageMemoryRequirements2) -ProcGetDeviceMemoryCommitment :: #type proc "system" (device: Device, memory: DeviceMemory, pCommittedMemoryInBytes: [^]DeviceSize) -ProcGetDeviceMemoryOpaqueCaptureAddress :: #type proc "system" (device: Device, pInfo: ^DeviceMemoryOpaqueCaptureAddressInfo) -> u64 -ProcGetDeviceMemoryOpaqueCaptureAddressKHR :: #type proc "system" (device: Device, pInfo: ^DeviceMemoryOpaqueCaptureAddressInfo) -> u64 -ProcGetDeviceProcAddr :: #type proc "system" (device: Device, pName: cstring) -> ProcVoidFunction -ProcGetDeviceQueue :: #type proc "system" (device: Device, queueFamilyIndex: u32, queueIndex: u32, pQueue: ^Queue) -ProcGetDeviceQueue2 :: #type proc "system" (device: Device, pQueueInfo: ^DeviceQueueInfo2, pQueue: ^Queue) -ProcGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI :: #type proc "system" (device: Device, renderpass: RenderPass, pMaxWorkgroupSize: ^Extent2D) -> Result -ProcGetEventStatus :: #type proc "system" (device: Device, event: Event) -> Result -ProcGetFenceFdKHR :: #type proc "system" (device: Device, pGetFdInfo: ^FenceGetFdInfoKHR, pFd: ^c.int) -> Result -ProcGetFenceStatus :: #type proc "system" (device: Device, fence: Fence) -> Result -ProcGetFenceWin32HandleKHR :: #type proc "system" (device: Device, pGetWin32HandleInfo: ^FenceGetWin32HandleInfoKHR, pHandle: ^HANDLE) -> Result -ProcGetGeneratedCommandsMemoryRequirementsNV :: #type proc "system" (device: Device, pInfo: ^GeneratedCommandsMemoryRequirementsInfoNV, pMemoryRequirements: [^]MemoryRequirements2) -ProcGetImageDrmFormatModifierPropertiesEXT :: #type proc "system" (device: Device, image: Image, pProperties: [^]ImageDrmFormatModifierPropertiesEXT) -> Result -ProcGetImageMemoryRequirements :: #type proc "system" (device: Device, image: Image, pMemoryRequirements: [^]MemoryRequirements) -ProcGetImageMemoryRequirements2 :: #type proc "system" (device: Device, pInfo: ^ImageMemoryRequirementsInfo2, pMemoryRequirements: [^]MemoryRequirements2) -ProcGetImageMemoryRequirements2KHR :: #type proc "system" (device: Device, pInfo: ^ImageMemoryRequirementsInfo2, pMemoryRequirements: [^]MemoryRequirements2) -ProcGetImageSparseMemoryRequirements :: #type proc "system" (device: Device, image: Image, pSparseMemoryRequirementCount: ^u32, pSparseMemoryRequirements: [^]SparseImageMemoryRequirements) -ProcGetImageSparseMemoryRequirements2 :: #type proc "system" (device: Device, pInfo: ^ImageSparseMemoryRequirementsInfo2, pSparseMemoryRequirementCount: ^u32, pSparseMemoryRequirements: [^]SparseImageMemoryRequirements2) -ProcGetImageSparseMemoryRequirements2KHR :: #type proc "system" (device: Device, pInfo: ^ImageSparseMemoryRequirementsInfo2, pSparseMemoryRequirementCount: ^u32, pSparseMemoryRequirements: [^]SparseImageMemoryRequirements2) -ProcGetImageSubresourceLayout :: #type proc "system" (device: Device, image: Image, pSubresource: ^ImageSubresource, pLayout: ^SubresourceLayout) -ProcGetImageViewAddressNVX :: #type proc "system" (device: Device, imageView: ImageView, pProperties: [^]ImageViewAddressPropertiesNVX) -> Result -ProcGetImageViewHandleNVX :: #type proc "system" (device: Device, pInfo: ^ImageViewHandleInfoNVX) -> u32 -ProcGetMemoryFdKHR :: #type proc "system" (device: Device, pGetFdInfo: ^MemoryGetFdInfoKHR, pFd: ^c.int) -> Result -ProcGetMemoryFdPropertiesKHR :: #type proc "system" (device: Device, handleType: ExternalMemoryHandleTypeFlags, fd: c.int, pMemoryFdProperties: [^]MemoryFdPropertiesKHR) -> Result -ProcGetMemoryHostPointerPropertiesEXT :: #type proc "system" (device: Device, handleType: ExternalMemoryHandleTypeFlags, pHostPointer: rawptr, pMemoryHostPointerProperties: [^]MemoryHostPointerPropertiesEXT) -> Result -ProcGetMemoryRemoteAddressNV :: #type proc "system" (device: Device, pMemoryGetRemoteAddressInfo: ^MemoryGetRemoteAddressInfoNV, pAddress: [^]RemoteAddressNV) -> Result -ProcGetMemoryWin32HandleKHR :: #type proc "system" (device: Device, pGetWin32HandleInfo: ^MemoryGetWin32HandleInfoKHR, pHandle: ^HANDLE) -> Result -ProcGetMemoryWin32HandleNV :: #type proc "system" (device: Device, memory: DeviceMemory, handleType: ExternalMemoryHandleTypeFlagsNV, pHandle: ^HANDLE) -> Result -ProcGetMemoryWin32HandlePropertiesKHR :: #type proc "system" (device: Device, handleType: ExternalMemoryHandleTypeFlags, handle: HANDLE, pMemoryWin32HandleProperties: [^]MemoryWin32HandlePropertiesKHR) -> Result -ProcGetPastPresentationTimingGOOGLE :: #type proc "system" (device: Device, swapchain: SwapchainKHR, pPresentationTimingCount: ^u32, pPresentationTimings: [^]PastPresentationTimingGOOGLE) -> Result -ProcGetPerformanceParameterINTEL :: #type proc "system" (device: Device, parameter: PerformanceParameterTypeINTEL, pValue: ^PerformanceValueINTEL) -> Result -ProcGetPipelineCacheData :: #type proc "system" (device: Device, pipelineCache: PipelineCache, pDataSize: ^int, pData: rawptr) -> Result -ProcGetPipelineExecutableInternalRepresentationsKHR :: #type proc "system" (device: Device, pExecutableInfo: ^PipelineExecutableInfoKHR, pInternalRepresentationCount: ^u32, pInternalRepresentations: [^]PipelineExecutableInternalRepresentationKHR) -> Result -ProcGetPipelineExecutablePropertiesKHR :: #type proc "system" (device: Device, pPipelineInfo: ^PipelineInfoKHR, pExecutableCount: ^u32, pProperties: [^]PipelineExecutablePropertiesKHR) -> Result -ProcGetPipelineExecutableStatisticsKHR :: #type proc "system" (device: Device, pExecutableInfo: ^PipelineExecutableInfoKHR, pStatisticCount: ^u32, pStatistics: [^]PipelineExecutableStatisticKHR) -> Result -ProcGetPrivateData :: #type proc "system" (device: Device, objectType: ObjectType, objectHandle: u64, privateDataSlot: PrivateDataSlot, pData: ^u64) -ProcGetPrivateDataEXT :: #type proc "system" (device: Device, objectType: ObjectType, objectHandle: u64, privateDataSlot: PrivateDataSlot, pData: ^u64) -ProcGetQueryPoolResults :: #type proc "system" (device: Device, queryPool: QueryPool, firstQuery: u32, queryCount: u32, dataSize: int, pData: rawptr, stride: DeviceSize, flags: QueryResultFlags) -> Result -ProcGetQueueCheckpointData2NV :: #type proc "system" (queue: Queue, pCheckpointDataCount: ^u32, pCheckpointData: ^CheckpointData2NV) -ProcGetQueueCheckpointDataNV :: #type proc "system" (queue: Queue, pCheckpointDataCount: ^u32, pCheckpointData: ^CheckpointDataNV) -ProcGetRayTracingCaptureReplayShaderGroupHandlesKHR :: #type proc "system" (device: Device, pipeline: Pipeline, firstGroup: u32, groupCount: u32, dataSize: int, pData: rawptr) -> Result -ProcGetRayTracingShaderGroupHandlesKHR :: #type proc "system" (device: Device, pipeline: Pipeline, firstGroup: u32, groupCount: u32, dataSize: int, pData: rawptr) -> Result -ProcGetRayTracingShaderGroupHandlesNV :: #type proc "system" (device: Device, pipeline: Pipeline, firstGroup: u32, groupCount: u32, dataSize: int, pData: rawptr) -> Result -ProcGetRayTracingShaderGroupStackSizeKHR :: #type proc "system" (device: Device, pipeline: Pipeline, group: u32, groupShader: ShaderGroupShaderKHR) -> DeviceSize -ProcGetRefreshCycleDurationGOOGLE :: #type proc "system" (device: Device, swapchain: SwapchainKHR, pDisplayTimingProperties: [^]RefreshCycleDurationGOOGLE) -> Result -ProcGetRenderAreaGranularity :: #type proc "system" (device: Device, renderPass: RenderPass, pGranularity: ^Extent2D) -ProcGetSemaphoreCounterValue :: #type proc "system" (device: Device, semaphore: Semaphore, pValue: ^u64) -> Result -ProcGetSemaphoreCounterValueKHR :: #type proc "system" (device: Device, semaphore: Semaphore, pValue: ^u64) -> Result -ProcGetSemaphoreFdKHR :: #type proc "system" (device: Device, pGetFdInfo: ^SemaphoreGetFdInfoKHR, pFd: ^c.int) -> Result -ProcGetSemaphoreWin32HandleKHR :: #type proc "system" (device: Device, pGetWin32HandleInfo: ^SemaphoreGetWin32HandleInfoKHR, pHandle: ^HANDLE) -> Result -ProcGetShaderInfoAMD :: #type proc "system" (device: Device, pipeline: Pipeline, shaderStage: ShaderStageFlags, infoType: ShaderInfoTypeAMD, pInfoSize: ^int, pInfo: rawptr) -> Result -ProcGetSwapchainCounterEXT :: #type proc "system" (device: Device, swapchain: SwapchainKHR, counter: SurfaceCounterFlagsEXT, pCounterValue: ^u64) -> Result -ProcGetSwapchainImagesKHR :: #type proc "system" (device: Device, swapchain: SwapchainKHR, pSwapchainImageCount: ^u32, pSwapchainImages: [^]Image) -> Result -ProcGetSwapchainStatusKHR :: #type proc "system" (device: Device, swapchain: SwapchainKHR) -> Result -ProcGetValidationCacheDataEXT :: #type proc "system" (device: Device, validationCache: ValidationCacheEXT, pDataSize: ^int, pData: rawptr) -> Result -ProcImportFenceFdKHR :: #type proc "system" (device: Device, pImportFenceFdInfo: ^ImportFenceFdInfoKHR) -> Result -ProcImportFenceWin32HandleKHR :: #type proc "system" (device: Device, pImportFenceWin32HandleInfo: ^ImportFenceWin32HandleInfoKHR) -> Result -ProcImportSemaphoreFdKHR :: #type proc "system" (device: Device, pImportSemaphoreFdInfo: ^ImportSemaphoreFdInfoKHR) -> Result -ProcImportSemaphoreWin32HandleKHR :: #type proc "system" (device: Device, pImportSemaphoreWin32HandleInfo: ^ImportSemaphoreWin32HandleInfoKHR) -> Result -ProcInitializePerformanceApiINTEL :: #type proc "system" (device: Device, pInitializeInfo: ^InitializePerformanceApiInfoINTEL) -> Result -ProcInvalidateMappedMemoryRanges :: #type proc "system" (device: Device, memoryRangeCount: u32, pMemoryRanges: [^]MappedMemoryRange) -> Result -ProcMapMemory :: #type proc "system" (device: Device, memory: DeviceMemory, offset: DeviceSize, size: DeviceSize, flags: MemoryMapFlags, ppData: ^rawptr) -> Result -ProcMergePipelineCaches :: #type proc "system" (device: Device, dstCache: PipelineCache, srcCacheCount: u32, pSrcCaches: [^]PipelineCache) -> Result -ProcMergeValidationCachesEXT :: #type proc "system" (device: Device, dstCache: ValidationCacheEXT, srcCacheCount: u32, pSrcCaches: [^]ValidationCacheEXT) -> Result -ProcQueueBeginDebugUtilsLabelEXT :: #type proc "system" (queue: Queue, pLabelInfo: ^DebugUtilsLabelEXT) -ProcQueueBindSparse :: #type proc "system" (queue: Queue, bindInfoCount: u32, pBindInfo: ^BindSparseInfo, fence: Fence) -> Result -ProcQueueEndDebugUtilsLabelEXT :: #type proc "system" (queue: Queue) -ProcQueueInsertDebugUtilsLabelEXT :: #type proc "system" (queue: Queue, pLabelInfo: ^DebugUtilsLabelEXT) -ProcQueuePresentKHR :: #type proc "system" (queue: Queue, pPresentInfo: ^PresentInfoKHR) -> Result -ProcQueueSetPerformanceConfigurationINTEL :: #type proc "system" (queue: Queue, configuration: PerformanceConfigurationINTEL) -> Result -ProcQueueSubmit :: #type proc "system" (queue: Queue, submitCount: u32, pSubmits: [^]SubmitInfo, fence: Fence) -> Result -ProcQueueSubmit2 :: #type proc "system" (queue: Queue, submitCount: u32, pSubmits: [^]SubmitInfo2, fence: Fence) -> Result -ProcQueueSubmit2KHR :: #type proc "system" (queue: Queue, submitCount: u32, pSubmits: [^]SubmitInfo2, fence: Fence) -> Result -ProcQueueWaitIdle :: #type proc "system" (queue: Queue) -> Result -ProcRegisterDeviceEventEXT :: #type proc "system" (device: Device, pDeviceEventInfo: ^DeviceEventInfoEXT, pAllocator: ^AllocationCallbacks, pFence: ^Fence) -> Result -ProcRegisterDisplayEventEXT :: #type proc "system" (device: Device, display: DisplayKHR, pDisplayEventInfo: ^DisplayEventInfoEXT, pAllocator: ^AllocationCallbacks, pFence: ^Fence) -> Result -ProcReleaseFullScreenExclusiveModeEXT :: #type proc "system" (device: Device, swapchain: SwapchainKHR) -> Result -ProcReleasePerformanceConfigurationINTEL :: #type proc "system" (device: Device, configuration: PerformanceConfigurationINTEL) -> Result -ProcReleaseProfilingLockKHR :: #type proc "system" (device: Device) -ProcResetCommandBuffer :: #type proc "system" (commandBuffer: CommandBuffer, flags: CommandBufferResetFlags) -> Result -ProcResetCommandPool :: #type proc "system" (device: Device, commandPool: CommandPool, flags: CommandPoolResetFlags) -> Result -ProcResetDescriptorPool :: #type proc "system" (device: Device, descriptorPool: DescriptorPool, flags: DescriptorPoolResetFlags) -> Result -ProcResetEvent :: #type proc "system" (device: Device, event: Event) -> Result -ProcResetFences :: #type proc "system" (device: Device, fenceCount: u32, pFences: [^]Fence) -> Result -ProcResetQueryPool :: #type proc "system" (device: Device, queryPool: QueryPool, firstQuery: u32, queryCount: u32) -ProcResetQueryPoolEXT :: #type proc "system" (device: Device, queryPool: QueryPool, firstQuery: u32, queryCount: u32) -ProcSetDebugUtilsObjectNameEXT :: #type proc "system" (device: Device, pNameInfo: ^DebugUtilsObjectNameInfoEXT) -> Result -ProcSetDebugUtilsObjectTagEXT :: #type proc "system" (device: Device, pTagInfo: ^DebugUtilsObjectTagInfoEXT) -> Result -ProcSetDeviceMemoryPriorityEXT :: #type proc "system" (device: Device, memory: DeviceMemory, priority: f32) -ProcSetEvent :: #type proc "system" (device: Device, event: Event) -> Result -ProcSetHdrMetadataEXT :: #type proc "system" (device: Device, swapchainCount: u32, pSwapchains: [^]SwapchainKHR, pMetadata: ^HdrMetadataEXT) -ProcSetLocalDimmingAMD :: #type proc "system" (device: Device, swapChain: SwapchainKHR, localDimmingEnable: b32) -ProcSetPrivateData :: #type proc "system" (device: Device, objectType: ObjectType, objectHandle: u64, privateDataSlot: PrivateDataSlot, data: u64) -> Result -ProcSetPrivateDataEXT :: #type proc "system" (device: Device, objectType: ObjectType, objectHandle: u64, privateDataSlot: PrivateDataSlot, data: u64) -> Result -ProcSignalSemaphore :: #type proc "system" (device: Device, pSignalInfo: ^SemaphoreSignalInfo) -> Result -ProcSignalSemaphoreKHR :: #type proc "system" (device: Device, pSignalInfo: ^SemaphoreSignalInfo) -> Result -ProcTrimCommandPool :: #type proc "system" (device: Device, commandPool: CommandPool, flags: CommandPoolTrimFlags) -ProcTrimCommandPoolKHR :: #type proc "system" (device: Device, commandPool: CommandPool, flags: CommandPoolTrimFlags) -ProcUninitializePerformanceApiINTEL :: #type proc "system" (device: Device) -ProcUnmapMemory :: #type proc "system" (device: Device, memory: DeviceMemory) -ProcUpdateDescriptorSetWithTemplate :: #type proc "system" (device: Device, descriptorSet: DescriptorSet, descriptorUpdateTemplate: DescriptorUpdateTemplate, pData: rawptr) -ProcUpdateDescriptorSetWithTemplateKHR :: #type proc "system" (device: Device, descriptorSet: DescriptorSet, descriptorUpdateTemplate: DescriptorUpdateTemplate, pData: rawptr) -ProcUpdateDescriptorSets :: #type proc "system" (device: Device, descriptorWriteCount: u32, pDescriptorWrites: [^]WriteDescriptorSet, descriptorCopyCount: u32, pDescriptorCopies: [^]CopyDescriptorSet) -ProcWaitForFences :: #type proc "system" (device: Device, fenceCount: u32, pFences: [^]Fence, waitAll: b32, timeout: u64) -> Result -ProcWaitForPresentKHR :: #type proc "system" (device: Device, swapchain: SwapchainKHR, presentId: u64, timeout: u64) -> Result -ProcWaitSemaphores :: #type proc "system" (device: Device, pWaitInfo: ^SemaphoreWaitInfo, timeout: u64) -> Result -ProcWaitSemaphoresKHR :: #type proc "system" (device: Device, pWaitInfo: ^SemaphoreWaitInfo, timeout: u64) -> Result -ProcWriteAccelerationStructuresPropertiesKHR :: #type proc "system" (device: Device, accelerationStructureCount: u32, pAccelerationStructures: [^]AccelerationStructureKHR, queryType: QueryType, dataSize: int, pData: rawptr, stride: int) -> Result - - -// Loader Procedures -CreateInstance: ProcCreateInstance -DebugUtilsMessengerCallbackEXT: ProcDebugUtilsMessengerCallbackEXT -DeviceMemoryReportCallbackEXT: ProcDeviceMemoryReportCallbackEXT -EnumerateInstanceExtensionProperties: ProcEnumerateInstanceExtensionProperties -EnumerateInstanceLayerProperties: ProcEnumerateInstanceLayerProperties -EnumerateInstanceVersion: ProcEnumerateInstanceVersion -GetInstanceProcAddr: ProcGetInstanceProcAddr - -// Instance Procedures -AcquireDrmDisplayEXT: ProcAcquireDrmDisplayEXT -AcquireWinrtDisplayNV: ProcAcquireWinrtDisplayNV -CreateDebugReportCallbackEXT: ProcCreateDebugReportCallbackEXT -CreateDebugUtilsMessengerEXT: ProcCreateDebugUtilsMessengerEXT -CreateDevice: ProcCreateDevice -CreateDisplayModeKHR: ProcCreateDisplayModeKHR -CreateDisplayPlaneSurfaceKHR: ProcCreateDisplayPlaneSurfaceKHR -CreateHeadlessSurfaceEXT: ProcCreateHeadlessSurfaceEXT -CreateIOSSurfaceMVK: ProcCreateIOSSurfaceMVK -CreateMacOSSurfaceMVK: ProcCreateMacOSSurfaceMVK -CreateMetalSurfaceEXT: ProcCreateMetalSurfaceEXT -CreateWin32SurfaceKHR: ProcCreateWin32SurfaceKHR -DebugReportMessageEXT: ProcDebugReportMessageEXT -DestroyDebugReportCallbackEXT: ProcDestroyDebugReportCallbackEXT -DestroyDebugUtilsMessengerEXT: ProcDestroyDebugUtilsMessengerEXT -DestroyInstance: ProcDestroyInstance -DestroySurfaceKHR: ProcDestroySurfaceKHR -EnumerateDeviceExtensionProperties: ProcEnumerateDeviceExtensionProperties -EnumerateDeviceLayerProperties: ProcEnumerateDeviceLayerProperties -EnumeratePhysicalDeviceGroups: ProcEnumeratePhysicalDeviceGroups -EnumeratePhysicalDeviceGroupsKHR: ProcEnumeratePhysicalDeviceGroupsKHR -EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR: ProcEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR -EnumeratePhysicalDevices: ProcEnumeratePhysicalDevices -GetDisplayModeProperties2KHR: ProcGetDisplayModeProperties2KHR -GetDisplayModePropertiesKHR: ProcGetDisplayModePropertiesKHR -GetDisplayPlaneCapabilities2KHR: ProcGetDisplayPlaneCapabilities2KHR -GetDisplayPlaneCapabilitiesKHR: ProcGetDisplayPlaneCapabilitiesKHR -GetDisplayPlaneSupportedDisplaysKHR: ProcGetDisplayPlaneSupportedDisplaysKHR -GetDrmDisplayEXT: ProcGetDrmDisplayEXT -GetPhysicalDeviceCalibrateableTimeDomainsEXT: ProcGetPhysicalDeviceCalibrateableTimeDomainsEXT -GetPhysicalDeviceCooperativeMatrixPropertiesNV: ProcGetPhysicalDeviceCooperativeMatrixPropertiesNV -GetPhysicalDeviceDisplayPlaneProperties2KHR: ProcGetPhysicalDeviceDisplayPlaneProperties2KHR -GetPhysicalDeviceDisplayPlanePropertiesKHR: ProcGetPhysicalDeviceDisplayPlanePropertiesKHR -GetPhysicalDeviceDisplayProperties2KHR: ProcGetPhysicalDeviceDisplayProperties2KHR -GetPhysicalDeviceDisplayPropertiesKHR: ProcGetPhysicalDeviceDisplayPropertiesKHR -GetPhysicalDeviceExternalBufferProperties: ProcGetPhysicalDeviceExternalBufferProperties -GetPhysicalDeviceExternalBufferPropertiesKHR: ProcGetPhysicalDeviceExternalBufferPropertiesKHR -GetPhysicalDeviceExternalFenceProperties: ProcGetPhysicalDeviceExternalFenceProperties -GetPhysicalDeviceExternalFencePropertiesKHR: ProcGetPhysicalDeviceExternalFencePropertiesKHR -GetPhysicalDeviceExternalImageFormatPropertiesNV: ProcGetPhysicalDeviceExternalImageFormatPropertiesNV -GetPhysicalDeviceExternalSemaphoreProperties: ProcGetPhysicalDeviceExternalSemaphoreProperties -GetPhysicalDeviceExternalSemaphorePropertiesKHR: ProcGetPhysicalDeviceExternalSemaphorePropertiesKHR -GetPhysicalDeviceFeatures: ProcGetPhysicalDeviceFeatures -GetPhysicalDeviceFeatures2: ProcGetPhysicalDeviceFeatures2 -GetPhysicalDeviceFeatures2KHR: ProcGetPhysicalDeviceFeatures2KHR -GetPhysicalDeviceFormatProperties: ProcGetPhysicalDeviceFormatProperties -GetPhysicalDeviceFormatProperties2: ProcGetPhysicalDeviceFormatProperties2 -GetPhysicalDeviceFormatProperties2KHR: ProcGetPhysicalDeviceFormatProperties2KHR -GetPhysicalDeviceFragmentShadingRatesKHR: ProcGetPhysicalDeviceFragmentShadingRatesKHR -GetPhysicalDeviceImageFormatProperties: ProcGetPhysicalDeviceImageFormatProperties -GetPhysicalDeviceImageFormatProperties2: ProcGetPhysicalDeviceImageFormatProperties2 -GetPhysicalDeviceImageFormatProperties2KHR: ProcGetPhysicalDeviceImageFormatProperties2KHR -GetPhysicalDeviceMemoryProperties: ProcGetPhysicalDeviceMemoryProperties -GetPhysicalDeviceMemoryProperties2: ProcGetPhysicalDeviceMemoryProperties2 -GetPhysicalDeviceMemoryProperties2KHR: ProcGetPhysicalDeviceMemoryProperties2KHR -GetPhysicalDeviceMultisamplePropertiesEXT: ProcGetPhysicalDeviceMultisamplePropertiesEXT -GetPhysicalDevicePresentRectanglesKHR: ProcGetPhysicalDevicePresentRectanglesKHR -GetPhysicalDeviceProperties: ProcGetPhysicalDeviceProperties -GetPhysicalDeviceProperties2: ProcGetPhysicalDeviceProperties2 -GetPhysicalDeviceProperties2KHR: ProcGetPhysicalDeviceProperties2KHR -GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR: ProcGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR -GetPhysicalDeviceQueueFamilyProperties: ProcGetPhysicalDeviceQueueFamilyProperties -GetPhysicalDeviceQueueFamilyProperties2: ProcGetPhysicalDeviceQueueFamilyProperties2 -GetPhysicalDeviceQueueFamilyProperties2KHR: ProcGetPhysicalDeviceQueueFamilyProperties2KHR -GetPhysicalDeviceSparseImageFormatProperties: ProcGetPhysicalDeviceSparseImageFormatProperties -GetPhysicalDeviceSparseImageFormatProperties2: ProcGetPhysicalDeviceSparseImageFormatProperties2 -GetPhysicalDeviceSparseImageFormatProperties2KHR: ProcGetPhysicalDeviceSparseImageFormatProperties2KHR -GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV: ProcGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV -GetPhysicalDeviceSurfaceCapabilities2EXT: ProcGetPhysicalDeviceSurfaceCapabilities2EXT -GetPhysicalDeviceSurfaceCapabilities2KHR: ProcGetPhysicalDeviceSurfaceCapabilities2KHR -GetPhysicalDeviceSurfaceCapabilitiesKHR: ProcGetPhysicalDeviceSurfaceCapabilitiesKHR -GetPhysicalDeviceSurfaceFormats2KHR: ProcGetPhysicalDeviceSurfaceFormats2KHR -GetPhysicalDeviceSurfaceFormatsKHR: ProcGetPhysicalDeviceSurfaceFormatsKHR -GetPhysicalDeviceSurfacePresentModes2EXT: ProcGetPhysicalDeviceSurfacePresentModes2EXT -GetPhysicalDeviceSurfacePresentModesKHR: ProcGetPhysicalDeviceSurfacePresentModesKHR -GetPhysicalDeviceSurfaceSupportKHR: ProcGetPhysicalDeviceSurfaceSupportKHR -GetPhysicalDeviceToolProperties: ProcGetPhysicalDeviceToolProperties -GetPhysicalDeviceToolPropertiesEXT: ProcGetPhysicalDeviceToolPropertiesEXT -GetPhysicalDeviceWin32PresentationSupportKHR: ProcGetPhysicalDeviceWin32PresentationSupportKHR -GetWinrtDisplayNV: ProcGetWinrtDisplayNV -ReleaseDisplayEXT: ProcReleaseDisplayEXT -SubmitDebugUtilsMessageEXT: ProcSubmitDebugUtilsMessageEXT - -// Device Procedures -AcquireFullScreenExclusiveModeEXT: ProcAcquireFullScreenExclusiveModeEXT -AcquireNextImage2KHR: ProcAcquireNextImage2KHR -AcquireNextImageKHR: ProcAcquireNextImageKHR -AcquirePerformanceConfigurationINTEL: ProcAcquirePerformanceConfigurationINTEL -AcquireProfilingLockKHR: ProcAcquireProfilingLockKHR -AllocateCommandBuffers: ProcAllocateCommandBuffers -AllocateDescriptorSets: ProcAllocateDescriptorSets -AllocateMemory: ProcAllocateMemory -BeginCommandBuffer: ProcBeginCommandBuffer -BindAccelerationStructureMemoryNV: ProcBindAccelerationStructureMemoryNV -BindBufferMemory: ProcBindBufferMemory -BindBufferMemory2: ProcBindBufferMemory2 -BindBufferMemory2KHR: ProcBindBufferMemory2KHR -BindImageMemory: ProcBindImageMemory -BindImageMemory2: ProcBindImageMemory2 -BindImageMemory2KHR: ProcBindImageMemory2KHR -BuildAccelerationStructuresKHR: ProcBuildAccelerationStructuresKHR -CmdBeginConditionalRenderingEXT: ProcCmdBeginConditionalRenderingEXT -CmdBeginDebugUtilsLabelEXT: ProcCmdBeginDebugUtilsLabelEXT -CmdBeginQuery: ProcCmdBeginQuery -CmdBeginQueryIndexedEXT: ProcCmdBeginQueryIndexedEXT -CmdBeginRenderPass: ProcCmdBeginRenderPass -CmdBeginRenderPass2: ProcCmdBeginRenderPass2 -CmdBeginRenderPass2KHR: ProcCmdBeginRenderPass2KHR -CmdBeginRendering: ProcCmdBeginRendering -CmdBeginRenderingKHR: ProcCmdBeginRenderingKHR -CmdBeginTransformFeedbackEXT: ProcCmdBeginTransformFeedbackEXT -CmdBindDescriptorSets: ProcCmdBindDescriptorSets -CmdBindIndexBuffer: ProcCmdBindIndexBuffer -CmdBindInvocationMaskHUAWEI: ProcCmdBindInvocationMaskHUAWEI -CmdBindPipeline: ProcCmdBindPipeline -CmdBindPipelineShaderGroupNV: ProcCmdBindPipelineShaderGroupNV -CmdBindShadingRateImageNV: ProcCmdBindShadingRateImageNV -CmdBindTransformFeedbackBuffersEXT: ProcCmdBindTransformFeedbackBuffersEXT -CmdBindVertexBuffers: ProcCmdBindVertexBuffers -CmdBindVertexBuffers2: ProcCmdBindVertexBuffers2 -CmdBindVertexBuffers2EXT: ProcCmdBindVertexBuffers2EXT -CmdBlitImage: ProcCmdBlitImage -CmdBlitImage2: ProcCmdBlitImage2 -CmdBlitImage2KHR: ProcCmdBlitImage2KHR -CmdBuildAccelerationStructureNV: ProcCmdBuildAccelerationStructureNV -CmdBuildAccelerationStructuresIndirectKHR: ProcCmdBuildAccelerationStructuresIndirectKHR -CmdBuildAccelerationStructuresKHR: ProcCmdBuildAccelerationStructuresKHR -CmdClearAttachments: ProcCmdClearAttachments -CmdClearColorImage: ProcCmdClearColorImage -CmdClearDepthStencilImage: ProcCmdClearDepthStencilImage -CmdCopyAccelerationStructureKHR: ProcCmdCopyAccelerationStructureKHR -CmdCopyAccelerationStructureNV: ProcCmdCopyAccelerationStructureNV -CmdCopyAccelerationStructureToMemoryKHR: ProcCmdCopyAccelerationStructureToMemoryKHR -CmdCopyBuffer: ProcCmdCopyBuffer -CmdCopyBuffer2: ProcCmdCopyBuffer2 -CmdCopyBuffer2KHR: ProcCmdCopyBuffer2KHR -CmdCopyBufferToImage: ProcCmdCopyBufferToImage -CmdCopyBufferToImage2: ProcCmdCopyBufferToImage2 -CmdCopyBufferToImage2KHR: ProcCmdCopyBufferToImage2KHR -CmdCopyImage: ProcCmdCopyImage -CmdCopyImage2: ProcCmdCopyImage2 -CmdCopyImage2KHR: ProcCmdCopyImage2KHR -CmdCopyImageToBuffer: ProcCmdCopyImageToBuffer -CmdCopyImageToBuffer2: ProcCmdCopyImageToBuffer2 -CmdCopyImageToBuffer2KHR: ProcCmdCopyImageToBuffer2KHR -CmdCopyMemoryToAccelerationStructureKHR: ProcCmdCopyMemoryToAccelerationStructureKHR -CmdCopyQueryPoolResults: ProcCmdCopyQueryPoolResults -CmdCuLaunchKernelNVX: ProcCmdCuLaunchKernelNVX -CmdDebugMarkerBeginEXT: ProcCmdDebugMarkerBeginEXT -CmdDebugMarkerEndEXT: ProcCmdDebugMarkerEndEXT -CmdDebugMarkerInsertEXT: ProcCmdDebugMarkerInsertEXT -CmdDispatch: ProcCmdDispatch -CmdDispatchBase: ProcCmdDispatchBase -CmdDispatchBaseKHR: ProcCmdDispatchBaseKHR -CmdDispatchIndirect: ProcCmdDispatchIndirect -CmdDraw: ProcCmdDraw -CmdDrawIndexed: ProcCmdDrawIndexed -CmdDrawIndexedIndirect: ProcCmdDrawIndexedIndirect -CmdDrawIndexedIndirectCount: ProcCmdDrawIndexedIndirectCount -CmdDrawIndexedIndirectCountAMD: ProcCmdDrawIndexedIndirectCountAMD -CmdDrawIndexedIndirectCountKHR: ProcCmdDrawIndexedIndirectCountKHR -CmdDrawIndirect: ProcCmdDrawIndirect -CmdDrawIndirectByteCountEXT: ProcCmdDrawIndirectByteCountEXT -CmdDrawIndirectCount: ProcCmdDrawIndirectCount -CmdDrawIndirectCountAMD: ProcCmdDrawIndirectCountAMD -CmdDrawIndirectCountKHR: ProcCmdDrawIndirectCountKHR -CmdDrawMeshTasksIndirectCountNV: ProcCmdDrawMeshTasksIndirectCountNV -CmdDrawMeshTasksIndirectNV: ProcCmdDrawMeshTasksIndirectNV -CmdDrawMeshTasksNV: ProcCmdDrawMeshTasksNV -CmdDrawMultiEXT: ProcCmdDrawMultiEXT -CmdDrawMultiIndexedEXT: ProcCmdDrawMultiIndexedEXT -CmdEndConditionalRenderingEXT: ProcCmdEndConditionalRenderingEXT -CmdEndDebugUtilsLabelEXT: ProcCmdEndDebugUtilsLabelEXT -CmdEndQuery: ProcCmdEndQuery -CmdEndQueryIndexedEXT: ProcCmdEndQueryIndexedEXT -CmdEndRenderPass: ProcCmdEndRenderPass -CmdEndRenderPass2: ProcCmdEndRenderPass2 -CmdEndRenderPass2KHR: ProcCmdEndRenderPass2KHR -CmdEndRendering: ProcCmdEndRendering -CmdEndRenderingKHR: ProcCmdEndRenderingKHR -CmdEndTransformFeedbackEXT: ProcCmdEndTransformFeedbackEXT -CmdExecuteCommands: ProcCmdExecuteCommands -CmdExecuteGeneratedCommandsNV: ProcCmdExecuteGeneratedCommandsNV -CmdFillBuffer: ProcCmdFillBuffer -CmdInsertDebugUtilsLabelEXT: ProcCmdInsertDebugUtilsLabelEXT -CmdNextSubpass: ProcCmdNextSubpass -CmdNextSubpass2: ProcCmdNextSubpass2 -CmdNextSubpass2KHR: ProcCmdNextSubpass2KHR -CmdPipelineBarrier: ProcCmdPipelineBarrier -CmdPipelineBarrier2: ProcCmdPipelineBarrier2 -CmdPipelineBarrier2KHR: ProcCmdPipelineBarrier2KHR -CmdPreprocessGeneratedCommandsNV: ProcCmdPreprocessGeneratedCommandsNV -CmdPushConstants: ProcCmdPushConstants -CmdPushDescriptorSetKHR: ProcCmdPushDescriptorSetKHR -CmdPushDescriptorSetWithTemplateKHR: ProcCmdPushDescriptorSetWithTemplateKHR -CmdResetEvent: ProcCmdResetEvent -CmdResetEvent2: ProcCmdResetEvent2 -CmdResetEvent2KHR: ProcCmdResetEvent2KHR -CmdResetQueryPool: ProcCmdResetQueryPool -CmdResolveImage: ProcCmdResolveImage -CmdResolveImage2: ProcCmdResolveImage2 -CmdResolveImage2KHR: ProcCmdResolveImage2KHR -CmdSetBlendConstants: ProcCmdSetBlendConstants -CmdSetCheckpointNV: ProcCmdSetCheckpointNV -CmdSetCoarseSampleOrderNV: ProcCmdSetCoarseSampleOrderNV -CmdSetCullMode: ProcCmdSetCullMode -CmdSetCullModeEXT: ProcCmdSetCullModeEXT -CmdSetDepthBias: ProcCmdSetDepthBias -CmdSetDepthBiasEnable: ProcCmdSetDepthBiasEnable -CmdSetDepthBiasEnableEXT: ProcCmdSetDepthBiasEnableEXT -CmdSetDepthBounds: ProcCmdSetDepthBounds -CmdSetDepthBoundsTestEnable: ProcCmdSetDepthBoundsTestEnable -CmdSetDepthBoundsTestEnableEXT: ProcCmdSetDepthBoundsTestEnableEXT -CmdSetDepthCompareOp: ProcCmdSetDepthCompareOp -CmdSetDepthCompareOpEXT: ProcCmdSetDepthCompareOpEXT -CmdSetDepthTestEnable: ProcCmdSetDepthTestEnable -CmdSetDepthTestEnableEXT: ProcCmdSetDepthTestEnableEXT -CmdSetDepthWriteEnable: ProcCmdSetDepthWriteEnable -CmdSetDepthWriteEnableEXT: ProcCmdSetDepthWriteEnableEXT -CmdSetDeviceMask: ProcCmdSetDeviceMask -CmdSetDeviceMaskKHR: ProcCmdSetDeviceMaskKHR -CmdSetDiscardRectangleEXT: ProcCmdSetDiscardRectangleEXT -CmdSetEvent: ProcCmdSetEvent -CmdSetEvent2: ProcCmdSetEvent2 -CmdSetEvent2KHR: ProcCmdSetEvent2KHR -CmdSetExclusiveScissorNV: ProcCmdSetExclusiveScissorNV -CmdSetFragmentShadingRateEnumNV: ProcCmdSetFragmentShadingRateEnumNV -CmdSetFragmentShadingRateKHR: ProcCmdSetFragmentShadingRateKHR -CmdSetFrontFace: ProcCmdSetFrontFace -CmdSetFrontFaceEXT: ProcCmdSetFrontFaceEXT -CmdSetLineStippleEXT: ProcCmdSetLineStippleEXT -CmdSetLineWidth: ProcCmdSetLineWidth -CmdSetLogicOpEXT: ProcCmdSetLogicOpEXT -CmdSetPatchControlPointsEXT: ProcCmdSetPatchControlPointsEXT -CmdSetPerformanceMarkerINTEL: ProcCmdSetPerformanceMarkerINTEL -CmdSetPerformanceOverrideINTEL: ProcCmdSetPerformanceOverrideINTEL -CmdSetPerformanceStreamMarkerINTEL: ProcCmdSetPerformanceStreamMarkerINTEL -CmdSetPrimitiveRestartEnable: ProcCmdSetPrimitiveRestartEnable -CmdSetPrimitiveRestartEnableEXT: ProcCmdSetPrimitiveRestartEnableEXT -CmdSetPrimitiveTopology: ProcCmdSetPrimitiveTopology -CmdSetPrimitiveTopologyEXT: ProcCmdSetPrimitiveTopologyEXT -CmdSetRasterizerDiscardEnable: ProcCmdSetRasterizerDiscardEnable -CmdSetRasterizerDiscardEnableEXT: ProcCmdSetRasterizerDiscardEnableEXT -CmdSetRayTracingPipelineStackSizeKHR: ProcCmdSetRayTracingPipelineStackSizeKHR -CmdSetSampleLocationsEXT: ProcCmdSetSampleLocationsEXT -CmdSetScissor: ProcCmdSetScissor -CmdSetScissorWithCount: ProcCmdSetScissorWithCount -CmdSetScissorWithCountEXT: ProcCmdSetScissorWithCountEXT -CmdSetStencilCompareMask: ProcCmdSetStencilCompareMask -CmdSetStencilOp: ProcCmdSetStencilOp -CmdSetStencilOpEXT: ProcCmdSetStencilOpEXT -CmdSetStencilReference: ProcCmdSetStencilReference -CmdSetStencilTestEnable: ProcCmdSetStencilTestEnable -CmdSetStencilTestEnableEXT: ProcCmdSetStencilTestEnableEXT -CmdSetStencilWriteMask: ProcCmdSetStencilWriteMask -CmdSetVertexInputEXT: ProcCmdSetVertexInputEXT -CmdSetViewport: ProcCmdSetViewport -CmdSetViewportShadingRatePaletteNV: ProcCmdSetViewportShadingRatePaletteNV -CmdSetViewportWScalingNV: ProcCmdSetViewportWScalingNV -CmdSetViewportWithCount: ProcCmdSetViewportWithCount -CmdSetViewportWithCountEXT: ProcCmdSetViewportWithCountEXT -CmdSubpassShadingHUAWEI: ProcCmdSubpassShadingHUAWEI -CmdTraceRaysIndirectKHR: ProcCmdTraceRaysIndirectKHR -CmdTraceRaysKHR: ProcCmdTraceRaysKHR -CmdTraceRaysNV: ProcCmdTraceRaysNV -CmdUpdateBuffer: ProcCmdUpdateBuffer -CmdWaitEvents: ProcCmdWaitEvents -CmdWaitEvents2: ProcCmdWaitEvents2 -CmdWaitEvents2KHR: ProcCmdWaitEvents2KHR -CmdWriteAccelerationStructuresPropertiesKHR: ProcCmdWriteAccelerationStructuresPropertiesKHR -CmdWriteAccelerationStructuresPropertiesNV: ProcCmdWriteAccelerationStructuresPropertiesNV -CmdWriteBufferMarker2AMD: ProcCmdWriteBufferMarker2AMD -CmdWriteBufferMarkerAMD: ProcCmdWriteBufferMarkerAMD -CmdWriteTimestamp: ProcCmdWriteTimestamp -CmdWriteTimestamp2: ProcCmdWriteTimestamp2 -CmdWriteTimestamp2KHR: ProcCmdWriteTimestamp2KHR -CompileDeferredNV: ProcCompileDeferredNV -CopyAccelerationStructureKHR: ProcCopyAccelerationStructureKHR -CopyAccelerationStructureToMemoryKHR: ProcCopyAccelerationStructureToMemoryKHR -CopyMemoryToAccelerationStructureKHR: ProcCopyMemoryToAccelerationStructureKHR -CreateAccelerationStructureKHR: ProcCreateAccelerationStructureKHR -CreateAccelerationStructureNV: ProcCreateAccelerationStructureNV -CreateBuffer: ProcCreateBuffer -CreateBufferView: ProcCreateBufferView -CreateCommandPool: ProcCreateCommandPool -CreateComputePipelines: ProcCreateComputePipelines -CreateCuFunctionNVX: ProcCreateCuFunctionNVX -CreateCuModuleNVX: ProcCreateCuModuleNVX -CreateDeferredOperationKHR: ProcCreateDeferredOperationKHR -CreateDescriptorPool: ProcCreateDescriptorPool -CreateDescriptorSetLayout: ProcCreateDescriptorSetLayout -CreateDescriptorUpdateTemplate: ProcCreateDescriptorUpdateTemplate -CreateDescriptorUpdateTemplateKHR: ProcCreateDescriptorUpdateTemplateKHR -CreateEvent: ProcCreateEvent -CreateFence: ProcCreateFence -CreateFramebuffer: ProcCreateFramebuffer -CreateGraphicsPipelines: ProcCreateGraphicsPipelines -CreateImage: ProcCreateImage -CreateImageView: ProcCreateImageView -CreateIndirectCommandsLayoutNV: ProcCreateIndirectCommandsLayoutNV -CreatePipelineCache: ProcCreatePipelineCache -CreatePipelineLayout: ProcCreatePipelineLayout -CreatePrivateDataSlot: ProcCreatePrivateDataSlot -CreatePrivateDataSlotEXT: ProcCreatePrivateDataSlotEXT -CreateQueryPool: ProcCreateQueryPool -CreateRayTracingPipelinesKHR: ProcCreateRayTracingPipelinesKHR -CreateRayTracingPipelinesNV: ProcCreateRayTracingPipelinesNV -CreateRenderPass: ProcCreateRenderPass -CreateRenderPass2: ProcCreateRenderPass2 -CreateRenderPass2KHR: ProcCreateRenderPass2KHR -CreateSampler: ProcCreateSampler -CreateSamplerYcbcrConversion: ProcCreateSamplerYcbcrConversion -CreateSamplerYcbcrConversionKHR: ProcCreateSamplerYcbcrConversionKHR -CreateSemaphore: ProcCreateSemaphore -CreateShaderModule: ProcCreateShaderModule -CreateSharedSwapchainsKHR: ProcCreateSharedSwapchainsKHR -CreateSwapchainKHR: ProcCreateSwapchainKHR -CreateValidationCacheEXT: ProcCreateValidationCacheEXT -DebugMarkerSetObjectNameEXT: ProcDebugMarkerSetObjectNameEXT -DebugMarkerSetObjectTagEXT: ProcDebugMarkerSetObjectTagEXT -DeferredOperationJoinKHR: ProcDeferredOperationJoinKHR -DestroyAccelerationStructureKHR: ProcDestroyAccelerationStructureKHR -DestroyAccelerationStructureNV: ProcDestroyAccelerationStructureNV -DestroyBuffer: ProcDestroyBuffer -DestroyBufferView: ProcDestroyBufferView -DestroyCommandPool: ProcDestroyCommandPool -DestroyCuFunctionNVX: ProcDestroyCuFunctionNVX -DestroyCuModuleNVX: ProcDestroyCuModuleNVX -DestroyDeferredOperationKHR: ProcDestroyDeferredOperationKHR -DestroyDescriptorPool: ProcDestroyDescriptorPool -DestroyDescriptorSetLayout: ProcDestroyDescriptorSetLayout -DestroyDescriptorUpdateTemplate: ProcDestroyDescriptorUpdateTemplate -DestroyDescriptorUpdateTemplateKHR: ProcDestroyDescriptorUpdateTemplateKHR -DestroyDevice: ProcDestroyDevice -DestroyEvent: ProcDestroyEvent -DestroyFence: ProcDestroyFence -DestroyFramebuffer: ProcDestroyFramebuffer -DestroyImage: ProcDestroyImage -DestroyImageView: ProcDestroyImageView -DestroyIndirectCommandsLayoutNV: ProcDestroyIndirectCommandsLayoutNV -DestroyPipeline: ProcDestroyPipeline -DestroyPipelineCache: ProcDestroyPipelineCache -DestroyPipelineLayout: ProcDestroyPipelineLayout -DestroyPrivateDataSlot: ProcDestroyPrivateDataSlot -DestroyPrivateDataSlotEXT: ProcDestroyPrivateDataSlotEXT -DestroyQueryPool: ProcDestroyQueryPool -DestroyRenderPass: ProcDestroyRenderPass -DestroySampler: ProcDestroySampler -DestroySamplerYcbcrConversion: ProcDestroySamplerYcbcrConversion -DestroySamplerYcbcrConversionKHR: ProcDestroySamplerYcbcrConversionKHR -DestroySemaphore: ProcDestroySemaphore -DestroyShaderModule: ProcDestroyShaderModule -DestroySwapchainKHR: ProcDestroySwapchainKHR -DestroyValidationCacheEXT: ProcDestroyValidationCacheEXT -DeviceWaitIdle: ProcDeviceWaitIdle -DisplayPowerControlEXT: ProcDisplayPowerControlEXT -EndCommandBuffer: ProcEndCommandBuffer -FlushMappedMemoryRanges: ProcFlushMappedMemoryRanges -FreeCommandBuffers: ProcFreeCommandBuffers -FreeDescriptorSets: ProcFreeDescriptorSets -FreeMemory: ProcFreeMemory -GetAccelerationStructureBuildSizesKHR: ProcGetAccelerationStructureBuildSizesKHR -GetAccelerationStructureDeviceAddressKHR: ProcGetAccelerationStructureDeviceAddressKHR -GetAccelerationStructureHandleNV: ProcGetAccelerationStructureHandleNV -GetAccelerationStructureMemoryRequirementsNV: ProcGetAccelerationStructureMemoryRequirementsNV -GetBufferDeviceAddress: ProcGetBufferDeviceAddress -GetBufferDeviceAddressEXT: ProcGetBufferDeviceAddressEXT -GetBufferDeviceAddressKHR: ProcGetBufferDeviceAddressKHR -GetBufferMemoryRequirements: ProcGetBufferMemoryRequirements -GetBufferMemoryRequirements2: ProcGetBufferMemoryRequirements2 -GetBufferMemoryRequirements2KHR: ProcGetBufferMemoryRequirements2KHR -GetBufferOpaqueCaptureAddress: ProcGetBufferOpaqueCaptureAddress -GetBufferOpaqueCaptureAddressKHR: ProcGetBufferOpaqueCaptureAddressKHR -GetCalibratedTimestampsEXT: ProcGetCalibratedTimestampsEXT -GetDeferredOperationMaxConcurrencyKHR: ProcGetDeferredOperationMaxConcurrencyKHR -GetDeferredOperationResultKHR: ProcGetDeferredOperationResultKHR -GetDescriptorSetHostMappingVALVE: ProcGetDescriptorSetHostMappingVALVE -GetDescriptorSetLayoutHostMappingInfoVALVE: ProcGetDescriptorSetLayoutHostMappingInfoVALVE -GetDescriptorSetLayoutSupport: ProcGetDescriptorSetLayoutSupport -GetDescriptorSetLayoutSupportKHR: ProcGetDescriptorSetLayoutSupportKHR -GetDeviceAccelerationStructureCompatibilityKHR: ProcGetDeviceAccelerationStructureCompatibilityKHR -GetDeviceBufferMemoryRequirements: ProcGetDeviceBufferMemoryRequirements -GetDeviceBufferMemoryRequirementsKHR: ProcGetDeviceBufferMemoryRequirementsKHR -GetDeviceGroupPeerMemoryFeatures: ProcGetDeviceGroupPeerMemoryFeatures -GetDeviceGroupPeerMemoryFeaturesKHR: ProcGetDeviceGroupPeerMemoryFeaturesKHR -GetDeviceGroupPresentCapabilitiesKHR: ProcGetDeviceGroupPresentCapabilitiesKHR -GetDeviceGroupSurfacePresentModes2EXT: ProcGetDeviceGroupSurfacePresentModes2EXT -GetDeviceGroupSurfacePresentModesKHR: ProcGetDeviceGroupSurfacePresentModesKHR -GetDeviceImageMemoryRequirements: ProcGetDeviceImageMemoryRequirements -GetDeviceImageMemoryRequirementsKHR: ProcGetDeviceImageMemoryRequirementsKHR -GetDeviceImageSparseMemoryRequirements: ProcGetDeviceImageSparseMemoryRequirements -GetDeviceImageSparseMemoryRequirementsKHR: ProcGetDeviceImageSparseMemoryRequirementsKHR -GetDeviceMemoryCommitment: ProcGetDeviceMemoryCommitment -GetDeviceMemoryOpaqueCaptureAddress: ProcGetDeviceMemoryOpaqueCaptureAddress -GetDeviceMemoryOpaqueCaptureAddressKHR: ProcGetDeviceMemoryOpaqueCaptureAddressKHR -GetDeviceProcAddr: ProcGetDeviceProcAddr -GetDeviceQueue: ProcGetDeviceQueue -GetDeviceQueue2: ProcGetDeviceQueue2 -GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI: ProcGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI -GetEventStatus: ProcGetEventStatus -GetFenceFdKHR: ProcGetFenceFdKHR -GetFenceStatus: ProcGetFenceStatus -GetFenceWin32HandleKHR: ProcGetFenceWin32HandleKHR -GetGeneratedCommandsMemoryRequirementsNV: ProcGetGeneratedCommandsMemoryRequirementsNV -GetImageDrmFormatModifierPropertiesEXT: ProcGetImageDrmFormatModifierPropertiesEXT -GetImageMemoryRequirements: ProcGetImageMemoryRequirements -GetImageMemoryRequirements2: ProcGetImageMemoryRequirements2 -GetImageMemoryRequirements2KHR: ProcGetImageMemoryRequirements2KHR -GetImageSparseMemoryRequirements: ProcGetImageSparseMemoryRequirements -GetImageSparseMemoryRequirements2: ProcGetImageSparseMemoryRequirements2 -GetImageSparseMemoryRequirements2KHR: ProcGetImageSparseMemoryRequirements2KHR -GetImageSubresourceLayout: ProcGetImageSubresourceLayout -GetImageViewAddressNVX: ProcGetImageViewAddressNVX -GetImageViewHandleNVX: ProcGetImageViewHandleNVX -GetMemoryFdKHR: ProcGetMemoryFdKHR -GetMemoryFdPropertiesKHR: ProcGetMemoryFdPropertiesKHR -GetMemoryHostPointerPropertiesEXT: ProcGetMemoryHostPointerPropertiesEXT -GetMemoryRemoteAddressNV: ProcGetMemoryRemoteAddressNV -GetMemoryWin32HandleKHR: ProcGetMemoryWin32HandleKHR -GetMemoryWin32HandleNV: ProcGetMemoryWin32HandleNV -GetMemoryWin32HandlePropertiesKHR: ProcGetMemoryWin32HandlePropertiesKHR -GetPastPresentationTimingGOOGLE: ProcGetPastPresentationTimingGOOGLE -GetPerformanceParameterINTEL: ProcGetPerformanceParameterINTEL -GetPipelineCacheData: ProcGetPipelineCacheData -GetPipelineExecutableInternalRepresentationsKHR: ProcGetPipelineExecutableInternalRepresentationsKHR -GetPipelineExecutablePropertiesKHR: ProcGetPipelineExecutablePropertiesKHR -GetPipelineExecutableStatisticsKHR: ProcGetPipelineExecutableStatisticsKHR -GetPrivateData: ProcGetPrivateData -GetPrivateDataEXT: ProcGetPrivateDataEXT -GetQueryPoolResults: ProcGetQueryPoolResults -GetQueueCheckpointData2NV: ProcGetQueueCheckpointData2NV -GetQueueCheckpointDataNV: ProcGetQueueCheckpointDataNV -GetRayTracingCaptureReplayShaderGroupHandlesKHR: ProcGetRayTracingCaptureReplayShaderGroupHandlesKHR -GetRayTracingShaderGroupHandlesKHR: ProcGetRayTracingShaderGroupHandlesKHR -GetRayTracingShaderGroupHandlesNV: ProcGetRayTracingShaderGroupHandlesNV -GetRayTracingShaderGroupStackSizeKHR: ProcGetRayTracingShaderGroupStackSizeKHR -GetRefreshCycleDurationGOOGLE: ProcGetRefreshCycleDurationGOOGLE -GetRenderAreaGranularity: ProcGetRenderAreaGranularity -GetSemaphoreCounterValue: ProcGetSemaphoreCounterValue -GetSemaphoreCounterValueKHR: ProcGetSemaphoreCounterValueKHR -GetSemaphoreFdKHR: ProcGetSemaphoreFdKHR -GetSemaphoreWin32HandleKHR: ProcGetSemaphoreWin32HandleKHR -GetShaderInfoAMD: ProcGetShaderInfoAMD -GetSwapchainCounterEXT: ProcGetSwapchainCounterEXT -GetSwapchainImagesKHR: ProcGetSwapchainImagesKHR -GetSwapchainStatusKHR: ProcGetSwapchainStatusKHR -GetValidationCacheDataEXT: ProcGetValidationCacheDataEXT -ImportFenceFdKHR: ProcImportFenceFdKHR -ImportFenceWin32HandleKHR: ProcImportFenceWin32HandleKHR -ImportSemaphoreFdKHR: ProcImportSemaphoreFdKHR -ImportSemaphoreWin32HandleKHR: ProcImportSemaphoreWin32HandleKHR -InitializePerformanceApiINTEL: ProcInitializePerformanceApiINTEL -InvalidateMappedMemoryRanges: ProcInvalidateMappedMemoryRanges -MapMemory: ProcMapMemory -MergePipelineCaches: ProcMergePipelineCaches -MergeValidationCachesEXT: ProcMergeValidationCachesEXT -QueueBeginDebugUtilsLabelEXT: ProcQueueBeginDebugUtilsLabelEXT -QueueBindSparse: ProcQueueBindSparse -QueueEndDebugUtilsLabelEXT: ProcQueueEndDebugUtilsLabelEXT -QueueInsertDebugUtilsLabelEXT: ProcQueueInsertDebugUtilsLabelEXT -QueuePresentKHR: ProcQueuePresentKHR -QueueSetPerformanceConfigurationINTEL: ProcQueueSetPerformanceConfigurationINTEL -QueueSubmit: ProcQueueSubmit -QueueSubmit2: ProcQueueSubmit2 -QueueSubmit2KHR: ProcQueueSubmit2KHR -QueueWaitIdle: ProcQueueWaitIdle -RegisterDeviceEventEXT: ProcRegisterDeviceEventEXT -RegisterDisplayEventEXT: ProcRegisterDisplayEventEXT -ReleaseFullScreenExclusiveModeEXT: ProcReleaseFullScreenExclusiveModeEXT -ReleasePerformanceConfigurationINTEL: ProcReleasePerformanceConfigurationINTEL -ReleaseProfilingLockKHR: ProcReleaseProfilingLockKHR -ResetCommandBuffer: ProcResetCommandBuffer -ResetCommandPool: ProcResetCommandPool -ResetDescriptorPool: ProcResetDescriptorPool -ResetEvent: ProcResetEvent -ResetFences: ProcResetFences -ResetQueryPool: ProcResetQueryPool -ResetQueryPoolEXT: ProcResetQueryPoolEXT -SetDebugUtilsObjectNameEXT: ProcSetDebugUtilsObjectNameEXT -SetDebugUtilsObjectTagEXT: ProcSetDebugUtilsObjectTagEXT -SetDeviceMemoryPriorityEXT: ProcSetDeviceMemoryPriorityEXT -SetEvent: ProcSetEvent -SetHdrMetadataEXT: ProcSetHdrMetadataEXT -SetLocalDimmingAMD: ProcSetLocalDimmingAMD -SetPrivateData: ProcSetPrivateData -SetPrivateDataEXT: ProcSetPrivateDataEXT -SignalSemaphore: ProcSignalSemaphore -SignalSemaphoreKHR: ProcSignalSemaphoreKHR -TrimCommandPool: ProcTrimCommandPool -TrimCommandPoolKHR: ProcTrimCommandPoolKHR -UninitializePerformanceApiINTEL: ProcUninitializePerformanceApiINTEL -UnmapMemory: ProcUnmapMemory -UpdateDescriptorSetWithTemplate: ProcUpdateDescriptorSetWithTemplate -UpdateDescriptorSetWithTemplateKHR: ProcUpdateDescriptorSetWithTemplateKHR -UpdateDescriptorSets: ProcUpdateDescriptorSets -WaitForFences: ProcWaitForFences -WaitForPresentKHR: ProcWaitForPresentKHR -WaitSemaphores: ProcWaitSemaphores -WaitSemaphoresKHR: ProcWaitSemaphoresKHR -WriteAccelerationStructuresPropertiesKHR: ProcWriteAccelerationStructuresPropertiesKHR - -load_proc_addresses_custom :: proc(set_proc_address: SetProcAddressType) { - // Loader Procedures - set_proc_address(&CreateInstance, "vkCreateInstance") - set_proc_address(&DebugUtilsMessengerCallbackEXT, "vkDebugUtilsMessengerCallbackEXT") - set_proc_address(&DeviceMemoryReportCallbackEXT, "vkDeviceMemoryReportCallbackEXT") - set_proc_address(&EnumerateInstanceExtensionProperties, "vkEnumerateInstanceExtensionProperties") - set_proc_address(&EnumerateInstanceLayerProperties, "vkEnumerateInstanceLayerProperties") - set_proc_address(&EnumerateInstanceVersion, "vkEnumerateInstanceVersion") - set_proc_address(&GetInstanceProcAddr, "vkGetInstanceProcAddr") - - // Instance Procedures - set_proc_address(&AcquireDrmDisplayEXT, "vkAcquireDrmDisplayEXT") - set_proc_address(&AcquireWinrtDisplayNV, "vkAcquireWinrtDisplayNV") - set_proc_address(&CreateDebugReportCallbackEXT, "vkCreateDebugReportCallbackEXT") - set_proc_address(&CreateDebugUtilsMessengerEXT, "vkCreateDebugUtilsMessengerEXT") - set_proc_address(&CreateDevice, "vkCreateDevice") - set_proc_address(&CreateDisplayModeKHR, "vkCreateDisplayModeKHR") - set_proc_address(&CreateDisplayPlaneSurfaceKHR, "vkCreateDisplayPlaneSurfaceKHR") - set_proc_address(&CreateHeadlessSurfaceEXT, "vkCreateHeadlessSurfaceEXT") - set_proc_address(&CreateIOSSurfaceMVK, "vkCreateIOSSurfaceMVK") - set_proc_address(&CreateMacOSSurfaceMVK, "vkCreateMacOSSurfaceMVK") - set_proc_address(&CreateMetalSurfaceEXT, "vkCreateMetalSurfaceEXT") - set_proc_address(&CreateWin32SurfaceKHR, "vkCreateWin32SurfaceKHR") - set_proc_address(&DebugReportMessageEXT, "vkDebugReportMessageEXT") - set_proc_address(&DestroyDebugReportCallbackEXT, "vkDestroyDebugReportCallbackEXT") - set_proc_address(&DestroyDebugUtilsMessengerEXT, "vkDestroyDebugUtilsMessengerEXT") - set_proc_address(&DestroyInstance, "vkDestroyInstance") - set_proc_address(&DestroySurfaceKHR, "vkDestroySurfaceKHR") - set_proc_address(&EnumerateDeviceExtensionProperties, "vkEnumerateDeviceExtensionProperties") - set_proc_address(&EnumerateDeviceLayerProperties, "vkEnumerateDeviceLayerProperties") - set_proc_address(&EnumeratePhysicalDeviceGroups, "vkEnumeratePhysicalDeviceGroups") - set_proc_address(&EnumeratePhysicalDeviceGroupsKHR, "vkEnumeratePhysicalDeviceGroupsKHR") - set_proc_address(&EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR") - set_proc_address(&EnumeratePhysicalDevices, "vkEnumeratePhysicalDevices") - set_proc_address(&GetDisplayModeProperties2KHR, "vkGetDisplayModeProperties2KHR") - set_proc_address(&GetDisplayModePropertiesKHR, "vkGetDisplayModePropertiesKHR") - set_proc_address(&GetDisplayPlaneCapabilities2KHR, "vkGetDisplayPlaneCapabilities2KHR") - set_proc_address(&GetDisplayPlaneCapabilitiesKHR, "vkGetDisplayPlaneCapabilitiesKHR") - set_proc_address(&GetDisplayPlaneSupportedDisplaysKHR, "vkGetDisplayPlaneSupportedDisplaysKHR") - set_proc_address(&GetDrmDisplayEXT, "vkGetDrmDisplayEXT") - set_proc_address(&GetPhysicalDeviceCalibrateableTimeDomainsEXT, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT") - set_proc_address(&GetPhysicalDeviceCooperativeMatrixPropertiesNV, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV") - set_proc_address(&GetPhysicalDeviceDisplayPlaneProperties2KHR, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR") - set_proc_address(&GetPhysicalDeviceDisplayPlanePropertiesKHR, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR") - set_proc_address(&GetPhysicalDeviceDisplayProperties2KHR, "vkGetPhysicalDeviceDisplayProperties2KHR") - set_proc_address(&GetPhysicalDeviceDisplayPropertiesKHR, "vkGetPhysicalDeviceDisplayPropertiesKHR") - set_proc_address(&GetPhysicalDeviceExternalBufferProperties, "vkGetPhysicalDeviceExternalBufferProperties") - set_proc_address(&GetPhysicalDeviceExternalBufferPropertiesKHR, "vkGetPhysicalDeviceExternalBufferPropertiesKHR") - set_proc_address(&GetPhysicalDeviceExternalFenceProperties, "vkGetPhysicalDeviceExternalFenceProperties") - set_proc_address(&GetPhysicalDeviceExternalFencePropertiesKHR, "vkGetPhysicalDeviceExternalFencePropertiesKHR") - set_proc_address(&GetPhysicalDeviceExternalImageFormatPropertiesNV, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV") - set_proc_address(&GetPhysicalDeviceExternalSemaphoreProperties, "vkGetPhysicalDeviceExternalSemaphoreProperties") - set_proc_address(&GetPhysicalDeviceExternalSemaphorePropertiesKHR, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR") - set_proc_address(&GetPhysicalDeviceFeatures, "vkGetPhysicalDeviceFeatures") - set_proc_address(&GetPhysicalDeviceFeatures2, "vkGetPhysicalDeviceFeatures2") - set_proc_address(&GetPhysicalDeviceFeatures2KHR, "vkGetPhysicalDeviceFeatures2KHR") - set_proc_address(&GetPhysicalDeviceFormatProperties, "vkGetPhysicalDeviceFormatProperties") - set_proc_address(&GetPhysicalDeviceFormatProperties2, "vkGetPhysicalDeviceFormatProperties2") - set_proc_address(&GetPhysicalDeviceFormatProperties2KHR, "vkGetPhysicalDeviceFormatProperties2KHR") - set_proc_address(&GetPhysicalDeviceFragmentShadingRatesKHR, "vkGetPhysicalDeviceFragmentShadingRatesKHR") - set_proc_address(&GetPhysicalDeviceImageFormatProperties, "vkGetPhysicalDeviceImageFormatProperties") - set_proc_address(&GetPhysicalDeviceImageFormatProperties2, "vkGetPhysicalDeviceImageFormatProperties2") - set_proc_address(&GetPhysicalDeviceImageFormatProperties2KHR, "vkGetPhysicalDeviceImageFormatProperties2KHR") - set_proc_address(&GetPhysicalDeviceMemoryProperties, "vkGetPhysicalDeviceMemoryProperties") - set_proc_address(&GetPhysicalDeviceMemoryProperties2, "vkGetPhysicalDeviceMemoryProperties2") - set_proc_address(&GetPhysicalDeviceMemoryProperties2KHR, "vkGetPhysicalDeviceMemoryProperties2KHR") - set_proc_address(&GetPhysicalDeviceMultisamplePropertiesEXT, "vkGetPhysicalDeviceMultisamplePropertiesEXT") - set_proc_address(&GetPhysicalDevicePresentRectanglesKHR, "vkGetPhysicalDevicePresentRectanglesKHR") - set_proc_address(&GetPhysicalDeviceProperties, "vkGetPhysicalDeviceProperties") - set_proc_address(&GetPhysicalDeviceProperties2, "vkGetPhysicalDeviceProperties2") - set_proc_address(&GetPhysicalDeviceProperties2KHR, "vkGetPhysicalDeviceProperties2KHR") - set_proc_address(&GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR") - set_proc_address(&GetPhysicalDeviceQueueFamilyProperties, "vkGetPhysicalDeviceQueueFamilyProperties") - set_proc_address(&GetPhysicalDeviceQueueFamilyProperties2, "vkGetPhysicalDeviceQueueFamilyProperties2") - set_proc_address(&GetPhysicalDeviceQueueFamilyProperties2KHR, "vkGetPhysicalDeviceQueueFamilyProperties2KHR") - set_proc_address(&GetPhysicalDeviceSparseImageFormatProperties, "vkGetPhysicalDeviceSparseImageFormatProperties") - set_proc_address(&GetPhysicalDeviceSparseImageFormatProperties2, "vkGetPhysicalDeviceSparseImageFormatProperties2") - set_proc_address(&GetPhysicalDeviceSparseImageFormatProperties2KHR, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR") - set_proc_address(&GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV") - set_proc_address(&GetPhysicalDeviceSurfaceCapabilities2EXT, "vkGetPhysicalDeviceSurfaceCapabilities2EXT") - set_proc_address(&GetPhysicalDeviceSurfaceCapabilities2KHR, "vkGetPhysicalDeviceSurfaceCapabilities2KHR") - set_proc_address(&GetPhysicalDeviceSurfaceCapabilitiesKHR, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR") - set_proc_address(&GetPhysicalDeviceSurfaceFormats2KHR, "vkGetPhysicalDeviceSurfaceFormats2KHR") - set_proc_address(&GetPhysicalDeviceSurfaceFormatsKHR, "vkGetPhysicalDeviceSurfaceFormatsKHR") - set_proc_address(&GetPhysicalDeviceSurfacePresentModes2EXT, "vkGetPhysicalDeviceSurfacePresentModes2EXT") - set_proc_address(&GetPhysicalDeviceSurfacePresentModesKHR, "vkGetPhysicalDeviceSurfacePresentModesKHR") - set_proc_address(&GetPhysicalDeviceSurfaceSupportKHR, "vkGetPhysicalDeviceSurfaceSupportKHR") - set_proc_address(&GetPhysicalDeviceToolProperties, "vkGetPhysicalDeviceToolProperties") - set_proc_address(&GetPhysicalDeviceToolPropertiesEXT, "vkGetPhysicalDeviceToolPropertiesEXT") - set_proc_address(&GetPhysicalDeviceWin32PresentationSupportKHR, "vkGetPhysicalDeviceWin32PresentationSupportKHR") - set_proc_address(&GetWinrtDisplayNV, "vkGetWinrtDisplayNV") - set_proc_address(&ReleaseDisplayEXT, "vkReleaseDisplayEXT") - set_proc_address(&SubmitDebugUtilsMessageEXT, "vkSubmitDebugUtilsMessageEXT") - - // Device Procedures - set_proc_address(&AcquireFullScreenExclusiveModeEXT, "vkAcquireFullScreenExclusiveModeEXT") - set_proc_address(&AcquireNextImage2KHR, "vkAcquireNextImage2KHR") - set_proc_address(&AcquireNextImageKHR, "vkAcquireNextImageKHR") - set_proc_address(&AcquirePerformanceConfigurationINTEL, "vkAcquirePerformanceConfigurationINTEL") - set_proc_address(&AcquireProfilingLockKHR, "vkAcquireProfilingLockKHR") - set_proc_address(&AllocateCommandBuffers, "vkAllocateCommandBuffers") - set_proc_address(&AllocateDescriptorSets, "vkAllocateDescriptorSets") - set_proc_address(&AllocateMemory, "vkAllocateMemory") - set_proc_address(&BeginCommandBuffer, "vkBeginCommandBuffer") - set_proc_address(&BindAccelerationStructureMemoryNV, "vkBindAccelerationStructureMemoryNV") - set_proc_address(&BindBufferMemory, "vkBindBufferMemory") - set_proc_address(&BindBufferMemory2, "vkBindBufferMemory2") - set_proc_address(&BindBufferMemory2KHR, "vkBindBufferMemory2KHR") - set_proc_address(&BindImageMemory, "vkBindImageMemory") - set_proc_address(&BindImageMemory2, "vkBindImageMemory2") - set_proc_address(&BindImageMemory2KHR, "vkBindImageMemory2KHR") - set_proc_address(&BuildAccelerationStructuresKHR, "vkBuildAccelerationStructuresKHR") - set_proc_address(&CmdBeginConditionalRenderingEXT, "vkCmdBeginConditionalRenderingEXT") - set_proc_address(&CmdBeginDebugUtilsLabelEXT, "vkCmdBeginDebugUtilsLabelEXT") - set_proc_address(&CmdBeginQuery, "vkCmdBeginQuery") - set_proc_address(&CmdBeginQueryIndexedEXT, "vkCmdBeginQueryIndexedEXT") - set_proc_address(&CmdBeginRenderPass, "vkCmdBeginRenderPass") - set_proc_address(&CmdBeginRenderPass2, "vkCmdBeginRenderPass2") - set_proc_address(&CmdBeginRenderPass2KHR, "vkCmdBeginRenderPass2KHR") - set_proc_address(&CmdBeginRendering, "vkCmdBeginRendering") - set_proc_address(&CmdBeginRenderingKHR, "vkCmdBeginRenderingKHR") - set_proc_address(&CmdBeginTransformFeedbackEXT, "vkCmdBeginTransformFeedbackEXT") - set_proc_address(&CmdBindDescriptorSets, "vkCmdBindDescriptorSets") - set_proc_address(&CmdBindIndexBuffer, "vkCmdBindIndexBuffer") - set_proc_address(&CmdBindInvocationMaskHUAWEI, "vkCmdBindInvocationMaskHUAWEI") - set_proc_address(&CmdBindPipeline, "vkCmdBindPipeline") - set_proc_address(&CmdBindPipelineShaderGroupNV, "vkCmdBindPipelineShaderGroupNV") - set_proc_address(&CmdBindShadingRateImageNV, "vkCmdBindShadingRateImageNV") - set_proc_address(&CmdBindTransformFeedbackBuffersEXT, "vkCmdBindTransformFeedbackBuffersEXT") - set_proc_address(&CmdBindVertexBuffers, "vkCmdBindVertexBuffers") - set_proc_address(&CmdBindVertexBuffers2, "vkCmdBindVertexBuffers2") - set_proc_address(&CmdBindVertexBuffers2EXT, "vkCmdBindVertexBuffers2EXT") - set_proc_address(&CmdBlitImage, "vkCmdBlitImage") - set_proc_address(&CmdBlitImage2, "vkCmdBlitImage2") - set_proc_address(&CmdBlitImage2KHR, "vkCmdBlitImage2KHR") - set_proc_address(&CmdBuildAccelerationStructureNV, "vkCmdBuildAccelerationStructureNV") - set_proc_address(&CmdBuildAccelerationStructuresIndirectKHR, "vkCmdBuildAccelerationStructuresIndirectKHR") - set_proc_address(&CmdBuildAccelerationStructuresKHR, "vkCmdBuildAccelerationStructuresKHR") - set_proc_address(&CmdClearAttachments, "vkCmdClearAttachments") - set_proc_address(&CmdClearColorImage, "vkCmdClearColorImage") - set_proc_address(&CmdClearDepthStencilImage, "vkCmdClearDepthStencilImage") - set_proc_address(&CmdCopyAccelerationStructureKHR, "vkCmdCopyAccelerationStructureKHR") - set_proc_address(&CmdCopyAccelerationStructureNV, "vkCmdCopyAccelerationStructureNV") - set_proc_address(&CmdCopyAccelerationStructureToMemoryKHR, "vkCmdCopyAccelerationStructureToMemoryKHR") - set_proc_address(&CmdCopyBuffer, "vkCmdCopyBuffer") - set_proc_address(&CmdCopyBuffer2, "vkCmdCopyBuffer2") - set_proc_address(&CmdCopyBuffer2KHR, "vkCmdCopyBuffer2KHR") - set_proc_address(&CmdCopyBufferToImage, "vkCmdCopyBufferToImage") - set_proc_address(&CmdCopyBufferToImage2, "vkCmdCopyBufferToImage2") - set_proc_address(&CmdCopyBufferToImage2KHR, "vkCmdCopyBufferToImage2KHR") - set_proc_address(&CmdCopyImage, "vkCmdCopyImage") - set_proc_address(&CmdCopyImage2, "vkCmdCopyImage2") - set_proc_address(&CmdCopyImage2KHR, "vkCmdCopyImage2KHR") - set_proc_address(&CmdCopyImageToBuffer, "vkCmdCopyImageToBuffer") - set_proc_address(&CmdCopyImageToBuffer2, "vkCmdCopyImageToBuffer2") - set_proc_address(&CmdCopyImageToBuffer2KHR, "vkCmdCopyImageToBuffer2KHR") - set_proc_address(&CmdCopyMemoryToAccelerationStructureKHR, "vkCmdCopyMemoryToAccelerationStructureKHR") - set_proc_address(&CmdCopyQueryPoolResults, "vkCmdCopyQueryPoolResults") - set_proc_address(&CmdCuLaunchKernelNVX, "vkCmdCuLaunchKernelNVX") - set_proc_address(&CmdDebugMarkerBeginEXT, "vkCmdDebugMarkerBeginEXT") - set_proc_address(&CmdDebugMarkerEndEXT, "vkCmdDebugMarkerEndEXT") - set_proc_address(&CmdDebugMarkerInsertEXT, "vkCmdDebugMarkerInsertEXT") - set_proc_address(&CmdDispatch, "vkCmdDispatch") - set_proc_address(&CmdDispatchBase, "vkCmdDispatchBase") - set_proc_address(&CmdDispatchBaseKHR, "vkCmdDispatchBaseKHR") - set_proc_address(&CmdDispatchIndirect, "vkCmdDispatchIndirect") - set_proc_address(&CmdDraw, "vkCmdDraw") - set_proc_address(&CmdDrawIndexed, "vkCmdDrawIndexed") - set_proc_address(&CmdDrawIndexedIndirect, "vkCmdDrawIndexedIndirect") - set_proc_address(&CmdDrawIndexedIndirectCount, "vkCmdDrawIndexedIndirectCount") - set_proc_address(&CmdDrawIndexedIndirectCountAMD, "vkCmdDrawIndexedIndirectCountAMD") - set_proc_address(&CmdDrawIndexedIndirectCountKHR, "vkCmdDrawIndexedIndirectCountKHR") - set_proc_address(&CmdDrawIndirect, "vkCmdDrawIndirect") - set_proc_address(&CmdDrawIndirectByteCountEXT, "vkCmdDrawIndirectByteCountEXT") - set_proc_address(&CmdDrawIndirectCount, "vkCmdDrawIndirectCount") - set_proc_address(&CmdDrawIndirectCountAMD, "vkCmdDrawIndirectCountAMD") - set_proc_address(&CmdDrawIndirectCountKHR, "vkCmdDrawIndirectCountKHR") - set_proc_address(&CmdDrawMeshTasksIndirectCountNV, "vkCmdDrawMeshTasksIndirectCountNV") - set_proc_address(&CmdDrawMeshTasksIndirectNV, "vkCmdDrawMeshTasksIndirectNV") - set_proc_address(&CmdDrawMeshTasksNV, "vkCmdDrawMeshTasksNV") - set_proc_address(&CmdDrawMultiEXT, "vkCmdDrawMultiEXT") - set_proc_address(&CmdDrawMultiIndexedEXT, "vkCmdDrawMultiIndexedEXT") - set_proc_address(&CmdEndConditionalRenderingEXT, "vkCmdEndConditionalRenderingEXT") - set_proc_address(&CmdEndDebugUtilsLabelEXT, "vkCmdEndDebugUtilsLabelEXT") - set_proc_address(&CmdEndQuery, "vkCmdEndQuery") - set_proc_address(&CmdEndQueryIndexedEXT, "vkCmdEndQueryIndexedEXT") - set_proc_address(&CmdEndRenderPass, "vkCmdEndRenderPass") - set_proc_address(&CmdEndRenderPass2, "vkCmdEndRenderPass2") - set_proc_address(&CmdEndRenderPass2KHR, "vkCmdEndRenderPass2KHR") - set_proc_address(&CmdEndRendering, "vkCmdEndRendering") - set_proc_address(&CmdEndRenderingKHR, "vkCmdEndRenderingKHR") - set_proc_address(&CmdEndTransformFeedbackEXT, "vkCmdEndTransformFeedbackEXT") - set_proc_address(&CmdExecuteCommands, "vkCmdExecuteCommands") - set_proc_address(&CmdExecuteGeneratedCommandsNV, "vkCmdExecuteGeneratedCommandsNV") - set_proc_address(&CmdFillBuffer, "vkCmdFillBuffer") - set_proc_address(&CmdInsertDebugUtilsLabelEXT, "vkCmdInsertDebugUtilsLabelEXT") - set_proc_address(&CmdNextSubpass, "vkCmdNextSubpass") - set_proc_address(&CmdNextSubpass2, "vkCmdNextSubpass2") - set_proc_address(&CmdNextSubpass2KHR, "vkCmdNextSubpass2KHR") - set_proc_address(&CmdPipelineBarrier, "vkCmdPipelineBarrier") - set_proc_address(&CmdPipelineBarrier2, "vkCmdPipelineBarrier2") - set_proc_address(&CmdPipelineBarrier2KHR, "vkCmdPipelineBarrier2KHR") - set_proc_address(&CmdPreprocessGeneratedCommandsNV, "vkCmdPreprocessGeneratedCommandsNV") - set_proc_address(&CmdPushConstants, "vkCmdPushConstants") - set_proc_address(&CmdPushDescriptorSetKHR, "vkCmdPushDescriptorSetKHR") - set_proc_address(&CmdPushDescriptorSetWithTemplateKHR, "vkCmdPushDescriptorSetWithTemplateKHR") - set_proc_address(&CmdResetEvent, "vkCmdResetEvent") - set_proc_address(&CmdResetEvent2, "vkCmdResetEvent2") - set_proc_address(&CmdResetEvent2KHR, "vkCmdResetEvent2KHR") - set_proc_address(&CmdResetQueryPool, "vkCmdResetQueryPool") - set_proc_address(&CmdResolveImage, "vkCmdResolveImage") - set_proc_address(&CmdResolveImage2, "vkCmdResolveImage2") - set_proc_address(&CmdResolveImage2KHR, "vkCmdResolveImage2KHR") - set_proc_address(&CmdSetBlendConstants, "vkCmdSetBlendConstants") - set_proc_address(&CmdSetCheckpointNV, "vkCmdSetCheckpointNV") - set_proc_address(&CmdSetCoarseSampleOrderNV, "vkCmdSetCoarseSampleOrderNV") - set_proc_address(&CmdSetCullMode, "vkCmdSetCullMode") - set_proc_address(&CmdSetCullModeEXT, "vkCmdSetCullModeEXT") - set_proc_address(&CmdSetDepthBias, "vkCmdSetDepthBias") - set_proc_address(&CmdSetDepthBiasEnable, "vkCmdSetDepthBiasEnable") - set_proc_address(&CmdSetDepthBiasEnableEXT, "vkCmdSetDepthBiasEnableEXT") - set_proc_address(&CmdSetDepthBounds, "vkCmdSetDepthBounds") - set_proc_address(&CmdSetDepthBoundsTestEnable, "vkCmdSetDepthBoundsTestEnable") - set_proc_address(&CmdSetDepthBoundsTestEnableEXT, "vkCmdSetDepthBoundsTestEnableEXT") - set_proc_address(&CmdSetDepthCompareOp, "vkCmdSetDepthCompareOp") - set_proc_address(&CmdSetDepthCompareOpEXT, "vkCmdSetDepthCompareOpEXT") - set_proc_address(&CmdSetDepthTestEnable, "vkCmdSetDepthTestEnable") - set_proc_address(&CmdSetDepthTestEnableEXT, "vkCmdSetDepthTestEnableEXT") - set_proc_address(&CmdSetDepthWriteEnable, "vkCmdSetDepthWriteEnable") - set_proc_address(&CmdSetDepthWriteEnableEXT, "vkCmdSetDepthWriteEnableEXT") - set_proc_address(&CmdSetDeviceMask, "vkCmdSetDeviceMask") - set_proc_address(&CmdSetDeviceMaskKHR, "vkCmdSetDeviceMaskKHR") - set_proc_address(&CmdSetDiscardRectangleEXT, "vkCmdSetDiscardRectangleEXT") - set_proc_address(&CmdSetEvent, "vkCmdSetEvent") - set_proc_address(&CmdSetEvent2, "vkCmdSetEvent2") - set_proc_address(&CmdSetEvent2KHR, "vkCmdSetEvent2KHR") - set_proc_address(&CmdSetExclusiveScissorNV, "vkCmdSetExclusiveScissorNV") - set_proc_address(&CmdSetFragmentShadingRateEnumNV, "vkCmdSetFragmentShadingRateEnumNV") - set_proc_address(&CmdSetFragmentShadingRateKHR, "vkCmdSetFragmentShadingRateKHR") - set_proc_address(&CmdSetFrontFace, "vkCmdSetFrontFace") - set_proc_address(&CmdSetFrontFaceEXT, "vkCmdSetFrontFaceEXT") - set_proc_address(&CmdSetLineStippleEXT, "vkCmdSetLineStippleEXT") - set_proc_address(&CmdSetLineWidth, "vkCmdSetLineWidth") - set_proc_address(&CmdSetLogicOpEXT, "vkCmdSetLogicOpEXT") - set_proc_address(&CmdSetPatchControlPointsEXT, "vkCmdSetPatchControlPointsEXT") - set_proc_address(&CmdSetPerformanceMarkerINTEL, "vkCmdSetPerformanceMarkerINTEL") - set_proc_address(&CmdSetPerformanceOverrideINTEL, "vkCmdSetPerformanceOverrideINTEL") - set_proc_address(&CmdSetPerformanceStreamMarkerINTEL, "vkCmdSetPerformanceStreamMarkerINTEL") - set_proc_address(&CmdSetPrimitiveRestartEnable, "vkCmdSetPrimitiveRestartEnable") - set_proc_address(&CmdSetPrimitiveRestartEnableEXT, "vkCmdSetPrimitiveRestartEnableEXT") - set_proc_address(&CmdSetPrimitiveTopology, "vkCmdSetPrimitiveTopology") - set_proc_address(&CmdSetPrimitiveTopologyEXT, "vkCmdSetPrimitiveTopologyEXT") - set_proc_address(&CmdSetRasterizerDiscardEnable, "vkCmdSetRasterizerDiscardEnable") - set_proc_address(&CmdSetRasterizerDiscardEnableEXT, "vkCmdSetRasterizerDiscardEnableEXT") - set_proc_address(&CmdSetRayTracingPipelineStackSizeKHR, "vkCmdSetRayTracingPipelineStackSizeKHR") - set_proc_address(&CmdSetSampleLocationsEXT, "vkCmdSetSampleLocationsEXT") - set_proc_address(&CmdSetScissor, "vkCmdSetScissor") - set_proc_address(&CmdSetScissorWithCount, "vkCmdSetScissorWithCount") - set_proc_address(&CmdSetScissorWithCountEXT, "vkCmdSetScissorWithCountEXT") - set_proc_address(&CmdSetStencilCompareMask, "vkCmdSetStencilCompareMask") - set_proc_address(&CmdSetStencilOp, "vkCmdSetStencilOp") - set_proc_address(&CmdSetStencilOpEXT, "vkCmdSetStencilOpEXT") - set_proc_address(&CmdSetStencilReference, "vkCmdSetStencilReference") - set_proc_address(&CmdSetStencilTestEnable, "vkCmdSetStencilTestEnable") - set_proc_address(&CmdSetStencilTestEnableEXT, "vkCmdSetStencilTestEnableEXT") - set_proc_address(&CmdSetStencilWriteMask, "vkCmdSetStencilWriteMask") - set_proc_address(&CmdSetVertexInputEXT, "vkCmdSetVertexInputEXT") - set_proc_address(&CmdSetViewport, "vkCmdSetViewport") - set_proc_address(&CmdSetViewportShadingRatePaletteNV, "vkCmdSetViewportShadingRatePaletteNV") - set_proc_address(&CmdSetViewportWScalingNV, "vkCmdSetViewportWScalingNV") - set_proc_address(&CmdSetViewportWithCount, "vkCmdSetViewportWithCount") - set_proc_address(&CmdSetViewportWithCountEXT, "vkCmdSetViewportWithCountEXT") - set_proc_address(&CmdSubpassShadingHUAWEI, "vkCmdSubpassShadingHUAWEI") - set_proc_address(&CmdTraceRaysIndirectKHR, "vkCmdTraceRaysIndirectKHR") - set_proc_address(&CmdTraceRaysKHR, "vkCmdTraceRaysKHR") - set_proc_address(&CmdTraceRaysNV, "vkCmdTraceRaysNV") - set_proc_address(&CmdUpdateBuffer, "vkCmdUpdateBuffer") - set_proc_address(&CmdWaitEvents, "vkCmdWaitEvents") - set_proc_address(&CmdWaitEvents2, "vkCmdWaitEvents2") - set_proc_address(&CmdWaitEvents2KHR, "vkCmdWaitEvents2KHR") - set_proc_address(&CmdWriteAccelerationStructuresPropertiesKHR, "vkCmdWriteAccelerationStructuresPropertiesKHR") - set_proc_address(&CmdWriteAccelerationStructuresPropertiesNV, "vkCmdWriteAccelerationStructuresPropertiesNV") - set_proc_address(&CmdWriteBufferMarker2AMD, "vkCmdWriteBufferMarker2AMD") - set_proc_address(&CmdWriteBufferMarkerAMD, "vkCmdWriteBufferMarkerAMD") - set_proc_address(&CmdWriteTimestamp, "vkCmdWriteTimestamp") - set_proc_address(&CmdWriteTimestamp2, "vkCmdWriteTimestamp2") - set_proc_address(&CmdWriteTimestamp2KHR, "vkCmdWriteTimestamp2KHR") - set_proc_address(&CompileDeferredNV, "vkCompileDeferredNV") - set_proc_address(&CopyAccelerationStructureKHR, "vkCopyAccelerationStructureKHR") - set_proc_address(&CopyAccelerationStructureToMemoryKHR, "vkCopyAccelerationStructureToMemoryKHR") - set_proc_address(&CopyMemoryToAccelerationStructureKHR, "vkCopyMemoryToAccelerationStructureKHR") - set_proc_address(&CreateAccelerationStructureKHR, "vkCreateAccelerationStructureKHR") - set_proc_address(&CreateAccelerationStructureNV, "vkCreateAccelerationStructureNV") - set_proc_address(&CreateBuffer, "vkCreateBuffer") - set_proc_address(&CreateBufferView, "vkCreateBufferView") - set_proc_address(&CreateCommandPool, "vkCreateCommandPool") - set_proc_address(&CreateComputePipelines, "vkCreateComputePipelines") - set_proc_address(&CreateCuFunctionNVX, "vkCreateCuFunctionNVX") - set_proc_address(&CreateCuModuleNVX, "vkCreateCuModuleNVX") - set_proc_address(&CreateDeferredOperationKHR, "vkCreateDeferredOperationKHR") - set_proc_address(&CreateDescriptorPool, "vkCreateDescriptorPool") - set_proc_address(&CreateDescriptorSetLayout, "vkCreateDescriptorSetLayout") - set_proc_address(&CreateDescriptorUpdateTemplate, "vkCreateDescriptorUpdateTemplate") - set_proc_address(&CreateDescriptorUpdateTemplateKHR, "vkCreateDescriptorUpdateTemplateKHR") - set_proc_address(&CreateEvent, "vkCreateEvent") - set_proc_address(&CreateFence, "vkCreateFence") - set_proc_address(&CreateFramebuffer, "vkCreateFramebuffer") - set_proc_address(&CreateGraphicsPipelines, "vkCreateGraphicsPipelines") - set_proc_address(&CreateImage, "vkCreateImage") - set_proc_address(&CreateImageView, "vkCreateImageView") - set_proc_address(&CreateIndirectCommandsLayoutNV, "vkCreateIndirectCommandsLayoutNV") - set_proc_address(&CreatePipelineCache, "vkCreatePipelineCache") - set_proc_address(&CreatePipelineLayout, "vkCreatePipelineLayout") - set_proc_address(&CreatePrivateDataSlot, "vkCreatePrivateDataSlot") - set_proc_address(&CreatePrivateDataSlotEXT, "vkCreatePrivateDataSlotEXT") - set_proc_address(&CreateQueryPool, "vkCreateQueryPool") - set_proc_address(&CreateRayTracingPipelinesKHR, "vkCreateRayTracingPipelinesKHR") - set_proc_address(&CreateRayTracingPipelinesNV, "vkCreateRayTracingPipelinesNV") - set_proc_address(&CreateRenderPass, "vkCreateRenderPass") - set_proc_address(&CreateRenderPass2, "vkCreateRenderPass2") - set_proc_address(&CreateRenderPass2KHR, "vkCreateRenderPass2KHR") - set_proc_address(&CreateSampler, "vkCreateSampler") - set_proc_address(&CreateSamplerYcbcrConversion, "vkCreateSamplerYcbcrConversion") - set_proc_address(&CreateSamplerYcbcrConversionKHR, "vkCreateSamplerYcbcrConversionKHR") - set_proc_address(&CreateSemaphore, "vkCreateSemaphore") - set_proc_address(&CreateShaderModule, "vkCreateShaderModule") - set_proc_address(&CreateSharedSwapchainsKHR, "vkCreateSharedSwapchainsKHR") - set_proc_address(&CreateSwapchainKHR, "vkCreateSwapchainKHR") - set_proc_address(&CreateValidationCacheEXT, "vkCreateValidationCacheEXT") - set_proc_address(&DebugMarkerSetObjectNameEXT, "vkDebugMarkerSetObjectNameEXT") - set_proc_address(&DebugMarkerSetObjectTagEXT, "vkDebugMarkerSetObjectTagEXT") - set_proc_address(&DeferredOperationJoinKHR, "vkDeferredOperationJoinKHR") - set_proc_address(&DestroyAccelerationStructureKHR, "vkDestroyAccelerationStructureKHR") - set_proc_address(&DestroyAccelerationStructureNV, "vkDestroyAccelerationStructureNV") - set_proc_address(&DestroyBuffer, "vkDestroyBuffer") - set_proc_address(&DestroyBufferView, "vkDestroyBufferView") - set_proc_address(&DestroyCommandPool, "vkDestroyCommandPool") - set_proc_address(&DestroyCuFunctionNVX, "vkDestroyCuFunctionNVX") - set_proc_address(&DestroyCuModuleNVX, "vkDestroyCuModuleNVX") - set_proc_address(&DestroyDeferredOperationKHR, "vkDestroyDeferredOperationKHR") - set_proc_address(&DestroyDescriptorPool, "vkDestroyDescriptorPool") - set_proc_address(&DestroyDescriptorSetLayout, "vkDestroyDescriptorSetLayout") - set_proc_address(&DestroyDescriptorUpdateTemplate, "vkDestroyDescriptorUpdateTemplate") - set_proc_address(&DestroyDescriptorUpdateTemplateKHR, "vkDestroyDescriptorUpdateTemplateKHR") - set_proc_address(&DestroyDevice, "vkDestroyDevice") - set_proc_address(&DestroyEvent, "vkDestroyEvent") - set_proc_address(&DestroyFence, "vkDestroyFence") - set_proc_address(&DestroyFramebuffer, "vkDestroyFramebuffer") - set_proc_address(&DestroyImage, "vkDestroyImage") - set_proc_address(&DestroyImageView, "vkDestroyImageView") - set_proc_address(&DestroyIndirectCommandsLayoutNV, "vkDestroyIndirectCommandsLayoutNV") - set_proc_address(&DestroyPipeline, "vkDestroyPipeline") - set_proc_address(&DestroyPipelineCache, "vkDestroyPipelineCache") - set_proc_address(&DestroyPipelineLayout, "vkDestroyPipelineLayout") - set_proc_address(&DestroyPrivateDataSlot, "vkDestroyPrivateDataSlot") - set_proc_address(&DestroyPrivateDataSlotEXT, "vkDestroyPrivateDataSlotEXT") - set_proc_address(&DestroyQueryPool, "vkDestroyQueryPool") - set_proc_address(&DestroyRenderPass, "vkDestroyRenderPass") - set_proc_address(&DestroySampler, "vkDestroySampler") - set_proc_address(&DestroySamplerYcbcrConversion, "vkDestroySamplerYcbcrConversion") - set_proc_address(&DestroySamplerYcbcrConversionKHR, "vkDestroySamplerYcbcrConversionKHR") - set_proc_address(&DestroySemaphore, "vkDestroySemaphore") - set_proc_address(&DestroyShaderModule, "vkDestroyShaderModule") - set_proc_address(&DestroySwapchainKHR, "vkDestroySwapchainKHR") - set_proc_address(&DestroyValidationCacheEXT, "vkDestroyValidationCacheEXT") - set_proc_address(&DeviceWaitIdle, "vkDeviceWaitIdle") - set_proc_address(&DisplayPowerControlEXT, "vkDisplayPowerControlEXT") - set_proc_address(&EndCommandBuffer, "vkEndCommandBuffer") - set_proc_address(&FlushMappedMemoryRanges, "vkFlushMappedMemoryRanges") - set_proc_address(&FreeCommandBuffers, "vkFreeCommandBuffers") - set_proc_address(&FreeDescriptorSets, "vkFreeDescriptorSets") - set_proc_address(&FreeMemory, "vkFreeMemory") - set_proc_address(&GetAccelerationStructureBuildSizesKHR, "vkGetAccelerationStructureBuildSizesKHR") - set_proc_address(&GetAccelerationStructureDeviceAddressKHR, "vkGetAccelerationStructureDeviceAddressKHR") - set_proc_address(&GetAccelerationStructureHandleNV, "vkGetAccelerationStructureHandleNV") - set_proc_address(&GetAccelerationStructureMemoryRequirementsNV, "vkGetAccelerationStructureMemoryRequirementsNV") - set_proc_address(&GetBufferDeviceAddress, "vkGetBufferDeviceAddress") - set_proc_address(&GetBufferDeviceAddressEXT, "vkGetBufferDeviceAddressEXT") - set_proc_address(&GetBufferDeviceAddressKHR, "vkGetBufferDeviceAddressKHR") - set_proc_address(&GetBufferMemoryRequirements, "vkGetBufferMemoryRequirements") - set_proc_address(&GetBufferMemoryRequirements2, "vkGetBufferMemoryRequirements2") - set_proc_address(&GetBufferMemoryRequirements2KHR, "vkGetBufferMemoryRequirements2KHR") - set_proc_address(&GetBufferOpaqueCaptureAddress, "vkGetBufferOpaqueCaptureAddress") - set_proc_address(&GetBufferOpaqueCaptureAddressKHR, "vkGetBufferOpaqueCaptureAddressKHR") - set_proc_address(&GetCalibratedTimestampsEXT, "vkGetCalibratedTimestampsEXT") - set_proc_address(&GetDeferredOperationMaxConcurrencyKHR, "vkGetDeferredOperationMaxConcurrencyKHR") - set_proc_address(&GetDeferredOperationResultKHR, "vkGetDeferredOperationResultKHR") - set_proc_address(&GetDescriptorSetHostMappingVALVE, "vkGetDescriptorSetHostMappingVALVE") - set_proc_address(&GetDescriptorSetLayoutHostMappingInfoVALVE, "vkGetDescriptorSetLayoutHostMappingInfoVALVE") - set_proc_address(&GetDescriptorSetLayoutSupport, "vkGetDescriptorSetLayoutSupport") - set_proc_address(&GetDescriptorSetLayoutSupportKHR, "vkGetDescriptorSetLayoutSupportKHR") - set_proc_address(&GetDeviceAccelerationStructureCompatibilityKHR, "vkGetDeviceAccelerationStructureCompatibilityKHR") - set_proc_address(&GetDeviceBufferMemoryRequirements, "vkGetDeviceBufferMemoryRequirements") - set_proc_address(&GetDeviceBufferMemoryRequirementsKHR, "vkGetDeviceBufferMemoryRequirementsKHR") - set_proc_address(&GetDeviceGroupPeerMemoryFeatures, "vkGetDeviceGroupPeerMemoryFeatures") - set_proc_address(&GetDeviceGroupPeerMemoryFeaturesKHR, "vkGetDeviceGroupPeerMemoryFeaturesKHR") - set_proc_address(&GetDeviceGroupPresentCapabilitiesKHR, "vkGetDeviceGroupPresentCapabilitiesKHR") - set_proc_address(&GetDeviceGroupSurfacePresentModes2EXT, "vkGetDeviceGroupSurfacePresentModes2EXT") - set_proc_address(&GetDeviceGroupSurfacePresentModesKHR, "vkGetDeviceGroupSurfacePresentModesKHR") - set_proc_address(&GetDeviceImageMemoryRequirements, "vkGetDeviceImageMemoryRequirements") - set_proc_address(&GetDeviceImageMemoryRequirementsKHR, "vkGetDeviceImageMemoryRequirementsKHR") - set_proc_address(&GetDeviceImageSparseMemoryRequirements, "vkGetDeviceImageSparseMemoryRequirements") - set_proc_address(&GetDeviceImageSparseMemoryRequirementsKHR, "vkGetDeviceImageSparseMemoryRequirementsKHR") - set_proc_address(&GetDeviceMemoryCommitment, "vkGetDeviceMemoryCommitment") - set_proc_address(&GetDeviceMemoryOpaqueCaptureAddress, "vkGetDeviceMemoryOpaqueCaptureAddress") - set_proc_address(&GetDeviceMemoryOpaqueCaptureAddressKHR, "vkGetDeviceMemoryOpaqueCaptureAddressKHR") - set_proc_address(&GetDeviceProcAddr, "vkGetDeviceProcAddr") - set_proc_address(&GetDeviceQueue, "vkGetDeviceQueue") - set_proc_address(&GetDeviceQueue2, "vkGetDeviceQueue2") - set_proc_address(&GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI") - set_proc_address(&GetEventStatus, "vkGetEventStatus") - set_proc_address(&GetFenceFdKHR, "vkGetFenceFdKHR") - set_proc_address(&GetFenceStatus, "vkGetFenceStatus") - set_proc_address(&GetFenceWin32HandleKHR, "vkGetFenceWin32HandleKHR") - set_proc_address(&GetGeneratedCommandsMemoryRequirementsNV, "vkGetGeneratedCommandsMemoryRequirementsNV") - set_proc_address(&GetImageDrmFormatModifierPropertiesEXT, "vkGetImageDrmFormatModifierPropertiesEXT") - set_proc_address(&GetImageMemoryRequirements, "vkGetImageMemoryRequirements") - set_proc_address(&GetImageMemoryRequirements2, "vkGetImageMemoryRequirements2") - set_proc_address(&GetImageMemoryRequirements2KHR, "vkGetImageMemoryRequirements2KHR") - set_proc_address(&GetImageSparseMemoryRequirements, "vkGetImageSparseMemoryRequirements") - set_proc_address(&GetImageSparseMemoryRequirements2, "vkGetImageSparseMemoryRequirements2") - set_proc_address(&GetImageSparseMemoryRequirements2KHR, "vkGetImageSparseMemoryRequirements2KHR") - set_proc_address(&GetImageSubresourceLayout, "vkGetImageSubresourceLayout") - set_proc_address(&GetImageViewAddressNVX, "vkGetImageViewAddressNVX") - set_proc_address(&GetImageViewHandleNVX, "vkGetImageViewHandleNVX") - set_proc_address(&GetMemoryFdKHR, "vkGetMemoryFdKHR") - set_proc_address(&GetMemoryFdPropertiesKHR, "vkGetMemoryFdPropertiesKHR") - set_proc_address(&GetMemoryHostPointerPropertiesEXT, "vkGetMemoryHostPointerPropertiesEXT") - set_proc_address(&GetMemoryRemoteAddressNV, "vkGetMemoryRemoteAddressNV") - set_proc_address(&GetMemoryWin32HandleKHR, "vkGetMemoryWin32HandleKHR") - set_proc_address(&GetMemoryWin32HandleNV, "vkGetMemoryWin32HandleNV") - set_proc_address(&GetMemoryWin32HandlePropertiesKHR, "vkGetMemoryWin32HandlePropertiesKHR") - set_proc_address(&GetPastPresentationTimingGOOGLE, "vkGetPastPresentationTimingGOOGLE") - set_proc_address(&GetPerformanceParameterINTEL, "vkGetPerformanceParameterINTEL") - set_proc_address(&GetPipelineCacheData, "vkGetPipelineCacheData") - set_proc_address(&GetPipelineExecutableInternalRepresentationsKHR, "vkGetPipelineExecutableInternalRepresentationsKHR") - set_proc_address(&GetPipelineExecutablePropertiesKHR, "vkGetPipelineExecutablePropertiesKHR") - set_proc_address(&GetPipelineExecutableStatisticsKHR, "vkGetPipelineExecutableStatisticsKHR") - set_proc_address(&GetPrivateData, "vkGetPrivateData") - set_proc_address(&GetPrivateDataEXT, "vkGetPrivateDataEXT") - set_proc_address(&GetQueryPoolResults, "vkGetQueryPoolResults") - set_proc_address(&GetQueueCheckpointData2NV, "vkGetQueueCheckpointData2NV") - set_proc_address(&GetQueueCheckpointDataNV, "vkGetQueueCheckpointDataNV") - set_proc_address(&GetRayTracingCaptureReplayShaderGroupHandlesKHR, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR") - set_proc_address(&GetRayTracingShaderGroupHandlesKHR, "vkGetRayTracingShaderGroupHandlesKHR") - set_proc_address(&GetRayTracingShaderGroupHandlesNV, "vkGetRayTracingShaderGroupHandlesNV") - set_proc_address(&GetRayTracingShaderGroupStackSizeKHR, "vkGetRayTracingShaderGroupStackSizeKHR") - set_proc_address(&GetRefreshCycleDurationGOOGLE, "vkGetRefreshCycleDurationGOOGLE") - set_proc_address(&GetRenderAreaGranularity, "vkGetRenderAreaGranularity") - set_proc_address(&GetSemaphoreCounterValue, "vkGetSemaphoreCounterValue") - set_proc_address(&GetSemaphoreCounterValueKHR, "vkGetSemaphoreCounterValueKHR") - set_proc_address(&GetSemaphoreFdKHR, "vkGetSemaphoreFdKHR") - set_proc_address(&GetSemaphoreWin32HandleKHR, "vkGetSemaphoreWin32HandleKHR") - set_proc_address(&GetShaderInfoAMD, "vkGetShaderInfoAMD") - set_proc_address(&GetSwapchainCounterEXT, "vkGetSwapchainCounterEXT") - set_proc_address(&GetSwapchainImagesKHR, "vkGetSwapchainImagesKHR") - set_proc_address(&GetSwapchainStatusKHR, "vkGetSwapchainStatusKHR") - set_proc_address(&GetValidationCacheDataEXT, "vkGetValidationCacheDataEXT") - set_proc_address(&ImportFenceFdKHR, "vkImportFenceFdKHR") - set_proc_address(&ImportFenceWin32HandleKHR, "vkImportFenceWin32HandleKHR") - set_proc_address(&ImportSemaphoreFdKHR, "vkImportSemaphoreFdKHR") - set_proc_address(&ImportSemaphoreWin32HandleKHR, "vkImportSemaphoreWin32HandleKHR") - set_proc_address(&InitializePerformanceApiINTEL, "vkInitializePerformanceApiINTEL") - set_proc_address(&InvalidateMappedMemoryRanges, "vkInvalidateMappedMemoryRanges") - set_proc_address(&MapMemory, "vkMapMemory") - set_proc_address(&MergePipelineCaches, "vkMergePipelineCaches") - set_proc_address(&MergeValidationCachesEXT, "vkMergeValidationCachesEXT") - set_proc_address(&QueueBeginDebugUtilsLabelEXT, "vkQueueBeginDebugUtilsLabelEXT") - set_proc_address(&QueueBindSparse, "vkQueueBindSparse") - set_proc_address(&QueueEndDebugUtilsLabelEXT, "vkQueueEndDebugUtilsLabelEXT") - set_proc_address(&QueueInsertDebugUtilsLabelEXT, "vkQueueInsertDebugUtilsLabelEXT") - set_proc_address(&QueuePresentKHR, "vkQueuePresentKHR") - set_proc_address(&QueueSetPerformanceConfigurationINTEL, "vkQueueSetPerformanceConfigurationINTEL") - set_proc_address(&QueueSubmit, "vkQueueSubmit") - set_proc_address(&QueueSubmit2, "vkQueueSubmit2") - set_proc_address(&QueueSubmit2KHR, "vkQueueSubmit2KHR") - set_proc_address(&QueueWaitIdle, "vkQueueWaitIdle") - set_proc_address(&RegisterDeviceEventEXT, "vkRegisterDeviceEventEXT") - set_proc_address(&RegisterDisplayEventEXT, "vkRegisterDisplayEventEXT") - set_proc_address(&ReleaseFullScreenExclusiveModeEXT, "vkReleaseFullScreenExclusiveModeEXT") - set_proc_address(&ReleasePerformanceConfigurationINTEL, "vkReleasePerformanceConfigurationINTEL") - set_proc_address(&ReleaseProfilingLockKHR, "vkReleaseProfilingLockKHR") - set_proc_address(&ResetCommandBuffer, "vkResetCommandBuffer") - set_proc_address(&ResetCommandPool, "vkResetCommandPool") - set_proc_address(&ResetDescriptorPool, "vkResetDescriptorPool") - set_proc_address(&ResetEvent, "vkResetEvent") - set_proc_address(&ResetFences, "vkResetFences") - set_proc_address(&ResetQueryPool, "vkResetQueryPool") - set_proc_address(&ResetQueryPoolEXT, "vkResetQueryPoolEXT") - set_proc_address(&SetDebugUtilsObjectNameEXT, "vkSetDebugUtilsObjectNameEXT") - set_proc_address(&SetDebugUtilsObjectTagEXT, "vkSetDebugUtilsObjectTagEXT") - set_proc_address(&SetDeviceMemoryPriorityEXT, "vkSetDeviceMemoryPriorityEXT") - set_proc_address(&SetEvent, "vkSetEvent") - set_proc_address(&SetHdrMetadataEXT, "vkSetHdrMetadataEXT") - set_proc_address(&SetLocalDimmingAMD, "vkSetLocalDimmingAMD") - set_proc_address(&SetPrivateData, "vkSetPrivateData") - set_proc_address(&SetPrivateDataEXT, "vkSetPrivateDataEXT") - set_proc_address(&SignalSemaphore, "vkSignalSemaphore") - set_proc_address(&SignalSemaphoreKHR, "vkSignalSemaphoreKHR") - set_proc_address(&TrimCommandPool, "vkTrimCommandPool") - set_proc_address(&TrimCommandPoolKHR, "vkTrimCommandPoolKHR") - set_proc_address(&UninitializePerformanceApiINTEL, "vkUninitializePerformanceApiINTEL") - set_proc_address(&UnmapMemory, "vkUnmapMemory") - set_proc_address(&UpdateDescriptorSetWithTemplate, "vkUpdateDescriptorSetWithTemplate") - set_proc_address(&UpdateDescriptorSetWithTemplateKHR, "vkUpdateDescriptorSetWithTemplateKHR") - set_proc_address(&UpdateDescriptorSets, "vkUpdateDescriptorSets") - set_proc_address(&WaitForFences, "vkWaitForFences") - set_proc_address(&WaitForPresentKHR, "vkWaitForPresentKHR") - set_proc_address(&WaitSemaphores, "vkWaitSemaphores") - set_proc_address(&WaitSemaphoresKHR, "vkWaitSemaphoresKHR") - set_proc_address(&WriteAccelerationStructuresPropertiesKHR, "vkWriteAccelerationStructuresPropertiesKHR") - -} - -// Device Procedure VTable -Device_VTable :: struct { - AcquireFullScreenExclusiveModeEXT: ProcAcquireFullScreenExclusiveModeEXT, - AcquireNextImage2KHR: ProcAcquireNextImage2KHR, - AcquireNextImageKHR: ProcAcquireNextImageKHR, - AcquirePerformanceConfigurationINTEL: ProcAcquirePerformanceConfigurationINTEL, - AcquireProfilingLockKHR: ProcAcquireProfilingLockKHR, - AllocateCommandBuffers: ProcAllocateCommandBuffers, - AllocateDescriptorSets: ProcAllocateDescriptorSets, - AllocateMemory: ProcAllocateMemory, - BeginCommandBuffer: ProcBeginCommandBuffer, - BindAccelerationStructureMemoryNV: ProcBindAccelerationStructureMemoryNV, - BindBufferMemory: ProcBindBufferMemory, - BindBufferMemory2: ProcBindBufferMemory2, - BindBufferMemory2KHR: ProcBindBufferMemory2KHR, - BindImageMemory: ProcBindImageMemory, - BindImageMemory2: ProcBindImageMemory2, - BindImageMemory2KHR: ProcBindImageMemory2KHR, - BuildAccelerationStructuresKHR: ProcBuildAccelerationStructuresKHR, - CmdBeginConditionalRenderingEXT: ProcCmdBeginConditionalRenderingEXT, - CmdBeginDebugUtilsLabelEXT: ProcCmdBeginDebugUtilsLabelEXT, - CmdBeginQuery: ProcCmdBeginQuery, - CmdBeginQueryIndexedEXT: ProcCmdBeginQueryIndexedEXT, - CmdBeginRenderPass: ProcCmdBeginRenderPass, - CmdBeginRenderPass2: ProcCmdBeginRenderPass2, - CmdBeginRenderPass2KHR: ProcCmdBeginRenderPass2KHR, - CmdBeginRendering: ProcCmdBeginRendering, - CmdBeginRenderingKHR: ProcCmdBeginRenderingKHR, - CmdBeginTransformFeedbackEXT: ProcCmdBeginTransformFeedbackEXT, - CmdBindDescriptorSets: ProcCmdBindDescriptorSets, - CmdBindIndexBuffer: ProcCmdBindIndexBuffer, - CmdBindInvocationMaskHUAWEI: ProcCmdBindInvocationMaskHUAWEI, - CmdBindPipeline: ProcCmdBindPipeline, - CmdBindPipelineShaderGroupNV: ProcCmdBindPipelineShaderGroupNV, - CmdBindShadingRateImageNV: ProcCmdBindShadingRateImageNV, - CmdBindTransformFeedbackBuffersEXT: ProcCmdBindTransformFeedbackBuffersEXT, - CmdBindVertexBuffers: ProcCmdBindVertexBuffers, - CmdBindVertexBuffers2: ProcCmdBindVertexBuffers2, - CmdBindVertexBuffers2EXT: ProcCmdBindVertexBuffers2EXT, - CmdBlitImage: ProcCmdBlitImage, - CmdBlitImage2: ProcCmdBlitImage2, - CmdBlitImage2KHR: ProcCmdBlitImage2KHR, - CmdBuildAccelerationStructureNV: ProcCmdBuildAccelerationStructureNV, - CmdBuildAccelerationStructuresIndirectKHR: ProcCmdBuildAccelerationStructuresIndirectKHR, - CmdBuildAccelerationStructuresKHR: ProcCmdBuildAccelerationStructuresKHR, - CmdClearAttachments: ProcCmdClearAttachments, - CmdClearColorImage: ProcCmdClearColorImage, - CmdClearDepthStencilImage: ProcCmdClearDepthStencilImage, - CmdCopyAccelerationStructureKHR: ProcCmdCopyAccelerationStructureKHR, - CmdCopyAccelerationStructureNV: ProcCmdCopyAccelerationStructureNV, - CmdCopyAccelerationStructureToMemoryKHR: ProcCmdCopyAccelerationStructureToMemoryKHR, - CmdCopyBuffer: ProcCmdCopyBuffer, - CmdCopyBuffer2: ProcCmdCopyBuffer2, - CmdCopyBuffer2KHR: ProcCmdCopyBuffer2KHR, - CmdCopyBufferToImage: ProcCmdCopyBufferToImage, - CmdCopyBufferToImage2: ProcCmdCopyBufferToImage2, - CmdCopyBufferToImage2KHR: ProcCmdCopyBufferToImage2KHR, - CmdCopyImage: ProcCmdCopyImage, - CmdCopyImage2: ProcCmdCopyImage2, - CmdCopyImage2KHR: ProcCmdCopyImage2KHR, - CmdCopyImageToBuffer: ProcCmdCopyImageToBuffer, - CmdCopyImageToBuffer2: ProcCmdCopyImageToBuffer2, - CmdCopyImageToBuffer2KHR: ProcCmdCopyImageToBuffer2KHR, - CmdCopyMemoryToAccelerationStructureKHR: ProcCmdCopyMemoryToAccelerationStructureKHR, - CmdCopyQueryPoolResults: ProcCmdCopyQueryPoolResults, - CmdCuLaunchKernelNVX: ProcCmdCuLaunchKernelNVX, - CmdDebugMarkerBeginEXT: ProcCmdDebugMarkerBeginEXT, - CmdDebugMarkerEndEXT: ProcCmdDebugMarkerEndEXT, - CmdDebugMarkerInsertEXT: ProcCmdDebugMarkerInsertEXT, - CmdDispatch: ProcCmdDispatch, - CmdDispatchBase: ProcCmdDispatchBase, - CmdDispatchBaseKHR: ProcCmdDispatchBaseKHR, - CmdDispatchIndirect: ProcCmdDispatchIndirect, - CmdDraw: ProcCmdDraw, - CmdDrawIndexed: ProcCmdDrawIndexed, - CmdDrawIndexedIndirect: ProcCmdDrawIndexedIndirect, - CmdDrawIndexedIndirectCount: ProcCmdDrawIndexedIndirectCount, - CmdDrawIndexedIndirectCountAMD: ProcCmdDrawIndexedIndirectCountAMD, - CmdDrawIndexedIndirectCountKHR: ProcCmdDrawIndexedIndirectCountKHR, - CmdDrawIndirect: ProcCmdDrawIndirect, - CmdDrawIndirectByteCountEXT: ProcCmdDrawIndirectByteCountEXT, - CmdDrawIndirectCount: ProcCmdDrawIndirectCount, - CmdDrawIndirectCountAMD: ProcCmdDrawIndirectCountAMD, - CmdDrawIndirectCountKHR: ProcCmdDrawIndirectCountKHR, - CmdDrawMeshTasksIndirectCountNV: ProcCmdDrawMeshTasksIndirectCountNV, - CmdDrawMeshTasksIndirectNV: ProcCmdDrawMeshTasksIndirectNV, - CmdDrawMeshTasksNV: ProcCmdDrawMeshTasksNV, - CmdDrawMultiEXT: ProcCmdDrawMultiEXT, - CmdDrawMultiIndexedEXT: ProcCmdDrawMultiIndexedEXT, - CmdEndConditionalRenderingEXT: ProcCmdEndConditionalRenderingEXT, - CmdEndDebugUtilsLabelEXT: ProcCmdEndDebugUtilsLabelEXT, - CmdEndQuery: ProcCmdEndQuery, - CmdEndQueryIndexedEXT: ProcCmdEndQueryIndexedEXT, - CmdEndRenderPass: ProcCmdEndRenderPass, - CmdEndRenderPass2: ProcCmdEndRenderPass2, - CmdEndRenderPass2KHR: ProcCmdEndRenderPass2KHR, - CmdEndRendering: ProcCmdEndRendering, - CmdEndRenderingKHR: ProcCmdEndRenderingKHR, - CmdEndTransformFeedbackEXT: ProcCmdEndTransformFeedbackEXT, - CmdExecuteCommands: ProcCmdExecuteCommands, - CmdExecuteGeneratedCommandsNV: ProcCmdExecuteGeneratedCommandsNV, - CmdFillBuffer: ProcCmdFillBuffer, - CmdInsertDebugUtilsLabelEXT: ProcCmdInsertDebugUtilsLabelEXT, - CmdNextSubpass: ProcCmdNextSubpass, - CmdNextSubpass2: ProcCmdNextSubpass2, - CmdNextSubpass2KHR: ProcCmdNextSubpass2KHR, - CmdPipelineBarrier: ProcCmdPipelineBarrier, - CmdPipelineBarrier2: ProcCmdPipelineBarrier2, - CmdPipelineBarrier2KHR: ProcCmdPipelineBarrier2KHR, - CmdPreprocessGeneratedCommandsNV: ProcCmdPreprocessGeneratedCommandsNV, - CmdPushConstants: ProcCmdPushConstants, - CmdPushDescriptorSetKHR: ProcCmdPushDescriptorSetKHR, - CmdPushDescriptorSetWithTemplateKHR: ProcCmdPushDescriptorSetWithTemplateKHR, - CmdResetEvent: ProcCmdResetEvent, - CmdResetEvent2: ProcCmdResetEvent2, - CmdResetEvent2KHR: ProcCmdResetEvent2KHR, - CmdResetQueryPool: ProcCmdResetQueryPool, - CmdResolveImage: ProcCmdResolveImage, - CmdResolveImage2: ProcCmdResolveImage2, - CmdResolveImage2KHR: ProcCmdResolveImage2KHR, - CmdSetBlendConstants: ProcCmdSetBlendConstants, - CmdSetCheckpointNV: ProcCmdSetCheckpointNV, - CmdSetCoarseSampleOrderNV: ProcCmdSetCoarseSampleOrderNV, - CmdSetCullMode: ProcCmdSetCullMode, - CmdSetCullModeEXT: ProcCmdSetCullModeEXT, - CmdSetDepthBias: ProcCmdSetDepthBias, - CmdSetDepthBiasEnable: ProcCmdSetDepthBiasEnable, - CmdSetDepthBiasEnableEXT: ProcCmdSetDepthBiasEnableEXT, - CmdSetDepthBounds: ProcCmdSetDepthBounds, - CmdSetDepthBoundsTestEnable: ProcCmdSetDepthBoundsTestEnable, - CmdSetDepthBoundsTestEnableEXT: ProcCmdSetDepthBoundsTestEnableEXT, - CmdSetDepthCompareOp: ProcCmdSetDepthCompareOp, - CmdSetDepthCompareOpEXT: ProcCmdSetDepthCompareOpEXT, - CmdSetDepthTestEnable: ProcCmdSetDepthTestEnable, - CmdSetDepthTestEnableEXT: ProcCmdSetDepthTestEnableEXT, - CmdSetDepthWriteEnable: ProcCmdSetDepthWriteEnable, - CmdSetDepthWriteEnableEXT: ProcCmdSetDepthWriteEnableEXT, - CmdSetDeviceMask: ProcCmdSetDeviceMask, - CmdSetDeviceMaskKHR: ProcCmdSetDeviceMaskKHR, - CmdSetDiscardRectangleEXT: ProcCmdSetDiscardRectangleEXT, - CmdSetEvent: ProcCmdSetEvent, - CmdSetEvent2: ProcCmdSetEvent2, - CmdSetEvent2KHR: ProcCmdSetEvent2KHR, - CmdSetExclusiveScissorNV: ProcCmdSetExclusiveScissorNV, - CmdSetFragmentShadingRateEnumNV: ProcCmdSetFragmentShadingRateEnumNV, - CmdSetFragmentShadingRateKHR: ProcCmdSetFragmentShadingRateKHR, - CmdSetFrontFace: ProcCmdSetFrontFace, - CmdSetFrontFaceEXT: ProcCmdSetFrontFaceEXT, - CmdSetLineStippleEXT: ProcCmdSetLineStippleEXT, - CmdSetLineWidth: ProcCmdSetLineWidth, - CmdSetLogicOpEXT: ProcCmdSetLogicOpEXT, - CmdSetPatchControlPointsEXT: ProcCmdSetPatchControlPointsEXT, - CmdSetPerformanceMarkerINTEL: ProcCmdSetPerformanceMarkerINTEL, - CmdSetPerformanceOverrideINTEL: ProcCmdSetPerformanceOverrideINTEL, - CmdSetPerformanceStreamMarkerINTEL: ProcCmdSetPerformanceStreamMarkerINTEL, - CmdSetPrimitiveRestartEnable: ProcCmdSetPrimitiveRestartEnable, - CmdSetPrimitiveRestartEnableEXT: ProcCmdSetPrimitiveRestartEnableEXT, - CmdSetPrimitiveTopology: ProcCmdSetPrimitiveTopology, - CmdSetPrimitiveTopologyEXT: ProcCmdSetPrimitiveTopologyEXT, - CmdSetRasterizerDiscardEnable: ProcCmdSetRasterizerDiscardEnable, - CmdSetRasterizerDiscardEnableEXT: ProcCmdSetRasterizerDiscardEnableEXT, - CmdSetRayTracingPipelineStackSizeKHR: ProcCmdSetRayTracingPipelineStackSizeKHR, - CmdSetSampleLocationsEXT: ProcCmdSetSampleLocationsEXT, - CmdSetScissor: ProcCmdSetScissor, - CmdSetScissorWithCount: ProcCmdSetScissorWithCount, - CmdSetScissorWithCountEXT: ProcCmdSetScissorWithCountEXT, - CmdSetStencilCompareMask: ProcCmdSetStencilCompareMask, - CmdSetStencilOp: ProcCmdSetStencilOp, - CmdSetStencilOpEXT: ProcCmdSetStencilOpEXT, - CmdSetStencilReference: ProcCmdSetStencilReference, - CmdSetStencilTestEnable: ProcCmdSetStencilTestEnable, - CmdSetStencilTestEnableEXT: ProcCmdSetStencilTestEnableEXT, - CmdSetStencilWriteMask: ProcCmdSetStencilWriteMask, - CmdSetVertexInputEXT: ProcCmdSetVertexInputEXT, - CmdSetViewport: ProcCmdSetViewport, - CmdSetViewportShadingRatePaletteNV: ProcCmdSetViewportShadingRatePaletteNV, - CmdSetViewportWScalingNV: ProcCmdSetViewportWScalingNV, - CmdSetViewportWithCount: ProcCmdSetViewportWithCount, - CmdSetViewportWithCountEXT: ProcCmdSetViewportWithCountEXT, - CmdSubpassShadingHUAWEI: ProcCmdSubpassShadingHUAWEI, - CmdTraceRaysIndirectKHR: ProcCmdTraceRaysIndirectKHR, - CmdTraceRaysKHR: ProcCmdTraceRaysKHR, - CmdTraceRaysNV: ProcCmdTraceRaysNV, - CmdUpdateBuffer: ProcCmdUpdateBuffer, - CmdWaitEvents: ProcCmdWaitEvents, - CmdWaitEvents2: ProcCmdWaitEvents2, - CmdWaitEvents2KHR: ProcCmdWaitEvents2KHR, - CmdWriteAccelerationStructuresPropertiesKHR: ProcCmdWriteAccelerationStructuresPropertiesKHR, - CmdWriteAccelerationStructuresPropertiesNV: ProcCmdWriteAccelerationStructuresPropertiesNV, - CmdWriteBufferMarker2AMD: ProcCmdWriteBufferMarker2AMD, - CmdWriteBufferMarkerAMD: ProcCmdWriteBufferMarkerAMD, - CmdWriteTimestamp: ProcCmdWriteTimestamp, - CmdWriteTimestamp2: ProcCmdWriteTimestamp2, - CmdWriteTimestamp2KHR: ProcCmdWriteTimestamp2KHR, - CompileDeferredNV: ProcCompileDeferredNV, - CopyAccelerationStructureKHR: ProcCopyAccelerationStructureKHR, - CopyAccelerationStructureToMemoryKHR: ProcCopyAccelerationStructureToMemoryKHR, - CopyMemoryToAccelerationStructureKHR: ProcCopyMemoryToAccelerationStructureKHR, - CreateAccelerationStructureKHR: ProcCreateAccelerationStructureKHR, - CreateAccelerationStructureNV: ProcCreateAccelerationStructureNV, - CreateBuffer: ProcCreateBuffer, - CreateBufferView: ProcCreateBufferView, - CreateCommandPool: ProcCreateCommandPool, - CreateComputePipelines: ProcCreateComputePipelines, - CreateCuFunctionNVX: ProcCreateCuFunctionNVX, - CreateCuModuleNVX: ProcCreateCuModuleNVX, - CreateDeferredOperationKHR: ProcCreateDeferredOperationKHR, - CreateDescriptorPool: ProcCreateDescriptorPool, - CreateDescriptorSetLayout: ProcCreateDescriptorSetLayout, - CreateDescriptorUpdateTemplate: ProcCreateDescriptorUpdateTemplate, - CreateDescriptorUpdateTemplateKHR: ProcCreateDescriptorUpdateTemplateKHR, - CreateEvent: ProcCreateEvent, - CreateFence: ProcCreateFence, - CreateFramebuffer: ProcCreateFramebuffer, - CreateGraphicsPipelines: ProcCreateGraphicsPipelines, - CreateImage: ProcCreateImage, - CreateImageView: ProcCreateImageView, - CreateIndirectCommandsLayoutNV: ProcCreateIndirectCommandsLayoutNV, - CreatePipelineCache: ProcCreatePipelineCache, - CreatePipelineLayout: ProcCreatePipelineLayout, - CreatePrivateDataSlot: ProcCreatePrivateDataSlot, - CreatePrivateDataSlotEXT: ProcCreatePrivateDataSlotEXT, - CreateQueryPool: ProcCreateQueryPool, - CreateRayTracingPipelinesKHR: ProcCreateRayTracingPipelinesKHR, - CreateRayTracingPipelinesNV: ProcCreateRayTracingPipelinesNV, - CreateRenderPass: ProcCreateRenderPass, - CreateRenderPass2: ProcCreateRenderPass2, - CreateRenderPass2KHR: ProcCreateRenderPass2KHR, - CreateSampler: ProcCreateSampler, - CreateSamplerYcbcrConversion: ProcCreateSamplerYcbcrConversion, - CreateSamplerYcbcrConversionKHR: ProcCreateSamplerYcbcrConversionKHR, - CreateSemaphore: ProcCreateSemaphore, - CreateShaderModule: ProcCreateShaderModule, - CreateSharedSwapchainsKHR: ProcCreateSharedSwapchainsKHR, - CreateSwapchainKHR: ProcCreateSwapchainKHR, - CreateValidationCacheEXT: ProcCreateValidationCacheEXT, - DebugMarkerSetObjectNameEXT: ProcDebugMarkerSetObjectNameEXT, - DebugMarkerSetObjectTagEXT: ProcDebugMarkerSetObjectTagEXT, - DeferredOperationJoinKHR: ProcDeferredOperationJoinKHR, - DestroyAccelerationStructureKHR: ProcDestroyAccelerationStructureKHR, - DestroyAccelerationStructureNV: ProcDestroyAccelerationStructureNV, - DestroyBuffer: ProcDestroyBuffer, - DestroyBufferView: ProcDestroyBufferView, - DestroyCommandPool: ProcDestroyCommandPool, - DestroyCuFunctionNVX: ProcDestroyCuFunctionNVX, - DestroyCuModuleNVX: ProcDestroyCuModuleNVX, - DestroyDeferredOperationKHR: ProcDestroyDeferredOperationKHR, - DestroyDescriptorPool: ProcDestroyDescriptorPool, - DestroyDescriptorSetLayout: ProcDestroyDescriptorSetLayout, - DestroyDescriptorUpdateTemplate: ProcDestroyDescriptorUpdateTemplate, - DestroyDescriptorUpdateTemplateKHR: ProcDestroyDescriptorUpdateTemplateKHR, - DestroyDevice: ProcDestroyDevice, - DestroyEvent: ProcDestroyEvent, - DestroyFence: ProcDestroyFence, - DestroyFramebuffer: ProcDestroyFramebuffer, - DestroyImage: ProcDestroyImage, - DestroyImageView: ProcDestroyImageView, - DestroyIndirectCommandsLayoutNV: ProcDestroyIndirectCommandsLayoutNV, - DestroyPipeline: ProcDestroyPipeline, - DestroyPipelineCache: ProcDestroyPipelineCache, - DestroyPipelineLayout: ProcDestroyPipelineLayout, - DestroyPrivateDataSlot: ProcDestroyPrivateDataSlot, - DestroyPrivateDataSlotEXT: ProcDestroyPrivateDataSlotEXT, - DestroyQueryPool: ProcDestroyQueryPool, - DestroyRenderPass: ProcDestroyRenderPass, - DestroySampler: ProcDestroySampler, - DestroySamplerYcbcrConversion: ProcDestroySamplerYcbcrConversion, - DestroySamplerYcbcrConversionKHR: ProcDestroySamplerYcbcrConversionKHR, - DestroySemaphore: ProcDestroySemaphore, - DestroyShaderModule: ProcDestroyShaderModule, - DestroySwapchainKHR: ProcDestroySwapchainKHR, - DestroyValidationCacheEXT: ProcDestroyValidationCacheEXT, - DeviceWaitIdle: ProcDeviceWaitIdle, - DisplayPowerControlEXT: ProcDisplayPowerControlEXT, - EndCommandBuffer: ProcEndCommandBuffer, - FlushMappedMemoryRanges: ProcFlushMappedMemoryRanges, - FreeCommandBuffers: ProcFreeCommandBuffers, - FreeDescriptorSets: ProcFreeDescriptorSets, - FreeMemory: ProcFreeMemory, - GetAccelerationStructureBuildSizesKHR: ProcGetAccelerationStructureBuildSizesKHR, - GetAccelerationStructureDeviceAddressKHR: ProcGetAccelerationStructureDeviceAddressKHR, - GetAccelerationStructureHandleNV: ProcGetAccelerationStructureHandleNV, - GetAccelerationStructureMemoryRequirementsNV: ProcGetAccelerationStructureMemoryRequirementsNV, - GetBufferDeviceAddress: ProcGetBufferDeviceAddress, - GetBufferDeviceAddressEXT: ProcGetBufferDeviceAddressEXT, - GetBufferDeviceAddressKHR: ProcGetBufferDeviceAddressKHR, - GetBufferMemoryRequirements: ProcGetBufferMemoryRequirements, - GetBufferMemoryRequirements2: ProcGetBufferMemoryRequirements2, - GetBufferMemoryRequirements2KHR: ProcGetBufferMemoryRequirements2KHR, - GetBufferOpaqueCaptureAddress: ProcGetBufferOpaqueCaptureAddress, - GetBufferOpaqueCaptureAddressKHR: ProcGetBufferOpaqueCaptureAddressKHR, - GetCalibratedTimestampsEXT: ProcGetCalibratedTimestampsEXT, - GetDeferredOperationMaxConcurrencyKHR: ProcGetDeferredOperationMaxConcurrencyKHR, - GetDeferredOperationResultKHR: ProcGetDeferredOperationResultKHR, - GetDescriptorSetHostMappingVALVE: ProcGetDescriptorSetHostMappingVALVE, - GetDescriptorSetLayoutHostMappingInfoVALVE: ProcGetDescriptorSetLayoutHostMappingInfoVALVE, - GetDescriptorSetLayoutSupport: ProcGetDescriptorSetLayoutSupport, - GetDescriptorSetLayoutSupportKHR: ProcGetDescriptorSetLayoutSupportKHR, - GetDeviceAccelerationStructureCompatibilityKHR: ProcGetDeviceAccelerationStructureCompatibilityKHR, - GetDeviceBufferMemoryRequirements: ProcGetDeviceBufferMemoryRequirements, - GetDeviceBufferMemoryRequirementsKHR: ProcGetDeviceBufferMemoryRequirementsKHR, - GetDeviceGroupPeerMemoryFeatures: ProcGetDeviceGroupPeerMemoryFeatures, - GetDeviceGroupPeerMemoryFeaturesKHR: ProcGetDeviceGroupPeerMemoryFeaturesKHR, - GetDeviceGroupPresentCapabilitiesKHR: ProcGetDeviceGroupPresentCapabilitiesKHR, - GetDeviceGroupSurfacePresentModes2EXT: ProcGetDeviceGroupSurfacePresentModes2EXT, - GetDeviceGroupSurfacePresentModesKHR: ProcGetDeviceGroupSurfacePresentModesKHR, - GetDeviceImageMemoryRequirements: ProcGetDeviceImageMemoryRequirements, - GetDeviceImageMemoryRequirementsKHR: ProcGetDeviceImageMemoryRequirementsKHR, - GetDeviceImageSparseMemoryRequirements: ProcGetDeviceImageSparseMemoryRequirements, - GetDeviceImageSparseMemoryRequirementsKHR: ProcGetDeviceImageSparseMemoryRequirementsKHR, - GetDeviceMemoryCommitment: ProcGetDeviceMemoryCommitment, - GetDeviceMemoryOpaqueCaptureAddress: ProcGetDeviceMemoryOpaqueCaptureAddress, - GetDeviceMemoryOpaqueCaptureAddressKHR: ProcGetDeviceMemoryOpaqueCaptureAddressKHR, - GetDeviceProcAddr: ProcGetDeviceProcAddr, - GetDeviceQueue: ProcGetDeviceQueue, - GetDeviceQueue2: ProcGetDeviceQueue2, - GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI: ProcGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, - GetEventStatus: ProcGetEventStatus, - GetFenceFdKHR: ProcGetFenceFdKHR, - GetFenceStatus: ProcGetFenceStatus, - GetFenceWin32HandleKHR: ProcGetFenceWin32HandleKHR, - GetGeneratedCommandsMemoryRequirementsNV: ProcGetGeneratedCommandsMemoryRequirementsNV, - GetImageDrmFormatModifierPropertiesEXT: ProcGetImageDrmFormatModifierPropertiesEXT, - GetImageMemoryRequirements: ProcGetImageMemoryRequirements, - GetImageMemoryRequirements2: ProcGetImageMemoryRequirements2, - GetImageMemoryRequirements2KHR: ProcGetImageMemoryRequirements2KHR, - GetImageSparseMemoryRequirements: ProcGetImageSparseMemoryRequirements, - GetImageSparseMemoryRequirements2: ProcGetImageSparseMemoryRequirements2, - GetImageSparseMemoryRequirements2KHR: ProcGetImageSparseMemoryRequirements2KHR, - GetImageSubresourceLayout: ProcGetImageSubresourceLayout, - GetImageViewAddressNVX: ProcGetImageViewAddressNVX, - GetImageViewHandleNVX: ProcGetImageViewHandleNVX, - GetMemoryFdKHR: ProcGetMemoryFdKHR, - GetMemoryFdPropertiesKHR: ProcGetMemoryFdPropertiesKHR, - GetMemoryHostPointerPropertiesEXT: ProcGetMemoryHostPointerPropertiesEXT, - GetMemoryRemoteAddressNV: ProcGetMemoryRemoteAddressNV, - GetMemoryWin32HandleKHR: ProcGetMemoryWin32HandleKHR, - GetMemoryWin32HandleNV: ProcGetMemoryWin32HandleNV, - GetMemoryWin32HandlePropertiesKHR: ProcGetMemoryWin32HandlePropertiesKHR, - GetPastPresentationTimingGOOGLE: ProcGetPastPresentationTimingGOOGLE, - GetPerformanceParameterINTEL: ProcGetPerformanceParameterINTEL, - GetPipelineCacheData: ProcGetPipelineCacheData, - GetPipelineExecutableInternalRepresentationsKHR: ProcGetPipelineExecutableInternalRepresentationsKHR, - GetPipelineExecutablePropertiesKHR: ProcGetPipelineExecutablePropertiesKHR, - GetPipelineExecutableStatisticsKHR: ProcGetPipelineExecutableStatisticsKHR, - GetPrivateData: ProcGetPrivateData, - GetPrivateDataEXT: ProcGetPrivateDataEXT, - GetQueryPoolResults: ProcGetQueryPoolResults, - GetQueueCheckpointData2NV: ProcGetQueueCheckpointData2NV, - GetQueueCheckpointDataNV: ProcGetQueueCheckpointDataNV, - GetRayTracingCaptureReplayShaderGroupHandlesKHR: ProcGetRayTracingCaptureReplayShaderGroupHandlesKHR, - GetRayTracingShaderGroupHandlesKHR: ProcGetRayTracingShaderGroupHandlesKHR, - GetRayTracingShaderGroupHandlesNV: ProcGetRayTracingShaderGroupHandlesNV, - GetRayTracingShaderGroupStackSizeKHR: ProcGetRayTracingShaderGroupStackSizeKHR, - GetRefreshCycleDurationGOOGLE: ProcGetRefreshCycleDurationGOOGLE, - GetRenderAreaGranularity: ProcGetRenderAreaGranularity, - GetSemaphoreCounterValue: ProcGetSemaphoreCounterValue, - GetSemaphoreCounterValueKHR: ProcGetSemaphoreCounterValueKHR, - GetSemaphoreFdKHR: ProcGetSemaphoreFdKHR, - GetSemaphoreWin32HandleKHR: ProcGetSemaphoreWin32HandleKHR, - GetShaderInfoAMD: ProcGetShaderInfoAMD, - GetSwapchainCounterEXT: ProcGetSwapchainCounterEXT, - GetSwapchainImagesKHR: ProcGetSwapchainImagesKHR, - GetSwapchainStatusKHR: ProcGetSwapchainStatusKHR, - GetValidationCacheDataEXT: ProcGetValidationCacheDataEXT, - ImportFenceFdKHR: ProcImportFenceFdKHR, - ImportFenceWin32HandleKHR: ProcImportFenceWin32HandleKHR, - ImportSemaphoreFdKHR: ProcImportSemaphoreFdKHR, - ImportSemaphoreWin32HandleKHR: ProcImportSemaphoreWin32HandleKHR, - InitializePerformanceApiINTEL: ProcInitializePerformanceApiINTEL, - InvalidateMappedMemoryRanges: ProcInvalidateMappedMemoryRanges, - MapMemory: ProcMapMemory, - MergePipelineCaches: ProcMergePipelineCaches, - MergeValidationCachesEXT: ProcMergeValidationCachesEXT, - QueueBeginDebugUtilsLabelEXT: ProcQueueBeginDebugUtilsLabelEXT, - QueueBindSparse: ProcQueueBindSparse, - QueueEndDebugUtilsLabelEXT: ProcQueueEndDebugUtilsLabelEXT, - QueueInsertDebugUtilsLabelEXT: ProcQueueInsertDebugUtilsLabelEXT, - QueuePresentKHR: ProcQueuePresentKHR, - QueueSetPerformanceConfigurationINTEL: ProcQueueSetPerformanceConfigurationINTEL, - QueueSubmit: ProcQueueSubmit, - QueueSubmit2: ProcQueueSubmit2, - QueueSubmit2KHR: ProcQueueSubmit2KHR, - QueueWaitIdle: ProcQueueWaitIdle, - RegisterDeviceEventEXT: ProcRegisterDeviceEventEXT, - RegisterDisplayEventEXT: ProcRegisterDisplayEventEXT, - ReleaseFullScreenExclusiveModeEXT: ProcReleaseFullScreenExclusiveModeEXT, - ReleasePerformanceConfigurationINTEL: ProcReleasePerformanceConfigurationINTEL, - ReleaseProfilingLockKHR: ProcReleaseProfilingLockKHR, - ResetCommandBuffer: ProcResetCommandBuffer, - ResetCommandPool: ProcResetCommandPool, - ResetDescriptorPool: ProcResetDescriptorPool, - ResetEvent: ProcResetEvent, - ResetFences: ProcResetFences, - ResetQueryPool: ProcResetQueryPool, - ResetQueryPoolEXT: ProcResetQueryPoolEXT, - SetDebugUtilsObjectNameEXT: ProcSetDebugUtilsObjectNameEXT, - SetDebugUtilsObjectTagEXT: ProcSetDebugUtilsObjectTagEXT, - SetDeviceMemoryPriorityEXT: ProcSetDeviceMemoryPriorityEXT, - SetEvent: ProcSetEvent, - SetHdrMetadataEXT: ProcSetHdrMetadataEXT, - SetLocalDimmingAMD: ProcSetLocalDimmingAMD, - SetPrivateData: ProcSetPrivateData, - SetPrivateDataEXT: ProcSetPrivateDataEXT, - SignalSemaphore: ProcSignalSemaphore, - SignalSemaphoreKHR: ProcSignalSemaphoreKHR, - TrimCommandPool: ProcTrimCommandPool, - TrimCommandPoolKHR: ProcTrimCommandPoolKHR, - UninitializePerformanceApiINTEL: ProcUninitializePerformanceApiINTEL, - UnmapMemory: ProcUnmapMemory, - UpdateDescriptorSetWithTemplate: ProcUpdateDescriptorSetWithTemplate, - UpdateDescriptorSetWithTemplateKHR: ProcUpdateDescriptorSetWithTemplateKHR, - UpdateDescriptorSets: ProcUpdateDescriptorSets, - WaitForFences: ProcWaitForFences, - WaitForPresentKHR: ProcWaitForPresentKHR, - WaitSemaphores: ProcWaitSemaphores, - WaitSemaphoresKHR: ProcWaitSemaphoresKHR, - WriteAccelerationStructuresPropertiesKHR: ProcWriteAccelerationStructuresPropertiesKHR, -} - -load_proc_addresses_device_vtable :: proc(device: Device, vtable: ^Device_VTable) { - vtable.AcquireFullScreenExclusiveModeEXT = auto_cast GetDeviceProcAddr(device, "vkAcquireFullScreenExclusiveModeEXT") - vtable.AcquireNextImage2KHR = auto_cast GetDeviceProcAddr(device, "vkAcquireNextImage2KHR") - vtable.AcquireNextImageKHR = auto_cast GetDeviceProcAddr(device, "vkAcquireNextImageKHR") - vtable.AcquirePerformanceConfigurationINTEL = auto_cast GetDeviceProcAddr(device, "vkAcquirePerformanceConfigurationINTEL") - vtable.AcquireProfilingLockKHR = auto_cast GetDeviceProcAddr(device, "vkAcquireProfilingLockKHR") - vtable.AllocateCommandBuffers = auto_cast GetDeviceProcAddr(device, "vkAllocateCommandBuffers") - vtable.AllocateDescriptorSets = auto_cast GetDeviceProcAddr(device, "vkAllocateDescriptorSets") - vtable.AllocateMemory = auto_cast GetDeviceProcAddr(device, "vkAllocateMemory") - vtable.BeginCommandBuffer = auto_cast GetDeviceProcAddr(device, "vkBeginCommandBuffer") - vtable.BindAccelerationStructureMemoryNV = auto_cast GetDeviceProcAddr(device, "vkBindAccelerationStructureMemoryNV") - vtable.BindBufferMemory = auto_cast GetDeviceProcAddr(device, "vkBindBufferMemory") - vtable.BindBufferMemory2 = auto_cast GetDeviceProcAddr(device, "vkBindBufferMemory2") - vtable.BindBufferMemory2KHR = auto_cast GetDeviceProcAddr(device, "vkBindBufferMemory2KHR") - vtable.BindImageMemory = auto_cast GetDeviceProcAddr(device, "vkBindImageMemory") - vtable.BindImageMemory2 = auto_cast GetDeviceProcAddr(device, "vkBindImageMemory2") - vtable.BindImageMemory2KHR = auto_cast GetDeviceProcAddr(device, "vkBindImageMemory2KHR") - vtable.BuildAccelerationStructuresKHR = auto_cast GetDeviceProcAddr(device, "vkBuildAccelerationStructuresKHR") - vtable.CmdBeginConditionalRenderingEXT = auto_cast GetDeviceProcAddr(device, "vkCmdBeginConditionalRenderingEXT") - vtable.CmdBeginDebugUtilsLabelEXT = auto_cast GetDeviceProcAddr(device, "vkCmdBeginDebugUtilsLabelEXT") - vtable.CmdBeginQuery = auto_cast GetDeviceProcAddr(device, "vkCmdBeginQuery") - vtable.CmdBeginQueryIndexedEXT = auto_cast GetDeviceProcAddr(device, "vkCmdBeginQueryIndexedEXT") - vtable.CmdBeginRenderPass = auto_cast GetDeviceProcAddr(device, "vkCmdBeginRenderPass") - vtable.CmdBeginRenderPass2 = auto_cast GetDeviceProcAddr(device, "vkCmdBeginRenderPass2") - vtable.CmdBeginRenderPass2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdBeginRenderPass2KHR") - vtable.CmdBeginRendering = auto_cast GetDeviceProcAddr(device, "vkCmdBeginRendering") - vtable.CmdBeginRenderingKHR = auto_cast GetDeviceProcAddr(device, "vkCmdBeginRenderingKHR") - vtable.CmdBeginTransformFeedbackEXT = auto_cast GetDeviceProcAddr(device, "vkCmdBeginTransformFeedbackEXT") - vtable.CmdBindDescriptorSets = auto_cast GetDeviceProcAddr(device, "vkCmdBindDescriptorSets") - vtable.CmdBindIndexBuffer = auto_cast GetDeviceProcAddr(device, "vkCmdBindIndexBuffer") - vtable.CmdBindInvocationMaskHUAWEI = auto_cast GetDeviceProcAddr(device, "vkCmdBindInvocationMaskHUAWEI") - vtable.CmdBindPipeline = auto_cast GetDeviceProcAddr(device, "vkCmdBindPipeline") - vtable.CmdBindPipelineShaderGroupNV = auto_cast GetDeviceProcAddr(device, "vkCmdBindPipelineShaderGroupNV") - vtable.CmdBindShadingRateImageNV = auto_cast GetDeviceProcAddr(device, "vkCmdBindShadingRateImageNV") - vtable.CmdBindTransformFeedbackBuffersEXT = auto_cast GetDeviceProcAddr(device, "vkCmdBindTransformFeedbackBuffersEXT") - vtable.CmdBindVertexBuffers = auto_cast GetDeviceProcAddr(device, "vkCmdBindVertexBuffers") - vtable.CmdBindVertexBuffers2 = auto_cast GetDeviceProcAddr(device, "vkCmdBindVertexBuffers2") - vtable.CmdBindVertexBuffers2EXT = auto_cast GetDeviceProcAddr(device, "vkCmdBindVertexBuffers2EXT") - vtable.CmdBlitImage = auto_cast GetDeviceProcAddr(device, "vkCmdBlitImage") - vtable.CmdBlitImage2 = auto_cast GetDeviceProcAddr(device, "vkCmdBlitImage2") - vtable.CmdBlitImage2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdBlitImage2KHR") - vtable.CmdBuildAccelerationStructureNV = auto_cast GetDeviceProcAddr(device, "vkCmdBuildAccelerationStructureNV") - vtable.CmdBuildAccelerationStructuresIndirectKHR = auto_cast GetDeviceProcAddr(device, "vkCmdBuildAccelerationStructuresIndirectKHR") - vtable.CmdBuildAccelerationStructuresKHR = auto_cast GetDeviceProcAddr(device, "vkCmdBuildAccelerationStructuresKHR") - vtable.CmdClearAttachments = auto_cast GetDeviceProcAddr(device, "vkCmdClearAttachments") - vtable.CmdClearColorImage = auto_cast GetDeviceProcAddr(device, "vkCmdClearColorImage") - vtable.CmdClearDepthStencilImage = auto_cast GetDeviceProcAddr(device, "vkCmdClearDepthStencilImage") - vtable.CmdCopyAccelerationStructureKHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyAccelerationStructureKHR") - vtable.CmdCopyAccelerationStructureNV = auto_cast GetDeviceProcAddr(device, "vkCmdCopyAccelerationStructureNV") - vtable.CmdCopyAccelerationStructureToMemoryKHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyAccelerationStructureToMemoryKHR") - vtable.CmdCopyBuffer = auto_cast GetDeviceProcAddr(device, "vkCmdCopyBuffer") - vtable.CmdCopyBuffer2 = auto_cast GetDeviceProcAddr(device, "vkCmdCopyBuffer2") - vtable.CmdCopyBuffer2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyBuffer2KHR") - vtable.CmdCopyBufferToImage = auto_cast GetDeviceProcAddr(device, "vkCmdCopyBufferToImage") - vtable.CmdCopyBufferToImage2 = auto_cast GetDeviceProcAddr(device, "vkCmdCopyBufferToImage2") - vtable.CmdCopyBufferToImage2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyBufferToImage2KHR") - vtable.CmdCopyImage = auto_cast GetDeviceProcAddr(device, "vkCmdCopyImage") - vtable.CmdCopyImage2 = auto_cast GetDeviceProcAddr(device, "vkCmdCopyImage2") - vtable.CmdCopyImage2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyImage2KHR") - vtable.CmdCopyImageToBuffer = auto_cast GetDeviceProcAddr(device, "vkCmdCopyImageToBuffer") - vtable.CmdCopyImageToBuffer2 = auto_cast GetDeviceProcAddr(device, "vkCmdCopyImageToBuffer2") - vtable.CmdCopyImageToBuffer2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyImageToBuffer2KHR") - vtable.CmdCopyMemoryToAccelerationStructureKHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyMemoryToAccelerationStructureKHR") - vtable.CmdCopyQueryPoolResults = auto_cast GetDeviceProcAddr(device, "vkCmdCopyQueryPoolResults") - vtable.CmdCuLaunchKernelNVX = auto_cast GetDeviceProcAddr(device, "vkCmdCuLaunchKernelNVX") - vtable.CmdDebugMarkerBeginEXT = auto_cast GetDeviceProcAddr(device, "vkCmdDebugMarkerBeginEXT") - vtable.CmdDebugMarkerEndEXT = auto_cast GetDeviceProcAddr(device, "vkCmdDebugMarkerEndEXT") - vtable.CmdDebugMarkerInsertEXT = auto_cast GetDeviceProcAddr(device, "vkCmdDebugMarkerInsertEXT") - vtable.CmdDispatch = auto_cast GetDeviceProcAddr(device, "vkCmdDispatch") - vtable.CmdDispatchBase = auto_cast GetDeviceProcAddr(device, "vkCmdDispatchBase") - vtable.CmdDispatchBaseKHR = auto_cast GetDeviceProcAddr(device, "vkCmdDispatchBaseKHR") - vtable.CmdDispatchIndirect = auto_cast GetDeviceProcAddr(device, "vkCmdDispatchIndirect") - vtable.CmdDraw = auto_cast GetDeviceProcAddr(device, "vkCmdDraw") - vtable.CmdDrawIndexed = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndexed") - vtable.CmdDrawIndexedIndirect = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndexedIndirect") - vtable.CmdDrawIndexedIndirectCount = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndexedIndirectCount") - vtable.CmdDrawIndexedIndirectCountAMD = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndexedIndirectCountAMD") - vtable.CmdDrawIndexedIndirectCountKHR = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndexedIndirectCountKHR") - vtable.CmdDrawIndirect = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndirect") - vtable.CmdDrawIndirectByteCountEXT = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndirectByteCountEXT") - vtable.CmdDrawIndirectCount = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndirectCount") - vtable.CmdDrawIndirectCountAMD = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndirectCountAMD") - vtable.CmdDrawIndirectCountKHR = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndirectCountKHR") - vtable.CmdDrawMeshTasksIndirectCountNV = auto_cast GetDeviceProcAddr(device, "vkCmdDrawMeshTasksIndirectCountNV") - vtable.CmdDrawMeshTasksIndirectNV = auto_cast GetDeviceProcAddr(device, "vkCmdDrawMeshTasksIndirectNV") - vtable.CmdDrawMeshTasksNV = auto_cast GetDeviceProcAddr(device, "vkCmdDrawMeshTasksNV") - vtable.CmdDrawMultiEXT = auto_cast GetDeviceProcAddr(device, "vkCmdDrawMultiEXT") - vtable.CmdDrawMultiIndexedEXT = auto_cast GetDeviceProcAddr(device, "vkCmdDrawMultiIndexedEXT") - vtable.CmdEndConditionalRenderingEXT = auto_cast GetDeviceProcAddr(device, "vkCmdEndConditionalRenderingEXT") - vtable.CmdEndDebugUtilsLabelEXT = auto_cast GetDeviceProcAddr(device, "vkCmdEndDebugUtilsLabelEXT") - vtable.CmdEndQuery = auto_cast GetDeviceProcAddr(device, "vkCmdEndQuery") - vtable.CmdEndQueryIndexedEXT = auto_cast GetDeviceProcAddr(device, "vkCmdEndQueryIndexedEXT") - vtable.CmdEndRenderPass = auto_cast GetDeviceProcAddr(device, "vkCmdEndRenderPass") - vtable.CmdEndRenderPass2 = auto_cast GetDeviceProcAddr(device, "vkCmdEndRenderPass2") - vtable.CmdEndRenderPass2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdEndRenderPass2KHR") - vtable.CmdEndRendering = auto_cast GetDeviceProcAddr(device, "vkCmdEndRendering") - vtable.CmdEndRenderingKHR = auto_cast GetDeviceProcAddr(device, "vkCmdEndRenderingKHR") - vtable.CmdEndTransformFeedbackEXT = auto_cast GetDeviceProcAddr(device, "vkCmdEndTransformFeedbackEXT") - vtable.CmdExecuteCommands = auto_cast GetDeviceProcAddr(device, "vkCmdExecuteCommands") - vtable.CmdExecuteGeneratedCommandsNV = auto_cast GetDeviceProcAddr(device, "vkCmdExecuteGeneratedCommandsNV") - vtable.CmdFillBuffer = auto_cast GetDeviceProcAddr(device, "vkCmdFillBuffer") - vtable.CmdInsertDebugUtilsLabelEXT = auto_cast GetDeviceProcAddr(device, "vkCmdInsertDebugUtilsLabelEXT") - vtable.CmdNextSubpass = auto_cast GetDeviceProcAddr(device, "vkCmdNextSubpass") - vtable.CmdNextSubpass2 = auto_cast GetDeviceProcAddr(device, "vkCmdNextSubpass2") - vtable.CmdNextSubpass2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdNextSubpass2KHR") - vtable.CmdPipelineBarrier = auto_cast GetDeviceProcAddr(device, "vkCmdPipelineBarrier") - vtable.CmdPipelineBarrier2 = auto_cast GetDeviceProcAddr(device, "vkCmdPipelineBarrier2") - vtable.CmdPipelineBarrier2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdPipelineBarrier2KHR") - vtable.CmdPreprocessGeneratedCommandsNV = auto_cast GetDeviceProcAddr(device, "vkCmdPreprocessGeneratedCommandsNV") - vtable.CmdPushConstants = auto_cast GetDeviceProcAddr(device, "vkCmdPushConstants") - vtable.CmdPushDescriptorSetKHR = auto_cast GetDeviceProcAddr(device, "vkCmdPushDescriptorSetKHR") - vtable.CmdPushDescriptorSetWithTemplateKHR = auto_cast GetDeviceProcAddr(device, "vkCmdPushDescriptorSetWithTemplateKHR") - vtable.CmdResetEvent = auto_cast GetDeviceProcAddr(device, "vkCmdResetEvent") - vtable.CmdResetEvent2 = auto_cast GetDeviceProcAddr(device, "vkCmdResetEvent2") - vtable.CmdResetEvent2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdResetEvent2KHR") - vtable.CmdResetQueryPool = auto_cast GetDeviceProcAddr(device, "vkCmdResetQueryPool") - vtable.CmdResolveImage = auto_cast GetDeviceProcAddr(device, "vkCmdResolveImage") - vtable.CmdResolveImage2 = auto_cast GetDeviceProcAddr(device, "vkCmdResolveImage2") - vtable.CmdResolveImage2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdResolveImage2KHR") - vtable.CmdSetBlendConstants = auto_cast GetDeviceProcAddr(device, "vkCmdSetBlendConstants") - vtable.CmdSetCheckpointNV = auto_cast GetDeviceProcAddr(device, "vkCmdSetCheckpointNV") - vtable.CmdSetCoarseSampleOrderNV = auto_cast GetDeviceProcAddr(device, "vkCmdSetCoarseSampleOrderNV") - vtable.CmdSetCullMode = auto_cast GetDeviceProcAddr(device, "vkCmdSetCullMode") - vtable.CmdSetCullModeEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetCullModeEXT") - vtable.CmdSetDepthBias = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthBias") - vtable.CmdSetDepthBiasEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthBiasEnable") - vtable.CmdSetDepthBiasEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthBiasEnableEXT") - vtable.CmdSetDepthBounds = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthBounds") - vtable.CmdSetDepthBoundsTestEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthBoundsTestEnable") - vtable.CmdSetDepthBoundsTestEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthBoundsTestEnableEXT") - vtable.CmdSetDepthCompareOp = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthCompareOp") - vtable.CmdSetDepthCompareOpEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthCompareOpEXT") - vtable.CmdSetDepthTestEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthTestEnable") - vtable.CmdSetDepthTestEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthTestEnableEXT") - vtable.CmdSetDepthWriteEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthWriteEnable") - vtable.CmdSetDepthWriteEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthWriteEnableEXT") - vtable.CmdSetDeviceMask = auto_cast GetDeviceProcAddr(device, "vkCmdSetDeviceMask") - vtable.CmdSetDeviceMaskKHR = auto_cast GetDeviceProcAddr(device, "vkCmdSetDeviceMaskKHR") - vtable.CmdSetDiscardRectangleEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetDiscardRectangleEXT") - vtable.CmdSetEvent = auto_cast GetDeviceProcAddr(device, "vkCmdSetEvent") - vtable.CmdSetEvent2 = auto_cast GetDeviceProcAddr(device, "vkCmdSetEvent2") - vtable.CmdSetEvent2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdSetEvent2KHR") - vtable.CmdSetExclusiveScissorNV = auto_cast GetDeviceProcAddr(device, "vkCmdSetExclusiveScissorNV") - vtable.CmdSetFragmentShadingRateEnumNV = auto_cast GetDeviceProcAddr(device, "vkCmdSetFragmentShadingRateEnumNV") - vtable.CmdSetFragmentShadingRateKHR = auto_cast GetDeviceProcAddr(device, "vkCmdSetFragmentShadingRateKHR") - vtable.CmdSetFrontFace = auto_cast GetDeviceProcAddr(device, "vkCmdSetFrontFace") - vtable.CmdSetFrontFaceEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetFrontFaceEXT") - vtable.CmdSetLineStippleEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetLineStippleEXT") - vtable.CmdSetLineWidth = auto_cast GetDeviceProcAddr(device, "vkCmdSetLineWidth") - vtable.CmdSetLogicOpEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetLogicOpEXT") - vtable.CmdSetPatchControlPointsEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetPatchControlPointsEXT") - vtable.CmdSetPerformanceMarkerINTEL = auto_cast GetDeviceProcAddr(device, "vkCmdSetPerformanceMarkerINTEL") - vtable.CmdSetPerformanceOverrideINTEL = auto_cast GetDeviceProcAddr(device, "vkCmdSetPerformanceOverrideINTEL") - vtable.CmdSetPerformanceStreamMarkerINTEL = auto_cast GetDeviceProcAddr(device, "vkCmdSetPerformanceStreamMarkerINTEL") - vtable.CmdSetPrimitiveRestartEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetPrimitiveRestartEnable") - vtable.CmdSetPrimitiveRestartEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetPrimitiveRestartEnableEXT") - vtable.CmdSetPrimitiveTopology = auto_cast GetDeviceProcAddr(device, "vkCmdSetPrimitiveTopology") - vtable.CmdSetPrimitiveTopologyEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetPrimitiveTopologyEXT") - vtable.CmdSetRasterizerDiscardEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetRasterizerDiscardEnable") - vtable.CmdSetRasterizerDiscardEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetRasterizerDiscardEnableEXT") - vtable.CmdSetRayTracingPipelineStackSizeKHR = auto_cast GetDeviceProcAddr(device, "vkCmdSetRayTracingPipelineStackSizeKHR") - vtable.CmdSetSampleLocationsEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetSampleLocationsEXT") - vtable.CmdSetScissor = auto_cast GetDeviceProcAddr(device, "vkCmdSetScissor") - vtable.CmdSetScissorWithCount = auto_cast GetDeviceProcAddr(device, "vkCmdSetScissorWithCount") - vtable.CmdSetScissorWithCountEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetScissorWithCountEXT") - vtable.CmdSetStencilCompareMask = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilCompareMask") - vtable.CmdSetStencilOp = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilOp") - vtable.CmdSetStencilOpEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilOpEXT") - vtable.CmdSetStencilReference = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilReference") - vtable.CmdSetStencilTestEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilTestEnable") - vtable.CmdSetStencilTestEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilTestEnableEXT") - vtable.CmdSetStencilWriteMask = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilWriteMask") - vtable.CmdSetVertexInputEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetVertexInputEXT") - vtable.CmdSetViewport = auto_cast GetDeviceProcAddr(device, "vkCmdSetViewport") - vtable.CmdSetViewportShadingRatePaletteNV = auto_cast GetDeviceProcAddr(device, "vkCmdSetViewportShadingRatePaletteNV") - vtable.CmdSetViewportWScalingNV = auto_cast GetDeviceProcAddr(device, "vkCmdSetViewportWScalingNV") - vtable.CmdSetViewportWithCount = auto_cast GetDeviceProcAddr(device, "vkCmdSetViewportWithCount") - vtable.CmdSetViewportWithCountEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetViewportWithCountEXT") - vtable.CmdSubpassShadingHUAWEI = auto_cast GetDeviceProcAddr(device, "vkCmdSubpassShadingHUAWEI") - vtable.CmdTraceRaysIndirectKHR = auto_cast GetDeviceProcAddr(device, "vkCmdTraceRaysIndirectKHR") - vtable.CmdTraceRaysKHR = auto_cast GetDeviceProcAddr(device, "vkCmdTraceRaysKHR") - vtable.CmdTraceRaysNV = auto_cast GetDeviceProcAddr(device, "vkCmdTraceRaysNV") - vtable.CmdUpdateBuffer = auto_cast GetDeviceProcAddr(device, "vkCmdUpdateBuffer") - vtable.CmdWaitEvents = auto_cast GetDeviceProcAddr(device, "vkCmdWaitEvents") - vtable.CmdWaitEvents2 = auto_cast GetDeviceProcAddr(device, "vkCmdWaitEvents2") - vtable.CmdWaitEvents2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdWaitEvents2KHR") - vtable.CmdWriteAccelerationStructuresPropertiesKHR = auto_cast GetDeviceProcAddr(device, "vkCmdWriteAccelerationStructuresPropertiesKHR") - vtable.CmdWriteAccelerationStructuresPropertiesNV = auto_cast GetDeviceProcAddr(device, "vkCmdWriteAccelerationStructuresPropertiesNV") - vtable.CmdWriteBufferMarker2AMD = auto_cast GetDeviceProcAddr(device, "vkCmdWriteBufferMarker2AMD") - vtable.CmdWriteBufferMarkerAMD = auto_cast GetDeviceProcAddr(device, "vkCmdWriteBufferMarkerAMD") - vtable.CmdWriteTimestamp = auto_cast GetDeviceProcAddr(device, "vkCmdWriteTimestamp") - vtable.CmdWriteTimestamp2 = auto_cast GetDeviceProcAddr(device, "vkCmdWriteTimestamp2") - vtable.CmdWriteTimestamp2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdWriteTimestamp2KHR") - vtable.CompileDeferredNV = auto_cast GetDeviceProcAddr(device, "vkCompileDeferredNV") - vtable.CopyAccelerationStructureKHR = auto_cast GetDeviceProcAddr(device, "vkCopyAccelerationStructureKHR") - vtable.CopyAccelerationStructureToMemoryKHR = auto_cast GetDeviceProcAddr(device, "vkCopyAccelerationStructureToMemoryKHR") - vtable.CopyMemoryToAccelerationStructureKHR = auto_cast GetDeviceProcAddr(device, "vkCopyMemoryToAccelerationStructureKHR") - vtable.CreateAccelerationStructureKHR = auto_cast GetDeviceProcAddr(device, "vkCreateAccelerationStructureKHR") - vtable.CreateAccelerationStructureNV = auto_cast GetDeviceProcAddr(device, "vkCreateAccelerationStructureNV") - vtable.CreateBuffer = auto_cast GetDeviceProcAddr(device, "vkCreateBuffer") - vtable.CreateBufferView = auto_cast GetDeviceProcAddr(device, "vkCreateBufferView") - vtable.CreateCommandPool = auto_cast GetDeviceProcAddr(device, "vkCreateCommandPool") - vtable.CreateComputePipelines = auto_cast GetDeviceProcAddr(device, "vkCreateComputePipelines") - vtable.CreateCuFunctionNVX = auto_cast GetDeviceProcAddr(device, "vkCreateCuFunctionNVX") - vtable.CreateCuModuleNVX = auto_cast GetDeviceProcAddr(device, "vkCreateCuModuleNVX") - vtable.CreateDeferredOperationKHR = auto_cast GetDeviceProcAddr(device, "vkCreateDeferredOperationKHR") - vtable.CreateDescriptorPool = auto_cast GetDeviceProcAddr(device, "vkCreateDescriptorPool") - vtable.CreateDescriptorSetLayout = auto_cast GetDeviceProcAddr(device, "vkCreateDescriptorSetLayout") - vtable.CreateDescriptorUpdateTemplate = auto_cast GetDeviceProcAddr(device, "vkCreateDescriptorUpdateTemplate") - vtable.CreateDescriptorUpdateTemplateKHR = auto_cast GetDeviceProcAddr(device, "vkCreateDescriptorUpdateTemplateKHR") - vtable.CreateEvent = auto_cast GetDeviceProcAddr(device, "vkCreateEvent") - vtable.CreateFence = auto_cast GetDeviceProcAddr(device, "vkCreateFence") - vtable.CreateFramebuffer = auto_cast GetDeviceProcAddr(device, "vkCreateFramebuffer") - vtable.CreateGraphicsPipelines = auto_cast GetDeviceProcAddr(device, "vkCreateGraphicsPipelines") - vtable.CreateImage = auto_cast GetDeviceProcAddr(device, "vkCreateImage") - vtable.CreateImageView = auto_cast GetDeviceProcAddr(device, "vkCreateImageView") - vtable.CreateIndirectCommandsLayoutNV = auto_cast GetDeviceProcAddr(device, "vkCreateIndirectCommandsLayoutNV") - vtable.CreatePipelineCache = auto_cast GetDeviceProcAddr(device, "vkCreatePipelineCache") - vtable.CreatePipelineLayout = auto_cast GetDeviceProcAddr(device, "vkCreatePipelineLayout") - vtable.CreatePrivateDataSlot = auto_cast GetDeviceProcAddr(device, "vkCreatePrivateDataSlot") - vtable.CreatePrivateDataSlotEXT = auto_cast GetDeviceProcAddr(device, "vkCreatePrivateDataSlotEXT") - vtable.CreateQueryPool = auto_cast GetDeviceProcAddr(device, "vkCreateQueryPool") - vtable.CreateRayTracingPipelinesKHR = auto_cast GetDeviceProcAddr(device, "vkCreateRayTracingPipelinesKHR") - vtable.CreateRayTracingPipelinesNV = auto_cast GetDeviceProcAddr(device, "vkCreateRayTracingPipelinesNV") - vtable.CreateRenderPass = auto_cast GetDeviceProcAddr(device, "vkCreateRenderPass") - vtable.CreateRenderPass2 = auto_cast GetDeviceProcAddr(device, "vkCreateRenderPass2") - vtable.CreateRenderPass2KHR = auto_cast GetDeviceProcAddr(device, "vkCreateRenderPass2KHR") - vtable.CreateSampler = auto_cast GetDeviceProcAddr(device, "vkCreateSampler") - vtable.CreateSamplerYcbcrConversion = auto_cast GetDeviceProcAddr(device, "vkCreateSamplerYcbcrConversion") - vtable.CreateSamplerYcbcrConversionKHR = auto_cast GetDeviceProcAddr(device, "vkCreateSamplerYcbcrConversionKHR") - vtable.CreateSemaphore = auto_cast GetDeviceProcAddr(device, "vkCreateSemaphore") - vtable.CreateShaderModule = auto_cast GetDeviceProcAddr(device, "vkCreateShaderModule") - vtable.CreateSharedSwapchainsKHR = auto_cast GetDeviceProcAddr(device, "vkCreateSharedSwapchainsKHR") - vtable.CreateSwapchainKHR = auto_cast GetDeviceProcAddr(device, "vkCreateSwapchainKHR") - vtable.CreateValidationCacheEXT = auto_cast GetDeviceProcAddr(device, "vkCreateValidationCacheEXT") - vtable.DebugMarkerSetObjectNameEXT = auto_cast GetDeviceProcAddr(device, "vkDebugMarkerSetObjectNameEXT") - vtable.DebugMarkerSetObjectTagEXT = auto_cast GetDeviceProcAddr(device, "vkDebugMarkerSetObjectTagEXT") - vtable.DeferredOperationJoinKHR = auto_cast GetDeviceProcAddr(device, "vkDeferredOperationJoinKHR") - vtable.DestroyAccelerationStructureKHR = auto_cast GetDeviceProcAddr(device, "vkDestroyAccelerationStructureKHR") - vtable.DestroyAccelerationStructureNV = auto_cast GetDeviceProcAddr(device, "vkDestroyAccelerationStructureNV") - vtable.DestroyBuffer = auto_cast GetDeviceProcAddr(device, "vkDestroyBuffer") - vtable.DestroyBufferView = auto_cast GetDeviceProcAddr(device, "vkDestroyBufferView") - vtable.DestroyCommandPool = auto_cast GetDeviceProcAddr(device, "vkDestroyCommandPool") - vtable.DestroyCuFunctionNVX = auto_cast GetDeviceProcAddr(device, "vkDestroyCuFunctionNVX") - vtable.DestroyCuModuleNVX = auto_cast GetDeviceProcAddr(device, "vkDestroyCuModuleNVX") - vtable.DestroyDeferredOperationKHR = auto_cast GetDeviceProcAddr(device, "vkDestroyDeferredOperationKHR") - vtable.DestroyDescriptorPool = auto_cast GetDeviceProcAddr(device, "vkDestroyDescriptorPool") - vtable.DestroyDescriptorSetLayout = auto_cast GetDeviceProcAddr(device, "vkDestroyDescriptorSetLayout") - vtable.DestroyDescriptorUpdateTemplate = auto_cast GetDeviceProcAddr(device, "vkDestroyDescriptorUpdateTemplate") - vtable.DestroyDescriptorUpdateTemplateKHR = auto_cast GetDeviceProcAddr(device, "vkDestroyDescriptorUpdateTemplateKHR") - vtable.DestroyDevice = auto_cast GetDeviceProcAddr(device, "vkDestroyDevice") - vtable.DestroyEvent = auto_cast GetDeviceProcAddr(device, "vkDestroyEvent") - vtable.DestroyFence = auto_cast GetDeviceProcAddr(device, "vkDestroyFence") - vtable.DestroyFramebuffer = auto_cast GetDeviceProcAddr(device, "vkDestroyFramebuffer") - vtable.DestroyImage = auto_cast GetDeviceProcAddr(device, "vkDestroyImage") - vtable.DestroyImageView = auto_cast GetDeviceProcAddr(device, "vkDestroyImageView") - vtable.DestroyIndirectCommandsLayoutNV = auto_cast GetDeviceProcAddr(device, "vkDestroyIndirectCommandsLayoutNV") - vtable.DestroyPipeline = auto_cast GetDeviceProcAddr(device, "vkDestroyPipeline") - vtable.DestroyPipelineCache = auto_cast GetDeviceProcAddr(device, "vkDestroyPipelineCache") - vtable.DestroyPipelineLayout = auto_cast GetDeviceProcAddr(device, "vkDestroyPipelineLayout") - vtable.DestroyPrivateDataSlot = auto_cast GetDeviceProcAddr(device, "vkDestroyPrivateDataSlot") - vtable.DestroyPrivateDataSlotEXT = auto_cast GetDeviceProcAddr(device, "vkDestroyPrivateDataSlotEXT") - vtable.DestroyQueryPool = auto_cast GetDeviceProcAddr(device, "vkDestroyQueryPool") - vtable.DestroyRenderPass = auto_cast GetDeviceProcAddr(device, "vkDestroyRenderPass") - vtable.DestroySampler = auto_cast GetDeviceProcAddr(device, "vkDestroySampler") - vtable.DestroySamplerYcbcrConversion = auto_cast GetDeviceProcAddr(device, "vkDestroySamplerYcbcrConversion") - vtable.DestroySamplerYcbcrConversionKHR = auto_cast GetDeviceProcAddr(device, "vkDestroySamplerYcbcrConversionKHR") - vtable.DestroySemaphore = auto_cast GetDeviceProcAddr(device, "vkDestroySemaphore") - vtable.DestroyShaderModule = auto_cast GetDeviceProcAddr(device, "vkDestroyShaderModule") - vtable.DestroySwapchainKHR = auto_cast GetDeviceProcAddr(device, "vkDestroySwapchainKHR") - vtable.DestroyValidationCacheEXT = auto_cast GetDeviceProcAddr(device, "vkDestroyValidationCacheEXT") - vtable.DeviceWaitIdle = auto_cast GetDeviceProcAddr(device, "vkDeviceWaitIdle") - vtable.DisplayPowerControlEXT = auto_cast GetDeviceProcAddr(device, "vkDisplayPowerControlEXT") - vtable.EndCommandBuffer = auto_cast GetDeviceProcAddr(device, "vkEndCommandBuffer") - vtable.FlushMappedMemoryRanges = auto_cast GetDeviceProcAddr(device, "vkFlushMappedMemoryRanges") - vtable.FreeCommandBuffers = auto_cast GetDeviceProcAddr(device, "vkFreeCommandBuffers") - vtable.FreeDescriptorSets = auto_cast GetDeviceProcAddr(device, "vkFreeDescriptorSets") - vtable.FreeMemory = auto_cast GetDeviceProcAddr(device, "vkFreeMemory") - vtable.GetAccelerationStructureBuildSizesKHR = auto_cast GetDeviceProcAddr(device, "vkGetAccelerationStructureBuildSizesKHR") - vtable.GetAccelerationStructureDeviceAddressKHR = auto_cast GetDeviceProcAddr(device, "vkGetAccelerationStructureDeviceAddressKHR") - vtable.GetAccelerationStructureHandleNV = auto_cast GetDeviceProcAddr(device, "vkGetAccelerationStructureHandleNV") - vtable.GetAccelerationStructureMemoryRequirementsNV = auto_cast GetDeviceProcAddr(device, "vkGetAccelerationStructureMemoryRequirementsNV") - vtable.GetBufferDeviceAddress = auto_cast GetDeviceProcAddr(device, "vkGetBufferDeviceAddress") - vtable.GetBufferDeviceAddressEXT = auto_cast GetDeviceProcAddr(device, "vkGetBufferDeviceAddressEXT") - vtable.GetBufferDeviceAddressKHR = auto_cast GetDeviceProcAddr(device, "vkGetBufferDeviceAddressKHR") - vtable.GetBufferMemoryRequirements = auto_cast GetDeviceProcAddr(device, "vkGetBufferMemoryRequirements") - vtable.GetBufferMemoryRequirements2 = auto_cast GetDeviceProcAddr(device, "vkGetBufferMemoryRequirements2") - vtable.GetBufferMemoryRequirements2KHR = auto_cast GetDeviceProcAddr(device, "vkGetBufferMemoryRequirements2KHR") - vtable.GetBufferOpaqueCaptureAddress = auto_cast GetDeviceProcAddr(device, "vkGetBufferOpaqueCaptureAddress") - vtable.GetBufferOpaqueCaptureAddressKHR = auto_cast GetDeviceProcAddr(device, "vkGetBufferOpaqueCaptureAddressKHR") - vtable.GetCalibratedTimestampsEXT = auto_cast GetDeviceProcAddr(device, "vkGetCalibratedTimestampsEXT") - vtable.GetDeferredOperationMaxConcurrencyKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeferredOperationMaxConcurrencyKHR") - vtable.GetDeferredOperationResultKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeferredOperationResultKHR") - vtable.GetDescriptorSetHostMappingVALVE = auto_cast GetDeviceProcAddr(device, "vkGetDescriptorSetHostMappingVALVE") - vtable.GetDescriptorSetLayoutHostMappingInfoVALVE = auto_cast GetDeviceProcAddr(device, "vkGetDescriptorSetLayoutHostMappingInfoVALVE") - vtable.GetDescriptorSetLayoutSupport = auto_cast GetDeviceProcAddr(device, "vkGetDescriptorSetLayoutSupport") - vtable.GetDescriptorSetLayoutSupportKHR = auto_cast GetDeviceProcAddr(device, "vkGetDescriptorSetLayoutSupportKHR") - vtable.GetDeviceAccelerationStructureCompatibilityKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceAccelerationStructureCompatibilityKHR") - vtable.GetDeviceBufferMemoryRequirements = auto_cast GetDeviceProcAddr(device, "vkGetDeviceBufferMemoryRequirements") - vtable.GetDeviceBufferMemoryRequirementsKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceBufferMemoryRequirementsKHR") - vtable.GetDeviceGroupPeerMemoryFeatures = auto_cast GetDeviceProcAddr(device, "vkGetDeviceGroupPeerMemoryFeatures") - vtable.GetDeviceGroupPeerMemoryFeaturesKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceGroupPeerMemoryFeaturesKHR") - vtable.GetDeviceGroupPresentCapabilitiesKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceGroupPresentCapabilitiesKHR") - vtable.GetDeviceGroupSurfacePresentModes2EXT = auto_cast GetDeviceProcAddr(device, "vkGetDeviceGroupSurfacePresentModes2EXT") - vtable.GetDeviceGroupSurfacePresentModesKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceGroupSurfacePresentModesKHR") - vtable.GetDeviceImageMemoryRequirements = auto_cast GetDeviceProcAddr(device, "vkGetDeviceImageMemoryRequirements") - vtable.GetDeviceImageMemoryRequirementsKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceImageMemoryRequirementsKHR") - vtable.GetDeviceImageSparseMemoryRequirements = auto_cast GetDeviceProcAddr(device, "vkGetDeviceImageSparseMemoryRequirements") - vtable.GetDeviceImageSparseMemoryRequirementsKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceImageSparseMemoryRequirementsKHR") - vtable.GetDeviceMemoryCommitment = auto_cast GetDeviceProcAddr(device, "vkGetDeviceMemoryCommitment") - vtable.GetDeviceMemoryOpaqueCaptureAddress = auto_cast GetDeviceProcAddr(device, "vkGetDeviceMemoryOpaqueCaptureAddress") - vtable.GetDeviceMemoryOpaqueCaptureAddressKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceMemoryOpaqueCaptureAddressKHR") - vtable.GetDeviceProcAddr = auto_cast GetDeviceProcAddr(device, "vkGetDeviceProcAddr") - vtable.GetDeviceQueue = auto_cast GetDeviceProcAddr(device, "vkGetDeviceQueue") - vtable.GetDeviceQueue2 = auto_cast GetDeviceProcAddr(device, "vkGetDeviceQueue2") - vtable.GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = auto_cast GetDeviceProcAddr(device, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI") - vtable.GetEventStatus = auto_cast GetDeviceProcAddr(device, "vkGetEventStatus") - vtable.GetFenceFdKHR = auto_cast GetDeviceProcAddr(device, "vkGetFenceFdKHR") - vtable.GetFenceStatus = auto_cast GetDeviceProcAddr(device, "vkGetFenceStatus") - vtable.GetFenceWin32HandleKHR = auto_cast GetDeviceProcAddr(device, "vkGetFenceWin32HandleKHR") - vtable.GetGeneratedCommandsMemoryRequirementsNV = auto_cast GetDeviceProcAddr(device, "vkGetGeneratedCommandsMemoryRequirementsNV") - vtable.GetImageDrmFormatModifierPropertiesEXT = auto_cast GetDeviceProcAddr(device, "vkGetImageDrmFormatModifierPropertiesEXT") - vtable.GetImageMemoryRequirements = auto_cast GetDeviceProcAddr(device, "vkGetImageMemoryRequirements") - vtable.GetImageMemoryRequirements2 = auto_cast GetDeviceProcAddr(device, "vkGetImageMemoryRequirements2") - vtable.GetImageMemoryRequirements2KHR = auto_cast GetDeviceProcAddr(device, "vkGetImageMemoryRequirements2KHR") - vtable.GetImageSparseMemoryRequirements = auto_cast GetDeviceProcAddr(device, "vkGetImageSparseMemoryRequirements") - vtable.GetImageSparseMemoryRequirements2 = auto_cast GetDeviceProcAddr(device, "vkGetImageSparseMemoryRequirements2") - vtable.GetImageSparseMemoryRequirements2KHR = auto_cast GetDeviceProcAddr(device, "vkGetImageSparseMemoryRequirements2KHR") - vtable.GetImageSubresourceLayout = auto_cast GetDeviceProcAddr(device, "vkGetImageSubresourceLayout") - vtable.GetImageViewAddressNVX = auto_cast GetDeviceProcAddr(device, "vkGetImageViewAddressNVX") - vtable.GetImageViewHandleNVX = auto_cast GetDeviceProcAddr(device, "vkGetImageViewHandleNVX") - vtable.GetMemoryFdKHR = auto_cast GetDeviceProcAddr(device, "vkGetMemoryFdKHR") - vtable.GetMemoryFdPropertiesKHR = auto_cast GetDeviceProcAddr(device, "vkGetMemoryFdPropertiesKHR") - vtable.GetMemoryHostPointerPropertiesEXT = auto_cast GetDeviceProcAddr(device, "vkGetMemoryHostPointerPropertiesEXT") - vtable.GetMemoryRemoteAddressNV = auto_cast GetDeviceProcAddr(device, "vkGetMemoryRemoteAddressNV") - vtable.GetMemoryWin32HandleKHR = auto_cast GetDeviceProcAddr(device, "vkGetMemoryWin32HandleKHR") - vtable.GetMemoryWin32HandleNV = auto_cast GetDeviceProcAddr(device, "vkGetMemoryWin32HandleNV") - vtable.GetMemoryWin32HandlePropertiesKHR = auto_cast GetDeviceProcAddr(device, "vkGetMemoryWin32HandlePropertiesKHR") - vtable.GetPastPresentationTimingGOOGLE = auto_cast GetDeviceProcAddr(device, "vkGetPastPresentationTimingGOOGLE") - vtable.GetPerformanceParameterINTEL = auto_cast GetDeviceProcAddr(device, "vkGetPerformanceParameterINTEL") - vtable.GetPipelineCacheData = auto_cast GetDeviceProcAddr(device, "vkGetPipelineCacheData") - vtable.GetPipelineExecutableInternalRepresentationsKHR = auto_cast GetDeviceProcAddr(device, "vkGetPipelineExecutableInternalRepresentationsKHR") - vtable.GetPipelineExecutablePropertiesKHR = auto_cast GetDeviceProcAddr(device, "vkGetPipelineExecutablePropertiesKHR") - vtable.GetPipelineExecutableStatisticsKHR = auto_cast GetDeviceProcAddr(device, "vkGetPipelineExecutableStatisticsKHR") - vtable.GetPrivateData = auto_cast GetDeviceProcAddr(device, "vkGetPrivateData") - vtable.GetPrivateDataEXT = auto_cast GetDeviceProcAddr(device, "vkGetPrivateDataEXT") - vtable.GetQueryPoolResults = auto_cast GetDeviceProcAddr(device, "vkGetQueryPoolResults") - vtable.GetQueueCheckpointData2NV = auto_cast GetDeviceProcAddr(device, "vkGetQueueCheckpointData2NV") - vtable.GetQueueCheckpointDataNV = auto_cast GetDeviceProcAddr(device, "vkGetQueueCheckpointDataNV") - vtable.GetRayTracingCaptureReplayShaderGroupHandlesKHR = auto_cast GetDeviceProcAddr(device, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR") - vtable.GetRayTracingShaderGroupHandlesKHR = auto_cast GetDeviceProcAddr(device, "vkGetRayTracingShaderGroupHandlesKHR") - vtable.GetRayTracingShaderGroupHandlesNV = auto_cast GetDeviceProcAddr(device, "vkGetRayTracingShaderGroupHandlesNV") - vtable.GetRayTracingShaderGroupStackSizeKHR = auto_cast GetDeviceProcAddr(device, "vkGetRayTracingShaderGroupStackSizeKHR") - vtable.GetRefreshCycleDurationGOOGLE = auto_cast GetDeviceProcAddr(device, "vkGetRefreshCycleDurationGOOGLE") - vtable.GetRenderAreaGranularity = auto_cast GetDeviceProcAddr(device, "vkGetRenderAreaGranularity") - vtable.GetSemaphoreCounterValue = auto_cast GetDeviceProcAddr(device, "vkGetSemaphoreCounterValue") - vtable.GetSemaphoreCounterValueKHR = auto_cast GetDeviceProcAddr(device, "vkGetSemaphoreCounterValueKHR") - vtable.GetSemaphoreFdKHR = auto_cast GetDeviceProcAddr(device, "vkGetSemaphoreFdKHR") - vtable.GetSemaphoreWin32HandleKHR = auto_cast GetDeviceProcAddr(device, "vkGetSemaphoreWin32HandleKHR") - vtable.GetShaderInfoAMD = auto_cast GetDeviceProcAddr(device, "vkGetShaderInfoAMD") - vtable.GetSwapchainCounterEXT = auto_cast GetDeviceProcAddr(device, "vkGetSwapchainCounterEXT") - vtable.GetSwapchainImagesKHR = auto_cast GetDeviceProcAddr(device, "vkGetSwapchainImagesKHR") - vtable.GetSwapchainStatusKHR = auto_cast GetDeviceProcAddr(device, "vkGetSwapchainStatusKHR") - vtable.GetValidationCacheDataEXT = auto_cast GetDeviceProcAddr(device, "vkGetValidationCacheDataEXT") - vtable.ImportFenceFdKHR = auto_cast GetDeviceProcAddr(device, "vkImportFenceFdKHR") - vtable.ImportFenceWin32HandleKHR = auto_cast GetDeviceProcAddr(device, "vkImportFenceWin32HandleKHR") - vtable.ImportSemaphoreFdKHR = auto_cast GetDeviceProcAddr(device, "vkImportSemaphoreFdKHR") - vtable.ImportSemaphoreWin32HandleKHR = auto_cast GetDeviceProcAddr(device, "vkImportSemaphoreWin32HandleKHR") - vtable.InitializePerformanceApiINTEL = auto_cast GetDeviceProcAddr(device, "vkInitializePerformanceApiINTEL") - vtable.InvalidateMappedMemoryRanges = auto_cast GetDeviceProcAddr(device, "vkInvalidateMappedMemoryRanges") - vtable.MapMemory = auto_cast GetDeviceProcAddr(device, "vkMapMemory") - vtable.MergePipelineCaches = auto_cast GetDeviceProcAddr(device, "vkMergePipelineCaches") - vtable.MergeValidationCachesEXT = auto_cast GetDeviceProcAddr(device, "vkMergeValidationCachesEXT") - vtable.QueueBeginDebugUtilsLabelEXT = auto_cast GetDeviceProcAddr(device, "vkQueueBeginDebugUtilsLabelEXT") - vtable.QueueBindSparse = auto_cast GetDeviceProcAddr(device, "vkQueueBindSparse") - vtable.QueueEndDebugUtilsLabelEXT = auto_cast GetDeviceProcAddr(device, "vkQueueEndDebugUtilsLabelEXT") - vtable.QueueInsertDebugUtilsLabelEXT = auto_cast GetDeviceProcAddr(device, "vkQueueInsertDebugUtilsLabelEXT") - vtable.QueuePresentKHR = auto_cast GetDeviceProcAddr(device, "vkQueuePresentKHR") - vtable.QueueSetPerformanceConfigurationINTEL = auto_cast GetDeviceProcAddr(device, "vkQueueSetPerformanceConfigurationINTEL") - vtable.QueueSubmit = auto_cast GetDeviceProcAddr(device, "vkQueueSubmit") - vtable.QueueSubmit2 = auto_cast GetDeviceProcAddr(device, "vkQueueSubmit2") - vtable.QueueSubmit2KHR = auto_cast GetDeviceProcAddr(device, "vkQueueSubmit2KHR") - vtable.QueueWaitIdle = auto_cast GetDeviceProcAddr(device, "vkQueueWaitIdle") - vtable.RegisterDeviceEventEXT = auto_cast GetDeviceProcAddr(device, "vkRegisterDeviceEventEXT") - vtable.RegisterDisplayEventEXT = auto_cast GetDeviceProcAddr(device, "vkRegisterDisplayEventEXT") - vtable.ReleaseFullScreenExclusiveModeEXT = auto_cast GetDeviceProcAddr(device, "vkReleaseFullScreenExclusiveModeEXT") - vtable.ReleasePerformanceConfigurationINTEL = auto_cast GetDeviceProcAddr(device, "vkReleasePerformanceConfigurationINTEL") - vtable.ReleaseProfilingLockKHR = auto_cast GetDeviceProcAddr(device, "vkReleaseProfilingLockKHR") - vtable.ResetCommandBuffer = auto_cast GetDeviceProcAddr(device, "vkResetCommandBuffer") - vtable.ResetCommandPool = auto_cast GetDeviceProcAddr(device, "vkResetCommandPool") - vtable.ResetDescriptorPool = auto_cast GetDeviceProcAddr(device, "vkResetDescriptorPool") - vtable.ResetEvent = auto_cast GetDeviceProcAddr(device, "vkResetEvent") - vtable.ResetFences = auto_cast GetDeviceProcAddr(device, "vkResetFences") - vtable.ResetQueryPool = auto_cast GetDeviceProcAddr(device, "vkResetQueryPool") - vtable.ResetQueryPoolEXT = auto_cast GetDeviceProcAddr(device, "vkResetQueryPoolEXT") - vtable.SetDebugUtilsObjectNameEXT = auto_cast GetDeviceProcAddr(device, "vkSetDebugUtilsObjectNameEXT") - vtable.SetDebugUtilsObjectTagEXT = auto_cast GetDeviceProcAddr(device, "vkSetDebugUtilsObjectTagEXT") - vtable.SetDeviceMemoryPriorityEXT = auto_cast GetDeviceProcAddr(device, "vkSetDeviceMemoryPriorityEXT") - vtable.SetEvent = auto_cast GetDeviceProcAddr(device, "vkSetEvent") - vtable.SetHdrMetadataEXT = auto_cast GetDeviceProcAddr(device, "vkSetHdrMetadataEXT") - vtable.SetLocalDimmingAMD = auto_cast GetDeviceProcAddr(device, "vkSetLocalDimmingAMD") - vtable.SetPrivateData = auto_cast GetDeviceProcAddr(device, "vkSetPrivateData") - vtable.SetPrivateDataEXT = auto_cast GetDeviceProcAddr(device, "vkSetPrivateDataEXT") - vtable.SignalSemaphore = auto_cast GetDeviceProcAddr(device, "vkSignalSemaphore") - vtable.SignalSemaphoreKHR = auto_cast GetDeviceProcAddr(device, "vkSignalSemaphoreKHR") - vtable.TrimCommandPool = auto_cast GetDeviceProcAddr(device, "vkTrimCommandPool") - vtable.TrimCommandPoolKHR = auto_cast GetDeviceProcAddr(device, "vkTrimCommandPoolKHR") - vtable.UninitializePerformanceApiINTEL = auto_cast GetDeviceProcAddr(device, "vkUninitializePerformanceApiINTEL") - vtable.UnmapMemory = auto_cast GetDeviceProcAddr(device, "vkUnmapMemory") - vtable.UpdateDescriptorSetWithTemplate = auto_cast GetDeviceProcAddr(device, "vkUpdateDescriptorSetWithTemplate") - vtable.UpdateDescriptorSetWithTemplateKHR = auto_cast GetDeviceProcAddr(device, "vkUpdateDescriptorSetWithTemplateKHR") - vtable.UpdateDescriptorSets = auto_cast GetDeviceProcAddr(device, "vkUpdateDescriptorSets") - vtable.WaitForFences = auto_cast GetDeviceProcAddr(device, "vkWaitForFences") - vtable.WaitForPresentKHR = auto_cast GetDeviceProcAddr(device, "vkWaitForPresentKHR") - vtable.WaitSemaphores = auto_cast GetDeviceProcAddr(device, "vkWaitSemaphores") - vtable.WaitSemaphoresKHR = auto_cast GetDeviceProcAddr(device, "vkWaitSemaphoresKHR") - vtable.WriteAccelerationStructuresPropertiesKHR = auto_cast GetDeviceProcAddr(device, "vkWriteAccelerationStructuresPropertiesKHR") -} - -load_proc_addresses_device :: proc(device: Device) { - AcquireFullScreenExclusiveModeEXT = auto_cast GetDeviceProcAddr(device, "vkAcquireFullScreenExclusiveModeEXT") - AcquireNextImage2KHR = auto_cast GetDeviceProcAddr(device, "vkAcquireNextImage2KHR") - AcquireNextImageKHR = auto_cast GetDeviceProcAddr(device, "vkAcquireNextImageKHR") - AcquirePerformanceConfigurationINTEL = auto_cast GetDeviceProcAddr(device, "vkAcquirePerformanceConfigurationINTEL") - AcquireProfilingLockKHR = auto_cast GetDeviceProcAddr(device, "vkAcquireProfilingLockKHR") - AllocateCommandBuffers = auto_cast GetDeviceProcAddr(device, "vkAllocateCommandBuffers") - AllocateDescriptorSets = auto_cast GetDeviceProcAddr(device, "vkAllocateDescriptorSets") - AllocateMemory = auto_cast GetDeviceProcAddr(device, "vkAllocateMemory") - BeginCommandBuffer = auto_cast GetDeviceProcAddr(device, "vkBeginCommandBuffer") - BindAccelerationStructureMemoryNV = auto_cast GetDeviceProcAddr(device, "vkBindAccelerationStructureMemoryNV") - BindBufferMemory = auto_cast GetDeviceProcAddr(device, "vkBindBufferMemory") - BindBufferMemory2 = auto_cast GetDeviceProcAddr(device, "vkBindBufferMemory2") - BindBufferMemory2KHR = auto_cast GetDeviceProcAddr(device, "vkBindBufferMemory2KHR") - BindImageMemory = auto_cast GetDeviceProcAddr(device, "vkBindImageMemory") - BindImageMemory2 = auto_cast GetDeviceProcAddr(device, "vkBindImageMemory2") - BindImageMemory2KHR = auto_cast GetDeviceProcAddr(device, "vkBindImageMemory2KHR") - BuildAccelerationStructuresKHR = auto_cast GetDeviceProcAddr(device, "vkBuildAccelerationStructuresKHR") - CmdBeginConditionalRenderingEXT = auto_cast GetDeviceProcAddr(device, "vkCmdBeginConditionalRenderingEXT") - CmdBeginDebugUtilsLabelEXT = auto_cast GetDeviceProcAddr(device, "vkCmdBeginDebugUtilsLabelEXT") - CmdBeginQuery = auto_cast GetDeviceProcAddr(device, "vkCmdBeginQuery") - CmdBeginQueryIndexedEXT = auto_cast GetDeviceProcAddr(device, "vkCmdBeginQueryIndexedEXT") - CmdBeginRenderPass = auto_cast GetDeviceProcAddr(device, "vkCmdBeginRenderPass") - CmdBeginRenderPass2 = auto_cast GetDeviceProcAddr(device, "vkCmdBeginRenderPass2") - CmdBeginRenderPass2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdBeginRenderPass2KHR") - CmdBeginRendering = auto_cast GetDeviceProcAddr(device, "vkCmdBeginRendering") - CmdBeginRenderingKHR = auto_cast GetDeviceProcAddr(device, "vkCmdBeginRenderingKHR") - CmdBeginTransformFeedbackEXT = auto_cast GetDeviceProcAddr(device, "vkCmdBeginTransformFeedbackEXT") - CmdBindDescriptorSets = auto_cast GetDeviceProcAddr(device, "vkCmdBindDescriptorSets") - CmdBindIndexBuffer = auto_cast GetDeviceProcAddr(device, "vkCmdBindIndexBuffer") - CmdBindInvocationMaskHUAWEI = auto_cast GetDeviceProcAddr(device, "vkCmdBindInvocationMaskHUAWEI") - CmdBindPipeline = auto_cast GetDeviceProcAddr(device, "vkCmdBindPipeline") - CmdBindPipelineShaderGroupNV = auto_cast GetDeviceProcAddr(device, "vkCmdBindPipelineShaderGroupNV") - CmdBindShadingRateImageNV = auto_cast GetDeviceProcAddr(device, "vkCmdBindShadingRateImageNV") - CmdBindTransformFeedbackBuffersEXT = auto_cast GetDeviceProcAddr(device, "vkCmdBindTransformFeedbackBuffersEXT") - CmdBindVertexBuffers = auto_cast GetDeviceProcAddr(device, "vkCmdBindVertexBuffers") - CmdBindVertexBuffers2 = auto_cast GetDeviceProcAddr(device, "vkCmdBindVertexBuffers2") - CmdBindVertexBuffers2EXT = auto_cast GetDeviceProcAddr(device, "vkCmdBindVertexBuffers2EXT") - CmdBlitImage = auto_cast GetDeviceProcAddr(device, "vkCmdBlitImage") - CmdBlitImage2 = auto_cast GetDeviceProcAddr(device, "vkCmdBlitImage2") - CmdBlitImage2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdBlitImage2KHR") - CmdBuildAccelerationStructureNV = auto_cast GetDeviceProcAddr(device, "vkCmdBuildAccelerationStructureNV") - CmdBuildAccelerationStructuresIndirectKHR = auto_cast GetDeviceProcAddr(device, "vkCmdBuildAccelerationStructuresIndirectKHR") - CmdBuildAccelerationStructuresKHR = auto_cast GetDeviceProcAddr(device, "vkCmdBuildAccelerationStructuresKHR") - CmdClearAttachments = auto_cast GetDeviceProcAddr(device, "vkCmdClearAttachments") - CmdClearColorImage = auto_cast GetDeviceProcAddr(device, "vkCmdClearColorImage") - CmdClearDepthStencilImage = auto_cast GetDeviceProcAddr(device, "vkCmdClearDepthStencilImage") - CmdCopyAccelerationStructureKHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyAccelerationStructureKHR") - CmdCopyAccelerationStructureNV = auto_cast GetDeviceProcAddr(device, "vkCmdCopyAccelerationStructureNV") - CmdCopyAccelerationStructureToMemoryKHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyAccelerationStructureToMemoryKHR") - CmdCopyBuffer = auto_cast GetDeviceProcAddr(device, "vkCmdCopyBuffer") - CmdCopyBuffer2 = auto_cast GetDeviceProcAddr(device, "vkCmdCopyBuffer2") - CmdCopyBuffer2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyBuffer2KHR") - CmdCopyBufferToImage = auto_cast GetDeviceProcAddr(device, "vkCmdCopyBufferToImage") - CmdCopyBufferToImage2 = auto_cast GetDeviceProcAddr(device, "vkCmdCopyBufferToImage2") - CmdCopyBufferToImage2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyBufferToImage2KHR") - CmdCopyImage = auto_cast GetDeviceProcAddr(device, "vkCmdCopyImage") - CmdCopyImage2 = auto_cast GetDeviceProcAddr(device, "vkCmdCopyImage2") - CmdCopyImage2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyImage2KHR") - CmdCopyImageToBuffer = auto_cast GetDeviceProcAddr(device, "vkCmdCopyImageToBuffer") - CmdCopyImageToBuffer2 = auto_cast GetDeviceProcAddr(device, "vkCmdCopyImageToBuffer2") - CmdCopyImageToBuffer2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyImageToBuffer2KHR") - CmdCopyMemoryToAccelerationStructureKHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyMemoryToAccelerationStructureKHR") - CmdCopyQueryPoolResults = auto_cast GetDeviceProcAddr(device, "vkCmdCopyQueryPoolResults") - CmdCuLaunchKernelNVX = auto_cast GetDeviceProcAddr(device, "vkCmdCuLaunchKernelNVX") - CmdDebugMarkerBeginEXT = auto_cast GetDeviceProcAddr(device, "vkCmdDebugMarkerBeginEXT") - CmdDebugMarkerEndEXT = auto_cast GetDeviceProcAddr(device, "vkCmdDebugMarkerEndEXT") - CmdDebugMarkerInsertEXT = auto_cast GetDeviceProcAddr(device, "vkCmdDebugMarkerInsertEXT") - CmdDispatch = auto_cast GetDeviceProcAddr(device, "vkCmdDispatch") - CmdDispatchBase = auto_cast GetDeviceProcAddr(device, "vkCmdDispatchBase") - CmdDispatchBaseKHR = auto_cast GetDeviceProcAddr(device, "vkCmdDispatchBaseKHR") - CmdDispatchIndirect = auto_cast GetDeviceProcAddr(device, "vkCmdDispatchIndirect") - CmdDraw = auto_cast GetDeviceProcAddr(device, "vkCmdDraw") - CmdDrawIndexed = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndexed") - CmdDrawIndexedIndirect = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndexedIndirect") - CmdDrawIndexedIndirectCount = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndexedIndirectCount") - CmdDrawIndexedIndirectCountAMD = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndexedIndirectCountAMD") - CmdDrawIndexedIndirectCountKHR = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndexedIndirectCountKHR") - CmdDrawIndirect = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndirect") - CmdDrawIndirectByteCountEXT = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndirectByteCountEXT") - CmdDrawIndirectCount = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndirectCount") - CmdDrawIndirectCountAMD = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndirectCountAMD") - CmdDrawIndirectCountKHR = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndirectCountKHR") - CmdDrawMeshTasksIndirectCountNV = auto_cast GetDeviceProcAddr(device, "vkCmdDrawMeshTasksIndirectCountNV") - CmdDrawMeshTasksIndirectNV = auto_cast GetDeviceProcAddr(device, "vkCmdDrawMeshTasksIndirectNV") - CmdDrawMeshTasksNV = auto_cast GetDeviceProcAddr(device, "vkCmdDrawMeshTasksNV") - CmdDrawMultiEXT = auto_cast GetDeviceProcAddr(device, "vkCmdDrawMultiEXT") - CmdDrawMultiIndexedEXT = auto_cast GetDeviceProcAddr(device, "vkCmdDrawMultiIndexedEXT") - CmdEndConditionalRenderingEXT = auto_cast GetDeviceProcAddr(device, "vkCmdEndConditionalRenderingEXT") - CmdEndDebugUtilsLabelEXT = auto_cast GetDeviceProcAddr(device, "vkCmdEndDebugUtilsLabelEXT") - CmdEndQuery = auto_cast GetDeviceProcAddr(device, "vkCmdEndQuery") - CmdEndQueryIndexedEXT = auto_cast GetDeviceProcAddr(device, "vkCmdEndQueryIndexedEXT") - CmdEndRenderPass = auto_cast GetDeviceProcAddr(device, "vkCmdEndRenderPass") - CmdEndRenderPass2 = auto_cast GetDeviceProcAddr(device, "vkCmdEndRenderPass2") - CmdEndRenderPass2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdEndRenderPass2KHR") - CmdEndRendering = auto_cast GetDeviceProcAddr(device, "vkCmdEndRendering") - CmdEndRenderingKHR = auto_cast GetDeviceProcAddr(device, "vkCmdEndRenderingKHR") - CmdEndTransformFeedbackEXT = auto_cast GetDeviceProcAddr(device, "vkCmdEndTransformFeedbackEXT") - CmdExecuteCommands = auto_cast GetDeviceProcAddr(device, "vkCmdExecuteCommands") - CmdExecuteGeneratedCommandsNV = auto_cast GetDeviceProcAddr(device, "vkCmdExecuteGeneratedCommandsNV") - CmdFillBuffer = auto_cast GetDeviceProcAddr(device, "vkCmdFillBuffer") - CmdInsertDebugUtilsLabelEXT = auto_cast GetDeviceProcAddr(device, "vkCmdInsertDebugUtilsLabelEXT") - CmdNextSubpass = auto_cast GetDeviceProcAddr(device, "vkCmdNextSubpass") - CmdNextSubpass2 = auto_cast GetDeviceProcAddr(device, "vkCmdNextSubpass2") - CmdNextSubpass2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdNextSubpass2KHR") - CmdPipelineBarrier = auto_cast GetDeviceProcAddr(device, "vkCmdPipelineBarrier") - CmdPipelineBarrier2 = auto_cast GetDeviceProcAddr(device, "vkCmdPipelineBarrier2") - CmdPipelineBarrier2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdPipelineBarrier2KHR") - CmdPreprocessGeneratedCommandsNV = auto_cast GetDeviceProcAddr(device, "vkCmdPreprocessGeneratedCommandsNV") - CmdPushConstants = auto_cast GetDeviceProcAddr(device, "vkCmdPushConstants") - CmdPushDescriptorSetKHR = auto_cast GetDeviceProcAddr(device, "vkCmdPushDescriptorSetKHR") - CmdPushDescriptorSetWithTemplateKHR = auto_cast GetDeviceProcAddr(device, "vkCmdPushDescriptorSetWithTemplateKHR") - CmdResetEvent = auto_cast GetDeviceProcAddr(device, "vkCmdResetEvent") - CmdResetEvent2 = auto_cast GetDeviceProcAddr(device, "vkCmdResetEvent2") - CmdResetEvent2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdResetEvent2KHR") - CmdResetQueryPool = auto_cast GetDeviceProcAddr(device, "vkCmdResetQueryPool") - CmdResolveImage = auto_cast GetDeviceProcAddr(device, "vkCmdResolveImage") - CmdResolveImage2 = auto_cast GetDeviceProcAddr(device, "vkCmdResolveImage2") - CmdResolveImage2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdResolveImage2KHR") - CmdSetBlendConstants = auto_cast GetDeviceProcAddr(device, "vkCmdSetBlendConstants") - CmdSetCheckpointNV = auto_cast GetDeviceProcAddr(device, "vkCmdSetCheckpointNV") - CmdSetCoarseSampleOrderNV = auto_cast GetDeviceProcAddr(device, "vkCmdSetCoarseSampleOrderNV") - CmdSetCullMode = auto_cast GetDeviceProcAddr(device, "vkCmdSetCullMode") - CmdSetCullModeEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetCullModeEXT") - CmdSetDepthBias = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthBias") - CmdSetDepthBiasEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthBiasEnable") - CmdSetDepthBiasEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthBiasEnableEXT") - CmdSetDepthBounds = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthBounds") - CmdSetDepthBoundsTestEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthBoundsTestEnable") - CmdSetDepthBoundsTestEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthBoundsTestEnableEXT") - CmdSetDepthCompareOp = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthCompareOp") - CmdSetDepthCompareOpEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthCompareOpEXT") - CmdSetDepthTestEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthTestEnable") - CmdSetDepthTestEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthTestEnableEXT") - CmdSetDepthWriteEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthWriteEnable") - CmdSetDepthWriteEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthWriteEnableEXT") - CmdSetDeviceMask = auto_cast GetDeviceProcAddr(device, "vkCmdSetDeviceMask") - CmdSetDeviceMaskKHR = auto_cast GetDeviceProcAddr(device, "vkCmdSetDeviceMaskKHR") - CmdSetDiscardRectangleEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetDiscardRectangleEXT") - CmdSetEvent = auto_cast GetDeviceProcAddr(device, "vkCmdSetEvent") - CmdSetEvent2 = auto_cast GetDeviceProcAddr(device, "vkCmdSetEvent2") - CmdSetEvent2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdSetEvent2KHR") - CmdSetExclusiveScissorNV = auto_cast GetDeviceProcAddr(device, "vkCmdSetExclusiveScissorNV") - CmdSetFragmentShadingRateEnumNV = auto_cast GetDeviceProcAddr(device, "vkCmdSetFragmentShadingRateEnumNV") - CmdSetFragmentShadingRateKHR = auto_cast GetDeviceProcAddr(device, "vkCmdSetFragmentShadingRateKHR") - CmdSetFrontFace = auto_cast GetDeviceProcAddr(device, "vkCmdSetFrontFace") - CmdSetFrontFaceEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetFrontFaceEXT") - CmdSetLineStippleEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetLineStippleEXT") - CmdSetLineWidth = auto_cast GetDeviceProcAddr(device, "vkCmdSetLineWidth") - CmdSetLogicOpEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetLogicOpEXT") - CmdSetPatchControlPointsEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetPatchControlPointsEXT") - CmdSetPerformanceMarkerINTEL = auto_cast GetDeviceProcAddr(device, "vkCmdSetPerformanceMarkerINTEL") - CmdSetPerformanceOverrideINTEL = auto_cast GetDeviceProcAddr(device, "vkCmdSetPerformanceOverrideINTEL") - CmdSetPerformanceStreamMarkerINTEL = auto_cast GetDeviceProcAddr(device, "vkCmdSetPerformanceStreamMarkerINTEL") - CmdSetPrimitiveRestartEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetPrimitiveRestartEnable") - CmdSetPrimitiveRestartEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetPrimitiveRestartEnableEXT") - CmdSetPrimitiveTopology = auto_cast GetDeviceProcAddr(device, "vkCmdSetPrimitiveTopology") - CmdSetPrimitiveTopologyEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetPrimitiveTopologyEXT") - CmdSetRasterizerDiscardEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetRasterizerDiscardEnable") - CmdSetRasterizerDiscardEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetRasterizerDiscardEnableEXT") - CmdSetRayTracingPipelineStackSizeKHR = auto_cast GetDeviceProcAddr(device, "vkCmdSetRayTracingPipelineStackSizeKHR") - CmdSetSampleLocationsEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetSampleLocationsEXT") - CmdSetScissor = auto_cast GetDeviceProcAddr(device, "vkCmdSetScissor") - CmdSetScissorWithCount = auto_cast GetDeviceProcAddr(device, "vkCmdSetScissorWithCount") - CmdSetScissorWithCountEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetScissorWithCountEXT") - CmdSetStencilCompareMask = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilCompareMask") - CmdSetStencilOp = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilOp") - CmdSetStencilOpEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilOpEXT") - CmdSetStencilReference = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilReference") - CmdSetStencilTestEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilTestEnable") - CmdSetStencilTestEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilTestEnableEXT") - CmdSetStencilWriteMask = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilWriteMask") - CmdSetVertexInputEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetVertexInputEXT") - CmdSetViewport = auto_cast GetDeviceProcAddr(device, "vkCmdSetViewport") - CmdSetViewportShadingRatePaletteNV = auto_cast GetDeviceProcAddr(device, "vkCmdSetViewportShadingRatePaletteNV") - CmdSetViewportWScalingNV = auto_cast GetDeviceProcAddr(device, "vkCmdSetViewportWScalingNV") - CmdSetViewportWithCount = auto_cast GetDeviceProcAddr(device, "vkCmdSetViewportWithCount") - CmdSetViewportWithCountEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetViewportWithCountEXT") - CmdSubpassShadingHUAWEI = auto_cast GetDeviceProcAddr(device, "vkCmdSubpassShadingHUAWEI") - CmdTraceRaysIndirectKHR = auto_cast GetDeviceProcAddr(device, "vkCmdTraceRaysIndirectKHR") - CmdTraceRaysKHR = auto_cast GetDeviceProcAddr(device, "vkCmdTraceRaysKHR") - CmdTraceRaysNV = auto_cast GetDeviceProcAddr(device, "vkCmdTraceRaysNV") - CmdUpdateBuffer = auto_cast GetDeviceProcAddr(device, "vkCmdUpdateBuffer") - CmdWaitEvents = auto_cast GetDeviceProcAddr(device, "vkCmdWaitEvents") - CmdWaitEvents2 = auto_cast GetDeviceProcAddr(device, "vkCmdWaitEvents2") - CmdWaitEvents2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdWaitEvents2KHR") - CmdWriteAccelerationStructuresPropertiesKHR = auto_cast GetDeviceProcAddr(device, "vkCmdWriteAccelerationStructuresPropertiesKHR") - CmdWriteAccelerationStructuresPropertiesNV = auto_cast GetDeviceProcAddr(device, "vkCmdWriteAccelerationStructuresPropertiesNV") - CmdWriteBufferMarker2AMD = auto_cast GetDeviceProcAddr(device, "vkCmdWriteBufferMarker2AMD") - CmdWriteBufferMarkerAMD = auto_cast GetDeviceProcAddr(device, "vkCmdWriteBufferMarkerAMD") - CmdWriteTimestamp = auto_cast GetDeviceProcAddr(device, "vkCmdWriteTimestamp") - CmdWriteTimestamp2 = auto_cast GetDeviceProcAddr(device, "vkCmdWriteTimestamp2") - CmdWriteTimestamp2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdWriteTimestamp2KHR") - CompileDeferredNV = auto_cast GetDeviceProcAddr(device, "vkCompileDeferredNV") - CopyAccelerationStructureKHR = auto_cast GetDeviceProcAddr(device, "vkCopyAccelerationStructureKHR") - CopyAccelerationStructureToMemoryKHR = auto_cast GetDeviceProcAddr(device, "vkCopyAccelerationStructureToMemoryKHR") - CopyMemoryToAccelerationStructureKHR = auto_cast GetDeviceProcAddr(device, "vkCopyMemoryToAccelerationStructureKHR") - CreateAccelerationStructureKHR = auto_cast GetDeviceProcAddr(device, "vkCreateAccelerationStructureKHR") - CreateAccelerationStructureNV = auto_cast GetDeviceProcAddr(device, "vkCreateAccelerationStructureNV") - CreateBuffer = auto_cast GetDeviceProcAddr(device, "vkCreateBuffer") - CreateBufferView = auto_cast GetDeviceProcAddr(device, "vkCreateBufferView") - CreateCommandPool = auto_cast GetDeviceProcAddr(device, "vkCreateCommandPool") - CreateComputePipelines = auto_cast GetDeviceProcAddr(device, "vkCreateComputePipelines") - CreateCuFunctionNVX = auto_cast GetDeviceProcAddr(device, "vkCreateCuFunctionNVX") - CreateCuModuleNVX = auto_cast GetDeviceProcAddr(device, "vkCreateCuModuleNVX") - CreateDeferredOperationKHR = auto_cast GetDeviceProcAddr(device, "vkCreateDeferredOperationKHR") - CreateDescriptorPool = auto_cast GetDeviceProcAddr(device, "vkCreateDescriptorPool") - CreateDescriptorSetLayout = auto_cast GetDeviceProcAddr(device, "vkCreateDescriptorSetLayout") - CreateDescriptorUpdateTemplate = auto_cast GetDeviceProcAddr(device, "vkCreateDescriptorUpdateTemplate") - CreateDescriptorUpdateTemplateKHR = auto_cast GetDeviceProcAddr(device, "vkCreateDescriptorUpdateTemplateKHR") - CreateEvent = auto_cast GetDeviceProcAddr(device, "vkCreateEvent") - CreateFence = auto_cast GetDeviceProcAddr(device, "vkCreateFence") - CreateFramebuffer = auto_cast GetDeviceProcAddr(device, "vkCreateFramebuffer") - CreateGraphicsPipelines = auto_cast GetDeviceProcAddr(device, "vkCreateGraphicsPipelines") - CreateImage = auto_cast GetDeviceProcAddr(device, "vkCreateImage") - CreateImageView = auto_cast GetDeviceProcAddr(device, "vkCreateImageView") - CreateIndirectCommandsLayoutNV = auto_cast GetDeviceProcAddr(device, "vkCreateIndirectCommandsLayoutNV") - CreatePipelineCache = auto_cast GetDeviceProcAddr(device, "vkCreatePipelineCache") - CreatePipelineLayout = auto_cast GetDeviceProcAddr(device, "vkCreatePipelineLayout") - CreatePrivateDataSlot = auto_cast GetDeviceProcAddr(device, "vkCreatePrivateDataSlot") - CreatePrivateDataSlotEXT = auto_cast GetDeviceProcAddr(device, "vkCreatePrivateDataSlotEXT") - CreateQueryPool = auto_cast GetDeviceProcAddr(device, "vkCreateQueryPool") - CreateRayTracingPipelinesKHR = auto_cast GetDeviceProcAddr(device, "vkCreateRayTracingPipelinesKHR") - CreateRayTracingPipelinesNV = auto_cast GetDeviceProcAddr(device, "vkCreateRayTracingPipelinesNV") - CreateRenderPass = auto_cast GetDeviceProcAddr(device, "vkCreateRenderPass") - CreateRenderPass2 = auto_cast GetDeviceProcAddr(device, "vkCreateRenderPass2") - CreateRenderPass2KHR = auto_cast GetDeviceProcAddr(device, "vkCreateRenderPass2KHR") - CreateSampler = auto_cast GetDeviceProcAddr(device, "vkCreateSampler") - CreateSamplerYcbcrConversion = auto_cast GetDeviceProcAddr(device, "vkCreateSamplerYcbcrConversion") - CreateSamplerYcbcrConversionKHR = auto_cast GetDeviceProcAddr(device, "vkCreateSamplerYcbcrConversionKHR") - CreateSemaphore = auto_cast GetDeviceProcAddr(device, "vkCreateSemaphore") - CreateShaderModule = auto_cast GetDeviceProcAddr(device, "vkCreateShaderModule") - CreateSharedSwapchainsKHR = auto_cast GetDeviceProcAddr(device, "vkCreateSharedSwapchainsKHR") - CreateSwapchainKHR = auto_cast GetDeviceProcAddr(device, "vkCreateSwapchainKHR") - CreateValidationCacheEXT = auto_cast GetDeviceProcAddr(device, "vkCreateValidationCacheEXT") - DebugMarkerSetObjectNameEXT = auto_cast GetDeviceProcAddr(device, "vkDebugMarkerSetObjectNameEXT") - DebugMarkerSetObjectTagEXT = auto_cast GetDeviceProcAddr(device, "vkDebugMarkerSetObjectTagEXT") - DeferredOperationJoinKHR = auto_cast GetDeviceProcAddr(device, "vkDeferredOperationJoinKHR") - DestroyAccelerationStructureKHR = auto_cast GetDeviceProcAddr(device, "vkDestroyAccelerationStructureKHR") - DestroyAccelerationStructureNV = auto_cast GetDeviceProcAddr(device, "vkDestroyAccelerationStructureNV") - DestroyBuffer = auto_cast GetDeviceProcAddr(device, "vkDestroyBuffer") - DestroyBufferView = auto_cast GetDeviceProcAddr(device, "vkDestroyBufferView") - DestroyCommandPool = auto_cast GetDeviceProcAddr(device, "vkDestroyCommandPool") - DestroyCuFunctionNVX = auto_cast GetDeviceProcAddr(device, "vkDestroyCuFunctionNVX") - DestroyCuModuleNVX = auto_cast GetDeviceProcAddr(device, "vkDestroyCuModuleNVX") - DestroyDeferredOperationKHR = auto_cast GetDeviceProcAddr(device, "vkDestroyDeferredOperationKHR") - DestroyDescriptorPool = auto_cast GetDeviceProcAddr(device, "vkDestroyDescriptorPool") - DestroyDescriptorSetLayout = auto_cast GetDeviceProcAddr(device, "vkDestroyDescriptorSetLayout") - DestroyDescriptorUpdateTemplate = auto_cast GetDeviceProcAddr(device, "vkDestroyDescriptorUpdateTemplate") - DestroyDescriptorUpdateTemplateKHR = auto_cast GetDeviceProcAddr(device, "vkDestroyDescriptorUpdateTemplateKHR") - DestroyDevice = auto_cast GetDeviceProcAddr(device, "vkDestroyDevice") - DestroyEvent = auto_cast GetDeviceProcAddr(device, "vkDestroyEvent") - DestroyFence = auto_cast GetDeviceProcAddr(device, "vkDestroyFence") - DestroyFramebuffer = auto_cast GetDeviceProcAddr(device, "vkDestroyFramebuffer") - DestroyImage = auto_cast GetDeviceProcAddr(device, "vkDestroyImage") - DestroyImageView = auto_cast GetDeviceProcAddr(device, "vkDestroyImageView") - DestroyIndirectCommandsLayoutNV = auto_cast GetDeviceProcAddr(device, "vkDestroyIndirectCommandsLayoutNV") - DestroyPipeline = auto_cast GetDeviceProcAddr(device, "vkDestroyPipeline") - DestroyPipelineCache = auto_cast GetDeviceProcAddr(device, "vkDestroyPipelineCache") - DestroyPipelineLayout = auto_cast GetDeviceProcAddr(device, "vkDestroyPipelineLayout") - DestroyPrivateDataSlot = auto_cast GetDeviceProcAddr(device, "vkDestroyPrivateDataSlot") - DestroyPrivateDataSlotEXT = auto_cast GetDeviceProcAddr(device, "vkDestroyPrivateDataSlotEXT") - DestroyQueryPool = auto_cast GetDeviceProcAddr(device, "vkDestroyQueryPool") - DestroyRenderPass = auto_cast GetDeviceProcAddr(device, "vkDestroyRenderPass") - DestroySampler = auto_cast GetDeviceProcAddr(device, "vkDestroySampler") - DestroySamplerYcbcrConversion = auto_cast GetDeviceProcAddr(device, "vkDestroySamplerYcbcrConversion") - DestroySamplerYcbcrConversionKHR = auto_cast GetDeviceProcAddr(device, "vkDestroySamplerYcbcrConversionKHR") - DestroySemaphore = auto_cast GetDeviceProcAddr(device, "vkDestroySemaphore") - DestroyShaderModule = auto_cast GetDeviceProcAddr(device, "vkDestroyShaderModule") - DestroySwapchainKHR = auto_cast GetDeviceProcAddr(device, "vkDestroySwapchainKHR") - DestroyValidationCacheEXT = auto_cast GetDeviceProcAddr(device, "vkDestroyValidationCacheEXT") - DeviceWaitIdle = auto_cast GetDeviceProcAddr(device, "vkDeviceWaitIdle") - DisplayPowerControlEXT = auto_cast GetDeviceProcAddr(device, "vkDisplayPowerControlEXT") - EndCommandBuffer = auto_cast GetDeviceProcAddr(device, "vkEndCommandBuffer") - FlushMappedMemoryRanges = auto_cast GetDeviceProcAddr(device, "vkFlushMappedMemoryRanges") - FreeCommandBuffers = auto_cast GetDeviceProcAddr(device, "vkFreeCommandBuffers") - FreeDescriptorSets = auto_cast GetDeviceProcAddr(device, "vkFreeDescriptorSets") - FreeMemory = auto_cast GetDeviceProcAddr(device, "vkFreeMemory") - GetAccelerationStructureBuildSizesKHR = auto_cast GetDeviceProcAddr(device, "vkGetAccelerationStructureBuildSizesKHR") - GetAccelerationStructureDeviceAddressKHR = auto_cast GetDeviceProcAddr(device, "vkGetAccelerationStructureDeviceAddressKHR") - GetAccelerationStructureHandleNV = auto_cast GetDeviceProcAddr(device, "vkGetAccelerationStructureHandleNV") - GetAccelerationStructureMemoryRequirementsNV = auto_cast GetDeviceProcAddr(device, "vkGetAccelerationStructureMemoryRequirementsNV") - GetBufferDeviceAddress = auto_cast GetDeviceProcAddr(device, "vkGetBufferDeviceAddress") - GetBufferDeviceAddressEXT = auto_cast GetDeviceProcAddr(device, "vkGetBufferDeviceAddressEXT") - GetBufferDeviceAddressKHR = auto_cast GetDeviceProcAddr(device, "vkGetBufferDeviceAddressKHR") - GetBufferMemoryRequirements = auto_cast GetDeviceProcAddr(device, "vkGetBufferMemoryRequirements") - GetBufferMemoryRequirements2 = auto_cast GetDeviceProcAddr(device, "vkGetBufferMemoryRequirements2") - GetBufferMemoryRequirements2KHR = auto_cast GetDeviceProcAddr(device, "vkGetBufferMemoryRequirements2KHR") - GetBufferOpaqueCaptureAddress = auto_cast GetDeviceProcAddr(device, "vkGetBufferOpaqueCaptureAddress") - GetBufferOpaqueCaptureAddressKHR = auto_cast GetDeviceProcAddr(device, "vkGetBufferOpaqueCaptureAddressKHR") - GetCalibratedTimestampsEXT = auto_cast GetDeviceProcAddr(device, "vkGetCalibratedTimestampsEXT") - GetDeferredOperationMaxConcurrencyKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeferredOperationMaxConcurrencyKHR") - GetDeferredOperationResultKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeferredOperationResultKHR") - GetDescriptorSetHostMappingVALVE = auto_cast GetDeviceProcAddr(device, "vkGetDescriptorSetHostMappingVALVE") - GetDescriptorSetLayoutHostMappingInfoVALVE = auto_cast GetDeviceProcAddr(device, "vkGetDescriptorSetLayoutHostMappingInfoVALVE") - GetDescriptorSetLayoutSupport = auto_cast GetDeviceProcAddr(device, "vkGetDescriptorSetLayoutSupport") - GetDescriptorSetLayoutSupportKHR = auto_cast GetDeviceProcAddr(device, "vkGetDescriptorSetLayoutSupportKHR") - GetDeviceAccelerationStructureCompatibilityKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceAccelerationStructureCompatibilityKHR") - GetDeviceBufferMemoryRequirements = auto_cast GetDeviceProcAddr(device, "vkGetDeviceBufferMemoryRequirements") - GetDeviceBufferMemoryRequirementsKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceBufferMemoryRequirementsKHR") - GetDeviceGroupPeerMemoryFeatures = auto_cast GetDeviceProcAddr(device, "vkGetDeviceGroupPeerMemoryFeatures") - GetDeviceGroupPeerMemoryFeaturesKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceGroupPeerMemoryFeaturesKHR") - GetDeviceGroupPresentCapabilitiesKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceGroupPresentCapabilitiesKHR") - GetDeviceGroupSurfacePresentModes2EXT = auto_cast GetDeviceProcAddr(device, "vkGetDeviceGroupSurfacePresentModes2EXT") - GetDeviceGroupSurfacePresentModesKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceGroupSurfacePresentModesKHR") - GetDeviceImageMemoryRequirements = auto_cast GetDeviceProcAddr(device, "vkGetDeviceImageMemoryRequirements") - GetDeviceImageMemoryRequirementsKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceImageMemoryRequirementsKHR") - GetDeviceImageSparseMemoryRequirements = auto_cast GetDeviceProcAddr(device, "vkGetDeviceImageSparseMemoryRequirements") - GetDeviceImageSparseMemoryRequirementsKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceImageSparseMemoryRequirementsKHR") - GetDeviceMemoryCommitment = auto_cast GetDeviceProcAddr(device, "vkGetDeviceMemoryCommitment") - GetDeviceMemoryOpaqueCaptureAddress = auto_cast GetDeviceProcAddr(device, "vkGetDeviceMemoryOpaqueCaptureAddress") - GetDeviceMemoryOpaqueCaptureAddressKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceMemoryOpaqueCaptureAddressKHR") - GetDeviceProcAddr = auto_cast GetDeviceProcAddr(device, "vkGetDeviceProcAddr") - GetDeviceQueue = auto_cast GetDeviceProcAddr(device, "vkGetDeviceQueue") - GetDeviceQueue2 = auto_cast GetDeviceProcAddr(device, "vkGetDeviceQueue2") - GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = auto_cast GetDeviceProcAddr(device, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI") - GetEventStatus = auto_cast GetDeviceProcAddr(device, "vkGetEventStatus") - GetFenceFdKHR = auto_cast GetDeviceProcAddr(device, "vkGetFenceFdKHR") - GetFenceStatus = auto_cast GetDeviceProcAddr(device, "vkGetFenceStatus") - GetFenceWin32HandleKHR = auto_cast GetDeviceProcAddr(device, "vkGetFenceWin32HandleKHR") - GetGeneratedCommandsMemoryRequirementsNV = auto_cast GetDeviceProcAddr(device, "vkGetGeneratedCommandsMemoryRequirementsNV") - GetImageDrmFormatModifierPropertiesEXT = auto_cast GetDeviceProcAddr(device, "vkGetImageDrmFormatModifierPropertiesEXT") - GetImageMemoryRequirements = auto_cast GetDeviceProcAddr(device, "vkGetImageMemoryRequirements") - GetImageMemoryRequirements2 = auto_cast GetDeviceProcAddr(device, "vkGetImageMemoryRequirements2") - GetImageMemoryRequirements2KHR = auto_cast GetDeviceProcAddr(device, "vkGetImageMemoryRequirements2KHR") - GetImageSparseMemoryRequirements = auto_cast GetDeviceProcAddr(device, "vkGetImageSparseMemoryRequirements") - GetImageSparseMemoryRequirements2 = auto_cast GetDeviceProcAddr(device, "vkGetImageSparseMemoryRequirements2") - GetImageSparseMemoryRequirements2KHR = auto_cast GetDeviceProcAddr(device, "vkGetImageSparseMemoryRequirements2KHR") - GetImageSubresourceLayout = auto_cast GetDeviceProcAddr(device, "vkGetImageSubresourceLayout") - GetImageViewAddressNVX = auto_cast GetDeviceProcAddr(device, "vkGetImageViewAddressNVX") - GetImageViewHandleNVX = auto_cast GetDeviceProcAddr(device, "vkGetImageViewHandleNVX") - GetMemoryFdKHR = auto_cast GetDeviceProcAddr(device, "vkGetMemoryFdKHR") - GetMemoryFdPropertiesKHR = auto_cast GetDeviceProcAddr(device, "vkGetMemoryFdPropertiesKHR") - GetMemoryHostPointerPropertiesEXT = auto_cast GetDeviceProcAddr(device, "vkGetMemoryHostPointerPropertiesEXT") - GetMemoryRemoteAddressNV = auto_cast GetDeviceProcAddr(device, "vkGetMemoryRemoteAddressNV") - GetMemoryWin32HandleKHR = auto_cast GetDeviceProcAddr(device, "vkGetMemoryWin32HandleKHR") - GetMemoryWin32HandleNV = auto_cast GetDeviceProcAddr(device, "vkGetMemoryWin32HandleNV") - GetMemoryWin32HandlePropertiesKHR = auto_cast GetDeviceProcAddr(device, "vkGetMemoryWin32HandlePropertiesKHR") - GetPastPresentationTimingGOOGLE = auto_cast GetDeviceProcAddr(device, "vkGetPastPresentationTimingGOOGLE") - GetPerformanceParameterINTEL = auto_cast GetDeviceProcAddr(device, "vkGetPerformanceParameterINTEL") - GetPipelineCacheData = auto_cast GetDeviceProcAddr(device, "vkGetPipelineCacheData") - GetPipelineExecutableInternalRepresentationsKHR = auto_cast GetDeviceProcAddr(device, "vkGetPipelineExecutableInternalRepresentationsKHR") - GetPipelineExecutablePropertiesKHR = auto_cast GetDeviceProcAddr(device, "vkGetPipelineExecutablePropertiesKHR") - GetPipelineExecutableStatisticsKHR = auto_cast GetDeviceProcAddr(device, "vkGetPipelineExecutableStatisticsKHR") - GetPrivateData = auto_cast GetDeviceProcAddr(device, "vkGetPrivateData") - GetPrivateDataEXT = auto_cast GetDeviceProcAddr(device, "vkGetPrivateDataEXT") - GetQueryPoolResults = auto_cast GetDeviceProcAddr(device, "vkGetQueryPoolResults") - GetQueueCheckpointData2NV = auto_cast GetDeviceProcAddr(device, "vkGetQueueCheckpointData2NV") - GetQueueCheckpointDataNV = auto_cast GetDeviceProcAddr(device, "vkGetQueueCheckpointDataNV") - GetRayTracingCaptureReplayShaderGroupHandlesKHR = auto_cast GetDeviceProcAddr(device, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR") - GetRayTracingShaderGroupHandlesKHR = auto_cast GetDeviceProcAddr(device, "vkGetRayTracingShaderGroupHandlesKHR") - GetRayTracingShaderGroupHandlesNV = auto_cast GetDeviceProcAddr(device, "vkGetRayTracingShaderGroupHandlesNV") - GetRayTracingShaderGroupStackSizeKHR = auto_cast GetDeviceProcAddr(device, "vkGetRayTracingShaderGroupStackSizeKHR") - GetRefreshCycleDurationGOOGLE = auto_cast GetDeviceProcAddr(device, "vkGetRefreshCycleDurationGOOGLE") - GetRenderAreaGranularity = auto_cast GetDeviceProcAddr(device, "vkGetRenderAreaGranularity") - GetSemaphoreCounterValue = auto_cast GetDeviceProcAddr(device, "vkGetSemaphoreCounterValue") - GetSemaphoreCounterValueKHR = auto_cast GetDeviceProcAddr(device, "vkGetSemaphoreCounterValueKHR") - GetSemaphoreFdKHR = auto_cast GetDeviceProcAddr(device, "vkGetSemaphoreFdKHR") - GetSemaphoreWin32HandleKHR = auto_cast GetDeviceProcAddr(device, "vkGetSemaphoreWin32HandleKHR") - GetShaderInfoAMD = auto_cast GetDeviceProcAddr(device, "vkGetShaderInfoAMD") - GetSwapchainCounterEXT = auto_cast GetDeviceProcAddr(device, "vkGetSwapchainCounterEXT") - GetSwapchainImagesKHR = auto_cast GetDeviceProcAddr(device, "vkGetSwapchainImagesKHR") - GetSwapchainStatusKHR = auto_cast GetDeviceProcAddr(device, "vkGetSwapchainStatusKHR") - GetValidationCacheDataEXT = auto_cast GetDeviceProcAddr(device, "vkGetValidationCacheDataEXT") - ImportFenceFdKHR = auto_cast GetDeviceProcAddr(device, "vkImportFenceFdKHR") - ImportFenceWin32HandleKHR = auto_cast GetDeviceProcAddr(device, "vkImportFenceWin32HandleKHR") - ImportSemaphoreFdKHR = auto_cast GetDeviceProcAddr(device, "vkImportSemaphoreFdKHR") - ImportSemaphoreWin32HandleKHR = auto_cast GetDeviceProcAddr(device, "vkImportSemaphoreWin32HandleKHR") - InitializePerformanceApiINTEL = auto_cast GetDeviceProcAddr(device, "vkInitializePerformanceApiINTEL") - InvalidateMappedMemoryRanges = auto_cast GetDeviceProcAddr(device, "vkInvalidateMappedMemoryRanges") - MapMemory = auto_cast GetDeviceProcAddr(device, "vkMapMemory") - MergePipelineCaches = auto_cast GetDeviceProcAddr(device, "vkMergePipelineCaches") - MergeValidationCachesEXT = auto_cast GetDeviceProcAddr(device, "vkMergeValidationCachesEXT") - QueueBeginDebugUtilsLabelEXT = auto_cast GetDeviceProcAddr(device, "vkQueueBeginDebugUtilsLabelEXT") - QueueBindSparse = auto_cast GetDeviceProcAddr(device, "vkQueueBindSparse") - QueueEndDebugUtilsLabelEXT = auto_cast GetDeviceProcAddr(device, "vkQueueEndDebugUtilsLabelEXT") - QueueInsertDebugUtilsLabelEXT = auto_cast GetDeviceProcAddr(device, "vkQueueInsertDebugUtilsLabelEXT") - QueuePresentKHR = auto_cast GetDeviceProcAddr(device, "vkQueuePresentKHR") - QueueSetPerformanceConfigurationINTEL = auto_cast GetDeviceProcAddr(device, "vkQueueSetPerformanceConfigurationINTEL") - QueueSubmit = auto_cast GetDeviceProcAddr(device, "vkQueueSubmit") - QueueSubmit2 = auto_cast GetDeviceProcAddr(device, "vkQueueSubmit2") - QueueSubmit2KHR = auto_cast GetDeviceProcAddr(device, "vkQueueSubmit2KHR") - QueueWaitIdle = auto_cast GetDeviceProcAddr(device, "vkQueueWaitIdle") - RegisterDeviceEventEXT = auto_cast GetDeviceProcAddr(device, "vkRegisterDeviceEventEXT") - RegisterDisplayEventEXT = auto_cast GetDeviceProcAddr(device, "vkRegisterDisplayEventEXT") - ReleaseFullScreenExclusiveModeEXT = auto_cast GetDeviceProcAddr(device, "vkReleaseFullScreenExclusiveModeEXT") - ReleasePerformanceConfigurationINTEL = auto_cast GetDeviceProcAddr(device, "vkReleasePerformanceConfigurationINTEL") - ReleaseProfilingLockKHR = auto_cast GetDeviceProcAddr(device, "vkReleaseProfilingLockKHR") - ResetCommandBuffer = auto_cast GetDeviceProcAddr(device, "vkResetCommandBuffer") - ResetCommandPool = auto_cast GetDeviceProcAddr(device, "vkResetCommandPool") - ResetDescriptorPool = auto_cast GetDeviceProcAddr(device, "vkResetDescriptorPool") - ResetEvent = auto_cast GetDeviceProcAddr(device, "vkResetEvent") - ResetFences = auto_cast GetDeviceProcAddr(device, "vkResetFences") - ResetQueryPool = auto_cast GetDeviceProcAddr(device, "vkResetQueryPool") - ResetQueryPoolEXT = auto_cast GetDeviceProcAddr(device, "vkResetQueryPoolEXT") - SetDebugUtilsObjectNameEXT = auto_cast GetDeviceProcAddr(device, "vkSetDebugUtilsObjectNameEXT") - SetDebugUtilsObjectTagEXT = auto_cast GetDeviceProcAddr(device, "vkSetDebugUtilsObjectTagEXT") - SetDeviceMemoryPriorityEXT = auto_cast GetDeviceProcAddr(device, "vkSetDeviceMemoryPriorityEXT") - SetEvent = auto_cast GetDeviceProcAddr(device, "vkSetEvent") - SetHdrMetadataEXT = auto_cast GetDeviceProcAddr(device, "vkSetHdrMetadataEXT") - SetLocalDimmingAMD = auto_cast GetDeviceProcAddr(device, "vkSetLocalDimmingAMD") - SetPrivateData = auto_cast GetDeviceProcAddr(device, "vkSetPrivateData") - SetPrivateDataEXT = auto_cast GetDeviceProcAddr(device, "vkSetPrivateDataEXT") - SignalSemaphore = auto_cast GetDeviceProcAddr(device, "vkSignalSemaphore") - SignalSemaphoreKHR = auto_cast GetDeviceProcAddr(device, "vkSignalSemaphoreKHR") - TrimCommandPool = auto_cast GetDeviceProcAddr(device, "vkTrimCommandPool") - TrimCommandPoolKHR = auto_cast GetDeviceProcAddr(device, "vkTrimCommandPoolKHR") - UninitializePerformanceApiINTEL = auto_cast GetDeviceProcAddr(device, "vkUninitializePerformanceApiINTEL") - UnmapMemory = auto_cast GetDeviceProcAddr(device, "vkUnmapMemory") - UpdateDescriptorSetWithTemplate = auto_cast GetDeviceProcAddr(device, "vkUpdateDescriptorSetWithTemplate") - UpdateDescriptorSetWithTemplateKHR = auto_cast GetDeviceProcAddr(device, "vkUpdateDescriptorSetWithTemplateKHR") - UpdateDescriptorSets = auto_cast GetDeviceProcAddr(device, "vkUpdateDescriptorSets") - WaitForFences = auto_cast GetDeviceProcAddr(device, "vkWaitForFences") - WaitForPresentKHR = auto_cast GetDeviceProcAddr(device, "vkWaitForPresentKHR") - WaitSemaphores = auto_cast GetDeviceProcAddr(device, "vkWaitSemaphores") - WaitSemaphoresKHR = auto_cast GetDeviceProcAddr(device, "vkWaitSemaphoresKHR") - WriteAccelerationStructuresPropertiesKHR = auto_cast GetDeviceProcAddr(device, "vkWriteAccelerationStructuresPropertiesKHR") -} - -load_proc_addresses_instance :: proc(instance: Instance) { - AcquireDrmDisplayEXT = auto_cast GetInstanceProcAddr(instance, "vkAcquireDrmDisplayEXT") - AcquireWinrtDisplayNV = auto_cast GetInstanceProcAddr(instance, "vkAcquireWinrtDisplayNV") - CreateDebugReportCallbackEXT = auto_cast GetInstanceProcAddr(instance, "vkCreateDebugReportCallbackEXT") - CreateDebugUtilsMessengerEXT = auto_cast GetInstanceProcAddr(instance, "vkCreateDebugUtilsMessengerEXT") - CreateDevice = auto_cast GetInstanceProcAddr(instance, "vkCreateDevice") - CreateDisplayModeKHR = auto_cast GetInstanceProcAddr(instance, "vkCreateDisplayModeKHR") - CreateDisplayPlaneSurfaceKHR = auto_cast GetInstanceProcAddr(instance, "vkCreateDisplayPlaneSurfaceKHR") - CreateHeadlessSurfaceEXT = auto_cast GetInstanceProcAddr(instance, "vkCreateHeadlessSurfaceEXT") - CreateIOSSurfaceMVK = auto_cast GetInstanceProcAddr(instance, "vkCreateIOSSurfaceMVK") - CreateMacOSSurfaceMVK = auto_cast GetInstanceProcAddr(instance, "vkCreateMacOSSurfaceMVK") - CreateMetalSurfaceEXT = auto_cast GetInstanceProcAddr(instance, "vkCreateMetalSurfaceEXT") - CreateWin32SurfaceKHR = auto_cast GetInstanceProcAddr(instance, "vkCreateWin32SurfaceKHR") - DebugReportMessageEXT = auto_cast GetInstanceProcAddr(instance, "vkDebugReportMessageEXT") - DestroyDebugReportCallbackEXT = auto_cast GetInstanceProcAddr(instance, "vkDestroyDebugReportCallbackEXT") - DestroyDebugUtilsMessengerEXT = auto_cast GetInstanceProcAddr(instance, "vkDestroyDebugUtilsMessengerEXT") - DestroyInstance = auto_cast GetInstanceProcAddr(instance, "vkDestroyInstance") - DestroySurfaceKHR = auto_cast GetInstanceProcAddr(instance, "vkDestroySurfaceKHR") - EnumerateDeviceExtensionProperties = auto_cast GetInstanceProcAddr(instance, "vkEnumerateDeviceExtensionProperties") - EnumerateDeviceLayerProperties = auto_cast GetInstanceProcAddr(instance, "vkEnumerateDeviceLayerProperties") - EnumeratePhysicalDeviceGroups = auto_cast GetInstanceProcAddr(instance, "vkEnumeratePhysicalDeviceGroups") - EnumeratePhysicalDeviceGroupsKHR = auto_cast GetInstanceProcAddr(instance, "vkEnumeratePhysicalDeviceGroupsKHR") - EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = auto_cast GetInstanceProcAddr(instance, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR") - EnumeratePhysicalDevices = auto_cast GetInstanceProcAddr(instance, "vkEnumeratePhysicalDevices") - GetDisplayModeProperties2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetDisplayModeProperties2KHR") - GetDisplayModePropertiesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDisplayModePropertiesKHR") - GetDisplayPlaneCapabilities2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetDisplayPlaneCapabilities2KHR") - GetDisplayPlaneCapabilitiesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDisplayPlaneCapabilitiesKHR") - GetDisplayPlaneSupportedDisplaysKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDisplayPlaneSupportedDisplaysKHR") - GetDrmDisplayEXT = auto_cast GetInstanceProcAddr(instance, "vkGetDrmDisplayEXT") - GetPhysicalDeviceCalibrateableTimeDomainsEXT = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT") - GetPhysicalDeviceCooperativeMatrixPropertiesNV = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV") - GetPhysicalDeviceDisplayPlaneProperties2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR") - GetPhysicalDeviceDisplayPlanePropertiesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR") - GetPhysicalDeviceDisplayProperties2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceDisplayProperties2KHR") - GetPhysicalDeviceDisplayPropertiesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceDisplayPropertiesKHR") - GetPhysicalDeviceExternalBufferProperties = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalBufferProperties") - GetPhysicalDeviceExternalBufferPropertiesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalBufferPropertiesKHR") - GetPhysicalDeviceExternalFenceProperties = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalFenceProperties") - GetPhysicalDeviceExternalFencePropertiesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalFencePropertiesKHR") - GetPhysicalDeviceExternalImageFormatPropertiesNV = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV") - GetPhysicalDeviceExternalSemaphoreProperties = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalSemaphoreProperties") - GetPhysicalDeviceExternalSemaphorePropertiesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR") - GetPhysicalDeviceFeatures = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceFeatures") - GetPhysicalDeviceFeatures2 = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceFeatures2") - GetPhysicalDeviceFeatures2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceFeatures2KHR") - GetPhysicalDeviceFormatProperties = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceFormatProperties") - GetPhysicalDeviceFormatProperties2 = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceFormatProperties2") - GetPhysicalDeviceFormatProperties2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceFormatProperties2KHR") - GetPhysicalDeviceFragmentShadingRatesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceFragmentShadingRatesKHR") - GetPhysicalDeviceImageFormatProperties = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceImageFormatProperties") - GetPhysicalDeviceImageFormatProperties2 = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceImageFormatProperties2") - GetPhysicalDeviceImageFormatProperties2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceImageFormatProperties2KHR") - GetPhysicalDeviceMemoryProperties = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceMemoryProperties") - GetPhysicalDeviceMemoryProperties2 = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceMemoryProperties2") - GetPhysicalDeviceMemoryProperties2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceMemoryProperties2KHR") - GetPhysicalDeviceMultisamplePropertiesEXT = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceMultisamplePropertiesEXT") - GetPhysicalDevicePresentRectanglesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDevicePresentRectanglesKHR") - GetPhysicalDeviceProperties = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceProperties") - GetPhysicalDeviceProperties2 = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceProperties2") - GetPhysicalDeviceProperties2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceProperties2KHR") - GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR") - GetPhysicalDeviceQueueFamilyProperties = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceQueueFamilyProperties") - GetPhysicalDeviceQueueFamilyProperties2 = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceQueueFamilyProperties2") - GetPhysicalDeviceQueueFamilyProperties2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceQueueFamilyProperties2KHR") - GetPhysicalDeviceSparseImageFormatProperties = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSparseImageFormatProperties") - GetPhysicalDeviceSparseImageFormatProperties2 = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSparseImageFormatProperties2") - GetPhysicalDeviceSparseImageFormatProperties2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR") - GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV") - GetPhysicalDeviceSurfaceCapabilities2EXT = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceCapabilities2EXT") - GetPhysicalDeviceSurfaceCapabilities2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR") - GetPhysicalDeviceSurfaceCapabilitiesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR") - GetPhysicalDeviceSurfaceFormats2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceFormats2KHR") - GetPhysicalDeviceSurfaceFormatsKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceFormatsKHR") - GetPhysicalDeviceSurfacePresentModes2EXT = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfacePresentModes2EXT") - GetPhysicalDeviceSurfacePresentModesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfacePresentModesKHR") - GetPhysicalDeviceSurfaceSupportKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceSupportKHR") - GetPhysicalDeviceToolProperties = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceToolProperties") - GetPhysicalDeviceToolPropertiesEXT = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceToolPropertiesEXT") - GetPhysicalDeviceWin32PresentationSupportKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR") - GetWinrtDisplayNV = auto_cast GetInstanceProcAddr(instance, "vkGetWinrtDisplayNV") - ReleaseDisplayEXT = auto_cast GetInstanceProcAddr(instance, "vkReleaseDisplayEXT") - SubmitDebugUtilsMessageEXT = auto_cast GetInstanceProcAddr(instance, "vkSubmitDebugUtilsMessageEXT") - - // Device Procedures (may call into dispatch) - AcquireFullScreenExclusiveModeEXT = auto_cast GetInstanceProcAddr(instance, "vkAcquireFullScreenExclusiveModeEXT") - AcquireNextImage2KHR = auto_cast GetInstanceProcAddr(instance, "vkAcquireNextImage2KHR") - AcquireNextImageKHR = auto_cast GetInstanceProcAddr(instance, "vkAcquireNextImageKHR") - AcquirePerformanceConfigurationINTEL = auto_cast GetInstanceProcAddr(instance, "vkAcquirePerformanceConfigurationINTEL") - AcquireProfilingLockKHR = auto_cast GetInstanceProcAddr(instance, "vkAcquireProfilingLockKHR") - AllocateCommandBuffers = auto_cast GetInstanceProcAddr(instance, "vkAllocateCommandBuffers") - AllocateDescriptorSets = auto_cast GetInstanceProcAddr(instance, "vkAllocateDescriptorSets") - AllocateMemory = auto_cast GetInstanceProcAddr(instance, "vkAllocateMemory") - BeginCommandBuffer = auto_cast GetInstanceProcAddr(instance, "vkBeginCommandBuffer") - BindAccelerationStructureMemoryNV = auto_cast GetInstanceProcAddr(instance, "vkBindAccelerationStructureMemoryNV") - BindBufferMemory = auto_cast GetInstanceProcAddr(instance, "vkBindBufferMemory") - BindBufferMemory2 = auto_cast GetInstanceProcAddr(instance, "vkBindBufferMemory2") - BindBufferMemory2KHR = auto_cast GetInstanceProcAddr(instance, "vkBindBufferMemory2KHR") - BindImageMemory = auto_cast GetInstanceProcAddr(instance, "vkBindImageMemory") - BindImageMemory2 = auto_cast GetInstanceProcAddr(instance, "vkBindImageMemory2") - BindImageMemory2KHR = auto_cast GetInstanceProcAddr(instance, "vkBindImageMemory2KHR") - BuildAccelerationStructuresKHR = auto_cast GetInstanceProcAddr(instance, "vkBuildAccelerationStructuresKHR") - CmdBeginConditionalRenderingEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdBeginConditionalRenderingEXT") - CmdBeginDebugUtilsLabelEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdBeginDebugUtilsLabelEXT") - CmdBeginQuery = auto_cast GetInstanceProcAddr(instance, "vkCmdBeginQuery") - CmdBeginQueryIndexedEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdBeginQueryIndexedEXT") - CmdBeginRenderPass = auto_cast GetInstanceProcAddr(instance, "vkCmdBeginRenderPass") - CmdBeginRenderPass2 = auto_cast GetInstanceProcAddr(instance, "vkCmdBeginRenderPass2") - CmdBeginRenderPass2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdBeginRenderPass2KHR") - CmdBeginRendering = auto_cast GetInstanceProcAddr(instance, "vkCmdBeginRendering") - CmdBeginRenderingKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdBeginRenderingKHR") - CmdBeginTransformFeedbackEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdBeginTransformFeedbackEXT") - CmdBindDescriptorSets = auto_cast GetInstanceProcAddr(instance, "vkCmdBindDescriptorSets") - CmdBindIndexBuffer = auto_cast GetInstanceProcAddr(instance, "vkCmdBindIndexBuffer") - CmdBindInvocationMaskHUAWEI = auto_cast GetInstanceProcAddr(instance, "vkCmdBindInvocationMaskHUAWEI") - CmdBindPipeline = auto_cast GetInstanceProcAddr(instance, "vkCmdBindPipeline") - CmdBindPipelineShaderGroupNV = auto_cast GetInstanceProcAddr(instance, "vkCmdBindPipelineShaderGroupNV") - CmdBindShadingRateImageNV = auto_cast GetInstanceProcAddr(instance, "vkCmdBindShadingRateImageNV") - CmdBindTransformFeedbackBuffersEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdBindTransformFeedbackBuffersEXT") - CmdBindVertexBuffers = auto_cast GetInstanceProcAddr(instance, "vkCmdBindVertexBuffers") - CmdBindVertexBuffers2 = auto_cast GetInstanceProcAddr(instance, "vkCmdBindVertexBuffers2") - CmdBindVertexBuffers2EXT = auto_cast GetInstanceProcAddr(instance, "vkCmdBindVertexBuffers2EXT") - CmdBlitImage = auto_cast GetInstanceProcAddr(instance, "vkCmdBlitImage") - CmdBlitImage2 = auto_cast GetInstanceProcAddr(instance, "vkCmdBlitImage2") - CmdBlitImage2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdBlitImage2KHR") - CmdBuildAccelerationStructureNV = auto_cast GetInstanceProcAddr(instance, "vkCmdBuildAccelerationStructureNV") - CmdBuildAccelerationStructuresIndirectKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdBuildAccelerationStructuresIndirectKHR") - CmdBuildAccelerationStructuresKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdBuildAccelerationStructuresKHR") - CmdClearAttachments = auto_cast GetInstanceProcAddr(instance, "vkCmdClearAttachments") - CmdClearColorImage = auto_cast GetInstanceProcAddr(instance, "vkCmdClearColorImage") - CmdClearDepthStencilImage = auto_cast GetInstanceProcAddr(instance, "vkCmdClearDepthStencilImage") - CmdCopyAccelerationStructureKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyAccelerationStructureKHR") - CmdCopyAccelerationStructureNV = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyAccelerationStructureNV") - CmdCopyAccelerationStructureToMemoryKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyAccelerationStructureToMemoryKHR") - CmdCopyBuffer = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyBuffer") - CmdCopyBuffer2 = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyBuffer2") - CmdCopyBuffer2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyBuffer2KHR") - CmdCopyBufferToImage = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyBufferToImage") - CmdCopyBufferToImage2 = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyBufferToImage2") - CmdCopyBufferToImage2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyBufferToImage2KHR") - CmdCopyImage = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyImage") - CmdCopyImage2 = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyImage2") - CmdCopyImage2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyImage2KHR") - CmdCopyImageToBuffer = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyImageToBuffer") - CmdCopyImageToBuffer2 = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyImageToBuffer2") - CmdCopyImageToBuffer2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyImageToBuffer2KHR") - CmdCopyMemoryToAccelerationStructureKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyMemoryToAccelerationStructureKHR") - CmdCopyQueryPoolResults = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyQueryPoolResults") - CmdCuLaunchKernelNVX = auto_cast GetInstanceProcAddr(instance, "vkCmdCuLaunchKernelNVX") - CmdDebugMarkerBeginEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdDebugMarkerBeginEXT") - CmdDebugMarkerEndEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdDebugMarkerEndEXT") - CmdDebugMarkerInsertEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdDebugMarkerInsertEXT") - CmdDispatch = auto_cast GetInstanceProcAddr(instance, "vkCmdDispatch") - CmdDispatchBase = auto_cast GetInstanceProcAddr(instance, "vkCmdDispatchBase") - CmdDispatchBaseKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdDispatchBaseKHR") - CmdDispatchIndirect = auto_cast GetInstanceProcAddr(instance, "vkCmdDispatchIndirect") - CmdDraw = auto_cast GetInstanceProcAddr(instance, "vkCmdDraw") - CmdDrawIndexed = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawIndexed") - CmdDrawIndexedIndirect = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawIndexedIndirect") - CmdDrawIndexedIndirectCount = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawIndexedIndirectCount") - CmdDrawIndexedIndirectCountAMD = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawIndexedIndirectCountAMD") - CmdDrawIndexedIndirectCountKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawIndexedIndirectCountKHR") - CmdDrawIndirect = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawIndirect") - CmdDrawIndirectByteCountEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawIndirectByteCountEXT") - CmdDrawIndirectCount = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawIndirectCount") - CmdDrawIndirectCountAMD = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawIndirectCountAMD") - CmdDrawIndirectCountKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawIndirectCountKHR") - CmdDrawMeshTasksIndirectCountNV = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawMeshTasksIndirectCountNV") - CmdDrawMeshTasksIndirectNV = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawMeshTasksIndirectNV") - CmdDrawMeshTasksNV = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawMeshTasksNV") - CmdDrawMultiEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawMultiEXT") - CmdDrawMultiIndexedEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawMultiIndexedEXT") - CmdEndConditionalRenderingEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdEndConditionalRenderingEXT") - CmdEndDebugUtilsLabelEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdEndDebugUtilsLabelEXT") - CmdEndQuery = auto_cast GetInstanceProcAddr(instance, "vkCmdEndQuery") - CmdEndQueryIndexedEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdEndQueryIndexedEXT") - CmdEndRenderPass = auto_cast GetInstanceProcAddr(instance, "vkCmdEndRenderPass") - CmdEndRenderPass2 = auto_cast GetInstanceProcAddr(instance, "vkCmdEndRenderPass2") - CmdEndRenderPass2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdEndRenderPass2KHR") - CmdEndRendering = auto_cast GetInstanceProcAddr(instance, "vkCmdEndRendering") - CmdEndRenderingKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdEndRenderingKHR") - CmdEndTransformFeedbackEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdEndTransformFeedbackEXT") - CmdExecuteCommands = auto_cast GetInstanceProcAddr(instance, "vkCmdExecuteCommands") - CmdExecuteGeneratedCommandsNV = auto_cast GetInstanceProcAddr(instance, "vkCmdExecuteGeneratedCommandsNV") - CmdFillBuffer = auto_cast GetInstanceProcAddr(instance, "vkCmdFillBuffer") - CmdInsertDebugUtilsLabelEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdInsertDebugUtilsLabelEXT") - CmdNextSubpass = auto_cast GetInstanceProcAddr(instance, "vkCmdNextSubpass") - CmdNextSubpass2 = auto_cast GetInstanceProcAddr(instance, "vkCmdNextSubpass2") - CmdNextSubpass2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdNextSubpass2KHR") - CmdPipelineBarrier = auto_cast GetInstanceProcAddr(instance, "vkCmdPipelineBarrier") - CmdPipelineBarrier2 = auto_cast GetInstanceProcAddr(instance, "vkCmdPipelineBarrier2") - CmdPipelineBarrier2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdPipelineBarrier2KHR") - CmdPreprocessGeneratedCommandsNV = auto_cast GetInstanceProcAddr(instance, "vkCmdPreprocessGeneratedCommandsNV") - CmdPushConstants = auto_cast GetInstanceProcAddr(instance, "vkCmdPushConstants") - CmdPushDescriptorSetKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdPushDescriptorSetKHR") - CmdPushDescriptorSetWithTemplateKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdPushDescriptorSetWithTemplateKHR") - CmdResetEvent = auto_cast GetInstanceProcAddr(instance, "vkCmdResetEvent") - CmdResetEvent2 = auto_cast GetInstanceProcAddr(instance, "vkCmdResetEvent2") - CmdResetEvent2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdResetEvent2KHR") - CmdResetQueryPool = auto_cast GetInstanceProcAddr(instance, "vkCmdResetQueryPool") - CmdResolveImage = auto_cast GetInstanceProcAddr(instance, "vkCmdResolveImage") - CmdResolveImage2 = auto_cast GetInstanceProcAddr(instance, "vkCmdResolveImage2") - CmdResolveImage2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdResolveImage2KHR") - CmdSetBlendConstants = auto_cast GetInstanceProcAddr(instance, "vkCmdSetBlendConstants") - CmdSetCheckpointNV = auto_cast GetInstanceProcAddr(instance, "vkCmdSetCheckpointNV") - CmdSetCoarseSampleOrderNV = auto_cast GetInstanceProcAddr(instance, "vkCmdSetCoarseSampleOrderNV") - CmdSetCullMode = auto_cast GetInstanceProcAddr(instance, "vkCmdSetCullMode") - CmdSetCullModeEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetCullModeEXT") - CmdSetDepthBias = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDepthBias") - CmdSetDepthBiasEnable = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDepthBiasEnable") - CmdSetDepthBiasEnableEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDepthBiasEnableEXT") - CmdSetDepthBounds = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDepthBounds") - CmdSetDepthBoundsTestEnable = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDepthBoundsTestEnable") - CmdSetDepthBoundsTestEnableEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDepthBoundsTestEnableEXT") - CmdSetDepthCompareOp = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDepthCompareOp") - CmdSetDepthCompareOpEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDepthCompareOpEXT") - CmdSetDepthTestEnable = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDepthTestEnable") - CmdSetDepthTestEnableEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDepthTestEnableEXT") - CmdSetDepthWriteEnable = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDepthWriteEnable") - CmdSetDepthWriteEnableEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDepthWriteEnableEXT") - CmdSetDeviceMask = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDeviceMask") - CmdSetDeviceMaskKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDeviceMaskKHR") - CmdSetDiscardRectangleEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDiscardRectangleEXT") - CmdSetEvent = auto_cast GetInstanceProcAddr(instance, "vkCmdSetEvent") - CmdSetEvent2 = auto_cast GetInstanceProcAddr(instance, "vkCmdSetEvent2") - CmdSetEvent2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdSetEvent2KHR") - CmdSetExclusiveScissorNV = auto_cast GetInstanceProcAddr(instance, "vkCmdSetExclusiveScissorNV") - CmdSetFragmentShadingRateEnumNV = auto_cast GetInstanceProcAddr(instance, "vkCmdSetFragmentShadingRateEnumNV") - CmdSetFragmentShadingRateKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdSetFragmentShadingRateKHR") - CmdSetFrontFace = auto_cast GetInstanceProcAddr(instance, "vkCmdSetFrontFace") - CmdSetFrontFaceEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetFrontFaceEXT") - CmdSetLineStippleEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetLineStippleEXT") - CmdSetLineWidth = auto_cast GetInstanceProcAddr(instance, "vkCmdSetLineWidth") - CmdSetLogicOpEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetLogicOpEXT") - CmdSetPatchControlPointsEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetPatchControlPointsEXT") - CmdSetPerformanceMarkerINTEL = auto_cast GetInstanceProcAddr(instance, "vkCmdSetPerformanceMarkerINTEL") - CmdSetPerformanceOverrideINTEL = auto_cast GetInstanceProcAddr(instance, "vkCmdSetPerformanceOverrideINTEL") - CmdSetPerformanceStreamMarkerINTEL = auto_cast GetInstanceProcAddr(instance, "vkCmdSetPerformanceStreamMarkerINTEL") - CmdSetPrimitiveRestartEnable = auto_cast GetInstanceProcAddr(instance, "vkCmdSetPrimitiveRestartEnable") - CmdSetPrimitiveRestartEnableEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetPrimitiveRestartEnableEXT") - CmdSetPrimitiveTopology = auto_cast GetInstanceProcAddr(instance, "vkCmdSetPrimitiveTopology") - CmdSetPrimitiveTopologyEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetPrimitiveTopologyEXT") - CmdSetRasterizerDiscardEnable = auto_cast GetInstanceProcAddr(instance, "vkCmdSetRasterizerDiscardEnable") - CmdSetRasterizerDiscardEnableEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetRasterizerDiscardEnableEXT") - CmdSetRayTracingPipelineStackSizeKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdSetRayTracingPipelineStackSizeKHR") - CmdSetSampleLocationsEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetSampleLocationsEXT") - CmdSetScissor = auto_cast GetInstanceProcAddr(instance, "vkCmdSetScissor") - CmdSetScissorWithCount = auto_cast GetInstanceProcAddr(instance, "vkCmdSetScissorWithCount") - CmdSetScissorWithCountEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetScissorWithCountEXT") - CmdSetStencilCompareMask = auto_cast GetInstanceProcAddr(instance, "vkCmdSetStencilCompareMask") - CmdSetStencilOp = auto_cast GetInstanceProcAddr(instance, "vkCmdSetStencilOp") - CmdSetStencilOpEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetStencilOpEXT") - CmdSetStencilReference = auto_cast GetInstanceProcAddr(instance, "vkCmdSetStencilReference") - CmdSetStencilTestEnable = auto_cast GetInstanceProcAddr(instance, "vkCmdSetStencilTestEnable") - CmdSetStencilTestEnableEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetStencilTestEnableEXT") - CmdSetStencilWriteMask = auto_cast GetInstanceProcAddr(instance, "vkCmdSetStencilWriteMask") - CmdSetVertexInputEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetVertexInputEXT") - CmdSetViewport = auto_cast GetInstanceProcAddr(instance, "vkCmdSetViewport") - CmdSetViewportShadingRatePaletteNV = auto_cast GetInstanceProcAddr(instance, "vkCmdSetViewportShadingRatePaletteNV") - CmdSetViewportWScalingNV = auto_cast GetInstanceProcAddr(instance, "vkCmdSetViewportWScalingNV") - CmdSetViewportWithCount = auto_cast GetInstanceProcAddr(instance, "vkCmdSetViewportWithCount") - CmdSetViewportWithCountEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetViewportWithCountEXT") - CmdSubpassShadingHUAWEI = auto_cast GetInstanceProcAddr(instance, "vkCmdSubpassShadingHUAWEI") - CmdTraceRaysIndirectKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdTraceRaysIndirectKHR") - CmdTraceRaysKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdTraceRaysKHR") - CmdTraceRaysNV = auto_cast GetInstanceProcAddr(instance, "vkCmdTraceRaysNV") - CmdUpdateBuffer = auto_cast GetInstanceProcAddr(instance, "vkCmdUpdateBuffer") - CmdWaitEvents = auto_cast GetInstanceProcAddr(instance, "vkCmdWaitEvents") - CmdWaitEvents2 = auto_cast GetInstanceProcAddr(instance, "vkCmdWaitEvents2") - CmdWaitEvents2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdWaitEvents2KHR") - CmdWriteAccelerationStructuresPropertiesKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdWriteAccelerationStructuresPropertiesKHR") - CmdWriteAccelerationStructuresPropertiesNV = auto_cast GetInstanceProcAddr(instance, "vkCmdWriteAccelerationStructuresPropertiesNV") - CmdWriteBufferMarker2AMD = auto_cast GetInstanceProcAddr(instance, "vkCmdWriteBufferMarker2AMD") - CmdWriteBufferMarkerAMD = auto_cast GetInstanceProcAddr(instance, "vkCmdWriteBufferMarkerAMD") - CmdWriteTimestamp = auto_cast GetInstanceProcAddr(instance, "vkCmdWriteTimestamp") - CmdWriteTimestamp2 = auto_cast GetInstanceProcAddr(instance, "vkCmdWriteTimestamp2") - CmdWriteTimestamp2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdWriteTimestamp2KHR") - CompileDeferredNV = auto_cast GetInstanceProcAddr(instance, "vkCompileDeferredNV") - CopyAccelerationStructureKHR = auto_cast GetInstanceProcAddr(instance, "vkCopyAccelerationStructureKHR") - CopyAccelerationStructureToMemoryKHR = auto_cast GetInstanceProcAddr(instance, "vkCopyAccelerationStructureToMemoryKHR") - CopyMemoryToAccelerationStructureKHR = auto_cast GetInstanceProcAddr(instance, "vkCopyMemoryToAccelerationStructureKHR") - CreateAccelerationStructureKHR = auto_cast GetInstanceProcAddr(instance, "vkCreateAccelerationStructureKHR") - CreateAccelerationStructureNV = auto_cast GetInstanceProcAddr(instance, "vkCreateAccelerationStructureNV") - CreateBuffer = auto_cast GetInstanceProcAddr(instance, "vkCreateBuffer") - CreateBufferView = auto_cast GetInstanceProcAddr(instance, "vkCreateBufferView") - CreateCommandPool = auto_cast GetInstanceProcAddr(instance, "vkCreateCommandPool") - CreateComputePipelines = auto_cast GetInstanceProcAddr(instance, "vkCreateComputePipelines") - CreateCuFunctionNVX = auto_cast GetInstanceProcAddr(instance, "vkCreateCuFunctionNVX") - CreateCuModuleNVX = auto_cast GetInstanceProcAddr(instance, "vkCreateCuModuleNVX") - CreateDeferredOperationKHR = auto_cast GetInstanceProcAddr(instance, "vkCreateDeferredOperationKHR") - CreateDescriptorPool = auto_cast GetInstanceProcAddr(instance, "vkCreateDescriptorPool") - CreateDescriptorSetLayout = auto_cast GetInstanceProcAddr(instance, "vkCreateDescriptorSetLayout") - CreateDescriptorUpdateTemplate = auto_cast GetInstanceProcAddr(instance, "vkCreateDescriptorUpdateTemplate") - CreateDescriptorUpdateTemplateKHR = auto_cast GetInstanceProcAddr(instance, "vkCreateDescriptorUpdateTemplateKHR") - CreateEvent = auto_cast GetInstanceProcAddr(instance, "vkCreateEvent") - CreateFence = auto_cast GetInstanceProcAddr(instance, "vkCreateFence") - CreateFramebuffer = auto_cast GetInstanceProcAddr(instance, "vkCreateFramebuffer") - CreateGraphicsPipelines = auto_cast GetInstanceProcAddr(instance, "vkCreateGraphicsPipelines") - CreateImage = auto_cast GetInstanceProcAddr(instance, "vkCreateImage") - CreateImageView = auto_cast GetInstanceProcAddr(instance, "vkCreateImageView") - CreateIndirectCommandsLayoutNV = auto_cast GetInstanceProcAddr(instance, "vkCreateIndirectCommandsLayoutNV") - CreatePipelineCache = auto_cast GetInstanceProcAddr(instance, "vkCreatePipelineCache") - CreatePipelineLayout = auto_cast GetInstanceProcAddr(instance, "vkCreatePipelineLayout") - CreatePrivateDataSlot = auto_cast GetInstanceProcAddr(instance, "vkCreatePrivateDataSlot") - CreatePrivateDataSlotEXT = auto_cast GetInstanceProcAddr(instance, "vkCreatePrivateDataSlotEXT") - CreateQueryPool = auto_cast GetInstanceProcAddr(instance, "vkCreateQueryPool") - CreateRayTracingPipelinesKHR = auto_cast GetInstanceProcAddr(instance, "vkCreateRayTracingPipelinesKHR") - CreateRayTracingPipelinesNV = auto_cast GetInstanceProcAddr(instance, "vkCreateRayTracingPipelinesNV") - CreateRenderPass = auto_cast GetInstanceProcAddr(instance, "vkCreateRenderPass") - CreateRenderPass2 = auto_cast GetInstanceProcAddr(instance, "vkCreateRenderPass2") - CreateRenderPass2KHR = auto_cast GetInstanceProcAddr(instance, "vkCreateRenderPass2KHR") - CreateSampler = auto_cast GetInstanceProcAddr(instance, "vkCreateSampler") - CreateSamplerYcbcrConversion = auto_cast GetInstanceProcAddr(instance, "vkCreateSamplerYcbcrConversion") - CreateSamplerYcbcrConversionKHR = auto_cast GetInstanceProcAddr(instance, "vkCreateSamplerYcbcrConversionKHR") - CreateSemaphore = auto_cast GetInstanceProcAddr(instance, "vkCreateSemaphore") - CreateShaderModule = auto_cast GetInstanceProcAddr(instance, "vkCreateShaderModule") - CreateSharedSwapchainsKHR = auto_cast GetInstanceProcAddr(instance, "vkCreateSharedSwapchainsKHR") - CreateSwapchainKHR = auto_cast GetInstanceProcAddr(instance, "vkCreateSwapchainKHR") - CreateValidationCacheEXT = auto_cast GetInstanceProcAddr(instance, "vkCreateValidationCacheEXT") - DebugMarkerSetObjectNameEXT = auto_cast GetInstanceProcAddr(instance, "vkDebugMarkerSetObjectNameEXT") - DebugMarkerSetObjectTagEXT = auto_cast GetInstanceProcAddr(instance, "vkDebugMarkerSetObjectTagEXT") - DeferredOperationJoinKHR = auto_cast GetInstanceProcAddr(instance, "vkDeferredOperationJoinKHR") - DestroyAccelerationStructureKHR = auto_cast GetInstanceProcAddr(instance, "vkDestroyAccelerationStructureKHR") - DestroyAccelerationStructureNV = auto_cast GetInstanceProcAddr(instance, "vkDestroyAccelerationStructureNV") - DestroyBuffer = auto_cast GetInstanceProcAddr(instance, "vkDestroyBuffer") - DestroyBufferView = auto_cast GetInstanceProcAddr(instance, "vkDestroyBufferView") - DestroyCommandPool = auto_cast GetInstanceProcAddr(instance, "vkDestroyCommandPool") - DestroyCuFunctionNVX = auto_cast GetInstanceProcAddr(instance, "vkDestroyCuFunctionNVX") - DestroyCuModuleNVX = auto_cast GetInstanceProcAddr(instance, "vkDestroyCuModuleNVX") - DestroyDeferredOperationKHR = auto_cast GetInstanceProcAddr(instance, "vkDestroyDeferredOperationKHR") - DestroyDescriptorPool = auto_cast GetInstanceProcAddr(instance, "vkDestroyDescriptorPool") - DestroyDescriptorSetLayout = auto_cast GetInstanceProcAddr(instance, "vkDestroyDescriptorSetLayout") - DestroyDescriptorUpdateTemplate = auto_cast GetInstanceProcAddr(instance, "vkDestroyDescriptorUpdateTemplate") - DestroyDescriptorUpdateTemplateKHR = auto_cast GetInstanceProcAddr(instance, "vkDestroyDescriptorUpdateTemplateKHR") - DestroyDevice = auto_cast GetInstanceProcAddr(instance, "vkDestroyDevice") - DestroyEvent = auto_cast GetInstanceProcAddr(instance, "vkDestroyEvent") - DestroyFence = auto_cast GetInstanceProcAddr(instance, "vkDestroyFence") - DestroyFramebuffer = auto_cast GetInstanceProcAddr(instance, "vkDestroyFramebuffer") - DestroyImage = auto_cast GetInstanceProcAddr(instance, "vkDestroyImage") - DestroyImageView = auto_cast GetInstanceProcAddr(instance, "vkDestroyImageView") - DestroyIndirectCommandsLayoutNV = auto_cast GetInstanceProcAddr(instance, "vkDestroyIndirectCommandsLayoutNV") - DestroyPipeline = auto_cast GetInstanceProcAddr(instance, "vkDestroyPipeline") - DestroyPipelineCache = auto_cast GetInstanceProcAddr(instance, "vkDestroyPipelineCache") - DestroyPipelineLayout = auto_cast GetInstanceProcAddr(instance, "vkDestroyPipelineLayout") - DestroyPrivateDataSlot = auto_cast GetInstanceProcAddr(instance, "vkDestroyPrivateDataSlot") - DestroyPrivateDataSlotEXT = auto_cast GetInstanceProcAddr(instance, "vkDestroyPrivateDataSlotEXT") - DestroyQueryPool = auto_cast GetInstanceProcAddr(instance, "vkDestroyQueryPool") - DestroyRenderPass = auto_cast GetInstanceProcAddr(instance, "vkDestroyRenderPass") - DestroySampler = auto_cast GetInstanceProcAddr(instance, "vkDestroySampler") - DestroySamplerYcbcrConversion = auto_cast GetInstanceProcAddr(instance, "vkDestroySamplerYcbcrConversion") - DestroySamplerYcbcrConversionKHR = auto_cast GetInstanceProcAddr(instance, "vkDestroySamplerYcbcrConversionKHR") - DestroySemaphore = auto_cast GetInstanceProcAddr(instance, "vkDestroySemaphore") - DestroyShaderModule = auto_cast GetInstanceProcAddr(instance, "vkDestroyShaderModule") - DestroySwapchainKHR = auto_cast GetInstanceProcAddr(instance, "vkDestroySwapchainKHR") - DestroyValidationCacheEXT = auto_cast GetInstanceProcAddr(instance, "vkDestroyValidationCacheEXT") - DeviceWaitIdle = auto_cast GetInstanceProcAddr(instance, "vkDeviceWaitIdle") - DisplayPowerControlEXT = auto_cast GetInstanceProcAddr(instance, "vkDisplayPowerControlEXT") - EndCommandBuffer = auto_cast GetInstanceProcAddr(instance, "vkEndCommandBuffer") - FlushMappedMemoryRanges = auto_cast GetInstanceProcAddr(instance, "vkFlushMappedMemoryRanges") - FreeCommandBuffers = auto_cast GetInstanceProcAddr(instance, "vkFreeCommandBuffers") - FreeDescriptorSets = auto_cast GetInstanceProcAddr(instance, "vkFreeDescriptorSets") - FreeMemory = auto_cast GetInstanceProcAddr(instance, "vkFreeMemory") - GetAccelerationStructureBuildSizesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetAccelerationStructureBuildSizesKHR") - GetAccelerationStructureDeviceAddressKHR = auto_cast GetInstanceProcAddr(instance, "vkGetAccelerationStructureDeviceAddressKHR") - GetAccelerationStructureHandleNV = auto_cast GetInstanceProcAddr(instance, "vkGetAccelerationStructureHandleNV") - GetAccelerationStructureMemoryRequirementsNV = auto_cast GetInstanceProcAddr(instance, "vkGetAccelerationStructureMemoryRequirementsNV") - GetBufferDeviceAddress = auto_cast GetInstanceProcAddr(instance, "vkGetBufferDeviceAddress") - GetBufferDeviceAddressEXT = auto_cast GetInstanceProcAddr(instance, "vkGetBufferDeviceAddressEXT") - GetBufferDeviceAddressKHR = auto_cast GetInstanceProcAddr(instance, "vkGetBufferDeviceAddressKHR") - GetBufferMemoryRequirements = auto_cast GetInstanceProcAddr(instance, "vkGetBufferMemoryRequirements") - GetBufferMemoryRequirements2 = auto_cast GetInstanceProcAddr(instance, "vkGetBufferMemoryRequirements2") - GetBufferMemoryRequirements2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetBufferMemoryRequirements2KHR") - GetBufferOpaqueCaptureAddress = auto_cast GetInstanceProcAddr(instance, "vkGetBufferOpaqueCaptureAddress") - GetBufferOpaqueCaptureAddressKHR = auto_cast GetInstanceProcAddr(instance, "vkGetBufferOpaqueCaptureAddressKHR") - GetCalibratedTimestampsEXT = auto_cast GetInstanceProcAddr(instance, "vkGetCalibratedTimestampsEXT") - GetDeferredOperationMaxConcurrencyKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDeferredOperationMaxConcurrencyKHR") - GetDeferredOperationResultKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDeferredOperationResultKHR") - GetDescriptorSetHostMappingVALVE = auto_cast GetInstanceProcAddr(instance, "vkGetDescriptorSetHostMappingVALVE") - GetDescriptorSetLayoutHostMappingInfoVALVE = auto_cast GetInstanceProcAddr(instance, "vkGetDescriptorSetLayoutHostMappingInfoVALVE") - GetDescriptorSetLayoutSupport = auto_cast GetInstanceProcAddr(instance, "vkGetDescriptorSetLayoutSupport") - GetDescriptorSetLayoutSupportKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDescriptorSetLayoutSupportKHR") - GetDeviceAccelerationStructureCompatibilityKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceAccelerationStructureCompatibilityKHR") - GetDeviceBufferMemoryRequirements = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceBufferMemoryRequirements") - GetDeviceBufferMemoryRequirementsKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceBufferMemoryRequirementsKHR") - GetDeviceGroupPeerMemoryFeatures = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceGroupPeerMemoryFeatures") - GetDeviceGroupPeerMemoryFeaturesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceGroupPeerMemoryFeaturesKHR") - GetDeviceGroupPresentCapabilitiesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceGroupPresentCapabilitiesKHR") - GetDeviceGroupSurfacePresentModes2EXT = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceGroupSurfacePresentModes2EXT") - GetDeviceGroupSurfacePresentModesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceGroupSurfacePresentModesKHR") - GetDeviceImageMemoryRequirements = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceImageMemoryRequirements") - GetDeviceImageMemoryRequirementsKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceImageMemoryRequirementsKHR") - GetDeviceImageSparseMemoryRequirements = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceImageSparseMemoryRequirements") - GetDeviceImageSparseMemoryRequirementsKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceImageSparseMemoryRequirementsKHR") - GetDeviceMemoryCommitment = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceMemoryCommitment") - GetDeviceMemoryOpaqueCaptureAddress = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceMemoryOpaqueCaptureAddress") - GetDeviceMemoryOpaqueCaptureAddressKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceMemoryOpaqueCaptureAddressKHR") - GetDeviceProcAddr = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceProcAddr") - GetDeviceQueue = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceQueue") - GetDeviceQueue2 = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceQueue2") - GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI") - GetEventStatus = auto_cast GetInstanceProcAddr(instance, "vkGetEventStatus") - GetFenceFdKHR = auto_cast GetInstanceProcAddr(instance, "vkGetFenceFdKHR") - GetFenceStatus = auto_cast GetInstanceProcAddr(instance, "vkGetFenceStatus") - GetFenceWin32HandleKHR = auto_cast GetInstanceProcAddr(instance, "vkGetFenceWin32HandleKHR") - GetGeneratedCommandsMemoryRequirementsNV = auto_cast GetInstanceProcAddr(instance, "vkGetGeneratedCommandsMemoryRequirementsNV") - GetImageDrmFormatModifierPropertiesEXT = auto_cast GetInstanceProcAddr(instance, "vkGetImageDrmFormatModifierPropertiesEXT") - GetImageMemoryRequirements = auto_cast GetInstanceProcAddr(instance, "vkGetImageMemoryRequirements") - GetImageMemoryRequirements2 = auto_cast GetInstanceProcAddr(instance, "vkGetImageMemoryRequirements2") - GetImageMemoryRequirements2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetImageMemoryRequirements2KHR") - GetImageSparseMemoryRequirements = auto_cast GetInstanceProcAddr(instance, "vkGetImageSparseMemoryRequirements") - GetImageSparseMemoryRequirements2 = auto_cast GetInstanceProcAddr(instance, "vkGetImageSparseMemoryRequirements2") - GetImageSparseMemoryRequirements2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetImageSparseMemoryRequirements2KHR") - GetImageSubresourceLayout = auto_cast GetInstanceProcAddr(instance, "vkGetImageSubresourceLayout") - GetImageViewAddressNVX = auto_cast GetInstanceProcAddr(instance, "vkGetImageViewAddressNVX") - GetImageViewHandleNVX = auto_cast GetInstanceProcAddr(instance, "vkGetImageViewHandleNVX") - GetMemoryFdKHR = auto_cast GetInstanceProcAddr(instance, "vkGetMemoryFdKHR") - GetMemoryFdPropertiesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetMemoryFdPropertiesKHR") - GetMemoryHostPointerPropertiesEXT = auto_cast GetInstanceProcAddr(instance, "vkGetMemoryHostPointerPropertiesEXT") - GetMemoryRemoteAddressNV = auto_cast GetInstanceProcAddr(instance, "vkGetMemoryRemoteAddressNV") - GetMemoryWin32HandleKHR = auto_cast GetInstanceProcAddr(instance, "vkGetMemoryWin32HandleKHR") - GetMemoryWin32HandleNV = auto_cast GetInstanceProcAddr(instance, "vkGetMemoryWin32HandleNV") - GetMemoryWin32HandlePropertiesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetMemoryWin32HandlePropertiesKHR") - GetPastPresentationTimingGOOGLE = auto_cast GetInstanceProcAddr(instance, "vkGetPastPresentationTimingGOOGLE") - GetPerformanceParameterINTEL = auto_cast GetInstanceProcAddr(instance, "vkGetPerformanceParameterINTEL") - GetPipelineCacheData = auto_cast GetInstanceProcAddr(instance, "vkGetPipelineCacheData") - GetPipelineExecutableInternalRepresentationsKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPipelineExecutableInternalRepresentationsKHR") - GetPipelineExecutablePropertiesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPipelineExecutablePropertiesKHR") - GetPipelineExecutableStatisticsKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPipelineExecutableStatisticsKHR") - GetPrivateData = auto_cast GetInstanceProcAddr(instance, "vkGetPrivateData") - GetPrivateDataEXT = auto_cast GetInstanceProcAddr(instance, "vkGetPrivateDataEXT") - GetQueryPoolResults = auto_cast GetInstanceProcAddr(instance, "vkGetQueryPoolResults") - GetQueueCheckpointData2NV = auto_cast GetInstanceProcAddr(instance, "vkGetQueueCheckpointData2NV") - GetQueueCheckpointDataNV = auto_cast GetInstanceProcAddr(instance, "vkGetQueueCheckpointDataNV") - GetRayTracingCaptureReplayShaderGroupHandlesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR") - GetRayTracingShaderGroupHandlesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetRayTracingShaderGroupHandlesKHR") - GetRayTracingShaderGroupHandlesNV = auto_cast GetInstanceProcAddr(instance, "vkGetRayTracingShaderGroupHandlesNV") - GetRayTracingShaderGroupStackSizeKHR = auto_cast GetInstanceProcAddr(instance, "vkGetRayTracingShaderGroupStackSizeKHR") - GetRefreshCycleDurationGOOGLE = auto_cast GetInstanceProcAddr(instance, "vkGetRefreshCycleDurationGOOGLE") - GetRenderAreaGranularity = auto_cast GetInstanceProcAddr(instance, "vkGetRenderAreaGranularity") - GetSemaphoreCounterValue = auto_cast GetInstanceProcAddr(instance, "vkGetSemaphoreCounterValue") - GetSemaphoreCounterValueKHR = auto_cast GetInstanceProcAddr(instance, "vkGetSemaphoreCounterValueKHR") - GetSemaphoreFdKHR = auto_cast GetInstanceProcAddr(instance, "vkGetSemaphoreFdKHR") - GetSemaphoreWin32HandleKHR = auto_cast GetInstanceProcAddr(instance, "vkGetSemaphoreWin32HandleKHR") - GetShaderInfoAMD = auto_cast GetInstanceProcAddr(instance, "vkGetShaderInfoAMD") - GetSwapchainCounterEXT = auto_cast GetInstanceProcAddr(instance, "vkGetSwapchainCounterEXT") - GetSwapchainImagesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetSwapchainImagesKHR") - GetSwapchainStatusKHR = auto_cast GetInstanceProcAddr(instance, "vkGetSwapchainStatusKHR") - GetValidationCacheDataEXT = auto_cast GetInstanceProcAddr(instance, "vkGetValidationCacheDataEXT") - ImportFenceFdKHR = auto_cast GetInstanceProcAddr(instance, "vkImportFenceFdKHR") - ImportFenceWin32HandleKHR = auto_cast GetInstanceProcAddr(instance, "vkImportFenceWin32HandleKHR") - ImportSemaphoreFdKHR = auto_cast GetInstanceProcAddr(instance, "vkImportSemaphoreFdKHR") - ImportSemaphoreWin32HandleKHR = auto_cast GetInstanceProcAddr(instance, "vkImportSemaphoreWin32HandleKHR") - InitializePerformanceApiINTEL = auto_cast GetInstanceProcAddr(instance, "vkInitializePerformanceApiINTEL") - InvalidateMappedMemoryRanges = auto_cast GetInstanceProcAddr(instance, "vkInvalidateMappedMemoryRanges") - MapMemory = auto_cast GetInstanceProcAddr(instance, "vkMapMemory") - MergePipelineCaches = auto_cast GetInstanceProcAddr(instance, "vkMergePipelineCaches") - MergeValidationCachesEXT = auto_cast GetInstanceProcAddr(instance, "vkMergeValidationCachesEXT") - QueueBeginDebugUtilsLabelEXT = auto_cast GetInstanceProcAddr(instance, "vkQueueBeginDebugUtilsLabelEXT") - QueueBindSparse = auto_cast GetInstanceProcAddr(instance, "vkQueueBindSparse") - QueueEndDebugUtilsLabelEXT = auto_cast GetInstanceProcAddr(instance, "vkQueueEndDebugUtilsLabelEXT") - QueueInsertDebugUtilsLabelEXT = auto_cast GetInstanceProcAddr(instance, "vkQueueInsertDebugUtilsLabelEXT") - QueuePresentKHR = auto_cast GetInstanceProcAddr(instance, "vkQueuePresentKHR") - QueueSetPerformanceConfigurationINTEL = auto_cast GetInstanceProcAddr(instance, "vkQueueSetPerformanceConfigurationINTEL") - QueueSubmit = auto_cast GetInstanceProcAddr(instance, "vkQueueSubmit") - QueueSubmit2 = auto_cast GetInstanceProcAddr(instance, "vkQueueSubmit2") - QueueSubmit2KHR = auto_cast GetInstanceProcAddr(instance, "vkQueueSubmit2KHR") - QueueWaitIdle = auto_cast GetInstanceProcAddr(instance, "vkQueueWaitIdle") - RegisterDeviceEventEXT = auto_cast GetInstanceProcAddr(instance, "vkRegisterDeviceEventEXT") - RegisterDisplayEventEXT = auto_cast GetInstanceProcAddr(instance, "vkRegisterDisplayEventEXT") - ReleaseFullScreenExclusiveModeEXT = auto_cast GetInstanceProcAddr(instance, "vkReleaseFullScreenExclusiveModeEXT") - ReleasePerformanceConfigurationINTEL = auto_cast GetInstanceProcAddr(instance, "vkReleasePerformanceConfigurationINTEL") - ReleaseProfilingLockKHR = auto_cast GetInstanceProcAddr(instance, "vkReleaseProfilingLockKHR") - ResetCommandBuffer = auto_cast GetInstanceProcAddr(instance, "vkResetCommandBuffer") - ResetCommandPool = auto_cast GetInstanceProcAddr(instance, "vkResetCommandPool") - ResetDescriptorPool = auto_cast GetInstanceProcAddr(instance, "vkResetDescriptorPool") - ResetEvent = auto_cast GetInstanceProcAddr(instance, "vkResetEvent") - ResetFences = auto_cast GetInstanceProcAddr(instance, "vkResetFences") - ResetQueryPool = auto_cast GetInstanceProcAddr(instance, "vkResetQueryPool") - ResetQueryPoolEXT = auto_cast GetInstanceProcAddr(instance, "vkResetQueryPoolEXT") - SetDebugUtilsObjectNameEXT = auto_cast GetInstanceProcAddr(instance, "vkSetDebugUtilsObjectNameEXT") - SetDebugUtilsObjectTagEXT = auto_cast GetInstanceProcAddr(instance, "vkSetDebugUtilsObjectTagEXT") - SetDeviceMemoryPriorityEXT = auto_cast GetInstanceProcAddr(instance, "vkSetDeviceMemoryPriorityEXT") - SetEvent = auto_cast GetInstanceProcAddr(instance, "vkSetEvent") - SetHdrMetadataEXT = auto_cast GetInstanceProcAddr(instance, "vkSetHdrMetadataEXT") - SetLocalDimmingAMD = auto_cast GetInstanceProcAddr(instance, "vkSetLocalDimmingAMD") - SetPrivateData = auto_cast GetInstanceProcAddr(instance, "vkSetPrivateData") - SetPrivateDataEXT = auto_cast GetInstanceProcAddr(instance, "vkSetPrivateDataEXT") - SignalSemaphore = auto_cast GetInstanceProcAddr(instance, "vkSignalSemaphore") - SignalSemaphoreKHR = auto_cast GetInstanceProcAddr(instance, "vkSignalSemaphoreKHR") - TrimCommandPool = auto_cast GetInstanceProcAddr(instance, "vkTrimCommandPool") - TrimCommandPoolKHR = auto_cast GetInstanceProcAddr(instance, "vkTrimCommandPoolKHR") - UninitializePerformanceApiINTEL = auto_cast GetInstanceProcAddr(instance, "vkUninitializePerformanceApiINTEL") - UnmapMemory = auto_cast GetInstanceProcAddr(instance, "vkUnmapMemory") - UpdateDescriptorSetWithTemplate = auto_cast GetInstanceProcAddr(instance, "vkUpdateDescriptorSetWithTemplate") - UpdateDescriptorSetWithTemplateKHR = auto_cast GetInstanceProcAddr(instance, "vkUpdateDescriptorSetWithTemplateKHR") - UpdateDescriptorSets = auto_cast GetInstanceProcAddr(instance, "vkUpdateDescriptorSets") - WaitForFences = auto_cast GetInstanceProcAddr(instance, "vkWaitForFences") - WaitForPresentKHR = auto_cast GetInstanceProcAddr(instance, "vkWaitForPresentKHR") - WaitSemaphores = auto_cast GetInstanceProcAddr(instance, "vkWaitSemaphores") - WaitSemaphoresKHR = auto_cast GetInstanceProcAddr(instance, "vkWaitSemaphoresKHR") - WriteAccelerationStructuresPropertiesKHR = auto_cast GetInstanceProcAddr(instance, "vkWriteAccelerationStructuresPropertiesKHR") -} - -load_proc_addresses_global :: proc(vk_get_instance_proc_addr: rawptr) { - GetInstanceProcAddr = auto_cast vk_get_instance_proc_addr - - CreateInstance = auto_cast GetInstanceProcAddr(nil, "vkCreateInstance") - DebugUtilsMessengerCallbackEXT = auto_cast GetInstanceProcAddr(nil, "vkDebugUtilsMessengerCallbackEXT") - DeviceMemoryReportCallbackEXT = auto_cast GetInstanceProcAddr(nil, "vkDeviceMemoryReportCallbackEXT") - EnumerateInstanceExtensionProperties = auto_cast GetInstanceProcAddr(nil, "vkEnumerateInstanceExtensionProperties") - EnumerateInstanceLayerProperties = auto_cast GetInstanceProcAddr(nil, "vkEnumerateInstanceLayerProperties") - EnumerateInstanceVersion = auto_cast GetInstanceProcAddr(nil, "vkEnumerateInstanceVersion") - GetInstanceProcAddr = auto_cast GetInstanceProcAddr(nil, "vkGetInstanceProcAddr") -} - -load_proc_addresses :: proc{ - load_proc_addresses_global, - load_proc_addresses_instance, - load_proc_addresses_device, - load_proc_addresses_device_vtable, - load_proc_addresses_custom, -} - +// +// Vulkan wrapper generated from "https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/master/include/vulkan/vulkan_core.h" +// +package vulkan + +import "core:c" + +// Loader Procedure Types +ProcCreateInstance :: #type proc "system" (pCreateInfo: ^InstanceCreateInfo, pAllocator: ^AllocationCallbacks, pInstance: ^Instance) -> Result +ProcDebugUtilsMessengerCallbackEXT :: #type proc "system" (messageSeverity: DebugUtilsMessageSeverityFlagsEXT, messageTypes: DebugUtilsMessageTypeFlagsEXT, pCallbackData: ^DebugUtilsMessengerCallbackDataEXT, pUserData: rawptr) -> b32 +ProcDeviceMemoryReportCallbackEXT :: #type proc "system" (pCallbackData: ^DeviceMemoryReportCallbackDataEXT, pUserData: rawptr) +ProcEnumerateInstanceExtensionProperties :: #type proc "system" (pLayerName: cstring, pPropertyCount: ^u32, pProperties: [^]ExtensionProperties) -> Result +ProcEnumerateInstanceLayerProperties :: #type proc "system" (pPropertyCount: ^u32, pProperties: [^]LayerProperties) -> Result +ProcEnumerateInstanceVersion :: #type proc "system" (pApiVersion: ^u32) -> Result + +// Misc Procedure Types +ProcAllocationFunction :: #type proc "system" (pUserData: rawptr, size: int, alignment: int, allocationScope: SystemAllocationScope) -> rawptr +ProcDebugReportCallbackEXT :: #type proc "system" (flags: DebugReportFlagsEXT, objectType: DebugReportObjectTypeEXT, object: u64, location: int, messageCode: i32, pLayerPrefix: cstring, pMessage: cstring, pUserData: rawptr) -> b32 +ProcFreeFunction :: #type proc "system" (pUserData: rawptr, pMemory: rawptr) +ProcInternalAllocationNotification :: #type proc "system" (pUserData: rawptr, size: int, allocationType: InternalAllocationType, allocationScope: SystemAllocationScope) +ProcInternalFreeNotification :: #type proc "system" (pUserData: rawptr, size: int, allocationType: InternalAllocationType, allocationScope: SystemAllocationScope) +ProcReallocationFunction :: #type proc "system" (pUserData: rawptr, pOriginal: rawptr, size: int, alignment: int, allocationScope: SystemAllocationScope) -> rawptr +ProcVoidFunction :: #type proc "system" () + +// Instance Procedure Types +ProcAcquireDrmDisplayEXT :: #type proc "system" (physicalDevice: PhysicalDevice, drmFd: i32, display: DisplayKHR) -> Result +ProcAcquireWinrtDisplayNV :: #type proc "system" (physicalDevice: PhysicalDevice, display: DisplayKHR) -> Result +ProcCreateDebugReportCallbackEXT :: #type proc "system" (instance: Instance, pCreateInfo: ^DebugReportCallbackCreateInfoEXT, pAllocator: ^AllocationCallbacks, pCallback: ^DebugReportCallbackEXT) -> Result +ProcCreateDebugUtilsMessengerEXT :: #type proc "system" (instance: Instance, pCreateInfo: ^DebugUtilsMessengerCreateInfoEXT, pAllocator: ^AllocationCallbacks, pMessenger: ^DebugUtilsMessengerEXT) -> Result +ProcCreateDevice :: #type proc "system" (physicalDevice: PhysicalDevice, pCreateInfo: ^DeviceCreateInfo, pAllocator: ^AllocationCallbacks, pDevice: ^Device) -> Result +ProcCreateDisplayModeKHR :: #type proc "system" (physicalDevice: PhysicalDevice, display: DisplayKHR, pCreateInfo: ^DisplayModeCreateInfoKHR, pAllocator: ^AllocationCallbacks, pMode: ^DisplayModeKHR) -> Result +ProcCreateDisplayPlaneSurfaceKHR :: #type proc "system" (instance: Instance, pCreateInfo: ^DisplaySurfaceCreateInfoKHR, pAllocator: ^AllocationCallbacks, pSurface: ^SurfaceKHR) -> Result +ProcCreateHeadlessSurfaceEXT :: #type proc "system" (instance: Instance, pCreateInfo: ^HeadlessSurfaceCreateInfoEXT, pAllocator: ^AllocationCallbacks, pSurface: ^SurfaceKHR) -> Result +ProcCreateIOSSurfaceMVK :: #type proc "system" (instance: Instance, pCreateInfo: ^IOSSurfaceCreateInfoMVK, pAllocator: ^AllocationCallbacks, pSurface: ^SurfaceKHR) -> Result +ProcCreateMacOSSurfaceMVK :: #type proc "system" (instance: Instance, pCreateInfo: ^MacOSSurfaceCreateInfoMVK, pAllocator: ^AllocationCallbacks, pSurface: ^SurfaceKHR) -> Result +ProcCreateMetalSurfaceEXT :: #type proc "system" (instance: Instance, pCreateInfo: ^MetalSurfaceCreateInfoEXT, pAllocator: ^AllocationCallbacks, pSurface: ^SurfaceKHR) -> Result +ProcCreateWaylandSurfaceKHR :: #type proc "system" (instance: Instance, pCreateInfo: ^WaylandSurfaceCreateInfoKHR, pAllocator: ^AllocationCallbacks, pSurface: ^SurfaceKHR) -> Result +ProcCreateWin32SurfaceKHR :: #type proc "system" (instance: Instance, pCreateInfo: ^Win32SurfaceCreateInfoKHR, pAllocator: ^AllocationCallbacks, pSurface: ^SurfaceKHR) -> Result +ProcDebugReportMessageEXT :: #type proc "system" (instance: Instance, flags: DebugReportFlagsEXT, objectType: DebugReportObjectTypeEXT, object: u64, location: int, messageCode: i32, pLayerPrefix: cstring, pMessage: cstring) +ProcDestroyDebugReportCallbackEXT :: #type proc "system" (instance: Instance, callback: DebugReportCallbackEXT, pAllocator: ^AllocationCallbacks) +ProcDestroyDebugUtilsMessengerEXT :: #type proc "system" (instance: Instance, messenger: DebugUtilsMessengerEXT, pAllocator: ^AllocationCallbacks) +ProcDestroyInstance :: #type proc "system" (instance: Instance, pAllocator: ^AllocationCallbacks) +ProcDestroySurfaceKHR :: #type proc "system" (instance: Instance, surface: SurfaceKHR, pAllocator: ^AllocationCallbacks) +ProcEnumerateDeviceExtensionProperties :: #type proc "system" (physicalDevice: PhysicalDevice, pLayerName: cstring, pPropertyCount: ^u32, pProperties: [^]ExtensionProperties) -> Result +ProcEnumerateDeviceLayerProperties :: #type proc "system" (physicalDevice: PhysicalDevice, pPropertyCount: ^u32, pProperties: [^]LayerProperties) -> Result +ProcEnumeratePhysicalDeviceGroups :: #type proc "system" (instance: Instance, pPhysicalDeviceGroupCount: ^u32, pPhysicalDeviceGroupProperties: [^]PhysicalDeviceGroupProperties) -> Result +ProcEnumeratePhysicalDeviceGroupsKHR :: #type proc "system" (instance: Instance, pPhysicalDeviceGroupCount: ^u32, pPhysicalDeviceGroupProperties: [^]PhysicalDeviceGroupProperties) -> Result +ProcEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR :: #type proc "system" (physicalDevice: PhysicalDevice, queueFamilyIndex: u32, pCounterCount: ^u32, pCounters: [^]PerformanceCounterKHR, pCounterDescriptions: [^]PerformanceCounterDescriptionKHR) -> Result +ProcEnumeratePhysicalDevices :: #type proc "system" (instance: Instance, pPhysicalDeviceCount: ^u32, pPhysicalDevices: [^]PhysicalDevice) -> Result +ProcGetDisplayModeProperties2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, display: DisplayKHR, pPropertyCount: ^u32, pProperties: [^]DisplayModeProperties2KHR) -> Result +ProcGetDisplayModePropertiesKHR :: #type proc "system" (physicalDevice: PhysicalDevice, display: DisplayKHR, pPropertyCount: ^u32, pProperties: [^]DisplayModePropertiesKHR) -> Result +ProcGetDisplayPlaneCapabilities2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, pDisplayPlaneInfo: ^DisplayPlaneInfo2KHR, pCapabilities: [^]DisplayPlaneCapabilities2KHR) -> Result +ProcGetDisplayPlaneCapabilitiesKHR :: #type proc "system" (physicalDevice: PhysicalDevice, mode: DisplayModeKHR, planeIndex: u32, pCapabilities: [^]DisplayPlaneCapabilitiesKHR) -> Result +ProcGetDisplayPlaneSupportedDisplaysKHR :: #type proc "system" (physicalDevice: PhysicalDevice, planeIndex: u32, pDisplayCount: ^u32, pDisplays: [^]DisplayKHR) -> Result +ProcGetDrmDisplayEXT :: #type proc "system" (physicalDevice: PhysicalDevice, drmFd: i32, connectorId: u32, display: ^DisplayKHR) -> Result +ProcGetInstanceProcAddr :: #type proc "system" (instance: Instance, pName: cstring) -> ProcVoidFunction +ProcGetPhysicalDeviceCalibrateableTimeDomainsEXT :: #type proc "system" (physicalDevice: PhysicalDevice, pTimeDomainCount: ^u32, pTimeDomains: [^]TimeDomainEXT) -> Result +ProcGetPhysicalDeviceCooperativeMatrixPropertiesNV :: #type proc "system" (physicalDevice: PhysicalDevice, pPropertyCount: ^u32, pProperties: [^]CooperativeMatrixPropertiesNV) -> Result +ProcGetPhysicalDeviceDisplayPlaneProperties2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, pPropertyCount: ^u32, pProperties: [^]DisplayPlaneProperties2KHR) -> Result +ProcGetPhysicalDeviceDisplayPlanePropertiesKHR :: #type proc "system" (physicalDevice: PhysicalDevice, pPropertyCount: ^u32, pProperties: [^]DisplayPlanePropertiesKHR) -> Result +ProcGetPhysicalDeviceDisplayProperties2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, pPropertyCount: ^u32, pProperties: [^]DisplayProperties2KHR) -> Result +ProcGetPhysicalDeviceDisplayPropertiesKHR :: #type proc "system" (physicalDevice: PhysicalDevice, pPropertyCount: ^u32, pProperties: [^]DisplayPropertiesKHR) -> Result +ProcGetPhysicalDeviceExternalBufferProperties :: #type proc "system" (physicalDevice: PhysicalDevice, pExternalBufferInfo: ^PhysicalDeviceExternalBufferInfo, pExternalBufferProperties: [^]ExternalBufferProperties) +ProcGetPhysicalDeviceExternalBufferPropertiesKHR :: #type proc "system" (physicalDevice: PhysicalDevice, pExternalBufferInfo: ^PhysicalDeviceExternalBufferInfo, pExternalBufferProperties: [^]ExternalBufferProperties) +ProcGetPhysicalDeviceExternalFenceProperties :: #type proc "system" (physicalDevice: PhysicalDevice, pExternalFenceInfo: ^PhysicalDeviceExternalFenceInfo, pExternalFenceProperties: [^]ExternalFenceProperties) +ProcGetPhysicalDeviceExternalFencePropertiesKHR :: #type proc "system" (physicalDevice: PhysicalDevice, pExternalFenceInfo: ^PhysicalDeviceExternalFenceInfo, pExternalFenceProperties: [^]ExternalFenceProperties) +ProcGetPhysicalDeviceExternalImageFormatPropertiesNV :: #type proc "system" (physicalDevice: PhysicalDevice, format: Format, type: ImageType, tiling: ImageTiling, usage: ImageUsageFlags, flags: ImageCreateFlags, externalHandleType: ExternalMemoryHandleTypeFlagsNV, pExternalImageFormatProperties: [^]ExternalImageFormatPropertiesNV) -> Result +ProcGetPhysicalDeviceExternalSemaphoreProperties :: #type proc "system" (physicalDevice: PhysicalDevice, pExternalSemaphoreInfo: ^PhysicalDeviceExternalSemaphoreInfo, pExternalSemaphoreProperties: [^]ExternalSemaphoreProperties) +ProcGetPhysicalDeviceExternalSemaphorePropertiesKHR :: #type proc "system" (physicalDevice: PhysicalDevice, pExternalSemaphoreInfo: ^PhysicalDeviceExternalSemaphoreInfo, pExternalSemaphoreProperties: [^]ExternalSemaphoreProperties) +ProcGetPhysicalDeviceFeatures :: #type proc "system" (physicalDevice: PhysicalDevice, pFeatures: [^]PhysicalDeviceFeatures) +ProcGetPhysicalDeviceFeatures2 :: #type proc "system" (physicalDevice: PhysicalDevice, pFeatures: [^]PhysicalDeviceFeatures2) +ProcGetPhysicalDeviceFeatures2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, pFeatures: [^]PhysicalDeviceFeatures2) +ProcGetPhysicalDeviceFormatProperties :: #type proc "system" (physicalDevice: PhysicalDevice, format: Format, pFormatProperties: [^]FormatProperties) +ProcGetPhysicalDeviceFormatProperties2 :: #type proc "system" (physicalDevice: PhysicalDevice, format: Format, pFormatProperties: [^]FormatProperties2) +ProcGetPhysicalDeviceFormatProperties2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, format: Format, pFormatProperties: [^]FormatProperties2) +ProcGetPhysicalDeviceFragmentShadingRatesKHR :: #type proc "system" (physicalDevice: PhysicalDevice, pFragmentShadingRateCount: ^u32, pFragmentShadingRates: [^]PhysicalDeviceFragmentShadingRateKHR) -> Result +ProcGetPhysicalDeviceImageFormatProperties :: #type proc "system" (physicalDevice: PhysicalDevice, format: Format, type: ImageType, tiling: ImageTiling, usage: ImageUsageFlags, flags: ImageCreateFlags, pImageFormatProperties: [^]ImageFormatProperties) -> Result +ProcGetPhysicalDeviceImageFormatProperties2 :: #type proc "system" (physicalDevice: PhysicalDevice, pImageFormatInfo: ^PhysicalDeviceImageFormatInfo2, pImageFormatProperties: [^]ImageFormatProperties2) -> Result +ProcGetPhysicalDeviceImageFormatProperties2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, pImageFormatInfo: ^PhysicalDeviceImageFormatInfo2, pImageFormatProperties: [^]ImageFormatProperties2) -> Result +ProcGetPhysicalDeviceMemoryProperties :: #type proc "system" (physicalDevice: PhysicalDevice, pMemoryProperties: [^]PhysicalDeviceMemoryProperties) +ProcGetPhysicalDeviceMemoryProperties2 :: #type proc "system" (physicalDevice: PhysicalDevice, pMemoryProperties: [^]PhysicalDeviceMemoryProperties2) +ProcGetPhysicalDeviceMemoryProperties2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, pMemoryProperties: [^]PhysicalDeviceMemoryProperties2) +ProcGetPhysicalDeviceMultisamplePropertiesEXT :: #type proc "system" (physicalDevice: PhysicalDevice, samples: SampleCountFlags, pMultisampleProperties: [^]MultisamplePropertiesEXT) +ProcGetPhysicalDevicePresentRectanglesKHR :: #type proc "system" (physicalDevice: PhysicalDevice, surface: SurfaceKHR, pRectCount: ^u32, pRects: [^]Rect2D) -> Result +ProcGetPhysicalDeviceProperties :: #type proc "system" (physicalDevice: PhysicalDevice, pProperties: [^]PhysicalDeviceProperties) +ProcGetPhysicalDeviceProperties2 :: #type proc "system" (physicalDevice: PhysicalDevice, pProperties: [^]PhysicalDeviceProperties2) +ProcGetPhysicalDeviceProperties2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, pProperties: [^]PhysicalDeviceProperties2) +ProcGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR :: #type proc "system" (physicalDevice: PhysicalDevice, pPerformanceQueryCreateInfo: ^QueryPoolPerformanceCreateInfoKHR, pNumPasses: [^]u32) +ProcGetPhysicalDeviceQueueFamilyProperties :: #type proc "system" (physicalDevice: PhysicalDevice, pQueueFamilyPropertyCount: ^u32, pQueueFamilyProperties: [^]QueueFamilyProperties) +ProcGetPhysicalDeviceQueueFamilyProperties2 :: #type proc "system" (physicalDevice: PhysicalDevice, pQueueFamilyPropertyCount: ^u32, pQueueFamilyProperties: [^]QueueFamilyProperties2) +ProcGetPhysicalDeviceQueueFamilyProperties2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, pQueueFamilyPropertyCount: ^u32, pQueueFamilyProperties: [^]QueueFamilyProperties2) +ProcGetPhysicalDeviceSparseImageFormatProperties :: #type proc "system" (physicalDevice: PhysicalDevice, format: Format, type: ImageType, samples: SampleCountFlags, usage: ImageUsageFlags, tiling: ImageTiling, pPropertyCount: ^u32, pProperties: [^]SparseImageFormatProperties) +ProcGetPhysicalDeviceSparseImageFormatProperties2 :: #type proc "system" (physicalDevice: PhysicalDevice, pFormatInfo: ^PhysicalDeviceSparseImageFormatInfo2, pPropertyCount: ^u32, pProperties: [^]SparseImageFormatProperties2) +ProcGetPhysicalDeviceSparseImageFormatProperties2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, pFormatInfo: ^PhysicalDeviceSparseImageFormatInfo2, pPropertyCount: ^u32, pProperties: [^]SparseImageFormatProperties2) +ProcGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV :: #type proc "system" (physicalDevice: PhysicalDevice, pCombinationCount: ^u32, pCombinations: [^]FramebufferMixedSamplesCombinationNV) -> Result +ProcGetPhysicalDeviceSurfaceCapabilities2EXT :: #type proc "system" (physicalDevice: PhysicalDevice, surface: SurfaceKHR, pSurfaceCapabilities: [^]SurfaceCapabilities2EXT) -> Result +ProcGetPhysicalDeviceSurfaceCapabilities2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, pSurfaceInfo: ^PhysicalDeviceSurfaceInfo2KHR, pSurfaceCapabilities: [^]SurfaceCapabilities2KHR) -> Result +ProcGetPhysicalDeviceSurfaceCapabilitiesKHR :: #type proc "system" (physicalDevice: PhysicalDevice, surface: SurfaceKHR, pSurfaceCapabilities: [^]SurfaceCapabilitiesKHR) -> Result +ProcGetPhysicalDeviceSurfaceFormats2KHR :: #type proc "system" (physicalDevice: PhysicalDevice, pSurfaceInfo: ^PhysicalDeviceSurfaceInfo2KHR, pSurfaceFormatCount: ^u32, pSurfaceFormats: [^]SurfaceFormat2KHR) -> Result +ProcGetPhysicalDeviceSurfaceFormatsKHR :: #type proc "system" (physicalDevice: PhysicalDevice, surface: SurfaceKHR, pSurfaceFormatCount: ^u32, pSurfaceFormats: [^]SurfaceFormatKHR) -> Result +ProcGetPhysicalDeviceSurfacePresentModes2EXT :: #type proc "system" (physicalDevice: PhysicalDevice, pSurfaceInfo: ^PhysicalDeviceSurfaceInfo2KHR, pPresentModeCount: ^u32, pPresentModes: [^]PresentModeKHR) -> Result +ProcGetPhysicalDeviceSurfacePresentModesKHR :: #type proc "system" (physicalDevice: PhysicalDevice, surface: SurfaceKHR, pPresentModeCount: ^u32, pPresentModes: [^]PresentModeKHR) -> Result +ProcGetPhysicalDeviceSurfaceSupportKHR :: #type proc "system" (physicalDevice: PhysicalDevice, queueFamilyIndex: u32, surface: SurfaceKHR, pSupported: ^b32) -> Result +ProcGetPhysicalDeviceToolProperties :: #type proc "system" (physicalDevice: PhysicalDevice, pToolCount: ^u32, pToolProperties: [^]PhysicalDeviceToolProperties) -> Result +ProcGetPhysicalDeviceToolPropertiesEXT :: #type proc "system" (physicalDevice: PhysicalDevice, pToolCount: ^u32, pToolProperties: [^]PhysicalDeviceToolProperties) -> Result +ProcGetPhysicalDeviceWaylandPresentationSupportKHR :: #type proc "system" (physicalDevice: PhysicalDevice, queueFamilyIndex: u32, display: ^wl_display) -> b32 +ProcGetPhysicalDeviceWin32PresentationSupportKHR :: #type proc "system" (physicalDevice: PhysicalDevice, queueFamilyIndex: u32) -> b32 +ProcGetWinrtDisplayNV :: #type proc "system" (physicalDevice: PhysicalDevice, deviceRelativeId: u32, pDisplay: ^DisplayKHR) -> Result +ProcReleaseDisplayEXT :: #type proc "system" (physicalDevice: PhysicalDevice, display: DisplayKHR) -> Result +ProcSubmitDebugUtilsMessageEXT :: #type proc "system" (instance: Instance, messageSeverity: DebugUtilsMessageSeverityFlagsEXT, messageTypes: DebugUtilsMessageTypeFlagsEXT, pCallbackData: ^DebugUtilsMessengerCallbackDataEXT) + +// Device Procedure Types +ProcAcquireFullScreenExclusiveModeEXT :: #type proc "system" (device: Device, swapchain: SwapchainKHR) -> Result +ProcAcquireNextImage2KHR :: #type proc "system" (device: Device, pAcquireInfo: ^AcquireNextImageInfoKHR, pImageIndex: ^u32) -> Result +ProcAcquireNextImageKHR :: #type proc "system" (device: Device, swapchain: SwapchainKHR, timeout: u64, semaphore: Semaphore, fence: Fence, pImageIndex: ^u32) -> Result +ProcAcquirePerformanceConfigurationINTEL :: #type proc "system" (device: Device, pAcquireInfo: ^PerformanceConfigurationAcquireInfoINTEL, pConfiguration: ^PerformanceConfigurationINTEL) -> Result +ProcAcquireProfilingLockKHR :: #type proc "system" (device: Device, pInfo: ^AcquireProfilingLockInfoKHR) -> Result +ProcAllocateCommandBuffers :: #type proc "system" (device: Device, pAllocateInfo: ^CommandBufferAllocateInfo, pCommandBuffers: [^]CommandBuffer) -> Result +ProcAllocateDescriptorSets :: #type proc "system" (device: Device, pAllocateInfo: ^DescriptorSetAllocateInfo, pDescriptorSets: [^]DescriptorSet) -> Result +ProcAllocateMemory :: #type proc "system" (device: Device, pAllocateInfo: ^MemoryAllocateInfo, pAllocator: ^AllocationCallbacks, pMemory: ^DeviceMemory) -> Result +ProcBeginCommandBuffer :: #type proc "system" (commandBuffer: CommandBuffer, pBeginInfo: ^CommandBufferBeginInfo) -> Result +ProcBindAccelerationStructureMemoryNV :: #type proc "system" (device: Device, bindInfoCount: u32, pBindInfos: [^]BindAccelerationStructureMemoryInfoNV) -> Result +ProcBindBufferMemory :: #type proc "system" (device: Device, buffer: Buffer, memory: DeviceMemory, memoryOffset: DeviceSize) -> Result +ProcBindBufferMemory2 :: #type proc "system" (device: Device, bindInfoCount: u32, pBindInfos: [^]BindBufferMemoryInfo) -> Result +ProcBindBufferMemory2KHR :: #type proc "system" (device: Device, bindInfoCount: u32, pBindInfos: [^]BindBufferMemoryInfo) -> Result +ProcBindImageMemory :: #type proc "system" (device: Device, image: Image, memory: DeviceMemory, memoryOffset: DeviceSize) -> Result +ProcBindImageMemory2 :: #type proc "system" (device: Device, bindInfoCount: u32, pBindInfos: [^]BindImageMemoryInfo) -> Result +ProcBindImageMemory2KHR :: #type proc "system" (device: Device, bindInfoCount: u32, pBindInfos: [^]BindImageMemoryInfo) -> Result +ProcBuildAccelerationStructuresKHR :: #type proc "system" (device: Device, deferredOperation: DeferredOperationKHR, infoCount: u32, pInfos: [^]AccelerationStructureBuildGeometryInfoKHR, ppBuildRangeInfos: ^[^]AccelerationStructureBuildRangeInfoKHR) -> Result +ProcCmdBeginConditionalRenderingEXT :: #type proc "system" (commandBuffer: CommandBuffer, pConditionalRenderingBegin: ^ConditionalRenderingBeginInfoEXT) +ProcCmdBeginDebugUtilsLabelEXT :: #type proc "system" (commandBuffer: CommandBuffer, pLabelInfo: ^DebugUtilsLabelEXT) +ProcCmdBeginQuery :: #type proc "system" (commandBuffer: CommandBuffer, queryPool: QueryPool, query: u32, flags: QueryControlFlags) +ProcCmdBeginQueryIndexedEXT :: #type proc "system" (commandBuffer: CommandBuffer, queryPool: QueryPool, query: u32, flags: QueryControlFlags, index: u32) +ProcCmdBeginRenderPass :: #type proc "system" (commandBuffer: CommandBuffer, pRenderPassBegin: ^RenderPassBeginInfo, contents: SubpassContents) +ProcCmdBeginRenderPass2 :: #type proc "system" (commandBuffer: CommandBuffer, pRenderPassBegin: ^RenderPassBeginInfo, pSubpassBeginInfo: ^SubpassBeginInfo) +ProcCmdBeginRenderPass2KHR :: #type proc "system" (commandBuffer: CommandBuffer, pRenderPassBegin: ^RenderPassBeginInfo, pSubpassBeginInfo: ^SubpassBeginInfo) +ProcCmdBeginRendering :: #type proc "system" (commandBuffer: CommandBuffer, pRenderingInfo: ^RenderingInfo) +ProcCmdBeginRenderingKHR :: #type proc "system" (commandBuffer: CommandBuffer, pRenderingInfo: ^RenderingInfo) +ProcCmdBeginTransformFeedbackEXT :: #type proc "system" (commandBuffer: CommandBuffer, firstCounterBuffer: u32, counterBufferCount: u32, pCounterBuffers: [^]Buffer, pCounterBufferOffsets: [^]DeviceSize) +ProcCmdBindDescriptorSets :: #type proc "system" (commandBuffer: CommandBuffer, pipelineBindPoint: PipelineBindPoint, layout: PipelineLayout, firstSet: u32, descriptorSetCount: u32, pDescriptorSets: [^]DescriptorSet, dynamicOffsetCount: u32, pDynamicOffsets: [^]u32) +ProcCmdBindIndexBuffer :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize, indexType: IndexType) +ProcCmdBindInvocationMaskHUAWEI :: #type proc "system" (commandBuffer: CommandBuffer, imageView: ImageView, imageLayout: ImageLayout) +ProcCmdBindPipeline :: #type proc "system" (commandBuffer: CommandBuffer, pipelineBindPoint: PipelineBindPoint, pipeline: Pipeline) +ProcCmdBindPipelineShaderGroupNV :: #type proc "system" (commandBuffer: CommandBuffer, pipelineBindPoint: PipelineBindPoint, pipeline: Pipeline, groupIndex: u32) +ProcCmdBindShadingRateImageNV :: #type proc "system" (commandBuffer: CommandBuffer, imageView: ImageView, imageLayout: ImageLayout) +ProcCmdBindTransformFeedbackBuffersEXT :: #type proc "system" (commandBuffer: CommandBuffer, firstBinding: u32, bindingCount: u32, pBuffers: [^]Buffer, pOffsets: [^]DeviceSize, pSizes: [^]DeviceSize) +ProcCmdBindVertexBuffers :: #type proc "system" (commandBuffer: CommandBuffer, firstBinding: u32, bindingCount: u32, pBuffers: [^]Buffer, pOffsets: [^]DeviceSize) +ProcCmdBindVertexBuffers2 :: #type proc "system" (commandBuffer: CommandBuffer, firstBinding: u32, bindingCount: u32, pBuffers: [^]Buffer, pOffsets: [^]DeviceSize, pSizes: [^]DeviceSize, pStrides: [^]DeviceSize) +ProcCmdBindVertexBuffers2EXT :: #type proc "system" (commandBuffer: CommandBuffer, firstBinding: u32, bindingCount: u32, pBuffers: [^]Buffer, pOffsets: [^]DeviceSize, pSizes: [^]DeviceSize, pStrides: [^]DeviceSize) +ProcCmdBlitImage :: #type proc "system" (commandBuffer: CommandBuffer, srcImage: Image, srcImageLayout: ImageLayout, dstImage: Image, dstImageLayout: ImageLayout, regionCount: u32, pRegions: [^]ImageBlit, filter: Filter) +ProcCmdBlitImage2 :: #type proc "system" (commandBuffer: CommandBuffer, pBlitImageInfo: ^BlitImageInfo2) +ProcCmdBlitImage2KHR :: #type proc "system" (commandBuffer: CommandBuffer, pBlitImageInfo: ^BlitImageInfo2) +ProcCmdBuildAccelerationStructureNV :: #type proc "system" (commandBuffer: CommandBuffer, pInfo: ^AccelerationStructureInfoNV, instanceData: Buffer, instanceOffset: DeviceSize, update: b32, dst: AccelerationStructureNV, src: AccelerationStructureNV, scratch: Buffer, scratchOffset: DeviceSize) +ProcCmdBuildAccelerationStructuresIndirectKHR :: #type proc "system" (commandBuffer: CommandBuffer, infoCount: u32, pInfos: [^]AccelerationStructureBuildGeometryInfoKHR, pIndirectDeviceAddresses: [^]DeviceAddress, pIndirectStrides: [^]u32, ppMaxPrimitiveCounts: ^[^]u32) +ProcCmdBuildAccelerationStructuresKHR :: #type proc "system" (commandBuffer: CommandBuffer, infoCount: u32, pInfos: [^]AccelerationStructureBuildGeometryInfoKHR, ppBuildRangeInfos: ^[^]AccelerationStructureBuildRangeInfoKHR) +ProcCmdClearAttachments :: #type proc "system" (commandBuffer: CommandBuffer, attachmentCount: u32, pAttachments: [^]ClearAttachment, rectCount: u32, pRects: [^]ClearRect) +ProcCmdClearColorImage :: #type proc "system" (commandBuffer: CommandBuffer, image: Image, imageLayout: ImageLayout, pColor: ^ClearColorValue, rangeCount: u32, pRanges: [^]ImageSubresourceRange) +ProcCmdClearDepthStencilImage :: #type proc "system" (commandBuffer: CommandBuffer, image: Image, imageLayout: ImageLayout, pDepthStencil: ^ClearDepthStencilValue, rangeCount: u32, pRanges: [^]ImageSubresourceRange) +ProcCmdCopyAccelerationStructureKHR :: #type proc "system" (commandBuffer: CommandBuffer, pInfo: ^CopyAccelerationStructureInfoKHR) +ProcCmdCopyAccelerationStructureNV :: #type proc "system" (commandBuffer: CommandBuffer, dst: AccelerationStructureNV, src: AccelerationStructureNV, mode: CopyAccelerationStructureModeKHR) +ProcCmdCopyAccelerationStructureToMemoryKHR :: #type proc "system" (commandBuffer: CommandBuffer, pInfo: ^CopyAccelerationStructureToMemoryInfoKHR) +ProcCmdCopyBuffer :: #type proc "system" (commandBuffer: CommandBuffer, srcBuffer: Buffer, dstBuffer: Buffer, regionCount: u32, pRegions: [^]BufferCopy) +ProcCmdCopyBuffer2 :: #type proc "system" (commandBuffer: CommandBuffer, pCopyBufferInfo: ^CopyBufferInfo2) +ProcCmdCopyBuffer2KHR :: #type proc "system" (commandBuffer: CommandBuffer, pCopyBufferInfo: ^CopyBufferInfo2) +ProcCmdCopyBufferToImage :: #type proc "system" (commandBuffer: CommandBuffer, srcBuffer: Buffer, dstImage: Image, dstImageLayout: ImageLayout, regionCount: u32, pRegions: [^]BufferImageCopy) +ProcCmdCopyBufferToImage2 :: #type proc "system" (commandBuffer: CommandBuffer, pCopyBufferToImageInfo: ^CopyBufferToImageInfo2) +ProcCmdCopyBufferToImage2KHR :: #type proc "system" (commandBuffer: CommandBuffer, pCopyBufferToImageInfo: ^CopyBufferToImageInfo2) +ProcCmdCopyImage :: #type proc "system" (commandBuffer: CommandBuffer, srcImage: Image, srcImageLayout: ImageLayout, dstImage: Image, dstImageLayout: ImageLayout, regionCount: u32, pRegions: [^]ImageCopy) +ProcCmdCopyImage2 :: #type proc "system" (commandBuffer: CommandBuffer, pCopyImageInfo: ^CopyImageInfo2) +ProcCmdCopyImage2KHR :: #type proc "system" (commandBuffer: CommandBuffer, pCopyImageInfo: ^CopyImageInfo2) +ProcCmdCopyImageToBuffer :: #type proc "system" (commandBuffer: CommandBuffer, srcImage: Image, srcImageLayout: ImageLayout, dstBuffer: Buffer, regionCount: u32, pRegions: [^]BufferImageCopy) +ProcCmdCopyImageToBuffer2 :: #type proc "system" (commandBuffer: CommandBuffer, pCopyImageToBufferInfo: ^CopyImageToBufferInfo2) +ProcCmdCopyImageToBuffer2KHR :: #type proc "system" (commandBuffer: CommandBuffer, pCopyImageToBufferInfo: ^CopyImageToBufferInfo2) +ProcCmdCopyMemoryToAccelerationStructureKHR :: #type proc "system" (commandBuffer: CommandBuffer, pInfo: ^CopyMemoryToAccelerationStructureInfoKHR) +ProcCmdCopyQueryPoolResults :: #type proc "system" (commandBuffer: CommandBuffer, queryPool: QueryPool, firstQuery: u32, queryCount: u32, dstBuffer: Buffer, dstOffset: DeviceSize, stride: DeviceSize, flags: QueryResultFlags) +ProcCmdCuLaunchKernelNVX :: #type proc "system" (commandBuffer: CommandBuffer, pLaunchInfo: ^CuLaunchInfoNVX) +ProcCmdDebugMarkerBeginEXT :: #type proc "system" (commandBuffer: CommandBuffer, pMarkerInfo: ^DebugMarkerMarkerInfoEXT) +ProcCmdDebugMarkerEndEXT :: #type proc "system" (commandBuffer: CommandBuffer) +ProcCmdDebugMarkerInsertEXT :: #type proc "system" (commandBuffer: CommandBuffer, pMarkerInfo: ^DebugMarkerMarkerInfoEXT) +ProcCmdDispatch :: #type proc "system" (commandBuffer: CommandBuffer, groupCountX: u32, groupCountY: u32, groupCountZ: u32) +ProcCmdDispatchBase :: #type proc "system" (commandBuffer: CommandBuffer, baseGroupX: u32, baseGroupY: u32, baseGroupZ: u32, groupCountX: u32, groupCountY: u32, groupCountZ: u32) +ProcCmdDispatchBaseKHR :: #type proc "system" (commandBuffer: CommandBuffer, baseGroupX: u32, baseGroupY: u32, baseGroupZ: u32, groupCountX: u32, groupCountY: u32, groupCountZ: u32) +ProcCmdDispatchIndirect :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize) +ProcCmdDraw :: #type proc "system" (commandBuffer: CommandBuffer, vertexCount: u32, instanceCount: u32, firstVertex: u32, firstInstance: u32) +ProcCmdDrawIndexed :: #type proc "system" (commandBuffer: CommandBuffer, indexCount: u32, instanceCount: u32, firstIndex: u32, vertexOffset: i32, firstInstance: u32) +ProcCmdDrawIndexedIndirect :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize, drawCount: u32, stride: u32) +ProcCmdDrawIndexedIndirectCount :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize, countBuffer: Buffer, countBufferOffset: DeviceSize, maxDrawCount: u32, stride: u32) +ProcCmdDrawIndexedIndirectCountAMD :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize, countBuffer: Buffer, countBufferOffset: DeviceSize, maxDrawCount: u32, stride: u32) +ProcCmdDrawIndexedIndirectCountKHR :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize, countBuffer: Buffer, countBufferOffset: DeviceSize, maxDrawCount: u32, stride: u32) +ProcCmdDrawIndirect :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize, drawCount: u32, stride: u32) +ProcCmdDrawIndirectByteCountEXT :: #type proc "system" (commandBuffer: CommandBuffer, instanceCount: u32, firstInstance: u32, counterBuffer: Buffer, counterBufferOffset: DeviceSize, counterOffset: u32, vertexStride: u32) +ProcCmdDrawIndirectCount :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize, countBuffer: Buffer, countBufferOffset: DeviceSize, maxDrawCount: u32, stride: u32) +ProcCmdDrawIndirectCountAMD :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize, countBuffer: Buffer, countBufferOffset: DeviceSize, maxDrawCount: u32, stride: u32) +ProcCmdDrawIndirectCountKHR :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize, countBuffer: Buffer, countBufferOffset: DeviceSize, maxDrawCount: u32, stride: u32) +ProcCmdDrawMeshTasksIndirectCountNV :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize, countBuffer: Buffer, countBufferOffset: DeviceSize, maxDrawCount: u32, stride: u32) +ProcCmdDrawMeshTasksIndirectNV :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize, drawCount: u32, stride: u32) +ProcCmdDrawMeshTasksNV :: #type proc "system" (commandBuffer: CommandBuffer, taskCount: u32, firstTask: u32) +ProcCmdDrawMultiEXT :: #type proc "system" (commandBuffer: CommandBuffer, drawCount: u32, pVertexInfo: ^MultiDrawInfoEXT, instanceCount: u32, firstInstance: u32, stride: u32) +ProcCmdDrawMultiIndexedEXT :: #type proc "system" (commandBuffer: CommandBuffer, drawCount: u32, pIndexInfo: ^MultiDrawIndexedInfoEXT, instanceCount: u32, firstInstance: u32, stride: u32, pVertexOffset: ^i32) +ProcCmdEndConditionalRenderingEXT :: #type proc "system" (commandBuffer: CommandBuffer) +ProcCmdEndDebugUtilsLabelEXT :: #type proc "system" (commandBuffer: CommandBuffer) +ProcCmdEndQuery :: #type proc "system" (commandBuffer: CommandBuffer, queryPool: QueryPool, query: u32) +ProcCmdEndQueryIndexedEXT :: #type proc "system" (commandBuffer: CommandBuffer, queryPool: QueryPool, query: u32, index: u32) +ProcCmdEndRenderPass :: #type proc "system" (commandBuffer: CommandBuffer) +ProcCmdEndRenderPass2 :: #type proc "system" (commandBuffer: CommandBuffer, pSubpassEndInfo: ^SubpassEndInfo) +ProcCmdEndRenderPass2KHR :: #type proc "system" (commandBuffer: CommandBuffer, pSubpassEndInfo: ^SubpassEndInfo) +ProcCmdEndRendering :: #type proc "system" (commandBuffer: CommandBuffer) +ProcCmdEndRenderingKHR :: #type proc "system" (commandBuffer: CommandBuffer) +ProcCmdEndTransformFeedbackEXT :: #type proc "system" (commandBuffer: CommandBuffer, firstCounterBuffer: u32, counterBufferCount: u32, pCounterBuffers: [^]Buffer, pCounterBufferOffsets: [^]DeviceSize) +ProcCmdExecuteCommands :: #type proc "system" (commandBuffer: CommandBuffer, commandBufferCount: u32, pCommandBuffers: [^]CommandBuffer) +ProcCmdExecuteGeneratedCommandsNV :: #type proc "system" (commandBuffer: CommandBuffer, isPreprocessed: b32, pGeneratedCommandsInfo: ^GeneratedCommandsInfoNV) +ProcCmdFillBuffer :: #type proc "system" (commandBuffer: CommandBuffer, dstBuffer: Buffer, dstOffset: DeviceSize, size: DeviceSize, data: u32) +ProcCmdInsertDebugUtilsLabelEXT :: #type proc "system" (commandBuffer: CommandBuffer, pLabelInfo: ^DebugUtilsLabelEXT) +ProcCmdNextSubpass :: #type proc "system" (commandBuffer: CommandBuffer, contents: SubpassContents) +ProcCmdNextSubpass2 :: #type proc "system" (commandBuffer: CommandBuffer, pSubpassBeginInfo: ^SubpassBeginInfo, pSubpassEndInfo: ^SubpassEndInfo) +ProcCmdNextSubpass2KHR :: #type proc "system" (commandBuffer: CommandBuffer, pSubpassBeginInfo: ^SubpassBeginInfo, pSubpassEndInfo: ^SubpassEndInfo) +ProcCmdPipelineBarrier :: #type proc "system" (commandBuffer: CommandBuffer, srcStageMask: PipelineStageFlags, dstStageMask: PipelineStageFlags, dependencyFlags: DependencyFlags, memoryBarrierCount: u32, pMemoryBarriers: [^]MemoryBarrier, bufferMemoryBarrierCount: u32, pBufferMemoryBarriers: [^]BufferMemoryBarrier, imageMemoryBarrierCount: u32, pImageMemoryBarriers: [^]ImageMemoryBarrier) +ProcCmdPipelineBarrier2 :: #type proc "system" (commandBuffer: CommandBuffer, pDependencyInfo: ^DependencyInfo) +ProcCmdPipelineBarrier2KHR :: #type proc "system" (commandBuffer: CommandBuffer, pDependencyInfo: ^DependencyInfo) +ProcCmdPreprocessGeneratedCommandsNV :: #type proc "system" (commandBuffer: CommandBuffer, pGeneratedCommandsInfo: ^GeneratedCommandsInfoNV) +ProcCmdPushConstants :: #type proc "system" (commandBuffer: CommandBuffer, layout: PipelineLayout, stageFlags: ShaderStageFlags, offset: u32, size: u32, pValues: rawptr) +ProcCmdPushDescriptorSetKHR :: #type proc "system" (commandBuffer: CommandBuffer, pipelineBindPoint: PipelineBindPoint, layout: PipelineLayout, set: u32, descriptorWriteCount: u32, pDescriptorWrites: [^]WriteDescriptorSet) +ProcCmdPushDescriptorSetWithTemplateKHR :: #type proc "system" (commandBuffer: CommandBuffer, descriptorUpdateTemplate: DescriptorUpdateTemplate, layout: PipelineLayout, set: u32, pData: rawptr) +ProcCmdResetEvent :: #type proc "system" (commandBuffer: CommandBuffer, event: Event, stageMask: PipelineStageFlags) +ProcCmdResetEvent2 :: #type proc "system" (commandBuffer: CommandBuffer, event: Event, stageMask: PipelineStageFlags2) +ProcCmdResetEvent2KHR :: #type proc "system" (commandBuffer: CommandBuffer, event: Event, stageMask: PipelineStageFlags2) +ProcCmdResetQueryPool :: #type proc "system" (commandBuffer: CommandBuffer, queryPool: QueryPool, firstQuery: u32, queryCount: u32) +ProcCmdResolveImage :: #type proc "system" (commandBuffer: CommandBuffer, srcImage: Image, srcImageLayout: ImageLayout, dstImage: Image, dstImageLayout: ImageLayout, regionCount: u32, pRegions: [^]ImageResolve) +ProcCmdResolveImage2 :: #type proc "system" (commandBuffer: CommandBuffer, pResolveImageInfo: ^ResolveImageInfo2) +ProcCmdResolveImage2KHR :: #type proc "system" (commandBuffer: CommandBuffer, pResolveImageInfo: ^ResolveImageInfo2) +ProcCmdSetBlendConstants :: #type proc "system" (commandBuffer: CommandBuffer) +ProcCmdSetCheckpointNV :: #type proc "system" (commandBuffer: CommandBuffer, pCheckpointMarker: rawptr) +ProcCmdSetCoarseSampleOrderNV :: #type proc "system" (commandBuffer: CommandBuffer, sampleOrderType: CoarseSampleOrderTypeNV, customSampleOrderCount: u32, pCustomSampleOrders: [^]CoarseSampleOrderCustomNV) +ProcCmdSetCullMode :: #type proc "system" (commandBuffer: CommandBuffer, cullMode: CullModeFlags) +ProcCmdSetCullModeEXT :: #type proc "system" (commandBuffer: CommandBuffer, cullMode: CullModeFlags) +ProcCmdSetDepthBias :: #type proc "system" (commandBuffer: CommandBuffer, depthBiasConstantFactor: f32, depthBiasClamp: f32, depthBiasSlopeFactor: f32) +ProcCmdSetDepthBiasEnable :: #type proc "system" (commandBuffer: CommandBuffer, depthBiasEnable: b32) +ProcCmdSetDepthBiasEnableEXT :: #type proc "system" (commandBuffer: CommandBuffer, depthBiasEnable: b32) +ProcCmdSetDepthBounds :: #type proc "system" (commandBuffer: CommandBuffer, minDepthBounds: f32, maxDepthBounds: f32) +ProcCmdSetDepthBoundsTestEnable :: #type proc "system" (commandBuffer: CommandBuffer, depthBoundsTestEnable: b32) +ProcCmdSetDepthBoundsTestEnableEXT :: #type proc "system" (commandBuffer: CommandBuffer, depthBoundsTestEnable: b32) +ProcCmdSetDepthCompareOp :: #type proc "system" (commandBuffer: CommandBuffer, depthCompareOp: CompareOp) +ProcCmdSetDepthCompareOpEXT :: #type proc "system" (commandBuffer: CommandBuffer, depthCompareOp: CompareOp) +ProcCmdSetDepthTestEnable :: #type proc "system" (commandBuffer: CommandBuffer, depthTestEnable: b32) +ProcCmdSetDepthTestEnableEXT :: #type proc "system" (commandBuffer: CommandBuffer, depthTestEnable: b32) +ProcCmdSetDepthWriteEnable :: #type proc "system" (commandBuffer: CommandBuffer, depthWriteEnable: b32) +ProcCmdSetDepthWriteEnableEXT :: #type proc "system" (commandBuffer: CommandBuffer, depthWriteEnable: b32) +ProcCmdSetDeviceMask :: #type proc "system" (commandBuffer: CommandBuffer, deviceMask: u32) +ProcCmdSetDeviceMaskKHR :: #type proc "system" (commandBuffer: CommandBuffer, deviceMask: u32) +ProcCmdSetDiscardRectangleEXT :: #type proc "system" (commandBuffer: CommandBuffer, firstDiscardRectangle: u32, discardRectangleCount: u32, pDiscardRectangles: [^]Rect2D) +ProcCmdSetEvent :: #type proc "system" (commandBuffer: CommandBuffer, event: Event, stageMask: PipelineStageFlags) +ProcCmdSetEvent2 :: #type proc "system" (commandBuffer: CommandBuffer, event: Event, pDependencyInfo: ^DependencyInfo) +ProcCmdSetEvent2KHR :: #type proc "system" (commandBuffer: CommandBuffer, event: Event, pDependencyInfo: ^DependencyInfo) +ProcCmdSetExclusiveScissorNV :: #type proc "system" (commandBuffer: CommandBuffer, firstExclusiveScissor: u32, exclusiveScissorCount: u32, pExclusiveScissors: [^]Rect2D) +ProcCmdSetFragmentShadingRateEnumNV :: #type proc "system" (commandBuffer: CommandBuffer, shadingRate: FragmentShadingRateNV) +ProcCmdSetFragmentShadingRateKHR :: #type proc "system" (commandBuffer: CommandBuffer, pFragmentSize: ^Extent2D) +ProcCmdSetFrontFace :: #type proc "system" (commandBuffer: CommandBuffer, frontFace: FrontFace) +ProcCmdSetFrontFaceEXT :: #type proc "system" (commandBuffer: CommandBuffer, frontFace: FrontFace) +ProcCmdSetLineStippleEXT :: #type proc "system" (commandBuffer: CommandBuffer, lineStippleFactor: u32, lineStipplePattern: u16) +ProcCmdSetLineWidth :: #type proc "system" (commandBuffer: CommandBuffer, lineWidth: f32) +ProcCmdSetLogicOpEXT :: #type proc "system" (commandBuffer: CommandBuffer, logicOp: LogicOp) +ProcCmdSetPatchControlPointsEXT :: #type proc "system" (commandBuffer: CommandBuffer, patchControlPoints: u32) +ProcCmdSetPerformanceMarkerINTEL :: #type proc "system" (commandBuffer: CommandBuffer, pMarkerInfo: ^PerformanceMarkerInfoINTEL) -> Result +ProcCmdSetPerformanceOverrideINTEL :: #type proc "system" (commandBuffer: CommandBuffer, pOverrideInfo: ^PerformanceOverrideInfoINTEL) -> Result +ProcCmdSetPerformanceStreamMarkerINTEL :: #type proc "system" (commandBuffer: CommandBuffer, pMarkerInfo: ^PerformanceStreamMarkerInfoINTEL) -> Result +ProcCmdSetPrimitiveRestartEnable :: #type proc "system" (commandBuffer: CommandBuffer, primitiveRestartEnable: b32) +ProcCmdSetPrimitiveRestartEnableEXT :: #type proc "system" (commandBuffer: CommandBuffer, primitiveRestartEnable: b32) +ProcCmdSetPrimitiveTopology :: #type proc "system" (commandBuffer: CommandBuffer, primitiveTopology: PrimitiveTopology) +ProcCmdSetPrimitiveTopologyEXT :: #type proc "system" (commandBuffer: CommandBuffer, primitiveTopology: PrimitiveTopology) +ProcCmdSetRasterizerDiscardEnable :: #type proc "system" (commandBuffer: CommandBuffer, rasterizerDiscardEnable: b32) +ProcCmdSetRasterizerDiscardEnableEXT :: #type proc "system" (commandBuffer: CommandBuffer, rasterizerDiscardEnable: b32) +ProcCmdSetRayTracingPipelineStackSizeKHR :: #type proc "system" (commandBuffer: CommandBuffer, pipelineStackSize: u32) +ProcCmdSetSampleLocationsEXT :: #type proc "system" (commandBuffer: CommandBuffer, pSampleLocationsInfo: ^SampleLocationsInfoEXT) +ProcCmdSetScissor :: #type proc "system" (commandBuffer: CommandBuffer, firstScissor: u32, scissorCount: u32, pScissors: [^]Rect2D) +ProcCmdSetScissorWithCount :: #type proc "system" (commandBuffer: CommandBuffer, scissorCount: u32, pScissors: [^]Rect2D) +ProcCmdSetScissorWithCountEXT :: #type proc "system" (commandBuffer: CommandBuffer, scissorCount: u32, pScissors: [^]Rect2D) +ProcCmdSetStencilCompareMask :: #type proc "system" (commandBuffer: CommandBuffer, faceMask: StencilFaceFlags, compareMask: u32) +ProcCmdSetStencilOp :: #type proc "system" (commandBuffer: CommandBuffer, faceMask: StencilFaceFlags, failOp: StencilOp, passOp: StencilOp, depthFailOp: StencilOp, compareOp: CompareOp) +ProcCmdSetStencilOpEXT :: #type proc "system" (commandBuffer: CommandBuffer, faceMask: StencilFaceFlags, failOp: StencilOp, passOp: StencilOp, depthFailOp: StencilOp, compareOp: CompareOp) +ProcCmdSetStencilReference :: #type proc "system" (commandBuffer: CommandBuffer, faceMask: StencilFaceFlags, reference: u32) +ProcCmdSetStencilTestEnable :: #type proc "system" (commandBuffer: CommandBuffer, stencilTestEnable: b32) +ProcCmdSetStencilTestEnableEXT :: #type proc "system" (commandBuffer: CommandBuffer, stencilTestEnable: b32) +ProcCmdSetStencilWriteMask :: #type proc "system" (commandBuffer: CommandBuffer, faceMask: StencilFaceFlags, writeMask: u32) +ProcCmdSetVertexInputEXT :: #type proc "system" (commandBuffer: CommandBuffer, vertexBindingDescriptionCount: u32, pVertexBindingDescriptions: [^]VertexInputBindingDescription2EXT, vertexAttributeDescriptionCount: u32, pVertexAttributeDescriptions: [^]VertexInputAttributeDescription2EXT) +ProcCmdSetViewport :: #type proc "system" (commandBuffer: CommandBuffer, firstViewport: u32, viewportCount: u32, pViewports: [^]Viewport) +ProcCmdSetViewportShadingRatePaletteNV :: #type proc "system" (commandBuffer: CommandBuffer, firstViewport: u32, viewportCount: u32, pShadingRatePalettes: [^]ShadingRatePaletteNV) +ProcCmdSetViewportWScalingNV :: #type proc "system" (commandBuffer: CommandBuffer, firstViewport: u32, viewportCount: u32, pViewportWScalings: [^]ViewportWScalingNV) +ProcCmdSetViewportWithCount :: #type proc "system" (commandBuffer: CommandBuffer, viewportCount: u32, pViewports: [^]Viewport) +ProcCmdSetViewportWithCountEXT :: #type proc "system" (commandBuffer: CommandBuffer, viewportCount: u32, pViewports: [^]Viewport) +ProcCmdSubpassShadingHUAWEI :: #type proc "system" (commandBuffer: CommandBuffer) +ProcCmdTraceRaysIndirectKHR :: #type proc "system" (commandBuffer: CommandBuffer, pRaygenShaderBindingTable: [^]StridedDeviceAddressRegionKHR, pMissShaderBindingTable: [^]StridedDeviceAddressRegionKHR, pHitShaderBindingTable: [^]StridedDeviceAddressRegionKHR, pCallableShaderBindingTable: [^]StridedDeviceAddressRegionKHR, indirectDeviceAddress: DeviceAddress) +ProcCmdTraceRaysKHR :: #type proc "system" (commandBuffer: CommandBuffer, pRaygenShaderBindingTable: [^]StridedDeviceAddressRegionKHR, pMissShaderBindingTable: [^]StridedDeviceAddressRegionKHR, pHitShaderBindingTable: [^]StridedDeviceAddressRegionKHR, pCallableShaderBindingTable: [^]StridedDeviceAddressRegionKHR, width: u32, height: u32, depth: u32) +ProcCmdTraceRaysNV :: #type proc "system" (commandBuffer: CommandBuffer, raygenShaderBindingTableBuffer: Buffer, raygenShaderBindingOffset: DeviceSize, missShaderBindingTableBuffer: Buffer, missShaderBindingOffset: DeviceSize, missShaderBindingStride: DeviceSize, hitShaderBindingTableBuffer: Buffer, hitShaderBindingOffset: DeviceSize, hitShaderBindingStride: DeviceSize, callableShaderBindingTableBuffer: Buffer, callableShaderBindingOffset: DeviceSize, callableShaderBindingStride: DeviceSize, width: u32, height: u32, depth: u32) +ProcCmdUpdateBuffer :: #type proc "system" (commandBuffer: CommandBuffer, dstBuffer: Buffer, dstOffset: DeviceSize, dataSize: DeviceSize, pData: rawptr) +ProcCmdWaitEvents :: #type proc "system" (commandBuffer: CommandBuffer, eventCount: u32, pEvents: [^]Event, srcStageMask: PipelineStageFlags, dstStageMask: PipelineStageFlags, memoryBarrierCount: u32, pMemoryBarriers: [^]MemoryBarrier, bufferMemoryBarrierCount: u32, pBufferMemoryBarriers: [^]BufferMemoryBarrier, imageMemoryBarrierCount: u32, pImageMemoryBarriers: [^]ImageMemoryBarrier) +ProcCmdWaitEvents2 :: #type proc "system" (commandBuffer: CommandBuffer, eventCount: u32, pEvents: [^]Event, pDependencyInfos: [^]DependencyInfo) +ProcCmdWaitEvents2KHR :: #type proc "system" (commandBuffer: CommandBuffer, eventCount: u32, pEvents: [^]Event, pDependencyInfos: [^]DependencyInfo) +ProcCmdWriteAccelerationStructuresPropertiesKHR :: #type proc "system" (commandBuffer: CommandBuffer, accelerationStructureCount: u32, pAccelerationStructures: [^]AccelerationStructureKHR, queryType: QueryType, queryPool: QueryPool, firstQuery: u32) +ProcCmdWriteAccelerationStructuresPropertiesNV :: #type proc "system" (commandBuffer: CommandBuffer, accelerationStructureCount: u32, pAccelerationStructures: [^]AccelerationStructureNV, queryType: QueryType, queryPool: QueryPool, firstQuery: u32) +ProcCmdWriteBufferMarker2AMD :: #type proc "system" (commandBuffer: CommandBuffer, stage: PipelineStageFlags2, dstBuffer: Buffer, dstOffset: DeviceSize, marker: u32) +ProcCmdWriteBufferMarkerAMD :: #type proc "system" (commandBuffer: CommandBuffer, pipelineStage: PipelineStageFlags, dstBuffer: Buffer, dstOffset: DeviceSize, marker: u32) +ProcCmdWriteTimestamp :: #type proc "system" (commandBuffer: CommandBuffer, pipelineStage: PipelineStageFlags, queryPool: QueryPool, query: u32) +ProcCmdWriteTimestamp2 :: #type proc "system" (commandBuffer: CommandBuffer, stage: PipelineStageFlags2, queryPool: QueryPool, query: u32) +ProcCmdWriteTimestamp2KHR :: #type proc "system" (commandBuffer: CommandBuffer, stage: PipelineStageFlags2, queryPool: QueryPool, query: u32) +ProcCompileDeferredNV :: #type proc "system" (device: Device, pipeline: Pipeline, shader: u32) -> Result +ProcCopyAccelerationStructureKHR :: #type proc "system" (device: Device, deferredOperation: DeferredOperationKHR, pInfo: ^CopyAccelerationStructureInfoKHR) -> Result +ProcCopyAccelerationStructureToMemoryKHR :: #type proc "system" (device: Device, deferredOperation: DeferredOperationKHR, pInfo: ^CopyAccelerationStructureToMemoryInfoKHR) -> Result +ProcCopyMemoryToAccelerationStructureKHR :: #type proc "system" (device: Device, deferredOperation: DeferredOperationKHR, pInfo: ^CopyMemoryToAccelerationStructureInfoKHR) -> Result +ProcCreateAccelerationStructureKHR :: #type proc "system" (device: Device, pCreateInfo: ^AccelerationStructureCreateInfoKHR, pAllocator: ^AllocationCallbacks, pAccelerationStructure: ^AccelerationStructureKHR) -> Result +ProcCreateAccelerationStructureNV :: #type proc "system" (device: Device, pCreateInfo: ^AccelerationStructureCreateInfoNV, pAllocator: ^AllocationCallbacks, pAccelerationStructure: ^AccelerationStructureNV) -> Result +ProcCreateBuffer :: #type proc "system" (device: Device, pCreateInfo: ^BufferCreateInfo, pAllocator: ^AllocationCallbacks, pBuffer: ^Buffer) -> Result +ProcCreateBufferView :: #type proc "system" (device: Device, pCreateInfo: ^BufferViewCreateInfo, pAllocator: ^AllocationCallbacks, pView: ^BufferView) -> Result +ProcCreateCommandPool :: #type proc "system" (device: Device, pCreateInfo: ^CommandPoolCreateInfo, pAllocator: ^AllocationCallbacks, pCommandPool: ^CommandPool) -> Result +ProcCreateComputePipelines :: #type proc "system" (device: Device, pipelineCache: PipelineCache, createInfoCount: u32, pCreateInfos: [^]ComputePipelineCreateInfo, pAllocator: ^AllocationCallbacks, pPipelines: [^]Pipeline) -> Result +ProcCreateCuFunctionNVX :: #type proc "system" (device: Device, pCreateInfo: ^CuFunctionCreateInfoNVX, pAllocator: ^AllocationCallbacks, pFunction: ^CuFunctionNVX) -> Result +ProcCreateCuModuleNVX :: #type proc "system" (device: Device, pCreateInfo: ^CuModuleCreateInfoNVX, pAllocator: ^AllocationCallbacks, pModule: ^CuModuleNVX) -> Result +ProcCreateDeferredOperationKHR :: #type proc "system" (device: Device, pAllocator: ^AllocationCallbacks, pDeferredOperation: ^DeferredOperationKHR) -> Result +ProcCreateDescriptorPool :: #type proc "system" (device: Device, pCreateInfo: ^DescriptorPoolCreateInfo, pAllocator: ^AllocationCallbacks, pDescriptorPool: ^DescriptorPool) -> Result +ProcCreateDescriptorSetLayout :: #type proc "system" (device: Device, pCreateInfo: ^DescriptorSetLayoutCreateInfo, pAllocator: ^AllocationCallbacks, pSetLayout: ^DescriptorSetLayout) -> Result +ProcCreateDescriptorUpdateTemplate :: #type proc "system" (device: Device, pCreateInfo: ^DescriptorUpdateTemplateCreateInfo, pAllocator: ^AllocationCallbacks, pDescriptorUpdateTemplate: ^DescriptorUpdateTemplate) -> Result +ProcCreateDescriptorUpdateTemplateKHR :: #type proc "system" (device: Device, pCreateInfo: ^DescriptorUpdateTemplateCreateInfo, pAllocator: ^AllocationCallbacks, pDescriptorUpdateTemplate: ^DescriptorUpdateTemplate) -> Result +ProcCreateEvent :: #type proc "system" (device: Device, pCreateInfo: ^EventCreateInfo, pAllocator: ^AllocationCallbacks, pEvent: ^Event) -> Result +ProcCreateFence :: #type proc "system" (device: Device, pCreateInfo: ^FenceCreateInfo, pAllocator: ^AllocationCallbacks, pFence: ^Fence) -> Result +ProcCreateFramebuffer :: #type proc "system" (device: Device, pCreateInfo: ^FramebufferCreateInfo, pAllocator: ^AllocationCallbacks, pFramebuffer: ^Framebuffer) -> Result +ProcCreateGraphicsPipelines :: #type proc "system" (device: Device, pipelineCache: PipelineCache, createInfoCount: u32, pCreateInfos: [^]GraphicsPipelineCreateInfo, pAllocator: ^AllocationCallbacks, pPipelines: [^]Pipeline) -> Result +ProcCreateImage :: #type proc "system" (device: Device, pCreateInfo: ^ImageCreateInfo, pAllocator: ^AllocationCallbacks, pImage: ^Image) -> Result +ProcCreateImageView :: #type proc "system" (device: Device, pCreateInfo: ^ImageViewCreateInfo, pAllocator: ^AllocationCallbacks, pView: ^ImageView) -> Result +ProcCreateIndirectCommandsLayoutNV :: #type proc "system" (device: Device, pCreateInfo: ^IndirectCommandsLayoutCreateInfoNV, pAllocator: ^AllocationCallbacks, pIndirectCommandsLayout: ^IndirectCommandsLayoutNV) -> Result +ProcCreatePipelineCache :: #type proc "system" (device: Device, pCreateInfo: ^PipelineCacheCreateInfo, pAllocator: ^AllocationCallbacks, pPipelineCache: ^PipelineCache) -> Result +ProcCreatePipelineLayout :: #type proc "system" (device: Device, pCreateInfo: ^PipelineLayoutCreateInfo, pAllocator: ^AllocationCallbacks, pPipelineLayout: ^PipelineLayout) -> Result +ProcCreatePrivateDataSlot :: #type proc "system" (device: Device, pCreateInfo: ^PrivateDataSlotCreateInfo, pAllocator: ^AllocationCallbacks, pPrivateDataSlot: ^PrivateDataSlot) -> Result +ProcCreatePrivateDataSlotEXT :: #type proc "system" (device: Device, pCreateInfo: ^PrivateDataSlotCreateInfo, pAllocator: ^AllocationCallbacks, pPrivateDataSlot: ^PrivateDataSlot) -> Result +ProcCreateQueryPool :: #type proc "system" (device: Device, pCreateInfo: ^QueryPoolCreateInfo, pAllocator: ^AllocationCallbacks, pQueryPool: ^QueryPool) -> Result +ProcCreateRayTracingPipelinesKHR :: #type proc "system" (device: Device, deferredOperation: DeferredOperationKHR, pipelineCache: PipelineCache, createInfoCount: u32, pCreateInfos: [^]RayTracingPipelineCreateInfoKHR, pAllocator: ^AllocationCallbacks, pPipelines: [^]Pipeline) -> Result +ProcCreateRayTracingPipelinesNV :: #type proc "system" (device: Device, pipelineCache: PipelineCache, createInfoCount: u32, pCreateInfos: [^]RayTracingPipelineCreateInfoNV, pAllocator: ^AllocationCallbacks, pPipelines: [^]Pipeline) -> Result +ProcCreateRenderPass :: #type proc "system" (device: Device, pCreateInfo: ^RenderPassCreateInfo, pAllocator: ^AllocationCallbacks, pRenderPass: [^]RenderPass) -> Result +ProcCreateRenderPass2 :: #type proc "system" (device: Device, pCreateInfo: ^RenderPassCreateInfo2, pAllocator: ^AllocationCallbacks, pRenderPass: [^]RenderPass) -> Result +ProcCreateRenderPass2KHR :: #type proc "system" (device: Device, pCreateInfo: ^RenderPassCreateInfo2, pAllocator: ^AllocationCallbacks, pRenderPass: [^]RenderPass) -> Result +ProcCreateSampler :: #type proc "system" (device: Device, pCreateInfo: ^SamplerCreateInfo, pAllocator: ^AllocationCallbacks, pSampler: ^Sampler) -> Result +ProcCreateSamplerYcbcrConversion :: #type proc "system" (device: Device, pCreateInfo: ^SamplerYcbcrConversionCreateInfo, pAllocator: ^AllocationCallbacks, pYcbcrConversion: ^SamplerYcbcrConversion) -> Result +ProcCreateSamplerYcbcrConversionKHR :: #type proc "system" (device: Device, pCreateInfo: ^SamplerYcbcrConversionCreateInfo, pAllocator: ^AllocationCallbacks, pYcbcrConversion: ^SamplerYcbcrConversion) -> Result +ProcCreateSemaphore :: #type proc "system" (device: Device, pCreateInfo: ^SemaphoreCreateInfo, pAllocator: ^AllocationCallbacks, pSemaphore: ^Semaphore) -> Result +ProcCreateShaderModule :: #type proc "system" (device: Device, pCreateInfo: ^ShaderModuleCreateInfo, pAllocator: ^AllocationCallbacks, pShaderModule: ^ShaderModule) -> Result +ProcCreateSharedSwapchainsKHR :: #type proc "system" (device: Device, swapchainCount: u32, pCreateInfos: [^]SwapchainCreateInfoKHR, pAllocator: ^AllocationCallbacks, pSwapchains: [^]SwapchainKHR) -> Result +ProcCreateSwapchainKHR :: #type proc "system" (device: Device, pCreateInfo: ^SwapchainCreateInfoKHR, pAllocator: ^AllocationCallbacks, pSwapchain: ^SwapchainKHR) -> Result +ProcCreateValidationCacheEXT :: #type proc "system" (device: Device, pCreateInfo: ^ValidationCacheCreateInfoEXT, pAllocator: ^AllocationCallbacks, pValidationCache: ^ValidationCacheEXT) -> Result +ProcDebugMarkerSetObjectNameEXT :: #type proc "system" (device: Device, pNameInfo: ^DebugMarkerObjectNameInfoEXT) -> Result +ProcDebugMarkerSetObjectTagEXT :: #type proc "system" (device: Device, pTagInfo: ^DebugMarkerObjectTagInfoEXT) -> Result +ProcDeferredOperationJoinKHR :: #type proc "system" (device: Device, operation: DeferredOperationKHR) -> Result +ProcDestroyAccelerationStructureKHR :: #type proc "system" (device: Device, accelerationStructure: AccelerationStructureKHR, pAllocator: ^AllocationCallbacks) +ProcDestroyAccelerationStructureNV :: #type proc "system" (device: Device, accelerationStructure: AccelerationStructureNV, pAllocator: ^AllocationCallbacks) +ProcDestroyBuffer :: #type proc "system" (device: Device, buffer: Buffer, pAllocator: ^AllocationCallbacks) +ProcDestroyBufferView :: #type proc "system" (device: Device, bufferView: BufferView, pAllocator: ^AllocationCallbacks) +ProcDestroyCommandPool :: #type proc "system" (device: Device, commandPool: CommandPool, pAllocator: ^AllocationCallbacks) +ProcDestroyCuFunctionNVX :: #type proc "system" (device: Device, function: CuFunctionNVX, pAllocator: ^AllocationCallbacks) +ProcDestroyCuModuleNVX :: #type proc "system" (device: Device, module: CuModuleNVX, pAllocator: ^AllocationCallbacks) +ProcDestroyDeferredOperationKHR :: #type proc "system" (device: Device, operation: DeferredOperationKHR, pAllocator: ^AllocationCallbacks) +ProcDestroyDescriptorPool :: #type proc "system" (device: Device, descriptorPool: DescriptorPool, pAllocator: ^AllocationCallbacks) +ProcDestroyDescriptorSetLayout :: #type proc "system" (device: Device, descriptorSetLayout: DescriptorSetLayout, pAllocator: ^AllocationCallbacks) +ProcDestroyDescriptorUpdateTemplate :: #type proc "system" (device: Device, descriptorUpdateTemplate: DescriptorUpdateTemplate, pAllocator: ^AllocationCallbacks) +ProcDestroyDescriptorUpdateTemplateKHR :: #type proc "system" (device: Device, descriptorUpdateTemplate: DescriptorUpdateTemplate, pAllocator: ^AllocationCallbacks) +ProcDestroyDevice :: #type proc "system" (device: Device, pAllocator: ^AllocationCallbacks) +ProcDestroyEvent :: #type proc "system" (device: Device, event: Event, pAllocator: ^AllocationCallbacks) +ProcDestroyFence :: #type proc "system" (device: Device, fence: Fence, pAllocator: ^AllocationCallbacks) +ProcDestroyFramebuffer :: #type proc "system" (device: Device, framebuffer: Framebuffer, pAllocator: ^AllocationCallbacks) +ProcDestroyImage :: #type proc "system" (device: Device, image: Image, pAllocator: ^AllocationCallbacks) +ProcDestroyImageView :: #type proc "system" (device: Device, imageView: ImageView, pAllocator: ^AllocationCallbacks) +ProcDestroyIndirectCommandsLayoutNV :: #type proc "system" (device: Device, indirectCommandsLayout: IndirectCommandsLayoutNV, pAllocator: ^AllocationCallbacks) +ProcDestroyPipeline :: #type proc "system" (device: Device, pipeline: Pipeline, pAllocator: ^AllocationCallbacks) +ProcDestroyPipelineCache :: #type proc "system" (device: Device, pipelineCache: PipelineCache, pAllocator: ^AllocationCallbacks) +ProcDestroyPipelineLayout :: #type proc "system" (device: Device, pipelineLayout: PipelineLayout, pAllocator: ^AllocationCallbacks) +ProcDestroyPrivateDataSlot :: #type proc "system" (device: Device, privateDataSlot: PrivateDataSlot, pAllocator: ^AllocationCallbacks) +ProcDestroyPrivateDataSlotEXT :: #type proc "system" (device: Device, privateDataSlot: PrivateDataSlot, pAllocator: ^AllocationCallbacks) +ProcDestroyQueryPool :: #type proc "system" (device: Device, queryPool: QueryPool, pAllocator: ^AllocationCallbacks) +ProcDestroyRenderPass :: #type proc "system" (device: Device, renderPass: RenderPass, pAllocator: ^AllocationCallbacks) +ProcDestroySampler :: #type proc "system" (device: Device, sampler: Sampler, pAllocator: ^AllocationCallbacks) +ProcDestroySamplerYcbcrConversion :: #type proc "system" (device: Device, ycbcrConversion: SamplerYcbcrConversion, pAllocator: ^AllocationCallbacks) +ProcDestroySamplerYcbcrConversionKHR :: #type proc "system" (device: Device, ycbcrConversion: SamplerYcbcrConversion, pAllocator: ^AllocationCallbacks) +ProcDestroySemaphore :: #type proc "system" (device: Device, semaphore: Semaphore, pAllocator: ^AllocationCallbacks) +ProcDestroyShaderModule :: #type proc "system" (device: Device, shaderModule: ShaderModule, pAllocator: ^AllocationCallbacks) +ProcDestroySwapchainKHR :: #type proc "system" (device: Device, swapchain: SwapchainKHR, pAllocator: ^AllocationCallbacks) +ProcDestroyValidationCacheEXT :: #type proc "system" (device: Device, validationCache: ValidationCacheEXT, pAllocator: ^AllocationCallbacks) +ProcDeviceWaitIdle :: #type proc "system" (device: Device) -> Result +ProcDisplayPowerControlEXT :: #type proc "system" (device: Device, display: DisplayKHR, pDisplayPowerInfo: ^DisplayPowerInfoEXT) -> Result +ProcEndCommandBuffer :: #type proc "system" (commandBuffer: CommandBuffer) -> Result +ProcFlushMappedMemoryRanges :: #type proc "system" (device: Device, memoryRangeCount: u32, pMemoryRanges: [^]MappedMemoryRange) -> Result +ProcFreeCommandBuffers :: #type proc "system" (device: Device, commandPool: CommandPool, commandBufferCount: u32, pCommandBuffers: [^]CommandBuffer) +ProcFreeDescriptorSets :: #type proc "system" (device: Device, descriptorPool: DescriptorPool, descriptorSetCount: u32, pDescriptorSets: [^]DescriptorSet) -> Result +ProcFreeMemory :: #type proc "system" (device: Device, memory: DeviceMemory, pAllocator: ^AllocationCallbacks) +ProcGetAccelerationStructureBuildSizesKHR :: #type proc "system" (device: Device, buildType: AccelerationStructureBuildTypeKHR, pBuildInfo: ^AccelerationStructureBuildGeometryInfoKHR, pMaxPrimitiveCounts: [^]u32, pSizeInfo: ^AccelerationStructureBuildSizesInfoKHR) +ProcGetAccelerationStructureDeviceAddressKHR :: #type proc "system" (device: Device, pInfo: ^AccelerationStructureDeviceAddressInfoKHR) -> DeviceAddress +ProcGetAccelerationStructureHandleNV :: #type proc "system" (device: Device, accelerationStructure: AccelerationStructureNV, dataSize: int, pData: rawptr) -> Result +ProcGetAccelerationStructureMemoryRequirementsNV :: #type proc "system" (device: Device, pInfo: ^AccelerationStructureMemoryRequirementsInfoNV, pMemoryRequirements: [^]MemoryRequirements2KHR) +ProcGetBufferDeviceAddress :: #type proc "system" (device: Device, pInfo: ^BufferDeviceAddressInfo) -> DeviceAddress +ProcGetBufferDeviceAddressEXT :: #type proc "system" (device: Device, pInfo: ^BufferDeviceAddressInfo) -> DeviceAddress +ProcGetBufferDeviceAddressKHR :: #type proc "system" (device: Device, pInfo: ^BufferDeviceAddressInfo) -> DeviceAddress +ProcGetBufferMemoryRequirements :: #type proc "system" (device: Device, buffer: Buffer, pMemoryRequirements: [^]MemoryRequirements) +ProcGetBufferMemoryRequirements2 :: #type proc "system" (device: Device, pInfo: ^BufferMemoryRequirementsInfo2, pMemoryRequirements: [^]MemoryRequirements2) +ProcGetBufferMemoryRequirements2KHR :: #type proc "system" (device: Device, pInfo: ^BufferMemoryRequirementsInfo2, pMemoryRequirements: [^]MemoryRequirements2) +ProcGetBufferOpaqueCaptureAddress :: #type proc "system" (device: Device, pInfo: ^BufferDeviceAddressInfo) -> u64 +ProcGetBufferOpaqueCaptureAddressKHR :: #type proc "system" (device: Device, pInfo: ^BufferDeviceAddressInfo) -> u64 +ProcGetCalibratedTimestampsEXT :: #type proc "system" (device: Device, timestampCount: u32, pTimestampInfos: [^]CalibratedTimestampInfoEXT, pTimestamps: [^]u64, pMaxDeviation: ^u64) -> Result +ProcGetDeferredOperationMaxConcurrencyKHR :: #type proc "system" (device: Device, operation: DeferredOperationKHR) -> u32 +ProcGetDeferredOperationResultKHR :: #type proc "system" (device: Device, operation: DeferredOperationKHR) -> Result +ProcGetDescriptorSetHostMappingVALVE :: #type proc "system" (device: Device, descriptorSet: DescriptorSet, ppData: ^rawptr) +ProcGetDescriptorSetLayoutHostMappingInfoVALVE :: #type proc "system" (device: Device, pBindingReference: ^DescriptorSetBindingReferenceVALVE, pHostMapping: ^DescriptorSetLayoutHostMappingInfoVALVE) +ProcGetDescriptorSetLayoutSupport :: #type proc "system" (device: Device, pCreateInfo: ^DescriptorSetLayoutCreateInfo, pSupport: ^DescriptorSetLayoutSupport) +ProcGetDescriptorSetLayoutSupportKHR :: #type proc "system" (device: Device, pCreateInfo: ^DescriptorSetLayoutCreateInfo, pSupport: ^DescriptorSetLayoutSupport) +ProcGetDeviceAccelerationStructureCompatibilityKHR :: #type proc "system" (device: Device, pVersionInfo: ^AccelerationStructureVersionInfoKHR, pCompatibility: ^AccelerationStructureCompatibilityKHR) +ProcGetDeviceBufferMemoryRequirements :: #type proc "system" (device: Device, pInfo: ^DeviceBufferMemoryRequirements, pMemoryRequirements: [^]MemoryRequirements2) +ProcGetDeviceBufferMemoryRequirementsKHR :: #type proc "system" (device: Device, pInfo: ^DeviceBufferMemoryRequirements, pMemoryRequirements: [^]MemoryRequirements2) +ProcGetDeviceGroupPeerMemoryFeatures :: #type proc "system" (device: Device, heapIndex: u32, localDeviceIndex: u32, remoteDeviceIndex: u32, pPeerMemoryFeatures: [^]PeerMemoryFeatureFlags) +ProcGetDeviceGroupPeerMemoryFeaturesKHR :: #type proc "system" (device: Device, heapIndex: u32, localDeviceIndex: u32, remoteDeviceIndex: u32, pPeerMemoryFeatures: [^]PeerMemoryFeatureFlags) +ProcGetDeviceGroupPresentCapabilitiesKHR :: #type proc "system" (device: Device, pDeviceGroupPresentCapabilities: [^]DeviceGroupPresentCapabilitiesKHR) -> Result +ProcGetDeviceGroupSurfacePresentModes2EXT :: #type proc "system" (device: Device, pSurfaceInfo: ^PhysicalDeviceSurfaceInfo2KHR, pModes: [^]DeviceGroupPresentModeFlagsKHR) -> Result +ProcGetDeviceGroupSurfacePresentModesKHR :: #type proc "system" (device: Device, surface: SurfaceKHR, pModes: [^]DeviceGroupPresentModeFlagsKHR) -> Result +ProcGetDeviceImageMemoryRequirements :: #type proc "system" (device: Device, pInfo: ^DeviceImageMemoryRequirements, pMemoryRequirements: [^]MemoryRequirements2) +ProcGetDeviceImageMemoryRequirementsKHR :: #type proc "system" (device: Device, pInfo: ^DeviceImageMemoryRequirements, pMemoryRequirements: [^]MemoryRequirements2) +ProcGetDeviceImageSparseMemoryRequirements :: #type proc "system" (device: Device, pInfo: ^DeviceImageMemoryRequirements, pSparseMemoryRequirementCount: ^u32, pSparseMemoryRequirements: [^]SparseImageMemoryRequirements2) +ProcGetDeviceImageSparseMemoryRequirementsKHR :: #type proc "system" (device: Device, pInfo: ^DeviceImageMemoryRequirements, pSparseMemoryRequirementCount: ^u32, pSparseMemoryRequirements: [^]SparseImageMemoryRequirements2) +ProcGetDeviceMemoryCommitment :: #type proc "system" (device: Device, memory: DeviceMemory, pCommittedMemoryInBytes: [^]DeviceSize) +ProcGetDeviceMemoryOpaqueCaptureAddress :: #type proc "system" (device: Device, pInfo: ^DeviceMemoryOpaqueCaptureAddressInfo) -> u64 +ProcGetDeviceMemoryOpaqueCaptureAddressKHR :: #type proc "system" (device: Device, pInfo: ^DeviceMemoryOpaqueCaptureAddressInfo) -> u64 +ProcGetDeviceProcAddr :: #type proc "system" (device: Device, pName: cstring) -> ProcVoidFunction +ProcGetDeviceQueue :: #type proc "system" (device: Device, queueFamilyIndex: u32, queueIndex: u32, pQueue: ^Queue) +ProcGetDeviceQueue2 :: #type proc "system" (device: Device, pQueueInfo: ^DeviceQueueInfo2, pQueue: ^Queue) +ProcGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI :: #type proc "system" (device: Device, renderpass: RenderPass, pMaxWorkgroupSize: ^Extent2D) -> Result +ProcGetEventStatus :: #type proc "system" (device: Device, event: Event) -> Result +ProcGetFenceFdKHR :: #type proc "system" (device: Device, pGetFdInfo: ^FenceGetFdInfoKHR, pFd: ^c.int) -> Result +ProcGetFenceStatus :: #type proc "system" (device: Device, fence: Fence) -> Result +ProcGetFenceWin32HandleKHR :: #type proc "system" (device: Device, pGetWin32HandleInfo: ^FenceGetWin32HandleInfoKHR, pHandle: ^HANDLE) -> Result +ProcGetGeneratedCommandsMemoryRequirementsNV :: #type proc "system" (device: Device, pInfo: ^GeneratedCommandsMemoryRequirementsInfoNV, pMemoryRequirements: [^]MemoryRequirements2) +ProcGetImageDrmFormatModifierPropertiesEXT :: #type proc "system" (device: Device, image: Image, pProperties: [^]ImageDrmFormatModifierPropertiesEXT) -> Result +ProcGetImageMemoryRequirements :: #type proc "system" (device: Device, image: Image, pMemoryRequirements: [^]MemoryRequirements) +ProcGetImageMemoryRequirements2 :: #type proc "system" (device: Device, pInfo: ^ImageMemoryRequirementsInfo2, pMemoryRequirements: [^]MemoryRequirements2) +ProcGetImageMemoryRequirements2KHR :: #type proc "system" (device: Device, pInfo: ^ImageMemoryRequirementsInfo2, pMemoryRequirements: [^]MemoryRequirements2) +ProcGetImageSparseMemoryRequirements :: #type proc "system" (device: Device, image: Image, pSparseMemoryRequirementCount: ^u32, pSparseMemoryRequirements: [^]SparseImageMemoryRequirements) +ProcGetImageSparseMemoryRequirements2 :: #type proc "system" (device: Device, pInfo: ^ImageSparseMemoryRequirementsInfo2, pSparseMemoryRequirementCount: ^u32, pSparseMemoryRequirements: [^]SparseImageMemoryRequirements2) +ProcGetImageSparseMemoryRequirements2KHR :: #type proc "system" (device: Device, pInfo: ^ImageSparseMemoryRequirementsInfo2, pSparseMemoryRequirementCount: ^u32, pSparseMemoryRequirements: [^]SparseImageMemoryRequirements2) +ProcGetImageSubresourceLayout :: #type proc "system" (device: Device, image: Image, pSubresource: ^ImageSubresource, pLayout: ^SubresourceLayout) +ProcGetImageViewAddressNVX :: #type proc "system" (device: Device, imageView: ImageView, pProperties: [^]ImageViewAddressPropertiesNVX) -> Result +ProcGetImageViewHandleNVX :: #type proc "system" (device: Device, pInfo: ^ImageViewHandleInfoNVX) -> u32 +ProcGetMemoryFdKHR :: #type proc "system" (device: Device, pGetFdInfo: ^MemoryGetFdInfoKHR, pFd: ^c.int) -> Result +ProcGetMemoryFdPropertiesKHR :: #type proc "system" (device: Device, handleType: ExternalMemoryHandleTypeFlags, fd: c.int, pMemoryFdProperties: [^]MemoryFdPropertiesKHR) -> Result +ProcGetMemoryHostPointerPropertiesEXT :: #type proc "system" (device: Device, handleType: ExternalMemoryHandleTypeFlags, pHostPointer: rawptr, pMemoryHostPointerProperties: [^]MemoryHostPointerPropertiesEXT) -> Result +ProcGetMemoryRemoteAddressNV :: #type proc "system" (device: Device, pMemoryGetRemoteAddressInfo: ^MemoryGetRemoteAddressInfoNV, pAddress: [^]RemoteAddressNV) -> Result +ProcGetMemoryWin32HandleKHR :: #type proc "system" (device: Device, pGetWin32HandleInfo: ^MemoryGetWin32HandleInfoKHR, pHandle: ^HANDLE) -> Result +ProcGetMemoryWin32HandleNV :: #type proc "system" (device: Device, memory: DeviceMemory, handleType: ExternalMemoryHandleTypeFlagsNV, pHandle: ^HANDLE) -> Result +ProcGetMemoryWin32HandlePropertiesKHR :: #type proc "system" (device: Device, handleType: ExternalMemoryHandleTypeFlags, handle: HANDLE, pMemoryWin32HandleProperties: [^]MemoryWin32HandlePropertiesKHR) -> Result +ProcGetPastPresentationTimingGOOGLE :: #type proc "system" (device: Device, swapchain: SwapchainKHR, pPresentationTimingCount: ^u32, pPresentationTimings: [^]PastPresentationTimingGOOGLE) -> Result +ProcGetPerformanceParameterINTEL :: #type proc "system" (device: Device, parameter: PerformanceParameterTypeINTEL, pValue: ^PerformanceValueINTEL) -> Result +ProcGetPipelineCacheData :: #type proc "system" (device: Device, pipelineCache: PipelineCache, pDataSize: ^int, pData: rawptr) -> Result +ProcGetPipelineExecutableInternalRepresentationsKHR :: #type proc "system" (device: Device, pExecutableInfo: ^PipelineExecutableInfoKHR, pInternalRepresentationCount: ^u32, pInternalRepresentations: [^]PipelineExecutableInternalRepresentationKHR) -> Result +ProcGetPipelineExecutablePropertiesKHR :: #type proc "system" (device: Device, pPipelineInfo: ^PipelineInfoKHR, pExecutableCount: ^u32, pProperties: [^]PipelineExecutablePropertiesKHR) -> Result +ProcGetPipelineExecutableStatisticsKHR :: #type proc "system" (device: Device, pExecutableInfo: ^PipelineExecutableInfoKHR, pStatisticCount: ^u32, pStatistics: [^]PipelineExecutableStatisticKHR) -> Result +ProcGetPrivateData :: #type proc "system" (device: Device, objectType: ObjectType, objectHandle: u64, privateDataSlot: PrivateDataSlot, pData: ^u64) +ProcGetPrivateDataEXT :: #type proc "system" (device: Device, objectType: ObjectType, objectHandle: u64, privateDataSlot: PrivateDataSlot, pData: ^u64) +ProcGetQueryPoolResults :: #type proc "system" (device: Device, queryPool: QueryPool, firstQuery: u32, queryCount: u32, dataSize: int, pData: rawptr, stride: DeviceSize, flags: QueryResultFlags) -> Result +ProcGetQueueCheckpointData2NV :: #type proc "system" (queue: Queue, pCheckpointDataCount: ^u32, pCheckpointData: ^CheckpointData2NV) +ProcGetQueueCheckpointDataNV :: #type proc "system" (queue: Queue, pCheckpointDataCount: ^u32, pCheckpointData: ^CheckpointDataNV) +ProcGetRayTracingCaptureReplayShaderGroupHandlesKHR :: #type proc "system" (device: Device, pipeline: Pipeline, firstGroup: u32, groupCount: u32, dataSize: int, pData: rawptr) -> Result +ProcGetRayTracingShaderGroupHandlesKHR :: #type proc "system" (device: Device, pipeline: Pipeline, firstGroup: u32, groupCount: u32, dataSize: int, pData: rawptr) -> Result +ProcGetRayTracingShaderGroupHandlesNV :: #type proc "system" (device: Device, pipeline: Pipeline, firstGroup: u32, groupCount: u32, dataSize: int, pData: rawptr) -> Result +ProcGetRayTracingShaderGroupStackSizeKHR :: #type proc "system" (device: Device, pipeline: Pipeline, group: u32, groupShader: ShaderGroupShaderKHR) -> DeviceSize +ProcGetRefreshCycleDurationGOOGLE :: #type proc "system" (device: Device, swapchain: SwapchainKHR, pDisplayTimingProperties: [^]RefreshCycleDurationGOOGLE) -> Result +ProcGetRenderAreaGranularity :: #type proc "system" (device: Device, renderPass: RenderPass, pGranularity: ^Extent2D) +ProcGetSemaphoreCounterValue :: #type proc "system" (device: Device, semaphore: Semaphore, pValue: ^u64) -> Result +ProcGetSemaphoreCounterValueKHR :: #type proc "system" (device: Device, semaphore: Semaphore, pValue: ^u64) -> Result +ProcGetSemaphoreFdKHR :: #type proc "system" (device: Device, pGetFdInfo: ^SemaphoreGetFdInfoKHR, pFd: ^c.int) -> Result +ProcGetSemaphoreWin32HandleKHR :: #type proc "system" (device: Device, pGetWin32HandleInfo: ^SemaphoreGetWin32HandleInfoKHR, pHandle: ^HANDLE) -> Result +ProcGetShaderInfoAMD :: #type proc "system" (device: Device, pipeline: Pipeline, shaderStage: ShaderStageFlags, infoType: ShaderInfoTypeAMD, pInfoSize: ^int, pInfo: rawptr) -> Result +ProcGetSwapchainCounterEXT :: #type proc "system" (device: Device, swapchain: SwapchainKHR, counter: SurfaceCounterFlagsEXT, pCounterValue: ^u64) -> Result +ProcGetSwapchainImagesKHR :: #type proc "system" (device: Device, swapchain: SwapchainKHR, pSwapchainImageCount: ^u32, pSwapchainImages: [^]Image) -> Result +ProcGetSwapchainStatusKHR :: #type proc "system" (device: Device, swapchain: SwapchainKHR) -> Result +ProcGetValidationCacheDataEXT :: #type proc "system" (device: Device, validationCache: ValidationCacheEXT, pDataSize: ^int, pData: rawptr) -> Result +ProcImportFenceFdKHR :: #type proc "system" (device: Device, pImportFenceFdInfo: ^ImportFenceFdInfoKHR) -> Result +ProcImportFenceWin32HandleKHR :: #type proc "system" (device: Device, pImportFenceWin32HandleInfo: ^ImportFenceWin32HandleInfoKHR) -> Result +ProcImportSemaphoreFdKHR :: #type proc "system" (device: Device, pImportSemaphoreFdInfo: ^ImportSemaphoreFdInfoKHR) -> Result +ProcImportSemaphoreWin32HandleKHR :: #type proc "system" (device: Device, pImportSemaphoreWin32HandleInfo: ^ImportSemaphoreWin32HandleInfoKHR) -> Result +ProcInitializePerformanceApiINTEL :: #type proc "system" (device: Device, pInitializeInfo: ^InitializePerformanceApiInfoINTEL) -> Result +ProcInvalidateMappedMemoryRanges :: #type proc "system" (device: Device, memoryRangeCount: u32, pMemoryRanges: [^]MappedMemoryRange) -> Result +ProcMapMemory :: #type proc "system" (device: Device, memory: DeviceMemory, offset: DeviceSize, size: DeviceSize, flags: MemoryMapFlags, ppData: ^rawptr) -> Result +ProcMergePipelineCaches :: #type proc "system" (device: Device, dstCache: PipelineCache, srcCacheCount: u32, pSrcCaches: [^]PipelineCache) -> Result +ProcMergeValidationCachesEXT :: #type proc "system" (device: Device, dstCache: ValidationCacheEXT, srcCacheCount: u32, pSrcCaches: [^]ValidationCacheEXT) -> Result +ProcQueueBeginDebugUtilsLabelEXT :: #type proc "system" (queue: Queue, pLabelInfo: ^DebugUtilsLabelEXT) +ProcQueueBindSparse :: #type proc "system" (queue: Queue, bindInfoCount: u32, pBindInfo: ^BindSparseInfo, fence: Fence) -> Result +ProcQueueEndDebugUtilsLabelEXT :: #type proc "system" (queue: Queue) +ProcQueueInsertDebugUtilsLabelEXT :: #type proc "system" (queue: Queue, pLabelInfo: ^DebugUtilsLabelEXT) +ProcQueuePresentKHR :: #type proc "system" (queue: Queue, pPresentInfo: ^PresentInfoKHR) -> Result +ProcQueueSetPerformanceConfigurationINTEL :: #type proc "system" (queue: Queue, configuration: PerformanceConfigurationINTEL) -> Result +ProcQueueSubmit :: #type proc "system" (queue: Queue, submitCount: u32, pSubmits: [^]SubmitInfo, fence: Fence) -> Result +ProcQueueSubmit2 :: #type proc "system" (queue: Queue, submitCount: u32, pSubmits: [^]SubmitInfo2, fence: Fence) -> Result +ProcQueueSubmit2KHR :: #type proc "system" (queue: Queue, submitCount: u32, pSubmits: [^]SubmitInfo2, fence: Fence) -> Result +ProcQueueWaitIdle :: #type proc "system" (queue: Queue) -> Result +ProcRegisterDeviceEventEXT :: #type proc "system" (device: Device, pDeviceEventInfo: ^DeviceEventInfoEXT, pAllocator: ^AllocationCallbacks, pFence: ^Fence) -> Result +ProcRegisterDisplayEventEXT :: #type proc "system" (device: Device, display: DisplayKHR, pDisplayEventInfo: ^DisplayEventInfoEXT, pAllocator: ^AllocationCallbacks, pFence: ^Fence) -> Result +ProcReleaseFullScreenExclusiveModeEXT :: #type proc "system" (device: Device, swapchain: SwapchainKHR) -> Result +ProcReleasePerformanceConfigurationINTEL :: #type proc "system" (device: Device, configuration: PerformanceConfigurationINTEL) -> Result +ProcReleaseProfilingLockKHR :: #type proc "system" (device: Device) +ProcResetCommandBuffer :: #type proc "system" (commandBuffer: CommandBuffer, flags: CommandBufferResetFlags) -> Result +ProcResetCommandPool :: #type proc "system" (device: Device, commandPool: CommandPool, flags: CommandPoolResetFlags) -> Result +ProcResetDescriptorPool :: #type proc "system" (device: Device, descriptorPool: DescriptorPool, flags: DescriptorPoolResetFlags) -> Result +ProcResetEvent :: #type proc "system" (device: Device, event: Event) -> Result +ProcResetFences :: #type proc "system" (device: Device, fenceCount: u32, pFences: [^]Fence) -> Result +ProcResetQueryPool :: #type proc "system" (device: Device, queryPool: QueryPool, firstQuery: u32, queryCount: u32) +ProcResetQueryPoolEXT :: #type proc "system" (device: Device, queryPool: QueryPool, firstQuery: u32, queryCount: u32) +ProcSetDebugUtilsObjectNameEXT :: #type proc "system" (device: Device, pNameInfo: ^DebugUtilsObjectNameInfoEXT) -> Result +ProcSetDebugUtilsObjectTagEXT :: #type proc "system" (device: Device, pTagInfo: ^DebugUtilsObjectTagInfoEXT) -> Result +ProcSetDeviceMemoryPriorityEXT :: #type proc "system" (device: Device, memory: DeviceMemory, priority: f32) +ProcSetEvent :: #type proc "system" (device: Device, event: Event) -> Result +ProcSetHdrMetadataEXT :: #type proc "system" (device: Device, swapchainCount: u32, pSwapchains: [^]SwapchainKHR, pMetadata: ^HdrMetadataEXT) +ProcSetLocalDimmingAMD :: #type proc "system" (device: Device, swapChain: SwapchainKHR, localDimmingEnable: b32) +ProcSetPrivateData :: #type proc "system" (device: Device, objectType: ObjectType, objectHandle: u64, privateDataSlot: PrivateDataSlot, data: u64) -> Result +ProcSetPrivateDataEXT :: #type proc "system" (device: Device, objectType: ObjectType, objectHandle: u64, privateDataSlot: PrivateDataSlot, data: u64) -> Result +ProcSignalSemaphore :: #type proc "system" (device: Device, pSignalInfo: ^SemaphoreSignalInfo) -> Result +ProcSignalSemaphoreKHR :: #type proc "system" (device: Device, pSignalInfo: ^SemaphoreSignalInfo) -> Result +ProcTrimCommandPool :: #type proc "system" (device: Device, commandPool: CommandPool, flags: CommandPoolTrimFlags) +ProcTrimCommandPoolKHR :: #type proc "system" (device: Device, commandPool: CommandPool, flags: CommandPoolTrimFlags) +ProcUninitializePerformanceApiINTEL :: #type proc "system" (device: Device) +ProcUnmapMemory :: #type proc "system" (device: Device, memory: DeviceMemory) +ProcUpdateDescriptorSetWithTemplate :: #type proc "system" (device: Device, descriptorSet: DescriptorSet, descriptorUpdateTemplate: DescriptorUpdateTemplate, pData: rawptr) +ProcUpdateDescriptorSetWithTemplateKHR :: #type proc "system" (device: Device, descriptorSet: DescriptorSet, descriptorUpdateTemplate: DescriptorUpdateTemplate, pData: rawptr) +ProcUpdateDescriptorSets :: #type proc "system" (device: Device, descriptorWriteCount: u32, pDescriptorWrites: [^]WriteDescriptorSet, descriptorCopyCount: u32, pDescriptorCopies: [^]CopyDescriptorSet) +ProcWaitForFences :: #type proc "system" (device: Device, fenceCount: u32, pFences: [^]Fence, waitAll: b32, timeout: u64) -> Result +ProcWaitForPresentKHR :: #type proc "system" (device: Device, swapchain: SwapchainKHR, presentId: u64, timeout: u64) -> Result +ProcWaitSemaphores :: #type proc "system" (device: Device, pWaitInfo: ^SemaphoreWaitInfo, timeout: u64) -> Result +ProcWaitSemaphoresKHR :: #type proc "system" (device: Device, pWaitInfo: ^SemaphoreWaitInfo, timeout: u64) -> Result +ProcWriteAccelerationStructuresPropertiesKHR :: #type proc "system" (device: Device, accelerationStructureCount: u32, pAccelerationStructures: [^]AccelerationStructureKHR, queryType: QueryType, dataSize: int, pData: rawptr, stride: int) -> Result + + +// Loader Procedures +CreateInstance: ProcCreateInstance +DebugUtilsMessengerCallbackEXT: ProcDebugUtilsMessengerCallbackEXT +DeviceMemoryReportCallbackEXT: ProcDeviceMemoryReportCallbackEXT +EnumerateInstanceExtensionProperties: ProcEnumerateInstanceExtensionProperties +EnumerateInstanceLayerProperties: ProcEnumerateInstanceLayerProperties +EnumerateInstanceVersion: ProcEnumerateInstanceVersion +GetInstanceProcAddr: ProcGetInstanceProcAddr + +// Instance Procedures +AcquireDrmDisplayEXT: ProcAcquireDrmDisplayEXT +AcquireWinrtDisplayNV: ProcAcquireWinrtDisplayNV +CreateDebugReportCallbackEXT: ProcCreateDebugReportCallbackEXT +CreateDebugUtilsMessengerEXT: ProcCreateDebugUtilsMessengerEXT +CreateDevice: ProcCreateDevice +CreateDisplayModeKHR: ProcCreateDisplayModeKHR +CreateDisplayPlaneSurfaceKHR: ProcCreateDisplayPlaneSurfaceKHR +CreateHeadlessSurfaceEXT: ProcCreateHeadlessSurfaceEXT +CreateIOSSurfaceMVK: ProcCreateIOSSurfaceMVK +CreateMacOSSurfaceMVK: ProcCreateMacOSSurfaceMVK +CreateMetalSurfaceEXT: ProcCreateMetalSurfaceEXT +CreateWaylandSurfaceKHR: ProcCreateWaylandSurfaceKHR +CreateWin32SurfaceKHR: ProcCreateWin32SurfaceKHR +DebugReportMessageEXT: ProcDebugReportMessageEXT +DestroyDebugReportCallbackEXT: ProcDestroyDebugReportCallbackEXT +DestroyDebugUtilsMessengerEXT: ProcDestroyDebugUtilsMessengerEXT +DestroyInstance: ProcDestroyInstance +DestroySurfaceKHR: ProcDestroySurfaceKHR +EnumerateDeviceExtensionProperties: ProcEnumerateDeviceExtensionProperties +EnumerateDeviceLayerProperties: ProcEnumerateDeviceLayerProperties +EnumeratePhysicalDeviceGroups: ProcEnumeratePhysicalDeviceGroups +EnumeratePhysicalDeviceGroupsKHR: ProcEnumeratePhysicalDeviceGroupsKHR +EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR: ProcEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR +EnumeratePhysicalDevices: ProcEnumeratePhysicalDevices +GetDisplayModeProperties2KHR: ProcGetDisplayModeProperties2KHR +GetDisplayModePropertiesKHR: ProcGetDisplayModePropertiesKHR +GetDisplayPlaneCapabilities2KHR: ProcGetDisplayPlaneCapabilities2KHR +GetDisplayPlaneCapabilitiesKHR: ProcGetDisplayPlaneCapabilitiesKHR +GetDisplayPlaneSupportedDisplaysKHR: ProcGetDisplayPlaneSupportedDisplaysKHR +GetDrmDisplayEXT: ProcGetDrmDisplayEXT +GetPhysicalDeviceCalibrateableTimeDomainsEXT: ProcGetPhysicalDeviceCalibrateableTimeDomainsEXT +GetPhysicalDeviceCooperativeMatrixPropertiesNV: ProcGetPhysicalDeviceCooperativeMatrixPropertiesNV +GetPhysicalDeviceDisplayPlaneProperties2KHR: ProcGetPhysicalDeviceDisplayPlaneProperties2KHR +GetPhysicalDeviceDisplayPlanePropertiesKHR: ProcGetPhysicalDeviceDisplayPlanePropertiesKHR +GetPhysicalDeviceDisplayProperties2KHR: ProcGetPhysicalDeviceDisplayProperties2KHR +GetPhysicalDeviceDisplayPropertiesKHR: ProcGetPhysicalDeviceDisplayPropertiesKHR +GetPhysicalDeviceExternalBufferProperties: ProcGetPhysicalDeviceExternalBufferProperties +GetPhysicalDeviceExternalBufferPropertiesKHR: ProcGetPhysicalDeviceExternalBufferPropertiesKHR +GetPhysicalDeviceExternalFenceProperties: ProcGetPhysicalDeviceExternalFenceProperties +GetPhysicalDeviceExternalFencePropertiesKHR: ProcGetPhysicalDeviceExternalFencePropertiesKHR +GetPhysicalDeviceExternalImageFormatPropertiesNV: ProcGetPhysicalDeviceExternalImageFormatPropertiesNV +GetPhysicalDeviceExternalSemaphoreProperties: ProcGetPhysicalDeviceExternalSemaphoreProperties +GetPhysicalDeviceExternalSemaphorePropertiesKHR: ProcGetPhysicalDeviceExternalSemaphorePropertiesKHR +GetPhysicalDeviceFeatures: ProcGetPhysicalDeviceFeatures +GetPhysicalDeviceFeatures2: ProcGetPhysicalDeviceFeatures2 +GetPhysicalDeviceFeatures2KHR: ProcGetPhysicalDeviceFeatures2KHR +GetPhysicalDeviceFormatProperties: ProcGetPhysicalDeviceFormatProperties +GetPhysicalDeviceFormatProperties2: ProcGetPhysicalDeviceFormatProperties2 +GetPhysicalDeviceFormatProperties2KHR: ProcGetPhysicalDeviceFormatProperties2KHR +GetPhysicalDeviceFragmentShadingRatesKHR: ProcGetPhysicalDeviceFragmentShadingRatesKHR +GetPhysicalDeviceImageFormatProperties: ProcGetPhysicalDeviceImageFormatProperties +GetPhysicalDeviceImageFormatProperties2: ProcGetPhysicalDeviceImageFormatProperties2 +GetPhysicalDeviceImageFormatProperties2KHR: ProcGetPhysicalDeviceImageFormatProperties2KHR +GetPhysicalDeviceMemoryProperties: ProcGetPhysicalDeviceMemoryProperties +GetPhysicalDeviceMemoryProperties2: ProcGetPhysicalDeviceMemoryProperties2 +GetPhysicalDeviceMemoryProperties2KHR: ProcGetPhysicalDeviceMemoryProperties2KHR +GetPhysicalDeviceMultisamplePropertiesEXT: ProcGetPhysicalDeviceMultisamplePropertiesEXT +GetPhysicalDevicePresentRectanglesKHR: ProcGetPhysicalDevicePresentRectanglesKHR +GetPhysicalDeviceProperties: ProcGetPhysicalDeviceProperties +GetPhysicalDeviceProperties2: ProcGetPhysicalDeviceProperties2 +GetPhysicalDeviceProperties2KHR: ProcGetPhysicalDeviceProperties2KHR +GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR: ProcGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR +GetPhysicalDeviceQueueFamilyProperties: ProcGetPhysicalDeviceQueueFamilyProperties +GetPhysicalDeviceQueueFamilyProperties2: ProcGetPhysicalDeviceQueueFamilyProperties2 +GetPhysicalDeviceQueueFamilyProperties2KHR: ProcGetPhysicalDeviceQueueFamilyProperties2KHR +GetPhysicalDeviceSparseImageFormatProperties: ProcGetPhysicalDeviceSparseImageFormatProperties +GetPhysicalDeviceSparseImageFormatProperties2: ProcGetPhysicalDeviceSparseImageFormatProperties2 +GetPhysicalDeviceSparseImageFormatProperties2KHR: ProcGetPhysicalDeviceSparseImageFormatProperties2KHR +GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV: ProcGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV +GetPhysicalDeviceSurfaceCapabilities2EXT: ProcGetPhysicalDeviceSurfaceCapabilities2EXT +GetPhysicalDeviceSurfaceCapabilities2KHR: ProcGetPhysicalDeviceSurfaceCapabilities2KHR +GetPhysicalDeviceSurfaceCapabilitiesKHR: ProcGetPhysicalDeviceSurfaceCapabilitiesKHR +GetPhysicalDeviceSurfaceFormats2KHR: ProcGetPhysicalDeviceSurfaceFormats2KHR +GetPhysicalDeviceSurfaceFormatsKHR: ProcGetPhysicalDeviceSurfaceFormatsKHR +GetPhysicalDeviceSurfacePresentModes2EXT: ProcGetPhysicalDeviceSurfacePresentModes2EXT +GetPhysicalDeviceSurfacePresentModesKHR: ProcGetPhysicalDeviceSurfacePresentModesKHR +GetPhysicalDeviceSurfaceSupportKHR: ProcGetPhysicalDeviceSurfaceSupportKHR +GetPhysicalDeviceToolProperties: ProcGetPhysicalDeviceToolProperties +GetPhysicalDeviceToolPropertiesEXT: ProcGetPhysicalDeviceToolPropertiesEXT +GetPhysicalDeviceWaylandPresentationSupportKHR: ProcGetPhysicalDeviceWaylandPresentationSupportKHR +GetPhysicalDeviceWin32PresentationSupportKHR: ProcGetPhysicalDeviceWin32PresentationSupportKHR +GetWinrtDisplayNV: ProcGetWinrtDisplayNV +ReleaseDisplayEXT: ProcReleaseDisplayEXT +SubmitDebugUtilsMessageEXT: ProcSubmitDebugUtilsMessageEXT + +// Device Procedures +AcquireFullScreenExclusiveModeEXT: ProcAcquireFullScreenExclusiveModeEXT +AcquireNextImage2KHR: ProcAcquireNextImage2KHR +AcquireNextImageKHR: ProcAcquireNextImageKHR +AcquirePerformanceConfigurationINTEL: ProcAcquirePerformanceConfigurationINTEL +AcquireProfilingLockKHR: ProcAcquireProfilingLockKHR +AllocateCommandBuffers: ProcAllocateCommandBuffers +AllocateDescriptorSets: ProcAllocateDescriptorSets +AllocateMemory: ProcAllocateMemory +BeginCommandBuffer: ProcBeginCommandBuffer +BindAccelerationStructureMemoryNV: ProcBindAccelerationStructureMemoryNV +BindBufferMemory: ProcBindBufferMemory +BindBufferMemory2: ProcBindBufferMemory2 +BindBufferMemory2KHR: ProcBindBufferMemory2KHR +BindImageMemory: ProcBindImageMemory +BindImageMemory2: ProcBindImageMemory2 +BindImageMemory2KHR: ProcBindImageMemory2KHR +BuildAccelerationStructuresKHR: ProcBuildAccelerationStructuresKHR +CmdBeginConditionalRenderingEXT: ProcCmdBeginConditionalRenderingEXT +CmdBeginDebugUtilsLabelEXT: ProcCmdBeginDebugUtilsLabelEXT +CmdBeginQuery: ProcCmdBeginQuery +CmdBeginQueryIndexedEXT: ProcCmdBeginQueryIndexedEXT +CmdBeginRenderPass: ProcCmdBeginRenderPass +CmdBeginRenderPass2: ProcCmdBeginRenderPass2 +CmdBeginRenderPass2KHR: ProcCmdBeginRenderPass2KHR +CmdBeginRendering: ProcCmdBeginRendering +CmdBeginRenderingKHR: ProcCmdBeginRenderingKHR +CmdBeginTransformFeedbackEXT: ProcCmdBeginTransformFeedbackEXT +CmdBindDescriptorSets: ProcCmdBindDescriptorSets +CmdBindIndexBuffer: ProcCmdBindIndexBuffer +CmdBindInvocationMaskHUAWEI: ProcCmdBindInvocationMaskHUAWEI +CmdBindPipeline: ProcCmdBindPipeline +CmdBindPipelineShaderGroupNV: ProcCmdBindPipelineShaderGroupNV +CmdBindShadingRateImageNV: ProcCmdBindShadingRateImageNV +CmdBindTransformFeedbackBuffersEXT: ProcCmdBindTransformFeedbackBuffersEXT +CmdBindVertexBuffers: ProcCmdBindVertexBuffers +CmdBindVertexBuffers2: ProcCmdBindVertexBuffers2 +CmdBindVertexBuffers2EXT: ProcCmdBindVertexBuffers2EXT +CmdBlitImage: ProcCmdBlitImage +CmdBlitImage2: ProcCmdBlitImage2 +CmdBlitImage2KHR: ProcCmdBlitImage2KHR +CmdBuildAccelerationStructureNV: ProcCmdBuildAccelerationStructureNV +CmdBuildAccelerationStructuresIndirectKHR: ProcCmdBuildAccelerationStructuresIndirectKHR +CmdBuildAccelerationStructuresKHR: ProcCmdBuildAccelerationStructuresKHR +CmdClearAttachments: ProcCmdClearAttachments +CmdClearColorImage: ProcCmdClearColorImage +CmdClearDepthStencilImage: ProcCmdClearDepthStencilImage +CmdCopyAccelerationStructureKHR: ProcCmdCopyAccelerationStructureKHR +CmdCopyAccelerationStructureNV: ProcCmdCopyAccelerationStructureNV +CmdCopyAccelerationStructureToMemoryKHR: ProcCmdCopyAccelerationStructureToMemoryKHR +CmdCopyBuffer: ProcCmdCopyBuffer +CmdCopyBuffer2: ProcCmdCopyBuffer2 +CmdCopyBuffer2KHR: ProcCmdCopyBuffer2KHR +CmdCopyBufferToImage: ProcCmdCopyBufferToImage +CmdCopyBufferToImage2: ProcCmdCopyBufferToImage2 +CmdCopyBufferToImage2KHR: ProcCmdCopyBufferToImage2KHR +CmdCopyImage: ProcCmdCopyImage +CmdCopyImage2: ProcCmdCopyImage2 +CmdCopyImage2KHR: ProcCmdCopyImage2KHR +CmdCopyImageToBuffer: ProcCmdCopyImageToBuffer +CmdCopyImageToBuffer2: ProcCmdCopyImageToBuffer2 +CmdCopyImageToBuffer2KHR: ProcCmdCopyImageToBuffer2KHR +CmdCopyMemoryToAccelerationStructureKHR: ProcCmdCopyMemoryToAccelerationStructureKHR +CmdCopyQueryPoolResults: ProcCmdCopyQueryPoolResults +CmdCuLaunchKernelNVX: ProcCmdCuLaunchKernelNVX +CmdDebugMarkerBeginEXT: ProcCmdDebugMarkerBeginEXT +CmdDebugMarkerEndEXT: ProcCmdDebugMarkerEndEXT +CmdDebugMarkerInsertEXT: ProcCmdDebugMarkerInsertEXT +CmdDispatch: ProcCmdDispatch +CmdDispatchBase: ProcCmdDispatchBase +CmdDispatchBaseKHR: ProcCmdDispatchBaseKHR +CmdDispatchIndirect: ProcCmdDispatchIndirect +CmdDraw: ProcCmdDraw +CmdDrawIndexed: ProcCmdDrawIndexed +CmdDrawIndexedIndirect: ProcCmdDrawIndexedIndirect +CmdDrawIndexedIndirectCount: ProcCmdDrawIndexedIndirectCount +CmdDrawIndexedIndirectCountAMD: ProcCmdDrawIndexedIndirectCountAMD +CmdDrawIndexedIndirectCountKHR: ProcCmdDrawIndexedIndirectCountKHR +CmdDrawIndirect: ProcCmdDrawIndirect +CmdDrawIndirectByteCountEXT: ProcCmdDrawIndirectByteCountEXT +CmdDrawIndirectCount: ProcCmdDrawIndirectCount +CmdDrawIndirectCountAMD: ProcCmdDrawIndirectCountAMD +CmdDrawIndirectCountKHR: ProcCmdDrawIndirectCountKHR +CmdDrawMeshTasksIndirectCountNV: ProcCmdDrawMeshTasksIndirectCountNV +CmdDrawMeshTasksIndirectNV: ProcCmdDrawMeshTasksIndirectNV +CmdDrawMeshTasksNV: ProcCmdDrawMeshTasksNV +CmdDrawMultiEXT: ProcCmdDrawMultiEXT +CmdDrawMultiIndexedEXT: ProcCmdDrawMultiIndexedEXT +CmdEndConditionalRenderingEXT: ProcCmdEndConditionalRenderingEXT +CmdEndDebugUtilsLabelEXT: ProcCmdEndDebugUtilsLabelEXT +CmdEndQuery: ProcCmdEndQuery +CmdEndQueryIndexedEXT: ProcCmdEndQueryIndexedEXT +CmdEndRenderPass: ProcCmdEndRenderPass +CmdEndRenderPass2: ProcCmdEndRenderPass2 +CmdEndRenderPass2KHR: ProcCmdEndRenderPass2KHR +CmdEndRendering: ProcCmdEndRendering +CmdEndRenderingKHR: ProcCmdEndRenderingKHR +CmdEndTransformFeedbackEXT: ProcCmdEndTransformFeedbackEXT +CmdExecuteCommands: ProcCmdExecuteCommands +CmdExecuteGeneratedCommandsNV: ProcCmdExecuteGeneratedCommandsNV +CmdFillBuffer: ProcCmdFillBuffer +CmdInsertDebugUtilsLabelEXT: ProcCmdInsertDebugUtilsLabelEXT +CmdNextSubpass: ProcCmdNextSubpass +CmdNextSubpass2: ProcCmdNextSubpass2 +CmdNextSubpass2KHR: ProcCmdNextSubpass2KHR +CmdPipelineBarrier: ProcCmdPipelineBarrier +CmdPipelineBarrier2: ProcCmdPipelineBarrier2 +CmdPipelineBarrier2KHR: ProcCmdPipelineBarrier2KHR +CmdPreprocessGeneratedCommandsNV: ProcCmdPreprocessGeneratedCommandsNV +CmdPushConstants: ProcCmdPushConstants +CmdPushDescriptorSetKHR: ProcCmdPushDescriptorSetKHR +CmdPushDescriptorSetWithTemplateKHR: ProcCmdPushDescriptorSetWithTemplateKHR +CmdResetEvent: ProcCmdResetEvent +CmdResetEvent2: ProcCmdResetEvent2 +CmdResetEvent2KHR: ProcCmdResetEvent2KHR +CmdResetQueryPool: ProcCmdResetQueryPool +CmdResolveImage: ProcCmdResolveImage +CmdResolveImage2: ProcCmdResolveImage2 +CmdResolveImage2KHR: ProcCmdResolveImage2KHR +CmdSetBlendConstants: ProcCmdSetBlendConstants +CmdSetCheckpointNV: ProcCmdSetCheckpointNV +CmdSetCoarseSampleOrderNV: ProcCmdSetCoarseSampleOrderNV +CmdSetCullMode: ProcCmdSetCullMode +CmdSetCullModeEXT: ProcCmdSetCullModeEXT +CmdSetDepthBias: ProcCmdSetDepthBias +CmdSetDepthBiasEnable: ProcCmdSetDepthBiasEnable +CmdSetDepthBiasEnableEXT: ProcCmdSetDepthBiasEnableEXT +CmdSetDepthBounds: ProcCmdSetDepthBounds +CmdSetDepthBoundsTestEnable: ProcCmdSetDepthBoundsTestEnable +CmdSetDepthBoundsTestEnableEXT: ProcCmdSetDepthBoundsTestEnableEXT +CmdSetDepthCompareOp: ProcCmdSetDepthCompareOp +CmdSetDepthCompareOpEXT: ProcCmdSetDepthCompareOpEXT +CmdSetDepthTestEnable: ProcCmdSetDepthTestEnable +CmdSetDepthTestEnableEXT: ProcCmdSetDepthTestEnableEXT +CmdSetDepthWriteEnable: ProcCmdSetDepthWriteEnable +CmdSetDepthWriteEnableEXT: ProcCmdSetDepthWriteEnableEXT +CmdSetDeviceMask: ProcCmdSetDeviceMask +CmdSetDeviceMaskKHR: ProcCmdSetDeviceMaskKHR +CmdSetDiscardRectangleEXT: ProcCmdSetDiscardRectangleEXT +CmdSetEvent: ProcCmdSetEvent +CmdSetEvent2: ProcCmdSetEvent2 +CmdSetEvent2KHR: ProcCmdSetEvent2KHR +CmdSetExclusiveScissorNV: ProcCmdSetExclusiveScissorNV +CmdSetFragmentShadingRateEnumNV: ProcCmdSetFragmentShadingRateEnumNV +CmdSetFragmentShadingRateKHR: ProcCmdSetFragmentShadingRateKHR +CmdSetFrontFace: ProcCmdSetFrontFace +CmdSetFrontFaceEXT: ProcCmdSetFrontFaceEXT +CmdSetLineStippleEXT: ProcCmdSetLineStippleEXT +CmdSetLineWidth: ProcCmdSetLineWidth +CmdSetLogicOpEXT: ProcCmdSetLogicOpEXT +CmdSetPatchControlPointsEXT: ProcCmdSetPatchControlPointsEXT +CmdSetPerformanceMarkerINTEL: ProcCmdSetPerformanceMarkerINTEL +CmdSetPerformanceOverrideINTEL: ProcCmdSetPerformanceOverrideINTEL +CmdSetPerformanceStreamMarkerINTEL: ProcCmdSetPerformanceStreamMarkerINTEL +CmdSetPrimitiveRestartEnable: ProcCmdSetPrimitiveRestartEnable +CmdSetPrimitiveRestartEnableEXT: ProcCmdSetPrimitiveRestartEnableEXT +CmdSetPrimitiveTopology: ProcCmdSetPrimitiveTopology +CmdSetPrimitiveTopologyEXT: ProcCmdSetPrimitiveTopologyEXT +CmdSetRasterizerDiscardEnable: ProcCmdSetRasterizerDiscardEnable +CmdSetRasterizerDiscardEnableEXT: ProcCmdSetRasterizerDiscardEnableEXT +CmdSetRayTracingPipelineStackSizeKHR: ProcCmdSetRayTracingPipelineStackSizeKHR +CmdSetSampleLocationsEXT: ProcCmdSetSampleLocationsEXT +CmdSetScissor: ProcCmdSetScissor +CmdSetScissorWithCount: ProcCmdSetScissorWithCount +CmdSetScissorWithCountEXT: ProcCmdSetScissorWithCountEXT +CmdSetStencilCompareMask: ProcCmdSetStencilCompareMask +CmdSetStencilOp: ProcCmdSetStencilOp +CmdSetStencilOpEXT: ProcCmdSetStencilOpEXT +CmdSetStencilReference: ProcCmdSetStencilReference +CmdSetStencilTestEnable: ProcCmdSetStencilTestEnable +CmdSetStencilTestEnableEXT: ProcCmdSetStencilTestEnableEXT +CmdSetStencilWriteMask: ProcCmdSetStencilWriteMask +CmdSetVertexInputEXT: ProcCmdSetVertexInputEXT +CmdSetViewport: ProcCmdSetViewport +CmdSetViewportShadingRatePaletteNV: ProcCmdSetViewportShadingRatePaletteNV +CmdSetViewportWScalingNV: ProcCmdSetViewportWScalingNV +CmdSetViewportWithCount: ProcCmdSetViewportWithCount +CmdSetViewportWithCountEXT: ProcCmdSetViewportWithCountEXT +CmdSubpassShadingHUAWEI: ProcCmdSubpassShadingHUAWEI +CmdTraceRaysIndirectKHR: ProcCmdTraceRaysIndirectKHR +CmdTraceRaysKHR: ProcCmdTraceRaysKHR +CmdTraceRaysNV: ProcCmdTraceRaysNV +CmdUpdateBuffer: ProcCmdUpdateBuffer +CmdWaitEvents: ProcCmdWaitEvents +CmdWaitEvents2: ProcCmdWaitEvents2 +CmdWaitEvents2KHR: ProcCmdWaitEvents2KHR +CmdWriteAccelerationStructuresPropertiesKHR: ProcCmdWriteAccelerationStructuresPropertiesKHR +CmdWriteAccelerationStructuresPropertiesNV: ProcCmdWriteAccelerationStructuresPropertiesNV +CmdWriteBufferMarker2AMD: ProcCmdWriteBufferMarker2AMD +CmdWriteBufferMarkerAMD: ProcCmdWriteBufferMarkerAMD +CmdWriteTimestamp: ProcCmdWriteTimestamp +CmdWriteTimestamp2: ProcCmdWriteTimestamp2 +CmdWriteTimestamp2KHR: ProcCmdWriteTimestamp2KHR +CompileDeferredNV: ProcCompileDeferredNV +CopyAccelerationStructureKHR: ProcCopyAccelerationStructureKHR +CopyAccelerationStructureToMemoryKHR: ProcCopyAccelerationStructureToMemoryKHR +CopyMemoryToAccelerationStructureKHR: ProcCopyMemoryToAccelerationStructureKHR +CreateAccelerationStructureKHR: ProcCreateAccelerationStructureKHR +CreateAccelerationStructureNV: ProcCreateAccelerationStructureNV +CreateBuffer: ProcCreateBuffer +CreateBufferView: ProcCreateBufferView +CreateCommandPool: ProcCreateCommandPool +CreateComputePipelines: ProcCreateComputePipelines +CreateCuFunctionNVX: ProcCreateCuFunctionNVX +CreateCuModuleNVX: ProcCreateCuModuleNVX +CreateDeferredOperationKHR: ProcCreateDeferredOperationKHR +CreateDescriptorPool: ProcCreateDescriptorPool +CreateDescriptorSetLayout: ProcCreateDescriptorSetLayout +CreateDescriptorUpdateTemplate: ProcCreateDescriptorUpdateTemplate +CreateDescriptorUpdateTemplateKHR: ProcCreateDescriptorUpdateTemplateKHR +CreateEvent: ProcCreateEvent +CreateFence: ProcCreateFence +CreateFramebuffer: ProcCreateFramebuffer +CreateGraphicsPipelines: ProcCreateGraphicsPipelines +CreateImage: ProcCreateImage +CreateImageView: ProcCreateImageView +CreateIndirectCommandsLayoutNV: ProcCreateIndirectCommandsLayoutNV +CreatePipelineCache: ProcCreatePipelineCache +CreatePipelineLayout: ProcCreatePipelineLayout +CreatePrivateDataSlot: ProcCreatePrivateDataSlot +CreatePrivateDataSlotEXT: ProcCreatePrivateDataSlotEXT +CreateQueryPool: ProcCreateQueryPool +CreateRayTracingPipelinesKHR: ProcCreateRayTracingPipelinesKHR +CreateRayTracingPipelinesNV: ProcCreateRayTracingPipelinesNV +CreateRenderPass: ProcCreateRenderPass +CreateRenderPass2: ProcCreateRenderPass2 +CreateRenderPass2KHR: ProcCreateRenderPass2KHR +CreateSampler: ProcCreateSampler +CreateSamplerYcbcrConversion: ProcCreateSamplerYcbcrConversion +CreateSamplerYcbcrConversionKHR: ProcCreateSamplerYcbcrConversionKHR +CreateSemaphore: ProcCreateSemaphore +CreateShaderModule: ProcCreateShaderModule +CreateSharedSwapchainsKHR: ProcCreateSharedSwapchainsKHR +CreateSwapchainKHR: ProcCreateSwapchainKHR +CreateValidationCacheEXT: ProcCreateValidationCacheEXT +DebugMarkerSetObjectNameEXT: ProcDebugMarkerSetObjectNameEXT +DebugMarkerSetObjectTagEXT: ProcDebugMarkerSetObjectTagEXT +DeferredOperationJoinKHR: ProcDeferredOperationJoinKHR +DestroyAccelerationStructureKHR: ProcDestroyAccelerationStructureKHR +DestroyAccelerationStructureNV: ProcDestroyAccelerationStructureNV +DestroyBuffer: ProcDestroyBuffer +DestroyBufferView: ProcDestroyBufferView +DestroyCommandPool: ProcDestroyCommandPool +DestroyCuFunctionNVX: ProcDestroyCuFunctionNVX +DestroyCuModuleNVX: ProcDestroyCuModuleNVX +DestroyDeferredOperationKHR: ProcDestroyDeferredOperationKHR +DestroyDescriptorPool: ProcDestroyDescriptorPool +DestroyDescriptorSetLayout: ProcDestroyDescriptorSetLayout +DestroyDescriptorUpdateTemplate: ProcDestroyDescriptorUpdateTemplate +DestroyDescriptorUpdateTemplateKHR: ProcDestroyDescriptorUpdateTemplateKHR +DestroyDevice: ProcDestroyDevice +DestroyEvent: ProcDestroyEvent +DestroyFence: ProcDestroyFence +DestroyFramebuffer: ProcDestroyFramebuffer +DestroyImage: ProcDestroyImage +DestroyImageView: ProcDestroyImageView +DestroyIndirectCommandsLayoutNV: ProcDestroyIndirectCommandsLayoutNV +DestroyPipeline: ProcDestroyPipeline +DestroyPipelineCache: ProcDestroyPipelineCache +DestroyPipelineLayout: ProcDestroyPipelineLayout +DestroyPrivateDataSlot: ProcDestroyPrivateDataSlot +DestroyPrivateDataSlotEXT: ProcDestroyPrivateDataSlotEXT +DestroyQueryPool: ProcDestroyQueryPool +DestroyRenderPass: ProcDestroyRenderPass +DestroySampler: ProcDestroySampler +DestroySamplerYcbcrConversion: ProcDestroySamplerYcbcrConversion +DestroySamplerYcbcrConversionKHR: ProcDestroySamplerYcbcrConversionKHR +DestroySemaphore: ProcDestroySemaphore +DestroyShaderModule: ProcDestroyShaderModule +DestroySwapchainKHR: ProcDestroySwapchainKHR +DestroyValidationCacheEXT: ProcDestroyValidationCacheEXT +DeviceWaitIdle: ProcDeviceWaitIdle +DisplayPowerControlEXT: ProcDisplayPowerControlEXT +EndCommandBuffer: ProcEndCommandBuffer +FlushMappedMemoryRanges: ProcFlushMappedMemoryRanges +FreeCommandBuffers: ProcFreeCommandBuffers +FreeDescriptorSets: ProcFreeDescriptorSets +FreeMemory: ProcFreeMemory +GetAccelerationStructureBuildSizesKHR: ProcGetAccelerationStructureBuildSizesKHR +GetAccelerationStructureDeviceAddressKHR: ProcGetAccelerationStructureDeviceAddressKHR +GetAccelerationStructureHandleNV: ProcGetAccelerationStructureHandleNV +GetAccelerationStructureMemoryRequirementsNV: ProcGetAccelerationStructureMemoryRequirementsNV +GetBufferDeviceAddress: ProcGetBufferDeviceAddress +GetBufferDeviceAddressEXT: ProcGetBufferDeviceAddressEXT +GetBufferDeviceAddressKHR: ProcGetBufferDeviceAddressKHR +GetBufferMemoryRequirements: ProcGetBufferMemoryRequirements +GetBufferMemoryRequirements2: ProcGetBufferMemoryRequirements2 +GetBufferMemoryRequirements2KHR: ProcGetBufferMemoryRequirements2KHR +GetBufferOpaqueCaptureAddress: ProcGetBufferOpaqueCaptureAddress +GetBufferOpaqueCaptureAddressKHR: ProcGetBufferOpaqueCaptureAddressKHR +GetCalibratedTimestampsEXT: ProcGetCalibratedTimestampsEXT +GetDeferredOperationMaxConcurrencyKHR: ProcGetDeferredOperationMaxConcurrencyKHR +GetDeferredOperationResultKHR: ProcGetDeferredOperationResultKHR +GetDescriptorSetHostMappingVALVE: ProcGetDescriptorSetHostMappingVALVE +GetDescriptorSetLayoutHostMappingInfoVALVE: ProcGetDescriptorSetLayoutHostMappingInfoVALVE +GetDescriptorSetLayoutSupport: ProcGetDescriptorSetLayoutSupport +GetDescriptorSetLayoutSupportKHR: ProcGetDescriptorSetLayoutSupportKHR +GetDeviceAccelerationStructureCompatibilityKHR: ProcGetDeviceAccelerationStructureCompatibilityKHR +GetDeviceBufferMemoryRequirements: ProcGetDeviceBufferMemoryRequirements +GetDeviceBufferMemoryRequirementsKHR: ProcGetDeviceBufferMemoryRequirementsKHR +GetDeviceGroupPeerMemoryFeatures: ProcGetDeviceGroupPeerMemoryFeatures +GetDeviceGroupPeerMemoryFeaturesKHR: ProcGetDeviceGroupPeerMemoryFeaturesKHR +GetDeviceGroupPresentCapabilitiesKHR: ProcGetDeviceGroupPresentCapabilitiesKHR +GetDeviceGroupSurfacePresentModes2EXT: ProcGetDeviceGroupSurfacePresentModes2EXT +GetDeviceGroupSurfacePresentModesKHR: ProcGetDeviceGroupSurfacePresentModesKHR +GetDeviceImageMemoryRequirements: ProcGetDeviceImageMemoryRequirements +GetDeviceImageMemoryRequirementsKHR: ProcGetDeviceImageMemoryRequirementsKHR +GetDeviceImageSparseMemoryRequirements: ProcGetDeviceImageSparseMemoryRequirements +GetDeviceImageSparseMemoryRequirementsKHR: ProcGetDeviceImageSparseMemoryRequirementsKHR +GetDeviceMemoryCommitment: ProcGetDeviceMemoryCommitment +GetDeviceMemoryOpaqueCaptureAddress: ProcGetDeviceMemoryOpaqueCaptureAddress +GetDeviceMemoryOpaqueCaptureAddressKHR: ProcGetDeviceMemoryOpaqueCaptureAddressKHR +GetDeviceProcAddr: ProcGetDeviceProcAddr +GetDeviceQueue: ProcGetDeviceQueue +GetDeviceQueue2: ProcGetDeviceQueue2 +GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI: ProcGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI +GetEventStatus: ProcGetEventStatus +GetFenceFdKHR: ProcGetFenceFdKHR +GetFenceStatus: ProcGetFenceStatus +GetFenceWin32HandleKHR: ProcGetFenceWin32HandleKHR +GetGeneratedCommandsMemoryRequirementsNV: ProcGetGeneratedCommandsMemoryRequirementsNV +GetImageDrmFormatModifierPropertiesEXT: ProcGetImageDrmFormatModifierPropertiesEXT +GetImageMemoryRequirements: ProcGetImageMemoryRequirements +GetImageMemoryRequirements2: ProcGetImageMemoryRequirements2 +GetImageMemoryRequirements2KHR: ProcGetImageMemoryRequirements2KHR +GetImageSparseMemoryRequirements: ProcGetImageSparseMemoryRequirements +GetImageSparseMemoryRequirements2: ProcGetImageSparseMemoryRequirements2 +GetImageSparseMemoryRequirements2KHR: ProcGetImageSparseMemoryRequirements2KHR +GetImageSubresourceLayout: ProcGetImageSubresourceLayout +GetImageViewAddressNVX: ProcGetImageViewAddressNVX +GetImageViewHandleNVX: ProcGetImageViewHandleNVX +GetMemoryFdKHR: ProcGetMemoryFdKHR +GetMemoryFdPropertiesKHR: ProcGetMemoryFdPropertiesKHR +GetMemoryHostPointerPropertiesEXT: ProcGetMemoryHostPointerPropertiesEXT +GetMemoryRemoteAddressNV: ProcGetMemoryRemoteAddressNV +GetMemoryWin32HandleKHR: ProcGetMemoryWin32HandleKHR +GetMemoryWin32HandleNV: ProcGetMemoryWin32HandleNV +GetMemoryWin32HandlePropertiesKHR: ProcGetMemoryWin32HandlePropertiesKHR +GetPastPresentationTimingGOOGLE: ProcGetPastPresentationTimingGOOGLE +GetPerformanceParameterINTEL: ProcGetPerformanceParameterINTEL +GetPipelineCacheData: ProcGetPipelineCacheData +GetPipelineExecutableInternalRepresentationsKHR: ProcGetPipelineExecutableInternalRepresentationsKHR +GetPipelineExecutablePropertiesKHR: ProcGetPipelineExecutablePropertiesKHR +GetPipelineExecutableStatisticsKHR: ProcGetPipelineExecutableStatisticsKHR +GetPrivateData: ProcGetPrivateData +GetPrivateDataEXT: ProcGetPrivateDataEXT +GetQueryPoolResults: ProcGetQueryPoolResults +GetQueueCheckpointData2NV: ProcGetQueueCheckpointData2NV +GetQueueCheckpointDataNV: ProcGetQueueCheckpointDataNV +GetRayTracingCaptureReplayShaderGroupHandlesKHR: ProcGetRayTracingCaptureReplayShaderGroupHandlesKHR +GetRayTracingShaderGroupHandlesKHR: ProcGetRayTracingShaderGroupHandlesKHR +GetRayTracingShaderGroupHandlesNV: ProcGetRayTracingShaderGroupHandlesNV +GetRayTracingShaderGroupStackSizeKHR: ProcGetRayTracingShaderGroupStackSizeKHR +GetRefreshCycleDurationGOOGLE: ProcGetRefreshCycleDurationGOOGLE +GetRenderAreaGranularity: ProcGetRenderAreaGranularity +GetSemaphoreCounterValue: ProcGetSemaphoreCounterValue +GetSemaphoreCounterValueKHR: ProcGetSemaphoreCounterValueKHR +GetSemaphoreFdKHR: ProcGetSemaphoreFdKHR +GetSemaphoreWin32HandleKHR: ProcGetSemaphoreWin32HandleKHR +GetShaderInfoAMD: ProcGetShaderInfoAMD +GetSwapchainCounterEXT: ProcGetSwapchainCounterEXT +GetSwapchainImagesKHR: ProcGetSwapchainImagesKHR +GetSwapchainStatusKHR: ProcGetSwapchainStatusKHR +GetValidationCacheDataEXT: ProcGetValidationCacheDataEXT +ImportFenceFdKHR: ProcImportFenceFdKHR +ImportFenceWin32HandleKHR: ProcImportFenceWin32HandleKHR +ImportSemaphoreFdKHR: ProcImportSemaphoreFdKHR +ImportSemaphoreWin32HandleKHR: ProcImportSemaphoreWin32HandleKHR +InitializePerformanceApiINTEL: ProcInitializePerformanceApiINTEL +InvalidateMappedMemoryRanges: ProcInvalidateMappedMemoryRanges +MapMemory: ProcMapMemory +MergePipelineCaches: ProcMergePipelineCaches +MergeValidationCachesEXT: ProcMergeValidationCachesEXT +QueueBeginDebugUtilsLabelEXT: ProcQueueBeginDebugUtilsLabelEXT +QueueBindSparse: ProcQueueBindSparse +QueueEndDebugUtilsLabelEXT: ProcQueueEndDebugUtilsLabelEXT +QueueInsertDebugUtilsLabelEXT: ProcQueueInsertDebugUtilsLabelEXT +QueuePresentKHR: ProcQueuePresentKHR +QueueSetPerformanceConfigurationINTEL: ProcQueueSetPerformanceConfigurationINTEL +QueueSubmit: ProcQueueSubmit +QueueSubmit2: ProcQueueSubmit2 +QueueSubmit2KHR: ProcQueueSubmit2KHR +QueueWaitIdle: ProcQueueWaitIdle +RegisterDeviceEventEXT: ProcRegisterDeviceEventEXT +RegisterDisplayEventEXT: ProcRegisterDisplayEventEXT +ReleaseFullScreenExclusiveModeEXT: ProcReleaseFullScreenExclusiveModeEXT +ReleasePerformanceConfigurationINTEL: ProcReleasePerformanceConfigurationINTEL +ReleaseProfilingLockKHR: ProcReleaseProfilingLockKHR +ResetCommandBuffer: ProcResetCommandBuffer +ResetCommandPool: ProcResetCommandPool +ResetDescriptorPool: ProcResetDescriptorPool +ResetEvent: ProcResetEvent +ResetFences: ProcResetFences +ResetQueryPool: ProcResetQueryPool +ResetQueryPoolEXT: ProcResetQueryPoolEXT +SetDebugUtilsObjectNameEXT: ProcSetDebugUtilsObjectNameEXT +SetDebugUtilsObjectTagEXT: ProcSetDebugUtilsObjectTagEXT +SetDeviceMemoryPriorityEXT: ProcSetDeviceMemoryPriorityEXT +SetEvent: ProcSetEvent +SetHdrMetadataEXT: ProcSetHdrMetadataEXT +SetLocalDimmingAMD: ProcSetLocalDimmingAMD +SetPrivateData: ProcSetPrivateData +SetPrivateDataEXT: ProcSetPrivateDataEXT +SignalSemaphore: ProcSignalSemaphore +SignalSemaphoreKHR: ProcSignalSemaphoreKHR +TrimCommandPool: ProcTrimCommandPool +TrimCommandPoolKHR: ProcTrimCommandPoolKHR +UninitializePerformanceApiINTEL: ProcUninitializePerformanceApiINTEL +UnmapMemory: ProcUnmapMemory +UpdateDescriptorSetWithTemplate: ProcUpdateDescriptorSetWithTemplate +UpdateDescriptorSetWithTemplateKHR: ProcUpdateDescriptorSetWithTemplateKHR +UpdateDescriptorSets: ProcUpdateDescriptorSets +WaitForFences: ProcWaitForFences +WaitForPresentKHR: ProcWaitForPresentKHR +WaitSemaphores: ProcWaitSemaphores +WaitSemaphoresKHR: ProcWaitSemaphoresKHR +WriteAccelerationStructuresPropertiesKHR: ProcWriteAccelerationStructuresPropertiesKHR + +load_proc_addresses_custom :: proc(set_proc_address: SetProcAddressType) { + // Loader Procedures + set_proc_address(&CreateInstance, "vkCreateInstance") + set_proc_address(&DebugUtilsMessengerCallbackEXT, "vkDebugUtilsMessengerCallbackEXT") + set_proc_address(&DeviceMemoryReportCallbackEXT, "vkDeviceMemoryReportCallbackEXT") + set_proc_address(&EnumerateInstanceExtensionProperties, "vkEnumerateInstanceExtensionProperties") + set_proc_address(&EnumerateInstanceLayerProperties, "vkEnumerateInstanceLayerProperties") + set_proc_address(&EnumerateInstanceVersion, "vkEnumerateInstanceVersion") + set_proc_address(&GetInstanceProcAddr, "vkGetInstanceProcAddr") + + // Instance Procedures + set_proc_address(&AcquireDrmDisplayEXT, "vkAcquireDrmDisplayEXT") + set_proc_address(&AcquireWinrtDisplayNV, "vkAcquireWinrtDisplayNV") + set_proc_address(&CreateDebugReportCallbackEXT, "vkCreateDebugReportCallbackEXT") + set_proc_address(&CreateDebugUtilsMessengerEXT, "vkCreateDebugUtilsMessengerEXT") + set_proc_address(&CreateDevice, "vkCreateDevice") + set_proc_address(&CreateDisplayModeKHR, "vkCreateDisplayModeKHR") + set_proc_address(&CreateDisplayPlaneSurfaceKHR, "vkCreateDisplayPlaneSurfaceKHR") + set_proc_address(&CreateHeadlessSurfaceEXT, "vkCreateHeadlessSurfaceEXT") + set_proc_address(&CreateIOSSurfaceMVK, "vkCreateIOSSurfaceMVK") + set_proc_address(&CreateMacOSSurfaceMVK, "vkCreateMacOSSurfaceMVK") + set_proc_address(&CreateMetalSurfaceEXT, "vkCreateMetalSurfaceEXT") + set_proc_address(&CreateWaylandSurfaceKHR, "vkCreateWaylandSurfaceKHR") + set_proc_address(&CreateWin32SurfaceKHR, "vkCreateWin32SurfaceKHR") + set_proc_address(&DebugReportMessageEXT, "vkDebugReportMessageEXT") + set_proc_address(&DestroyDebugReportCallbackEXT, "vkDestroyDebugReportCallbackEXT") + set_proc_address(&DestroyDebugUtilsMessengerEXT, "vkDestroyDebugUtilsMessengerEXT") + set_proc_address(&DestroyInstance, "vkDestroyInstance") + set_proc_address(&DestroySurfaceKHR, "vkDestroySurfaceKHR") + set_proc_address(&EnumerateDeviceExtensionProperties, "vkEnumerateDeviceExtensionProperties") + set_proc_address(&EnumerateDeviceLayerProperties, "vkEnumerateDeviceLayerProperties") + set_proc_address(&EnumeratePhysicalDeviceGroups, "vkEnumeratePhysicalDeviceGroups") + set_proc_address(&EnumeratePhysicalDeviceGroupsKHR, "vkEnumeratePhysicalDeviceGroupsKHR") + set_proc_address(&EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR") + set_proc_address(&EnumeratePhysicalDevices, "vkEnumeratePhysicalDevices") + set_proc_address(&GetDisplayModeProperties2KHR, "vkGetDisplayModeProperties2KHR") + set_proc_address(&GetDisplayModePropertiesKHR, "vkGetDisplayModePropertiesKHR") + set_proc_address(&GetDisplayPlaneCapabilities2KHR, "vkGetDisplayPlaneCapabilities2KHR") + set_proc_address(&GetDisplayPlaneCapabilitiesKHR, "vkGetDisplayPlaneCapabilitiesKHR") + set_proc_address(&GetDisplayPlaneSupportedDisplaysKHR, "vkGetDisplayPlaneSupportedDisplaysKHR") + set_proc_address(&GetDrmDisplayEXT, "vkGetDrmDisplayEXT") + set_proc_address(&GetPhysicalDeviceCalibrateableTimeDomainsEXT, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT") + set_proc_address(&GetPhysicalDeviceCooperativeMatrixPropertiesNV, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV") + set_proc_address(&GetPhysicalDeviceDisplayPlaneProperties2KHR, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR") + set_proc_address(&GetPhysicalDeviceDisplayPlanePropertiesKHR, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR") + set_proc_address(&GetPhysicalDeviceDisplayProperties2KHR, "vkGetPhysicalDeviceDisplayProperties2KHR") + set_proc_address(&GetPhysicalDeviceDisplayPropertiesKHR, "vkGetPhysicalDeviceDisplayPropertiesKHR") + set_proc_address(&GetPhysicalDeviceExternalBufferProperties, "vkGetPhysicalDeviceExternalBufferProperties") + set_proc_address(&GetPhysicalDeviceExternalBufferPropertiesKHR, "vkGetPhysicalDeviceExternalBufferPropertiesKHR") + set_proc_address(&GetPhysicalDeviceExternalFenceProperties, "vkGetPhysicalDeviceExternalFenceProperties") + set_proc_address(&GetPhysicalDeviceExternalFencePropertiesKHR, "vkGetPhysicalDeviceExternalFencePropertiesKHR") + set_proc_address(&GetPhysicalDeviceExternalImageFormatPropertiesNV, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV") + set_proc_address(&GetPhysicalDeviceExternalSemaphoreProperties, "vkGetPhysicalDeviceExternalSemaphoreProperties") + set_proc_address(&GetPhysicalDeviceExternalSemaphorePropertiesKHR, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR") + set_proc_address(&GetPhysicalDeviceFeatures, "vkGetPhysicalDeviceFeatures") + set_proc_address(&GetPhysicalDeviceFeatures2, "vkGetPhysicalDeviceFeatures2") + set_proc_address(&GetPhysicalDeviceFeatures2KHR, "vkGetPhysicalDeviceFeatures2KHR") + set_proc_address(&GetPhysicalDeviceFormatProperties, "vkGetPhysicalDeviceFormatProperties") + set_proc_address(&GetPhysicalDeviceFormatProperties2, "vkGetPhysicalDeviceFormatProperties2") + set_proc_address(&GetPhysicalDeviceFormatProperties2KHR, "vkGetPhysicalDeviceFormatProperties2KHR") + set_proc_address(&GetPhysicalDeviceFragmentShadingRatesKHR, "vkGetPhysicalDeviceFragmentShadingRatesKHR") + set_proc_address(&GetPhysicalDeviceImageFormatProperties, "vkGetPhysicalDeviceImageFormatProperties") + set_proc_address(&GetPhysicalDeviceImageFormatProperties2, "vkGetPhysicalDeviceImageFormatProperties2") + set_proc_address(&GetPhysicalDeviceImageFormatProperties2KHR, "vkGetPhysicalDeviceImageFormatProperties2KHR") + set_proc_address(&GetPhysicalDeviceMemoryProperties, "vkGetPhysicalDeviceMemoryProperties") + set_proc_address(&GetPhysicalDeviceMemoryProperties2, "vkGetPhysicalDeviceMemoryProperties2") + set_proc_address(&GetPhysicalDeviceMemoryProperties2KHR, "vkGetPhysicalDeviceMemoryProperties2KHR") + set_proc_address(&GetPhysicalDeviceMultisamplePropertiesEXT, "vkGetPhysicalDeviceMultisamplePropertiesEXT") + set_proc_address(&GetPhysicalDevicePresentRectanglesKHR, "vkGetPhysicalDevicePresentRectanglesKHR") + set_proc_address(&GetPhysicalDeviceProperties, "vkGetPhysicalDeviceProperties") + set_proc_address(&GetPhysicalDeviceProperties2, "vkGetPhysicalDeviceProperties2") + set_proc_address(&GetPhysicalDeviceProperties2KHR, "vkGetPhysicalDeviceProperties2KHR") + set_proc_address(&GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR") + set_proc_address(&GetPhysicalDeviceQueueFamilyProperties, "vkGetPhysicalDeviceQueueFamilyProperties") + set_proc_address(&GetPhysicalDeviceQueueFamilyProperties2, "vkGetPhysicalDeviceQueueFamilyProperties2") + set_proc_address(&GetPhysicalDeviceQueueFamilyProperties2KHR, "vkGetPhysicalDeviceQueueFamilyProperties2KHR") + set_proc_address(&GetPhysicalDeviceSparseImageFormatProperties, "vkGetPhysicalDeviceSparseImageFormatProperties") + set_proc_address(&GetPhysicalDeviceSparseImageFormatProperties2, "vkGetPhysicalDeviceSparseImageFormatProperties2") + set_proc_address(&GetPhysicalDeviceSparseImageFormatProperties2KHR, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR") + set_proc_address(&GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV") + set_proc_address(&GetPhysicalDeviceSurfaceCapabilities2EXT, "vkGetPhysicalDeviceSurfaceCapabilities2EXT") + set_proc_address(&GetPhysicalDeviceSurfaceCapabilities2KHR, "vkGetPhysicalDeviceSurfaceCapabilities2KHR") + set_proc_address(&GetPhysicalDeviceSurfaceCapabilitiesKHR, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR") + set_proc_address(&GetPhysicalDeviceSurfaceFormats2KHR, "vkGetPhysicalDeviceSurfaceFormats2KHR") + set_proc_address(&GetPhysicalDeviceSurfaceFormatsKHR, "vkGetPhysicalDeviceSurfaceFormatsKHR") + set_proc_address(&GetPhysicalDeviceSurfacePresentModes2EXT, "vkGetPhysicalDeviceSurfacePresentModes2EXT") + set_proc_address(&GetPhysicalDeviceSurfacePresentModesKHR, "vkGetPhysicalDeviceSurfacePresentModesKHR") + set_proc_address(&GetPhysicalDeviceSurfaceSupportKHR, "vkGetPhysicalDeviceSurfaceSupportKHR") + set_proc_address(&GetPhysicalDeviceToolProperties, "vkGetPhysicalDeviceToolProperties") + set_proc_address(&GetPhysicalDeviceToolPropertiesEXT, "vkGetPhysicalDeviceToolPropertiesEXT") + set_proc_address(&GetPhysicalDeviceWaylandPresentationSupportKHR, "vkGetPhysicalDeviceWaylandPresentationSupportKHR") + set_proc_address(&GetPhysicalDeviceWin32PresentationSupportKHR, "vkGetPhysicalDeviceWin32PresentationSupportKHR") + set_proc_address(&GetWinrtDisplayNV, "vkGetWinrtDisplayNV") + set_proc_address(&ReleaseDisplayEXT, "vkReleaseDisplayEXT") + set_proc_address(&SubmitDebugUtilsMessageEXT, "vkSubmitDebugUtilsMessageEXT") + + // Device Procedures + set_proc_address(&AcquireFullScreenExclusiveModeEXT, "vkAcquireFullScreenExclusiveModeEXT") + set_proc_address(&AcquireNextImage2KHR, "vkAcquireNextImage2KHR") + set_proc_address(&AcquireNextImageKHR, "vkAcquireNextImageKHR") + set_proc_address(&AcquirePerformanceConfigurationINTEL, "vkAcquirePerformanceConfigurationINTEL") + set_proc_address(&AcquireProfilingLockKHR, "vkAcquireProfilingLockKHR") + set_proc_address(&AllocateCommandBuffers, "vkAllocateCommandBuffers") + set_proc_address(&AllocateDescriptorSets, "vkAllocateDescriptorSets") + set_proc_address(&AllocateMemory, "vkAllocateMemory") + set_proc_address(&BeginCommandBuffer, "vkBeginCommandBuffer") + set_proc_address(&BindAccelerationStructureMemoryNV, "vkBindAccelerationStructureMemoryNV") + set_proc_address(&BindBufferMemory, "vkBindBufferMemory") + set_proc_address(&BindBufferMemory2, "vkBindBufferMemory2") + set_proc_address(&BindBufferMemory2KHR, "vkBindBufferMemory2KHR") + set_proc_address(&BindImageMemory, "vkBindImageMemory") + set_proc_address(&BindImageMemory2, "vkBindImageMemory2") + set_proc_address(&BindImageMemory2KHR, "vkBindImageMemory2KHR") + set_proc_address(&BuildAccelerationStructuresKHR, "vkBuildAccelerationStructuresKHR") + set_proc_address(&CmdBeginConditionalRenderingEXT, "vkCmdBeginConditionalRenderingEXT") + set_proc_address(&CmdBeginDebugUtilsLabelEXT, "vkCmdBeginDebugUtilsLabelEXT") + set_proc_address(&CmdBeginQuery, "vkCmdBeginQuery") + set_proc_address(&CmdBeginQueryIndexedEXT, "vkCmdBeginQueryIndexedEXT") + set_proc_address(&CmdBeginRenderPass, "vkCmdBeginRenderPass") + set_proc_address(&CmdBeginRenderPass2, "vkCmdBeginRenderPass2") + set_proc_address(&CmdBeginRenderPass2KHR, "vkCmdBeginRenderPass2KHR") + set_proc_address(&CmdBeginRendering, "vkCmdBeginRendering") + set_proc_address(&CmdBeginRenderingKHR, "vkCmdBeginRenderingKHR") + set_proc_address(&CmdBeginTransformFeedbackEXT, "vkCmdBeginTransformFeedbackEXT") + set_proc_address(&CmdBindDescriptorSets, "vkCmdBindDescriptorSets") + set_proc_address(&CmdBindIndexBuffer, "vkCmdBindIndexBuffer") + set_proc_address(&CmdBindInvocationMaskHUAWEI, "vkCmdBindInvocationMaskHUAWEI") + set_proc_address(&CmdBindPipeline, "vkCmdBindPipeline") + set_proc_address(&CmdBindPipelineShaderGroupNV, "vkCmdBindPipelineShaderGroupNV") + set_proc_address(&CmdBindShadingRateImageNV, "vkCmdBindShadingRateImageNV") + set_proc_address(&CmdBindTransformFeedbackBuffersEXT, "vkCmdBindTransformFeedbackBuffersEXT") + set_proc_address(&CmdBindVertexBuffers, "vkCmdBindVertexBuffers") + set_proc_address(&CmdBindVertexBuffers2, "vkCmdBindVertexBuffers2") + set_proc_address(&CmdBindVertexBuffers2EXT, "vkCmdBindVertexBuffers2EXT") + set_proc_address(&CmdBlitImage, "vkCmdBlitImage") + set_proc_address(&CmdBlitImage2, "vkCmdBlitImage2") + set_proc_address(&CmdBlitImage2KHR, "vkCmdBlitImage2KHR") + set_proc_address(&CmdBuildAccelerationStructureNV, "vkCmdBuildAccelerationStructureNV") + set_proc_address(&CmdBuildAccelerationStructuresIndirectKHR, "vkCmdBuildAccelerationStructuresIndirectKHR") + set_proc_address(&CmdBuildAccelerationStructuresKHR, "vkCmdBuildAccelerationStructuresKHR") + set_proc_address(&CmdClearAttachments, "vkCmdClearAttachments") + set_proc_address(&CmdClearColorImage, "vkCmdClearColorImage") + set_proc_address(&CmdClearDepthStencilImage, "vkCmdClearDepthStencilImage") + set_proc_address(&CmdCopyAccelerationStructureKHR, "vkCmdCopyAccelerationStructureKHR") + set_proc_address(&CmdCopyAccelerationStructureNV, "vkCmdCopyAccelerationStructureNV") + set_proc_address(&CmdCopyAccelerationStructureToMemoryKHR, "vkCmdCopyAccelerationStructureToMemoryKHR") + set_proc_address(&CmdCopyBuffer, "vkCmdCopyBuffer") + set_proc_address(&CmdCopyBuffer2, "vkCmdCopyBuffer2") + set_proc_address(&CmdCopyBuffer2KHR, "vkCmdCopyBuffer2KHR") + set_proc_address(&CmdCopyBufferToImage, "vkCmdCopyBufferToImage") + set_proc_address(&CmdCopyBufferToImage2, "vkCmdCopyBufferToImage2") + set_proc_address(&CmdCopyBufferToImage2KHR, "vkCmdCopyBufferToImage2KHR") + set_proc_address(&CmdCopyImage, "vkCmdCopyImage") + set_proc_address(&CmdCopyImage2, "vkCmdCopyImage2") + set_proc_address(&CmdCopyImage2KHR, "vkCmdCopyImage2KHR") + set_proc_address(&CmdCopyImageToBuffer, "vkCmdCopyImageToBuffer") + set_proc_address(&CmdCopyImageToBuffer2, "vkCmdCopyImageToBuffer2") + set_proc_address(&CmdCopyImageToBuffer2KHR, "vkCmdCopyImageToBuffer2KHR") + set_proc_address(&CmdCopyMemoryToAccelerationStructureKHR, "vkCmdCopyMemoryToAccelerationStructureKHR") + set_proc_address(&CmdCopyQueryPoolResults, "vkCmdCopyQueryPoolResults") + set_proc_address(&CmdCuLaunchKernelNVX, "vkCmdCuLaunchKernelNVX") + set_proc_address(&CmdDebugMarkerBeginEXT, "vkCmdDebugMarkerBeginEXT") + set_proc_address(&CmdDebugMarkerEndEXT, "vkCmdDebugMarkerEndEXT") + set_proc_address(&CmdDebugMarkerInsertEXT, "vkCmdDebugMarkerInsertEXT") + set_proc_address(&CmdDispatch, "vkCmdDispatch") + set_proc_address(&CmdDispatchBase, "vkCmdDispatchBase") + set_proc_address(&CmdDispatchBaseKHR, "vkCmdDispatchBaseKHR") + set_proc_address(&CmdDispatchIndirect, "vkCmdDispatchIndirect") + set_proc_address(&CmdDraw, "vkCmdDraw") + set_proc_address(&CmdDrawIndexed, "vkCmdDrawIndexed") + set_proc_address(&CmdDrawIndexedIndirect, "vkCmdDrawIndexedIndirect") + set_proc_address(&CmdDrawIndexedIndirectCount, "vkCmdDrawIndexedIndirectCount") + set_proc_address(&CmdDrawIndexedIndirectCountAMD, "vkCmdDrawIndexedIndirectCountAMD") + set_proc_address(&CmdDrawIndexedIndirectCountKHR, "vkCmdDrawIndexedIndirectCountKHR") + set_proc_address(&CmdDrawIndirect, "vkCmdDrawIndirect") + set_proc_address(&CmdDrawIndirectByteCountEXT, "vkCmdDrawIndirectByteCountEXT") + set_proc_address(&CmdDrawIndirectCount, "vkCmdDrawIndirectCount") + set_proc_address(&CmdDrawIndirectCountAMD, "vkCmdDrawIndirectCountAMD") + set_proc_address(&CmdDrawIndirectCountKHR, "vkCmdDrawIndirectCountKHR") + set_proc_address(&CmdDrawMeshTasksIndirectCountNV, "vkCmdDrawMeshTasksIndirectCountNV") + set_proc_address(&CmdDrawMeshTasksIndirectNV, "vkCmdDrawMeshTasksIndirectNV") + set_proc_address(&CmdDrawMeshTasksNV, "vkCmdDrawMeshTasksNV") + set_proc_address(&CmdDrawMultiEXT, "vkCmdDrawMultiEXT") + set_proc_address(&CmdDrawMultiIndexedEXT, "vkCmdDrawMultiIndexedEXT") + set_proc_address(&CmdEndConditionalRenderingEXT, "vkCmdEndConditionalRenderingEXT") + set_proc_address(&CmdEndDebugUtilsLabelEXT, "vkCmdEndDebugUtilsLabelEXT") + set_proc_address(&CmdEndQuery, "vkCmdEndQuery") + set_proc_address(&CmdEndQueryIndexedEXT, "vkCmdEndQueryIndexedEXT") + set_proc_address(&CmdEndRenderPass, "vkCmdEndRenderPass") + set_proc_address(&CmdEndRenderPass2, "vkCmdEndRenderPass2") + set_proc_address(&CmdEndRenderPass2KHR, "vkCmdEndRenderPass2KHR") + set_proc_address(&CmdEndRendering, "vkCmdEndRendering") + set_proc_address(&CmdEndRenderingKHR, "vkCmdEndRenderingKHR") + set_proc_address(&CmdEndTransformFeedbackEXT, "vkCmdEndTransformFeedbackEXT") + set_proc_address(&CmdExecuteCommands, "vkCmdExecuteCommands") + set_proc_address(&CmdExecuteGeneratedCommandsNV, "vkCmdExecuteGeneratedCommandsNV") + set_proc_address(&CmdFillBuffer, "vkCmdFillBuffer") + set_proc_address(&CmdInsertDebugUtilsLabelEXT, "vkCmdInsertDebugUtilsLabelEXT") + set_proc_address(&CmdNextSubpass, "vkCmdNextSubpass") + set_proc_address(&CmdNextSubpass2, "vkCmdNextSubpass2") + set_proc_address(&CmdNextSubpass2KHR, "vkCmdNextSubpass2KHR") + set_proc_address(&CmdPipelineBarrier, "vkCmdPipelineBarrier") + set_proc_address(&CmdPipelineBarrier2, "vkCmdPipelineBarrier2") + set_proc_address(&CmdPipelineBarrier2KHR, "vkCmdPipelineBarrier2KHR") + set_proc_address(&CmdPreprocessGeneratedCommandsNV, "vkCmdPreprocessGeneratedCommandsNV") + set_proc_address(&CmdPushConstants, "vkCmdPushConstants") + set_proc_address(&CmdPushDescriptorSetKHR, "vkCmdPushDescriptorSetKHR") + set_proc_address(&CmdPushDescriptorSetWithTemplateKHR, "vkCmdPushDescriptorSetWithTemplateKHR") + set_proc_address(&CmdResetEvent, "vkCmdResetEvent") + set_proc_address(&CmdResetEvent2, "vkCmdResetEvent2") + set_proc_address(&CmdResetEvent2KHR, "vkCmdResetEvent2KHR") + set_proc_address(&CmdResetQueryPool, "vkCmdResetQueryPool") + set_proc_address(&CmdResolveImage, "vkCmdResolveImage") + set_proc_address(&CmdResolveImage2, "vkCmdResolveImage2") + set_proc_address(&CmdResolveImage2KHR, "vkCmdResolveImage2KHR") + set_proc_address(&CmdSetBlendConstants, "vkCmdSetBlendConstants") + set_proc_address(&CmdSetCheckpointNV, "vkCmdSetCheckpointNV") + set_proc_address(&CmdSetCoarseSampleOrderNV, "vkCmdSetCoarseSampleOrderNV") + set_proc_address(&CmdSetCullMode, "vkCmdSetCullMode") + set_proc_address(&CmdSetCullModeEXT, "vkCmdSetCullModeEXT") + set_proc_address(&CmdSetDepthBias, "vkCmdSetDepthBias") + set_proc_address(&CmdSetDepthBiasEnable, "vkCmdSetDepthBiasEnable") + set_proc_address(&CmdSetDepthBiasEnableEXT, "vkCmdSetDepthBiasEnableEXT") + set_proc_address(&CmdSetDepthBounds, "vkCmdSetDepthBounds") + set_proc_address(&CmdSetDepthBoundsTestEnable, "vkCmdSetDepthBoundsTestEnable") + set_proc_address(&CmdSetDepthBoundsTestEnableEXT, "vkCmdSetDepthBoundsTestEnableEXT") + set_proc_address(&CmdSetDepthCompareOp, "vkCmdSetDepthCompareOp") + set_proc_address(&CmdSetDepthCompareOpEXT, "vkCmdSetDepthCompareOpEXT") + set_proc_address(&CmdSetDepthTestEnable, "vkCmdSetDepthTestEnable") + set_proc_address(&CmdSetDepthTestEnableEXT, "vkCmdSetDepthTestEnableEXT") + set_proc_address(&CmdSetDepthWriteEnable, "vkCmdSetDepthWriteEnable") + set_proc_address(&CmdSetDepthWriteEnableEXT, "vkCmdSetDepthWriteEnableEXT") + set_proc_address(&CmdSetDeviceMask, "vkCmdSetDeviceMask") + set_proc_address(&CmdSetDeviceMaskKHR, "vkCmdSetDeviceMaskKHR") + set_proc_address(&CmdSetDiscardRectangleEXT, "vkCmdSetDiscardRectangleEXT") + set_proc_address(&CmdSetEvent, "vkCmdSetEvent") + set_proc_address(&CmdSetEvent2, "vkCmdSetEvent2") + set_proc_address(&CmdSetEvent2KHR, "vkCmdSetEvent2KHR") + set_proc_address(&CmdSetExclusiveScissorNV, "vkCmdSetExclusiveScissorNV") + set_proc_address(&CmdSetFragmentShadingRateEnumNV, "vkCmdSetFragmentShadingRateEnumNV") + set_proc_address(&CmdSetFragmentShadingRateKHR, "vkCmdSetFragmentShadingRateKHR") + set_proc_address(&CmdSetFrontFace, "vkCmdSetFrontFace") + set_proc_address(&CmdSetFrontFaceEXT, "vkCmdSetFrontFaceEXT") + set_proc_address(&CmdSetLineStippleEXT, "vkCmdSetLineStippleEXT") + set_proc_address(&CmdSetLineWidth, "vkCmdSetLineWidth") + set_proc_address(&CmdSetLogicOpEXT, "vkCmdSetLogicOpEXT") + set_proc_address(&CmdSetPatchControlPointsEXT, "vkCmdSetPatchControlPointsEXT") + set_proc_address(&CmdSetPerformanceMarkerINTEL, "vkCmdSetPerformanceMarkerINTEL") + set_proc_address(&CmdSetPerformanceOverrideINTEL, "vkCmdSetPerformanceOverrideINTEL") + set_proc_address(&CmdSetPerformanceStreamMarkerINTEL, "vkCmdSetPerformanceStreamMarkerINTEL") + set_proc_address(&CmdSetPrimitiveRestartEnable, "vkCmdSetPrimitiveRestartEnable") + set_proc_address(&CmdSetPrimitiveRestartEnableEXT, "vkCmdSetPrimitiveRestartEnableEXT") + set_proc_address(&CmdSetPrimitiveTopology, "vkCmdSetPrimitiveTopology") + set_proc_address(&CmdSetPrimitiveTopologyEXT, "vkCmdSetPrimitiveTopologyEXT") + set_proc_address(&CmdSetRasterizerDiscardEnable, "vkCmdSetRasterizerDiscardEnable") + set_proc_address(&CmdSetRasterizerDiscardEnableEXT, "vkCmdSetRasterizerDiscardEnableEXT") + set_proc_address(&CmdSetRayTracingPipelineStackSizeKHR, "vkCmdSetRayTracingPipelineStackSizeKHR") + set_proc_address(&CmdSetSampleLocationsEXT, "vkCmdSetSampleLocationsEXT") + set_proc_address(&CmdSetScissor, "vkCmdSetScissor") + set_proc_address(&CmdSetScissorWithCount, "vkCmdSetScissorWithCount") + set_proc_address(&CmdSetScissorWithCountEXT, "vkCmdSetScissorWithCountEXT") + set_proc_address(&CmdSetStencilCompareMask, "vkCmdSetStencilCompareMask") + set_proc_address(&CmdSetStencilOp, "vkCmdSetStencilOp") + set_proc_address(&CmdSetStencilOpEXT, "vkCmdSetStencilOpEXT") + set_proc_address(&CmdSetStencilReference, "vkCmdSetStencilReference") + set_proc_address(&CmdSetStencilTestEnable, "vkCmdSetStencilTestEnable") + set_proc_address(&CmdSetStencilTestEnableEXT, "vkCmdSetStencilTestEnableEXT") + set_proc_address(&CmdSetStencilWriteMask, "vkCmdSetStencilWriteMask") + set_proc_address(&CmdSetVertexInputEXT, "vkCmdSetVertexInputEXT") + set_proc_address(&CmdSetViewport, "vkCmdSetViewport") + set_proc_address(&CmdSetViewportShadingRatePaletteNV, "vkCmdSetViewportShadingRatePaletteNV") + set_proc_address(&CmdSetViewportWScalingNV, "vkCmdSetViewportWScalingNV") + set_proc_address(&CmdSetViewportWithCount, "vkCmdSetViewportWithCount") + set_proc_address(&CmdSetViewportWithCountEXT, "vkCmdSetViewportWithCountEXT") + set_proc_address(&CmdSubpassShadingHUAWEI, "vkCmdSubpassShadingHUAWEI") + set_proc_address(&CmdTraceRaysIndirectKHR, "vkCmdTraceRaysIndirectKHR") + set_proc_address(&CmdTraceRaysKHR, "vkCmdTraceRaysKHR") + set_proc_address(&CmdTraceRaysNV, "vkCmdTraceRaysNV") + set_proc_address(&CmdUpdateBuffer, "vkCmdUpdateBuffer") + set_proc_address(&CmdWaitEvents, "vkCmdWaitEvents") + set_proc_address(&CmdWaitEvents2, "vkCmdWaitEvents2") + set_proc_address(&CmdWaitEvents2KHR, "vkCmdWaitEvents2KHR") + set_proc_address(&CmdWriteAccelerationStructuresPropertiesKHR, "vkCmdWriteAccelerationStructuresPropertiesKHR") + set_proc_address(&CmdWriteAccelerationStructuresPropertiesNV, "vkCmdWriteAccelerationStructuresPropertiesNV") + set_proc_address(&CmdWriteBufferMarker2AMD, "vkCmdWriteBufferMarker2AMD") + set_proc_address(&CmdWriteBufferMarkerAMD, "vkCmdWriteBufferMarkerAMD") + set_proc_address(&CmdWriteTimestamp, "vkCmdWriteTimestamp") + set_proc_address(&CmdWriteTimestamp2, "vkCmdWriteTimestamp2") + set_proc_address(&CmdWriteTimestamp2KHR, "vkCmdWriteTimestamp2KHR") + set_proc_address(&CompileDeferredNV, "vkCompileDeferredNV") + set_proc_address(&CopyAccelerationStructureKHR, "vkCopyAccelerationStructureKHR") + set_proc_address(&CopyAccelerationStructureToMemoryKHR, "vkCopyAccelerationStructureToMemoryKHR") + set_proc_address(&CopyMemoryToAccelerationStructureKHR, "vkCopyMemoryToAccelerationStructureKHR") + set_proc_address(&CreateAccelerationStructureKHR, "vkCreateAccelerationStructureKHR") + set_proc_address(&CreateAccelerationStructureNV, "vkCreateAccelerationStructureNV") + set_proc_address(&CreateBuffer, "vkCreateBuffer") + set_proc_address(&CreateBufferView, "vkCreateBufferView") + set_proc_address(&CreateCommandPool, "vkCreateCommandPool") + set_proc_address(&CreateComputePipelines, "vkCreateComputePipelines") + set_proc_address(&CreateCuFunctionNVX, "vkCreateCuFunctionNVX") + set_proc_address(&CreateCuModuleNVX, "vkCreateCuModuleNVX") + set_proc_address(&CreateDeferredOperationKHR, "vkCreateDeferredOperationKHR") + set_proc_address(&CreateDescriptorPool, "vkCreateDescriptorPool") + set_proc_address(&CreateDescriptorSetLayout, "vkCreateDescriptorSetLayout") + set_proc_address(&CreateDescriptorUpdateTemplate, "vkCreateDescriptorUpdateTemplate") + set_proc_address(&CreateDescriptorUpdateTemplateKHR, "vkCreateDescriptorUpdateTemplateKHR") + set_proc_address(&CreateEvent, "vkCreateEvent") + set_proc_address(&CreateFence, "vkCreateFence") + set_proc_address(&CreateFramebuffer, "vkCreateFramebuffer") + set_proc_address(&CreateGraphicsPipelines, "vkCreateGraphicsPipelines") + set_proc_address(&CreateImage, "vkCreateImage") + set_proc_address(&CreateImageView, "vkCreateImageView") + set_proc_address(&CreateIndirectCommandsLayoutNV, "vkCreateIndirectCommandsLayoutNV") + set_proc_address(&CreatePipelineCache, "vkCreatePipelineCache") + set_proc_address(&CreatePipelineLayout, "vkCreatePipelineLayout") + set_proc_address(&CreatePrivateDataSlot, "vkCreatePrivateDataSlot") + set_proc_address(&CreatePrivateDataSlotEXT, "vkCreatePrivateDataSlotEXT") + set_proc_address(&CreateQueryPool, "vkCreateQueryPool") + set_proc_address(&CreateRayTracingPipelinesKHR, "vkCreateRayTracingPipelinesKHR") + set_proc_address(&CreateRayTracingPipelinesNV, "vkCreateRayTracingPipelinesNV") + set_proc_address(&CreateRenderPass, "vkCreateRenderPass") + set_proc_address(&CreateRenderPass2, "vkCreateRenderPass2") + set_proc_address(&CreateRenderPass2KHR, "vkCreateRenderPass2KHR") + set_proc_address(&CreateSampler, "vkCreateSampler") + set_proc_address(&CreateSamplerYcbcrConversion, "vkCreateSamplerYcbcrConversion") + set_proc_address(&CreateSamplerYcbcrConversionKHR, "vkCreateSamplerYcbcrConversionKHR") + set_proc_address(&CreateSemaphore, "vkCreateSemaphore") + set_proc_address(&CreateShaderModule, "vkCreateShaderModule") + set_proc_address(&CreateSharedSwapchainsKHR, "vkCreateSharedSwapchainsKHR") + set_proc_address(&CreateSwapchainKHR, "vkCreateSwapchainKHR") + set_proc_address(&CreateValidationCacheEXT, "vkCreateValidationCacheEXT") + set_proc_address(&DebugMarkerSetObjectNameEXT, "vkDebugMarkerSetObjectNameEXT") + set_proc_address(&DebugMarkerSetObjectTagEXT, "vkDebugMarkerSetObjectTagEXT") + set_proc_address(&DeferredOperationJoinKHR, "vkDeferredOperationJoinKHR") + set_proc_address(&DestroyAccelerationStructureKHR, "vkDestroyAccelerationStructureKHR") + set_proc_address(&DestroyAccelerationStructureNV, "vkDestroyAccelerationStructureNV") + set_proc_address(&DestroyBuffer, "vkDestroyBuffer") + set_proc_address(&DestroyBufferView, "vkDestroyBufferView") + set_proc_address(&DestroyCommandPool, "vkDestroyCommandPool") + set_proc_address(&DestroyCuFunctionNVX, "vkDestroyCuFunctionNVX") + set_proc_address(&DestroyCuModuleNVX, "vkDestroyCuModuleNVX") + set_proc_address(&DestroyDeferredOperationKHR, "vkDestroyDeferredOperationKHR") + set_proc_address(&DestroyDescriptorPool, "vkDestroyDescriptorPool") + set_proc_address(&DestroyDescriptorSetLayout, "vkDestroyDescriptorSetLayout") + set_proc_address(&DestroyDescriptorUpdateTemplate, "vkDestroyDescriptorUpdateTemplate") + set_proc_address(&DestroyDescriptorUpdateTemplateKHR, "vkDestroyDescriptorUpdateTemplateKHR") + set_proc_address(&DestroyDevice, "vkDestroyDevice") + set_proc_address(&DestroyEvent, "vkDestroyEvent") + set_proc_address(&DestroyFence, "vkDestroyFence") + set_proc_address(&DestroyFramebuffer, "vkDestroyFramebuffer") + set_proc_address(&DestroyImage, "vkDestroyImage") + set_proc_address(&DestroyImageView, "vkDestroyImageView") + set_proc_address(&DestroyIndirectCommandsLayoutNV, "vkDestroyIndirectCommandsLayoutNV") + set_proc_address(&DestroyPipeline, "vkDestroyPipeline") + set_proc_address(&DestroyPipelineCache, "vkDestroyPipelineCache") + set_proc_address(&DestroyPipelineLayout, "vkDestroyPipelineLayout") + set_proc_address(&DestroyPrivateDataSlot, "vkDestroyPrivateDataSlot") + set_proc_address(&DestroyPrivateDataSlotEXT, "vkDestroyPrivateDataSlotEXT") + set_proc_address(&DestroyQueryPool, "vkDestroyQueryPool") + set_proc_address(&DestroyRenderPass, "vkDestroyRenderPass") + set_proc_address(&DestroySampler, "vkDestroySampler") + set_proc_address(&DestroySamplerYcbcrConversion, "vkDestroySamplerYcbcrConversion") + set_proc_address(&DestroySamplerYcbcrConversionKHR, "vkDestroySamplerYcbcrConversionKHR") + set_proc_address(&DestroySemaphore, "vkDestroySemaphore") + set_proc_address(&DestroyShaderModule, "vkDestroyShaderModule") + set_proc_address(&DestroySwapchainKHR, "vkDestroySwapchainKHR") + set_proc_address(&DestroyValidationCacheEXT, "vkDestroyValidationCacheEXT") + set_proc_address(&DeviceWaitIdle, "vkDeviceWaitIdle") + set_proc_address(&DisplayPowerControlEXT, "vkDisplayPowerControlEXT") + set_proc_address(&EndCommandBuffer, "vkEndCommandBuffer") + set_proc_address(&FlushMappedMemoryRanges, "vkFlushMappedMemoryRanges") + set_proc_address(&FreeCommandBuffers, "vkFreeCommandBuffers") + set_proc_address(&FreeDescriptorSets, "vkFreeDescriptorSets") + set_proc_address(&FreeMemory, "vkFreeMemory") + set_proc_address(&GetAccelerationStructureBuildSizesKHR, "vkGetAccelerationStructureBuildSizesKHR") + set_proc_address(&GetAccelerationStructureDeviceAddressKHR, "vkGetAccelerationStructureDeviceAddressKHR") + set_proc_address(&GetAccelerationStructureHandleNV, "vkGetAccelerationStructureHandleNV") + set_proc_address(&GetAccelerationStructureMemoryRequirementsNV, "vkGetAccelerationStructureMemoryRequirementsNV") + set_proc_address(&GetBufferDeviceAddress, "vkGetBufferDeviceAddress") + set_proc_address(&GetBufferDeviceAddressEXT, "vkGetBufferDeviceAddressEXT") + set_proc_address(&GetBufferDeviceAddressKHR, "vkGetBufferDeviceAddressKHR") + set_proc_address(&GetBufferMemoryRequirements, "vkGetBufferMemoryRequirements") + set_proc_address(&GetBufferMemoryRequirements2, "vkGetBufferMemoryRequirements2") + set_proc_address(&GetBufferMemoryRequirements2KHR, "vkGetBufferMemoryRequirements2KHR") + set_proc_address(&GetBufferOpaqueCaptureAddress, "vkGetBufferOpaqueCaptureAddress") + set_proc_address(&GetBufferOpaqueCaptureAddressKHR, "vkGetBufferOpaqueCaptureAddressKHR") + set_proc_address(&GetCalibratedTimestampsEXT, "vkGetCalibratedTimestampsEXT") + set_proc_address(&GetDeferredOperationMaxConcurrencyKHR, "vkGetDeferredOperationMaxConcurrencyKHR") + set_proc_address(&GetDeferredOperationResultKHR, "vkGetDeferredOperationResultKHR") + set_proc_address(&GetDescriptorSetHostMappingVALVE, "vkGetDescriptorSetHostMappingVALVE") + set_proc_address(&GetDescriptorSetLayoutHostMappingInfoVALVE, "vkGetDescriptorSetLayoutHostMappingInfoVALVE") + set_proc_address(&GetDescriptorSetLayoutSupport, "vkGetDescriptorSetLayoutSupport") + set_proc_address(&GetDescriptorSetLayoutSupportKHR, "vkGetDescriptorSetLayoutSupportKHR") + set_proc_address(&GetDeviceAccelerationStructureCompatibilityKHR, "vkGetDeviceAccelerationStructureCompatibilityKHR") + set_proc_address(&GetDeviceBufferMemoryRequirements, "vkGetDeviceBufferMemoryRequirements") + set_proc_address(&GetDeviceBufferMemoryRequirementsKHR, "vkGetDeviceBufferMemoryRequirementsKHR") + set_proc_address(&GetDeviceGroupPeerMemoryFeatures, "vkGetDeviceGroupPeerMemoryFeatures") + set_proc_address(&GetDeviceGroupPeerMemoryFeaturesKHR, "vkGetDeviceGroupPeerMemoryFeaturesKHR") + set_proc_address(&GetDeviceGroupPresentCapabilitiesKHR, "vkGetDeviceGroupPresentCapabilitiesKHR") + set_proc_address(&GetDeviceGroupSurfacePresentModes2EXT, "vkGetDeviceGroupSurfacePresentModes2EXT") + set_proc_address(&GetDeviceGroupSurfacePresentModesKHR, "vkGetDeviceGroupSurfacePresentModesKHR") + set_proc_address(&GetDeviceImageMemoryRequirements, "vkGetDeviceImageMemoryRequirements") + set_proc_address(&GetDeviceImageMemoryRequirementsKHR, "vkGetDeviceImageMemoryRequirementsKHR") + set_proc_address(&GetDeviceImageSparseMemoryRequirements, "vkGetDeviceImageSparseMemoryRequirements") + set_proc_address(&GetDeviceImageSparseMemoryRequirementsKHR, "vkGetDeviceImageSparseMemoryRequirementsKHR") + set_proc_address(&GetDeviceMemoryCommitment, "vkGetDeviceMemoryCommitment") + set_proc_address(&GetDeviceMemoryOpaqueCaptureAddress, "vkGetDeviceMemoryOpaqueCaptureAddress") + set_proc_address(&GetDeviceMemoryOpaqueCaptureAddressKHR, "vkGetDeviceMemoryOpaqueCaptureAddressKHR") + set_proc_address(&GetDeviceProcAddr, "vkGetDeviceProcAddr") + set_proc_address(&GetDeviceQueue, "vkGetDeviceQueue") + set_proc_address(&GetDeviceQueue2, "vkGetDeviceQueue2") + set_proc_address(&GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI") + set_proc_address(&GetEventStatus, "vkGetEventStatus") + set_proc_address(&GetFenceFdKHR, "vkGetFenceFdKHR") + set_proc_address(&GetFenceStatus, "vkGetFenceStatus") + set_proc_address(&GetFenceWin32HandleKHR, "vkGetFenceWin32HandleKHR") + set_proc_address(&GetGeneratedCommandsMemoryRequirementsNV, "vkGetGeneratedCommandsMemoryRequirementsNV") + set_proc_address(&GetImageDrmFormatModifierPropertiesEXT, "vkGetImageDrmFormatModifierPropertiesEXT") + set_proc_address(&GetImageMemoryRequirements, "vkGetImageMemoryRequirements") + set_proc_address(&GetImageMemoryRequirements2, "vkGetImageMemoryRequirements2") + set_proc_address(&GetImageMemoryRequirements2KHR, "vkGetImageMemoryRequirements2KHR") + set_proc_address(&GetImageSparseMemoryRequirements, "vkGetImageSparseMemoryRequirements") + set_proc_address(&GetImageSparseMemoryRequirements2, "vkGetImageSparseMemoryRequirements2") + set_proc_address(&GetImageSparseMemoryRequirements2KHR, "vkGetImageSparseMemoryRequirements2KHR") + set_proc_address(&GetImageSubresourceLayout, "vkGetImageSubresourceLayout") + set_proc_address(&GetImageViewAddressNVX, "vkGetImageViewAddressNVX") + set_proc_address(&GetImageViewHandleNVX, "vkGetImageViewHandleNVX") + set_proc_address(&GetMemoryFdKHR, "vkGetMemoryFdKHR") + set_proc_address(&GetMemoryFdPropertiesKHR, "vkGetMemoryFdPropertiesKHR") + set_proc_address(&GetMemoryHostPointerPropertiesEXT, "vkGetMemoryHostPointerPropertiesEXT") + set_proc_address(&GetMemoryRemoteAddressNV, "vkGetMemoryRemoteAddressNV") + set_proc_address(&GetMemoryWin32HandleKHR, "vkGetMemoryWin32HandleKHR") + set_proc_address(&GetMemoryWin32HandleNV, "vkGetMemoryWin32HandleNV") + set_proc_address(&GetMemoryWin32HandlePropertiesKHR, "vkGetMemoryWin32HandlePropertiesKHR") + set_proc_address(&GetPastPresentationTimingGOOGLE, "vkGetPastPresentationTimingGOOGLE") + set_proc_address(&GetPerformanceParameterINTEL, "vkGetPerformanceParameterINTEL") + set_proc_address(&GetPipelineCacheData, "vkGetPipelineCacheData") + set_proc_address(&GetPipelineExecutableInternalRepresentationsKHR, "vkGetPipelineExecutableInternalRepresentationsKHR") + set_proc_address(&GetPipelineExecutablePropertiesKHR, "vkGetPipelineExecutablePropertiesKHR") + set_proc_address(&GetPipelineExecutableStatisticsKHR, "vkGetPipelineExecutableStatisticsKHR") + set_proc_address(&GetPrivateData, "vkGetPrivateData") + set_proc_address(&GetPrivateDataEXT, "vkGetPrivateDataEXT") + set_proc_address(&GetQueryPoolResults, "vkGetQueryPoolResults") + set_proc_address(&GetQueueCheckpointData2NV, "vkGetQueueCheckpointData2NV") + set_proc_address(&GetQueueCheckpointDataNV, "vkGetQueueCheckpointDataNV") + set_proc_address(&GetRayTracingCaptureReplayShaderGroupHandlesKHR, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR") + set_proc_address(&GetRayTracingShaderGroupHandlesKHR, "vkGetRayTracingShaderGroupHandlesKHR") + set_proc_address(&GetRayTracingShaderGroupHandlesNV, "vkGetRayTracingShaderGroupHandlesNV") + set_proc_address(&GetRayTracingShaderGroupStackSizeKHR, "vkGetRayTracingShaderGroupStackSizeKHR") + set_proc_address(&GetRefreshCycleDurationGOOGLE, "vkGetRefreshCycleDurationGOOGLE") + set_proc_address(&GetRenderAreaGranularity, "vkGetRenderAreaGranularity") + set_proc_address(&GetSemaphoreCounterValue, "vkGetSemaphoreCounterValue") + set_proc_address(&GetSemaphoreCounterValueKHR, "vkGetSemaphoreCounterValueKHR") + set_proc_address(&GetSemaphoreFdKHR, "vkGetSemaphoreFdKHR") + set_proc_address(&GetSemaphoreWin32HandleKHR, "vkGetSemaphoreWin32HandleKHR") + set_proc_address(&GetShaderInfoAMD, "vkGetShaderInfoAMD") + set_proc_address(&GetSwapchainCounterEXT, "vkGetSwapchainCounterEXT") + set_proc_address(&GetSwapchainImagesKHR, "vkGetSwapchainImagesKHR") + set_proc_address(&GetSwapchainStatusKHR, "vkGetSwapchainStatusKHR") + set_proc_address(&GetValidationCacheDataEXT, "vkGetValidationCacheDataEXT") + set_proc_address(&ImportFenceFdKHR, "vkImportFenceFdKHR") + set_proc_address(&ImportFenceWin32HandleKHR, "vkImportFenceWin32HandleKHR") + set_proc_address(&ImportSemaphoreFdKHR, "vkImportSemaphoreFdKHR") + set_proc_address(&ImportSemaphoreWin32HandleKHR, "vkImportSemaphoreWin32HandleKHR") + set_proc_address(&InitializePerformanceApiINTEL, "vkInitializePerformanceApiINTEL") + set_proc_address(&InvalidateMappedMemoryRanges, "vkInvalidateMappedMemoryRanges") + set_proc_address(&MapMemory, "vkMapMemory") + set_proc_address(&MergePipelineCaches, "vkMergePipelineCaches") + set_proc_address(&MergeValidationCachesEXT, "vkMergeValidationCachesEXT") + set_proc_address(&QueueBeginDebugUtilsLabelEXT, "vkQueueBeginDebugUtilsLabelEXT") + set_proc_address(&QueueBindSparse, "vkQueueBindSparse") + set_proc_address(&QueueEndDebugUtilsLabelEXT, "vkQueueEndDebugUtilsLabelEXT") + set_proc_address(&QueueInsertDebugUtilsLabelEXT, "vkQueueInsertDebugUtilsLabelEXT") + set_proc_address(&QueuePresentKHR, "vkQueuePresentKHR") + set_proc_address(&QueueSetPerformanceConfigurationINTEL, "vkQueueSetPerformanceConfigurationINTEL") + set_proc_address(&QueueSubmit, "vkQueueSubmit") + set_proc_address(&QueueSubmit2, "vkQueueSubmit2") + set_proc_address(&QueueSubmit2KHR, "vkQueueSubmit2KHR") + set_proc_address(&QueueWaitIdle, "vkQueueWaitIdle") + set_proc_address(&RegisterDeviceEventEXT, "vkRegisterDeviceEventEXT") + set_proc_address(&RegisterDisplayEventEXT, "vkRegisterDisplayEventEXT") + set_proc_address(&ReleaseFullScreenExclusiveModeEXT, "vkReleaseFullScreenExclusiveModeEXT") + set_proc_address(&ReleasePerformanceConfigurationINTEL, "vkReleasePerformanceConfigurationINTEL") + set_proc_address(&ReleaseProfilingLockKHR, "vkReleaseProfilingLockKHR") + set_proc_address(&ResetCommandBuffer, "vkResetCommandBuffer") + set_proc_address(&ResetCommandPool, "vkResetCommandPool") + set_proc_address(&ResetDescriptorPool, "vkResetDescriptorPool") + set_proc_address(&ResetEvent, "vkResetEvent") + set_proc_address(&ResetFences, "vkResetFences") + set_proc_address(&ResetQueryPool, "vkResetQueryPool") + set_proc_address(&ResetQueryPoolEXT, "vkResetQueryPoolEXT") + set_proc_address(&SetDebugUtilsObjectNameEXT, "vkSetDebugUtilsObjectNameEXT") + set_proc_address(&SetDebugUtilsObjectTagEXT, "vkSetDebugUtilsObjectTagEXT") + set_proc_address(&SetDeviceMemoryPriorityEXT, "vkSetDeviceMemoryPriorityEXT") + set_proc_address(&SetEvent, "vkSetEvent") + set_proc_address(&SetHdrMetadataEXT, "vkSetHdrMetadataEXT") + set_proc_address(&SetLocalDimmingAMD, "vkSetLocalDimmingAMD") + set_proc_address(&SetPrivateData, "vkSetPrivateData") + set_proc_address(&SetPrivateDataEXT, "vkSetPrivateDataEXT") + set_proc_address(&SignalSemaphore, "vkSignalSemaphore") + set_proc_address(&SignalSemaphoreKHR, "vkSignalSemaphoreKHR") + set_proc_address(&TrimCommandPool, "vkTrimCommandPool") + set_proc_address(&TrimCommandPoolKHR, "vkTrimCommandPoolKHR") + set_proc_address(&UninitializePerformanceApiINTEL, "vkUninitializePerformanceApiINTEL") + set_proc_address(&UnmapMemory, "vkUnmapMemory") + set_proc_address(&UpdateDescriptorSetWithTemplate, "vkUpdateDescriptorSetWithTemplate") + set_proc_address(&UpdateDescriptorSetWithTemplateKHR, "vkUpdateDescriptorSetWithTemplateKHR") + set_proc_address(&UpdateDescriptorSets, "vkUpdateDescriptorSets") + set_proc_address(&WaitForFences, "vkWaitForFences") + set_proc_address(&WaitForPresentKHR, "vkWaitForPresentKHR") + set_proc_address(&WaitSemaphores, "vkWaitSemaphores") + set_proc_address(&WaitSemaphoresKHR, "vkWaitSemaphoresKHR") + set_proc_address(&WriteAccelerationStructuresPropertiesKHR, "vkWriteAccelerationStructuresPropertiesKHR") + +} + +// Device Procedure VTable +Device_VTable :: struct { + AcquireFullScreenExclusiveModeEXT: ProcAcquireFullScreenExclusiveModeEXT, + AcquireNextImage2KHR: ProcAcquireNextImage2KHR, + AcquireNextImageKHR: ProcAcquireNextImageKHR, + AcquirePerformanceConfigurationINTEL: ProcAcquirePerformanceConfigurationINTEL, + AcquireProfilingLockKHR: ProcAcquireProfilingLockKHR, + AllocateCommandBuffers: ProcAllocateCommandBuffers, + AllocateDescriptorSets: ProcAllocateDescriptorSets, + AllocateMemory: ProcAllocateMemory, + BeginCommandBuffer: ProcBeginCommandBuffer, + BindAccelerationStructureMemoryNV: ProcBindAccelerationStructureMemoryNV, + BindBufferMemory: ProcBindBufferMemory, + BindBufferMemory2: ProcBindBufferMemory2, + BindBufferMemory2KHR: ProcBindBufferMemory2KHR, + BindImageMemory: ProcBindImageMemory, + BindImageMemory2: ProcBindImageMemory2, + BindImageMemory2KHR: ProcBindImageMemory2KHR, + BuildAccelerationStructuresKHR: ProcBuildAccelerationStructuresKHR, + CmdBeginConditionalRenderingEXT: ProcCmdBeginConditionalRenderingEXT, + CmdBeginDebugUtilsLabelEXT: ProcCmdBeginDebugUtilsLabelEXT, + CmdBeginQuery: ProcCmdBeginQuery, + CmdBeginQueryIndexedEXT: ProcCmdBeginQueryIndexedEXT, + CmdBeginRenderPass: ProcCmdBeginRenderPass, + CmdBeginRenderPass2: ProcCmdBeginRenderPass2, + CmdBeginRenderPass2KHR: ProcCmdBeginRenderPass2KHR, + CmdBeginRendering: ProcCmdBeginRendering, + CmdBeginRenderingKHR: ProcCmdBeginRenderingKHR, + CmdBeginTransformFeedbackEXT: ProcCmdBeginTransformFeedbackEXT, + CmdBindDescriptorSets: ProcCmdBindDescriptorSets, + CmdBindIndexBuffer: ProcCmdBindIndexBuffer, + CmdBindInvocationMaskHUAWEI: ProcCmdBindInvocationMaskHUAWEI, + CmdBindPipeline: ProcCmdBindPipeline, + CmdBindPipelineShaderGroupNV: ProcCmdBindPipelineShaderGroupNV, + CmdBindShadingRateImageNV: ProcCmdBindShadingRateImageNV, + CmdBindTransformFeedbackBuffersEXT: ProcCmdBindTransformFeedbackBuffersEXT, + CmdBindVertexBuffers: ProcCmdBindVertexBuffers, + CmdBindVertexBuffers2: ProcCmdBindVertexBuffers2, + CmdBindVertexBuffers2EXT: ProcCmdBindVertexBuffers2EXT, + CmdBlitImage: ProcCmdBlitImage, + CmdBlitImage2: ProcCmdBlitImage2, + CmdBlitImage2KHR: ProcCmdBlitImage2KHR, + CmdBuildAccelerationStructureNV: ProcCmdBuildAccelerationStructureNV, + CmdBuildAccelerationStructuresIndirectKHR: ProcCmdBuildAccelerationStructuresIndirectKHR, + CmdBuildAccelerationStructuresKHR: ProcCmdBuildAccelerationStructuresKHR, + CmdClearAttachments: ProcCmdClearAttachments, + CmdClearColorImage: ProcCmdClearColorImage, + CmdClearDepthStencilImage: ProcCmdClearDepthStencilImage, + CmdCopyAccelerationStructureKHR: ProcCmdCopyAccelerationStructureKHR, + CmdCopyAccelerationStructureNV: ProcCmdCopyAccelerationStructureNV, + CmdCopyAccelerationStructureToMemoryKHR: ProcCmdCopyAccelerationStructureToMemoryKHR, + CmdCopyBuffer: ProcCmdCopyBuffer, + CmdCopyBuffer2: ProcCmdCopyBuffer2, + CmdCopyBuffer2KHR: ProcCmdCopyBuffer2KHR, + CmdCopyBufferToImage: ProcCmdCopyBufferToImage, + CmdCopyBufferToImage2: ProcCmdCopyBufferToImage2, + CmdCopyBufferToImage2KHR: ProcCmdCopyBufferToImage2KHR, + CmdCopyImage: ProcCmdCopyImage, + CmdCopyImage2: ProcCmdCopyImage2, + CmdCopyImage2KHR: ProcCmdCopyImage2KHR, + CmdCopyImageToBuffer: ProcCmdCopyImageToBuffer, + CmdCopyImageToBuffer2: ProcCmdCopyImageToBuffer2, + CmdCopyImageToBuffer2KHR: ProcCmdCopyImageToBuffer2KHR, + CmdCopyMemoryToAccelerationStructureKHR: ProcCmdCopyMemoryToAccelerationStructureKHR, + CmdCopyQueryPoolResults: ProcCmdCopyQueryPoolResults, + CmdCuLaunchKernelNVX: ProcCmdCuLaunchKernelNVX, + CmdDebugMarkerBeginEXT: ProcCmdDebugMarkerBeginEXT, + CmdDebugMarkerEndEXT: ProcCmdDebugMarkerEndEXT, + CmdDebugMarkerInsertEXT: ProcCmdDebugMarkerInsertEXT, + CmdDispatch: ProcCmdDispatch, + CmdDispatchBase: ProcCmdDispatchBase, + CmdDispatchBaseKHR: ProcCmdDispatchBaseKHR, + CmdDispatchIndirect: ProcCmdDispatchIndirect, + CmdDraw: ProcCmdDraw, + CmdDrawIndexed: ProcCmdDrawIndexed, + CmdDrawIndexedIndirect: ProcCmdDrawIndexedIndirect, + CmdDrawIndexedIndirectCount: ProcCmdDrawIndexedIndirectCount, + CmdDrawIndexedIndirectCountAMD: ProcCmdDrawIndexedIndirectCountAMD, + CmdDrawIndexedIndirectCountKHR: ProcCmdDrawIndexedIndirectCountKHR, + CmdDrawIndirect: ProcCmdDrawIndirect, + CmdDrawIndirectByteCountEXT: ProcCmdDrawIndirectByteCountEXT, + CmdDrawIndirectCount: ProcCmdDrawIndirectCount, + CmdDrawIndirectCountAMD: ProcCmdDrawIndirectCountAMD, + CmdDrawIndirectCountKHR: ProcCmdDrawIndirectCountKHR, + CmdDrawMeshTasksIndirectCountNV: ProcCmdDrawMeshTasksIndirectCountNV, + CmdDrawMeshTasksIndirectNV: ProcCmdDrawMeshTasksIndirectNV, + CmdDrawMeshTasksNV: ProcCmdDrawMeshTasksNV, + CmdDrawMultiEXT: ProcCmdDrawMultiEXT, + CmdDrawMultiIndexedEXT: ProcCmdDrawMultiIndexedEXT, + CmdEndConditionalRenderingEXT: ProcCmdEndConditionalRenderingEXT, + CmdEndDebugUtilsLabelEXT: ProcCmdEndDebugUtilsLabelEXT, + CmdEndQuery: ProcCmdEndQuery, + CmdEndQueryIndexedEXT: ProcCmdEndQueryIndexedEXT, + CmdEndRenderPass: ProcCmdEndRenderPass, + CmdEndRenderPass2: ProcCmdEndRenderPass2, + CmdEndRenderPass2KHR: ProcCmdEndRenderPass2KHR, + CmdEndRendering: ProcCmdEndRendering, + CmdEndRenderingKHR: ProcCmdEndRenderingKHR, + CmdEndTransformFeedbackEXT: ProcCmdEndTransformFeedbackEXT, + CmdExecuteCommands: ProcCmdExecuteCommands, + CmdExecuteGeneratedCommandsNV: ProcCmdExecuteGeneratedCommandsNV, + CmdFillBuffer: ProcCmdFillBuffer, + CmdInsertDebugUtilsLabelEXT: ProcCmdInsertDebugUtilsLabelEXT, + CmdNextSubpass: ProcCmdNextSubpass, + CmdNextSubpass2: ProcCmdNextSubpass2, + CmdNextSubpass2KHR: ProcCmdNextSubpass2KHR, + CmdPipelineBarrier: ProcCmdPipelineBarrier, + CmdPipelineBarrier2: ProcCmdPipelineBarrier2, + CmdPipelineBarrier2KHR: ProcCmdPipelineBarrier2KHR, + CmdPreprocessGeneratedCommandsNV: ProcCmdPreprocessGeneratedCommandsNV, + CmdPushConstants: ProcCmdPushConstants, + CmdPushDescriptorSetKHR: ProcCmdPushDescriptorSetKHR, + CmdPushDescriptorSetWithTemplateKHR: ProcCmdPushDescriptorSetWithTemplateKHR, + CmdResetEvent: ProcCmdResetEvent, + CmdResetEvent2: ProcCmdResetEvent2, + CmdResetEvent2KHR: ProcCmdResetEvent2KHR, + CmdResetQueryPool: ProcCmdResetQueryPool, + CmdResolveImage: ProcCmdResolveImage, + CmdResolveImage2: ProcCmdResolveImage2, + CmdResolveImage2KHR: ProcCmdResolveImage2KHR, + CmdSetBlendConstants: ProcCmdSetBlendConstants, + CmdSetCheckpointNV: ProcCmdSetCheckpointNV, + CmdSetCoarseSampleOrderNV: ProcCmdSetCoarseSampleOrderNV, + CmdSetCullMode: ProcCmdSetCullMode, + CmdSetCullModeEXT: ProcCmdSetCullModeEXT, + CmdSetDepthBias: ProcCmdSetDepthBias, + CmdSetDepthBiasEnable: ProcCmdSetDepthBiasEnable, + CmdSetDepthBiasEnableEXT: ProcCmdSetDepthBiasEnableEXT, + CmdSetDepthBounds: ProcCmdSetDepthBounds, + CmdSetDepthBoundsTestEnable: ProcCmdSetDepthBoundsTestEnable, + CmdSetDepthBoundsTestEnableEXT: ProcCmdSetDepthBoundsTestEnableEXT, + CmdSetDepthCompareOp: ProcCmdSetDepthCompareOp, + CmdSetDepthCompareOpEXT: ProcCmdSetDepthCompareOpEXT, + CmdSetDepthTestEnable: ProcCmdSetDepthTestEnable, + CmdSetDepthTestEnableEXT: ProcCmdSetDepthTestEnableEXT, + CmdSetDepthWriteEnable: ProcCmdSetDepthWriteEnable, + CmdSetDepthWriteEnableEXT: ProcCmdSetDepthWriteEnableEXT, + CmdSetDeviceMask: ProcCmdSetDeviceMask, + CmdSetDeviceMaskKHR: ProcCmdSetDeviceMaskKHR, + CmdSetDiscardRectangleEXT: ProcCmdSetDiscardRectangleEXT, + CmdSetEvent: ProcCmdSetEvent, + CmdSetEvent2: ProcCmdSetEvent2, + CmdSetEvent2KHR: ProcCmdSetEvent2KHR, + CmdSetExclusiveScissorNV: ProcCmdSetExclusiveScissorNV, + CmdSetFragmentShadingRateEnumNV: ProcCmdSetFragmentShadingRateEnumNV, + CmdSetFragmentShadingRateKHR: ProcCmdSetFragmentShadingRateKHR, + CmdSetFrontFace: ProcCmdSetFrontFace, + CmdSetFrontFaceEXT: ProcCmdSetFrontFaceEXT, + CmdSetLineStippleEXT: ProcCmdSetLineStippleEXT, + CmdSetLineWidth: ProcCmdSetLineWidth, + CmdSetLogicOpEXT: ProcCmdSetLogicOpEXT, + CmdSetPatchControlPointsEXT: ProcCmdSetPatchControlPointsEXT, + CmdSetPerformanceMarkerINTEL: ProcCmdSetPerformanceMarkerINTEL, + CmdSetPerformanceOverrideINTEL: ProcCmdSetPerformanceOverrideINTEL, + CmdSetPerformanceStreamMarkerINTEL: ProcCmdSetPerformanceStreamMarkerINTEL, + CmdSetPrimitiveRestartEnable: ProcCmdSetPrimitiveRestartEnable, + CmdSetPrimitiveRestartEnableEXT: ProcCmdSetPrimitiveRestartEnableEXT, + CmdSetPrimitiveTopology: ProcCmdSetPrimitiveTopology, + CmdSetPrimitiveTopologyEXT: ProcCmdSetPrimitiveTopologyEXT, + CmdSetRasterizerDiscardEnable: ProcCmdSetRasterizerDiscardEnable, + CmdSetRasterizerDiscardEnableEXT: ProcCmdSetRasterizerDiscardEnableEXT, + CmdSetRayTracingPipelineStackSizeKHR: ProcCmdSetRayTracingPipelineStackSizeKHR, + CmdSetSampleLocationsEXT: ProcCmdSetSampleLocationsEXT, + CmdSetScissor: ProcCmdSetScissor, + CmdSetScissorWithCount: ProcCmdSetScissorWithCount, + CmdSetScissorWithCountEXT: ProcCmdSetScissorWithCountEXT, + CmdSetStencilCompareMask: ProcCmdSetStencilCompareMask, + CmdSetStencilOp: ProcCmdSetStencilOp, + CmdSetStencilOpEXT: ProcCmdSetStencilOpEXT, + CmdSetStencilReference: ProcCmdSetStencilReference, + CmdSetStencilTestEnable: ProcCmdSetStencilTestEnable, + CmdSetStencilTestEnableEXT: ProcCmdSetStencilTestEnableEXT, + CmdSetStencilWriteMask: ProcCmdSetStencilWriteMask, + CmdSetVertexInputEXT: ProcCmdSetVertexInputEXT, + CmdSetViewport: ProcCmdSetViewport, + CmdSetViewportShadingRatePaletteNV: ProcCmdSetViewportShadingRatePaletteNV, + CmdSetViewportWScalingNV: ProcCmdSetViewportWScalingNV, + CmdSetViewportWithCount: ProcCmdSetViewportWithCount, + CmdSetViewportWithCountEXT: ProcCmdSetViewportWithCountEXT, + CmdSubpassShadingHUAWEI: ProcCmdSubpassShadingHUAWEI, + CmdTraceRaysIndirectKHR: ProcCmdTraceRaysIndirectKHR, + CmdTraceRaysKHR: ProcCmdTraceRaysKHR, + CmdTraceRaysNV: ProcCmdTraceRaysNV, + CmdUpdateBuffer: ProcCmdUpdateBuffer, + CmdWaitEvents: ProcCmdWaitEvents, + CmdWaitEvents2: ProcCmdWaitEvents2, + CmdWaitEvents2KHR: ProcCmdWaitEvents2KHR, + CmdWriteAccelerationStructuresPropertiesKHR: ProcCmdWriteAccelerationStructuresPropertiesKHR, + CmdWriteAccelerationStructuresPropertiesNV: ProcCmdWriteAccelerationStructuresPropertiesNV, + CmdWriteBufferMarker2AMD: ProcCmdWriteBufferMarker2AMD, + CmdWriteBufferMarkerAMD: ProcCmdWriteBufferMarkerAMD, + CmdWriteTimestamp: ProcCmdWriteTimestamp, + CmdWriteTimestamp2: ProcCmdWriteTimestamp2, + CmdWriteTimestamp2KHR: ProcCmdWriteTimestamp2KHR, + CompileDeferredNV: ProcCompileDeferredNV, + CopyAccelerationStructureKHR: ProcCopyAccelerationStructureKHR, + CopyAccelerationStructureToMemoryKHR: ProcCopyAccelerationStructureToMemoryKHR, + CopyMemoryToAccelerationStructureKHR: ProcCopyMemoryToAccelerationStructureKHR, + CreateAccelerationStructureKHR: ProcCreateAccelerationStructureKHR, + CreateAccelerationStructureNV: ProcCreateAccelerationStructureNV, + CreateBuffer: ProcCreateBuffer, + CreateBufferView: ProcCreateBufferView, + CreateCommandPool: ProcCreateCommandPool, + CreateComputePipelines: ProcCreateComputePipelines, + CreateCuFunctionNVX: ProcCreateCuFunctionNVX, + CreateCuModuleNVX: ProcCreateCuModuleNVX, + CreateDeferredOperationKHR: ProcCreateDeferredOperationKHR, + CreateDescriptorPool: ProcCreateDescriptorPool, + CreateDescriptorSetLayout: ProcCreateDescriptorSetLayout, + CreateDescriptorUpdateTemplate: ProcCreateDescriptorUpdateTemplate, + CreateDescriptorUpdateTemplateKHR: ProcCreateDescriptorUpdateTemplateKHR, + CreateEvent: ProcCreateEvent, + CreateFence: ProcCreateFence, + CreateFramebuffer: ProcCreateFramebuffer, + CreateGraphicsPipelines: ProcCreateGraphicsPipelines, + CreateImage: ProcCreateImage, + CreateImageView: ProcCreateImageView, + CreateIndirectCommandsLayoutNV: ProcCreateIndirectCommandsLayoutNV, + CreatePipelineCache: ProcCreatePipelineCache, + CreatePipelineLayout: ProcCreatePipelineLayout, + CreatePrivateDataSlot: ProcCreatePrivateDataSlot, + CreatePrivateDataSlotEXT: ProcCreatePrivateDataSlotEXT, + CreateQueryPool: ProcCreateQueryPool, + CreateRayTracingPipelinesKHR: ProcCreateRayTracingPipelinesKHR, + CreateRayTracingPipelinesNV: ProcCreateRayTracingPipelinesNV, + CreateRenderPass: ProcCreateRenderPass, + CreateRenderPass2: ProcCreateRenderPass2, + CreateRenderPass2KHR: ProcCreateRenderPass2KHR, + CreateSampler: ProcCreateSampler, + CreateSamplerYcbcrConversion: ProcCreateSamplerYcbcrConversion, + CreateSamplerYcbcrConversionKHR: ProcCreateSamplerYcbcrConversionKHR, + CreateSemaphore: ProcCreateSemaphore, + CreateShaderModule: ProcCreateShaderModule, + CreateSharedSwapchainsKHR: ProcCreateSharedSwapchainsKHR, + CreateSwapchainKHR: ProcCreateSwapchainKHR, + CreateValidationCacheEXT: ProcCreateValidationCacheEXT, + DebugMarkerSetObjectNameEXT: ProcDebugMarkerSetObjectNameEXT, + DebugMarkerSetObjectTagEXT: ProcDebugMarkerSetObjectTagEXT, + DeferredOperationJoinKHR: ProcDeferredOperationJoinKHR, + DestroyAccelerationStructureKHR: ProcDestroyAccelerationStructureKHR, + DestroyAccelerationStructureNV: ProcDestroyAccelerationStructureNV, + DestroyBuffer: ProcDestroyBuffer, + DestroyBufferView: ProcDestroyBufferView, + DestroyCommandPool: ProcDestroyCommandPool, + DestroyCuFunctionNVX: ProcDestroyCuFunctionNVX, + DestroyCuModuleNVX: ProcDestroyCuModuleNVX, + DestroyDeferredOperationKHR: ProcDestroyDeferredOperationKHR, + DestroyDescriptorPool: ProcDestroyDescriptorPool, + DestroyDescriptorSetLayout: ProcDestroyDescriptorSetLayout, + DestroyDescriptorUpdateTemplate: ProcDestroyDescriptorUpdateTemplate, + DestroyDescriptorUpdateTemplateKHR: ProcDestroyDescriptorUpdateTemplateKHR, + DestroyDevice: ProcDestroyDevice, + DestroyEvent: ProcDestroyEvent, + DestroyFence: ProcDestroyFence, + DestroyFramebuffer: ProcDestroyFramebuffer, + DestroyImage: ProcDestroyImage, + DestroyImageView: ProcDestroyImageView, + DestroyIndirectCommandsLayoutNV: ProcDestroyIndirectCommandsLayoutNV, + DestroyPipeline: ProcDestroyPipeline, + DestroyPipelineCache: ProcDestroyPipelineCache, + DestroyPipelineLayout: ProcDestroyPipelineLayout, + DestroyPrivateDataSlot: ProcDestroyPrivateDataSlot, + DestroyPrivateDataSlotEXT: ProcDestroyPrivateDataSlotEXT, + DestroyQueryPool: ProcDestroyQueryPool, + DestroyRenderPass: ProcDestroyRenderPass, + DestroySampler: ProcDestroySampler, + DestroySamplerYcbcrConversion: ProcDestroySamplerYcbcrConversion, + DestroySamplerYcbcrConversionKHR: ProcDestroySamplerYcbcrConversionKHR, + DestroySemaphore: ProcDestroySemaphore, + DestroyShaderModule: ProcDestroyShaderModule, + DestroySwapchainKHR: ProcDestroySwapchainKHR, + DestroyValidationCacheEXT: ProcDestroyValidationCacheEXT, + DeviceWaitIdle: ProcDeviceWaitIdle, + DisplayPowerControlEXT: ProcDisplayPowerControlEXT, + EndCommandBuffer: ProcEndCommandBuffer, + FlushMappedMemoryRanges: ProcFlushMappedMemoryRanges, + FreeCommandBuffers: ProcFreeCommandBuffers, + FreeDescriptorSets: ProcFreeDescriptorSets, + FreeMemory: ProcFreeMemory, + GetAccelerationStructureBuildSizesKHR: ProcGetAccelerationStructureBuildSizesKHR, + GetAccelerationStructureDeviceAddressKHR: ProcGetAccelerationStructureDeviceAddressKHR, + GetAccelerationStructureHandleNV: ProcGetAccelerationStructureHandleNV, + GetAccelerationStructureMemoryRequirementsNV: ProcGetAccelerationStructureMemoryRequirementsNV, + GetBufferDeviceAddress: ProcGetBufferDeviceAddress, + GetBufferDeviceAddressEXT: ProcGetBufferDeviceAddressEXT, + GetBufferDeviceAddressKHR: ProcGetBufferDeviceAddressKHR, + GetBufferMemoryRequirements: ProcGetBufferMemoryRequirements, + GetBufferMemoryRequirements2: ProcGetBufferMemoryRequirements2, + GetBufferMemoryRequirements2KHR: ProcGetBufferMemoryRequirements2KHR, + GetBufferOpaqueCaptureAddress: ProcGetBufferOpaqueCaptureAddress, + GetBufferOpaqueCaptureAddressKHR: ProcGetBufferOpaqueCaptureAddressKHR, + GetCalibratedTimestampsEXT: ProcGetCalibratedTimestampsEXT, + GetDeferredOperationMaxConcurrencyKHR: ProcGetDeferredOperationMaxConcurrencyKHR, + GetDeferredOperationResultKHR: ProcGetDeferredOperationResultKHR, + GetDescriptorSetHostMappingVALVE: ProcGetDescriptorSetHostMappingVALVE, + GetDescriptorSetLayoutHostMappingInfoVALVE: ProcGetDescriptorSetLayoutHostMappingInfoVALVE, + GetDescriptorSetLayoutSupport: ProcGetDescriptorSetLayoutSupport, + GetDescriptorSetLayoutSupportKHR: ProcGetDescriptorSetLayoutSupportKHR, + GetDeviceAccelerationStructureCompatibilityKHR: ProcGetDeviceAccelerationStructureCompatibilityKHR, + GetDeviceBufferMemoryRequirements: ProcGetDeviceBufferMemoryRequirements, + GetDeviceBufferMemoryRequirementsKHR: ProcGetDeviceBufferMemoryRequirementsKHR, + GetDeviceGroupPeerMemoryFeatures: ProcGetDeviceGroupPeerMemoryFeatures, + GetDeviceGroupPeerMemoryFeaturesKHR: ProcGetDeviceGroupPeerMemoryFeaturesKHR, + GetDeviceGroupPresentCapabilitiesKHR: ProcGetDeviceGroupPresentCapabilitiesKHR, + GetDeviceGroupSurfacePresentModes2EXT: ProcGetDeviceGroupSurfacePresentModes2EXT, + GetDeviceGroupSurfacePresentModesKHR: ProcGetDeviceGroupSurfacePresentModesKHR, + GetDeviceImageMemoryRequirements: ProcGetDeviceImageMemoryRequirements, + GetDeviceImageMemoryRequirementsKHR: ProcGetDeviceImageMemoryRequirementsKHR, + GetDeviceImageSparseMemoryRequirements: ProcGetDeviceImageSparseMemoryRequirements, + GetDeviceImageSparseMemoryRequirementsKHR: ProcGetDeviceImageSparseMemoryRequirementsKHR, + GetDeviceMemoryCommitment: ProcGetDeviceMemoryCommitment, + GetDeviceMemoryOpaqueCaptureAddress: ProcGetDeviceMemoryOpaqueCaptureAddress, + GetDeviceMemoryOpaqueCaptureAddressKHR: ProcGetDeviceMemoryOpaqueCaptureAddressKHR, + GetDeviceProcAddr: ProcGetDeviceProcAddr, + GetDeviceQueue: ProcGetDeviceQueue, + GetDeviceQueue2: ProcGetDeviceQueue2, + GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI: ProcGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, + GetEventStatus: ProcGetEventStatus, + GetFenceFdKHR: ProcGetFenceFdKHR, + GetFenceStatus: ProcGetFenceStatus, + GetFenceWin32HandleKHR: ProcGetFenceWin32HandleKHR, + GetGeneratedCommandsMemoryRequirementsNV: ProcGetGeneratedCommandsMemoryRequirementsNV, + GetImageDrmFormatModifierPropertiesEXT: ProcGetImageDrmFormatModifierPropertiesEXT, + GetImageMemoryRequirements: ProcGetImageMemoryRequirements, + GetImageMemoryRequirements2: ProcGetImageMemoryRequirements2, + GetImageMemoryRequirements2KHR: ProcGetImageMemoryRequirements2KHR, + GetImageSparseMemoryRequirements: ProcGetImageSparseMemoryRequirements, + GetImageSparseMemoryRequirements2: ProcGetImageSparseMemoryRequirements2, + GetImageSparseMemoryRequirements2KHR: ProcGetImageSparseMemoryRequirements2KHR, + GetImageSubresourceLayout: ProcGetImageSubresourceLayout, + GetImageViewAddressNVX: ProcGetImageViewAddressNVX, + GetImageViewHandleNVX: ProcGetImageViewHandleNVX, + GetMemoryFdKHR: ProcGetMemoryFdKHR, + GetMemoryFdPropertiesKHR: ProcGetMemoryFdPropertiesKHR, + GetMemoryHostPointerPropertiesEXT: ProcGetMemoryHostPointerPropertiesEXT, + GetMemoryRemoteAddressNV: ProcGetMemoryRemoteAddressNV, + GetMemoryWin32HandleKHR: ProcGetMemoryWin32HandleKHR, + GetMemoryWin32HandleNV: ProcGetMemoryWin32HandleNV, + GetMemoryWin32HandlePropertiesKHR: ProcGetMemoryWin32HandlePropertiesKHR, + GetPastPresentationTimingGOOGLE: ProcGetPastPresentationTimingGOOGLE, + GetPerformanceParameterINTEL: ProcGetPerformanceParameterINTEL, + GetPipelineCacheData: ProcGetPipelineCacheData, + GetPipelineExecutableInternalRepresentationsKHR: ProcGetPipelineExecutableInternalRepresentationsKHR, + GetPipelineExecutablePropertiesKHR: ProcGetPipelineExecutablePropertiesKHR, + GetPipelineExecutableStatisticsKHR: ProcGetPipelineExecutableStatisticsKHR, + GetPrivateData: ProcGetPrivateData, + GetPrivateDataEXT: ProcGetPrivateDataEXT, + GetQueryPoolResults: ProcGetQueryPoolResults, + GetQueueCheckpointData2NV: ProcGetQueueCheckpointData2NV, + GetQueueCheckpointDataNV: ProcGetQueueCheckpointDataNV, + GetRayTracingCaptureReplayShaderGroupHandlesKHR: ProcGetRayTracingCaptureReplayShaderGroupHandlesKHR, + GetRayTracingShaderGroupHandlesKHR: ProcGetRayTracingShaderGroupHandlesKHR, + GetRayTracingShaderGroupHandlesNV: ProcGetRayTracingShaderGroupHandlesNV, + GetRayTracingShaderGroupStackSizeKHR: ProcGetRayTracingShaderGroupStackSizeKHR, + GetRefreshCycleDurationGOOGLE: ProcGetRefreshCycleDurationGOOGLE, + GetRenderAreaGranularity: ProcGetRenderAreaGranularity, + GetSemaphoreCounterValue: ProcGetSemaphoreCounterValue, + GetSemaphoreCounterValueKHR: ProcGetSemaphoreCounterValueKHR, + GetSemaphoreFdKHR: ProcGetSemaphoreFdKHR, + GetSemaphoreWin32HandleKHR: ProcGetSemaphoreWin32HandleKHR, + GetShaderInfoAMD: ProcGetShaderInfoAMD, + GetSwapchainCounterEXT: ProcGetSwapchainCounterEXT, + GetSwapchainImagesKHR: ProcGetSwapchainImagesKHR, + GetSwapchainStatusKHR: ProcGetSwapchainStatusKHR, + GetValidationCacheDataEXT: ProcGetValidationCacheDataEXT, + ImportFenceFdKHR: ProcImportFenceFdKHR, + ImportFenceWin32HandleKHR: ProcImportFenceWin32HandleKHR, + ImportSemaphoreFdKHR: ProcImportSemaphoreFdKHR, + ImportSemaphoreWin32HandleKHR: ProcImportSemaphoreWin32HandleKHR, + InitializePerformanceApiINTEL: ProcInitializePerformanceApiINTEL, + InvalidateMappedMemoryRanges: ProcInvalidateMappedMemoryRanges, + MapMemory: ProcMapMemory, + MergePipelineCaches: ProcMergePipelineCaches, + MergeValidationCachesEXT: ProcMergeValidationCachesEXT, + QueueBeginDebugUtilsLabelEXT: ProcQueueBeginDebugUtilsLabelEXT, + QueueBindSparse: ProcQueueBindSparse, + QueueEndDebugUtilsLabelEXT: ProcQueueEndDebugUtilsLabelEXT, + QueueInsertDebugUtilsLabelEXT: ProcQueueInsertDebugUtilsLabelEXT, + QueuePresentKHR: ProcQueuePresentKHR, + QueueSetPerformanceConfigurationINTEL: ProcQueueSetPerformanceConfigurationINTEL, + QueueSubmit: ProcQueueSubmit, + QueueSubmit2: ProcQueueSubmit2, + QueueSubmit2KHR: ProcQueueSubmit2KHR, + QueueWaitIdle: ProcQueueWaitIdle, + RegisterDeviceEventEXT: ProcRegisterDeviceEventEXT, + RegisterDisplayEventEXT: ProcRegisterDisplayEventEXT, + ReleaseFullScreenExclusiveModeEXT: ProcReleaseFullScreenExclusiveModeEXT, + ReleasePerformanceConfigurationINTEL: ProcReleasePerformanceConfigurationINTEL, + ReleaseProfilingLockKHR: ProcReleaseProfilingLockKHR, + ResetCommandBuffer: ProcResetCommandBuffer, + ResetCommandPool: ProcResetCommandPool, + ResetDescriptorPool: ProcResetDescriptorPool, + ResetEvent: ProcResetEvent, + ResetFences: ProcResetFences, + ResetQueryPool: ProcResetQueryPool, + ResetQueryPoolEXT: ProcResetQueryPoolEXT, + SetDebugUtilsObjectNameEXT: ProcSetDebugUtilsObjectNameEXT, + SetDebugUtilsObjectTagEXT: ProcSetDebugUtilsObjectTagEXT, + SetDeviceMemoryPriorityEXT: ProcSetDeviceMemoryPriorityEXT, + SetEvent: ProcSetEvent, + SetHdrMetadataEXT: ProcSetHdrMetadataEXT, + SetLocalDimmingAMD: ProcSetLocalDimmingAMD, + SetPrivateData: ProcSetPrivateData, + SetPrivateDataEXT: ProcSetPrivateDataEXT, + SignalSemaphore: ProcSignalSemaphore, + SignalSemaphoreKHR: ProcSignalSemaphoreKHR, + TrimCommandPool: ProcTrimCommandPool, + TrimCommandPoolKHR: ProcTrimCommandPoolKHR, + UninitializePerformanceApiINTEL: ProcUninitializePerformanceApiINTEL, + UnmapMemory: ProcUnmapMemory, + UpdateDescriptorSetWithTemplate: ProcUpdateDescriptorSetWithTemplate, + UpdateDescriptorSetWithTemplateKHR: ProcUpdateDescriptorSetWithTemplateKHR, + UpdateDescriptorSets: ProcUpdateDescriptorSets, + WaitForFences: ProcWaitForFences, + WaitForPresentKHR: ProcWaitForPresentKHR, + WaitSemaphores: ProcWaitSemaphores, + WaitSemaphoresKHR: ProcWaitSemaphoresKHR, + WriteAccelerationStructuresPropertiesKHR: ProcWriteAccelerationStructuresPropertiesKHR, +} + +load_proc_addresses_device_vtable :: proc(device: Device, vtable: ^Device_VTable) { + vtable.AcquireFullScreenExclusiveModeEXT = auto_cast GetDeviceProcAddr(device, "vkAcquireFullScreenExclusiveModeEXT") + vtable.AcquireNextImage2KHR = auto_cast GetDeviceProcAddr(device, "vkAcquireNextImage2KHR") + vtable.AcquireNextImageKHR = auto_cast GetDeviceProcAddr(device, "vkAcquireNextImageKHR") + vtable.AcquirePerformanceConfigurationINTEL = auto_cast GetDeviceProcAddr(device, "vkAcquirePerformanceConfigurationINTEL") + vtable.AcquireProfilingLockKHR = auto_cast GetDeviceProcAddr(device, "vkAcquireProfilingLockKHR") + vtable.AllocateCommandBuffers = auto_cast GetDeviceProcAddr(device, "vkAllocateCommandBuffers") + vtable.AllocateDescriptorSets = auto_cast GetDeviceProcAddr(device, "vkAllocateDescriptorSets") + vtable.AllocateMemory = auto_cast GetDeviceProcAddr(device, "vkAllocateMemory") + vtable.BeginCommandBuffer = auto_cast GetDeviceProcAddr(device, "vkBeginCommandBuffer") + vtable.BindAccelerationStructureMemoryNV = auto_cast GetDeviceProcAddr(device, "vkBindAccelerationStructureMemoryNV") + vtable.BindBufferMemory = auto_cast GetDeviceProcAddr(device, "vkBindBufferMemory") + vtable.BindBufferMemory2 = auto_cast GetDeviceProcAddr(device, "vkBindBufferMemory2") + vtable.BindBufferMemory2KHR = auto_cast GetDeviceProcAddr(device, "vkBindBufferMemory2KHR") + vtable.BindImageMemory = auto_cast GetDeviceProcAddr(device, "vkBindImageMemory") + vtable.BindImageMemory2 = auto_cast GetDeviceProcAddr(device, "vkBindImageMemory2") + vtable.BindImageMemory2KHR = auto_cast GetDeviceProcAddr(device, "vkBindImageMemory2KHR") + vtable.BuildAccelerationStructuresKHR = auto_cast GetDeviceProcAddr(device, "vkBuildAccelerationStructuresKHR") + vtable.CmdBeginConditionalRenderingEXT = auto_cast GetDeviceProcAddr(device, "vkCmdBeginConditionalRenderingEXT") + vtable.CmdBeginDebugUtilsLabelEXT = auto_cast GetDeviceProcAddr(device, "vkCmdBeginDebugUtilsLabelEXT") + vtable.CmdBeginQuery = auto_cast GetDeviceProcAddr(device, "vkCmdBeginQuery") + vtable.CmdBeginQueryIndexedEXT = auto_cast GetDeviceProcAddr(device, "vkCmdBeginQueryIndexedEXT") + vtable.CmdBeginRenderPass = auto_cast GetDeviceProcAddr(device, "vkCmdBeginRenderPass") + vtable.CmdBeginRenderPass2 = auto_cast GetDeviceProcAddr(device, "vkCmdBeginRenderPass2") + vtable.CmdBeginRenderPass2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdBeginRenderPass2KHR") + vtable.CmdBeginRendering = auto_cast GetDeviceProcAddr(device, "vkCmdBeginRendering") + vtable.CmdBeginRenderingKHR = auto_cast GetDeviceProcAddr(device, "vkCmdBeginRenderingKHR") + vtable.CmdBeginTransformFeedbackEXT = auto_cast GetDeviceProcAddr(device, "vkCmdBeginTransformFeedbackEXT") + vtable.CmdBindDescriptorSets = auto_cast GetDeviceProcAddr(device, "vkCmdBindDescriptorSets") + vtable.CmdBindIndexBuffer = auto_cast GetDeviceProcAddr(device, "vkCmdBindIndexBuffer") + vtable.CmdBindInvocationMaskHUAWEI = auto_cast GetDeviceProcAddr(device, "vkCmdBindInvocationMaskHUAWEI") + vtable.CmdBindPipeline = auto_cast GetDeviceProcAddr(device, "vkCmdBindPipeline") + vtable.CmdBindPipelineShaderGroupNV = auto_cast GetDeviceProcAddr(device, "vkCmdBindPipelineShaderGroupNV") + vtable.CmdBindShadingRateImageNV = auto_cast GetDeviceProcAddr(device, "vkCmdBindShadingRateImageNV") + vtable.CmdBindTransformFeedbackBuffersEXT = auto_cast GetDeviceProcAddr(device, "vkCmdBindTransformFeedbackBuffersEXT") + vtable.CmdBindVertexBuffers = auto_cast GetDeviceProcAddr(device, "vkCmdBindVertexBuffers") + vtable.CmdBindVertexBuffers2 = auto_cast GetDeviceProcAddr(device, "vkCmdBindVertexBuffers2") + vtable.CmdBindVertexBuffers2EXT = auto_cast GetDeviceProcAddr(device, "vkCmdBindVertexBuffers2EXT") + vtable.CmdBlitImage = auto_cast GetDeviceProcAddr(device, "vkCmdBlitImage") + vtable.CmdBlitImage2 = auto_cast GetDeviceProcAddr(device, "vkCmdBlitImage2") + vtable.CmdBlitImage2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdBlitImage2KHR") + vtable.CmdBuildAccelerationStructureNV = auto_cast GetDeviceProcAddr(device, "vkCmdBuildAccelerationStructureNV") + vtable.CmdBuildAccelerationStructuresIndirectKHR = auto_cast GetDeviceProcAddr(device, "vkCmdBuildAccelerationStructuresIndirectKHR") + vtable.CmdBuildAccelerationStructuresKHR = auto_cast GetDeviceProcAddr(device, "vkCmdBuildAccelerationStructuresKHR") + vtable.CmdClearAttachments = auto_cast GetDeviceProcAddr(device, "vkCmdClearAttachments") + vtable.CmdClearColorImage = auto_cast GetDeviceProcAddr(device, "vkCmdClearColorImage") + vtable.CmdClearDepthStencilImage = auto_cast GetDeviceProcAddr(device, "vkCmdClearDepthStencilImage") + vtable.CmdCopyAccelerationStructureKHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyAccelerationStructureKHR") + vtable.CmdCopyAccelerationStructureNV = auto_cast GetDeviceProcAddr(device, "vkCmdCopyAccelerationStructureNV") + vtable.CmdCopyAccelerationStructureToMemoryKHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyAccelerationStructureToMemoryKHR") + vtable.CmdCopyBuffer = auto_cast GetDeviceProcAddr(device, "vkCmdCopyBuffer") + vtable.CmdCopyBuffer2 = auto_cast GetDeviceProcAddr(device, "vkCmdCopyBuffer2") + vtable.CmdCopyBuffer2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyBuffer2KHR") + vtable.CmdCopyBufferToImage = auto_cast GetDeviceProcAddr(device, "vkCmdCopyBufferToImage") + vtable.CmdCopyBufferToImage2 = auto_cast GetDeviceProcAddr(device, "vkCmdCopyBufferToImage2") + vtable.CmdCopyBufferToImage2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyBufferToImage2KHR") + vtable.CmdCopyImage = auto_cast GetDeviceProcAddr(device, "vkCmdCopyImage") + vtable.CmdCopyImage2 = auto_cast GetDeviceProcAddr(device, "vkCmdCopyImage2") + vtable.CmdCopyImage2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyImage2KHR") + vtable.CmdCopyImageToBuffer = auto_cast GetDeviceProcAddr(device, "vkCmdCopyImageToBuffer") + vtable.CmdCopyImageToBuffer2 = auto_cast GetDeviceProcAddr(device, "vkCmdCopyImageToBuffer2") + vtable.CmdCopyImageToBuffer2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyImageToBuffer2KHR") + vtable.CmdCopyMemoryToAccelerationStructureKHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyMemoryToAccelerationStructureKHR") + vtable.CmdCopyQueryPoolResults = auto_cast GetDeviceProcAddr(device, "vkCmdCopyQueryPoolResults") + vtable.CmdCuLaunchKernelNVX = auto_cast GetDeviceProcAddr(device, "vkCmdCuLaunchKernelNVX") + vtable.CmdDebugMarkerBeginEXT = auto_cast GetDeviceProcAddr(device, "vkCmdDebugMarkerBeginEXT") + vtable.CmdDebugMarkerEndEXT = auto_cast GetDeviceProcAddr(device, "vkCmdDebugMarkerEndEXT") + vtable.CmdDebugMarkerInsertEXT = auto_cast GetDeviceProcAddr(device, "vkCmdDebugMarkerInsertEXT") + vtable.CmdDispatch = auto_cast GetDeviceProcAddr(device, "vkCmdDispatch") + vtable.CmdDispatchBase = auto_cast GetDeviceProcAddr(device, "vkCmdDispatchBase") + vtable.CmdDispatchBaseKHR = auto_cast GetDeviceProcAddr(device, "vkCmdDispatchBaseKHR") + vtable.CmdDispatchIndirect = auto_cast GetDeviceProcAddr(device, "vkCmdDispatchIndirect") + vtable.CmdDraw = auto_cast GetDeviceProcAddr(device, "vkCmdDraw") + vtable.CmdDrawIndexed = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndexed") + vtable.CmdDrawIndexedIndirect = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndexedIndirect") + vtable.CmdDrawIndexedIndirectCount = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndexedIndirectCount") + vtable.CmdDrawIndexedIndirectCountAMD = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndexedIndirectCountAMD") + vtable.CmdDrawIndexedIndirectCountKHR = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndexedIndirectCountKHR") + vtable.CmdDrawIndirect = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndirect") + vtable.CmdDrawIndirectByteCountEXT = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndirectByteCountEXT") + vtable.CmdDrawIndirectCount = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndirectCount") + vtable.CmdDrawIndirectCountAMD = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndirectCountAMD") + vtable.CmdDrawIndirectCountKHR = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndirectCountKHR") + vtable.CmdDrawMeshTasksIndirectCountNV = auto_cast GetDeviceProcAddr(device, "vkCmdDrawMeshTasksIndirectCountNV") + vtable.CmdDrawMeshTasksIndirectNV = auto_cast GetDeviceProcAddr(device, "vkCmdDrawMeshTasksIndirectNV") + vtable.CmdDrawMeshTasksNV = auto_cast GetDeviceProcAddr(device, "vkCmdDrawMeshTasksNV") + vtable.CmdDrawMultiEXT = auto_cast GetDeviceProcAddr(device, "vkCmdDrawMultiEXT") + vtable.CmdDrawMultiIndexedEXT = auto_cast GetDeviceProcAddr(device, "vkCmdDrawMultiIndexedEXT") + vtable.CmdEndConditionalRenderingEXT = auto_cast GetDeviceProcAddr(device, "vkCmdEndConditionalRenderingEXT") + vtable.CmdEndDebugUtilsLabelEXT = auto_cast GetDeviceProcAddr(device, "vkCmdEndDebugUtilsLabelEXT") + vtable.CmdEndQuery = auto_cast GetDeviceProcAddr(device, "vkCmdEndQuery") + vtable.CmdEndQueryIndexedEXT = auto_cast GetDeviceProcAddr(device, "vkCmdEndQueryIndexedEXT") + vtable.CmdEndRenderPass = auto_cast GetDeviceProcAddr(device, "vkCmdEndRenderPass") + vtable.CmdEndRenderPass2 = auto_cast GetDeviceProcAddr(device, "vkCmdEndRenderPass2") + vtable.CmdEndRenderPass2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdEndRenderPass2KHR") + vtable.CmdEndRendering = auto_cast GetDeviceProcAddr(device, "vkCmdEndRendering") + vtable.CmdEndRenderingKHR = auto_cast GetDeviceProcAddr(device, "vkCmdEndRenderingKHR") + vtable.CmdEndTransformFeedbackEXT = auto_cast GetDeviceProcAddr(device, "vkCmdEndTransformFeedbackEXT") + vtable.CmdExecuteCommands = auto_cast GetDeviceProcAddr(device, "vkCmdExecuteCommands") + vtable.CmdExecuteGeneratedCommandsNV = auto_cast GetDeviceProcAddr(device, "vkCmdExecuteGeneratedCommandsNV") + vtable.CmdFillBuffer = auto_cast GetDeviceProcAddr(device, "vkCmdFillBuffer") + vtable.CmdInsertDebugUtilsLabelEXT = auto_cast GetDeviceProcAddr(device, "vkCmdInsertDebugUtilsLabelEXT") + vtable.CmdNextSubpass = auto_cast GetDeviceProcAddr(device, "vkCmdNextSubpass") + vtable.CmdNextSubpass2 = auto_cast GetDeviceProcAddr(device, "vkCmdNextSubpass2") + vtable.CmdNextSubpass2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdNextSubpass2KHR") + vtable.CmdPipelineBarrier = auto_cast GetDeviceProcAddr(device, "vkCmdPipelineBarrier") + vtable.CmdPipelineBarrier2 = auto_cast GetDeviceProcAddr(device, "vkCmdPipelineBarrier2") + vtable.CmdPipelineBarrier2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdPipelineBarrier2KHR") + vtable.CmdPreprocessGeneratedCommandsNV = auto_cast GetDeviceProcAddr(device, "vkCmdPreprocessGeneratedCommandsNV") + vtable.CmdPushConstants = auto_cast GetDeviceProcAddr(device, "vkCmdPushConstants") + vtable.CmdPushDescriptorSetKHR = auto_cast GetDeviceProcAddr(device, "vkCmdPushDescriptorSetKHR") + vtable.CmdPushDescriptorSetWithTemplateKHR = auto_cast GetDeviceProcAddr(device, "vkCmdPushDescriptorSetWithTemplateKHR") + vtable.CmdResetEvent = auto_cast GetDeviceProcAddr(device, "vkCmdResetEvent") + vtable.CmdResetEvent2 = auto_cast GetDeviceProcAddr(device, "vkCmdResetEvent2") + vtable.CmdResetEvent2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdResetEvent2KHR") + vtable.CmdResetQueryPool = auto_cast GetDeviceProcAddr(device, "vkCmdResetQueryPool") + vtable.CmdResolveImage = auto_cast GetDeviceProcAddr(device, "vkCmdResolveImage") + vtable.CmdResolveImage2 = auto_cast GetDeviceProcAddr(device, "vkCmdResolveImage2") + vtable.CmdResolveImage2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdResolveImage2KHR") + vtable.CmdSetBlendConstants = auto_cast GetDeviceProcAddr(device, "vkCmdSetBlendConstants") + vtable.CmdSetCheckpointNV = auto_cast GetDeviceProcAddr(device, "vkCmdSetCheckpointNV") + vtable.CmdSetCoarseSampleOrderNV = auto_cast GetDeviceProcAddr(device, "vkCmdSetCoarseSampleOrderNV") + vtable.CmdSetCullMode = auto_cast GetDeviceProcAddr(device, "vkCmdSetCullMode") + vtable.CmdSetCullModeEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetCullModeEXT") + vtable.CmdSetDepthBias = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthBias") + vtable.CmdSetDepthBiasEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthBiasEnable") + vtable.CmdSetDepthBiasEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthBiasEnableEXT") + vtable.CmdSetDepthBounds = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthBounds") + vtable.CmdSetDepthBoundsTestEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthBoundsTestEnable") + vtable.CmdSetDepthBoundsTestEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthBoundsTestEnableEXT") + vtable.CmdSetDepthCompareOp = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthCompareOp") + vtable.CmdSetDepthCompareOpEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthCompareOpEXT") + vtable.CmdSetDepthTestEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthTestEnable") + vtable.CmdSetDepthTestEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthTestEnableEXT") + vtable.CmdSetDepthWriteEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthWriteEnable") + vtable.CmdSetDepthWriteEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthWriteEnableEXT") + vtable.CmdSetDeviceMask = auto_cast GetDeviceProcAddr(device, "vkCmdSetDeviceMask") + vtable.CmdSetDeviceMaskKHR = auto_cast GetDeviceProcAddr(device, "vkCmdSetDeviceMaskKHR") + vtable.CmdSetDiscardRectangleEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetDiscardRectangleEXT") + vtable.CmdSetEvent = auto_cast GetDeviceProcAddr(device, "vkCmdSetEvent") + vtable.CmdSetEvent2 = auto_cast GetDeviceProcAddr(device, "vkCmdSetEvent2") + vtable.CmdSetEvent2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdSetEvent2KHR") + vtable.CmdSetExclusiveScissorNV = auto_cast GetDeviceProcAddr(device, "vkCmdSetExclusiveScissorNV") + vtable.CmdSetFragmentShadingRateEnumNV = auto_cast GetDeviceProcAddr(device, "vkCmdSetFragmentShadingRateEnumNV") + vtable.CmdSetFragmentShadingRateKHR = auto_cast GetDeviceProcAddr(device, "vkCmdSetFragmentShadingRateKHR") + vtable.CmdSetFrontFace = auto_cast GetDeviceProcAddr(device, "vkCmdSetFrontFace") + vtable.CmdSetFrontFaceEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetFrontFaceEXT") + vtable.CmdSetLineStippleEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetLineStippleEXT") + vtable.CmdSetLineWidth = auto_cast GetDeviceProcAddr(device, "vkCmdSetLineWidth") + vtable.CmdSetLogicOpEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetLogicOpEXT") + vtable.CmdSetPatchControlPointsEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetPatchControlPointsEXT") + vtable.CmdSetPerformanceMarkerINTEL = auto_cast GetDeviceProcAddr(device, "vkCmdSetPerformanceMarkerINTEL") + vtable.CmdSetPerformanceOverrideINTEL = auto_cast GetDeviceProcAddr(device, "vkCmdSetPerformanceOverrideINTEL") + vtable.CmdSetPerformanceStreamMarkerINTEL = auto_cast GetDeviceProcAddr(device, "vkCmdSetPerformanceStreamMarkerINTEL") + vtable.CmdSetPrimitiveRestartEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetPrimitiveRestartEnable") + vtable.CmdSetPrimitiveRestartEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetPrimitiveRestartEnableEXT") + vtable.CmdSetPrimitiveTopology = auto_cast GetDeviceProcAddr(device, "vkCmdSetPrimitiveTopology") + vtable.CmdSetPrimitiveTopologyEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetPrimitiveTopologyEXT") + vtable.CmdSetRasterizerDiscardEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetRasterizerDiscardEnable") + vtable.CmdSetRasterizerDiscardEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetRasterizerDiscardEnableEXT") + vtable.CmdSetRayTracingPipelineStackSizeKHR = auto_cast GetDeviceProcAddr(device, "vkCmdSetRayTracingPipelineStackSizeKHR") + vtable.CmdSetSampleLocationsEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetSampleLocationsEXT") + vtable.CmdSetScissor = auto_cast GetDeviceProcAddr(device, "vkCmdSetScissor") + vtable.CmdSetScissorWithCount = auto_cast GetDeviceProcAddr(device, "vkCmdSetScissorWithCount") + vtable.CmdSetScissorWithCountEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetScissorWithCountEXT") + vtable.CmdSetStencilCompareMask = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilCompareMask") + vtable.CmdSetStencilOp = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilOp") + vtable.CmdSetStencilOpEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilOpEXT") + vtable.CmdSetStencilReference = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilReference") + vtable.CmdSetStencilTestEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilTestEnable") + vtable.CmdSetStencilTestEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilTestEnableEXT") + vtable.CmdSetStencilWriteMask = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilWriteMask") + vtable.CmdSetVertexInputEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetVertexInputEXT") + vtable.CmdSetViewport = auto_cast GetDeviceProcAddr(device, "vkCmdSetViewport") + vtable.CmdSetViewportShadingRatePaletteNV = auto_cast GetDeviceProcAddr(device, "vkCmdSetViewportShadingRatePaletteNV") + vtable.CmdSetViewportWScalingNV = auto_cast GetDeviceProcAddr(device, "vkCmdSetViewportWScalingNV") + vtable.CmdSetViewportWithCount = auto_cast GetDeviceProcAddr(device, "vkCmdSetViewportWithCount") + vtable.CmdSetViewportWithCountEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetViewportWithCountEXT") + vtable.CmdSubpassShadingHUAWEI = auto_cast GetDeviceProcAddr(device, "vkCmdSubpassShadingHUAWEI") + vtable.CmdTraceRaysIndirectKHR = auto_cast GetDeviceProcAddr(device, "vkCmdTraceRaysIndirectKHR") + vtable.CmdTraceRaysKHR = auto_cast GetDeviceProcAddr(device, "vkCmdTraceRaysKHR") + vtable.CmdTraceRaysNV = auto_cast GetDeviceProcAddr(device, "vkCmdTraceRaysNV") + vtable.CmdUpdateBuffer = auto_cast GetDeviceProcAddr(device, "vkCmdUpdateBuffer") + vtable.CmdWaitEvents = auto_cast GetDeviceProcAddr(device, "vkCmdWaitEvents") + vtable.CmdWaitEvents2 = auto_cast GetDeviceProcAddr(device, "vkCmdWaitEvents2") + vtable.CmdWaitEvents2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdWaitEvents2KHR") + vtable.CmdWriteAccelerationStructuresPropertiesKHR = auto_cast GetDeviceProcAddr(device, "vkCmdWriteAccelerationStructuresPropertiesKHR") + vtable.CmdWriteAccelerationStructuresPropertiesNV = auto_cast GetDeviceProcAddr(device, "vkCmdWriteAccelerationStructuresPropertiesNV") + vtable.CmdWriteBufferMarker2AMD = auto_cast GetDeviceProcAddr(device, "vkCmdWriteBufferMarker2AMD") + vtable.CmdWriteBufferMarkerAMD = auto_cast GetDeviceProcAddr(device, "vkCmdWriteBufferMarkerAMD") + vtable.CmdWriteTimestamp = auto_cast GetDeviceProcAddr(device, "vkCmdWriteTimestamp") + vtable.CmdWriteTimestamp2 = auto_cast GetDeviceProcAddr(device, "vkCmdWriteTimestamp2") + vtable.CmdWriteTimestamp2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdWriteTimestamp2KHR") + vtable.CompileDeferredNV = auto_cast GetDeviceProcAddr(device, "vkCompileDeferredNV") + vtable.CopyAccelerationStructureKHR = auto_cast GetDeviceProcAddr(device, "vkCopyAccelerationStructureKHR") + vtable.CopyAccelerationStructureToMemoryKHR = auto_cast GetDeviceProcAddr(device, "vkCopyAccelerationStructureToMemoryKHR") + vtable.CopyMemoryToAccelerationStructureKHR = auto_cast GetDeviceProcAddr(device, "vkCopyMemoryToAccelerationStructureKHR") + vtable.CreateAccelerationStructureKHR = auto_cast GetDeviceProcAddr(device, "vkCreateAccelerationStructureKHR") + vtable.CreateAccelerationStructureNV = auto_cast GetDeviceProcAddr(device, "vkCreateAccelerationStructureNV") + vtable.CreateBuffer = auto_cast GetDeviceProcAddr(device, "vkCreateBuffer") + vtable.CreateBufferView = auto_cast GetDeviceProcAddr(device, "vkCreateBufferView") + vtable.CreateCommandPool = auto_cast GetDeviceProcAddr(device, "vkCreateCommandPool") + vtable.CreateComputePipelines = auto_cast GetDeviceProcAddr(device, "vkCreateComputePipelines") + vtable.CreateCuFunctionNVX = auto_cast GetDeviceProcAddr(device, "vkCreateCuFunctionNVX") + vtable.CreateCuModuleNVX = auto_cast GetDeviceProcAddr(device, "vkCreateCuModuleNVX") + vtable.CreateDeferredOperationKHR = auto_cast GetDeviceProcAddr(device, "vkCreateDeferredOperationKHR") + vtable.CreateDescriptorPool = auto_cast GetDeviceProcAddr(device, "vkCreateDescriptorPool") + vtable.CreateDescriptorSetLayout = auto_cast GetDeviceProcAddr(device, "vkCreateDescriptorSetLayout") + vtable.CreateDescriptorUpdateTemplate = auto_cast GetDeviceProcAddr(device, "vkCreateDescriptorUpdateTemplate") + vtable.CreateDescriptorUpdateTemplateKHR = auto_cast GetDeviceProcAddr(device, "vkCreateDescriptorUpdateTemplateKHR") + vtable.CreateEvent = auto_cast GetDeviceProcAddr(device, "vkCreateEvent") + vtable.CreateFence = auto_cast GetDeviceProcAddr(device, "vkCreateFence") + vtable.CreateFramebuffer = auto_cast GetDeviceProcAddr(device, "vkCreateFramebuffer") + vtable.CreateGraphicsPipelines = auto_cast GetDeviceProcAddr(device, "vkCreateGraphicsPipelines") + vtable.CreateImage = auto_cast GetDeviceProcAddr(device, "vkCreateImage") + vtable.CreateImageView = auto_cast GetDeviceProcAddr(device, "vkCreateImageView") + vtable.CreateIndirectCommandsLayoutNV = auto_cast GetDeviceProcAddr(device, "vkCreateIndirectCommandsLayoutNV") + vtable.CreatePipelineCache = auto_cast GetDeviceProcAddr(device, "vkCreatePipelineCache") + vtable.CreatePipelineLayout = auto_cast GetDeviceProcAddr(device, "vkCreatePipelineLayout") + vtable.CreatePrivateDataSlot = auto_cast GetDeviceProcAddr(device, "vkCreatePrivateDataSlot") + vtable.CreatePrivateDataSlotEXT = auto_cast GetDeviceProcAddr(device, "vkCreatePrivateDataSlotEXT") + vtable.CreateQueryPool = auto_cast GetDeviceProcAddr(device, "vkCreateQueryPool") + vtable.CreateRayTracingPipelinesKHR = auto_cast GetDeviceProcAddr(device, "vkCreateRayTracingPipelinesKHR") + vtable.CreateRayTracingPipelinesNV = auto_cast GetDeviceProcAddr(device, "vkCreateRayTracingPipelinesNV") + vtable.CreateRenderPass = auto_cast GetDeviceProcAddr(device, "vkCreateRenderPass") + vtable.CreateRenderPass2 = auto_cast GetDeviceProcAddr(device, "vkCreateRenderPass2") + vtable.CreateRenderPass2KHR = auto_cast GetDeviceProcAddr(device, "vkCreateRenderPass2KHR") + vtable.CreateSampler = auto_cast GetDeviceProcAddr(device, "vkCreateSampler") + vtable.CreateSamplerYcbcrConversion = auto_cast GetDeviceProcAddr(device, "vkCreateSamplerYcbcrConversion") + vtable.CreateSamplerYcbcrConversionKHR = auto_cast GetDeviceProcAddr(device, "vkCreateSamplerYcbcrConversionKHR") + vtable.CreateSemaphore = auto_cast GetDeviceProcAddr(device, "vkCreateSemaphore") + vtable.CreateShaderModule = auto_cast GetDeviceProcAddr(device, "vkCreateShaderModule") + vtable.CreateSharedSwapchainsKHR = auto_cast GetDeviceProcAddr(device, "vkCreateSharedSwapchainsKHR") + vtable.CreateSwapchainKHR = auto_cast GetDeviceProcAddr(device, "vkCreateSwapchainKHR") + vtable.CreateValidationCacheEXT = auto_cast GetDeviceProcAddr(device, "vkCreateValidationCacheEXT") + vtable.DebugMarkerSetObjectNameEXT = auto_cast GetDeviceProcAddr(device, "vkDebugMarkerSetObjectNameEXT") + vtable.DebugMarkerSetObjectTagEXT = auto_cast GetDeviceProcAddr(device, "vkDebugMarkerSetObjectTagEXT") + vtable.DeferredOperationJoinKHR = auto_cast GetDeviceProcAddr(device, "vkDeferredOperationJoinKHR") + vtable.DestroyAccelerationStructureKHR = auto_cast GetDeviceProcAddr(device, "vkDestroyAccelerationStructureKHR") + vtable.DestroyAccelerationStructureNV = auto_cast GetDeviceProcAddr(device, "vkDestroyAccelerationStructureNV") + vtable.DestroyBuffer = auto_cast GetDeviceProcAddr(device, "vkDestroyBuffer") + vtable.DestroyBufferView = auto_cast GetDeviceProcAddr(device, "vkDestroyBufferView") + vtable.DestroyCommandPool = auto_cast GetDeviceProcAddr(device, "vkDestroyCommandPool") + vtable.DestroyCuFunctionNVX = auto_cast GetDeviceProcAddr(device, "vkDestroyCuFunctionNVX") + vtable.DestroyCuModuleNVX = auto_cast GetDeviceProcAddr(device, "vkDestroyCuModuleNVX") + vtable.DestroyDeferredOperationKHR = auto_cast GetDeviceProcAddr(device, "vkDestroyDeferredOperationKHR") + vtable.DestroyDescriptorPool = auto_cast GetDeviceProcAddr(device, "vkDestroyDescriptorPool") + vtable.DestroyDescriptorSetLayout = auto_cast GetDeviceProcAddr(device, "vkDestroyDescriptorSetLayout") + vtable.DestroyDescriptorUpdateTemplate = auto_cast GetDeviceProcAddr(device, "vkDestroyDescriptorUpdateTemplate") + vtable.DestroyDescriptorUpdateTemplateKHR = auto_cast GetDeviceProcAddr(device, "vkDestroyDescriptorUpdateTemplateKHR") + vtable.DestroyDevice = auto_cast GetDeviceProcAddr(device, "vkDestroyDevice") + vtable.DestroyEvent = auto_cast GetDeviceProcAddr(device, "vkDestroyEvent") + vtable.DestroyFence = auto_cast GetDeviceProcAddr(device, "vkDestroyFence") + vtable.DestroyFramebuffer = auto_cast GetDeviceProcAddr(device, "vkDestroyFramebuffer") + vtable.DestroyImage = auto_cast GetDeviceProcAddr(device, "vkDestroyImage") + vtable.DestroyImageView = auto_cast GetDeviceProcAddr(device, "vkDestroyImageView") + vtable.DestroyIndirectCommandsLayoutNV = auto_cast GetDeviceProcAddr(device, "vkDestroyIndirectCommandsLayoutNV") + vtable.DestroyPipeline = auto_cast GetDeviceProcAddr(device, "vkDestroyPipeline") + vtable.DestroyPipelineCache = auto_cast GetDeviceProcAddr(device, "vkDestroyPipelineCache") + vtable.DestroyPipelineLayout = auto_cast GetDeviceProcAddr(device, "vkDestroyPipelineLayout") + vtable.DestroyPrivateDataSlot = auto_cast GetDeviceProcAddr(device, "vkDestroyPrivateDataSlot") + vtable.DestroyPrivateDataSlotEXT = auto_cast GetDeviceProcAddr(device, "vkDestroyPrivateDataSlotEXT") + vtable.DestroyQueryPool = auto_cast GetDeviceProcAddr(device, "vkDestroyQueryPool") + vtable.DestroyRenderPass = auto_cast GetDeviceProcAddr(device, "vkDestroyRenderPass") + vtable.DestroySampler = auto_cast GetDeviceProcAddr(device, "vkDestroySampler") + vtable.DestroySamplerYcbcrConversion = auto_cast GetDeviceProcAddr(device, "vkDestroySamplerYcbcrConversion") + vtable.DestroySamplerYcbcrConversionKHR = auto_cast GetDeviceProcAddr(device, "vkDestroySamplerYcbcrConversionKHR") + vtable.DestroySemaphore = auto_cast GetDeviceProcAddr(device, "vkDestroySemaphore") + vtable.DestroyShaderModule = auto_cast GetDeviceProcAddr(device, "vkDestroyShaderModule") + vtable.DestroySwapchainKHR = auto_cast GetDeviceProcAddr(device, "vkDestroySwapchainKHR") + vtable.DestroyValidationCacheEXT = auto_cast GetDeviceProcAddr(device, "vkDestroyValidationCacheEXT") + vtable.DeviceWaitIdle = auto_cast GetDeviceProcAddr(device, "vkDeviceWaitIdle") + vtable.DisplayPowerControlEXT = auto_cast GetDeviceProcAddr(device, "vkDisplayPowerControlEXT") + vtable.EndCommandBuffer = auto_cast GetDeviceProcAddr(device, "vkEndCommandBuffer") + vtable.FlushMappedMemoryRanges = auto_cast GetDeviceProcAddr(device, "vkFlushMappedMemoryRanges") + vtable.FreeCommandBuffers = auto_cast GetDeviceProcAddr(device, "vkFreeCommandBuffers") + vtable.FreeDescriptorSets = auto_cast GetDeviceProcAddr(device, "vkFreeDescriptorSets") + vtable.FreeMemory = auto_cast GetDeviceProcAddr(device, "vkFreeMemory") + vtable.GetAccelerationStructureBuildSizesKHR = auto_cast GetDeviceProcAddr(device, "vkGetAccelerationStructureBuildSizesKHR") + vtable.GetAccelerationStructureDeviceAddressKHR = auto_cast GetDeviceProcAddr(device, "vkGetAccelerationStructureDeviceAddressKHR") + vtable.GetAccelerationStructureHandleNV = auto_cast GetDeviceProcAddr(device, "vkGetAccelerationStructureHandleNV") + vtable.GetAccelerationStructureMemoryRequirementsNV = auto_cast GetDeviceProcAddr(device, "vkGetAccelerationStructureMemoryRequirementsNV") + vtable.GetBufferDeviceAddress = auto_cast GetDeviceProcAddr(device, "vkGetBufferDeviceAddress") + vtable.GetBufferDeviceAddressEXT = auto_cast GetDeviceProcAddr(device, "vkGetBufferDeviceAddressEXT") + vtable.GetBufferDeviceAddressKHR = auto_cast GetDeviceProcAddr(device, "vkGetBufferDeviceAddressKHR") + vtable.GetBufferMemoryRequirements = auto_cast GetDeviceProcAddr(device, "vkGetBufferMemoryRequirements") + vtable.GetBufferMemoryRequirements2 = auto_cast GetDeviceProcAddr(device, "vkGetBufferMemoryRequirements2") + vtable.GetBufferMemoryRequirements2KHR = auto_cast GetDeviceProcAddr(device, "vkGetBufferMemoryRequirements2KHR") + vtable.GetBufferOpaqueCaptureAddress = auto_cast GetDeviceProcAddr(device, "vkGetBufferOpaqueCaptureAddress") + vtable.GetBufferOpaqueCaptureAddressKHR = auto_cast GetDeviceProcAddr(device, "vkGetBufferOpaqueCaptureAddressKHR") + vtable.GetCalibratedTimestampsEXT = auto_cast GetDeviceProcAddr(device, "vkGetCalibratedTimestampsEXT") + vtable.GetDeferredOperationMaxConcurrencyKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeferredOperationMaxConcurrencyKHR") + vtable.GetDeferredOperationResultKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeferredOperationResultKHR") + vtable.GetDescriptorSetHostMappingVALVE = auto_cast GetDeviceProcAddr(device, "vkGetDescriptorSetHostMappingVALVE") + vtable.GetDescriptorSetLayoutHostMappingInfoVALVE = auto_cast GetDeviceProcAddr(device, "vkGetDescriptorSetLayoutHostMappingInfoVALVE") + vtable.GetDescriptorSetLayoutSupport = auto_cast GetDeviceProcAddr(device, "vkGetDescriptorSetLayoutSupport") + vtable.GetDescriptorSetLayoutSupportKHR = auto_cast GetDeviceProcAddr(device, "vkGetDescriptorSetLayoutSupportKHR") + vtable.GetDeviceAccelerationStructureCompatibilityKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceAccelerationStructureCompatibilityKHR") + vtable.GetDeviceBufferMemoryRequirements = auto_cast GetDeviceProcAddr(device, "vkGetDeviceBufferMemoryRequirements") + vtable.GetDeviceBufferMemoryRequirementsKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceBufferMemoryRequirementsKHR") + vtable.GetDeviceGroupPeerMemoryFeatures = auto_cast GetDeviceProcAddr(device, "vkGetDeviceGroupPeerMemoryFeatures") + vtable.GetDeviceGroupPeerMemoryFeaturesKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceGroupPeerMemoryFeaturesKHR") + vtable.GetDeviceGroupPresentCapabilitiesKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceGroupPresentCapabilitiesKHR") + vtable.GetDeviceGroupSurfacePresentModes2EXT = auto_cast GetDeviceProcAddr(device, "vkGetDeviceGroupSurfacePresentModes2EXT") + vtable.GetDeviceGroupSurfacePresentModesKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceGroupSurfacePresentModesKHR") + vtable.GetDeviceImageMemoryRequirements = auto_cast GetDeviceProcAddr(device, "vkGetDeviceImageMemoryRequirements") + vtable.GetDeviceImageMemoryRequirementsKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceImageMemoryRequirementsKHR") + vtable.GetDeviceImageSparseMemoryRequirements = auto_cast GetDeviceProcAddr(device, "vkGetDeviceImageSparseMemoryRequirements") + vtable.GetDeviceImageSparseMemoryRequirementsKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceImageSparseMemoryRequirementsKHR") + vtable.GetDeviceMemoryCommitment = auto_cast GetDeviceProcAddr(device, "vkGetDeviceMemoryCommitment") + vtable.GetDeviceMemoryOpaqueCaptureAddress = auto_cast GetDeviceProcAddr(device, "vkGetDeviceMemoryOpaqueCaptureAddress") + vtable.GetDeviceMemoryOpaqueCaptureAddressKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceMemoryOpaqueCaptureAddressKHR") + vtable.GetDeviceProcAddr = auto_cast GetDeviceProcAddr(device, "vkGetDeviceProcAddr") + vtable.GetDeviceQueue = auto_cast GetDeviceProcAddr(device, "vkGetDeviceQueue") + vtable.GetDeviceQueue2 = auto_cast GetDeviceProcAddr(device, "vkGetDeviceQueue2") + vtable.GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = auto_cast GetDeviceProcAddr(device, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI") + vtable.GetEventStatus = auto_cast GetDeviceProcAddr(device, "vkGetEventStatus") + vtable.GetFenceFdKHR = auto_cast GetDeviceProcAddr(device, "vkGetFenceFdKHR") + vtable.GetFenceStatus = auto_cast GetDeviceProcAddr(device, "vkGetFenceStatus") + vtable.GetFenceWin32HandleKHR = auto_cast GetDeviceProcAddr(device, "vkGetFenceWin32HandleKHR") + vtable.GetGeneratedCommandsMemoryRequirementsNV = auto_cast GetDeviceProcAddr(device, "vkGetGeneratedCommandsMemoryRequirementsNV") + vtable.GetImageDrmFormatModifierPropertiesEXT = auto_cast GetDeviceProcAddr(device, "vkGetImageDrmFormatModifierPropertiesEXT") + vtable.GetImageMemoryRequirements = auto_cast GetDeviceProcAddr(device, "vkGetImageMemoryRequirements") + vtable.GetImageMemoryRequirements2 = auto_cast GetDeviceProcAddr(device, "vkGetImageMemoryRequirements2") + vtable.GetImageMemoryRequirements2KHR = auto_cast GetDeviceProcAddr(device, "vkGetImageMemoryRequirements2KHR") + vtable.GetImageSparseMemoryRequirements = auto_cast GetDeviceProcAddr(device, "vkGetImageSparseMemoryRequirements") + vtable.GetImageSparseMemoryRequirements2 = auto_cast GetDeviceProcAddr(device, "vkGetImageSparseMemoryRequirements2") + vtable.GetImageSparseMemoryRequirements2KHR = auto_cast GetDeviceProcAddr(device, "vkGetImageSparseMemoryRequirements2KHR") + vtable.GetImageSubresourceLayout = auto_cast GetDeviceProcAddr(device, "vkGetImageSubresourceLayout") + vtable.GetImageViewAddressNVX = auto_cast GetDeviceProcAddr(device, "vkGetImageViewAddressNVX") + vtable.GetImageViewHandleNVX = auto_cast GetDeviceProcAddr(device, "vkGetImageViewHandleNVX") + vtable.GetMemoryFdKHR = auto_cast GetDeviceProcAddr(device, "vkGetMemoryFdKHR") + vtable.GetMemoryFdPropertiesKHR = auto_cast GetDeviceProcAddr(device, "vkGetMemoryFdPropertiesKHR") + vtable.GetMemoryHostPointerPropertiesEXT = auto_cast GetDeviceProcAddr(device, "vkGetMemoryHostPointerPropertiesEXT") + vtable.GetMemoryRemoteAddressNV = auto_cast GetDeviceProcAddr(device, "vkGetMemoryRemoteAddressNV") + vtable.GetMemoryWin32HandleKHR = auto_cast GetDeviceProcAddr(device, "vkGetMemoryWin32HandleKHR") + vtable.GetMemoryWin32HandleNV = auto_cast GetDeviceProcAddr(device, "vkGetMemoryWin32HandleNV") + vtable.GetMemoryWin32HandlePropertiesKHR = auto_cast GetDeviceProcAddr(device, "vkGetMemoryWin32HandlePropertiesKHR") + vtable.GetPastPresentationTimingGOOGLE = auto_cast GetDeviceProcAddr(device, "vkGetPastPresentationTimingGOOGLE") + vtable.GetPerformanceParameterINTEL = auto_cast GetDeviceProcAddr(device, "vkGetPerformanceParameterINTEL") + vtable.GetPipelineCacheData = auto_cast GetDeviceProcAddr(device, "vkGetPipelineCacheData") + vtable.GetPipelineExecutableInternalRepresentationsKHR = auto_cast GetDeviceProcAddr(device, "vkGetPipelineExecutableInternalRepresentationsKHR") + vtable.GetPipelineExecutablePropertiesKHR = auto_cast GetDeviceProcAddr(device, "vkGetPipelineExecutablePropertiesKHR") + vtable.GetPipelineExecutableStatisticsKHR = auto_cast GetDeviceProcAddr(device, "vkGetPipelineExecutableStatisticsKHR") + vtable.GetPrivateData = auto_cast GetDeviceProcAddr(device, "vkGetPrivateData") + vtable.GetPrivateDataEXT = auto_cast GetDeviceProcAddr(device, "vkGetPrivateDataEXT") + vtable.GetQueryPoolResults = auto_cast GetDeviceProcAddr(device, "vkGetQueryPoolResults") + vtable.GetQueueCheckpointData2NV = auto_cast GetDeviceProcAddr(device, "vkGetQueueCheckpointData2NV") + vtable.GetQueueCheckpointDataNV = auto_cast GetDeviceProcAddr(device, "vkGetQueueCheckpointDataNV") + vtable.GetRayTracingCaptureReplayShaderGroupHandlesKHR = auto_cast GetDeviceProcAddr(device, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR") + vtable.GetRayTracingShaderGroupHandlesKHR = auto_cast GetDeviceProcAddr(device, "vkGetRayTracingShaderGroupHandlesKHR") + vtable.GetRayTracingShaderGroupHandlesNV = auto_cast GetDeviceProcAddr(device, "vkGetRayTracingShaderGroupHandlesNV") + vtable.GetRayTracingShaderGroupStackSizeKHR = auto_cast GetDeviceProcAddr(device, "vkGetRayTracingShaderGroupStackSizeKHR") + vtable.GetRefreshCycleDurationGOOGLE = auto_cast GetDeviceProcAddr(device, "vkGetRefreshCycleDurationGOOGLE") + vtable.GetRenderAreaGranularity = auto_cast GetDeviceProcAddr(device, "vkGetRenderAreaGranularity") + vtable.GetSemaphoreCounterValue = auto_cast GetDeviceProcAddr(device, "vkGetSemaphoreCounterValue") + vtable.GetSemaphoreCounterValueKHR = auto_cast GetDeviceProcAddr(device, "vkGetSemaphoreCounterValueKHR") + vtable.GetSemaphoreFdKHR = auto_cast GetDeviceProcAddr(device, "vkGetSemaphoreFdKHR") + vtable.GetSemaphoreWin32HandleKHR = auto_cast GetDeviceProcAddr(device, "vkGetSemaphoreWin32HandleKHR") + vtable.GetShaderInfoAMD = auto_cast GetDeviceProcAddr(device, "vkGetShaderInfoAMD") + vtable.GetSwapchainCounterEXT = auto_cast GetDeviceProcAddr(device, "vkGetSwapchainCounterEXT") + vtable.GetSwapchainImagesKHR = auto_cast GetDeviceProcAddr(device, "vkGetSwapchainImagesKHR") + vtable.GetSwapchainStatusKHR = auto_cast GetDeviceProcAddr(device, "vkGetSwapchainStatusKHR") + vtable.GetValidationCacheDataEXT = auto_cast GetDeviceProcAddr(device, "vkGetValidationCacheDataEXT") + vtable.ImportFenceFdKHR = auto_cast GetDeviceProcAddr(device, "vkImportFenceFdKHR") + vtable.ImportFenceWin32HandleKHR = auto_cast GetDeviceProcAddr(device, "vkImportFenceWin32HandleKHR") + vtable.ImportSemaphoreFdKHR = auto_cast GetDeviceProcAddr(device, "vkImportSemaphoreFdKHR") + vtable.ImportSemaphoreWin32HandleKHR = auto_cast GetDeviceProcAddr(device, "vkImportSemaphoreWin32HandleKHR") + vtable.InitializePerformanceApiINTEL = auto_cast GetDeviceProcAddr(device, "vkInitializePerformanceApiINTEL") + vtable.InvalidateMappedMemoryRanges = auto_cast GetDeviceProcAddr(device, "vkInvalidateMappedMemoryRanges") + vtable.MapMemory = auto_cast GetDeviceProcAddr(device, "vkMapMemory") + vtable.MergePipelineCaches = auto_cast GetDeviceProcAddr(device, "vkMergePipelineCaches") + vtable.MergeValidationCachesEXT = auto_cast GetDeviceProcAddr(device, "vkMergeValidationCachesEXT") + vtable.QueueBeginDebugUtilsLabelEXT = auto_cast GetDeviceProcAddr(device, "vkQueueBeginDebugUtilsLabelEXT") + vtable.QueueBindSparse = auto_cast GetDeviceProcAddr(device, "vkQueueBindSparse") + vtable.QueueEndDebugUtilsLabelEXT = auto_cast GetDeviceProcAddr(device, "vkQueueEndDebugUtilsLabelEXT") + vtable.QueueInsertDebugUtilsLabelEXT = auto_cast GetDeviceProcAddr(device, "vkQueueInsertDebugUtilsLabelEXT") + vtable.QueuePresentKHR = auto_cast GetDeviceProcAddr(device, "vkQueuePresentKHR") + vtable.QueueSetPerformanceConfigurationINTEL = auto_cast GetDeviceProcAddr(device, "vkQueueSetPerformanceConfigurationINTEL") + vtable.QueueSubmit = auto_cast GetDeviceProcAddr(device, "vkQueueSubmit") + vtable.QueueSubmit2 = auto_cast GetDeviceProcAddr(device, "vkQueueSubmit2") + vtable.QueueSubmit2KHR = auto_cast GetDeviceProcAddr(device, "vkQueueSubmit2KHR") + vtable.QueueWaitIdle = auto_cast GetDeviceProcAddr(device, "vkQueueWaitIdle") + vtable.RegisterDeviceEventEXT = auto_cast GetDeviceProcAddr(device, "vkRegisterDeviceEventEXT") + vtable.RegisterDisplayEventEXT = auto_cast GetDeviceProcAddr(device, "vkRegisterDisplayEventEXT") + vtable.ReleaseFullScreenExclusiveModeEXT = auto_cast GetDeviceProcAddr(device, "vkReleaseFullScreenExclusiveModeEXT") + vtable.ReleasePerformanceConfigurationINTEL = auto_cast GetDeviceProcAddr(device, "vkReleasePerformanceConfigurationINTEL") + vtable.ReleaseProfilingLockKHR = auto_cast GetDeviceProcAddr(device, "vkReleaseProfilingLockKHR") + vtable.ResetCommandBuffer = auto_cast GetDeviceProcAddr(device, "vkResetCommandBuffer") + vtable.ResetCommandPool = auto_cast GetDeviceProcAddr(device, "vkResetCommandPool") + vtable.ResetDescriptorPool = auto_cast GetDeviceProcAddr(device, "vkResetDescriptorPool") + vtable.ResetEvent = auto_cast GetDeviceProcAddr(device, "vkResetEvent") + vtable.ResetFences = auto_cast GetDeviceProcAddr(device, "vkResetFences") + vtable.ResetQueryPool = auto_cast GetDeviceProcAddr(device, "vkResetQueryPool") + vtable.ResetQueryPoolEXT = auto_cast GetDeviceProcAddr(device, "vkResetQueryPoolEXT") + vtable.SetDebugUtilsObjectNameEXT = auto_cast GetDeviceProcAddr(device, "vkSetDebugUtilsObjectNameEXT") + vtable.SetDebugUtilsObjectTagEXT = auto_cast GetDeviceProcAddr(device, "vkSetDebugUtilsObjectTagEXT") + vtable.SetDeviceMemoryPriorityEXT = auto_cast GetDeviceProcAddr(device, "vkSetDeviceMemoryPriorityEXT") + vtable.SetEvent = auto_cast GetDeviceProcAddr(device, "vkSetEvent") + vtable.SetHdrMetadataEXT = auto_cast GetDeviceProcAddr(device, "vkSetHdrMetadataEXT") + vtable.SetLocalDimmingAMD = auto_cast GetDeviceProcAddr(device, "vkSetLocalDimmingAMD") + vtable.SetPrivateData = auto_cast GetDeviceProcAddr(device, "vkSetPrivateData") + vtable.SetPrivateDataEXT = auto_cast GetDeviceProcAddr(device, "vkSetPrivateDataEXT") + vtable.SignalSemaphore = auto_cast GetDeviceProcAddr(device, "vkSignalSemaphore") + vtable.SignalSemaphoreKHR = auto_cast GetDeviceProcAddr(device, "vkSignalSemaphoreKHR") + vtable.TrimCommandPool = auto_cast GetDeviceProcAddr(device, "vkTrimCommandPool") + vtable.TrimCommandPoolKHR = auto_cast GetDeviceProcAddr(device, "vkTrimCommandPoolKHR") + vtable.UninitializePerformanceApiINTEL = auto_cast GetDeviceProcAddr(device, "vkUninitializePerformanceApiINTEL") + vtable.UnmapMemory = auto_cast GetDeviceProcAddr(device, "vkUnmapMemory") + vtable.UpdateDescriptorSetWithTemplate = auto_cast GetDeviceProcAddr(device, "vkUpdateDescriptorSetWithTemplate") + vtable.UpdateDescriptorSetWithTemplateKHR = auto_cast GetDeviceProcAddr(device, "vkUpdateDescriptorSetWithTemplateKHR") + vtable.UpdateDescriptorSets = auto_cast GetDeviceProcAddr(device, "vkUpdateDescriptorSets") + vtable.WaitForFences = auto_cast GetDeviceProcAddr(device, "vkWaitForFences") + vtable.WaitForPresentKHR = auto_cast GetDeviceProcAddr(device, "vkWaitForPresentKHR") + vtable.WaitSemaphores = auto_cast GetDeviceProcAddr(device, "vkWaitSemaphores") + vtable.WaitSemaphoresKHR = auto_cast GetDeviceProcAddr(device, "vkWaitSemaphoresKHR") + vtable.WriteAccelerationStructuresPropertiesKHR = auto_cast GetDeviceProcAddr(device, "vkWriteAccelerationStructuresPropertiesKHR") +} + +load_proc_addresses_device :: proc(device: Device) { + AcquireFullScreenExclusiveModeEXT = auto_cast GetDeviceProcAddr(device, "vkAcquireFullScreenExclusiveModeEXT") + AcquireNextImage2KHR = auto_cast GetDeviceProcAddr(device, "vkAcquireNextImage2KHR") + AcquireNextImageKHR = auto_cast GetDeviceProcAddr(device, "vkAcquireNextImageKHR") + AcquirePerformanceConfigurationINTEL = auto_cast GetDeviceProcAddr(device, "vkAcquirePerformanceConfigurationINTEL") + AcquireProfilingLockKHR = auto_cast GetDeviceProcAddr(device, "vkAcquireProfilingLockKHR") + AllocateCommandBuffers = auto_cast GetDeviceProcAddr(device, "vkAllocateCommandBuffers") + AllocateDescriptorSets = auto_cast GetDeviceProcAddr(device, "vkAllocateDescriptorSets") + AllocateMemory = auto_cast GetDeviceProcAddr(device, "vkAllocateMemory") + BeginCommandBuffer = auto_cast GetDeviceProcAddr(device, "vkBeginCommandBuffer") + BindAccelerationStructureMemoryNV = auto_cast GetDeviceProcAddr(device, "vkBindAccelerationStructureMemoryNV") + BindBufferMemory = auto_cast GetDeviceProcAddr(device, "vkBindBufferMemory") + BindBufferMemory2 = auto_cast GetDeviceProcAddr(device, "vkBindBufferMemory2") + BindBufferMemory2KHR = auto_cast GetDeviceProcAddr(device, "vkBindBufferMemory2KHR") + BindImageMemory = auto_cast GetDeviceProcAddr(device, "vkBindImageMemory") + BindImageMemory2 = auto_cast GetDeviceProcAddr(device, "vkBindImageMemory2") + BindImageMemory2KHR = auto_cast GetDeviceProcAddr(device, "vkBindImageMemory2KHR") + BuildAccelerationStructuresKHR = auto_cast GetDeviceProcAddr(device, "vkBuildAccelerationStructuresKHR") + CmdBeginConditionalRenderingEXT = auto_cast GetDeviceProcAddr(device, "vkCmdBeginConditionalRenderingEXT") + CmdBeginDebugUtilsLabelEXT = auto_cast GetDeviceProcAddr(device, "vkCmdBeginDebugUtilsLabelEXT") + CmdBeginQuery = auto_cast GetDeviceProcAddr(device, "vkCmdBeginQuery") + CmdBeginQueryIndexedEXT = auto_cast GetDeviceProcAddr(device, "vkCmdBeginQueryIndexedEXT") + CmdBeginRenderPass = auto_cast GetDeviceProcAddr(device, "vkCmdBeginRenderPass") + CmdBeginRenderPass2 = auto_cast GetDeviceProcAddr(device, "vkCmdBeginRenderPass2") + CmdBeginRenderPass2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdBeginRenderPass2KHR") + CmdBeginRendering = auto_cast GetDeviceProcAddr(device, "vkCmdBeginRendering") + CmdBeginRenderingKHR = auto_cast GetDeviceProcAddr(device, "vkCmdBeginRenderingKHR") + CmdBeginTransformFeedbackEXT = auto_cast GetDeviceProcAddr(device, "vkCmdBeginTransformFeedbackEXT") + CmdBindDescriptorSets = auto_cast GetDeviceProcAddr(device, "vkCmdBindDescriptorSets") + CmdBindIndexBuffer = auto_cast GetDeviceProcAddr(device, "vkCmdBindIndexBuffer") + CmdBindInvocationMaskHUAWEI = auto_cast GetDeviceProcAddr(device, "vkCmdBindInvocationMaskHUAWEI") + CmdBindPipeline = auto_cast GetDeviceProcAddr(device, "vkCmdBindPipeline") + CmdBindPipelineShaderGroupNV = auto_cast GetDeviceProcAddr(device, "vkCmdBindPipelineShaderGroupNV") + CmdBindShadingRateImageNV = auto_cast GetDeviceProcAddr(device, "vkCmdBindShadingRateImageNV") + CmdBindTransformFeedbackBuffersEXT = auto_cast GetDeviceProcAddr(device, "vkCmdBindTransformFeedbackBuffersEXT") + CmdBindVertexBuffers = auto_cast GetDeviceProcAddr(device, "vkCmdBindVertexBuffers") + CmdBindVertexBuffers2 = auto_cast GetDeviceProcAddr(device, "vkCmdBindVertexBuffers2") + CmdBindVertexBuffers2EXT = auto_cast GetDeviceProcAddr(device, "vkCmdBindVertexBuffers2EXT") + CmdBlitImage = auto_cast GetDeviceProcAddr(device, "vkCmdBlitImage") + CmdBlitImage2 = auto_cast GetDeviceProcAddr(device, "vkCmdBlitImage2") + CmdBlitImage2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdBlitImage2KHR") + CmdBuildAccelerationStructureNV = auto_cast GetDeviceProcAddr(device, "vkCmdBuildAccelerationStructureNV") + CmdBuildAccelerationStructuresIndirectKHR = auto_cast GetDeviceProcAddr(device, "vkCmdBuildAccelerationStructuresIndirectKHR") + CmdBuildAccelerationStructuresKHR = auto_cast GetDeviceProcAddr(device, "vkCmdBuildAccelerationStructuresKHR") + CmdClearAttachments = auto_cast GetDeviceProcAddr(device, "vkCmdClearAttachments") + CmdClearColorImage = auto_cast GetDeviceProcAddr(device, "vkCmdClearColorImage") + CmdClearDepthStencilImage = auto_cast GetDeviceProcAddr(device, "vkCmdClearDepthStencilImage") + CmdCopyAccelerationStructureKHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyAccelerationStructureKHR") + CmdCopyAccelerationStructureNV = auto_cast GetDeviceProcAddr(device, "vkCmdCopyAccelerationStructureNV") + CmdCopyAccelerationStructureToMemoryKHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyAccelerationStructureToMemoryKHR") + CmdCopyBuffer = auto_cast GetDeviceProcAddr(device, "vkCmdCopyBuffer") + CmdCopyBuffer2 = auto_cast GetDeviceProcAddr(device, "vkCmdCopyBuffer2") + CmdCopyBuffer2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyBuffer2KHR") + CmdCopyBufferToImage = auto_cast GetDeviceProcAddr(device, "vkCmdCopyBufferToImage") + CmdCopyBufferToImage2 = auto_cast GetDeviceProcAddr(device, "vkCmdCopyBufferToImage2") + CmdCopyBufferToImage2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyBufferToImage2KHR") + CmdCopyImage = auto_cast GetDeviceProcAddr(device, "vkCmdCopyImage") + CmdCopyImage2 = auto_cast GetDeviceProcAddr(device, "vkCmdCopyImage2") + CmdCopyImage2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyImage2KHR") + CmdCopyImageToBuffer = auto_cast GetDeviceProcAddr(device, "vkCmdCopyImageToBuffer") + CmdCopyImageToBuffer2 = auto_cast GetDeviceProcAddr(device, "vkCmdCopyImageToBuffer2") + CmdCopyImageToBuffer2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyImageToBuffer2KHR") + CmdCopyMemoryToAccelerationStructureKHR = auto_cast GetDeviceProcAddr(device, "vkCmdCopyMemoryToAccelerationStructureKHR") + CmdCopyQueryPoolResults = auto_cast GetDeviceProcAddr(device, "vkCmdCopyQueryPoolResults") + CmdCuLaunchKernelNVX = auto_cast GetDeviceProcAddr(device, "vkCmdCuLaunchKernelNVX") + CmdDebugMarkerBeginEXT = auto_cast GetDeviceProcAddr(device, "vkCmdDebugMarkerBeginEXT") + CmdDebugMarkerEndEXT = auto_cast GetDeviceProcAddr(device, "vkCmdDebugMarkerEndEXT") + CmdDebugMarkerInsertEXT = auto_cast GetDeviceProcAddr(device, "vkCmdDebugMarkerInsertEXT") + CmdDispatch = auto_cast GetDeviceProcAddr(device, "vkCmdDispatch") + CmdDispatchBase = auto_cast GetDeviceProcAddr(device, "vkCmdDispatchBase") + CmdDispatchBaseKHR = auto_cast GetDeviceProcAddr(device, "vkCmdDispatchBaseKHR") + CmdDispatchIndirect = auto_cast GetDeviceProcAddr(device, "vkCmdDispatchIndirect") + CmdDraw = auto_cast GetDeviceProcAddr(device, "vkCmdDraw") + CmdDrawIndexed = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndexed") + CmdDrawIndexedIndirect = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndexedIndirect") + CmdDrawIndexedIndirectCount = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndexedIndirectCount") + CmdDrawIndexedIndirectCountAMD = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndexedIndirectCountAMD") + CmdDrawIndexedIndirectCountKHR = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndexedIndirectCountKHR") + CmdDrawIndirect = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndirect") + CmdDrawIndirectByteCountEXT = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndirectByteCountEXT") + CmdDrawIndirectCount = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndirectCount") + CmdDrawIndirectCountAMD = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndirectCountAMD") + CmdDrawIndirectCountKHR = auto_cast GetDeviceProcAddr(device, "vkCmdDrawIndirectCountKHR") + CmdDrawMeshTasksIndirectCountNV = auto_cast GetDeviceProcAddr(device, "vkCmdDrawMeshTasksIndirectCountNV") + CmdDrawMeshTasksIndirectNV = auto_cast GetDeviceProcAddr(device, "vkCmdDrawMeshTasksIndirectNV") + CmdDrawMeshTasksNV = auto_cast GetDeviceProcAddr(device, "vkCmdDrawMeshTasksNV") + CmdDrawMultiEXT = auto_cast GetDeviceProcAddr(device, "vkCmdDrawMultiEXT") + CmdDrawMultiIndexedEXT = auto_cast GetDeviceProcAddr(device, "vkCmdDrawMultiIndexedEXT") + CmdEndConditionalRenderingEXT = auto_cast GetDeviceProcAddr(device, "vkCmdEndConditionalRenderingEXT") + CmdEndDebugUtilsLabelEXT = auto_cast GetDeviceProcAddr(device, "vkCmdEndDebugUtilsLabelEXT") + CmdEndQuery = auto_cast GetDeviceProcAddr(device, "vkCmdEndQuery") + CmdEndQueryIndexedEXT = auto_cast GetDeviceProcAddr(device, "vkCmdEndQueryIndexedEXT") + CmdEndRenderPass = auto_cast GetDeviceProcAddr(device, "vkCmdEndRenderPass") + CmdEndRenderPass2 = auto_cast GetDeviceProcAddr(device, "vkCmdEndRenderPass2") + CmdEndRenderPass2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdEndRenderPass2KHR") + CmdEndRendering = auto_cast GetDeviceProcAddr(device, "vkCmdEndRendering") + CmdEndRenderingKHR = auto_cast GetDeviceProcAddr(device, "vkCmdEndRenderingKHR") + CmdEndTransformFeedbackEXT = auto_cast GetDeviceProcAddr(device, "vkCmdEndTransformFeedbackEXT") + CmdExecuteCommands = auto_cast GetDeviceProcAddr(device, "vkCmdExecuteCommands") + CmdExecuteGeneratedCommandsNV = auto_cast GetDeviceProcAddr(device, "vkCmdExecuteGeneratedCommandsNV") + CmdFillBuffer = auto_cast GetDeviceProcAddr(device, "vkCmdFillBuffer") + CmdInsertDebugUtilsLabelEXT = auto_cast GetDeviceProcAddr(device, "vkCmdInsertDebugUtilsLabelEXT") + CmdNextSubpass = auto_cast GetDeviceProcAddr(device, "vkCmdNextSubpass") + CmdNextSubpass2 = auto_cast GetDeviceProcAddr(device, "vkCmdNextSubpass2") + CmdNextSubpass2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdNextSubpass2KHR") + CmdPipelineBarrier = auto_cast GetDeviceProcAddr(device, "vkCmdPipelineBarrier") + CmdPipelineBarrier2 = auto_cast GetDeviceProcAddr(device, "vkCmdPipelineBarrier2") + CmdPipelineBarrier2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdPipelineBarrier2KHR") + CmdPreprocessGeneratedCommandsNV = auto_cast GetDeviceProcAddr(device, "vkCmdPreprocessGeneratedCommandsNV") + CmdPushConstants = auto_cast GetDeviceProcAddr(device, "vkCmdPushConstants") + CmdPushDescriptorSetKHR = auto_cast GetDeviceProcAddr(device, "vkCmdPushDescriptorSetKHR") + CmdPushDescriptorSetWithTemplateKHR = auto_cast GetDeviceProcAddr(device, "vkCmdPushDescriptorSetWithTemplateKHR") + CmdResetEvent = auto_cast GetDeviceProcAddr(device, "vkCmdResetEvent") + CmdResetEvent2 = auto_cast GetDeviceProcAddr(device, "vkCmdResetEvent2") + CmdResetEvent2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdResetEvent2KHR") + CmdResetQueryPool = auto_cast GetDeviceProcAddr(device, "vkCmdResetQueryPool") + CmdResolveImage = auto_cast GetDeviceProcAddr(device, "vkCmdResolveImage") + CmdResolveImage2 = auto_cast GetDeviceProcAddr(device, "vkCmdResolveImage2") + CmdResolveImage2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdResolveImage2KHR") + CmdSetBlendConstants = auto_cast GetDeviceProcAddr(device, "vkCmdSetBlendConstants") + CmdSetCheckpointNV = auto_cast GetDeviceProcAddr(device, "vkCmdSetCheckpointNV") + CmdSetCoarseSampleOrderNV = auto_cast GetDeviceProcAddr(device, "vkCmdSetCoarseSampleOrderNV") + CmdSetCullMode = auto_cast GetDeviceProcAddr(device, "vkCmdSetCullMode") + CmdSetCullModeEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetCullModeEXT") + CmdSetDepthBias = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthBias") + CmdSetDepthBiasEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthBiasEnable") + CmdSetDepthBiasEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthBiasEnableEXT") + CmdSetDepthBounds = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthBounds") + CmdSetDepthBoundsTestEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthBoundsTestEnable") + CmdSetDepthBoundsTestEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthBoundsTestEnableEXT") + CmdSetDepthCompareOp = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthCompareOp") + CmdSetDepthCompareOpEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthCompareOpEXT") + CmdSetDepthTestEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthTestEnable") + CmdSetDepthTestEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthTestEnableEXT") + CmdSetDepthWriteEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthWriteEnable") + CmdSetDepthWriteEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetDepthWriteEnableEXT") + CmdSetDeviceMask = auto_cast GetDeviceProcAddr(device, "vkCmdSetDeviceMask") + CmdSetDeviceMaskKHR = auto_cast GetDeviceProcAddr(device, "vkCmdSetDeviceMaskKHR") + CmdSetDiscardRectangleEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetDiscardRectangleEXT") + CmdSetEvent = auto_cast GetDeviceProcAddr(device, "vkCmdSetEvent") + CmdSetEvent2 = auto_cast GetDeviceProcAddr(device, "vkCmdSetEvent2") + CmdSetEvent2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdSetEvent2KHR") + CmdSetExclusiveScissorNV = auto_cast GetDeviceProcAddr(device, "vkCmdSetExclusiveScissorNV") + CmdSetFragmentShadingRateEnumNV = auto_cast GetDeviceProcAddr(device, "vkCmdSetFragmentShadingRateEnumNV") + CmdSetFragmentShadingRateKHR = auto_cast GetDeviceProcAddr(device, "vkCmdSetFragmentShadingRateKHR") + CmdSetFrontFace = auto_cast GetDeviceProcAddr(device, "vkCmdSetFrontFace") + CmdSetFrontFaceEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetFrontFaceEXT") + CmdSetLineStippleEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetLineStippleEXT") + CmdSetLineWidth = auto_cast GetDeviceProcAddr(device, "vkCmdSetLineWidth") + CmdSetLogicOpEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetLogicOpEXT") + CmdSetPatchControlPointsEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetPatchControlPointsEXT") + CmdSetPerformanceMarkerINTEL = auto_cast GetDeviceProcAddr(device, "vkCmdSetPerformanceMarkerINTEL") + CmdSetPerformanceOverrideINTEL = auto_cast GetDeviceProcAddr(device, "vkCmdSetPerformanceOverrideINTEL") + CmdSetPerformanceStreamMarkerINTEL = auto_cast GetDeviceProcAddr(device, "vkCmdSetPerformanceStreamMarkerINTEL") + CmdSetPrimitiveRestartEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetPrimitiveRestartEnable") + CmdSetPrimitiveRestartEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetPrimitiveRestartEnableEXT") + CmdSetPrimitiveTopology = auto_cast GetDeviceProcAddr(device, "vkCmdSetPrimitiveTopology") + CmdSetPrimitiveTopologyEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetPrimitiveTopologyEXT") + CmdSetRasterizerDiscardEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetRasterizerDiscardEnable") + CmdSetRasterizerDiscardEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetRasterizerDiscardEnableEXT") + CmdSetRayTracingPipelineStackSizeKHR = auto_cast GetDeviceProcAddr(device, "vkCmdSetRayTracingPipelineStackSizeKHR") + CmdSetSampleLocationsEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetSampleLocationsEXT") + CmdSetScissor = auto_cast GetDeviceProcAddr(device, "vkCmdSetScissor") + CmdSetScissorWithCount = auto_cast GetDeviceProcAddr(device, "vkCmdSetScissorWithCount") + CmdSetScissorWithCountEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetScissorWithCountEXT") + CmdSetStencilCompareMask = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilCompareMask") + CmdSetStencilOp = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilOp") + CmdSetStencilOpEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilOpEXT") + CmdSetStencilReference = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilReference") + CmdSetStencilTestEnable = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilTestEnable") + CmdSetStencilTestEnableEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilTestEnableEXT") + CmdSetStencilWriteMask = auto_cast GetDeviceProcAddr(device, "vkCmdSetStencilWriteMask") + CmdSetVertexInputEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetVertexInputEXT") + CmdSetViewport = auto_cast GetDeviceProcAddr(device, "vkCmdSetViewport") + CmdSetViewportShadingRatePaletteNV = auto_cast GetDeviceProcAddr(device, "vkCmdSetViewportShadingRatePaletteNV") + CmdSetViewportWScalingNV = auto_cast GetDeviceProcAddr(device, "vkCmdSetViewportWScalingNV") + CmdSetViewportWithCount = auto_cast GetDeviceProcAddr(device, "vkCmdSetViewportWithCount") + CmdSetViewportWithCountEXT = auto_cast GetDeviceProcAddr(device, "vkCmdSetViewportWithCountEXT") + CmdSubpassShadingHUAWEI = auto_cast GetDeviceProcAddr(device, "vkCmdSubpassShadingHUAWEI") + CmdTraceRaysIndirectKHR = auto_cast GetDeviceProcAddr(device, "vkCmdTraceRaysIndirectKHR") + CmdTraceRaysKHR = auto_cast GetDeviceProcAddr(device, "vkCmdTraceRaysKHR") + CmdTraceRaysNV = auto_cast GetDeviceProcAddr(device, "vkCmdTraceRaysNV") + CmdUpdateBuffer = auto_cast GetDeviceProcAddr(device, "vkCmdUpdateBuffer") + CmdWaitEvents = auto_cast GetDeviceProcAddr(device, "vkCmdWaitEvents") + CmdWaitEvents2 = auto_cast GetDeviceProcAddr(device, "vkCmdWaitEvents2") + CmdWaitEvents2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdWaitEvents2KHR") + CmdWriteAccelerationStructuresPropertiesKHR = auto_cast GetDeviceProcAddr(device, "vkCmdWriteAccelerationStructuresPropertiesKHR") + CmdWriteAccelerationStructuresPropertiesNV = auto_cast GetDeviceProcAddr(device, "vkCmdWriteAccelerationStructuresPropertiesNV") + CmdWriteBufferMarker2AMD = auto_cast GetDeviceProcAddr(device, "vkCmdWriteBufferMarker2AMD") + CmdWriteBufferMarkerAMD = auto_cast GetDeviceProcAddr(device, "vkCmdWriteBufferMarkerAMD") + CmdWriteTimestamp = auto_cast GetDeviceProcAddr(device, "vkCmdWriteTimestamp") + CmdWriteTimestamp2 = auto_cast GetDeviceProcAddr(device, "vkCmdWriteTimestamp2") + CmdWriteTimestamp2KHR = auto_cast GetDeviceProcAddr(device, "vkCmdWriteTimestamp2KHR") + CompileDeferredNV = auto_cast GetDeviceProcAddr(device, "vkCompileDeferredNV") + CopyAccelerationStructureKHR = auto_cast GetDeviceProcAddr(device, "vkCopyAccelerationStructureKHR") + CopyAccelerationStructureToMemoryKHR = auto_cast GetDeviceProcAddr(device, "vkCopyAccelerationStructureToMemoryKHR") + CopyMemoryToAccelerationStructureKHR = auto_cast GetDeviceProcAddr(device, "vkCopyMemoryToAccelerationStructureKHR") + CreateAccelerationStructureKHR = auto_cast GetDeviceProcAddr(device, "vkCreateAccelerationStructureKHR") + CreateAccelerationStructureNV = auto_cast GetDeviceProcAddr(device, "vkCreateAccelerationStructureNV") + CreateBuffer = auto_cast GetDeviceProcAddr(device, "vkCreateBuffer") + CreateBufferView = auto_cast GetDeviceProcAddr(device, "vkCreateBufferView") + CreateCommandPool = auto_cast GetDeviceProcAddr(device, "vkCreateCommandPool") + CreateComputePipelines = auto_cast GetDeviceProcAddr(device, "vkCreateComputePipelines") + CreateCuFunctionNVX = auto_cast GetDeviceProcAddr(device, "vkCreateCuFunctionNVX") + CreateCuModuleNVX = auto_cast GetDeviceProcAddr(device, "vkCreateCuModuleNVX") + CreateDeferredOperationKHR = auto_cast GetDeviceProcAddr(device, "vkCreateDeferredOperationKHR") + CreateDescriptorPool = auto_cast GetDeviceProcAddr(device, "vkCreateDescriptorPool") + CreateDescriptorSetLayout = auto_cast GetDeviceProcAddr(device, "vkCreateDescriptorSetLayout") + CreateDescriptorUpdateTemplate = auto_cast GetDeviceProcAddr(device, "vkCreateDescriptorUpdateTemplate") + CreateDescriptorUpdateTemplateKHR = auto_cast GetDeviceProcAddr(device, "vkCreateDescriptorUpdateTemplateKHR") + CreateEvent = auto_cast GetDeviceProcAddr(device, "vkCreateEvent") + CreateFence = auto_cast GetDeviceProcAddr(device, "vkCreateFence") + CreateFramebuffer = auto_cast GetDeviceProcAddr(device, "vkCreateFramebuffer") + CreateGraphicsPipelines = auto_cast GetDeviceProcAddr(device, "vkCreateGraphicsPipelines") + CreateImage = auto_cast GetDeviceProcAddr(device, "vkCreateImage") + CreateImageView = auto_cast GetDeviceProcAddr(device, "vkCreateImageView") + CreateIndirectCommandsLayoutNV = auto_cast GetDeviceProcAddr(device, "vkCreateIndirectCommandsLayoutNV") + CreatePipelineCache = auto_cast GetDeviceProcAddr(device, "vkCreatePipelineCache") + CreatePipelineLayout = auto_cast GetDeviceProcAddr(device, "vkCreatePipelineLayout") + CreatePrivateDataSlot = auto_cast GetDeviceProcAddr(device, "vkCreatePrivateDataSlot") + CreatePrivateDataSlotEXT = auto_cast GetDeviceProcAddr(device, "vkCreatePrivateDataSlotEXT") + CreateQueryPool = auto_cast GetDeviceProcAddr(device, "vkCreateQueryPool") + CreateRayTracingPipelinesKHR = auto_cast GetDeviceProcAddr(device, "vkCreateRayTracingPipelinesKHR") + CreateRayTracingPipelinesNV = auto_cast GetDeviceProcAddr(device, "vkCreateRayTracingPipelinesNV") + CreateRenderPass = auto_cast GetDeviceProcAddr(device, "vkCreateRenderPass") + CreateRenderPass2 = auto_cast GetDeviceProcAddr(device, "vkCreateRenderPass2") + CreateRenderPass2KHR = auto_cast GetDeviceProcAddr(device, "vkCreateRenderPass2KHR") + CreateSampler = auto_cast GetDeviceProcAddr(device, "vkCreateSampler") + CreateSamplerYcbcrConversion = auto_cast GetDeviceProcAddr(device, "vkCreateSamplerYcbcrConversion") + CreateSamplerYcbcrConversionKHR = auto_cast GetDeviceProcAddr(device, "vkCreateSamplerYcbcrConversionKHR") + CreateSemaphore = auto_cast GetDeviceProcAddr(device, "vkCreateSemaphore") + CreateShaderModule = auto_cast GetDeviceProcAddr(device, "vkCreateShaderModule") + CreateSharedSwapchainsKHR = auto_cast GetDeviceProcAddr(device, "vkCreateSharedSwapchainsKHR") + CreateSwapchainKHR = auto_cast GetDeviceProcAddr(device, "vkCreateSwapchainKHR") + CreateValidationCacheEXT = auto_cast GetDeviceProcAddr(device, "vkCreateValidationCacheEXT") + DebugMarkerSetObjectNameEXT = auto_cast GetDeviceProcAddr(device, "vkDebugMarkerSetObjectNameEXT") + DebugMarkerSetObjectTagEXT = auto_cast GetDeviceProcAddr(device, "vkDebugMarkerSetObjectTagEXT") + DeferredOperationJoinKHR = auto_cast GetDeviceProcAddr(device, "vkDeferredOperationJoinKHR") + DestroyAccelerationStructureKHR = auto_cast GetDeviceProcAddr(device, "vkDestroyAccelerationStructureKHR") + DestroyAccelerationStructureNV = auto_cast GetDeviceProcAddr(device, "vkDestroyAccelerationStructureNV") + DestroyBuffer = auto_cast GetDeviceProcAddr(device, "vkDestroyBuffer") + DestroyBufferView = auto_cast GetDeviceProcAddr(device, "vkDestroyBufferView") + DestroyCommandPool = auto_cast GetDeviceProcAddr(device, "vkDestroyCommandPool") + DestroyCuFunctionNVX = auto_cast GetDeviceProcAddr(device, "vkDestroyCuFunctionNVX") + DestroyCuModuleNVX = auto_cast GetDeviceProcAddr(device, "vkDestroyCuModuleNVX") + DestroyDeferredOperationKHR = auto_cast GetDeviceProcAddr(device, "vkDestroyDeferredOperationKHR") + DestroyDescriptorPool = auto_cast GetDeviceProcAddr(device, "vkDestroyDescriptorPool") + DestroyDescriptorSetLayout = auto_cast GetDeviceProcAddr(device, "vkDestroyDescriptorSetLayout") + DestroyDescriptorUpdateTemplate = auto_cast GetDeviceProcAddr(device, "vkDestroyDescriptorUpdateTemplate") + DestroyDescriptorUpdateTemplateKHR = auto_cast GetDeviceProcAddr(device, "vkDestroyDescriptorUpdateTemplateKHR") + DestroyDevice = auto_cast GetDeviceProcAddr(device, "vkDestroyDevice") + DestroyEvent = auto_cast GetDeviceProcAddr(device, "vkDestroyEvent") + DestroyFence = auto_cast GetDeviceProcAddr(device, "vkDestroyFence") + DestroyFramebuffer = auto_cast GetDeviceProcAddr(device, "vkDestroyFramebuffer") + DestroyImage = auto_cast GetDeviceProcAddr(device, "vkDestroyImage") + DestroyImageView = auto_cast GetDeviceProcAddr(device, "vkDestroyImageView") + DestroyIndirectCommandsLayoutNV = auto_cast GetDeviceProcAddr(device, "vkDestroyIndirectCommandsLayoutNV") + DestroyPipeline = auto_cast GetDeviceProcAddr(device, "vkDestroyPipeline") + DestroyPipelineCache = auto_cast GetDeviceProcAddr(device, "vkDestroyPipelineCache") + DestroyPipelineLayout = auto_cast GetDeviceProcAddr(device, "vkDestroyPipelineLayout") + DestroyPrivateDataSlot = auto_cast GetDeviceProcAddr(device, "vkDestroyPrivateDataSlot") + DestroyPrivateDataSlotEXT = auto_cast GetDeviceProcAddr(device, "vkDestroyPrivateDataSlotEXT") + DestroyQueryPool = auto_cast GetDeviceProcAddr(device, "vkDestroyQueryPool") + DestroyRenderPass = auto_cast GetDeviceProcAddr(device, "vkDestroyRenderPass") + DestroySampler = auto_cast GetDeviceProcAddr(device, "vkDestroySampler") + DestroySamplerYcbcrConversion = auto_cast GetDeviceProcAddr(device, "vkDestroySamplerYcbcrConversion") + DestroySamplerYcbcrConversionKHR = auto_cast GetDeviceProcAddr(device, "vkDestroySamplerYcbcrConversionKHR") + DestroySemaphore = auto_cast GetDeviceProcAddr(device, "vkDestroySemaphore") + DestroyShaderModule = auto_cast GetDeviceProcAddr(device, "vkDestroyShaderModule") + DestroySwapchainKHR = auto_cast GetDeviceProcAddr(device, "vkDestroySwapchainKHR") + DestroyValidationCacheEXT = auto_cast GetDeviceProcAddr(device, "vkDestroyValidationCacheEXT") + DeviceWaitIdle = auto_cast GetDeviceProcAddr(device, "vkDeviceWaitIdle") + DisplayPowerControlEXT = auto_cast GetDeviceProcAddr(device, "vkDisplayPowerControlEXT") + EndCommandBuffer = auto_cast GetDeviceProcAddr(device, "vkEndCommandBuffer") + FlushMappedMemoryRanges = auto_cast GetDeviceProcAddr(device, "vkFlushMappedMemoryRanges") + FreeCommandBuffers = auto_cast GetDeviceProcAddr(device, "vkFreeCommandBuffers") + FreeDescriptorSets = auto_cast GetDeviceProcAddr(device, "vkFreeDescriptorSets") + FreeMemory = auto_cast GetDeviceProcAddr(device, "vkFreeMemory") + GetAccelerationStructureBuildSizesKHR = auto_cast GetDeviceProcAddr(device, "vkGetAccelerationStructureBuildSizesKHR") + GetAccelerationStructureDeviceAddressKHR = auto_cast GetDeviceProcAddr(device, "vkGetAccelerationStructureDeviceAddressKHR") + GetAccelerationStructureHandleNV = auto_cast GetDeviceProcAddr(device, "vkGetAccelerationStructureHandleNV") + GetAccelerationStructureMemoryRequirementsNV = auto_cast GetDeviceProcAddr(device, "vkGetAccelerationStructureMemoryRequirementsNV") + GetBufferDeviceAddress = auto_cast GetDeviceProcAddr(device, "vkGetBufferDeviceAddress") + GetBufferDeviceAddressEXT = auto_cast GetDeviceProcAddr(device, "vkGetBufferDeviceAddressEXT") + GetBufferDeviceAddressKHR = auto_cast GetDeviceProcAddr(device, "vkGetBufferDeviceAddressKHR") + GetBufferMemoryRequirements = auto_cast GetDeviceProcAddr(device, "vkGetBufferMemoryRequirements") + GetBufferMemoryRequirements2 = auto_cast GetDeviceProcAddr(device, "vkGetBufferMemoryRequirements2") + GetBufferMemoryRequirements2KHR = auto_cast GetDeviceProcAddr(device, "vkGetBufferMemoryRequirements2KHR") + GetBufferOpaqueCaptureAddress = auto_cast GetDeviceProcAddr(device, "vkGetBufferOpaqueCaptureAddress") + GetBufferOpaqueCaptureAddressKHR = auto_cast GetDeviceProcAddr(device, "vkGetBufferOpaqueCaptureAddressKHR") + GetCalibratedTimestampsEXT = auto_cast GetDeviceProcAddr(device, "vkGetCalibratedTimestampsEXT") + GetDeferredOperationMaxConcurrencyKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeferredOperationMaxConcurrencyKHR") + GetDeferredOperationResultKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeferredOperationResultKHR") + GetDescriptorSetHostMappingVALVE = auto_cast GetDeviceProcAddr(device, "vkGetDescriptorSetHostMappingVALVE") + GetDescriptorSetLayoutHostMappingInfoVALVE = auto_cast GetDeviceProcAddr(device, "vkGetDescriptorSetLayoutHostMappingInfoVALVE") + GetDescriptorSetLayoutSupport = auto_cast GetDeviceProcAddr(device, "vkGetDescriptorSetLayoutSupport") + GetDescriptorSetLayoutSupportKHR = auto_cast GetDeviceProcAddr(device, "vkGetDescriptorSetLayoutSupportKHR") + GetDeviceAccelerationStructureCompatibilityKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceAccelerationStructureCompatibilityKHR") + GetDeviceBufferMemoryRequirements = auto_cast GetDeviceProcAddr(device, "vkGetDeviceBufferMemoryRequirements") + GetDeviceBufferMemoryRequirementsKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceBufferMemoryRequirementsKHR") + GetDeviceGroupPeerMemoryFeatures = auto_cast GetDeviceProcAddr(device, "vkGetDeviceGroupPeerMemoryFeatures") + GetDeviceGroupPeerMemoryFeaturesKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceGroupPeerMemoryFeaturesKHR") + GetDeviceGroupPresentCapabilitiesKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceGroupPresentCapabilitiesKHR") + GetDeviceGroupSurfacePresentModes2EXT = auto_cast GetDeviceProcAddr(device, "vkGetDeviceGroupSurfacePresentModes2EXT") + GetDeviceGroupSurfacePresentModesKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceGroupSurfacePresentModesKHR") + GetDeviceImageMemoryRequirements = auto_cast GetDeviceProcAddr(device, "vkGetDeviceImageMemoryRequirements") + GetDeviceImageMemoryRequirementsKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceImageMemoryRequirementsKHR") + GetDeviceImageSparseMemoryRequirements = auto_cast GetDeviceProcAddr(device, "vkGetDeviceImageSparseMemoryRequirements") + GetDeviceImageSparseMemoryRequirementsKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceImageSparseMemoryRequirementsKHR") + GetDeviceMemoryCommitment = auto_cast GetDeviceProcAddr(device, "vkGetDeviceMemoryCommitment") + GetDeviceMemoryOpaqueCaptureAddress = auto_cast GetDeviceProcAddr(device, "vkGetDeviceMemoryOpaqueCaptureAddress") + GetDeviceMemoryOpaqueCaptureAddressKHR = auto_cast GetDeviceProcAddr(device, "vkGetDeviceMemoryOpaqueCaptureAddressKHR") + GetDeviceProcAddr = auto_cast GetDeviceProcAddr(device, "vkGetDeviceProcAddr") + GetDeviceQueue = auto_cast GetDeviceProcAddr(device, "vkGetDeviceQueue") + GetDeviceQueue2 = auto_cast GetDeviceProcAddr(device, "vkGetDeviceQueue2") + GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = auto_cast GetDeviceProcAddr(device, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI") + GetEventStatus = auto_cast GetDeviceProcAddr(device, "vkGetEventStatus") + GetFenceFdKHR = auto_cast GetDeviceProcAddr(device, "vkGetFenceFdKHR") + GetFenceStatus = auto_cast GetDeviceProcAddr(device, "vkGetFenceStatus") + GetFenceWin32HandleKHR = auto_cast GetDeviceProcAddr(device, "vkGetFenceWin32HandleKHR") + GetGeneratedCommandsMemoryRequirementsNV = auto_cast GetDeviceProcAddr(device, "vkGetGeneratedCommandsMemoryRequirementsNV") + GetImageDrmFormatModifierPropertiesEXT = auto_cast GetDeviceProcAddr(device, "vkGetImageDrmFormatModifierPropertiesEXT") + GetImageMemoryRequirements = auto_cast GetDeviceProcAddr(device, "vkGetImageMemoryRequirements") + GetImageMemoryRequirements2 = auto_cast GetDeviceProcAddr(device, "vkGetImageMemoryRequirements2") + GetImageMemoryRequirements2KHR = auto_cast GetDeviceProcAddr(device, "vkGetImageMemoryRequirements2KHR") + GetImageSparseMemoryRequirements = auto_cast GetDeviceProcAddr(device, "vkGetImageSparseMemoryRequirements") + GetImageSparseMemoryRequirements2 = auto_cast GetDeviceProcAddr(device, "vkGetImageSparseMemoryRequirements2") + GetImageSparseMemoryRequirements2KHR = auto_cast GetDeviceProcAddr(device, "vkGetImageSparseMemoryRequirements2KHR") + GetImageSubresourceLayout = auto_cast GetDeviceProcAddr(device, "vkGetImageSubresourceLayout") + GetImageViewAddressNVX = auto_cast GetDeviceProcAddr(device, "vkGetImageViewAddressNVX") + GetImageViewHandleNVX = auto_cast GetDeviceProcAddr(device, "vkGetImageViewHandleNVX") + GetMemoryFdKHR = auto_cast GetDeviceProcAddr(device, "vkGetMemoryFdKHR") + GetMemoryFdPropertiesKHR = auto_cast GetDeviceProcAddr(device, "vkGetMemoryFdPropertiesKHR") + GetMemoryHostPointerPropertiesEXT = auto_cast GetDeviceProcAddr(device, "vkGetMemoryHostPointerPropertiesEXT") + GetMemoryRemoteAddressNV = auto_cast GetDeviceProcAddr(device, "vkGetMemoryRemoteAddressNV") + GetMemoryWin32HandleKHR = auto_cast GetDeviceProcAddr(device, "vkGetMemoryWin32HandleKHR") + GetMemoryWin32HandleNV = auto_cast GetDeviceProcAddr(device, "vkGetMemoryWin32HandleNV") + GetMemoryWin32HandlePropertiesKHR = auto_cast GetDeviceProcAddr(device, "vkGetMemoryWin32HandlePropertiesKHR") + GetPastPresentationTimingGOOGLE = auto_cast GetDeviceProcAddr(device, "vkGetPastPresentationTimingGOOGLE") + GetPerformanceParameterINTEL = auto_cast GetDeviceProcAddr(device, "vkGetPerformanceParameterINTEL") + GetPipelineCacheData = auto_cast GetDeviceProcAddr(device, "vkGetPipelineCacheData") + GetPipelineExecutableInternalRepresentationsKHR = auto_cast GetDeviceProcAddr(device, "vkGetPipelineExecutableInternalRepresentationsKHR") + GetPipelineExecutablePropertiesKHR = auto_cast GetDeviceProcAddr(device, "vkGetPipelineExecutablePropertiesKHR") + GetPipelineExecutableStatisticsKHR = auto_cast GetDeviceProcAddr(device, "vkGetPipelineExecutableStatisticsKHR") + GetPrivateData = auto_cast GetDeviceProcAddr(device, "vkGetPrivateData") + GetPrivateDataEXT = auto_cast GetDeviceProcAddr(device, "vkGetPrivateDataEXT") + GetQueryPoolResults = auto_cast GetDeviceProcAddr(device, "vkGetQueryPoolResults") + GetQueueCheckpointData2NV = auto_cast GetDeviceProcAddr(device, "vkGetQueueCheckpointData2NV") + GetQueueCheckpointDataNV = auto_cast GetDeviceProcAddr(device, "vkGetQueueCheckpointDataNV") + GetRayTracingCaptureReplayShaderGroupHandlesKHR = auto_cast GetDeviceProcAddr(device, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR") + GetRayTracingShaderGroupHandlesKHR = auto_cast GetDeviceProcAddr(device, "vkGetRayTracingShaderGroupHandlesKHR") + GetRayTracingShaderGroupHandlesNV = auto_cast GetDeviceProcAddr(device, "vkGetRayTracingShaderGroupHandlesNV") + GetRayTracingShaderGroupStackSizeKHR = auto_cast GetDeviceProcAddr(device, "vkGetRayTracingShaderGroupStackSizeKHR") + GetRefreshCycleDurationGOOGLE = auto_cast GetDeviceProcAddr(device, "vkGetRefreshCycleDurationGOOGLE") + GetRenderAreaGranularity = auto_cast GetDeviceProcAddr(device, "vkGetRenderAreaGranularity") + GetSemaphoreCounterValue = auto_cast GetDeviceProcAddr(device, "vkGetSemaphoreCounterValue") + GetSemaphoreCounterValueKHR = auto_cast GetDeviceProcAddr(device, "vkGetSemaphoreCounterValueKHR") + GetSemaphoreFdKHR = auto_cast GetDeviceProcAddr(device, "vkGetSemaphoreFdKHR") + GetSemaphoreWin32HandleKHR = auto_cast GetDeviceProcAddr(device, "vkGetSemaphoreWin32HandleKHR") + GetShaderInfoAMD = auto_cast GetDeviceProcAddr(device, "vkGetShaderInfoAMD") + GetSwapchainCounterEXT = auto_cast GetDeviceProcAddr(device, "vkGetSwapchainCounterEXT") + GetSwapchainImagesKHR = auto_cast GetDeviceProcAddr(device, "vkGetSwapchainImagesKHR") + GetSwapchainStatusKHR = auto_cast GetDeviceProcAddr(device, "vkGetSwapchainStatusKHR") + GetValidationCacheDataEXT = auto_cast GetDeviceProcAddr(device, "vkGetValidationCacheDataEXT") + ImportFenceFdKHR = auto_cast GetDeviceProcAddr(device, "vkImportFenceFdKHR") + ImportFenceWin32HandleKHR = auto_cast GetDeviceProcAddr(device, "vkImportFenceWin32HandleKHR") + ImportSemaphoreFdKHR = auto_cast GetDeviceProcAddr(device, "vkImportSemaphoreFdKHR") + ImportSemaphoreWin32HandleKHR = auto_cast GetDeviceProcAddr(device, "vkImportSemaphoreWin32HandleKHR") + InitializePerformanceApiINTEL = auto_cast GetDeviceProcAddr(device, "vkInitializePerformanceApiINTEL") + InvalidateMappedMemoryRanges = auto_cast GetDeviceProcAddr(device, "vkInvalidateMappedMemoryRanges") + MapMemory = auto_cast GetDeviceProcAddr(device, "vkMapMemory") + MergePipelineCaches = auto_cast GetDeviceProcAddr(device, "vkMergePipelineCaches") + MergeValidationCachesEXT = auto_cast GetDeviceProcAddr(device, "vkMergeValidationCachesEXT") + QueueBeginDebugUtilsLabelEXT = auto_cast GetDeviceProcAddr(device, "vkQueueBeginDebugUtilsLabelEXT") + QueueBindSparse = auto_cast GetDeviceProcAddr(device, "vkQueueBindSparse") + QueueEndDebugUtilsLabelEXT = auto_cast GetDeviceProcAddr(device, "vkQueueEndDebugUtilsLabelEXT") + QueueInsertDebugUtilsLabelEXT = auto_cast GetDeviceProcAddr(device, "vkQueueInsertDebugUtilsLabelEXT") + QueuePresentKHR = auto_cast GetDeviceProcAddr(device, "vkQueuePresentKHR") + QueueSetPerformanceConfigurationINTEL = auto_cast GetDeviceProcAddr(device, "vkQueueSetPerformanceConfigurationINTEL") + QueueSubmit = auto_cast GetDeviceProcAddr(device, "vkQueueSubmit") + QueueSubmit2 = auto_cast GetDeviceProcAddr(device, "vkQueueSubmit2") + QueueSubmit2KHR = auto_cast GetDeviceProcAddr(device, "vkQueueSubmit2KHR") + QueueWaitIdle = auto_cast GetDeviceProcAddr(device, "vkQueueWaitIdle") + RegisterDeviceEventEXT = auto_cast GetDeviceProcAddr(device, "vkRegisterDeviceEventEXT") + RegisterDisplayEventEXT = auto_cast GetDeviceProcAddr(device, "vkRegisterDisplayEventEXT") + ReleaseFullScreenExclusiveModeEXT = auto_cast GetDeviceProcAddr(device, "vkReleaseFullScreenExclusiveModeEXT") + ReleasePerformanceConfigurationINTEL = auto_cast GetDeviceProcAddr(device, "vkReleasePerformanceConfigurationINTEL") + ReleaseProfilingLockKHR = auto_cast GetDeviceProcAddr(device, "vkReleaseProfilingLockKHR") + ResetCommandBuffer = auto_cast GetDeviceProcAddr(device, "vkResetCommandBuffer") + ResetCommandPool = auto_cast GetDeviceProcAddr(device, "vkResetCommandPool") + ResetDescriptorPool = auto_cast GetDeviceProcAddr(device, "vkResetDescriptorPool") + ResetEvent = auto_cast GetDeviceProcAddr(device, "vkResetEvent") + ResetFences = auto_cast GetDeviceProcAddr(device, "vkResetFences") + ResetQueryPool = auto_cast GetDeviceProcAddr(device, "vkResetQueryPool") + ResetQueryPoolEXT = auto_cast GetDeviceProcAddr(device, "vkResetQueryPoolEXT") + SetDebugUtilsObjectNameEXT = auto_cast GetDeviceProcAddr(device, "vkSetDebugUtilsObjectNameEXT") + SetDebugUtilsObjectTagEXT = auto_cast GetDeviceProcAddr(device, "vkSetDebugUtilsObjectTagEXT") + SetDeviceMemoryPriorityEXT = auto_cast GetDeviceProcAddr(device, "vkSetDeviceMemoryPriorityEXT") + SetEvent = auto_cast GetDeviceProcAddr(device, "vkSetEvent") + SetHdrMetadataEXT = auto_cast GetDeviceProcAddr(device, "vkSetHdrMetadataEXT") + SetLocalDimmingAMD = auto_cast GetDeviceProcAddr(device, "vkSetLocalDimmingAMD") + SetPrivateData = auto_cast GetDeviceProcAddr(device, "vkSetPrivateData") + SetPrivateDataEXT = auto_cast GetDeviceProcAddr(device, "vkSetPrivateDataEXT") + SignalSemaphore = auto_cast GetDeviceProcAddr(device, "vkSignalSemaphore") + SignalSemaphoreKHR = auto_cast GetDeviceProcAddr(device, "vkSignalSemaphoreKHR") + TrimCommandPool = auto_cast GetDeviceProcAddr(device, "vkTrimCommandPool") + TrimCommandPoolKHR = auto_cast GetDeviceProcAddr(device, "vkTrimCommandPoolKHR") + UninitializePerformanceApiINTEL = auto_cast GetDeviceProcAddr(device, "vkUninitializePerformanceApiINTEL") + UnmapMemory = auto_cast GetDeviceProcAddr(device, "vkUnmapMemory") + UpdateDescriptorSetWithTemplate = auto_cast GetDeviceProcAddr(device, "vkUpdateDescriptorSetWithTemplate") + UpdateDescriptorSetWithTemplateKHR = auto_cast GetDeviceProcAddr(device, "vkUpdateDescriptorSetWithTemplateKHR") + UpdateDescriptorSets = auto_cast GetDeviceProcAddr(device, "vkUpdateDescriptorSets") + WaitForFences = auto_cast GetDeviceProcAddr(device, "vkWaitForFences") + WaitForPresentKHR = auto_cast GetDeviceProcAddr(device, "vkWaitForPresentKHR") + WaitSemaphores = auto_cast GetDeviceProcAddr(device, "vkWaitSemaphores") + WaitSemaphoresKHR = auto_cast GetDeviceProcAddr(device, "vkWaitSemaphoresKHR") + WriteAccelerationStructuresPropertiesKHR = auto_cast GetDeviceProcAddr(device, "vkWriteAccelerationStructuresPropertiesKHR") +} + +load_proc_addresses_instance :: proc(instance: Instance) { + AcquireDrmDisplayEXT = auto_cast GetInstanceProcAddr(instance, "vkAcquireDrmDisplayEXT") + AcquireWinrtDisplayNV = auto_cast GetInstanceProcAddr(instance, "vkAcquireWinrtDisplayNV") + CreateDebugReportCallbackEXT = auto_cast GetInstanceProcAddr(instance, "vkCreateDebugReportCallbackEXT") + CreateDebugUtilsMessengerEXT = auto_cast GetInstanceProcAddr(instance, "vkCreateDebugUtilsMessengerEXT") + CreateDevice = auto_cast GetInstanceProcAddr(instance, "vkCreateDevice") + CreateDisplayModeKHR = auto_cast GetInstanceProcAddr(instance, "vkCreateDisplayModeKHR") + CreateDisplayPlaneSurfaceKHR = auto_cast GetInstanceProcAddr(instance, "vkCreateDisplayPlaneSurfaceKHR") + CreateHeadlessSurfaceEXT = auto_cast GetInstanceProcAddr(instance, "vkCreateHeadlessSurfaceEXT") + CreateIOSSurfaceMVK = auto_cast GetInstanceProcAddr(instance, "vkCreateIOSSurfaceMVK") + CreateMacOSSurfaceMVK = auto_cast GetInstanceProcAddr(instance, "vkCreateMacOSSurfaceMVK") + CreateMetalSurfaceEXT = auto_cast GetInstanceProcAddr(instance, "vkCreateMetalSurfaceEXT") + CreateWaylandSurfaceKHR = auto_cast GetInstanceProcAddr(instance, "vkCreateWaylandSurfaceKHR") + CreateWin32SurfaceKHR = auto_cast GetInstanceProcAddr(instance, "vkCreateWin32SurfaceKHR") + DebugReportMessageEXT = auto_cast GetInstanceProcAddr(instance, "vkDebugReportMessageEXT") + DestroyDebugReportCallbackEXT = auto_cast GetInstanceProcAddr(instance, "vkDestroyDebugReportCallbackEXT") + DestroyDebugUtilsMessengerEXT = auto_cast GetInstanceProcAddr(instance, "vkDestroyDebugUtilsMessengerEXT") + DestroyInstance = auto_cast GetInstanceProcAddr(instance, "vkDestroyInstance") + DestroySurfaceKHR = auto_cast GetInstanceProcAddr(instance, "vkDestroySurfaceKHR") + EnumerateDeviceExtensionProperties = auto_cast GetInstanceProcAddr(instance, "vkEnumerateDeviceExtensionProperties") + EnumerateDeviceLayerProperties = auto_cast GetInstanceProcAddr(instance, "vkEnumerateDeviceLayerProperties") + EnumeratePhysicalDeviceGroups = auto_cast GetInstanceProcAddr(instance, "vkEnumeratePhysicalDeviceGroups") + EnumeratePhysicalDeviceGroupsKHR = auto_cast GetInstanceProcAddr(instance, "vkEnumeratePhysicalDeviceGroupsKHR") + EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = auto_cast GetInstanceProcAddr(instance, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR") + EnumeratePhysicalDevices = auto_cast GetInstanceProcAddr(instance, "vkEnumeratePhysicalDevices") + GetDisplayModeProperties2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetDisplayModeProperties2KHR") + GetDisplayModePropertiesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDisplayModePropertiesKHR") + GetDisplayPlaneCapabilities2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetDisplayPlaneCapabilities2KHR") + GetDisplayPlaneCapabilitiesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDisplayPlaneCapabilitiesKHR") + GetDisplayPlaneSupportedDisplaysKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDisplayPlaneSupportedDisplaysKHR") + GetDrmDisplayEXT = auto_cast GetInstanceProcAddr(instance, "vkGetDrmDisplayEXT") + GetPhysicalDeviceCalibrateableTimeDomainsEXT = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT") + GetPhysicalDeviceCooperativeMatrixPropertiesNV = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV") + GetPhysicalDeviceDisplayPlaneProperties2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR") + GetPhysicalDeviceDisplayPlanePropertiesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR") + GetPhysicalDeviceDisplayProperties2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceDisplayProperties2KHR") + GetPhysicalDeviceDisplayPropertiesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceDisplayPropertiesKHR") + GetPhysicalDeviceExternalBufferProperties = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalBufferProperties") + GetPhysicalDeviceExternalBufferPropertiesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalBufferPropertiesKHR") + GetPhysicalDeviceExternalFenceProperties = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalFenceProperties") + GetPhysicalDeviceExternalFencePropertiesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalFencePropertiesKHR") + GetPhysicalDeviceExternalImageFormatPropertiesNV = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV") + GetPhysicalDeviceExternalSemaphoreProperties = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalSemaphoreProperties") + GetPhysicalDeviceExternalSemaphorePropertiesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR") + GetPhysicalDeviceFeatures = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceFeatures") + GetPhysicalDeviceFeatures2 = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceFeatures2") + GetPhysicalDeviceFeatures2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceFeatures2KHR") + GetPhysicalDeviceFormatProperties = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceFormatProperties") + GetPhysicalDeviceFormatProperties2 = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceFormatProperties2") + GetPhysicalDeviceFormatProperties2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceFormatProperties2KHR") + GetPhysicalDeviceFragmentShadingRatesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceFragmentShadingRatesKHR") + GetPhysicalDeviceImageFormatProperties = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceImageFormatProperties") + GetPhysicalDeviceImageFormatProperties2 = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceImageFormatProperties2") + GetPhysicalDeviceImageFormatProperties2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceImageFormatProperties2KHR") + GetPhysicalDeviceMemoryProperties = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceMemoryProperties") + GetPhysicalDeviceMemoryProperties2 = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceMemoryProperties2") + GetPhysicalDeviceMemoryProperties2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceMemoryProperties2KHR") + GetPhysicalDeviceMultisamplePropertiesEXT = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceMultisamplePropertiesEXT") + GetPhysicalDevicePresentRectanglesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDevicePresentRectanglesKHR") + GetPhysicalDeviceProperties = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceProperties") + GetPhysicalDeviceProperties2 = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceProperties2") + GetPhysicalDeviceProperties2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceProperties2KHR") + GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR") + GetPhysicalDeviceQueueFamilyProperties = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceQueueFamilyProperties") + GetPhysicalDeviceQueueFamilyProperties2 = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceQueueFamilyProperties2") + GetPhysicalDeviceQueueFamilyProperties2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceQueueFamilyProperties2KHR") + GetPhysicalDeviceSparseImageFormatProperties = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSparseImageFormatProperties") + GetPhysicalDeviceSparseImageFormatProperties2 = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSparseImageFormatProperties2") + GetPhysicalDeviceSparseImageFormatProperties2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR") + GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV") + GetPhysicalDeviceSurfaceCapabilities2EXT = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceCapabilities2EXT") + GetPhysicalDeviceSurfaceCapabilities2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR") + GetPhysicalDeviceSurfaceCapabilitiesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR") + GetPhysicalDeviceSurfaceFormats2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceFormats2KHR") + GetPhysicalDeviceSurfaceFormatsKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceFormatsKHR") + GetPhysicalDeviceSurfacePresentModes2EXT = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfacePresentModes2EXT") + GetPhysicalDeviceSurfacePresentModesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfacePresentModesKHR") + GetPhysicalDeviceSurfaceSupportKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceSupportKHR") + GetPhysicalDeviceToolProperties = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceToolProperties") + GetPhysicalDeviceToolPropertiesEXT = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceToolPropertiesEXT") + GetPhysicalDeviceWaylandPresentationSupportKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceWaylandPresentationSupportKHR") + GetPhysicalDeviceWin32PresentationSupportKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR") + GetWinrtDisplayNV = auto_cast GetInstanceProcAddr(instance, "vkGetWinrtDisplayNV") + ReleaseDisplayEXT = auto_cast GetInstanceProcAddr(instance, "vkReleaseDisplayEXT") + SubmitDebugUtilsMessageEXT = auto_cast GetInstanceProcAddr(instance, "vkSubmitDebugUtilsMessageEXT") + + // Device Procedures (may call into dispatch) + AcquireFullScreenExclusiveModeEXT = auto_cast GetInstanceProcAddr(instance, "vkAcquireFullScreenExclusiveModeEXT") + AcquireNextImage2KHR = auto_cast GetInstanceProcAddr(instance, "vkAcquireNextImage2KHR") + AcquireNextImageKHR = auto_cast GetInstanceProcAddr(instance, "vkAcquireNextImageKHR") + AcquirePerformanceConfigurationINTEL = auto_cast GetInstanceProcAddr(instance, "vkAcquirePerformanceConfigurationINTEL") + AcquireProfilingLockKHR = auto_cast GetInstanceProcAddr(instance, "vkAcquireProfilingLockKHR") + AllocateCommandBuffers = auto_cast GetInstanceProcAddr(instance, "vkAllocateCommandBuffers") + AllocateDescriptorSets = auto_cast GetInstanceProcAddr(instance, "vkAllocateDescriptorSets") + AllocateMemory = auto_cast GetInstanceProcAddr(instance, "vkAllocateMemory") + BeginCommandBuffer = auto_cast GetInstanceProcAddr(instance, "vkBeginCommandBuffer") + BindAccelerationStructureMemoryNV = auto_cast GetInstanceProcAddr(instance, "vkBindAccelerationStructureMemoryNV") + BindBufferMemory = auto_cast GetInstanceProcAddr(instance, "vkBindBufferMemory") + BindBufferMemory2 = auto_cast GetInstanceProcAddr(instance, "vkBindBufferMemory2") + BindBufferMemory2KHR = auto_cast GetInstanceProcAddr(instance, "vkBindBufferMemory2KHR") + BindImageMemory = auto_cast GetInstanceProcAddr(instance, "vkBindImageMemory") + BindImageMemory2 = auto_cast GetInstanceProcAddr(instance, "vkBindImageMemory2") + BindImageMemory2KHR = auto_cast GetInstanceProcAddr(instance, "vkBindImageMemory2KHR") + BuildAccelerationStructuresKHR = auto_cast GetInstanceProcAddr(instance, "vkBuildAccelerationStructuresKHR") + CmdBeginConditionalRenderingEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdBeginConditionalRenderingEXT") + CmdBeginDebugUtilsLabelEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdBeginDebugUtilsLabelEXT") + CmdBeginQuery = auto_cast GetInstanceProcAddr(instance, "vkCmdBeginQuery") + CmdBeginQueryIndexedEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdBeginQueryIndexedEXT") + CmdBeginRenderPass = auto_cast GetInstanceProcAddr(instance, "vkCmdBeginRenderPass") + CmdBeginRenderPass2 = auto_cast GetInstanceProcAddr(instance, "vkCmdBeginRenderPass2") + CmdBeginRenderPass2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdBeginRenderPass2KHR") + CmdBeginRendering = auto_cast GetInstanceProcAddr(instance, "vkCmdBeginRendering") + CmdBeginRenderingKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdBeginRenderingKHR") + CmdBeginTransformFeedbackEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdBeginTransformFeedbackEXT") + CmdBindDescriptorSets = auto_cast GetInstanceProcAddr(instance, "vkCmdBindDescriptorSets") + CmdBindIndexBuffer = auto_cast GetInstanceProcAddr(instance, "vkCmdBindIndexBuffer") + CmdBindInvocationMaskHUAWEI = auto_cast GetInstanceProcAddr(instance, "vkCmdBindInvocationMaskHUAWEI") + CmdBindPipeline = auto_cast GetInstanceProcAddr(instance, "vkCmdBindPipeline") + CmdBindPipelineShaderGroupNV = auto_cast GetInstanceProcAddr(instance, "vkCmdBindPipelineShaderGroupNV") + CmdBindShadingRateImageNV = auto_cast GetInstanceProcAddr(instance, "vkCmdBindShadingRateImageNV") + CmdBindTransformFeedbackBuffersEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdBindTransformFeedbackBuffersEXT") + CmdBindVertexBuffers = auto_cast GetInstanceProcAddr(instance, "vkCmdBindVertexBuffers") + CmdBindVertexBuffers2 = auto_cast GetInstanceProcAddr(instance, "vkCmdBindVertexBuffers2") + CmdBindVertexBuffers2EXT = auto_cast GetInstanceProcAddr(instance, "vkCmdBindVertexBuffers2EXT") + CmdBlitImage = auto_cast GetInstanceProcAddr(instance, "vkCmdBlitImage") + CmdBlitImage2 = auto_cast GetInstanceProcAddr(instance, "vkCmdBlitImage2") + CmdBlitImage2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdBlitImage2KHR") + CmdBuildAccelerationStructureNV = auto_cast GetInstanceProcAddr(instance, "vkCmdBuildAccelerationStructureNV") + CmdBuildAccelerationStructuresIndirectKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdBuildAccelerationStructuresIndirectKHR") + CmdBuildAccelerationStructuresKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdBuildAccelerationStructuresKHR") + CmdClearAttachments = auto_cast GetInstanceProcAddr(instance, "vkCmdClearAttachments") + CmdClearColorImage = auto_cast GetInstanceProcAddr(instance, "vkCmdClearColorImage") + CmdClearDepthStencilImage = auto_cast GetInstanceProcAddr(instance, "vkCmdClearDepthStencilImage") + CmdCopyAccelerationStructureKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyAccelerationStructureKHR") + CmdCopyAccelerationStructureNV = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyAccelerationStructureNV") + CmdCopyAccelerationStructureToMemoryKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyAccelerationStructureToMemoryKHR") + CmdCopyBuffer = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyBuffer") + CmdCopyBuffer2 = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyBuffer2") + CmdCopyBuffer2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyBuffer2KHR") + CmdCopyBufferToImage = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyBufferToImage") + CmdCopyBufferToImage2 = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyBufferToImage2") + CmdCopyBufferToImage2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyBufferToImage2KHR") + CmdCopyImage = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyImage") + CmdCopyImage2 = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyImage2") + CmdCopyImage2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyImage2KHR") + CmdCopyImageToBuffer = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyImageToBuffer") + CmdCopyImageToBuffer2 = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyImageToBuffer2") + CmdCopyImageToBuffer2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyImageToBuffer2KHR") + CmdCopyMemoryToAccelerationStructureKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyMemoryToAccelerationStructureKHR") + CmdCopyQueryPoolResults = auto_cast GetInstanceProcAddr(instance, "vkCmdCopyQueryPoolResults") + CmdCuLaunchKernelNVX = auto_cast GetInstanceProcAddr(instance, "vkCmdCuLaunchKernelNVX") + CmdDebugMarkerBeginEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdDebugMarkerBeginEXT") + CmdDebugMarkerEndEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdDebugMarkerEndEXT") + CmdDebugMarkerInsertEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdDebugMarkerInsertEXT") + CmdDispatch = auto_cast GetInstanceProcAddr(instance, "vkCmdDispatch") + CmdDispatchBase = auto_cast GetInstanceProcAddr(instance, "vkCmdDispatchBase") + CmdDispatchBaseKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdDispatchBaseKHR") + CmdDispatchIndirect = auto_cast GetInstanceProcAddr(instance, "vkCmdDispatchIndirect") + CmdDraw = auto_cast GetInstanceProcAddr(instance, "vkCmdDraw") + CmdDrawIndexed = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawIndexed") + CmdDrawIndexedIndirect = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawIndexedIndirect") + CmdDrawIndexedIndirectCount = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawIndexedIndirectCount") + CmdDrawIndexedIndirectCountAMD = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawIndexedIndirectCountAMD") + CmdDrawIndexedIndirectCountKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawIndexedIndirectCountKHR") + CmdDrawIndirect = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawIndirect") + CmdDrawIndirectByteCountEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawIndirectByteCountEXT") + CmdDrawIndirectCount = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawIndirectCount") + CmdDrawIndirectCountAMD = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawIndirectCountAMD") + CmdDrawIndirectCountKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawIndirectCountKHR") + CmdDrawMeshTasksIndirectCountNV = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawMeshTasksIndirectCountNV") + CmdDrawMeshTasksIndirectNV = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawMeshTasksIndirectNV") + CmdDrawMeshTasksNV = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawMeshTasksNV") + CmdDrawMultiEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawMultiEXT") + CmdDrawMultiIndexedEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawMultiIndexedEXT") + CmdEndConditionalRenderingEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdEndConditionalRenderingEXT") + CmdEndDebugUtilsLabelEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdEndDebugUtilsLabelEXT") + CmdEndQuery = auto_cast GetInstanceProcAddr(instance, "vkCmdEndQuery") + CmdEndQueryIndexedEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdEndQueryIndexedEXT") + CmdEndRenderPass = auto_cast GetInstanceProcAddr(instance, "vkCmdEndRenderPass") + CmdEndRenderPass2 = auto_cast GetInstanceProcAddr(instance, "vkCmdEndRenderPass2") + CmdEndRenderPass2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdEndRenderPass2KHR") + CmdEndRendering = auto_cast GetInstanceProcAddr(instance, "vkCmdEndRendering") + CmdEndRenderingKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdEndRenderingKHR") + CmdEndTransformFeedbackEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdEndTransformFeedbackEXT") + CmdExecuteCommands = auto_cast GetInstanceProcAddr(instance, "vkCmdExecuteCommands") + CmdExecuteGeneratedCommandsNV = auto_cast GetInstanceProcAddr(instance, "vkCmdExecuteGeneratedCommandsNV") + CmdFillBuffer = auto_cast GetInstanceProcAddr(instance, "vkCmdFillBuffer") + CmdInsertDebugUtilsLabelEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdInsertDebugUtilsLabelEXT") + CmdNextSubpass = auto_cast GetInstanceProcAddr(instance, "vkCmdNextSubpass") + CmdNextSubpass2 = auto_cast GetInstanceProcAddr(instance, "vkCmdNextSubpass2") + CmdNextSubpass2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdNextSubpass2KHR") + CmdPipelineBarrier = auto_cast GetInstanceProcAddr(instance, "vkCmdPipelineBarrier") + CmdPipelineBarrier2 = auto_cast GetInstanceProcAddr(instance, "vkCmdPipelineBarrier2") + CmdPipelineBarrier2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdPipelineBarrier2KHR") + CmdPreprocessGeneratedCommandsNV = auto_cast GetInstanceProcAddr(instance, "vkCmdPreprocessGeneratedCommandsNV") + CmdPushConstants = auto_cast GetInstanceProcAddr(instance, "vkCmdPushConstants") + CmdPushDescriptorSetKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdPushDescriptorSetKHR") + CmdPushDescriptorSetWithTemplateKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdPushDescriptorSetWithTemplateKHR") + CmdResetEvent = auto_cast GetInstanceProcAddr(instance, "vkCmdResetEvent") + CmdResetEvent2 = auto_cast GetInstanceProcAddr(instance, "vkCmdResetEvent2") + CmdResetEvent2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdResetEvent2KHR") + CmdResetQueryPool = auto_cast GetInstanceProcAddr(instance, "vkCmdResetQueryPool") + CmdResolveImage = auto_cast GetInstanceProcAddr(instance, "vkCmdResolveImage") + CmdResolveImage2 = auto_cast GetInstanceProcAddr(instance, "vkCmdResolveImage2") + CmdResolveImage2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdResolveImage2KHR") + CmdSetBlendConstants = auto_cast GetInstanceProcAddr(instance, "vkCmdSetBlendConstants") + CmdSetCheckpointNV = auto_cast GetInstanceProcAddr(instance, "vkCmdSetCheckpointNV") + CmdSetCoarseSampleOrderNV = auto_cast GetInstanceProcAddr(instance, "vkCmdSetCoarseSampleOrderNV") + CmdSetCullMode = auto_cast GetInstanceProcAddr(instance, "vkCmdSetCullMode") + CmdSetCullModeEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetCullModeEXT") + CmdSetDepthBias = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDepthBias") + CmdSetDepthBiasEnable = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDepthBiasEnable") + CmdSetDepthBiasEnableEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDepthBiasEnableEXT") + CmdSetDepthBounds = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDepthBounds") + CmdSetDepthBoundsTestEnable = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDepthBoundsTestEnable") + CmdSetDepthBoundsTestEnableEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDepthBoundsTestEnableEXT") + CmdSetDepthCompareOp = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDepthCompareOp") + CmdSetDepthCompareOpEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDepthCompareOpEXT") + CmdSetDepthTestEnable = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDepthTestEnable") + CmdSetDepthTestEnableEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDepthTestEnableEXT") + CmdSetDepthWriteEnable = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDepthWriteEnable") + CmdSetDepthWriteEnableEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDepthWriteEnableEXT") + CmdSetDeviceMask = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDeviceMask") + CmdSetDeviceMaskKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDeviceMaskKHR") + CmdSetDiscardRectangleEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetDiscardRectangleEXT") + CmdSetEvent = auto_cast GetInstanceProcAddr(instance, "vkCmdSetEvent") + CmdSetEvent2 = auto_cast GetInstanceProcAddr(instance, "vkCmdSetEvent2") + CmdSetEvent2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdSetEvent2KHR") + CmdSetExclusiveScissorNV = auto_cast GetInstanceProcAddr(instance, "vkCmdSetExclusiveScissorNV") + CmdSetFragmentShadingRateEnumNV = auto_cast GetInstanceProcAddr(instance, "vkCmdSetFragmentShadingRateEnumNV") + CmdSetFragmentShadingRateKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdSetFragmentShadingRateKHR") + CmdSetFrontFace = auto_cast GetInstanceProcAddr(instance, "vkCmdSetFrontFace") + CmdSetFrontFaceEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetFrontFaceEXT") + CmdSetLineStippleEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetLineStippleEXT") + CmdSetLineWidth = auto_cast GetInstanceProcAddr(instance, "vkCmdSetLineWidth") + CmdSetLogicOpEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetLogicOpEXT") + CmdSetPatchControlPointsEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetPatchControlPointsEXT") + CmdSetPerformanceMarkerINTEL = auto_cast GetInstanceProcAddr(instance, "vkCmdSetPerformanceMarkerINTEL") + CmdSetPerformanceOverrideINTEL = auto_cast GetInstanceProcAddr(instance, "vkCmdSetPerformanceOverrideINTEL") + CmdSetPerformanceStreamMarkerINTEL = auto_cast GetInstanceProcAddr(instance, "vkCmdSetPerformanceStreamMarkerINTEL") + CmdSetPrimitiveRestartEnable = auto_cast GetInstanceProcAddr(instance, "vkCmdSetPrimitiveRestartEnable") + CmdSetPrimitiveRestartEnableEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetPrimitiveRestartEnableEXT") + CmdSetPrimitiveTopology = auto_cast GetInstanceProcAddr(instance, "vkCmdSetPrimitiveTopology") + CmdSetPrimitiveTopologyEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetPrimitiveTopologyEXT") + CmdSetRasterizerDiscardEnable = auto_cast GetInstanceProcAddr(instance, "vkCmdSetRasterizerDiscardEnable") + CmdSetRasterizerDiscardEnableEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetRasterizerDiscardEnableEXT") + CmdSetRayTracingPipelineStackSizeKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdSetRayTracingPipelineStackSizeKHR") + CmdSetSampleLocationsEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetSampleLocationsEXT") + CmdSetScissor = auto_cast GetInstanceProcAddr(instance, "vkCmdSetScissor") + CmdSetScissorWithCount = auto_cast GetInstanceProcAddr(instance, "vkCmdSetScissorWithCount") + CmdSetScissorWithCountEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetScissorWithCountEXT") + CmdSetStencilCompareMask = auto_cast GetInstanceProcAddr(instance, "vkCmdSetStencilCompareMask") + CmdSetStencilOp = auto_cast GetInstanceProcAddr(instance, "vkCmdSetStencilOp") + CmdSetStencilOpEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetStencilOpEXT") + CmdSetStencilReference = auto_cast GetInstanceProcAddr(instance, "vkCmdSetStencilReference") + CmdSetStencilTestEnable = auto_cast GetInstanceProcAddr(instance, "vkCmdSetStencilTestEnable") + CmdSetStencilTestEnableEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetStencilTestEnableEXT") + CmdSetStencilWriteMask = auto_cast GetInstanceProcAddr(instance, "vkCmdSetStencilWriteMask") + CmdSetVertexInputEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetVertexInputEXT") + CmdSetViewport = auto_cast GetInstanceProcAddr(instance, "vkCmdSetViewport") + CmdSetViewportShadingRatePaletteNV = auto_cast GetInstanceProcAddr(instance, "vkCmdSetViewportShadingRatePaletteNV") + CmdSetViewportWScalingNV = auto_cast GetInstanceProcAddr(instance, "vkCmdSetViewportWScalingNV") + CmdSetViewportWithCount = auto_cast GetInstanceProcAddr(instance, "vkCmdSetViewportWithCount") + CmdSetViewportWithCountEXT = auto_cast GetInstanceProcAddr(instance, "vkCmdSetViewportWithCountEXT") + CmdSubpassShadingHUAWEI = auto_cast GetInstanceProcAddr(instance, "vkCmdSubpassShadingHUAWEI") + CmdTraceRaysIndirectKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdTraceRaysIndirectKHR") + CmdTraceRaysKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdTraceRaysKHR") + CmdTraceRaysNV = auto_cast GetInstanceProcAddr(instance, "vkCmdTraceRaysNV") + CmdUpdateBuffer = auto_cast GetInstanceProcAddr(instance, "vkCmdUpdateBuffer") + CmdWaitEvents = auto_cast GetInstanceProcAddr(instance, "vkCmdWaitEvents") + CmdWaitEvents2 = auto_cast GetInstanceProcAddr(instance, "vkCmdWaitEvents2") + CmdWaitEvents2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdWaitEvents2KHR") + CmdWriteAccelerationStructuresPropertiesKHR = auto_cast GetInstanceProcAddr(instance, "vkCmdWriteAccelerationStructuresPropertiesKHR") + CmdWriteAccelerationStructuresPropertiesNV = auto_cast GetInstanceProcAddr(instance, "vkCmdWriteAccelerationStructuresPropertiesNV") + CmdWriteBufferMarker2AMD = auto_cast GetInstanceProcAddr(instance, "vkCmdWriteBufferMarker2AMD") + CmdWriteBufferMarkerAMD = auto_cast GetInstanceProcAddr(instance, "vkCmdWriteBufferMarkerAMD") + CmdWriteTimestamp = auto_cast GetInstanceProcAddr(instance, "vkCmdWriteTimestamp") + CmdWriteTimestamp2 = auto_cast GetInstanceProcAddr(instance, "vkCmdWriteTimestamp2") + CmdWriteTimestamp2KHR = auto_cast GetInstanceProcAddr(instance, "vkCmdWriteTimestamp2KHR") + CompileDeferredNV = auto_cast GetInstanceProcAddr(instance, "vkCompileDeferredNV") + CopyAccelerationStructureKHR = auto_cast GetInstanceProcAddr(instance, "vkCopyAccelerationStructureKHR") + CopyAccelerationStructureToMemoryKHR = auto_cast GetInstanceProcAddr(instance, "vkCopyAccelerationStructureToMemoryKHR") + CopyMemoryToAccelerationStructureKHR = auto_cast GetInstanceProcAddr(instance, "vkCopyMemoryToAccelerationStructureKHR") + CreateAccelerationStructureKHR = auto_cast GetInstanceProcAddr(instance, "vkCreateAccelerationStructureKHR") + CreateAccelerationStructureNV = auto_cast GetInstanceProcAddr(instance, "vkCreateAccelerationStructureNV") + CreateBuffer = auto_cast GetInstanceProcAddr(instance, "vkCreateBuffer") + CreateBufferView = auto_cast GetInstanceProcAddr(instance, "vkCreateBufferView") + CreateCommandPool = auto_cast GetInstanceProcAddr(instance, "vkCreateCommandPool") + CreateComputePipelines = auto_cast GetInstanceProcAddr(instance, "vkCreateComputePipelines") + CreateCuFunctionNVX = auto_cast GetInstanceProcAddr(instance, "vkCreateCuFunctionNVX") + CreateCuModuleNVX = auto_cast GetInstanceProcAddr(instance, "vkCreateCuModuleNVX") + CreateDeferredOperationKHR = auto_cast GetInstanceProcAddr(instance, "vkCreateDeferredOperationKHR") + CreateDescriptorPool = auto_cast GetInstanceProcAddr(instance, "vkCreateDescriptorPool") + CreateDescriptorSetLayout = auto_cast GetInstanceProcAddr(instance, "vkCreateDescriptorSetLayout") + CreateDescriptorUpdateTemplate = auto_cast GetInstanceProcAddr(instance, "vkCreateDescriptorUpdateTemplate") + CreateDescriptorUpdateTemplateKHR = auto_cast GetInstanceProcAddr(instance, "vkCreateDescriptorUpdateTemplateKHR") + CreateEvent = auto_cast GetInstanceProcAddr(instance, "vkCreateEvent") + CreateFence = auto_cast GetInstanceProcAddr(instance, "vkCreateFence") + CreateFramebuffer = auto_cast GetInstanceProcAddr(instance, "vkCreateFramebuffer") + CreateGraphicsPipelines = auto_cast GetInstanceProcAddr(instance, "vkCreateGraphicsPipelines") + CreateImage = auto_cast GetInstanceProcAddr(instance, "vkCreateImage") + CreateImageView = auto_cast GetInstanceProcAddr(instance, "vkCreateImageView") + CreateIndirectCommandsLayoutNV = auto_cast GetInstanceProcAddr(instance, "vkCreateIndirectCommandsLayoutNV") + CreatePipelineCache = auto_cast GetInstanceProcAddr(instance, "vkCreatePipelineCache") + CreatePipelineLayout = auto_cast GetInstanceProcAddr(instance, "vkCreatePipelineLayout") + CreatePrivateDataSlot = auto_cast GetInstanceProcAddr(instance, "vkCreatePrivateDataSlot") + CreatePrivateDataSlotEXT = auto_cast GetInstanceProcAddr(instance, "vkCreatePrivateDataSlotEXT") + CreateQueryPool = auto_cast GetInstanceProcAddr(instance, "vkCreateQueryPool") + CreateRayTracingPipelinesKHR = auto_cast GetInstanceProcAddr(instance, "vkCreateRayTracingPipelinesKHR") + CreateRayTracingPipelinesNV = auto_cast GetInstanceProcAddr(instance, "vkCreateRayTracingPipelinesNV") + CreateRenderPass = auto_cast GetInstanceProcAddr(instance, "vkCreateRenderPass") + CreateRenderPass2 = auto_cast GetInstanceProcAddr(instance, "vkCreateRenderPass2") + CreateRenderPass2KHR = auto_cast GetInstanceProcAddr(instance, "vkCreateRenderPass2KHR") + CreateSampler = auto_cast GetInstanceProcAddr(instance, "vkCreateSampler") + CreateSamplerYcbcrConversion = auto_cast GetInstanceProcAddr(instance, "vkCreateSamplerYcbcrConversion") + CreateSamplerYcbcrConversionKHR = auto_cast GetInstanceProcAddr(instance, "vkCreateSamplerYcbcrConversionKHR") + CreateSemaphore = auto_cast GetInstanceProcAddr(instance, "vkCreateSemaphore") + CreateShaderModule = auto_cast GetInstanceProcAddr(instance, "vkCreateShaderModule") + CreateSharedSwapchainsKHR = auto_cast GetInstanceProcAddr(instance, "vkCreateSharedSwapchainsKHR") + CreateSwapchainKHR = auto_cast GetInstanceProcAddr(instance, "vkCreateSwapchainKHR") + CreateValidationCacheEXT = auto_cast GetInstanceProcAddr(instance, "vkCreateValidationCacheEXT") + DebugMarkerSetObjectNameEXT = auto_cast GetInstanceProcAddr(instance, "vkDebugMarkerSetObjectNameEXT") + DebugMarkerSetObjectTagEXT = auto_cast GetInstanceProcAddr(instance, "vkDebugMarkerSetObjectTagEXT") + DeferredOperationJoinKHR = auto_cast GetInstanceProcAddr(instance, "vkDeferredOperationJoinKHR") + DestroyAccelerationStructureKHR = auto_cast GetInstanceProcAddr(instance, "vkDestroyAccelerationStructureKHR") + DestroyAccelerationStructureNV = auto_cast GetInstanceProcAddr(instance, "vkDestroyAccelerationStructureNV") + DestroyBuffer = auto_cast GetInstanceProcAddr(instance, "vkDestroyBuffer") + DestroyBufferView = auto_cast GetInstanceProcAddr(instance, "vkDestroyBufferView") + DestroyCommandPool = auto_cast GetInstanceProcAddr(instance, "vkDestroyCommandPool") + DestroyCuFunctionNVX = auto_cast GetInstanceProcAddr(instance, "vkDestroyCuFunctionNVX") + DestroyCuModuleNVX = auto_cast GetInstanceProcAddr(instance, "vkDestroyCuModuleNVX") + DestroyDeferredOperationKHR = auto_cast GetInstanceProcAddr(instance, "vkDestroyDeferredOperationKHR") + DestroyDescriptorPool = auto_cast GetInstanceProcAddr(instance, "vkDestroyDescriptorPool") + DestroyDescriptorSetLayout = auto_cast GetInstanceProcAddr(instance, "vkDestroyDescriptorSetLayout") + DestroyDescriptorUpdateTemplate = auto_cast GetInstanceProcAddr(instance, "vkDestroyDescriptorUpdateTemplate") + DestroyDescriptorUpdateTemplateKHR = auto_cast GetInstanceProcAddr(instance, "vkDestroyDescriptorUpdateTemplateKHR") + DestroyDevice = auto_cast GetInstanceProcAddr(instance, "vkDestroyDevice") + DestroyEvent = auto_cast GetInstanceProcAddr(instance, "vkDestroyEvent") + DestroyFence = auto_cast GetInstanceProcAddr(instance, "vkDestroyFence") + DestroyFramebuffer = auto_cast GetInstanceProcAddr(instance, "vkDestroyFramebuffer") + DestroyImage = auto_cast GetInstanceProcAddr(instance, "vkDestroyImage") + DestroyImageView = auto_cast GetInstanceProcAddr(instance, "vkDestroyImageView") + DestroyIndirectCommandsLayoutNV = auto_cast GetInstanceProcAddr(instance, "vkDestroyIndirectCommandsLayoutNV") + DestroyPipeline = auto_cast GetInstanceProcAddr(instance, "vkDestroyPipeline") + DestroyPipelineCache = auto_cast GetInstanceProcAddr(instance, "vkDestroyPipelineCache") + DestroyPipelineLayout = auto_cast GetInstanceProcAddr(instance, "vkDestroyPipelineLayout") + DestroyPrivateDataSlot = auto_cast GetInstanceProcAddr(instance, "vkDestroyPrivateDataSlot") + DestroyPrivateDataSlotEXT = auto_cast GetInstanceProcAddr(instance, "vkDestroyPrivateDataSlotEXT") + DestroyQueryPool = auto_cast GetInstanceProcAddr(instance, "vkDestroyQueryPool") + DestroyRenderPass = auto_cast GetInstanceProcAddr(instance, "vkDestroyRenderPass") + DestroySampler = auto_cast GetInstanceProcAddr(instance, "vkDestroySampler") + DestroySamplerYcbcrConversion = auto_cast GetInstanceProcAddr(instance, "vkDestroySamplerYcbcrConversion") + DestroySamplerYcbcrConversionKHR = auto_cast GetInstanceProcAddr(instance, "vkDestroySamplerYcbcrConversionKHR") + DestroySemaphore = auto_cast GetInstanceProcAddr(instance, "vkDestroySemaphore") + DestroyShaderModule = auto_cast GetInstanceProcAddr(instance, "vkDestroyShaderModule") + DestroySwapchainKHR = auto_cast GetInstanceProcAddr(instance, "vkDestroySwapchainKHR") + DestroyValidationCacheEXT = auto_cast GetInstanceProcAddr(instance, "vkDestroyValidationCacheEXT") + DeviceWaitIdle = auto_cast GetInstanceProcAddr(instance, "vkDeviceWaitIdle") + DisplayPowerControlEXT = auto_cast GetInstanceProcAddr(instance, "vkDisplayPowerControlEXT") + EndCommandBuffer = auto_cast GetInstanceProcAddr(instance, "vkEndCommandBuffer") + FlushMappedMemoryRanges = auto_cast GetInstanceProcAddr(instance, "vkFlushMappedMemoryRanges") + FreeCommandBuffers = auto_cast GetInstanceProcAddr(instance, "vkFreeCommandBuffers") + FreeDescriptorSets = auto_cast GetInstanceProcAddr(instance, "vkFreeDescriptorSets") + FreeMemory = auto_cast GetInstanceProcAddr(instance, "vkFreeMemory") + GetAccelerationStructureBuildSizesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetAccelerationStructureBuildSizesKHR") + GetAccelerationStructureDeviceAddressKHR = auto_cast GetInstanceProcAddr(instance, "vkGetAccelerationStructureDeviceAddressKHR") + GetAccelerationStructureHandleNV = auto_cast GetInstanceProcAddr(instance, "vkGetAccelerationStructureHandleNV") + GetAccelerationStructureMemoryRequirementsNV = auto_cast GetInstanceProcAddr(instance, "vkGetAccelerationStructureMemoryRequirementsNV") + GetBufferDeviceAddress = auto_cast GetInstanceProcAddr(instance, "vkGetBufferDeviceAddress") + GetBufferDeviceAddressEXT = auto_cast GetInstanceProcAddr(instance, "vkGetBufferDeviceAddressEXT") + GetBufferDeviceAddressKHR = auto_cast GetInstanceProcAddr(instance, "vkGetBufferDeviceAddressKHR") + GetBufferMemoryRequirements = auto_cast GetInstanceProcAddr(instance, "vkGetBufferMemoryRequirements") + GetBufferMemoryRequirements2 = auto_cast GetInstanceProcAddr(instance, "vkGetBufferMemoryRequirements2") + GetBufferMemoryRequirements2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetBufferMemoryRequirements2KHR") + GetBufferOpaqueCaptureAddress = auto_cast GetInstanceProcAddr(instance, "vkGetBufferOpaqueCaptureAddress") + GetBufferOpaqueCaptureAddressKHR = auto_cast GetInstanceProcAddr(instance, "vkGetBufferOpaqueCaptureAddressKHR") + GetCalibratedTimestampsEXT = auto_cast GetInstanceProcAddr(instance, "vkGetCalibratedTimestampsEXT") + GetDeferredOperationMaxConcurrencyKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDeferredOperationMaxConcurrencyKHR") + GetDeferredOperationResultKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDeferredOperationResultKHR") + GetDescriptorSetHostMappingVALVE = auto_cast GetInstanceProcAddr(instance, "vkGetDescriptorSetHostMappingVALVE") + GetDescriptorSetLayoutHostMappingInfoVALVE = auto_cast GetInstanceProcAddr(instance, "vkGetDescriptorSetLayoutHostMappingInfoVALVE") + GetDescriptorSetLayoutSupport = auto_cast GetInstanceProcAddr(instance, "vkGetDescriptorSetLayoutSupport") + GetDescriptorSetLayoutSupportKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDescriptorSetLayoutSupportKHR") + GetDeviceAccelerationStructureCompatibilityKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceAccelerationStructureCompatibilityKHR") + GetDeviceBufferMemoryRequirements = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceBufferMemoryRequirements") + GetDeviceBufferMemoryRequirementsKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceBufferMemoryRequirementsKHR") + GetDeviceGroupPeerMemoryFeatures = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceGroupPeerMemoryFeatures") + GetDeviceGroupPeerMemoryFeaturesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceGroupPeerMemoryFeaturesKHR") + GetDeviceGroupPresentCapabilitiesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceGroupPresentCapabilitiesKHR") + GetDeviceGroupSurfacePresentModes2EXT = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceGroupSurfacePresentModes2EXT") + GetDeviceGroupSurfacePresentModesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceGroupSurfacePresentModesKHR") + GetDeviceImageMemoryRequirements = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceImageMemoryRequirements") + GetDeviceImageMemoryRequirementsKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceImageMemoryRequirementsKHR") + GetDeviceImageSparseMemoryRequirements = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceImageSparseMemoryRequirements") + GetDeviceImageSparseMemoryRequirementsKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceImageSparseMemoryRequirementsKHR") + GetDeviceMemoryCommitment = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceMemoryCommitment") + GetDeviceMemoryOpaqueCaptureAddress = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceMemoryOpaqueCaptureAddress") + GetDeviceMemoryOpaqueCaptureAddressKHR = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceMemoryOpaqueCaptureAddressKHR") + GetDeviceProcAddr = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceProcAddr") + GetDeviceQueue = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceQueue") + GetDeviceQueue2 = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceQueue2") + GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = auto_cast GetInstanceProcAddr(instance, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI") + GetEventStatus = auto_cast GetInstanceProcAddr(instance, "vkGetEventStatus") + GetFenceFdKHR = auto_cast GetInstanceProcAddr(instance, "vkGetFenceFdKHR") + GetFenceStatus = auto_cast GetInstanceProcAddr(instance, "vkGetFenceStatus") + GetFenceWin32HandleKHR = auto_cast GetInstanceProcAddr(instance, "vkGetFenceWin32HandleKHR") + GetGeneratedCommandsMemoryRequirementsNV = auto_cast GetInstanceProcAddr(instance, "vkGetGeneratedCommandsMemoryRequirementsNV") + GetImageDrmFormatModifierPropertiesEXT = auto_cast GetInstanceProcAddr(instance, "vkGetImageDrmFormatModifierPropertiesEXT") + GetImageMemoryRequirements = auto_cast GetInstanceProcAddr(instance, "vkGetImageMemoryRequirements") + GetImageMemoryRequirements2 = auto_cast GetInstanceProcAddr(instance, "vkGetImageMemoryRequirements2") + GetImageMemoryRequirements2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetImageMemoryRequirements2KHR") + GetImageSparseMemoryRequirements = auto_cast GetInstanceProcAddr(instance, "vkGetImageSparseMemoryRequirements") + GetImageSparseMemoryRequirements2 = auto_cast GetInstanceProcAddr(instance, "vkGetImageSparseMemoryRequirements2") + GetImageSparseMemoryRequirements2KHR = auto_cast GetInstanceProcAddr(instance, "vkGetImageSparseMemoryRequirements2KHR") + GetImageSubresourceLayout = auto_cast GetInstanceProcAddr(instance, "vkGetImageSubresourceLayout") + GetImageViewAddressNVX = auto_cast GetInstanceProcAddr(instance, "vkGetImageViewAddressNVX") + GetImageViewHandleNVX = auto_cast GetInstanceProcAddr(instance, "vkGetImageViewHandleNVX") + GetMemoryFdKHR = auto_cast GetInstanceProcAddr(instance, "vkGetMemoryFdKHR") + GetMemoryFdPropertiesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetMemoryFdPropertiesKHR") + GetMemoryHostPointerPropertiesEXT = auto_cast GetInstanceProcAddr(instance, "vkGetMemoryHostPointerPropertiesEXT") + GetMemoryRemoteAddressNV = auto_cast GetInstanceProcAddr(instance, "vkGetMemoryRemoteAddressNV") + GetMemoryWin32HandleKHR = auto_cast GetInstanceProcAddr(instance, "vkGetMemoryWin32HandleKHR") + GetMemoryWin32HandleNV = auto_cast GetInstanceProcAddr(instance, "vkGetMemoryWin32HandleNV") + GetMemoryWin32HandlePropertiesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetMemoryWin32HandlePropertiesKHR") + GetPastPresentationTimingGOOGLE = auto_cast GetInstanceProcAddr(instance, "vkGetPastPresentationTimingGOOGLE") + GetPerformanceParameterINTEL = auto_cast GetInstanceProcAddr(instance, "vkGetPerformanceParameterINTEL") + GetPipelineCacheData = auto_cast GetInstanceProcAddr(instance, "vkGetPipelineCacheData") + GetPipelineExecutableInternalRepresentationsKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPipelineExecutableInternalRepresentationsKHR") + GetPipelineExecutablePropertiesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPipelineExecutablePropertiesKHR") + GetPipelineExecutableStatisticsKHR = auto_cast GetInstanceProcAddr(instance, "vkGetPipelineExecutableStatisticsKHR") + GetPrivateData = auto_cast GetInstanceProcAddr(instance, "vkGetPrivateData") + GetPrivateDataEXT = auto_cast GetInstanceProcAddr(instance, "vkGetPrivateDataEXT") + GetQueryPoolResults = auto_cast GetInstanceProcAddr(instance, "vkGetQueryPoolResults") + GetQueueCheckpointData2NV = auto_cast GetInstanceProcAddr(instance, "vkGetQueueCheckpointData2NV") + GetQueueCheckpointDataNV = auto_cast GetInstanceProcAddr(instance, "vkGetQueueCheckpointDataNV") + GetRayTracingCaptureReplayShaderGroupHandlesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR") + GetRayTracingShaderGroupHandlesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetRayTracingShaderGroupHandlesKHR") + GetRayTracingShaderGroupHandlesNV = auto_cast GetInstanceProcAddr(instance, "vkGetRayTracingShaderGroupHandlesNV") + GetRayTracingShaderGroupStackSizeKHR = auto_cast GetInstanceProcAddr(instance, "vkGetRayTracingShaderGroupStackSizeKHR") + GetRefreshCycleDurationGOOGLE = auto_cast GetInstanceProcAddr(instance, "vkGetRefreshCycleDurationGOOGLE") + GetRenderAreaGranularity = auto_cast GetInstanceProcAddr(instance, "vkGetRenderAreaGranularity") + GetSemaphoreCounterValue = auto_cast GetInstanceProcAddr(instance, "vkGetSemaphoreCounterValue") + GetSemaphoreCounterValueKHR = auto_cast GetInstanceProcAddr(instance, "vkGetSemaphoreCounterValueKHR") + GetSemaphoreFdKHR = auto_cast GetInstanceProcAddr(instance, "vkGetSemaphoreFdKHR") + GetSemaphoreWin32HandleKHR = auto_cast GetInstanceProcAddr(instance, "vkGetSemaphoreWin32HandleKHR") + GetShaderInfoAMD = auto_cast GetInstanceProcAddr(instance, "vkGetShaderInfoAMD") + GetSwapchainCounterEXT = auto_cast GetInstanceProcAddr(instance, "vkGetSwapchainCounterEXT") + GetSwapchainImagesKHR = auto_cast GetInstanceProcAddr(instance, "vkGetSwapchainImagesKHR") + GetSwapchainStatusKHR = auto_cast GetInstanceProcAddr(instance, "vkGetSwapchainStatusKHR") + GetValidationCacheDataEXT = auto_cast GetInstanceProcAddr(instance, "vkGetValidationCacheDataEXT") + ImportFenceFdKHR = auto_cast GetInstanceProcAddr(instance, "vkImportFenceFdKHR") + ImportFenceWin32HandleKHR = auto_cast GetInstanceProcAddr(instance, "vkImportFenceWin32HandleKHR") + ImportSemaphoreFdKHR = auto_cast GetInstanceProcAddr(instance, "vkImportSemaphoreFdKHR") + ImportSemaphoreWin32HandleKHR = auto_cast GetInstanceProcAddr(instance, "vkImportSemaphoreWin32HandleKHR") + InitializePerformanceApiINTEL = auto_cast GetInstanceProcAddr(instance, "vkInitializePerformanceApiINTEL") + InvalidateMappedMemoryRanges = auto_cast GetInstanceProcAddr(instance, "vkInvalidateMappedMemoryRanges") + MapMemory = auto_cast GetInstanceProcAddr(instance, "vkMapMemory") + MergePipelineCaches = auto_cast GetInstanceProcAddr(instance, "vkMergePipelineCaches") + MergeValidationCachesEXT = auto_cast GetInstanceProcAddr(instance, "vkMergeValidationCachesEXT") + QueueBeginDebugUtilsLabelEXT = auto_cast GetInstanceProcAddr(instance, "vkQueueBeginDebugUtilsLabelEXT") + QueueBindSparse = auto_cast GetInstanceProcAddr(instance, "vkQueueBindSparse") + QueueEndDebugUtilsLabelEXT = auto_cast GetInstanceProcAddr(instance, "vkQueueEndDebugUtilsLabelEXT") + QueueInsertDebugUtilsLabelEXT = auto_cast GetInstanceProcAddr(instance, "vkQueueInsertDebugUtilsLabelEXT") + QueuePresentKHR = auto_cast GetInstanceProcAddr(instance, "vkQueuePresentKHR") + QueueSetPerformanceConfigurationINTEL = auto_cast GetInstanceProcAddr(instance, "vkQueueSetPerformanceConfigurationINTEL") + QueueSubmit = auto_cast GetInstanceProcAddr(instance, "vkQueueSubmit") + QueueSubmit2 = auto_cast GetInstanceProcAddr(instance, "vkQueueSubmit2") + QueueSubmit2KHR = auto_cast GetInstanceProcAddr(instance, "vkQueueSubmit2KHR") + QueueWaitIdle = auto_cast GetInstanceProcAddr(instance, "vkQueueWaitIdle") + RegisterDeviceEventEXT = auto_cast GetInstanceProcAddr(instance, "vkRegisterDeviceEventEXT") + RegisterDisplayEventEXT = auto_cast GetInstanceProcAddr(instance, "vkRegisterDisplayEventEXT") + ReleaseFullScreenExclusiveModeEXT = auto_cast GetInstanceProcAddr(instance, "vkReleaseFullScreenExclusiveModeEXT") + ReleasePerformanceConfigurationINTEL = auto_cast GetInstanceProcAddr(instance, "vkReleasePerformanceConfigurationINTEL") + ReleaseProfilingLockKHR = auto_cast GetInstanceProcAddr(instance, "vkReleaseProfilingLockKHR") + ResetCommandBuffer = auto_cast GetInstanceProcAddr(instance, "vkResetCommandBuffer") + ResetCommandPool = auto_cast GetInstanceProcAddr(instance, "vkResetCommandPool") + ResetDescriptorPool = auto_cast GetInstanceProcAddr(instance, "vkResetDescriptorPool") + ResetEvent = auto_cast GetInstanceProcAddr(instance, "vkResetEvent") + ResetFences = auto_cast GetInstanceProcAddr(instance, "vkResetFences") + ResetQueryPool = auto_cast GetInstanceProcAddr(instance, "vkResetQueryPool") + ResetQueryPoolEXT = auto_cast GetInstanceProcAddr(instance, "vkResetQueryPoolEXT") + SetDebugUtilsObjectNameEXT = auto_cast GetInstanceProcAddr(instance, "vkSetDebugUtilsObjectNameEXT") + SetDebugUtilsObjectTagEXT = auto_cast GetInstanceProcAddr(instance, "vkSetDebugUtilsObjectTagEXT") + SetDeviceMemoryPriorityEXT = auto_cast GetInstanceProcAddr(instance, "vkSetDeviceMemoryPriorityEXT") + SetEvent = auto_cast GetInstanceProcAddr(instance, "vkSetEvent") + SetHdrMetadataEXT = auto_cast GetInstanceProcAddr(instance, "vkSetHdrMetadataEXT") + SetLocalDimmingAMD = auto_cast GetInstanceProcAddr(instance, "vkSetLocalDimmingAMD") + SetPrivateData = auto_cast GetInstanceProcAddr(instance, "vkSetPrivateData") + SetPrivateDataEXT = auto_cast GetInstanceProcAddr(instance, "vkSetPrivateDataEXT") + SignalSemaphore = auto_cast GetInstanceProcAddr(instance, "vkSignalSemaphore") + SignalSemaphoreKHR = auto_cast GetInstanceProcAddr(instance, "vkSignalSemaphoreKHR") + TrimCommandPool = auto_cast GetInstanceProcAddr(instance, "vkTrimCommandPool") + TrimCommandPoolKHR = auto_cast GetInstanceProcAddr(instance, "vkTrimCommandPoolKHR") + UninitializePerformanceApiINTEL = auto_cast GetInstanceProcAddr(instance, "vkUninitializePerformanceApiINTEL") + UnmapMemory = auto_cast GetInstanceProcAddr(instance, "vkUnmapMemory") + UpdateDescriptorSetWithTemplate = auto_cast GetInstanceProcAddr(instance, "vkUpdateDescriptorSetWithTemplate") + UpdateDescriptorSetWithTemplateKHR = auto_cast GetInstanceProcAddr(instance, "vkUpdateDescriptorSetWithTemplateKHR") + UpdateDescriptorSets = auto_cast GetInstanceProcAddr(instance, "vkUpdateDescriptorSets") + WaitForFences = auto_cast GetInstanceProcAddr(instance, "vkWaitForFences") + WaitForPresentKHR = auto_cast GetInstanceProcAddr(instance, "vkWaitForPresentKHR") + WaitSemaphores = auto_cast GetInstanceProcAddr(instance, "vkWaitSemaphores") + WaitSemaphoresKHR = auto_cast GetInstanceProcAddr(instance, "vkWaitSemaphoresKHR") + WriteAccelerationStructuresPropertiesKHR = auto_cast GetInstanceProcAddr(instance, "vkWriteAccelerationStructuresPropertiesKHR") +} + +load_proc_addresses_global :: proc(vk_get_instance_proc_addr: rawptr) { + GetInstanceProcAddr = auto_cast vk_get_instance_proc_addr + + CreateInstance = auto_cast GetInstanceProcAddr(nil, "vkCreateInstance") + DebugUtilsMessengerCallbackEXT = auto_cast GetInstanceProcAddr(nil, "vkDebugUtilsMessengerCallbackEXT") + DeviceMemoryReportCallbackEXT = auto_cast GetInstanceProcAddr(nil, "vkDeviceMemoryReportCallbackEXT") + EnumerateInstanceExtensionProperties = auto_cast GetInstanceProcAddr(nil, "vkEnumerateInstanceExtensionProperties") + EnumerateInstanceLayerProperties = auto_cast GetInstanceProcAddr(nil, "vkEnumerateInstanceLayerProperties") + EnumerateInstanceVersion = auto_cast GetInstanceProcAddr(nil, "vkEnumerateInstanceVersion") + GetInstanceProcAddr = auto_cast GetInstanceProcAddr(nil, "vkGetInstanceProcAddr") +} + +load_proc_addresses :: proc{ + load_proc_addresses_global, + load_proc_addresses_instance, + load_proc_addresses_device, + load_proc_addresses_device_vtable, + load_proc_addresses_custom, +} + diff --git a/vendor/vulkan/structs.odin b/vendor/vulkan/structs.odin index 3bc3e1935..76b14a492 100644 --- a/vendor/vulkan/structs.odin +++ b/vendor/vulkan/structs.odin @@ -1,5865 +1,5877 @@ -// -// Vulkan wrapper generated from "https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/master/include/vulkan/vulkan_core.h" -// -package vulkan - -import "core:c" - -when ODIN_OS == .Windows { - import win32 "core:sys/windows" - - HINSTANCE :: win32.HINSTANCE - HWND :: win32.HWND - HMONITOR :: win32.HMONITOR - HANDLE :: win32.HANDLE - LPCWSTR :: win32.LPCWSTR - SECURITY_ATTRIBUTES :: win32.SECURITY_ATTRIBUTES - DWORD :: win32.DWORD - LONG :: win32.LONG - LUID :: win32.LUID -} else { - HINSTANCE :: distinct rawptr - HWND :: distinct rawptr - HMONITOR :: distinct rawptr - HANDLE :: distinct rawptr - LPCWSTR :: ^u16 - SECURITY_ATTRIBUTES :: struct {} - DWORD :: u32 - LONG :: c.long - LUID :: struct { - LowPart: DWORD, - HighPart: LONG, - } -} - -CAMetalLayer :: struct {} - -/********************************/ - -Extent2D :: struct { - width: u32, - height: u32, -} - -Extent3D :: struct { - width: u32, - height: u32, - depth: u32, -} - -Offset2D :: struct { - x: i32, - y: i32, -} - -Offset3D :: struct { - x: i32, - y: i32, - z: i32, -} - -Rect2D :: struct { - offset: Offset2D, - extent: Extent2D, -} - -BaseInStructure :: struct { - sType: StructureType, - pNext: ^BaseInStructure, -} - -BaseOutStructure :: struct { - sType: StructureType, - pNext: ^BaseOutStructure, -} - -BufferMemoryBarrier :: struct { - sType: StructureType, - pNext: rawptr, - srcAccessMask: AccessFlags, - dstAccessMask: AccessFlags, - srcQueueFamilyIndex: u32, - dstQueueFamilyIndex: u32, - buffer: Buffer, - offset: DeviceSize, - size: DeviceSize, -} - -DispatchIndirectCommand :: struct { - x: u32, - y: u32, - z: u32, -} - -DrawIndexedIndirectCommand :: struct { - indexCount: u32, - instanceCount: u32, - firstIndex: u32, - vertexOffset: i32, - firstInstance: u32, -} - -DrawIndirectCommand :: struct { - vertexCount: u32, - instanceCount: u32, - firstVertex: u32, - firstInstance: u32, -} - -ImageSubresourceRange :: struct { - aspectMask: ImageAspectFlags, - baseMipLevel: u32, - levelCount: u32, - baseArrayLayer: u32, - layerCount: u32, -} - -ImageMemoryBarrier :: struct { - sType: StructureType, - pNext: rawptr, - srcAccessMask: AccessFlags, - dstAccessMask: AccessFlags, - oldLayout: ImageLayout, - newLayout: ImageLayout, - srcQueueFamilyIndex: u32, - dstQueueFamilyIndex: u32, - image: Image, - subresourceRange: ImageSubresourceRange, -} - -MemoryBarrier :: struct { - sType: StructureType, - pNext: rawptr, - srcAccessMask: AccessFlags, - dstAccessMask: AccessFlags, -} - -PipelineCacheHeaderVersionOne :: struct { - headerSize: u32, - headerVersion: PipelineCacheHeaderVersion, - vendorID: u32, - deviceID: u32, - pipelineCacheUUID: [UUID_SIZE]u8, -} - -AllocationCallbacks :: struct { - pUserData: rawptr, - pfnAllocation: ProcAllocationFunction, - pfnReallocation: ProcReallocationFunction, - pfnFree: ProcFreeFunction, - pfnInternalAllocation: ProcInternalAllocationNotification, - pfnInternalFree: ProcInternalFreeNotification, -} - -ApplicationInfo :: struct { - sType: StructureType, - pNext: rawptr, - pApplicationName: cstring, - applicationVersion: u32, - pEngineName: cstring, - engineVersion: u32, - apiVersion: u32, -} - -FormatProperties :: struct { - linearTilingFeatures: FormatFeatureFlags, - optimalTilingFeatures: FormatFeatureFlags, - bufferFeatures: FormatFeatureFlags, -} - -ImageFormatProperties :: struct { - maxExtent: Extent3D, - maxMipLevels: u32, - maxArrayLayers: u32, - sampleCounts: SampleCountFlags, - maxResourceSize: DeviceSize, -} - -InstanceCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: InstanceCreateFlags, - pApplicationInfo: ^ApplicationInfo, - enabledLayerCount: u32, - ppEnabledLayerNames: [^]cstring, - enabledExtensionCount: u32, - ppEnabledExtensionNames: [^]cstring, -} - -MemoryHeap :: struct { - size: DeviceSize, - flags: MemoryHeapFlags, -} - -MemoryType :: struct { - propertyFlags: MemoryPropertyFlags, - heapIndex: u32, -} - -PhysicalDeviceFeatures :: struct { - robustBufferAccess: b32, - fullDrawIndexUint32: b32, - imageCubeArray: b32, - independentBlend: b32, - geometryShader: b32, - tessellationShader: b32, - sampleRateShading: b32, - dualSrcBlend: b32, - logicOp: b32, - multiDrawIndirect: b32, - drawIndirectFirstInstance: b32, - depthClamp: b32, - depthBiasClamp: b32, - fillModeNonSolid: b32, - depthBounds: b32, - wideLines: b32, - largePoints: b32, - alphaToOne: b32, - multiViewport: b32, - samplerAnisotropy: b32, - textureCompressionETC2: b32, - textureCompressionASTC_LDR: b32, - textureCompressionBC: b32, - occlusionQueryPrecise: b32, - pipelineStatisticsQuery: b32, - vertexPipelineStoresAndAtomics: b32, - fragmentStoresAndAtomics: b32, - shaderTessellationAndGeometryPointSize: b32, - shaderImageGatherExtended: b32, - shaderStorageImageExtendedFormats: b32, - shaderStorageImageMultisample: b32, - shaderStorageImageReadWithoutFormat: b32, - shaderStorageImageWriteWithoutFormat: b32, - shaderUniformBufferArrayDynamicIndexing: b32, - shaderSampledImageArrayDynamicIndexing: b32, - shaderStorageBufferArrayDynamicIndexing: b32, - shaderStorageImageArrayDynamicIndexing: b32, - shaderClipDistance: b32, - shaderCullDistance: b32, - shaderFloat64: b32, - shaderInt64: b32, - shaderInt16: b32, - shaderResourceResidency: b32, - shaderResourceMinLod: b32, - sparseBinding: b32, - sparseResidencyBuffer: b32, - sparseResidencyImage2D: b32, - sparseResidencyImage3D: b32, - sparseResidency2Samples: b32, - sparseResidency4Samples: b32, - sparseResidency8Samples: b32, - sparseResidency16Samples: b32, - sparseResidencyAliased: b32, - variableMultisampleRate: b32, - inheritedQueries: b32, -} - -PhysicalDeviceLimits :: struct { - maxImageDimension1D: u32, - maxImageDimension2D: u32, - maxImageDimension3D: u32, - maxImageDimensionCube: u32, - maxImageArrayLayers: u32, - maxTexelBufferElements: u32, - maxUniformBufferRange: u32, - maxStorageBufferRange: u32, - maxPushConstantsSize: u32, - maxMemoryAllocationCount: u32, - maxSamplerAllocationCount: u32, - bufferImageGranularity: DeviceSize, - sparseAddressSpaceSize: DeviceSize, - maxBoundDescriptorSets: u32, - maxPerStageDescriptorSamplers: u32, - maxPerStageDescriptorUniformBuffers: u32, - maxPerStageDescriptorStorageBuffers: u32, - maxPerStageDescriptorSampledImages: u32, - maxPerStageDescriptorStorageImages: u32, - maxPerStageDescriptorInputAttachments: u32, - maxPerStageResources: u32, - maxDescriptorSetSamplers: u32, - maxDescriptorSetUniformBuffers: u32, - maxDescriptorSetUniformBuffersDynamic: u32, - maxDescriptorSetStorageBuffers: u32, - maxDescriptorSetStorageBuffersDynamic: u32, - maxDescriptorSetSampledImages: u32, - maxDescriptorSetStorageImages: u32, - maxDescriptorSetInputAttachments: u32, - maxVertexInputAttributes: u32, - maxVertexInputBindings: u32, - maxVertexInputAttributeOffset: u32, - maxVertexInputBindingStride: u32, - maxVertexOutputComponents: u32, - maxTessellationGenerationLevel: u32, - maxTessellationPatchSize: u32, - maxTessellationControlPerVertexInputComponents: u32, - maxTessellationControlPerVertexOutputComponents: u32, - maxTessellationControlPerPatchOutputComponents: u32, - maxTessellationControlTotalOutputComponents: u32, - maxTessellationEvaluationInputComponents: u32, - maxTessellationEvaluationOutputComponents: u32, - maxGeometryShaderInvocations: u32, - maxGeometryInputComponents: u32, - maxGeometryOutputComponents: u32, - maxGeometryOutputVertices: u32, - maxGeometryTotalOutputComponents: u32, - maxFragmentInputComponents: u32, - maxFragmentOutputAttachments: u32, - maxFragmentDualSrcAttachments: u32, - maxFragmentCombinedOutputResources: u32, - maxComputeSharedMemorySize: u32, - maxComputeWorkGroupCount: [3]u32, - maxComputeWorkGroupInvocations: u32, - maxComputeWorkGroupSize: [3]u32, - subPixelPrecisionBits: u32, - subTexelPrecisionBits: u32, - mipmapPrecisionBits: u32, - maxDrawIndexedIndexValue: u32, - maxDrawIndirectCount: u32, - maxSamplerLodBias: f32, - maxSamplerAnisotropy: f32, - maxViewports: u32, - maxViewportDimensions: [2]u32, - viewportBoundsRange: [2]f32, - viewportSubPixelBits: u32, - minMemoryMapAlignment: int, - minTexelBufferOffsetAlignment: DeviceSize, - minUniformBufferOffsetAlignment: DeviceSize, - minStorageBufferOffsetAlignment: DeviceSize, - minTexelOffset: i32, - maxTexelOffset: u32, - minTexelGatherOffset: i32, - maxTexelGatherOffset: u32, - minInterpolationOffset: f32, - maxInterpolationOffset: f32, - subPixelInterpolationOffsetBits: u32, - maxFramebufferWidth: u32, - maxFramebufferHeight: u32, - maxFramebufferLayers: u32, - framebufferColorSampleCounts: SampleCountFlags, - framebufferDepthSampleCounts: SampleCountFlags, - framebufferStencilSampleCounts: SampleCountFlags, - framebufferNoAttachmentsSampleCounts: SampleCountFlags, - maxColorAttachments: u32, - sampledImageColorSampleCounts: SampleCountFlags, - sampledImageIntegerSampleCounts: SampleCountFlags, - sampledImageDepthSampleCounts: SampleCountFlags, - sampledImageStencilSampleCounts: SampleCountFlags, - storageImageSampleCounts: SampleCountFlags, - maxSampleMaskWords: u32, - timestampComputeAndGraphics: b32, - timestampPeriod: f32, - maxClipDistances: u32, - maxCullDistances: u32, - maxCombinedClipAndCullDistances: u32, - discreteQueuePriorities: u32, - pointSizeRange: [2]f32, - lineWidthRange: [2]f32, - pointSizeGranularity: f32, - lineWidthGranularity: f32, - strictLines: b32, - standardSampleLocations: b32, - optimalBufferCopyOffsetAlignment: DeviceSize, - optimalBufferCopyRowPitchAlignment: DeviceSize, - nonCoherentAtomSize: DeviceSize, -} - -PhysicalDeviceMemoryProperties :: struct { - memoryTypeCount: u32, - memoryTypes: [MAX_MEMORY_TYPES]MemoryType, - memoryHeapCount: u32, - memoryHeaps: [MAX_MEMORY_HEAPS]MemoryHeap, -} - -PhysicalDeviceSparseProperties :: struct { - residencyStandard2DBlockShape: b32, - residencyStandard2DMultisampleBlockShape: b32, - residencyStandard3DBlockShape: b32, - residencyAlignedMipSize: b32, - residencyNonResidentStrict: b32, -} - -PhysicalDeviceProperties :: struct { - apiVersion: u32, - driverVersion: u32, - vendorID: u32, - deviceID: u32, - deviceType: PhysicalDeviceType, - deviceName: [MAX_PHYSICAL_DEVICE_NAME_SIZE]byte, - pipelineCacheUUID: [UUID_SIZE]u8, - limits: PhysicalDeviceLimits, - sparseProperties: PhysicalDeviceSparseProperties, -} - -QueueFamilyProperties :: struct { - queueFlags: QueueFlags, - queueCount: u32, - timestampValidBits: u32, - minImageTransferGranularity: Extent3D, -} - -DeviceQueueCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: DeviceQueueCreateFlags, - queueFamilyIndex: u32, - queueCount: u32, - pQueuePriorities: [^]f32, -} - -DeviceCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: DeviceCreateFlags, - queueCreateInfoCount: u32, - pQueueCreateInfos: [^]DeviceQueueCreateInfo, - enabledLayerCount: u32, - ppEnabledLayerNames: [^]cstring, - enabledExtensionCount: u32, - ppEnabledExtensionNames: [^]cstring, - pEnabledFeatures: [^]PhysicalDeviceFeatures, -} - -ExtensionProperties :: struct { - extensionName: [MAX_EXTENSION_NAME_SIZE]byte, - specVersion: u32, -} - -LayerProperties :: struct { - layerName: [MAX_EXTENSION_NAME_SIZE]byte, - specVersion: u32, - implementationVersion: u32, - description: [MAX_DESCRIPTION_SIZE]byte, -} - -SubmitInfo :: struct { - sType: StructureType, - pNext: rawptr, - waitSemaphoreCount: u32, - pWaitSemaphores: [^]Semaphore, - pWaitDstStageMask: [^]PipelineStageFlags, - commandBufferCount: u32, - pCommandBuffers: [^]CommandBuffer, - signalSemaphoreCount: u32, - pSignalSemaphores: [^]Semaphore, -} - -MappedMemoryRange :: struct { - sType: StructureType, - pNext: rawptr, - memory: DeviceMemory, - offset: DeviceSize, - size: DeviceSize, -} - -MemoryAllocateInfo :: struct { - sType: StructureType, - pNext: rawptr, - allocationSize: DeviceSize, - memoryTypeIndex: u32, -} - -MemoryRequirements :: struct { - size: DeviceSize, - alignment: DeviceSize, - memoryTypeBits: u32, -} - -SparseMemoryBind :: struct { - resourceOffset: DeviceSize, - size: DeviceSize, - memory: DeviceMemory, - memoryOffset: DeviceSize, - flags: SparseMemoryBindFlags, -} - -SparseBufferMemoryBindInfo :: struct { - buffer: Buffer, - bindCount: u32, - pBinds: [^]SparseMemoryBind, -} - -SparseImageOpaqueMemoryBindInfo :: struct { - image: Image, - bindCount: u32, - pBinds: [^]SparseMemoryBind, -} - -ImageSubresource :: struct { - aspectMask: ImageAspectFlags, - mipLevel: u32, - arrayLayer: u32, -} - -SparseImageMemoryBind :: struct { - subresource: ImageSubresource, - offset: Offset3D, - extent: Extent3D, - memory: DeviceMemory, - memoryOffset: DeviceSize, - flags: SparseMemoryBindFlags, -} - -SparseImageMemoryBindInfo :: struct { - image: Image, - bindCount: u32, - pBinds: [^]SparseImageMemoryBind, -} - -BindSparseInfo :: struct { - sType: StructureType, - pNext: rawptr, - waitSemaphoreCount: u32, - pWaitSemaphores: [^]Semaphore, - bufferBindCount: u32, - pBufferBinds: [^]SparseBufferMemoryBindInfo, - imageOpaqueBindCount: u32, - pImageOpaqueBinds: [^]SparseImageOpaqueMemoryBindInfo, - imageBindCount: u32, - pImageBinds: [^]SparseImageMemoryBindInfo, - signalSemaphoreCount: u32, - pSignalSemaphores: [^]Semaphore, -} - -SparseImageFormatProperties :: struct { - aspectMask: ImageAspectFlags, - imageGranularity: Extent3D, - flags: SparseImageFormatFlags, -} - -SparseImageMemoryRequirements :: struct { - formatProperties: SparseImageFormatProperties, - imageMipTailFirstLod: u32, - imageMipTailSize: DeviceSize, - imageMipTailOffset: DeviceSize, - imageMipTailStride: DeviceSize, -} - -FenceCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: FenceCreateFlags, -} - -SemaphoreCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: SemaphoreCreateFlags, -} - -EventCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: EventCreateFlags, -} - -QueryPoolCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: QueryPoolCreateFlags, - queryType: QueryType, - queryCount: u32, - pipelineStatistics: QueryPipelineStatisticFlags, -} - -BufferCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: BufferCreateFlags, - size: DeviceSize, - usage: BufferUsageFlags, - sharingMode: SharingMode, - queueFamilyIndexCount: u32, - pQueueFamilyIndices: [^]u32, -} - -BufferViewCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: BufferViewCreateFlags, - buffer: Buffer, - format: Format, - offset: DeviceSize, - range: DeviceSize, -} - -ImageCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: ImageCreateFlags, - imageType: ImageType, - format: Format, - extent: Extent3D, - mipLevels: u32, - arrayLayers: u32, - samples: SampleCountFlags, - tiling: ImageTiling, - usage: ImageUsageFlags, - sharingMode: SharingMode, - queueFamilyIndexCount: u32, - pQueueFamilyIndices: [^]u32, - initialLayout: ImageLayout, -} - -SubresourceLayout :: struct { - offset: DeviceSize, - size: DeviceSize, - rowPitch: DeviceSize, - arrayPitch: DeviceSize, - depthPitch: DeviceSize, -} - -ComponentMapping :: struct { - r: ComponentSwizzle, - g: ComponentSwizzle, - b: ComponentSwizzle, - a: ComponentSwizzle, -} - -ImageViewCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: ImageViewCreateFlags, - image: Image, - viewType: ImageViewType, - format: Format, - components: ComponentMapping, - subresourceRange: ImageSubresourceRange, -} - -ShaderModuleCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: ShaderModuleCreateFlags, - codeSize: int, - pCode: ^u32, -} - -PipelineCacheCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: PipelineCacheCreateFlags, - initialDataSize: int, - pInitialData: rawptr, -} - -SpecializationMapEntry :: struct { - constantID: u32, - offset: u32, - size: int, -} - -SpecializationInfo :: struct { - mapEntryCount: u32, - pMapEntries: [^]SpecializationMapEntry, - dataSize: int, - pData: rawptr, -} - -PipelineShaderStageCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: PipelineShaderStageCreateFlags, - stage: ShaderStageFlags, - module: ShaderModule, - pName: cstring, - pSpecializationInfo: ^SpecializationInfo, -} - -ComputePipelineCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: PipelineCreateFlags, - stage: PipelineShaderStageCreateInfo, - layout: PipelineLayout, - basePipelineHandle: Pipeline, - basePipelineIndex: i32, -} - -VertexInputBindingDescription :: struct { - binding: u32, - stride: u32, - inputRate: VertexInputRate, -} - -VertexInputAttributeDescription :: struct { - location: u32, - binding: u32, - format: Format, - offset: u32, -} - -PipelineVertexInputStateCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: PipelineVertexInputStateCreateFlags, - vertexBindingDescriptionCount: u32, - pVertexBindingDescriptions: [^]VertexInputBindingDescription, - vertexAttributeDescriptionCount: u32, - pVertexAttributeDescriptions: [^]VertexInputAttributeDescription, -} - -PipelineInputAssemblyStateCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: PipelineInputAssemblyStateCreateFlags, - topology: PrimitiveTopology, - primitiveRestartEnable: b32, -} - -PipelineTessellationStateCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: PipelineTessellationStateCreateFlags, - patchControlPoints: u32, -} - -Viewport :: struct { - x: f32, - y: f32, - width: f32, - height: f32, - minDepth: f32, - maxDepth: f32, -} - -PipelineViewportStateCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: PipelineViewportStateCreateFlags, - viewportCount: u32, - pViewports: [^]Viewport, - scissorCount: u32, - pScissors: [^]Rect2D, -} - -PipelineRasterizationStateCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: PipelineRasterizationStateCreateFlags, - depthClampEnable: b32, - rasterizerDiscardEnable: b32, - polygonMode: PolygonMode, - cullMode: CullModeFlags, - frontFace: FrontFace, - depthBiasEnable: b32, - depthBiasConstantFactor: f32, - depthBiasClamp: f32, - depthBiasSlopeFactor: f32, - lineWidth: f32, -} - -PipelineMultisampleStateCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: PipelineMultisampleStateCreateFlags, - rasterizationSamples: SampleCountFlags, - sampleShadingEnable: b32, - minSampleShading: f32, - pSampleMask: ^SampleMask, - alphaToCoverageEnable: b32, - alphaToOneEnable: b32, -} - -StencilOpState :: struct { - failOp: StencilOp, - passOp: StencilOp, - depthFailOp: StencilOp, - compareOp: CompareOp, - compareMask: u32, - writeMask: u32, - reference: u32, -} - -PipelineDepthStencilStateCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: PipelineDepthStencilStateCreateFlags, - depthTestEnable: b32, - depthWriteEnable: b32, - depthCompareOp: CompareOp, - depthBoundsTestEnable: b32, - stencilTestEnable: b32, - front: StencilOpState, - back: StencilOpState, - minDepthBounds: f32, - maxDepthBounds: f32, -} - -PipelineColorBlendAttachmentState :: struct { - blendEnable: b32, - srcColorBlendFactor: BlendFactor, - dstColorBlendFactor: BlendFactor, - colorBlendOp: BlendOp, - srcAlphaBlendFactor: BlendFactor, - dstAlphaBlendFactor: BlendFactor, - alphaBlendOp: BlendOp, - colorWriteMask: ColorComponentFlags, -} - -PipelineColorBlendStateCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: PipelineColorBlendStateCreateFlags, - logicOpEnable: b32, - logicOp: LogicOp, - attachmentCount: u32, - pAttachments: [^]PipelineColorBlendAttachmentState, - blendConstants: [4]f32, -} - -PipelineDynamicStateCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: PipelineDynamicStateCreateFlags, - dynamicStateCount: u32, - pDynamicStates: [^]DynamicState, -} - -GraphicsPipelineCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: PipelineCreateFlags, - stageCount: u32, - pStages: [^]PipelineShaderStageCreateInfo, - pVertexInputState: ^PipelineVertexInputStateCreateInfo, - pInputAssemblyState: ^PipelineInputAssemblyStateCreateInfo, - pTessellationState: ^PipelineTessellationStateCreateInfo, - pViewportState: ^PipelineViewportStateCreateInfo, - pRasterizationState: ^PipelineRasterizationStateCreateInfo, - pMultisampleState: ^PipelineMultisampleStateCreateInfo, - pDepthStencilState: ^PipelineDepthStencilStateCreateInfo, - pColorBlendState: ^PipelineColorBlendStateCreateInfo, - pDynamicState: ^PipelineDynamicStateCreateInfo, - layout: PipelineLayout, - renderPass: RenderPass, - subpass: u32, - basePipelineHandle: Pipeline, - basePipelineIndex: i32, -} - -PushConstantRange :: struct { - stageFlags: ShaderStageFlags, - offset: u32, - size: u32, -} - -PipelineLayoutCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: PipelineLayoutCreateFlags, - setLayoutCount: u32, - pSetLayouts: [^]DescriptorSetLayout, - pushConstantRangeCount: u32, - pPushConstantRanges: [^]PushConstantRange, -} - -SamplerCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: SamplerCreateFlags, - magFilter: Filter, - minFilter: Filter, - mipmapMode: SamplerMipmapMode, - addressModeU: SamplerAddressMode, - addressModeV: SamplerAddressMode, - addressModeW: SamplerAddressMode, - mipLodBias: f32, - anisotropyEnable: b32, - maxAnisotropy: f32, - compareEnable: b32, - compareOp: CompareOp, - minLod: f32, - maxLod: f32, - borderColor: BorderColor, - unnormalizedCoordinates: b32, -} - -CopyDescriptorSet :: struct { - sType: StructureType, - pNext: rawptr, - srcSet: DescriptorSet, - srcBinding: u32, - srcArrayElement: u32, - dstSet: DescriptorSet, - dstBinding: u32, - dstArrayElement: u32, - descriptorCount: u32, -} - -DescriptorBufferInfo :: struct { - buffer: Buffer, - offset: DeviceSize, - range: DeviceSize, -} - -DescriptorImageInfo :: struct { - sampler: Sampler, - imageView: ImageView, - imageLayout: ImageLayout, -} - -DescriptorPoolSize :: struct { - type: DescriptorType, - descriptorCount: u32, -} - -DescriptorPoolCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: DescriptorPoolCreateFlags, - maxSets: u32, - poolSizeCount: u32, - pPoolSizes: [^]DescriptorPoolSize, -} - -DescriptorSetAllocateInfo :: struct { - sType: StructureType, - pNext: rawptr, - descriptorPool: DescriptorPool, - descriptorSetCount: u32, - pSetLayouts: [^]DescriptorSetLayout, -} - -DescriptorSetLayoutBinding :: struct { - binding: u32, - descriptorType: DescriptorType, - descriptorCount: u32, - stageFlags: ShaderStageFlags, - pImmutableSamplers: [^]Sampler, -} - -DescriptorSetLayoutCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: DescriptorSetLayoutCreateFlags, - bindingCount: u32, - pBindings: [^]DescriptorSetLayoutBinding, -} - -WriteDescriptorSet :: struct { - sType: StructureType, - pNext: rawptr, - dstSet: DescriptorSet, - dstBinding: u32, - dstArrayElement: u32, - descriptorCount: u32, - descriptorType: DescriptorType, - pImageInfo: ^DescriptorImageInfo, - pBufferInfo: ^DescriptorBufferInfo, - pTexelBufferView: ^BufferView, -} - -AttachmentDescription :: struct { - flags: AttachmentDescriptionFlags, - format: Format, - samples: SampleCountFlags, - loadOp: AttachmentLoadOp, - storeOp: AttachmentStoreOp, - stencilLoadOp: AttachmentLoadOp, - stencilStoreOp: AttachmentStoreOp, - initialLayout: ImageLayout, - finalLayout: ImageLayout, -} - -AttachmentReference :: struct { - attachment: u32, - layout: ImageLayout, -} - -FramebufferCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: FramebufferCreateFlags, - renderPass: RenderPass, - attachmentCount: u32, - pAttachments: [^]ImageView, - width: u32, - height: u32, - layers: u32, -} - -SubpassDescription :: struct { - flags: SubpassDescriptionFlags, - pipelineBindPoint: PipelineBindPoint, - inputAttachmentCount: u32, - pInputAttachments: [^]AttachmentReference, - colorAttachmentCount: u32, - pColorAttachments: [^]AttachmentReference, - pResolveAttachments: [^]AttachmentReference, - pDepthStencilAttachment: ^AttachmentReference, - preserveAttachmentCount: u32, - pPreserveAttachments: [^]u32, -} - -SubpassDependency :: struct { - srcSubpass: u32, - dstSubpass: u32, - srcStageMask: PipelineStageFlags, - dstStageMask: PipelineStageFlags, - srcAccessMask: AccessFlags, - dstAccessMask: AccessFlags, - dependencyFlags: DependencyFlags, -} - -RenderPassCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: RenderPassCreateFlags, - attachmentCount: u32, - pAttachments: [^]AttachmentDescription, - subpassCount: u32, - pSubpasses: [^]SubpassDescription, - dependencyCount: u32, - pDependencies: [^]SubpassDependency, -} - -CommandPoolCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: CommandPoolCreateFlags, - queueFamilyIndex: u32, -} - -CommandBufferAllocateInfo :: struct { - sType: StructureType, - pNext: rawptr, - commandPool: CommandPool, - level: CommandBufferLevel, - commandBufferCount: u32, -} - -CommandBufferInheritanceInfo :: struct { - sType: StructureType, - pNext: rawptr, - renderPass: RenderPass, - subpass: u32, - framebuffer: Framebuffer, - occlusionQueryEnable: b32, - queryFlags: QueryControlFlags, - pipelineStatistics: QueryPipelineStatisticFlags, -} - -CommandBufferBeginInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: CommandBufferUsageFlags, - pInheritanceInfo: ^CommandBufferInheritanceInfo, -} - -BufferCopy :: struct { - srcOffset: DeviceSize, - dstOffset: DeviceSize, - size: DeviceSize, -} - -ImageSubresourceLayers :: struct { - aspectMask: ImageAspectFlags, - mipLevel: u32, - baseArrayLayer: u32, - layerCount: u32, -} - -BufferImageCopy :: struct { - bufferOffset: DeviceSize, - bufferRowLength: u32, - bufferImageHeight: u32, - imageSubresource: ImageSubresourceLayers, - imageOffset: Offset3D, - imageExtent: Extent3D, -} - -ClearColorValue :: struct #raw_union { - float32: [4]f32, - int32: [4]i32, - uint32: [4]u32, -} - -ClearDepthStencilValue :: struct { - depth: f32, - stencil: u32, -} - -ClearValue :: struct #raw_union { - color: ClearColorValue, - depthStencil: ClearDepthStencilValue, -} - -ClearAttachment :: struct { - aspectMask: ImageAspectFlags, - colorAttachment: u32, - clearValue: ClearValue, -} - -ClearRect :: struct { - rect: Rect2D, - baseArrayLayer: u32, - layerCount: u32, -} - -ImageBlit :: struct { - srcSubresource: ImageSubresourceLayers, - srcOffsets: [2]Offset3D, - dstSubresource: ImageSubresourceLayers, - dstOffsets: [2]Offset3D, -} - -ImageCopy :: struct { - srcSubresource: ImageSubresourceLayers, - srcOffset: Offset3D, - dstSubresource: ImageSubresourceLayers, - dstOffset: Offset3D, - extent: Extent3D, -} - -ImageResolve :: struct { - srcSubresource: ImageSubresourceLayers, - srcOffset: Offset3D, - dstSubresource: ImageSubresourceLayers, - dstOffset: Offset3D, - extent: Extent3D, -} - -RenderPassBeginInfo :: struct { - sType: StructureType, - pNext: rawptr, - renderPass: RenderPass, - framebuffer: Framebuffer, - renderArea: Rect2D, - clearValueCount: u32, - pClearValues: [^]ClearValue, -} - -PhysicalDeviceSubgroupProperties :: struct { - sType: StructureType, - pNext: rawptr, - subgroupSize: u32, - supportedStages: ShaderStageFlags, - supportedOperations: SubgroupFeatureFlags, - quadOperationsInAllStages: b32, -} - -BindBufferMemoryInfo :: struct { - sType: StructureType, - pNext: rawptr, - buffer: Buffer, - memory: DeviceMemory, - memoryOffset: DeviceSize, -} - -BindImageMemoryInfo :: struct { - sType: StructureType, - pNext: rawptr, - image: Image, - memory: DeviceMemory, - memoryOffset: DeviceSize, -} - -PhysicalDevice16BitStorageFeatures :: struct { - sType: StructureType, - pNext: rawptr, - storageBuffer16BitAccess: b32, - uniformAndStorageBuffer16BitAccess: b32, - storagePushConstant16: b32, - storageInputOutput16: b32, -} - -MemoryDedicatedRequirements :: struct { - sType: StructureType, - pNext: rawptr, - prefersDedicatedAllocation: b32, - requiresDedicatedAllocation: b32, -} - -MemoryDedicatedAllocateInfo :: struct { - sType: StructureType, - pNext: rawptr, - image: Image, - buffer: Buffer, -} - -MemoryAllocateFlagsInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: MemoryAllocateFlags, - deviceMask: u32, -} - -DeviceGroupRenderPassBeginInfo :: struct { - sType: StructureType, - pNext: rawptr, - deviceMask: u32, - deviceRenderAreaCount: u32, - pDeviceRenderAreas: [^]Rect2D, -} - -DeviceGroupCommandBufferBeginInfo :: struct { - sType: StructureType, - pNext: rawptr, - deviceMask: u32, -} - -DeviceGroupSubmitInfo :: struct { - sType: StructureType, - pNext: rawptr, - waitSemaphoreCount: u32, - pWaitSemaphoreDeviceIndices: [^]u32, - commandBufferCount: u32, - pCommandBufferDeviceMasks: [^]u32, - signalSemaphoreCount: u32, - pSignalSemaphoreDeviceIndices: [^]u32, -} - -DeviceGroupBindSparseInfo :: struct { - sType: StructureType, - pNext: rawptr, - resourceDeviceIndex: u32, - memoryDeviceIndex: u32, -} - -BindBufferMemoryDeviceGroupInfo :: struct { - sType: StructureType, - pNext: rawptr, - deviceIndexCount: u32, - pDeviceIndices: [^]u32, -} - -BindImageMemoryDeviceGroupInfo :: struct { - sType: StructureType, - pNext: rawptr, - deviceIndexCount: u32, - pDeviceIndices: [^]u32, - splitInstanceBindRegionCount: u32, - pSplitInstanceBindRegions: [^]Rect2D, -} - -PhysicalDeviceGroupProperties :: struct { - sType: StructureType, - pNext: rawptr, - physicalDeviceCount: u32, - physicalDevices: [MAX_DEVICE_GROUP_SIZE]PhysicalDevice, - subsetAllocation: b32, -} - -DeviceGroupDeviceCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - physicalDeviceCount: u32, - pPhysicalDevices: [^]PhysicalDevice, -} - -BufferMemoryRequirementsInfo2 :: struct { - sType: StructureType, - pNext: rawptr, - buffer: Buffer, -} - -ImageMemoryRequirementsInfo2 :: struct { - sType: StructureType, - pNext: rawptr, - image: Image, -} - -ImageSparseMemoryRequirementsInfo2 :: struct { - sType: StructureType, - pNext: rawptr, - image: Image, -} - -MemoryRequirements2 :: struct { - sType: StructureType, - pNext: rawptr, - memoryRequirements: MemoryRequirements, -} - -SparseImageMemoryRequirements2 :: struct { - sType: StructureType, - pNext: rawptr, - memoryRequirements: SparseImageMemoryRequirements, -} - -PhysicalDeviceFeatures2 :: struct { - sType: StructureType, - pNext: rawptr, - features: PhysicalDeviceFeatures, -} - -PhysicalDeviceProperties2 :: struct { - sType: StructureType, - pNext: rawptr, - properties: PhysicalDeviceProperties, -} - -FormatProperties2 :: struct { - sType: StructureType, - pNext: rawptr, - formatProperties: FormatProperties, -} - -ImageFormatProperties2 :: struct { - sType: StructureType, - pNext: rawptr, - imageFormatProperties: ImageFormatProperties, -} - -PhysicalDeviceImageFormatInfo2 :: struct { - sType: StructureType, - pNext: rawptr, - format: Format, - type: ImageType, - tiling: ImageTiling, - usage: ImageUsageFlags, - flags: ImageCreateFlags, -} - -QueueFamilyProperties2 :: struct { - sType: StructureType, - pNext: rawptr, - queueFamilyProperties: QueueFamilyProperties, -} - -PhysicalDeviceMemoryProperties2 :: struct { - sType: StructureType, - pNext: rawptr, - memoryProperties: PhysicalDeviceMemoryProperties, -} - -SparseImageFormatProperties2 :: struct { - sType: StructureType, - pNext: rawptr, - properties: SparseImageFormatProperties, -} - -PhysicalDeviceSparseImageFormatInfo2 :: struct { - sType: StructureType, - pNext: rawptr, - format: Format, - type: ImageType, - samples: SampleCountFlags, - usage: ImageUsageFlags, - tiling: ImageTiling, -} - -PhysicalDevicePointClippingProperties :: struct { - sType: StructureType, - pNext: rawptr, - pointClippingBehavior: PointClippingBehavior, -} - -InputAttachmentAspectReference :: struct { - subpass: u32, - inputAttachmentIndex: u32, - aspectMask: ImageAspectFlags, -} - -RenderPassInputAttachmentAspectCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - aspectReferenceCount: u32, - pAspectReferences: [^]InputAttachmentAspectReference, -} - -ImageViewUsageCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - usage: ImageUsageFlags, -} - -PipelineTessellationDomainOriginStateCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - domainOrigin: TessellationDomainOrigin, -} - -RenderPassMultiviewCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - subpassCount: u32, - pViewMasks: [^]u32, - dependencyCount: u32, - pViewOffsets: [^]i32, - correlationMaskCount: u32, - pCorrelationMasks: [^]u32, -} - -PhysicalDeviceMultiviewFeatures :: struct { - sType: StructureType, - pNext: rawptr, - multiview: b32, - multiviewGeometryShader: b32, - multiviewTessellationShader: b32, -} - -PhysicalDeviceMultiviewProperties :: struct { - sType: StructureType, - pNext: rawptr, - maxMultiviewViewCount: u32, - maxMultiviewInstanceIndex: u32, -} - -PhysicalDeviceVariablePointersFeatures :: struct { - sType: StructureType, - pNext: rawptr, - variablePointersStorageBuffer: b32, - variablePointers: b32, -} - -PhysicalDeviceProtectedMemoryFeatures :: struct { - sType: StructureType, - pNext: rawptr, - protectedMemory: b32, -} - -PhysicalDeviceProtectedMemoryProperties :: struct { - sType: StructureType, - pNext: rawptr, - protectedNoFault: b32, -} - -DeviceQueueInfo2 :: struct { - sType: StructureType, - pNext: rawptr, - flags: DeviceQueueCreateFlags, - queueFamilyIndex: u32, - queueIndex: u32, -} - -ProtectedSubmitInfo :: struct { - sType: StructureType, - pNext: rawptr, - protectedSubmit: b32, -} - -SamplerYcbcrConversionCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - format: Format, - ycbcrModel: SamplerYcbcrModelConversion, - ycbcrRange: SamplerYcbcrRange, - components: ComponentMapping, - xChromaOffset: ChromaLocation, - yChromaOffset: ChromaLocation, - chromaFilter: Filter, - forceExplicitReconstruction: b32, -} - -SamplerYcbcrConversionInfo :: struct { - sType: StructureType, - pNext: rawptr, - conversion: SamplerYcbcrConversion, -} - -BindImagePlaneMemoryInfo :: struct { - sType: StructureType, - pNext: rawptr, - planeAspect: ImageAspectFlags, -} - -ImagePlaneMemoryRequirementsInfo :: struct { - sType: StructureType, - pNext: rawptr, - planeAspect: ImageAspectFlags, -} - -PhysicalDeviceSamplerYcbcrConversionFeatures :: struct { - sType: StructureType, - pNext: rawptr, - samplerYcbcrConversion: b32, -} - -SamplerYcbcrConversionImageFormatProperties :: struct { - sType: StructureType, - pNext: rawptr, - combinedImageSamplerDescriptorCount: u32, -} - -DescriptorUpdateTemplateEntry :: struct { - dstBinding: u32, - dstArrayElement: u32, - descriptorCount: u32, - descriptorType: DescriptorType, - offset: int, - stride: int, -} - -DescriptorUpdateTemplateCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: DescriptorUpdateTemplateCreateFlags, - descriptorUpdateEntryCount: u32, - pDescriptorUpdateEntries: [^]DescriptorUpdateTemplateEntry, - templateType: DescriptorUpdateTemplateType, - descriptorSetLayout: DescriptorSetLayout, - pipelineBindPoint: PipelineBindPoint, - pipelineLayout: PipelineLayout, - set: u32, -} - -ExternalMemoryProperties :: struct { - externalMemoryFeatures: ExternalMemoryFeatureFlags, - exportFromImportedHandleTypes: ExternalMemoryHandleTypeFlags, - compatibleHandleTypes: ExternalMemoryHandleTypeFlags, -} - -PhysicalDeviceExternalImageFormatInfo :: struct { - sType: StructureType, - pNext: rawptr, - handleType: ExternalMemoryHandleTypeFlags, -} - -ExternalImageFormatProperties :: struct { - sType: StructureType, - pNext: rawptr, - externalMemoryProperties: ExternalMemoryProperties, -} - -PhysicalDeviceExternalBufferInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: BufferCreateFlags, - usage: BufferUsageFlags, - handleType: ExternalMemoryHandleTypeFlags, -} - -ExternalBufferProperties :: struct { - sType: StructureType, - pNext: rawptr, - externalMemoryProperties: ExternalMemoryProperties, -} - -PhysicalDeviceIDProperties :: struct { - sType: StructureType, - pNext: rawptr, - deviceUUID: [UUID_SIZE]u8, - driverUUID: [UUID_SIZE]u8, - deviceLUID: [LUID_SIZE]u8, - deviceNodeMask: u32, - deviceLUIDValid: b32, -} - -ExternalMemoryImageCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - handleTypes: ExternalMemoryHandleTypeFlags, -} - -ExternalMemoryBufferCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - handleTypes: ExternalMemoryHandleTypeFlags, -} - -ExportMemoryAllocateInfo :: struct { - sType: StructureType, - pNext: rawptr, - handleTypes: ExternalMemoryHandleTypeFlags, -} - -PhysicalDeviceExternalFenceInfo :: struct { - sType: StructureType, - pNext: rawptr, - handleType: ExternalFenceHandleTypeFlags, -} - -ExternalFenceProperties :: struct { - sType: StructureType, - pNext: rawptr, - exportFromImportedHandleTypes: ExternalFenceHandleTypeFlags, - compatibleHandleTypes: ExternalFenceHandleTypeFlags, - externalFenceFeatures: ExternalFenceFeatureFlags, -} - -ExportFenceCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - handleTypes: ExternalFenceHandleTypeFlags, -} - -ExportSemaphoreCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - handleTypes: ExternalSemaphoreHandleTypeFlags, -} - -PhysicalDeviceExternalSemaphoreInfo :: struct { - sType: StructureType, - pNext: rawptr, - handleType: ExternalSemaphoreHandleTypeFlags, -} - -ExternalSemaphoreProperties :: struct { - sType: StructureType, - pNext: rawptr, - exportFromImportedHandleTypes: ExternalSemaphoreHandleTypeFlags, - compatibleHandleTypes: ExternalSemaphoreHandleTypeFlags, - externalSemaphoreFeatures: ExternalSemaphoreFeatureFlags, -} - -PhysicalDeviceMaintenance3Properties :: struct { - sType: StructureType, - pNext: rawptr, - maxPerSetDescriptors: u32, - maxMemoryAllocationSize: DeviceSize, -} - -DescriptorSetLayoutSupport :: struct { - sType: StructureType, - pNext: rawptr, - supported: b32, -} - -PhysicalDeviceShaderDrawParametersFeatures :: struct { - sType: StructureType, - pNext: rawptr, - shaderDrawParameters: b32, -} - -PhysicalDeviceVulkan11Features :: struct { - sType: StructureType, - pNext: rawptr, - storageBuffer16BitAccess: b32, - uniformAndStorageBuffer16BitAccess: b32, - storagePushConstant16: b32, - storageInputOutput16: b32, - multiview: b32, - multiviewGeometryShader: b32, - multiviewTessellationShader: b32, - variablePointersStorageBuffer: b32, - variablePointers: b32, - protectedMemory: b32, - samplerYcbcrConversion: b32, - shaderDrawParameters: b32, -} - -PhysicalDeviceVulkan11Properties :: struct { - sType: StructureType, - pNext: rawptr, - deviceUUID: [UUID_SIZE]u8, - driverUUID: [UUID_SIZE]u8, - deviceLUID: [LUID_SIZE]u8, - deviceNodeMask: u32, - deviceLUIDValid: b32, - subgroupSize: u32, - subgroupSupportedStages: ShaderStageFlags, - subgroupSupportedOperations: SubgroupFeatureFlags, - subgroupQuadOperationsInAllStages: b32, - pointClippingBehavior: PointClippingBehavior, - maxMultiviewViewCount: u32, - maxMultiviewInstanceIndex: u32, - protectedNoFault: b32, - maxPerSetDescriptors: u32, - maxMemoryAllocationSize: DeviceSize, -} - -PhysicalDeviceVulkan12Features :: struct { - sType: StructureType, - pNext: rawptr, - samplerMirrorClampToEdge: b32, - drawIndirectCount: b32, - storageBuffer8BitAccess: b32, - uniformAndStorageBuffer8BitAccess: b32, - storagePushConstant8: b32, - shaderBufferInt64Atomics: b32, - shaderSharedInt64Atomics: b32, - shaderFloat16: b32, - shaderInt8: b32, - descriptorIndexing: b32, - shaderInputAttachmentArrayDynamicIndexing: b32, - shaderUniformTexelBufferArrayDynamicIndexing: b32, - shaderStorageTexelBufferArrayDynamicIndexing: b32, - shaderUniformBufferArrayNonUniformIndexing: b32, - shaderSampledImageArrayNonUniformIndexing: b32, - shaderStorageBufferArrayNonUniformIndexing: b32, - shaderStorageImageArrayNonUniformIndexing: b32, - shaderInputAttachmentArrayNonUniformIndexing: b32, - shaderUniformTexelBufferArrayNonUniformIndexing: b32, - shaderStorageTexelBufferArrayNonUniformIndexing: b32, - descriptorBindingUniformBufferUpdateAfterBind: b32, - descriptorBindingSampledImageUpdateAfterBind: b32, - descriptorBindingStorageImageUpdateAfterBind: b32, - descriptorBindingStorageBufferUpdateAfterBind: b32, - descriptorBindingUniformTexelBufferUpdateAfterBind: b32, - descriptorBindingStorageTexelBufferUpdateAfterBind: b32, - descriptorBindingUpdateUnusedWhilePending: b32, - descriptorBindingPartiallyBound: b32, - descriptorBindingVariableDescriptorCount: b32, - runtimeDescriptorArray: b32, - samplerFilterMinmax: b32, - scalarBlockLayout: b32, - imagelessFramebuffer: b32, - uniformBufferStandardLayout: b32, - shaderSubgroupExtendedTypes: b32, - separateDepthStencilLayouts: b32, - hostQueryReset: b32, - timelineSemaphore: b32, - bufferDeviceAddress: b32, - bufferDeviceAddressCaptureReplay: b32, - bufferDeviceAddressMultiDevice: b32, - vulkanMemoryModel: b32, - vulkanMemoryModelDeviceScope: b32, - vulkanMemoryModelAvailabilityVisibilityChains: b32, - shaderOutputViewportIndex: b32, - shaderOutputLayer: b32, - subgroupBroadcastDynamicId: b32, -} - -ConformanceVersion :: struct { - major: u8, - minor: u8, - subminor: u8, - patch: u8, -} - -PhysicalDeviceVulkan12Properties :: struct { - sType: StructureType, - pNext: rawptr, - driverID: DriverId, - driverName: [MAX_DRIVER_NAME_SIZE]byte, - driverInfo: [MAX_DRIVER_INFO_SIZE]byte, - conformanceVersion: ConformanceVersion, - denormBehaviorIndependence: ShaderFloatControlsIndependence, - roundingModeIndependence: ShaderFloatControlsIndependence, - shaderSignedZeroInfNanPreserveFloat16: b32, - shaderSignedZeroInfNanPreserveFloat32: b32, - shaderSignedZeroInfNanPreserveFloat64: b32, - shaderDenormPreserveFloat16: b32, - shaderDenormPreserveFloat32: b32, - shaderDenormPreserveFloat64: b32, - shaderDenormFlushToZeroFloat16: b32, - shaderDenormFlushToZeroFloat32: b32, - shaderDenormFlushToZeroFloat64: b32, - shaderRoundingModeRTEFloat16: b32, - shaderRoundingModeRTEFloat32: b32, - shaderRoundingModeRTEFloat64: b32, - shaderRoundingModeRTZFloat16: b32, - shaderRoundingModeRTZFloat32: b32, - shaderRoundingModeRTZFloat64: b32, - maxUpdateAfterBindDescriptorsInAllPools: u32, - shaderUniformBufferArrayNonUniformIndexingNative: b32, - shaderSampledImageArrayNonUniformIndexingNative: b32, - shaderStorageBufferArrayNonUniformIndexingNative: b32, - shaderStorageImageArrayNonUniformIndexingNative: b32, - shaderInputAttachmentArrayNonUniformIndexingNative: b32, - robustBufferAccessUpdateAfterBind: b32, - quadDivergentImplicitLod: b32, - maxPerStageDescriptorUpdateAfterBindSamplers: u32, - maxPerStageDescriptorUpdateAfterBindUniformBuffers: u32, - maxPerStageDescriptorUpdateAfterBindStorageBuffers: u32, - maxPerStageDescriptorUpdateAfterBindSampledImages: u32, - maxPerStageDescriptorUpdateAfterBindStorageImages: u32, - maxPerStageDescriptorUpdateAfterBindInputAttachments: u32, - maxPerStageUpdateAfterBindResources: u32, - maxDescriptorSetUpdateAfterBindSamplers: u32, - maxDescriptorSetUpdateAfterBindUniformBuffers: u32, - maxDescriptorSetUpdateAfterBindUniformBuffersDynamic: u32, - maxDescriptorSetUpdateAfterBindStorageBuffers: u32, - maxDescriptorSetUpdateAfterBindStorageBuffersDynamic: u32, - maxDescriptorSetUpdateAfterBindSampledImages: u32, - maxDescriptorSetUpdateAfterBindStorageImages: u32, - maxDescriptorSetUpdateAfterBindInputAttachments: u32, - supportedDepthResolveModes: ResolveModeFlags, - supportedStencilResolveModes: ResolveModeFlags, - independentResolveNone: b32, - independentResolve: b32, - filterMinmaxSingleComponentFormats: b32, - filterMinmaxImageComponentMapping: b32, - maxTimelineSemaphoreValueDifference: u64, - framebufferIntegerColorSampleCounts: SampleCountFlags, -} - -ImageFormatListCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - viewFormatCount: u32, - pViewFormats: [^]Format, -} - -AttachmentDescription2 :: struct { - sType: StructureType, - pNext: rawptr, - flags: AttachmentDescriptionFlags, - format: Format, - samples: SampleCountFlags, - loadOp: AttachmentLoadOp, - storeOp: AttachmentStoreOp, - stencilLoadOp: AttachmentLoadOp, - stencilStoreOp: AttachmentStoreOp, - initialLayout: ImageLayout, - finalLayout: ImageLayout, -} - -AttachmentReference2 :: struct { - sType: StructureType, - pNext: rawptr, - attachment: u32, - layout: ImageLayout, - aspectMask: ImageAspectFlags, -} - -SubpassDescription2 :: struct { - sType: StructureType, - pNext: rawptr, - flags: SubpassDescriptionFlags, - pipelineBindPoint: PipelineBindPoint, - viewMask: u32, - inputAttachmentCount: u32, - pInputAttachments: [^]AttachmentReference2, - colorAttachmentCount: u32, - pColorAttachments: [^]AttachmentReference2, - pResolveAttachments: [^]AttachmentReference2, - pDepthStencilAttachment: ^AttachmentReference2, - preserveAttachmentCount: u32, - pPreserveAttachments: [^]u32, -} - -SubpassDependency2 :: struct { - sType: StructureType, - pNext: rawptr, - srcSubpass: u32, - dstSubpass: u32, - srcStageMask: PipelineStageFlags, - dstStageMask: PipelineStageFlags, - srcAccessMask: AccessFlags, - dstAccessMask: AccessFlags, - dependencyFlags: DependencyFlags, - viewOffset: i32, -} - -RenderPassCreateInfo2 :: struct { - sType: StructureType, - pNext: rawptr, - flags: RenderPassCreateFlags, - attachmentCount: u32, - pAttachments: [^]AttachmentDescription2, - subpassCount: u32, - pSubpasses: [^]SubpassDescription2, - dependencyCount: u32, - pDependencies: [^]SubpassDependency2, - correlatedViewMaskCount: u32, - pCorrelatedViewMasks: [^]u32, -} - -SubpassBeginInfo :: struct { - sType: StructureType, - pNext: rawptr, - contents: SubpassContents, -} - -SubpassEndInfo :: struct { - sType: StructureType, - pNext: rawptr, -} - -PhysicalDevice8BitStorageFeatures :: struct { - sType: StructureType, - pNext: rawptr, - storageBuffer8BitAccess: b32, - uniformAndStorageBuffer8BitAccess: b32, - storagePushConstant8: b32, -} - -PhysicalDeviceDriverProperties :: struct { - sType: StructureType, - pNext: rawptr, - driverID: DriverId, - driverName: [MAX_DRIVER_NAME_SIZE]byte, - driverInfo: [MAX_DRIVER_INFO_SIZE]byte, - conformanceVersion: ConformanceVersion, -} - -PhysicalDeviceShaderAtomicInt64Features :: struct { - sType: StructureType, - pNext: rawptr, - shaderBufferInt64Atomics: b32, - shaderSharedInt64Atomics: b32, -} - -PhysicalDeviceShaderFloat16Int8Features :: struct { - sType: StructureType, - pNext: rawptr, - shaderFloat16: b32, - shaderInt8: b32, -} - -PhysicalDeviceFloatControlsProperties :: struct { - sType: StructureType, - pNext: rawptr, - denormBehaviorIndependence: ShaderFloatControlsIndependence, - roundingModeIndependence: ShaderFloatControlsIndependence, - shaderSignedZeroInfNanPreserveFloat16: b32, - shaderSignedZeroInfNanPreserveFloat32: b32, - shaderSignedZeroInfNanPreserveFloat64: b32, - shaderDenormPreserveFloat16: b32, - shaderDenormPreserveFloat32: b32, - shaderDenormPreserveFloat64: b32, - shaderDenormFlushToZeroFloat16: b32, - shaderDenormFlushToZeroFloat32: b32, - shaderDenormFlushToZeroFloat64: b32, - shaderRoundingModeRTEFloat16: b32, - shaderRoundingModeRTEFloat32: b32, - shaderRoundingModeRTEFloat64: b32, - shaderRoundingModeRTZFloat16: b32, - shaderRoundingModeRTZFloat32: b32, - shaderRoundingModeRTZFloat64: b32, -} - -DescriptorSetLayoutBindingFlagsCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - bindingCount: u32, - pBindingFlags: [^]DescriptorBindingFlags, -} - -PhysicalDeviceDescriptorIndexingFeatures :: struct { - sType: StructureType, - pNext: rawptr, - shaderInputAttachmentArrayDynamicIndexing: b32, - shaderUniformTexelBufferArrayDynamicIndexing: b32, - shaderStorageTexelBufferArrayDynamicIndexing: b32, - shaderUniformBufferArrayNonUniformIndexing: b32, - shaderSampledImageArrayNonUniformIndexing: b32, - shaderStorageBufferArrayNonUniformIndexing: b32, - shaderStorageImageArrayNonUniformIndexing: b32, - shaderInputAttachmentArrayNonUniformIndexing: b32, - shaderUniformTexelBufferArrayNonUniformIndexing: b32, - shaderStorageTexelBufferArrayNonUniformIndexing: b32, - descriptorBindingUniformBufferUpdateAfterBind: b32, - descriptorBindingSampledImageUpdateAfterBind: b32, - descriptorBindingStorageImageUpdateAfterBind: b32, - descriptorBindingStorageBufferUpdateAfterBind: b32, - descriptorBindingUniformTexelBufferUpdateAfterBind: b32, - descriptorBindingStorageTexelBufferUpdateAfterBind: b32, - descriptorBindingUpdateUnusedWhilePending: b32, - descriptorBindingPartiallyBound: b32, - descriptorBindingVariableDescriptorCount: b32, - runtimeDescriptorArray: b32, -} - -PhysicalDeviceDescriptorIndexingProperties :: struct { - sType: StructureType, - pNext: rawptr, - maxUpdateAfterBindDescriptorsInAllPools: u32, - shaderUniformBufferArrayNonUniformIndexingNative: b32, - shaderSampledImageArrayNonUniformIndexingNative: b32, - shaderStorageBufferArrayNonUniformIndexingNative: b32, - shaderStorageImageArrayNonUniformIndexingNative: b32, - shaderInputAttachmentArrayNonUniformIndexingNative: b32, - robustBufferAccessUpdateAfterBind: b32, - quadDivergentImplicitLod: b32, - maxPerStageDescriptorUpdateAfterBindSamplers: u32, - maxPerStageDescriptorUpdateAfterBindUniformBuffers: u32, - maxPerStageDescriptorUpdateAfterBindStorageBuffers: u32, - maxPerStageDescriptorUpdateAfterBindSampledImages: u32, - maxPerStageDescriptorUpdateAfterBindStorageImages: u32, - maxPerStageDescriptorUpdateAfterBindInputAttachments: u32, - maxPerStageUpdateAfterBindResources: u32, - maxDescriptorSetUpdateAfterBindSamplers: u32, - maxDescriptorSetUpdateAfterBindUniformBuffers: u32, - maxDescriptorSetUpdateAfterBindUniformBuffersDynamic: u32, - maxDescriptorSetUpdateAfterBindStorageBuffers: u32, - maxDescriptorSetUpdateAfterBindStorageBuffersDynamic: u32, - maxDescriptorSetUpdateAfterBindSampledImages: u32, - maxDescriptorSetUpdateAfterBindStorageImages: u32, - maxDescriptorSetUpdateAfterBindInputAttachments: u32, -} - -DescriptorSetVariableDescriptorCountAllocateInfo :: struct { - sType: StructureType, - pNext: rawptr, - descriptorSetCount: u32, - pDescriptorCounts: [^]u32, -} - -DescriptorSetVariableDescriptorCountLayoutSupport :: struct { - sType: StructureType, - pNext: rawptr, - maxVariableDescriptorCount: u32, -} - -SubpassDescriptionDepthStencilResolve :: struct { - sType: StructureType, - pNext: rawptr, - depthResolveMode: ResolveModeFlags, - stencilResolveMode: ResolveModeFlags, - pDepthStencilResolveAttachment: ^AttachmentReference2, -} - -PhysicalDeviceDepthStencilResolveProperties :: struct { - sType: StructureType, - pNext: rawptr, - supportedDepthResolveModes: ResolveModeFlags, - supportedStencilResolveModes: ResolveModeFlags, - independentResolveNone: b32, - independentResolve: b32, -} - -PhysicalDeviceScalarBlockLayoutFeatures :: struct { - sType: StructureType, - pNext: rawptr, - scalarBlockLayout: b32, -} - -ImageStencilUsageCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - stencilUsage: ImageUsageFlags, -} - -SamplerReductionModeCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - reductionMode: SamplerReductionMode, -} - -PhysicalDeviceSamplerFilterMinmaxProperties :: struct { - sType: StructureType, - pNext: rawptr, - filterMinmaxSingleComponentFormats: b32, - filterMinmaxImageComponentMapping: b32, -} - -PhysicalDeviceVulkanMemoryModelFeatures :: struct { - sType: StructureType, - pNext: rawptr, - vulkanMemoryModel: b32, - vulkanMemoryModelDeviceScope: b32, - vulkanMemoryModelAvailabilityVisibilityChains: b32, -} - -PhysicalDeviceImagelessFramebufferFeatures :: struct { - sType: StructureType, - pNext: rawptr, - imagelessFramebuffer: b32, -} - -FramebufferAttachmentImageInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: ImageCreateFlags, - usage: ImageUsageFlags, - width: u32, - height: u32, - layerCount: u32, - viewFormatCount: u32, - pViewFormats: [^]Format, -} - -FramebufferAttachmentsCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - attachmentImageInfoCount: u32, - pAttachmentImageInfos: [^]FramebufferAttachmentImageInfo, -} - -RenderPassAttachmentBeginInfo :: struct { - sType: StructureType, - pNext: rawptr, - attachmentCount: u32, - pAttachments: [^]ImageView, -} - -PhysicalDeviceUniformBufferStandardLayoutFeatures :: struct { - sType: StructureType, - pNext: rawptr, - uniformBufferStandardLayout: b32, -} - -PhysicalDeviceShaderSubgroupExtendedTypesFeatures :: struct { - sType: StructureType, - pNext: rawptr, - shaderSubgroupExtendedTypes: b32, -} - -PhysicalDeviceSeparateDepthStencilLayoutsFeatures :: struct { - sType: StructureType, - pNext: rawptr, - separateDepthStencilLayouts: b32, -} - -AttachmentReferenceStencilLayout :: struct { - sType: StructureType, - pNext: rawptr, - stencilLayout: ImageLayout, -} - -AttachmentDescriptionStencilLayout :: struct { - sType: StructureType, - pNext: rawptr, - stencilInitialLayout: ImageLayout, - stencilFinalLayout: ImageLayout, -} - -PhysicalDeviceHostQueryResetFeatures :: struct { - sType: StructureType, - pNext: rawptr, - hostQueryReset: b32, -} - -PhysicalDeviceTimelineSemaphoreFeatures :: struct { - sType: StructureType, - pNext: rawptr, - timelineSemaphore: b32, -} - -PhysicalDeviceTimelineSemaphoreProperties :: struct { - sType: StructureType, - pNext: rawptr, - maxTimelineSemaphoreValueDifference: u64, -} - -SemaphoreTypeCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - semaphoreType: SemaphoreType, - initialValue: u64, -} - -TimelineSemaphoreSubmitInfo :: struct { - sType: StructureType, - pNext: rawptr, - waitSemaphoreValueCount: u32, - pWaitSemaphoreValues: [^]u64, - signalSemaphoreValueCount: u32, - pSignalSemaphoreValues: [^]u64, -} - -SemaphoreWaitInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: SemaphoreWaitFlags, - semaphoreCount: u32, - pSemaphores: [^]Semaphore, - pValues: [^]u64, -} - -SemaphoreSignalInfo :: struct { - sType: StructureType, - pNext: rawptr, - semaphore: Semaphore, - value: u64, -} - -PhysicalDeviceBufferDeviceAddressFeatures :: struct { - sType: StructureType, - pNext: rawptr, - bufferDeviceAddress: b32, - bufferDeviceAddressCaptureReplay: b32, - bufferDeviceAddressMultiDevice: b32, -} - -BufferDeviceAddressInfo :: struct { - sType: StructureType, - pNext: rawptr, - buffer: Buffer, -} - -BufferOpaqueCaptureAddressCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - opaqueCaptureAddress: u64, -} - -MemoryOpaqueCaptureAddressAllocateInfo :: struct { - sType: StructureType, - pNext: rawptr, - opaqueCaptureAddress: u64, -} - -DeviceMemoryOpaqueCaptureAddressInfo :: struct { - sType: StructureType, - pNext: rawptr, - memory: DeviceMemory, -} - -PhysicalDeviceVulkan13Features :: struct { - sType: StructureType, - pNext: rawptr, - robustImageAccess: b32, - inlineUniformBlock: b32, - descriptorBindingInlineUniformBlockUpdateAfterBind: b32, - pipelineCreationCacheControl: b32, - privateData: b32, - shaderDemoteToHelperInvocation: b32, - shaderTerminateInvocation: b32, - subgroupSizeControl: b32, - computeFullSubgroups: b32, - synchronization2: b32, - textureCompressionASTC_HDR: b32, - shaderZeroInitializeWorkgroupMemory: b32, - dynamicRendering: b32, - shaderIntegerDotProduct: b32, - maintenance4: b32, -} - -PhysicalDeviceVulkan13Properties :: struct { - sType: StructureType, - pNext: rawptr, - minSubgroupSize: u32, - maxSubgroupSize: u32, - maxComputeWorkgroupSubgroups: u32, - requiredSubgroupSizeStages: ShaderStageFlags, - maxInlineUniformBlockSize: u32, - maxPerStageDescriptorInlineUniformBlocks: u32, - maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks: u32, - maxDescriptorSetInlineUniformBlocks: u32, - maxDescriptorSetUpdateAfterBindInlineUniformBlocks: u32, - maxInlineUniformTotalSize: u32, - integerDotProduct8BitUnsignedAccelerated: b32, - integerDotProduct8BitSignedAccelerated: b32, - integerDotProduct8BitMixedSignednessAccelerated: b32, - integerDotProduct4x8BitPackedUnsignedAccelerated: b32, - integerDotProduct4x8BitPackedSignedAccelerated: b32, - integerDotProduct4x8BitPackedMixedSignednessAccelerated: b32, - integerDotProduct16BitUnsignedAccelerated: b32, - integerDotProduct16BitSignedAccelerated: b32, - integerDotProduct16BitMixedSignednessAccelerated: b32, - integerDotProduct32BitUnsignedAccelerated: b32, - integerDotProduct32BitSignedAccelerated: b32, - integerDotProduct32BitMixedSignednessAccelerated: b32, - integerDotProduct64BitUnsignedAccelerated: b32, - integerDotProduct64BitSignedAccelerated: b32, - integerDotProduct64BitMixedSignednessAccelerated: b32, - integerDotProductAccumulatingSaturating8BitUnsignedAccelerated: b32, - integerDotProductAccumulatingSaturating8BitSignedAccelerated: b32, - integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated: b32, - integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated: b32, - integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated: b32, - integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated: b32, - integerDotProductAccumulatingSaturating16BitUnsignedAccelerated: b32, - integerDotProductAccumulatingSaturating16BitSignedAccelerated: b32, - integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated: b32, - integerDotProductAccumulatingSaturating32BitUnsignedAccelerated: b32, - integerDotProductAccumulatingSaturating32BitSignedAccelerated: b32, - integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated: b32, - integerDotProductAccumulatingSaturating64BitUnsignedAccelerated: b32, - integerDotProductAccumulatingSaturating64BitSignedAccelerated: b32, - integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated: b32, - storageTexelBufferOffsetAlignmentBytes: DeviceSize, - storageTexelBufferOffsetSingleTexelAlignment: b32, - uniformTexelBufferOffsetAlignmentBytes: DeviceSize, - uniformTexelBufferOffsetSingleTexelAlignment: b32, - maxBufferSize: DeviceSize, -} - -PipelineCreationFeedback :: struct { - flags: PipelineCreationFeedbackFlags, - duration: u64, -} - -PipelineCreationFeedbackCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - pPipelineCreationFeedback: ^PipelineCreationFeedback, - pipelineStageCreationFeedbackCount: u32, - pPipelineStageCreationFeedbacks: [^]PipelineCreationFeedback, -} - -PhysicalDeviceShaderTerminateInvocationFeatures :: struct { - sType: StructureType, - pNext: rawptr, - shaderTerminateInvocation: b32, -} - -PhysicalDeviceToolProperties :: struct { - sType: StructureType, - pNext: rawptr, - name: [MAX_EXTENSION_NAME_SIZE]byte, - version: [MAX_EXTENSION_NAME_SIZE]byte, - purposes: ToolPurposeFlags, - description: [MAX_DESCRIPTION_SIZE]byte, - layer: [MAX_EXTENSION_NAME_SIZE]byte, -} - -PhysicalDeviceShaderDemoteToHelperInvocationFeatures :: struct { - sType: StructureType, - pNext: rawptr, - shaderDemoteToHelperInvocation: b32, -} - -PhysicalDevicePrivateDataFeatures :: struct { - sType: StructureType, - pNext: rawptr, - privateData: b32, -} - -DevicePrivateDataCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - privateDataSlotRequestCount: u32, -} - -PrivateDataSlotCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: PrivateDataSlotCreateFlags, -} - -PhysicalDevicePipelineCreationCacheControlFeatures :: struct { - sType: StructureType, - pNext: rawptr, - pipelineCreationCacheControl: b32, -} - -MemoryBarrier2 :: struct { - sType: StructureType, - pNext: rawptr, - srcStageMask: PipelineStageFlags2, - srcAccessMask: AccessFlags2, - dstStageMask: PipelineStageFlags2, - dstAccessMask: AccessFlags2, -} - -BufferMemoryBarrier2 :: struct { - sType: StructureType, - pNext: rawptr, - srcStageMask: PipelineStageFlags2, - srcAccessMask: AccessFlags2, - dstStageMask: PipelineStageFlags2, - dstAccessMask: AccessFlags2, - srcQueueFamilyIndex: u32, - dstQueueFamilyIndex: u32, - buffer: Buffer, - offset: DeviceSize, - size: DeviceSize, -} - -ImageMemoryBarrier2 :: struct { - sType: StructureType, - pNext: rawptr, - srcStageMask: PipelineStageFlags2, - srcAccessMask: AccessFlags2, - dstStageMask: PipelineStageFlags2, - dstAccessMask: AccessFlags2, - oldLayout: ImageLayout, - newLayout: ImageLayout, - srcQueueFamilyIndex: u32, - dstQueueFamilyIndex: u32, - image: Image, - subresourceRange: ImageSubresourceRange, -} - -DependencyInfo :: struct { - sType: StructureType, - pNext: rawptr, - dependencyFlags: DependencyFlags, - memoryBarrierCount: u32, - pMemoryBarriers: [^]MemoryBarrier2, - bufferMemoryBarrierCount: u32, - pBufferMemoryBarriers: [^]BufferMemoryBarrier2, - imageMemoryBarrierCount: u32, - pImageMemoryBarriers: [^]ImageMemoryBarrier2, -} - -SemaphoreSubmitInfo :: struct { - sType: StructureType, - pNext: rawptr, - semaphore: Semaphore, - value: u64, - stageMask: PipelineStageFlags2, - deviceIndex: u32, -} - -CommandBufferSubmitInfo :: struct { - sType: StructureType, - pNext: rawptr, - commandBuffer: CommandBuffer, - deviceMask: u32, -} - -SubmitInfo2 :: struct { - sType: StructureType, - pNext: rawptr, - flags: SubmitFlags, - waitSemaphoreInfoCount: u32, - pWaitSemaphoreInfos: [^]SemaphoreSubmitInfo, - commandBufferInfoCount: u32, - pCommandBufferInfos: [^]CommandBufferSubmitInfo, - signalSemaphoreInfoCount: u32, - pSignalSemaphoreInfos: [^]SemaphoreSubmitInfo, -} - -PhysicalDeviceSynchronization2Features :: struct { - sType: StructureType, - pNext: rawptr, - synchronization2: b32, -} - -PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures :: struct { - sType: StructureType, - pNext: rawptr, - shaderZeroInitializeWorkgroupMemory: b32, -} - -PhysicalDeviceImageRobustnessFeatures :: struct { - sType: StructureType, - pNext: rawptr, - robustImageAccess: b32, -} - -BufferCopy2 :: struct { - sType: StructureType, - pNext: rawptr, - srcOffset: DeviceSize, - dstOffset: DeviceSize, - size: DeviceSize, -} - -CopyBufferInfo2 :: struct { - sType: StructureType, - pNext: rawptr, - srcBuffer: Buffer, - dstBuffer: Buffer, - regionCount: u32, - pRegions: [^]BufferCopy2, -} - -ImageCopy2 :: struct { - sType: StructureType, - pNext: rawptr, - srcSubresource: ImageSubresourceLayers, - srcOffset: Offset3D, - dstSubresource: ImageSubresourceLayers, - dstOffset: Offset3D, - extent: Extent3D, -} - -CopyImageInfo2 :: struct { - sType: StructureType, - pNext: rawptr, - srcImage: Image, - srcImageLayout: ImageLayout, - dstImage: Image, - dstImageLayout: ImageLayout, - regionCount: u32, - pRegions: [^]ImageCopy2, -} - -BufferImageCopy2 :: struct { - sType: StructureType, - pNext: rawptr, - bufferOffset: DeviceSize, - bufferRowLength: u32, - bufferImageHeight: u32, - imageSubresource: ImageSubresourceLayers, - imageOffset: Offset3D, - imageExtent: Extent3D, -} - -CopyBufferToImageInfo2 :: struct { - sType: StructureType, - pNext: rawptr, - srcBuffer: Buffer, - dstImage: Image, - dstImageLayout: ImageLayout, - regionCount: u32, - pRegions: [^]BufferImageCopy2, -} - -CopyImageToBufferInfo2 :: struct { - sType: StructureType, - pNext: rawptr, - srcImage: Image, - srcImageLayout: ImageLayout, - dstBuffer: Buffer, - regionCount: u32, - pRegions: [^]BufferImageCopy2, -} - -ImageBlit2 :: struct { - sType: StructureType, - pNext: rawptr, - srcSubresource: ImageSubresourceLayers, - srcOffsets: [2]Offset3D, - dstSubresource: ImageSubresourceLayers, - dstOffsets: [2]Offset3D, -} - -BlitImageInfo2 :: struct { - sType: StructureType, - pNext: rawptr, - srcImage: Image, - srcImageLayout: ImageLayout, - dstImage: Image, - dstImageLayout: ImageLayout, - regionCount: u32, - pRegions: [^]ImageBlit2, - filter: Filter, -} - -ImageResolve2 :: struct { - sType: StructureType, - pNext: rawptr, - srcSubresource: ImageSubresourceLayers, - srcOffset: Offset3D, - dstSubresource: ImageSubresourceLayers, - dstOffset: Offset3D, - extent: Extent3D, -} - -ResolveImageInfo2 :: struct { - sType: StructureType, - pNext: rawptr, - srcImage: Image, - srcImageLayout: ImageLayout, - dstImage: Image, - dstImageLayout: ImageLayout, - regionCount: u32, - pRegions: [^]ImageResolve2, -} - -PhysicalDeviceSubgroupSizeControlFeatures :: struct { - sType: StructureType, - pNext: rawptr, - subgroupSizeControl: b32, - computeFullSubgroups: b32, -} - -PhysicalDeviceSubgroupSizeControlProperties :: struct { - sType: StructureType, - pNext: rawptr, - minSubgroupSize: u32, - maxSubgroupSize: u32, - maxComputeWorkgroupSubgroups: u32, - requiredSubgroupSizeStages: ShaderStageFlags, -} - -PipelineShaderStageRequiredSubgroupSizeCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - requiredSubgroupSize: u32, -} - -PhysicalDeviceInlineUniformBlockFeatures :: struct { - sType: StructureType, - pNext: rawptr, - inlineUniformBlock: b32, - descriptorBindingInlineUniformBlockUpdateAfterBind: b32, -} - -PhysicalDeviceInlineUniformBlockProperties :: struct { - sType: StructureType, - pNext: rawptr, - maxInlineUniformBlockSize: u32, - maxPerStageDescriptorInlineUniformBlocks: u32, - maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks: u32, - maxDescriptorSetInlineUniformBlocks: u32, - maxDescriptorSetUpdateAfterBindInlineUniformBlocks: u32, -} - -WriteDescriptorSetInlineUniformBlock :: struct { - sType: StructureType, - pNext: rawptr, - dataSize: u32, - pData: rawptr, -} - -DescriptorPoolInlineUniformBlockCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - maxInlineUniformBlockBindings: u32, -} - -PhysicalDeviceTextureCompressionASTCHDRFeatures :: struct { - sType: StructureType, - pNext: rawptr, - textureCompressionASTC_HDR: b32, -} - -RenderingAttachmentInfo :: struct { - sType: StructureType, - pNext: rawptr, - imageView: ImageView, - imageLayout: ImageLayout, - resolveMode: ResolveModeFlags, - resolveImageView: ImageView, - resolveImageLayout: ImageLayout, - loadOp: AttachmentLoadOp, - storeOp: AttachmentStoreOp, - clearValue: ClearValue, -} - -RenderingInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: RenderingFlags, - renderArea: Rect2D, - layerCount: u32, - viewMask: u32, - colorAttachmentCount: u32, - pColorAttachments: [^]RenderingAttachmentInfo, - pDepthAttachment: ^RenderingAttachmentInfo, - pStencilAttachment: ^RenderingAttachmentInfo, -} - -PipelineRenderingCreateInfo :: struct { - sType: StructureType, - pNext: rawptr, - viewMask: u32, - colorAttachmentCount: u32, - pColorAttachmentFormats: [^]Format, - depthAttachmentFormat: Format, - stencilAttachmentFormat: Format, -} - -PhysicalDeviceDynamicRenderingFeatures :: struct { - sType: StructureType, - pNext: rawptr, - dynamicRendering: b32, -} - -CommandBufferInheritanceRenderingInfo :: struct { - sType: StructureType, - pNext: rawptr, - flags: RenderingFlags, - viewMask: u32, - colorAttachmentCount: u32, - pColorAttachmentFormats: [^]Format, - depthAttachmentFormat: Format, - stencilAttachmentFormat: Format, - rasterizationSamples: SampleCountFlags, -} - -PhysicalDeviceShaderIntegerDotProductFeatures :: struct { - sType: StructureType, - pNext: rawptr, - shaderIntegerDotProduct: b32, -} - -PhysicalDeviceShaderIntegerDotProductProperties :: struct { - sType: StructureType, - pNext: rawptr, - integerDotProduct8BitUnsignedAccelerated: b32, - integerDotProduct8BitSignedAccelerated: b32, - integerDotProduct8BitMixedSignednessAccelerated: b32, - integerDotProduct4x8BitPackedUnsignedAccelerated: b32, - integerDotProduct4x8BitPackedSignedAccelerated: b32, - integerDotProduct4x8BitPackedMixedSignednessAccelerated: b32, - integerDotProduct16BitUnsignedAccelerated: b32, - integerDotProduct16BitSignedAccelerated: b32, - integerDotProduct16BitMixedSignednessAccelerated: b32, - integerDotProduct32BitUnsignedAccelerated: b32, - integerDotProduct32BitSignedAccelerated: b32, - integerDotProduct32BitMixedSignednessAccelerated: b32, - integerDotProduct64BitUnsignedAccelerated: b32, - integerDotProduct64BitSignedAccelerated: b32, - integerDotProduct64BitMixedSignednessAccelerated: b32, - integerDotProductAccumulatingSaturating8BitUnsignedAccelerated: b32, - integerDotProductAccumulatingSaturating8BitSignedAccelerated: b32, - integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated: b32, - integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated: b32, - integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated: b32, - integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated: b32, - integerDotProductAccumulatingSaturating16BitUnsignedAccelerated: b32, - integerDotProductAccumulatingSaturating16BitSignedAccelerated: b32, - integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated: b32, - integerDotProductAccumulatingSaturating32BitUnsignedAccelerated: b32, - integerDotProductAccumulatingSaturating32BitSignedAccelerated: b32, - integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated: b32, - integerDotProductAccumulatingSaturating64BitUnsignedAccelerated: b32, - integerDotProductAccumulatingSaturating64BitSignedAccelerated: b32, - integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated: b32, -} - -PhysicalDeviceTexelBufferAlignmentProperties :: struct { - sType: StructureType, - pNext: rawptr, - storageTexelBufferOffsetAlignmentBytes: DeviceSize, - storageTexelBufferOffsetSingleTexelAlignment: b32, - uniformTexelBufferOffsetAlignmentBytes: DeviceSize, - uniformTexelBufferOffsetSingleTexelAlignment: b32, -} - -FormatProperties3 :: struct { - sType: StructureType, - pNext: rawptr, - linearTilingFeatures: FormatFeatureFlags2, - optimalTilingFeatures: FormatFeatureFlags2, - bufferFeatures: FormatFeatureFlags2, -} - -PhysicalDeviceMaintenance4Features :: struct { - sType: StructureType, - pNext: rawptr, - maintenance4: b32, -} - -PhysicalDeviceMaintenance4Properties :: struct { - sType: StructureType, - pNext: rawptr, - maxBufferSize: DeviceSize, -} - -DeviceBufferMemoryRequirements :: struct { - sType: StructureType, - pNext: rawptr, - pCreateInfo: ^BufferCreateInfo, -} - -DeviceImageMemoryRequirements :: struct { - sType: StructureType, - pNext: rawptr, - pCreateInfo: ^ImageCreateInfo, - planeAspect: ImageAspectFlags, -} - -SurfaceCapabilitiesKHR :: struct { - minImageCount: u32, - maxImageCount: u32, - currentExtent: Extent2D, - minImageExtent: Extent2D, - maxImageExtent: Extent2D, - maxImageArrayLayers: u32, - supportedTransforms: SurfaceTransformFlagsKHR, - currentTransform: SurfaceTransformFlagsKHR, - supportedCompositeAlpha: CompositeAlphaFlagsKHR, - supportedUsageFlags: ImageUsageFlags, -} - -SurfaceFormatKHR :: struct { - format: Format, - colorSpace: ColorSpaceKHR, -} - -SwapchainCreateInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - flags: SwapchainCreateFlagsKHR, - surface: SurfaceKHR, - minImageCount: u32, - imageFormat: Format, - imageColorSpace: ColorSpaceKHR, - imageExtent: Extent2D, - imageArrayLayers: u32, - imageUsage: ImageUsageFlags, - imageSharingMode: SharingMode, - queueFamilyIndexCount: u32, - pQueueFamilyIndices: [^]u32, - preTransform: SurfaceTransformFlagsKHR, - compositeAlpha: CompositeAlphaFlagsKHR, - presentMode: PresentModeKHR, - clipped: b32, - oldSwapchain: SwapchainKHR, -} - -PresentInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - waitSemaphoreCount: u32, - pWaitSemaphores: [^]Semaphore, - swapchainCount: u32, - pSwapchains: [^]SwapchainKHR, - pImageIndices: [^]u32, - pResults: [^]Result, -} - -ImageSwapchainCreateInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - swapchain: SwapchainKHR, -} - -BindImageMemorySwapchainInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - swapchain: SwapchainKHR, - imageIndex: u32, -} - -AcquireNextImageInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - swapchain: SwapchainKHR, - timeout: u64, - semaphore: Semaphore, - fence: Fence, - deviceMask: u32, -} - -DeviceGroupPresentCapabilitiesKHR :: struct { - sType: StructureType, - pNext: rawptr, - presentMask: [MAX_DEVICE_GROUP_SIZE]u32, - modes: DeviceGroupPresentModeFlagsKHR, -} - -DeviceGroupPresentInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - swapchainCount: u32, - pDeviceMasks: [^]u32, - mode: DeviceGroupPresentModeFlagsKHR, -} - -DeviceGroupSwapchainCreateInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - modes: DeviceGroupPresentModeFlagsKHR, -} - -DisplayModeParametersKHR :: struct { - visibleRegion: Extent2D, - refreshRate: u32, -} - -DisplayModeCreateInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - flags: DisplayModeCreateFlagsKHR, - parameters: DisplayModeParametersKHR, -} - -DisplayModePropertiesKHR :: struct { - displayMode: DisplayModeKHR, - parameters: DisplayModeParametersKHR, -} - -DisplayPlaneCapabilitiesKHR :: struct { - supportedAlpha: DisplayPlaneAlphaFlagsKHR, - minSrcPosition: Offset2D, - maxSrcPosition: Offset2D, - minSrcExtent: Extent2D, - maxSrcExtent: Extent2D, - minDstPosition: Offset2D, - maxDstPosition: Offset2D, - minDstExtent: Extent2D, - maxDstExtent: Extent2D, -} - -DisplayPlanePropertiesKHR :: struct { - currentDisplay: DisplayKHR, - currentStackIndex: u32, -} - -DisplayPropertiesKHR :: struct { - display: DisplayKHR, - displayName: cstring, - physicalDimensions: Extent2D, - physicalResolution: Extent2D, - supportedTransforms: SurfaceTransformFlagsKHR, - planeReorderPossible: b32, - persistentContent: b32, -} - -DisplaySurfaceCreateInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - flags: DisplaySurfaceCreateFlagsKHR, - displayMode: DisplayModeKHR, - planeIndex: u32, - planeStackIndex: u32, - transform: SurfaceTransformFlagsKHR, - globalAlpha: f32, - alphaMode: DisplayPlaneAlphaFlagsKHR, - imageExtent: Extent2D, -} - -DisplayPresentInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - srcRect: Rect2D, - dstRect: Rect2D, - persistent: b32, -} - -RenderingFragmentShadingRateAttachmentInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - imageView: ImageView, - imageLayout: ImageLayout, - shadingRateAttachmentTexelSize: Extent2D, -} - -RenderingFragmentDensityMapAttachmentInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - imageView: ImageView, - imageLayout: ImageLayout, -} - -AttachmentSampleCountInfoAMD :: struct { - sType: StructureType, - pNext: rawptr, - colorAttachmentCount: u32, - pColorAttachmentSamples: [^]SampleCountFlags, - depthStencilAttachmentSamples: SampleCountFlags, -} - -MultiviewPerViewAttributesInfoNVX :: struct { - sType: StructureType, - pNext: rawptr, - perViewAttributes: b32, - perViewAttributesPositionXOnly: b32, -} - -ImportMemoryFdInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - handleType: ExternalMemoryHandleTypeFlags, - fd: c.int, -} - -MemoryFdPropertiesKHR :: struct { - sType: StructureType, - pNext: rawptr, - memoryTypeBits: u32, -} - -MemoryGetFdInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - memory: DeviceMemory, - handleType: ExternalMemoryHandleTypeFlags, -} - -ImportSemaphoreFdInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - semaphore: Semaphore, - flags: SemaphoreImportFlags, - handleType: ExternalSemaphoreHandleTypeFlags, - fd: c.int, -} - -SemaphoreGetFdInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - semaphore: Semaphore, - handleType: ExternalSemaphoreHandleTypeFlags, -} - -PhysicalDevicePushDescriptorPropertiesKHR :: struct { - sType: StructureType, - pNext: rawptr, - maxPushDescriptors: u32, -} - -RectLayerKHR :: struct { - offset: Offset2D, - extent: Extent2D, - layer: u32, -} - -PresentRegionKHR :: struct { - rectangleCount: u32, - pRectangles: [^]RectLayerKHR, -} - -PresentRegionsKHR :: struct { - sType: StructureType, - pNext: rawptr, - swapchainCount: u32, - pRegions: [^]PresentRegionKHR, -} - -SharedPresentSurfaceCapabilitiesKHR :: struct { - sType: StructureType, - pNext: rawptr, - sharedPresentSupportedUsageFlags: ImageUsageFlags, -} - -ImportFenceFdInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - fence: Fence, - flags: FenceImportFlags, - handleType: ExternalFenceHandleTypeFlags, - fd: c.int, -} - -FenceGetFdInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - fence: Fence, - handleType: ExternalFenceHandleTypeFlags, -} - -PhysicalDevicePerformanceQueryFeaturesKHR :: struct { - sType: StructureType, - pNext: rawptr, - performanceCounterQueryPools: b32, - performanceCounterMultipleQueryPools: b32, -} - -PhysicalDevicePerformanceQueryPropertiesKHR :: struct { - sType: StructureType, - pNext: rawptr, - allowCommandBufferQueryCopies: b32, -} - -PerformanceCounterKHR :: struct { - sType: StructureType, - pNext: rawptr, - unit: PerformanceCounterUnitKHR, - scope: PerformanceCounterScopeKHR, - storage: PerformanceCounterStorageKHR, - uuid: [UUID_SIZE]u8, -} - -PerformanceCounterDescriptionKHR :: struct { - sType: StructureType, - pNext: rawptr, - flags: PerformanceCounterDescriptionFlagsKHR, - name: [MAX_DESCRIPTION_SIZE]byte, - category: [MAX_DESCRIPTION_SIZE]byte, - description: [MAX_DESCRIPTION_SIZE]byte, -} - -QueryPoolPerformanceCreateInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - queueFamilyIndex: u32, - counterIndexCount: u32, - pCounterIndices: [^]u32, -} - -PerformanceCounterResultKHR :: struct #raw_union { - int32: i32, - int64: i64, - uint32: u32, - uint64: u64, - float32: f32, - float64: f64, -} - -AcquireProfilingLockInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - flags: AcquireProfilingLockFlagsKHR, - timeout: u64, -} - -PerformanceQuerySubmitInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - counterPassIndex: u32, -} - -PhysicalDeviceSurfaceInfo2KHR :: struct { - sType: StructureType, - pNext: rawptr, - surface: SurfaceKHR, -} - -SurfaceCapabilities2KHR :: struct { - sType: StructureType, - pNext: rawptr, - surfaceCapabilities: SurfaceCapabilitiesKHR, -} - -SurfaceFormat2KHR :: struct { - sType: StructureType, - pNext: rawptr, - surfaceFormat: SurfaceFormatKHR, -} - -DisplayProperties2KHR :: struct { - sType: StructureType, - pNext: rawptr, - displayProperties: DisplayPropertiesKHR, -} - -DisplayPlaneProperties2KHR :: struct { - sType: StructureType, - pNext: rawptr, - displayPlaneProperties: DisplayPlanePropertiesKHR, -} - -DisplayModeProperties2KHR :: struct { - sType: StructureType, - pNext: rawptr, - displayModeProperties: DisplayModePropertiesKHR, -} - -DisplayPlaneInfo2KHR :: struct { - sType: StructureType, - pNext: rawptr, - mode: DisplayModeKHR, - planeIndex: u32, -} - -DisplayPlaneCapabilities2KHR :: struct { - sType: StructureType, - pNext: rawptr, - capabilities: DisplayPlaneCapabilitiesKHR, -} - -PhysicalDeviceShaderClockFeaturesKHR :: struct { - sType: StructureType, - pNext: rawptr, - shaderSubgroupClock: b32, - shaderDeviceClock: b32, -} - -DeviceQueueGlobalPriorityCreateInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - globalPriority: QueueGlobalPriorityKHR, -} - -PhysicalDeviceGlobalPriorityQueryFeaturesKHR :: struct { - sType: StructureType, - pNext: rawptr, - globalPriorityQuery: b32, -} - -QueueFamilyGlobalPriorityPropertiesKHR :: struct { - sType: StructureType, - pNext: rawptr, - priorityCount: u32, - priorities: [MAX_GLOBAL_PRIORITY_SIZE_KHR]QueueGlobalPriorityKHR, -} - -FragmentShadingRateAttachmentInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - pFragmentShadingRateAttachment: ^AttachmentReference2, - shadingRateAttachmentTexelSize: Extent2D, -} - -PipelineFragmentShadingRateStateCreateInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - fragmentSize: Extent2D, - combinerOps: [2]FragmentShadingRateCombinerOpKHR, -} - -PhysicalDeviceFragmentShadingRateFeaturesKHR :: struct { - sType: StructureType, - pNext: rawptr, - pipelineFragmentShadingRate: b32, - primitiveFragmentShadingRate: b32, - attachmentFragmentShadingRate: b32, -} - -PhysicalDeviceFragmentShadingRatePropertiesKHR :: struct { - sType: StructureType, - pNext: rawptr, - minFragmentShadingRateAttachmentTexelSize: Extent2D, - maxFragmentShadingRateAttachmentTexelSize: Extent2D, - maxFragmentShadingRateAttachmentTexelSizeAspectRatio: u32, - primitiveFragmentShadingRateWithMultipleViewports: b32, - layeredShadingRateAttachments: b32, - fragmentShadingRateNonTrivialCombinerOps: b32, - maxFragmentSize: Extent2D, - maxFragmentSizeAspectRatio: u32, - maxFragmentShadingRateCoverageSamples: u32, - maxFragmentShadingRateRasterizationSamples: SampleCountFlags, - fragmentShadingRateWithShaderDepthStencilWrites: b32, - fragmentShadingRateWithSampleMask: b32, - fragmentShadingRateWithShaderSampleMask: b32, - fragmentShadingRateWithConservativeRasterization: b32, - fragmentShadingRateWithFragmentShaderInterlock: b32, - fragmentShadingRateWithCustomSampleLocations: b32, - fragmentShadingRateStrictMultiplyCombiner: b32, -} - -PhysicalDeviceFragmentShadingRateKHR :: struct { - sType: StructureType, - pNext: rawptr, - sampleCounts: SampleCountFlags, - fragmentSize: Extent2D, -} - -SurfaceProtectedCapabilitiesKHR :: struct { - sType: StructureType, - pNext: rawptr, - supportsProtected: b32, -} - -PhysicalDevicePresentWaitFeaturesKHR :: struct { - sType: StructureType, - pNext: rawptr, - presentWait: b32, -} - -PhysicalDevicePipelineExecutablePropertiesFeaturesKHR :: struct { - sType: StructureType, - pNext: rawptr, - pipelineExecutableInfo: b32, -} - -PipelineInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - pipeline: Pipeline, -} - -PipelineExecutablePropertiesKHR :: struct { - sType: StructureType, - pNext: rawptr, - stages: ShaderStageFlags, - name: [MAX_DESCRIPTION_SIZE]byte, - description: [MAX_DESCRIPTION_SIZE]byte, - subgroupSize: u32, -} - -PipelineExecutableInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - pipeline: Pipeline, - executableIndex: u32, -} - -PipelineExecutableStatisticValueKHR :: struct #raw_union { - b32: b32, - i64: i64, - u64: u64, - f64: f64, -} - -PipelineExecutableStatisticKHR :: struct { - sType: StructureType, - pNext: rawptr, - name: [MAX_DESCRIPTION_SIZE]byte, - description: [MAX_DESCRIPTION_SIZE]byte, - format: PipelineExecutableStatisticFormatKHR, - value: PipelineExecutableStatisticValueKHR, -} - -PipelineExecutableInternalRepresentationKHR :: struct { - sType: StructureType, - pNext: rawptr, - name: [MAX_DESCRIPTION_SIZE]byte, - description: [MAX_DESCRIPTION_SIZE]byte, - isText: b32, - dataSize: int, - pData: rawptr, -} - -PipelineLibraryCreateInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - libraryCount: u32, - pLibraries: [^]Pipeline, -} - -PresentIdKHR :: struct { - sType: StructureType, - pNext: rawptr, - swapchainCount: u32, - pPresentIds: [^]u64, -} - -PhysicalDevicePresentIdFeaturesKHR :: struct { - sType: StructureType, - pNext: rawptr, - presentId: b32, -} - -QueueFamilyCheckpointProperties2NV :: struct { - sType: StructureType, - pNext: rawptr, - checkpointExecutionStageMask: PipelineStageFlags2, -} - -CheckpointData2NV :: struct { - sType: StructureType, - pNext: rawptr, - stage: PipelineStageFlags2, - pCheckpointMarker: rawptr, -} - -PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR :: struct { - sType: StructureType, - pNext: rawptr, - shaderSubgroupUniformControlFlow: b32, -} - -PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR :: struct { - sType: StructureType, - pNext: rawptr, - workgroupMemoryExplicitLayout: b32, - workgroupMemoryExplicitLayoutScalarBlockLayout: b32, - workgroupMemoryExplicitLayout8BitAccess: b32, - workgroupMemoryExplicitLayout16BitAccess: b32, -} - -DebugReportCallbackCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - flags: DebugReportFlagsEXT, - pfnCallback: ProcDebugReportCallbackEXT, - pUserData: rawptr, -} - -PipelineRasterizationStateRasterizationOrderAMD :: struct { - sType: StructureType, - pNext: rawptr, - rasterizationOrder: RasterizationOrderAMD, -} - -DebugMarkerObjectNameInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - objectType: DebugReportObjectTypeEXT, - object: u64, - pObjectName: cstring, -} - -DebugMarkerObjectTagInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - objectType: DebugReportObjectTypeEXT, - object: u64, - tagName: u64, - tagSize: int, - pTag: rawptr, -} - -DebugMarkerMarkerInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - pMarkerName: cstring, - color: [4]f32, -} - -DedicatedAllocationImageCreateInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - dedicatedAllocation: b32, -} - -DedicatedAllocationBufferCreateInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - dedicatedAllocation: b32, -} - -DedicatedAllocationMemoryAllocateInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - image: Image, - buffer: Buffer, -} - -PhysicalDeviceTransformFeedbackFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - transformFeedback: b32, - geometryStreams: b32, -} - -PhysicalDeviceTransformFeedbackPropertiesEXT :: struct { - sType: StructureType, - pNext: rawptr, - maxTransformFeedbackStreams: u32, - maxTransformFeedbackBuffers: u32, - maxTransformFeedbackBufferSize: DeviceSize, - maxTransformFeedbackStreamDataSize: u32, - maxTransformFeedbackBufferDataSize: u32, - maxTransformFeedbackBufferDataStride: u32, - transformFeedbackQueries: b32, - transformFeedbackStreamsLinesTriangles: b32, - transformFeedbackRasterizationStreamSelect: b32, - transformFeedbackDraw: b32, -} - -PipelineRasterizationStateStreamCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - flags: PipelineRasterizationStateStreamCreateFlagsEXT, - rasterizationStream: u32, -} - -CuModuleCreateInfoNVX :: struct { - sType: StructureType, - pNext: rawptr, - dataSize: int, - pData: rawptr, -} - -CuFunctionCreateInfoNVX :: struct { - sType: StructureType, - pNext: rawptr, - module: CuModuleNVX, - pName: cstring, -} - -CuLaunchInfoNVX :: struct { - sType: StructureType, - pNext: rawptr, - function: CuFunctionNVX, - gridDimX: u32, - gridDimY: u32, - gridDimZ: u32, - blockDimX: u32, - blockDimY: u32, - blockDimZ: u32, - sharedMemBytes: u32, - paramCount: int, - pParams: [^]rawptr, - extraCount: int, - pExtras: [^]rawptr, -} - -ImageViewHandleInfoNVX :: struct { - sType: StructureType, - pNext: rawptr, - imageView: ImageView, - descriptorType: DescriptorType, - sampler: Sampler, -} - -ImageViewAddressPropertiesNVX :: struct { - sType: StructureType, - pNext: rawptr, - deviceAddress: DeviceAddress, - size: DeviceSize, -} - -TextureLODGatherFormatPropertiesAMD :: struct { - sType: StructureType, - pNext: rawptr, - supportsTextureGatherLODBiasAMD: b32, -} - -ShaderResourceUsageAMD :: struct { - numUsedVgprs: u32, - numUsedSgprs: u32, - ldsSizePerLocalWorkGroup: u32, - ldsUsageSizeInBytes: int, - scratchMemUsageInBytes: int, -} - -ShaderStatisticsInfoAMD :: struct { - shaderStageMask: ShaderStageFlags, - resourceUsage: ShaderResourceUsageAMD, - numPhysicalVgprs: u32, - numPhysicalSgprs: u32, - numAvailableVgprs: u32, - numAvailableSgprs: u32, - computeWorkGroupSize: [3]u32, -} - -PhysicalDeviceCornerSampledImageFeaturesNV :: struct { - sType: StructureType, - pNext: rawptr, - cornerSampledImage: b32, -} - -ExternalImageFormatPropertiesNV :: struct { - imageFormatProperties: ImageFormatProperties, - externalMemoryFeatures: ExternalMemoryFeatureFlagsNV, - exportFromImportedHandleTypes: ExternalMemoryHandleTypeFlagsNV, - compatibleHandleTypes: ExternalMemoryHandleTypeFlagsNV, -} - -ExternalMemoryImageCreateInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - handleTypes: ExternalMemoryHandleTypeFlagsNV, -} - -ExportMemoryAllocateInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - handleTypes: ExternalMemoryHandleTypeFlagsNV, -} - -ValidationFlagsEXT :: struct { - sType: StructureType, - pNext: rawptr, - disabledValidationCheckCount: u32, - pDisabledValidationChecks: [^]ValidationCheckEXT, -} - -ImageViewASTCDecodeModeEXT :: struct { - sType: StructureType, - pNext: rawptr, - decodeMode: Format, -} - -PhysicalDeviceASTCDecodeFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - decodeModeSharedExponent: b32, -} - -ConditionalRenderingBeginInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - buffer: Buffer, - offset: DeviceSize, - flags: ConditionalRenderingFlagsEXT, -} - -PhysicalDeviceConditionalRenderingFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - conditionalRendering: b32, - inheritedConditionalRendering: b32, -} - -CommandBufferInheritanceConditionalRenderingInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - conditionalRenderingEnable: b32, -} - -ViewportWScalingNV :: struct { - xcoeff: f32, - ycoeff: f32, -} - -PipelineViewportWScalingStateCreateInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - viewportWScalingEnable: b32, - viewportCount: u32, - pViewportWScalings: [^]ViewportWScalingNV, -} - -SurfaceCapabilities2EXT :: struct { - sType: StructureType, - pNext: rawptr, - minImageCount: u32, - maxImageCount: u32, - currentExtent: Extent2D, - minImageExtent: Extent2D, - maxImageExtent: Extent2D, - maxImageArrayLayers: u32, - supportedTransforms: SurfaceTransformFlagsKHR, - currentTransform: SurfaceTransformFlagsKHR, - supportedCompositeAlpha: CompositeAlphaFlagsKHR, - supportedUsageFlags: ImageUsageFlags, - supportedSurfaceCounters: SurfaceCounterFlagsEXT, -} - -DisplayPowerInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - powerState: DisplayPowerStateEXT, -} - -DeviceEventInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - deviceEvent: DeviceEventTypeEXT, -} - -DisplayEventInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - displayEvent: DisplayEventTypeEXT, -} - -SwapchainCounterCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - surfaceCounters: SurfaceCounterFlagsEXT, -} - -RefreshCycleDurationGOOGLE :: struct { - refreshDuration: u64, -} - -PastPresentationTimingGOOGLE :: struct { - presentID: u32, - desiredPresentTime: u64, - actualPresentTime: u64, - earliestPresentTime: u64, - presentMargin: u64, -} - -PresentTimeGOOGLE :: struct { - presentID: u32, - desiredPresentTime: u64, -} - -PresentTimesInfoGOOGLE :: struct { - sType: StructureType, - pNext: rawptr, - swapchainCount: u32, - pTimes: [^]PresentTimeGOOGLE, -} - -PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX :: struct { - sType: StructureType, - pNext: rawptr, - perViewPositionAllComponents: b32, -} - -ViewportSwizzleNV :: struct { - x: ViewportCoordinateSwizzleNV, - y: ViewportCoordinateSwizzleNV, - z: ViewportCoordinateSwizzleNV, - w: ViewportCoordinateSwizzleNV, -} - -PipelineViewportSwizzleStateCreateInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - flags: PipelineViewportSwizzleStateCreateFlagsNV, - viewportCount: u32, - pViewportSwizzles: [^]ViewportSwizzleNV, -} - -PhysicalDeviceDiscardRectanglePropertiesEXT :: struct { - sType: StructureType, - pNext: rawptr, - maxDiscardRectangles: u32, -} - -PipelineDiscardRectangleStateCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - flags: PipelineDiscardRectangleStateCreateFlagsEXT, - discardRectangleMode: DiscardRectangleModeEXT, - discardRectangleCount: u32, - pDiscardRectangles: [^]Rect2D, -} - -PhysicalDeviceConservativeRasterizationPropertiesEXT :: struct { - sType: StructureType, - pNext: rawptr, - primitiveOverestimationSize: f32, - maxExtraPrimitiveOverestimationSize: f32, - extraPrimitiveOverestimationSizeGranularity: f32, - primitiveUnderestimation: b32, - conservativePointAndLineRasterization: b32, - degenerateTrianglesRasterized: b32, - degenerateLinesRasterized: b32, - fullyCoveredFragmentShaderInputVariable: b32, - conservativeRasterizationPostDepthCoverage: b32, -} - -PipelineRasterizationConservativeStateCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - flags: PipelineRasterizationConservativeStateCreateFlagsEXT, - conservativeRasterizationMode: ConservativeRasterizationModeEXT, - extraPrimitiveOverestimationSize: f32, -} - -PhysicalDeviceDepthClipEnableFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - depthClipEnable: b32, -} - -PipelineRasterizationDepthClipStateCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - flags: PipelineRasterizationDepthClipStateCreateFlagsEXT, - depthClipEnable: b32, -} - -XYColorEXT :: struct { - x: f32, - y: f32, -} - -HdrMetadataEXT :: struct { - sType: StructureType, - pNext: rawptr, - displayPrimaryRed: XYColorEXT, - displayPrimaryGreen: XYColorEXT, - displayPrimaryBlue: XYColorEXT, - whitePoint: XYColorEXT, - maxLuminance: f32, - minLuminance: f32, - maxContentLightLevel: f32, - maxFrameAverageLightLevel: f32, -} - -DebugUtilsLabelEXT :: struct { - sType: StructureType, - pNext: rawptr, - pLabelName: cstring, - color: [4]f32, -} - -DebugUtilsObjectNameInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - objectType: ObjectType, - objectHandle: u64, - pObjectName: cstring, -} - -DebugUtilsMessengerCallbackDataEXT :: struct { - sType: StructureType, - pNext: rawptr, - flags: DebugUtilsMessengerCallbackDataFlagsEXT, - pMessageIdName: cstring, - messageIdNumber: i32, - pMessage: cstring, - queueLabelCount: u32, - pQueueLabels: [^]DebugUtilsLabelEXT, - cmdBufLabelCount: u32, - pCmdBufLabels: [^]DebugUtilsLabelEXT, - objectCount: u32, - pObjects: [^]DebugUtilsObjectNameInfoEXT, -} - -DebugUtilsMessengerCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - flags: DebugUtilsMessengerCreateFlagsEXT, - messageSeverity: DebugUtilsMessageSeverityFlagsEXT, - messageType: DebugUtilsMessageTypeFlagsEXT, - pfnUserCallback: ProcDebugUtilsMessengerCallbackEXT, - pUserData: rawptr, -} - -DebugUtilsObjectTagInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - objectType: ObjectType, - objectHandle: u64, - tagName: u64, - tagSize: int, - pTag: rawptr, -} - -SampleLocationEXT :: struct { - x: f32, - y: f32, -} - -SampleLocationsInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - sampleLocationsPerPixel: SampleCountFlags, - sampleLocationGridSize: Extent2D, - sampleLocationsCount: u32, - pSampleLocations: [^]SampleLocationEXT, -} - -AttachmentSampleLocationsEXT :: struct { - attachmentIndex: u32, - sampleLocationsInfo: SampleLocationsInfoEXT, -} - -SubpassSampleLocationsEXT :: struct { - subpassIndex: u32, - sampleLocationsInfo: SampleLocationsInfoEXT, -} - -RenderPassSampleLocationsBeginInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - attachmentInitialSampleLocationsCount: u32, - pAttachmentInitialSampleLocations: [^]AttachmentSampleLocationsEXT, - postSubpassSampleLocationsCount: u32, - pPostSubpassSampleLocations: [^]SubpassSampleLocationsEXT, -} - -PipelineSampleLocationsStateCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - sampleLocationsEnable: b32, - sampleLocationsInfo: SampleLocationsInfoEXT, -} - -PhysicalDeviceSampleLocationsPropertiesEXT :: struct { - sType: StructureType, - pNext: rawptr, - sampleLocationSampleCounts: SampleCountFlags, - maxSampleLocationGridSize: Extent2D, - sampleLocationCoordinateRange: [2]f32, - sampleLocationSubPixelBits: u32, - variableSampleLocations: b32, -} - -MultisamplePropertiesEXT :: struct { - sType: StructureType, - pNext: rawptr, - maxSampleLocationGridSize: Extent2D, -} - -PhysicalDeviceBlendOperationAdvancedFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - advancedBlendCoherentOperations: b32, -} - -PhysicalDeviceBlendOperationAdvancedPropertiesEXT :: struct { - sType: StructureType, - pNext: rawptr, - advancedBlendMaxColorAttachments: u32, - advancedBlendIndependentBlend: b32, - advancedBlendNonPremultipliedSrcColor: b32, - advancedBlendNonPremultipliedDstColor: b32, - advancedBlendCorrelatedOverlap: b32, - advancedBlendAllOperations: b32, -} - -PipelineColorBlendAdvancedStateCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - srcPremultiplied: b32, - dstPremultiplied: b32, - blendOverlap: BlendOverlapEXT, -} - -PipelineCoverageToColorStateCreateInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - flags: PipelineCoverageToColorStateCreateFlagsNV, - coverageToColorEnable: b32, - coverageToColorLocation: u32, -} - -PipelineCoverageModulationStateCreateInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - flags: PipelineCoverageModulationStateCreateFlagsNV, - coverageModulationMode: CoverageModulationModeNV, - coverageModulationTableEnable: b32, - coverageModulationTableCount: u32, - pCoverageModulationTable: [^]f32, -} - -PhysicalDeviceShaderSMBuiltinsPropertiesNV :: struct { - sType: StructureType, - pNext: rawptr, - shaderSMCount: u32, - shaderWarpsPerSM: u32, -} - -PhysicalDeviceShaderSMBuiltinsFeaturesNV :: struct { - sType: StructureType, - pNext: rawptr, - shaderSMBuiltins: b32, -} - -DrmFormatModifierPropertiesEXT :: struct { - drmFormatModifier: u64, - drmFormatModifierPlaneCount: u32, - drmFormatModifierTilingFeatures: FormatFeatureFlags, -} - -DrmFormatModifierPropertiesListEXT :: struct { - sType: StructureType, - pNext: rawptr, - drmFormatModifierCount: u32, - pDrmFormatModifierProperties: [^]DrmFormatModifierPropertiesEXT, -} - -PhysicalDeviceImageDrmFormatModifierInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - drmFormatModifier: u64, - sharingMode: SharingMode, - queueFamilyIndexCount: u32, - pQueueFamilyIndices: [^]u32, -} - -ImageDrmFormatModifierListCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - drmFormatModifierCount: u32, - pDrmFormatModifiers: [^]u64, -} - -ImageDrmFormatModifierExplicitCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - drmFormatModifier: u64, - drmFormatModifierPlaneCount: u32, - pPlaneLayouts: [^]SubresourceLayout, -} - -ImageDrmFormatModifierPropertiesEXT :: struct { - sType: StructureType, - pNext: rawptr, - drmFormatModifier: u64, -} - -DrmFormatModifierProperties2EXT :: struct { - drmFormatModifier: u64, - drmFormatModifierPlaneCount: u32, - drmFormatModifierTilingFeatures: FormatFeatureFlags2, -} - -DrmFormatModifierPropertiesList2EXT :: struct { - sType: StructureType, - pNext: rawptr, - drmFormatModifierCount: u32, - pDrmFormatModifierProperties: [^]DrmFormatModifierProperties2EXT, -} - -ValidationCacheCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - flags: ValidationCacheCreateFlagsEXT, - initialDataSize: int, - pInitialData: rawptr, -} - -ShaderModuleValidationCacheCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - validationCache: ValidationCacheEXT, -} - -ShadingRatePaletteNV :: struct { - shadingRatePaletteEntryCount: u32, - pShadingRatePaletteEntries: [^]ShadingRatePaletteEntryNV, -} - -PipelineViewportShadingRateImageStateCreateInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - shadingRateImageEnable: b32, - viewportCount: u32, - pShadingRatePalettes: [^]ShadingRatePaletteNV, -} - -PhysicalDeviceShadingRateImageFeaturesNV :: struct { - sType: StructureType, - pNext: rawptr, - shadingRateImage: b32, - shadingRateCoarseSampleOrder: b32, -} - -PhysicalDeviceShadingRateImagePropertiesNV :: struct { - sType: StructureType, - pNext: rawptr, - shadingRateTexelSize: Extent2D, - shadingRatePaletteSize: u32, - shadingRateMaxCoarseSamples: u32, -} - -CoarseSampleLocationNV :: struct { - pixelX: u32, - pixelY: u32, - sample: u32, -} - -CoarseSampleOrderCustomNV :: struct { - shadingRate: ShadingRatePaletteEntryNV, - sampleCount: u32, - sampleLocationCount: u32, - pSampleLocations: [^]CoarseSampleLocationNV, -} - -PipelineViewportCoarseSampleOrderStateCreateInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - sampleOrderType: CoarseSampleOrderTypeNV, - customSampleOrderCount: u32, - pCustomSampleOrders: [^]CoarseSampleOrderCustomNV, -} - -RayTracingShaderGroupCreateInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - type: RayTracingShaderGroupTypeKHR, - generalShader: u32, - closestHitShader: u32, - anyHitShader: u32, - intersectionShader: u32, -} - -RayTracingPipelineCreateInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - flags: PipelineCreateFlags, - stageCount: u32, - pStages: [^]PipelineShaderStageCreateInfo, - groupCount: u32, - pGroups: [^]RayTracingShaderGroupCreateInfoNV, - maxRecursionDepth: u32, - layout: PipelineLayout, - basePipelineHandle: Pipeline, - basePipelineIndex: i32, -} - -GeometryTrianglesNV :: struct { - sType: StructureType, - pNext: rawptr, - vertexData: Buffer, - vertexOffset: DeviceSize, - vertexCount: u32, - vertexStride: DeviceSize, - vertexFormat: Format, - indexData: Buffer, - indexOffset: DeviceSize, - indexCount: u32, - indexType: IndexType, - transformData: Buffer, - transformOffset: DeviceSize, -} - -GeometryAABBNV :: struct { - sType: StructureType, - pNext: rawptr, - aabbData: Buffer, - numAABBs: u32, - stride: u32, - offset: DeviceSize, -} - -GeometryDataNV :: struct { - triangles: GeometryTrianglesNV, - aabbs: GeometryAABBNV, -} - -GeometryNV :: struct { - sType: StructureType, - pNext: rawptr, - geometryType: GeometryTypeKHR, - geometry: GeometryDataNV, - flags: GeometryFlagsKHR, -} - -AccelerationStructureInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - type: AccelerationStructureTypeNV, - flags: BuildAccelerationStructureFlagsNV, - instanceCount: u32, - geometryCount: u32, - pGeometries: [^]GeometryNV, -} - -AccelerationStructureCreateInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - compactedSize: DeviceSize, - info: AccelerationStructureInfoNV, -} - -BindAccelerationStructureMemoryInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - accelerationStructure: AccelerationStructureNV, - memory: DeviceMemory, - memoryOffset: DeviceSize, - deviceIndexCount: u32, - pDeviceIndices: [^]u32, -} - -WriteDescriptorSetAccelerationStructureNV :: struct { - sType: StructureType, - pNext: rawptr, - accelerationStructureCount: u32, - pAccelerationStructures: [^]AccelerationStructureNV, -} - -AccelerationStructureMemoryRequirementsInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - type: AccelerationStructureMemoryRequirementsTypeNV, - accelerationStructure: AccelerationStructureNV, -} - -PhysicalDeviceRayTracingPropertiesNV :: struct { - sType: StructureType, - pNext: rawptr, - shaderGroupHandleSize: u32, - maxRecursionDepth: u32, - maxShaderGroupStride: u32, - shaderGroupBaseAlignment: u32, - maxGeometryCount: u64, - maxInstanceCount: u64, - maxTriangleCount: u64, - maxDescriptorSetAccelerationStructures: u32, -} - -TransformMatrixKHR :: struct { - mat: [3][4]f32, -} - -AabbPositionsKHR :: struct { - minX: f32, - minY: f32, - minZ: f32, - maxX: f32, - maxY: f32, - maxZ: f32, -} - -AccelerationStructureInstanceKHR :: struct { - transform: TransformMatrixKHR, - accelerationStructureReference: u64, -} - -PhysicalDeviceRepresentativeFragmentTestFeaturesNV :: struct { - sType: StructureType, - pNext: rawptr, - representativeFragmentTest: b32, -} - -PipelineRepresentativeFragmentTestStateCreateInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - representativeFragmentTestEnable: b32, -} - -PhysicalDeviceImageViewImageFormatInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - imageViewType: ImageViewType, -} - -FilterCubicImageViewImageFormatPropertiesEXT :: struct { - sType: StructureType, - pNext: rawptr, - filterCubic: b32, - filterCubicMinmax: b32, -} - -ImportMemoryHostPointerInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - handleType: ExternalMemoryHandleTypeFlags, - pHostPointer: rawptr, -} - -MemoryHostPointerPropertiesEXT :: struct { - sType: StructureType, - pNext: rawptr, - memoryTypeBits: u32, -} - -PhysicalDeviceExternalMemoryHostPropertiesEXT :: struct { - sType: StructureType, - pNext: rawptr, - minImportedHostPointerAlignment: DeviceSize, -} - -PipelineCompilerControlCreateInfoAMD :: struct { - sType: StructureType, - pNext: rawptr, - compilerControlFlags: PipelineCompilerControlFlagsAMD, -} - -CalibratedTimestampInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - timeDomain: TimeDomainEXT, -} - -PhysicalDeviceShaderCorePropertiesAMD :: struct { - sType: StructureType, - pNext: rawptr, - shaderEngineCount: u32, - shaderArraysPerEngineCount: u32, - computeUnitsPerShaderArray: u32, - simdPerComputeUnit: u32, - wavefrontsPerSimd: u32, - wavefrontSize: u32, - sgprsPerSimd: u32, - minSgprAllocation: u32, - maxSgprAllocation: u32, - sgprAllocationGranularity: u32, - vgprsPerSimd: u32, - minVgprAllocation: u32, - maxVgprAllocation: u32, - vgprAllocationGranularity: u32, -} - -DeviceMemoryOverallocationCreateInfoAMD :: struct { - sType: StructureType, - pNext: rawptr, - overallocationBehavior: MemoryOverallocationBehaviorAMD, -} - -PhysicalDeviceVertexAttributeDivisorPropertiesEXT :: struct { - sType: StructureType, - pNext: rawptr, - maxVertexAttribDivisor: u32, -} - -VertexInputBindingDivisorDescriptionEXT :: struct { - binding: u32, - divisor: u32, -} - -PipelineVertexInputDivisorStateCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - vertexBindingDivisorCount: u32, - pVertexBindingDivisors: [^]VertexInputBindingDivisorDescriptionEXT, -} - -PhysicalDeviceVertexAttributeDivisorFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - vertexAttributeInstanceRateDivisor: b32, - vertexAttributeInstanceRateZeroDivisor: b32, -} - -PhysicalDeviceComputeShaderDerivativesFeaturesNV :: struct { - sType: StructureType, - pNext: rawptr, - computeDerivativeGroupQuads: b32, - computeDerivativeGroupLinear: b32, -} - -PhysicalDeviceMeshShaderFeaturesNV :: struct { - sType: StructureType, - pNext: rawptr, - taskShader: b32, - meshShader: b32, -} - -PhysicalDeviceMeshShaderPropertiesNV :: struct { - sType: StructureType, - pNext: rawptr, - maxDrawMeshTasksCount: u32, - maxTaskWorkGroupInvocations: u32, - maxTaskWorkGroupSize: [3]u32, - maxTaskTotalMemorySize: u32, - maxTaskOutputCount: u32, - maxMeshWorkGroupInvocations: u32, - maxMeshWorkGroupSize: [3]u32, - maxMeshTotalMemorySize: u32, - maxMeshOutputVertices: u32, - maxMeshOutputPrimitives: u32, - maxMeshMultiviewViewCount: u32, - meshOutputPerVertexGranularity: u32, - meshOutputPerPrimitiveGranularity: u32, -} - -DrawMeshTasksIndirectCommandNV :: struct { - taskCount: u32, - firstTask: u32, -} - -PhysicalDeviceFragmentShaderBarycentricFeaturesNV :: struct { - sType: StructureType, - pNext: rawptr, - fragmentShaderBarycentric: b32, -} - -PhysicalDeviceShaderImageFootprintFeaturesNV :: struct { - sType: StructureType, - pNext: rawptr, - imageFootprint: b32, -} - -PipelineViewportExclusiveScissorStateCreateInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - exclusiveScissorCount: u32, - pExclusiveScissors: [^]Rect2D, -} - -PhysicalDeviceExclusiveScissorFeaturesNV :: struct { - sType: StructureType, - pNext: rawptr, - exclusiveScissor: b32, -} - -QueueFamilyCheckpointPropertiesNV :: struct { - sType: StructureType, - pNext: rawptr, - checkpointExecutionStageMask: PipelineStageFlags, -} - -CheckpointDataNV :: struct { - sType: StructureType, - pNext: rawptr, - stage: PipelineStageFlags, - pCheckpointMarker: rawptr, -} - -PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL :: struct { - sType: StructureType, - pNext: rawptr, - shaderIntegerFunctions2: b32, -} - -PerformanceValueDataINTEL :: struct #raw_union { - value32: u32, - value64: u64, - valueFloat: f32, - valueBool: b32, - valueString: cstring, -} - -PerformanceValueINTEL :: struct { - type: PerformanceValueTypeINTEL, - data: PerformanceValueDataINTEL, -} - -InitializePerformanceApiInfoINTEL :: struct { - sType: StructureType, - pNext: rawptr, - pUserData: rawptr, -} - -QueryPoolPerformanceQueryCreateInfoINTEL :: struct { - sType: StructureType, - pNext: rawptr, - performanceCountersSampling: QueryPoolSamplingModeINTEL, -} - -PerformanceMarkerInfoINTEL :: struct { - sType: StructureType, - pNext: rawptr, - marker: u64, -} - -PerformanceStreamMarkerInfoINTEL :: struct { - sType: StructureType, - pNext: rawptr, - marker: u32, -} - -PerformanceOverrideInfoINTEL :: struct { - sType: StructureType, - pNext: rawptr, - type: PerformanceOverrideTypeINTEL, - enable: b32, - parameter: u64, -} - -PerformanceConfigurationAcquireInfoINTEL :: struct { - sType: StructureType, - pNext: rawptr, - type: PerformanceConfigurationTypeINTEL, -} - -PhysicalDevicePCIBusInfoPropertiesEXT :: struct { - sType: StructureType, - pNext: rawptr, - pciDomain: u32, - pciBus: u32, - pciDevice: u32, - pciFunction: u32, -} - -DisplayNativeHdrSurfaceCapabilitiesAMD :: struct { - sType: StructureType, - pNext: rawptr, - localDimmingSupport: b32, -} - -SwapchainDisplayNativeHdrCreateInfoAMD :: struct { - sType: StructureType, - pNext: rawptr, - localDimmingEnable: b32, -} - -PhysicalDeviceFragmentDensityMapFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - fragmentDensityMap: b32, - fragmentDensityMapDynamic: b32, - fragmentDensityMapNonSubsampledImages: b32, -} - -PhysicalDeviceFragmentDensityMapPropertiesEXT :: struct { - sType: StructureType, - pNext: rawptr, - minFragmentDensityTexelSize: Extent2D, - maxFragmentDensityTexelSize: Extent2D, - fragmentDensityInvocations: b32, -} - -RenderPassFragmentDensityMapCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - fragmentDensityMapAttachment: AttachmentReference, -} - -PhysicalDeviceShaderCoreProperties2AMD :: struct { - sType: StructureType, - pNext: rawptr, - shaderCoreFeatures: ShaderCorePropertiesFlagsAMD, - activeComputeUnitCount: u32, -} - -PhysicalDeviceCoherentMemoryFeaturesAMD :: struct { - sType: StructureType, - pNext: rawptr, - deviceCoherentMemory: b32, -} - -PhysicalDeviceShaderImageAtomicInt64FeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - shaderImageInt64Atomics: b32, - sparseImageInt64Atomics: b32, -} - -PhysicalDeviceMemoryBudgetPropertiesEXT :: struct { - sType: StructureType, - pNext: rawptr, - heapBudget: [MAX_MEMORY_HEAPS]DeviceSize, - heapUsage: [MAX_MEMORY_HEAPS]DeviceSize, -} - -PhysicalDeviceMemoryPriorityFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - memoryPriority: b32, -} - -MemoryPriorityAllocateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - priority: f32, -} - -PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV :: struct { - sType: StructureType, - pNext: rawptr, - dedicatedAllocationImageAliasing: b32, -} - -PhysicalDeviceBufferDeviceAddressFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - bufferDeviceAddress: b32, - bufferDeviceAddressCaptureReplay: b32, - bufferDeviceAddressMultiDevice: b32, -} - -BufferDeviceAddressCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - deviceAddress: DeviceAddress, -} - -ValidationFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - enabledValidationFeatureCount: u32, - pEnabledValidationFeatures: [^]ValidationFeatureEnableEXT, - disabledValidationFeatureCount: u32, - pDisabledValidationFeatures: [^]ValidationFeatureDisableEXT, -} - -CooperativeMatrixPropertiesNV :: struct { - sType: StructureType, - pNext: rawptr, - MSize: u32, - NSize: u32, - KSize: u32, - AType: ComponentTypeNV, - BType: ComponentTypeNV, - CType: ComponentTypeNV, - DType: ComponentTypeNV, - scope: ScopeNV, -} - -PhysicalDeviceCooperativeMatrixFeaturesNV :: struct { - sType: StructureType, - pNext: rawptr, - cooperativeMatrix: b32, - cooperativeMatrixRobustBufferAccess: b32, -} - -PhysicalDeviceCooperativeMatrixPropertiesNV :: struct { - sType: StructureType, - pNext: rawptr, - cooperativeMatrixSupportedStages: ShaderStageFlags, -} - -PhysicalDeviceCoverageReductionModeFeaturesNV :: struct { - sType: StructureType, - pNext: rawptr, - coverageReductionMode: b32, -} - -PipelineCoverageReductionStateCreateInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - flags: PipelineCoverageReductionStateCreateFlagsNV, - coverageReductionMode: CoverageReductionModeNV, -} - -FramebufferMixedSamplesCombinationNV :: struct { - sType: StructureType, - pNext: rawptr, - coverageReductionMode: CoverageReductionModeNV, - rasterizationSamples: SampleCountFlags, - depthStencilSamples: SampleCountFlags, - colorSamples: SampleCountFlags, -} - -PhysicalDeviceFragmentShaderInterlockFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - fragmentShaderSampleInterlock: b32, - fragmentShaderPixelInterlock: b32, - fragmentShaderShadingRateInterlock: b32, -} - -PhysicalDeviceYcbcrImageArraysFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - ycbcrImageArrays: b32, -} - -PhysicalDeviceProvokingVertexFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - provokingVertexLast: b32, - transformFeedbackPreservesProvokingVertex: b32, -} - -PhysicalDeviceProvokingVertexPropertiesEXT :: struct { - sType: StructureType, - pNext: rawptr, - provokingVertexModePerPipeline: b32, - transformFeedbackPreservesTriangleFanProvokingVertex: b32, -} - -PipelineRasterizationProvokingVertexStateCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - provokingVertexMode: ProvokingVertexModeEXT, -} - -HeadlessSurfaceCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - flags: HeadlessSurfaceCreateFlagsEXT, -} - -PhysicalDeviceLineRasterizationFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - rectangularLines: b32, - bresenhamLines: b32, - smoothLines: b32, - stippledRectangularLines: b32, - stippledBresenhamLines: b32, - stippledSmoothLines: b32, -} - -PhysicalDeviceLineRasterizationPropertiesEXT :: struct { - sType: StructureType, - pNext: rawptr, - lineSubPixelPrecisionBits: u32, -} - -PipelineRasterizationLineStateCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - lineRasterizationMode: LineRasterizationModeEXT, - stippledLineEnable: b32, - lineStippleFactor: u32, - lineStipplePattern: u16, -} - -PhysicalDeviceShaderAtomicFloatFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - shaderBufferFloat32Atomics: b32, - shaderBufferFloat32AtomicAdd: b32, - shaderBufferFloat64Atomics: b32, - shaderBufferFloat64AtomicAdd: b32, - shaderSharedFloat32Atomics: b32, - shaderSharedFloat32AtomicAdd: b32, - shaderSharedFloat64Atomics: b32, - shaderSharedFloat64AtomicAdd: b32, - shaderImageFloat32Atomics: b32, - shaderImageFloat32AtomicAdd: b32, - sparseImageFloat32Atomics: b32, - sparseImageFloat32AtomicAdd: b32, -} - -PhysicalDeviceIndexTypeUint8FeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - indexTypeUint8: b32, -} - -PhysicalDeviceExtendedDynamicStateFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - extendedDynamicState: b32, -} - -PhysicalDeviceShaderAtomicFloat2FeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - shaderBufferFloat16Atomics: b32, - shaderBufferFloat16AtomicAdd: b32, - shaderBufferFloat16AtomicMinMax: b32, - shaderBufferFloat32AtomicMinMax: b32, - shaderBufferFloat64AtomicMinMax: b32, - shaderSharedFloat16Atomics: b32, - shaderSharedFloat16AtomicAdd: b32, - shaderSharedFloat16AtomicMinMax: b32, - shaderSharedFloat32AtomicMinMax: b32, - shaderSharedFloat64AtomicMinMax: b32, - shaderImageFloat32AtomicMinMax: b32, - sparseImageFloat32AtomicMinMax: b32, -} - -PhysicalDeviceDeviceGeneratedCommandsPropertiesNV :: struct { - sType: StructureType, - pNext: rawptr, - maxGraphicsShaderGroupCount: u32, - maxIndirectSequenceCount: u32, - maxIndirectCommandsTokenCount: u32, - maxIndirectCommandsStreamCount: u32, - maxIndirectCommandsTokenOffset: u32, - maxIndirectCommandsStreamStride: u32, - minSequencesCountBufferOffsetAlignment: u32, - minSequencesIndexBufferOffsetAlignment: u32, - minIndirectCommandsBufferOffsetAlignment: u32, -} - -PhysicalDeviceDeviceGeneratedCommandsFeaturesNV :: struct { - sType: StructureType, - pNext: rawptr, - deviceGeneratedCommands: b32, -} - -GraphicsShaderGroupCreateInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - stageCount: u32, - pStages: [^]PipelineShaderStageCreateInfo, - pVertexInputState: ^PipelineVertexInputStateCreateInfo, - pTessellationState: ^PipelineTessellationStateCreateInfo, -} - -GraphicsPipelineShaderGroupsCreateInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - groupCount: u32, - pGroups: [^]GraphicsShaderGroupCreateInfoNV, - pipelineCount: u32, - pPipelines: [^]Pipeline, -} - -BindShaderGroupIndirectCommandNV :: struct { - groupIndex: u32, -} - -BindIndexBufferIndirectCommandNV :: struct { - bufferAddress: DeviceAddress, - size: u32, - indexType: IndexType, -} - -BindVertexBufferIndirectCommandNV :: struct { - bufferAddress: DeviceAddress, - size: u32, - stride: u32, -} - -SetStateFlagsIndirectCommandNV :: struct { - data: u32, -} - -IndirectCommandsStreamNV :: struct { - buffer: Buffer, - offset: DeviceSize, -} - -IndirectCommandsLayoutTokenNV :: struct { - sType: StructureType, - pNext: rawptr, - tokenType: IndirectCommandsTokenTypeNV, - stream: u32, - offset: u32, - vertexBindingUnit: u32, - vertexDynamicStride: b32, - pushconstantPipelineLayout: PipelineLayout, - pushconstantShaderStageFlags: ShaderStageFlags, - pushconstantOffset: u32, - pushconstantSize: u32, - indirectStateFlags: IndirectStateFlagsNV, - indexTypeCount: u32, - pIndexTypes: [^]IndexType, - pIndexTypeValues: [^]u32, -} - -IndirectCommandsLayoutCreateInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - flags: IndirectCommandsLayoutUsageFlagsNV, - pipelineBindPoint: PipelineBindPoint, - tokenCount: u32, - pTokens: [^]IndirectCommandsLayoutTokenNV, - streamCount: u32, - pStreamStrides: [^]u32, -} - -GeneratedCommandsInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - pipelineBindPoint: PipelineBindPoint, - pipeline: Pipeline, - indirectCommandsLayout: IndirectCommandsLayoutNV, - streamCount: u32, - pStreams: [^]IndirectCommandsStreamNV, - sequencesCount: u32, - preprocessBuffer: Buffer, - preprocessOffset: DeviceSize, - preprocessSize: DeviceSize, - sequencesCountBuffer: Buffer, - sequencesCountOffset: DeviceSize, - sequencesIndexBuffer: Buffer, - sequencesIndexOffset: DeviceSize, -} - -GeneratedCommandsMemoryRequirementsInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - pipelineBindPoint: PipelineBindPoint, - pipeline: Pipeline, - indirectCommandsLayout: IndirectCommandsLayoutNV, - maxSequencesCount: u32, -} - -PhysicalDeviceInheritedViewportScissorFeaturesNV :: struct { - sType: StructureType, - pNext: rawptr, - inheritedViewportScissor2D: b32, -} - -CommandBufferInheritanceViewportScissorInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - viewportScissor2D: b32, - viewportDepthCount: u32, - pViewportDepths: [^]Viewport, -} - -PhysicalDeviceTexelBufferAlignmentFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - texelBufferAlignment: b32, -} - -RenderPassTransformBeginInfoQCOM :: struct { - sType: StructureType, - pNext: rawptr, - transform: SurfaceTransformFlagsKHR, -} - -CommandBufferInheritanceRenderPassTransformInfoQCOM :: struct { - sType: StructureType, - pNext: rawptr, - transform: SurfaceTransformFlagsKHR, - renderArea: Rect2D, -} - -PhysicalDeviceDeviceMemoryReportFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - deviceMemoryReport: b32, -} - -DeviceMemoryReportCallbackDataEXT :: struct { - sType: StructureType, - pNext: rawptr, - flags: DeviceMemoryReportFlagsEXT, - type: DeviceMemoryReportEventTypeEXT, - memoryObjectId: u64, - size: DeviceSize, - objectType: ObjectType, - objectHandle: u64, - heapIndex: u32, -} - -DeviceDeviceMemoryReportCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - flags: DeviceMemoryReportFlagsEXT, - pfnUserCallback: ProcDeviceMemoryReportCallbackEXT, - pUserData: rawptr, -} - -PhysicalDeviceRobustness2FeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - robustBufferAccess2: b32, - robustImageAccess2: b32, - nullDescriptor: b32, -} - -PhysicalDeviceRobustness2PropertiesEXT :: struct { - sType: StructureType, - pNext: rawptr, - robustStorageBufferAccessSizeAlignment: DeviceSize, - robustUniformBufferAccessSizeAlignment: DeviceSize, -} - -SamplerCustomBorderColorCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - customBorderColor: ClearColorValue, - format: Format, -} - -PhysicalDeviceCustomBorderColorPropertiesEXT :: struct { - sType: StructureType, - pNext: rawptr, - maxCustomBorderColorSamplers: u32, -} - -PhysicalDeviceCustomBorderColorFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - customBorderColors: b32, - customBorderColorWithoutFormat: b32, -} - -PhysicalDeviceDiagnosticsConfigFeaturesNV :: struct { - sType: StructureType, - pNext: rawptr, - diagnosticsConfig: b32, -} - -DeviceDiagnosticsConfigCreateInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - flags: DeviceDiagnosticsConfigFlagsNV, -} - -PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - graphicsPipelineLibrary: b32, -} - -PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT :: struct { - sType: StructureType, - pNext: rawptr, - graphicsPipelineLibraryFastLinking: b32, - graphicsPipelineLibraryIndependentInterpolationDecoration: b32, -} - -GraphicsPipelineLibraryCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - flags: GraphicsPipelineLibraryFlagsEXT, -} - -PhysicalDeviceFragmentShadingRateEnumsFeaturesNV :: struct { - sType: StructureType, - pNext: rawptr, - fragmentShadingRateEnums: b32, - supersampleFragmentShadingRates: b32, - noInvocationFragmentShadingRates: b32, -} - -PhysicalDeviceFragmentShadingRateEnumsPropertiesNV :: struct { - sType: StructureType, - pNext: rawptr, - maxFragmentShadingRateInvocationCount: SampleCountFlags, -} - -PipelineFragmentShadingRateEnumStateCreateInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - shadingRateType: FragmentShadingRateTypeNV, - shadingRate: FragmentShadingRateNV, - combinerOps: [2]FragmentShadingRateCombinerOpKHR, -} - -DeviceOrHostAddressConstKHR :: struct #raw_union { - deviceAddress: DeviceAddress, - hostAddress: rawptr, -} - -AccelerationStructureGeometryMotionTrianglesDataNV :: struct { - sType: StructureType, - pNext: rawptr, - vertexData: DeviceOrHostAddressConstKHR, -} - -AccelerationStructureMotionInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - maxInstances: u32, - flags: AccelerationStructureMotionInfoFlagsNV, -} - -AccelerationStructureMatrixMotionInstanceNV :: struct { - transformT0: TransformMatrixKHR, - transformT1: TransformMatrixKHR, - accelerationStructureReference: u64, -} - -SRTDataNV :: struct { - sx: f32, - a: f32, - b: f32, - pvx: f32, - sy: f32, - c: f32, - pvy: f32, - sz: f32, - pvz: f32, - qx: f32, - qy: f32, - qz: f32, - qw: f32, - tx: f32, - ty: f32, - tz: f32, -} - -AccelerationStructureSRTMotionInstanceNV :: struct { - transformT0: SRTDataNV, - transformT1: SRTDataNV, - accelerationStructureReference: u64, -} - -AccelerationStructureMotionInstanceDataNV :: struct #raw_union { - staticInstance: AccelerationStructureInstanceKHR, - matrixMotionInstance: AccelerationStructureMatrixMotionInstanceNV, - srtMotionInstance: AccelerationStructureSRTMotionInstanceNV, -} - -AccelerationStructureMotionInstanceNV :: struct { - type: AccelerationStructureMotionInstanceTypeNV, - flags: AccelerationStructureMotionInstanceFlagsNV, - data: AccelerationStructureMotionInstanceDataNV, -} - -PhysicalDeviceRayTracingMotionBlurFeaturesNV :: struct { - sType: StructureType, - pNext: rawptr, - rayTracingMotionBlur: b32, - rayTracingMotionBlurPipelineTraceRaysIndirect: b32, -} - -PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - ycbcr2plane444Formats: b32, -} - -PhysicalDeviceFragmentDensityMap2FeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - fragmentDensityMapDeferred: b32, -} - -PhysicalDeviceFragmentDensityMap2PropertiesEXT :: struct { - sType: StructureType, - pNext: rawptr, - subsampledLoads: b32, - subsampledCoarseReconstructionEarlyAccess: b32, - maxSubsampledArrayLayers: u32, - maxDescriptorSetSubsampledSamplers: u32, -} - -CopyCommandTransformInfoQCOM :: struct { - sType: StructureType, - pNext: rawptr, - transform: SurfaceTransformFlagsKHR, -} - -PhysicalDevice4444FormatsFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - formatA4R4G4B4: b32, - formatA4B4G4R4: b32, -} - -PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM :: struct { - sType: StructureType, - pNext: rawptr, - rasterizationOrderColorAttachmentAccess: b32, - rasterizationOrderDepthAttachmentAccess: b32, - rasterizationOrderStencilAttachmentAccess: b32, -} - -PhysicalDeviceRGBA10X6FormatsFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - formatRgba10x6WithoutYCbCrSampler: b32, -} - -PhysicalDeviceMutableDescriptorTypeFeaturesVALVE :: struct { - sType: StructureType, - pNext: rawptr, - mutableDescriptorType: b32, -} - -MutableDescriptorTypeListVALVE :: struct { - descriptorTypeCount: u32, - pDescriptorTypes: [^]DescriptorType, -} - -MutableDescriptorTypeCreateInfoVALVE :: struct { - sType: StructureType, - pNext: rawptr, - mutableDescriptorTypeListCount: u32, - pMutableDescriptorTypeLists: [^]MutableDescriptorTypeListVALVE, -} - -PhysicalDeviceVertexInputDynamicStateFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - vertexInputDynamicState: b32, -} - -VertexInputBindingDescription2EXT :: struct { - sType: StructureType, - pNext: rawptr, - binding: u32, - stride: u32, - inputRate: VertexInputRate, - divisor: u32, -} - -VertexInputAttributeDescription2EXT :: struct { - sType: StructureType, - pNext: rawptr, - location: u32, - binding: u32, - format: Format, - offset: u32, -} - -PhysicalDeviceDrmPropertiesEXT :: struct { - sType: StructureType, - pNext: rawptr, - hasPrimary: b32, - hasRender: b32, - primaryMajor: i64, - primaryMinor: i64, - renderMajor: i64, - renderMinor: i64, -} - -PhysicalDeviceDepthClipControlFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - depthClipControl: b32, -} - -PipelineViewportDepthClipControlCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - negativeOneToOne: b32, -} - -PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - primitiveTopologyListRestart: b32, - primitiveTopologyPatchListRestart: b32, -} - -SubpassShadingPipelineCreateInfoHUAWEI :: struct { - sType: StructureType, - pNext: rawptr, - renderPass: RenderPass, - subpass: u32, -} - -PhysicalDeviceSubpassShadingFeaturesHUAWEI :: struct { - sType: StructureType, - pNext: rawptr, - subpassShading: b32, -} - -PhysicalDeviceSubpassShadingPropertiesHUAWEI :: struct { - sType: StructureType, - pNext: rawptr, - maxSubpassShadingWorkgroupSizeAspectRatio: u32, -} - -PhysicalDeviceInvocationMaskFeaturesHUAWEI :: struct { - sType: StructureType, - pNext: rawptr, - invocationMask: b32, -} - -MemoryGetRemoteAddressInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - memory: DeviceMemory, - handleType: ExternalMemoryHandleTypeFlags, -} - -PhysicalDeviceExternalMemoryRDMAFeaturesNV :: struct { - sType: StructureType, - pNext: rawptr, - externalMemoryRDMA: b32, -} - -PhysicalDeviceExtendedDynamicState2FeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - extendedDynamicState2: b32, - extendedDynamicState2LogicOp: b32, - extendedDynamicState2PatchControlPoints: b32, -} - -PhysicalDeviceColorWriteEnableFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - colorWriteEnable: b32, -} - -PipelineColorWriteCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - attachmentCount: u32, - pColorWriteEnables: [^]b32, -} - -PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - primitivesGeneratedQuery: b32, - primitivesGeneratedQueryWithRasterizerDiscard: b32, - primitivesGeneratedQueryWithNonZeroStreams: b32, -} - -PhysicalDeviceImageViewMinLodFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - minLod: b32, -} - -ImageViewMinLodCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - minLod: f32, -} - -PhysicalDeviceMultiDrawFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - multiDraw: b32, -} - -PhysicalDeviceMultiDrawPropertiesEXT :: struct { - sType: StructureType, - pNext: rawptr, - maxMultiDrawCount: u32, -} - -MultiDrawInfoEXT :: struct { - firstVertex: u32, - vertexCount: u32, -} - -MultiDrawIndexedInfoEXT :: struct { - firstIndex: u32, - indexCount: u32, - vertexOffset: i32, -} - -PhysicalDeviceImage2DViewOf3DFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - image2DViewOf3D: b32, - sampler2DViewOf3D: b32, -} - -PhysicalDeviceBorderColorSwizzleFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - borderColorSwizzle: b32, - borderColorSwizzleFromImage: b32, -} - -SamplerBorderColorComponentMappingCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - components: ComponentMapping, - srgb: b32, -} - -PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT :: struct { - sType: StructureType, - pNext: rawptr, - pageableDeviceLocalMemory: b32, -} - -PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE :: struct { - sType: StructureType, - pNext: rawptr, - descriptorSetHostMapping: b32, -} - -DescriptorSetBindingReferenceVALVE :: struct { - sType: StructureType, - pNext: rawptr, - descriptorSetLayout: DescriptorSetLayout, - binding: u32, -} - -DescriptorSetLayoutHostMappingInfoVALVE :: struct { - sType: StructureType, - pNext: rawptr, - descriptorOffset: int, - descriptorSize: u32, -} - -PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM :: struct { - sType: StructureType, - pNext: rawptr, - fragmentDensityMapOffset: b32, -} - -PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM :: struct { - sType: StructureType, - pNext: rawptr, - fragmentDensityOffsetGranularity: Extent2D, -} - -SubpassFragmentDensityMapOffsetEndInfoQCOM :: struct { - sType: StructureType, - pNext: rawptr, - fragmentDensityOffsetCount: u32, - pFragmentDensityOffsets: [^]Offset2D, -} - -PhysicalDeviceLinearColorAttachmentFeaturesNV :: struct { - sType: StructureType, - pNext: rawptr, - linearColorAttachment: b32, -} - -DeviceOrHostAddressKHR :: struct #raw_union { - deviceAddress: DeviceAddress, - hostAddress: rawptr, -} - -AccelerationStructureBuildRangeInfoKHR :: struct { - primitiveCount: u32, - primitiveOffset: u32, - firstVertex: u32, - transformOffset: u32, -} - -AccelerationStructureGeometryTrianglesDataKHR :: struct { - sType: StructureType, - pNext: rawptr, - vertexFormat: Format, - vertexData: DeviceOrHostAddressConstKHR, - vertexStride: DeviceSize, - maxVertex: u32, - indexType: IndexType, - indexData: DeviceOrHostAddressConstKHR, - transformData: DeviceOrHostAddressConstKHR, -} - -AccelerationStructureGeometryAabbsDataKHR :: struct { - sType: StructureType, - pNext: rawptr, - data: DeviceOrHostAddressConstKHR, - stride: DeviceSize, -} - -AccelerationStructureGeometryInstancesDataKHR :: struct { - sType: StructureType, - pNext: rawptr, - arrayOfPointers: b32, - data: DeviceOrHostAddressConstKHR, -} - -AccelerationStructureGeometryDataKHR :: struct #raw_union { - triangles: AccelerationStructureGeometryTrianglesDataKHR, - aabbs: AccelerationStructureGeometryAabbsDataKHR, - instances: AccelerationStructureGeometryInstancesDataKHR, -} - -AccelerationStructureGeometryKHR :: struct { - sType: StructureType, - pNext: rawptr, - geometryType: GeometryTypeKHR, - geometry: AccelerationStructureGeometryDataKHR, - flags: GeometryFlagsKHR, -} - -AccelerationStructureBuildGeometryInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - type: AccelerationStructureTypeKHR, - flags: BuildAccelerationStructureFlagsKHR, - mode: BuildAccelerationStructureModeKHR, - srcAccelerationStructure: AccelerationStructureKHR, - dstAccelerationStructure: AccelerationStructureKHR, - geometryCount: u32, - pGeometries: [^]AccelerationStructureGeometryKHR, - ppGeometries: ^[^]AccelerationStructureGeometryKHR, - scratchData: DeviceOrHostAddressKHR, -} - -AccelerationStructureCreateInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - createFlags: AccelerationStructureCreateFlagsKHR, - buffer: Buffer, - offset: DeviceSize, - size: DeviceSize, - type: AccelerationStructureTypeKHR, - deviceAddress: DeviceAddress, -} - -WriteDescriptorSetAccelerationStructureKHR :: struct { - sType: StructureType, - pNext: rawptr, - accelerationStructureCount: u32, - pAccelerationStructures: [^]AccelerationStructureKHR, -} - -PhysicalDeviceAccelerationStructureFeaturesKHR :: struct { - sType: StructureType, - pNext: rawptr, - accelerationStructure: b32, - accelerationStructureCaptureReplay: b32, - accelerationStructureIndirectBuild: b32, - accelerationStructureHostCommands: b32, - descriptorBindingAccelerationStructureUpdateAfterBind: b32, -} - -PhysicalDeviceAccelerationStructurePropertiesKHR :: struct { - sType: StructureType, - pNext: rawptr, - maxGeometryCount: u64, - maxInstanceCount: u64, - maxPrimitiveCount: u64, - maxPerStageDescriptorAccelerationStructures: u32, - maxPerStageDescriptorUpdateAfterBindAccelerationStructures: u32, - maxDescriptorSetAccelerationStructures: u32, - maxDescriptorSetUpdateAfterBindAccelerationStructures: u32, - minAccelerationStructureScratchOffsetAlignment: u32, -} - -AccelerationStructureDeviceAddressInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - accelerationStructure: AccelerationStructureKHR, -} - -AccelerationStructureVersionInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - pVersionData: ^u8, -} - -CopyAccelerationStructureToMemoryInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - src: AccelerationStructureKHR, - dst: DeviceOrHostAddressKHR, - mode: CopyAccelerationStructureModeKHR, -} - -CopyMemoryToAccelerationStructureInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - src: DeviceOrHostAddressConstKHR, - dst: AccelerationStructureKHR, - mode: CopyAccelerationStructureModeKHR, -} - -CopyAccelerationStructureInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - src: AccelerationStructureKHR, - dst: AccelerationStructureKHR, - mode: CopyAccelerationStructureModeKHR, -} - -AccelerationStructureBuildSizesInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - accelerationStructureSize: DeviceSize, - updateScratchSize: DeviceSize, - buildScratchSize: DeviceSize, -} - -RayTracingShaderGroupCreateInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - type: RayTracingShaderGroupTypeKHR, - generalShader: u32, - closestHitShader: u32, - anyHitShader: u32, - intersectionShader: u32, - pShaderGroupCaptureReplayHandle: rawptr, -} - -RayTracingPipelineInterfaceCreateInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - maxPipelineRayPayloadSize: u32, - maxPipelineRayHitAttributeSize: u32, -} - -RayTracingPipelineCreateInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - flags: PipelineCreateFlags, - stageCount: u32, - pStages: [^]PipelineShaderStageCreateInfo, - groupCount: u32, - pGroups: [^]RayTracingShaderGroupCreateInfoKHR, - maxPipelineRayRecursionDepth: u32, - pLibraryInfo: ^PipelineLibraryCreateInfoKHR, - pLibraryInterface: ^RayTracingPipelineInterfaceCreateInfoKHR, - pDynamicState: ^PipelineDynamicStateCreateInfo, - layout: PipelineLayout, - basePipelineHandle: Pipeline, - basePipelineIndex: i32, -} - -PhysicalDeviceRayTracingPipelineFeaturesKHR :: struct { - sType: StructureType, - pNext: rawptr, - rayTracingPipeline: b32, - rayTracingPipelineShaderGroupHandleCaptureReplay: b32, - rayTracingPipelineShaderGroupHandleCaptureReplayMixed: b32, - rayTracingPipelineTraceRaysIndirect: b32, - rayTraversalPrimitiveCulling: b32, -} - -PhysicalDeviceRayTracingPipelinePropertiesKHR :: struct { - sType: StructureType, - pNext: rawptr, - shaderGroupHandleSize: u32, - maxRayRecursionDepth: u32, - maxShaderGroupStride: u32, - shaderGroupBaseAlignment: u32, - shaderGroupHandleCaptureReplaySize: u32, - maxRayDispatchInvocationCount: u32, - shaderGroupHandleAlignment: u32, - maxRayHitAttributeSize: u32, -} - -StridedDeviceAddressRegionKHR :: struct { - deviceAddress: DeviceAddress, - stride: DeviceSize, - size: DeviceSize, -} - -TraceRaysIndirectCommandKHR :: struct { - width: u32, - height: u32, - depth: u32, -} - -PhysicalDeviceRayQueryFeaturesKHR :: struct { - sType: StructureType, - pNext: rawptr, - rayQuery: b32, -} - -Win32SurfaceCreateInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - flags: Win32SurfaceCreateFlagsKHR, - hinstance: HINSTANCE, - hwnd: HWND, -} - -ImportMemoryWin32HandleInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - handleType: ExternalMemoryHandleTypeFlags, - handle: HANDLE, - name: LPCWSTR, -} - -ExportMemoryWin32HandleInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - pAttributes: [^]SECURITY_ATTRIBUTES, - dwAccess: DWORD, - name: LPCWSTR, -} - -MemoryWin32HandlePropertiesKHR :: struct { - sType: StructureType, - pNext: rawptr, - memoryTypeBits: u32, -} - -MemoryGetWin32HandleInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - memory: DeviceMemory, - handleType: ExternalMemoryHandleTypeFlags, -} - -Win32KeyedMutexAcquireReleaseInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - acquireCount: u32, - pAcquireSyncs: [^]DeviceMemory, - pAcquireKeys: [^]u64, - pAcquireTimeouts: [^]u32, - releaseCount: u32, - pReleaseSyncs: [^]DeviceMemory, - pReleaseKeys: [^]u64, -} - -ImportSemaphoreWin32HandleInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - semaphore: Semaphore, - flags: SemaphoreImportFlags, - handleType: ExternalSemaphoreHandleTypeFlags, - handle: HANDLE, - name: LPCWSTR, -} - -ExportSemaphoreWin32HandleInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - pAttributes: [^]SECURITY_ATTRIBUTES, - dwAccess: DWORD, - name: LPCWSTR, -} - -D3D12FenceSubmitInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - waitSemaphoreValuesCount: u32, - pWaitSemaphoreValues: [^]u64, - signalSemaphoreValuesCount: u32, - pSignalSemaphoreValues: [^]u64, -} - -SemaphoreGetWin32HandleInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - semaphore: Semaphore, - handleType: ExternalSemaphoreHandleTypeFlags, -} - -ImportFenceWin32HandleInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - fence: Fence, - flags: FenceImportFlags, - handleType: ExternalFenceHandleTypeFlags, - handle: HANDLE, - name: LPCWSTR, -} - -ExportFenceWin32HandleInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - pAttributes: [^]SECURITY_ATTRIBUTES, - dwAccess: DWORD, - name: LPCWSTR, -} - -FenceGetWin32HandleInfoKHR :: struct { - sType: StructureType, - pNext: rawptr, - fence: Fence, - handleType: ExternalFenceHandleTypeFlags, -} - -ImportMemoryWin32HandleInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - handleType: ExternalMemoryHandleTypeFlagsNV, - handle: HANDLE, -} - -ExportMemoryWin32HandleInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - pAttributes: [^]SECURITY_ATTRIBUTES, - dwAccess: DWORD, -} - -Win32KeyedMutexAcquireReleaseInfoNV :: struct { - sType: StructureType, - pNext: rawptr, - acquireCount: u32, - pAcquireSyncs: [^]DeviceMemory, - pAcquireKeys: [^]u64, - pAcquireTimeoutMilliseconds: [^]u32, - releaseCount: u32, - pReleaseSyncs: [^]DeviceMemory, - pReleaseKeys: [^]u64, -} - -SurfaceFullScreenExclusiveInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - fullScreenExclusive: FullScreenExclusiveEXT, -} - -SurfaceCapabilitiesFullScreenExclusiveEXT :: struct { - sType: StructureType, - pNext: rawptr, - fullScreenExclusiveSupported: b32, -} - -SurfaceFullScreenExclusiveWin32InfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - hmonitor: HMONITOR, -} - -MetalSurfaceCreateInfoEXT :: struct { - sType: StructureType, - pNext: rawptr, - flags: MetalSurfaceCreateFlagsEXT, - pLayer: ^CAMetalLayer, -} - -MacOSSurfaceCreateInfoMVK :: struct { - sType: StructureType, - pNext: rawptr, - flags: MacOSSurfaceCreateFlagsMVK, - pView: rawptr, -} - -IOSSurfaceCreateInfoMVK :: struct { - sType: StructureType, - pNext: rawptr, - flags: IOSSurfaceCreateFlagsMVK, - pView: rawptr, -} - -// Aliases -PhysicalDeviceVariablePointerFeatures :: PhysicalDeviceVariablePointersFeatures -PhysicalDeviceShaderDrawParameterFeatures :: PhysicalDeviceShaderDrawParametersFeatures -PipelineStageFlags2 :: Flags64 -PipelineStageFlag2 :: Flags64 -AccessFlags2 :: Flags64 -AccessFlag2 :: Flags64 -FormatFeatureFlags2 :: Flags64 -FormatFeatureFlag2 :: Flags64 -RenderingFlagsKHR :: RenderingFlags -RenderingFlagKHR :: RenderingFlag -RenderingInfoKHR :: RenderingInfo -RenderingAttachmentInfoKHR :: RenderingAttachmentInfo -PipelineRenderingCreateInfoKHR :: PipelineRenderingCreateInfo -PhysicalDeviceDynamicRenderingFeaturesKHR :: PhysicalDeviceDynamicRenderingFeatures -CommandBufferInheritanceRenderingInfoKHR :: CommandBufferInheritanceRenderingInfo -AttachmentSampleCountInfoNV :: AttachmentSampleCountInfoAMD -RenderPassMultiviewCreateInfoKHR :: RenderPassMultiviewCreateInfo -PhysicalDeviceMultiviewFeaturesKHR :: PhysicalDeviceMultiviewFeatures -PhysicalDeviceMultiviewPropertiesKHR :: PhysicalDeviceMultiviewProperties -PhysicalDeviceFeatures2KHR :: PhysicalDeviceFeatures2 -PhysicalDeviceProperties2KHR :: PhysicalDeviceProperties2 -FormatProperties2KHR :: FormatProperties2 -ImageFormatProperties2KHR :: ImageFormatProperties2 -PhysicalDeviceImageFormatInfo2KHR :: PhysicalDeviceImageFormatInfo2 -QueueFamilyProperties2KHR :: QueueFamilyProperties2 -PhysicalDeviceMemoryProperties2KHR :: PhysicalDeviceMemoryProperties2 -SparseImageFormatProperties2KHR :: SparseImageFormatProperties2 -PhysicalDeviceSparseImageFormatInfo2KHR :: PhysicalDeviceSparseImageFormatInfo2 -PeerMemoryFeatureFlagsKHR :: PeerMemoryFeatureFlags -PeerMemoryFeatureFlagKHR :: PeerMemoryFeatureFlag -MemoryAllocateFlagsKHR :: MemoryAllocateFlags -MemoryAllocateFlagKHR :: MemoryAllocateFlag -MemoryAllocateFlagsInfoKHR :: MemoryAllocateFlagsInfo -DeviceGroupRenderPassBeginInfoKHR :: DeviceGroupRenderPassBeginInfo -DeviceGroupCommandBufferBeginInfoKHR :: DeviceGroupCommandBufferBeginInfo -DeviceGroupSubmitInfoKHR :: DeviceGroupSubmitInfo -DeviceGroupBindSparseInfoKHR :: DeviceGroupBindSparseInfo -BindBufferMemoryDeviceGroupInfoKHR :: BindBufferMemoryDeviceGroupInfo -BindImageMemoryDeviceGroupInfoKHR :: BindImageMemoryDeviceGroupInfo -CommandPoolTrimFlagsKHR :: CommandPoolTrimFlags -PhysicalDeviceGroupPropertiesKHR :: PhysicalDeviceGroupProperties -DeviceGroupDeviceCreateInfoKHR :: DeviceGroupDeviceCreateInfo -ExternalMemoryHandleTypeFlagsKHR :: ExternalMemoryHandleTypeFlags -ExternalMemoryHandleTypeFlagKHR :: ExternalMemoryHandleTypeFlag -ExternalMemoryFeatureFlagsKHR :: ExternalMemoryFeatureFlags -ExternalMemoryFeatureFlagKHR :: ExternalMemoryFeatureFlag -ExternalMemoryPropertiesKHR :: ExternalMemoryProperties -PhysicalDeviceExternalImageFormatInfoKHR :: PhysicalDeviceExternalImageFormatInfo -ExternalImageFormatPropertiesKHR :: ExternalImageFormatProperties -PhysicalDeviceExternalBufferInfoKHR :: PhysicalDeviceExternalBufferInfo -ExternalBufferPropertiesKHR :: ExternalBufferProperties -PhysicalDeviceIDPropertiesKHR :: PhysicalDeviceIDProperties -ExternalMemoryImageCreateInfoKHR :: ExternalMemoryImageCreateInfo -ExternalMemoryBufferCreateInfoKHR :: ExternalMemoryBufferCreateInfo -ExportMemoryAllocateInfoKHR :: ExportMemoryAllocateInfo -ExternalSemaphoreHandleTypeFlagsKHR :: ExternalSemaphoreHandleTypeFlags -ExternalSemaphoreHandleTypeFlagKHR :: ExternalSemaphoreHandleTypeFlag -ExternalSemaphoreFeatureFlagsKHR :: ExternalSemaphoreFeatureFlags -ExternalSemaphoreFeatureFlagKHR :: ExternalSemaphoreFeatureFlag -PhysicalDeviceExternalSemaphoreInfoKHR :: PhysicalDeviceExternalSemaphoreInfo -ExternalSemaphorePropertiesKHR :: ExternalSemaphoreProperties -SemaphoreImportFlagsKHR :: SemaphoreImportFlags -SemaphoreImportFlagKHR :: SemaphoreImportFlag -ExportSemaphoreCreateInfoKHR :: ExportSemaphoreCreateInfo -PhysicalDeviceShaderFloat16Int8FeaturesKHR :: PhysicalDeviceShaderFloat16Int8Features -PhysicalDeviceFloat16Int8FeaturesKHR :: PhysicalDeviceShaderFloat16Int8Features -PhysicalDevice16BitStorageFeaturesKHR :: PhysicalDevice16BitStorageFeatures -DescriptorUpdateTemplateKHR :: DescriptorUpdateTemplate -DescriptorUpdateTemplateTypeKHR :: DescriptorUpdateTemplateType -DescriptorUpdateTemplateCreateFlagsKHR :: DescriptorUpdateTemplateCreateFlags -DescriptorUpdateTemplateEntryKHR :: DescriptorUpdateTemplateEntry -DescriptorUpdateTemplateCreateInfoKHR :: DescriptorUpdateTemplateCreateInfo -PhysicalDeviceImagelessFramebufferFeaturesKHR :: PhysicalDeviceImagelessFramebufferFeatures -FramebufferAttachmentsCreateInfoKHR :: FramebufferAttachmentsCreateInfo -FramebufferAttachmentImageInfoKHR :: FramebufferAttachmentImageInfo -RenderPassAttachmentBeginInfoKHR :: RenderPassAttachmentBeginInfo -RenderPassCreateInfo2KHR :: RenderPassCreateInfo2 -AttachmentDescription2KHR :: AttachmentDescription2 -AttachmentReference2KHR :: AttachmentReference2 -SubpassDescription2KHR :: SubpassDescription2 -SubpassDependency2KHR :: SubpassDependency2 -SubpassBeginInfoKHR :: SubpassBeginInfo -SubpassEndInfoKHR :: SubpassEndInfo -ExternalFenceHandleTypeFlagsKHR :: ExternalFenceHandleTypeFlags -ExternalFenceHandleTypeFlagKHR :: ExternalFenceHandleTypeFlag -ExternalFenceFeatureFlagsKHR :: ExternalFenceFeatureFlags -ExternalFenceFeatureFlagKHR :: ExternalFenceFeatureFlag -PhysicalDeviceExternalFenceInfoKHR :: PhysicalDeviceExternalFenceInfo -ExternalFencePropertiesKHR :: ExternalFenceProperties -FenceImportFlagsKHR :: FenceImportFlags -FenceImportFlagKHR :: FenceImportFlag -ExportFenceCreateInfoKHR :: ExportFenceCreateInfo -PointClippingBehaviorKHR :: PointClippingBehavior -TessellationDomainOriginKHR :: TessellationDomainOrigin -PhysicalDevicePointClippingPropertiesKHR :: PhysicalDevicePointClippingProperties -RenderPassInputAttachmentAspectCreateInfoKHR :: RenderPassInputAttachmentAspectCreateInfo -InputAttachmentAspectReferenceKHR :: InputAttachmentAspectReference -ImageViewUsageCreateInfoKHR :: ImageViewUsageCreateInfo -PipelineTessellationDomainOriginStateCreateInfoKHR :: PipelineTessellationDomainOriginStateCreateInfo -PhysicalDeviceVariablePointerFeaturesKHR :: PhysicalDeviceVariablePointersFeatures -PhysicalDeviceVariablePointersFeaturesKHR :: PhysicalDeviceVariablePointersFeatures -MemoryDedicatedRequirementsKHR :: MemoryDedicatedRequirements -MemoryDedicatedAllocateInfoKHR :: MemoryDedicatedAllocateInfo -BufferMemoryRequirementsInfo2KHR :: BufferMemoryRequirementsInfo2 -ImageMemoryRequirementsInfo2KHR :: ImageMemoryRequirementsInfo2 -ImageSparseMemoryRequirementsInfo2KHR :: ImageSparseMemoryRequirementsInfo2 -MemoryRequirements2KHR :: MemoryRequirements2 -SparseImageMemoryRequirements2KHR :: SparseImageMemoryRequirements2 -ImageFormatListCreateInfoKHR :: ImageFormatListCreateInfo -SamplerYcbcrConversionKHR :: SamplerYcbcrConversion -SamplerYcbcrModelConversionKHR :: SamplerYcbcrModelConversion -SamplerYcbcrRangeKHR :: SamplerYcbcrRange -ChromaLocationKHR :: ChromaLocation -SamplerYcbcrConversionCreateInfoKHR :: SamplerYcbcrConversionCreateInfo -SamplerYcbcrConversionInfoKHR :: SamplerYcbcrConversionInfo -BindImagePlaneMemoryInfoKHR :: BindImagePlaneMemoryInfo -ImagePlaneMemoryRequirementsInfoKHR :: ImagePlaneMemoryRequirementsInfo -PhysicalDeviceSamplerYcbcrConversionFeaturesKHR :: PhysicalDeviceSamplerYcbcrConversionFeatures -SamplerYcbcrConversionImageFormatPropertiesKHR :: SamplerYcbcrConversionImageFormatProperties -BindBufferMemoryInfoKHR :: BindBufferMemoryInfo -BindImageMemoryInfoKHR :: BindImageMemoryInfo -PhysicalDeviceMaintenance3PropertiesKHR :: PhysicalDeviceMaintenance3Properties -DescriptorSetLayoutSupportKHR :: DescriptorSetLayoutSupport -PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR :: PhysicalDeviceShaderSubgroupExtendedTypesFeatures -PhysicalDevice8BitStorageFeaturesKHR :: PhysicalDevice8BitStorageFeatures -PhysicalDeviceShaderAtomicInt64FeaturesKHR :: PhysicalDeviceShaderAtomicInt64Features -DriverIdKHR :: DriverId -ConformanceVersionKHR :: ConformanceVersion -PhysicalDeviceDriverPropertiesKHR :: PhysicalDeviceDriverProperties -ShaderFloatControlsIndependenceKHR :: ShaderFloatControlsIndependence -PhysicalDeviceFloatControlsPropertiesKHR :: PhysicalDeviceFloatControlsProperties -ResolveModeFlagKHR :: ResolveModeFlag -ResolveModeFlagsKHR :: ResolveModeFlags -SubpassDescriptionDepthStencilResolveKHR :: SubpassDescriptionDepthStencilResolve -PhysicalDeviceDepthStencilResolvePropertiesKHR :: PhysicalDeviceDepthStencilResolveProperties -SemaphoreTypeKHR :: SemaphoreType -SemaphoreWaitFlagKHR :: SemaphoreWaitFlag -SemaphoreWaitFlagsKHR :: SemaphoreWaitFlags -PhysicalDeviceTimelineSemaphoreFeaturesKHR :: PhysicalDeviceTimelineSemaphoreFeatures -PhysicalDeviceTimelineSemaphorePropertiesKHR :: PhysicalDeviceTimelineSemaphoreProperties -SemaphoreTypeCreateInfoKHR :: SemaphoreTypeCreateInfo -TimelineSemaphoreSubmitInfoKHR :: TimelineSemaphoreSubmitInfo -SemaphoreWaitInfoKHR :: SemaphoreWaitInfo -SemaphoreSignalInfoKHR :: SemaphoreSignalInfo -PhysicalDeviceVulkanMemoryModelFeaturesKHR :: PhysicalDeviceVulkanMemoryModelFeatures -PhysicalDeviceShaderTerminateInvocationFeaturesKHR :: PhysicalDeviceShaderTerminateInvocationFeatures -PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR :: PhysicalDeviceSeparateDepthStencilLayoutsFeatures -AttachmentReferenceStencilLayoutKHR :: AttachmentReferenceStencilLayout -AttachmentDescriptionStencilLayoutKHR :: AttachmentDescriptionStencilLayout -PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR :: PhysicalDeviceUniformBufferStandardLayoutFeatures -PhysicalDeviceBufferDeviceAddressFeaturesKHR :: PhysicalDeviceBufferDeviceAddressFeatures -BufferDeviceAddressInfoKHR :: BufferDeviceAddressInfo -BufferOpaqueCaptureAddressCreateInfoKHR :: BufferOpaqueCaptureAddressCreateInfo -MemoryOpaqueCaptureAddressAllocateInfoKHR :: MemoryOpaqueCaptureAddressAllocateInfo -DeviceMemoryOpaqueCaptureAddressInfoKHR :: DeviceMemoryOpaqueCaptureAddressInfo -PhysicalDeviceShaderIntegerDotProductFeaturesKHR :: PhysicalDeviceShaderIntegerDotProductFeatures -PhysicalDeviceShaderIntegerDotProductPropertiesKHR :: PhysicalDeviceShaderIntegerDotProductProperties -PipelineStageFlags2KHR :: PipelineStageFlags2 -PipelineStageFlag2KHR :: PipelineStageFlag2 -AccessFlags2KHR :: AccessFlags2 -AccessFlag2KHR :: AccessFlag2 -SubmitFlagKHR :: SubmitFlag -SubmitFlagsKHR :: SubmitFlags -MemoryBarrier2KHR :: MemoryBarrier2 -BufferMemoryBarrier2KHR :: BufferMemoryBarrier2 -ImageMemoryBarrier2KHR :: ImageMemoryBarrier2 -DependencyInfoKHR :: DependencyInfo -SubmitInfo2KHR :: SubmitInfo2 -SemaphoreSubmitInfoKHR :: SemaphoreSubmitInfo -CommandBufferSubmitInfoKHR :: CommandBufferSubmitInfo -PhysicalDeviceSynchronization2FeaturesKHR :: PhysicalDeviceSynchronization2Features -PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR :: PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures -CopyBufferInfo2KHR :: CopyBufferInfo2 -CopyImageInfo2KHR :: CopyImageInfo2 -CopyBufferToImageInfo2KHR :: CopyBufferToImageInfo2 -CopyImageToBufferInfo2KHR :: CopyImageToBufferInfo2 -BlitImageInfo2KHR :: BlitImageInfo2 -ResolveImageInfo2KHR :: ResolveImageInfo2 -BufferCopy2KHR :: BufferCopy2 -ImageCopy2KHR :: ImageCopy2 -ImageBlit2KHR :: ImageBlit2 -BufferImageCopy2KHR :: BufferImageCopy2 -ImageResolve2KHR :: ImageResolve2 -FormatFeatureFlags2KHR :: FormatFeatureFlags2 -FormatFeatureFlag2KHR :: FormatFeatureFlag2 -FormatProperties3KHR :: FormatProperties3 -PhysicalDeviceMaintenance4FeaturesKHR :: PhysicalDeviceMaintenance4Features -PhysicalDeviceMaintenance4PropertiesKHR :: PhysicalDeviceMaintenance4Properties -DeviceBufferMemoryRequirementsKHR :: DeviceBufferMemoryRequirements -DeviceImageMemoryRequirementsKHR :: DeviceImageMemoryRequirements -PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT :: PhysicalDeviceTextureCompressionASTCHDRFeatures -SamplerReductionModeEXT :: SamplerReductionMode -SamplerReductionModeCreateInfoEXT :: SamplerReductionModeCreateInfo -PhysicalDeviceSamplerFilterMinmaxPropertiesEXT :: PhysicalDeviceSamplerFilterMinmaxProperties -PhysicalDeviceInlineUniformBlockFeaturesEXT :: PhysicalDeviceInlineUniformBlockFeatures -PhysicalDeviceInlineUniformBlockPropertiesEXT :: PhysicalDeviceInlineUniformBlockProperties -WriteDescriptorSetInlineUniformBlockEXT :: WriteDescriptorSetInlineUniformBlock -DescriptorPoolInlineUniformBlockCreateInfoEXT :: DescriptorPoolInlineUniformBlockCreateInfo -DescriptorBindingFlagEXT :: DescriptorBindingFlag -DescriptorBindingFlagsEXT :: DescriptorBindingFlags -DescriptorSetLayoutBindingFlagsCreateInfoEXT :: DescriptorSetLayoutBindingFlagsCreateInfo -PhysicalDeviceDescriptorIndexingFeaturesEXT :: PhysicalDeviceDescriptorIndexingFeatures -PhysicalDeviceDescriptorIndexingPropertiesEXT :: PhysicalDeviceDescriptorIndexingProperties -DescriptorSetVariableDescriptorCountAllocateInfoEXT :: DescriptorSetVariableDescriptorCountAllocateInfo -DescriptorSetVariableDescriptorCountLayoutSupportEXT :: DescriptorSetVariableDescriptorCountLayoutSupport -RayTracingShaderGroupTypeNV :: RayTracingShaderGroupTypeKHR -GeometryTypeNV :: GeometryTypeKHR -AccelerationStructureTypeNV :: AccelerationStructureTypeKHR -CopyAccelerationStructureModeNV :: CopyAccelerationStructureModeKHR -GeometryFlagsNV :: GeometryFlagsKHR -GeometryFlagNV :: GeometryFlagKHR -GeometryInstanceFlagsNV :: GeometryInstanceFlagsKHR -GeometryInstanceFlagNV :: GeometryInstanceFlagKHR -BuildAccelerationStructureFlagsNV :: BuildAccelerationStructureFlagsKHR -BuildAccelerationStructureFlagNV :: BuildAccelerationStructureFlagKHR -TransformMatrixNV :: TransformMatrixKHR -AabbPositionsNV :: AabbPositionsKHR -AccelerationStructureInstanceNV :: AccelerationStructureInstanceKHR -QueueGlobalPriorityEXT :: QueueGlobalPriorityKHR -DeviceQueueGlobalPriorityCreateInfoEXT :: DeviceQueueGlobalPriorityCreateInfoKHR -PipelineCreationFeedbackFlagEXT :: PipelineCreationFeedbackFlag -PipelineCreationFeedbackFlagsEXT :: PipelineCreationFeedbackFlags -PipelineCreationFeedbackCreateInfoEXT :: PipelineCreationFeedbackCreateInfo -PipelineCreationFeedbackEXT :: PipelineCreationFeedback -QueryPoolCreateInfoINTEL :: QueryPoolPerformanceQueryCreateInfoINTEL -PhysicalDeviceScalarBlockLayoutFeaturesEXT :: PhysicalDeviceScalarBlockLayoutFeatures -PhysicalDeviceSubgroupSizeControlFeaturesEXT :: PhysicalDeviceSubgroupSizeControlFeatures -PhysicalDeviceSubgroupSizeControlPropertiesEXT :: PhysicalDeviceSubgroupSizeControlProperties -PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT :: PipelineShaderStageRequiredSubgroupSizeCreateInfo -PhysicalDeviceBufferAddressFeaturesEXT :: PhysicalDeviceBufferDeviceAddressFeaturesEXT -BufferDeviceAddressInfoEXT :: BufferDeviceAddressInfo -ToolPurposeFlagEXT :: ToolPurposeFlag -ToolPurposeFlagsEXT :: ToolPurposeFlags -PhysicalDeviceToolPropertiesEXT :: PhysicalDeviceToolProperties -ImageStencilUsageCreateInfoEXT :: ImageStencilUsageCreateInfo -PhysicalDeviceHostQueryResetFeaturesEXT :: PhysicalDeviceHostQueryResetFeatures -PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT :: PhysicalDeviceShaderDemoteToHelperInvocationFeatures -PhysicalDeviceTexelBufferAlignmentPropertiesEXT :: PhysicalDeviceTexelBufferAlignmentProperties -PrivateDataSlotEXT :: PrivateDataSlot -PrivateDataSlotCreateFlagsEXT :: PrivateDataSlotCreateFlags -PhysicalDevicePrivateDataFeaturesEXT :: PhysicalDevicePrivateDataFeatures -DevicePrivateDataCreateInfoEXT :: DevicePrivateDataCreateInfo -PrivateDataSlotCreateInfoEXT :: PrivateDataSlotCreateInfo -PhysicalDevicePipelineCreationCacheControlFeaturesEXT :: PhysicalDevicePipelineCreationCacheControlFeatures -PhysicalDeviceImageRobustnessFeaturesEXT :: PhysicalDeviceImageRobustnessFeatures -PhysicalDeviceGlobalPriorityQueryFeaturesEXT :: PhysicalDeviceGlobalPriorityQueryFeaturesKHR -QueueFamilyGlobalPriorityPropertiesEXT :: QueueFamilyGlobalPriorityPropertiesKHR - - +// +// Vulkan wrapper generated from "https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/master/include/vulkan/vulkan_core.h" +// +package vulkan + +import "core:c" + +when ODIN_OS == .Windows { + import win32 "core:sys/windows" + + HINSTANCE :: win32.HINSTANCE + HWND :: win32.HWND + HMONITOR :: win32.HMONITOR + HANDLE :: win32.HANDLE + LPCWSTR :: win32.LPCWSTR + SECURITY_ATTRIBUTES :: win32.SECURITY_ATTRIBUTES + DWORD :: win32.DWORD + LONG :: win32.LONG + LUID :: win32.LUID +} else { + HINSTANCE :: distinct rawptr + HWND :: distinct rawptr + HMONITOR :: distinct rawptr + HANDLE :: distinct rawptr + LPCWSTR :: ^u16 + SECURITY_ATTRIBUTES :: struct {} + DWORD :: u32 + LONG :: c.long + LUID :: struct { + LowPart: DWORD, + HighPart: LONG, + } +} + +CAMetalLayer :: struct {} + +/********************************/ + +Extent2D :: struct { + width: u32, + height: u32, +} + +Extent3D :: struct { + width: u32, + height: u32, + depth: u32, +} + +Offset2D :: struct { + x: i32, + y: i32, +} + +Offset3D :: struct { + x: i32, + y: i32, + z: i32, +} + +Rect2D :: struct { + offset: Offset2D, + extent: Extent2D, +} + +BaseInStructure :: struct { + sType: StructureType, + pNext: ^BaseInStructure, +} + +BaseOutStructure :: struct { + sType: StructureType, + pNext: ^BaseOutStructure, +} + +BufferMemoryBarrier :: struct { + sType: StructureType, + pNext: rawptr, + srcAccessMask: AccessFlags, + dstAccessMask: AccessFlags, + srcQueueFamilyIndex: u32, + dstQueueFamilyIndex: u32, + buffer: Buffer, + offset: DeviceSize, + size: DeviceSize, +} + +DispatchIndirectCommand :: struct { + x: u32, + y: u32, + z: u32, +} + +DrawIndexedIndirectCommand :: struct { + indexCount: u32, + instanceCount: u32, + firstIndex: u32, + vertexOffset: i32, + firstInstance: u32, +} + +DrawIndirectCommand :: struct { + vertexCount: u32, + instanceCount: u32, + firstVertex: u32, + firstInstance: u32, +} + +ImageSubresourceRange :: struct { + aspectMask: ImageAspectFlags, + baseMipLevel: u32, + levelCount: u32, + baseArrayLayer: u32, + layerCount: u32, +} + +ImageMemoryBarrier :: struct { + sType: StructureType, + pNext: rawptr, + srcAccessMask: AccessFlags, + dstAccessMask: AccessFlags, + oldLayout: ImageLayout, + newLayout: ImageLayout, + srcQueueFamilyIndex: u32, + dstQueueFamilyIndex: u32, + image: Image, + subresourceRange: ImageSubresourceRange, +} + +MemoryBarrier :: struct { + sType: StructureType, + pNext: rawptr, + srcAccessMask: AccessFlags, + dstAccessMask: AccessFlags, +} + +PipelineCacheHeaderVersionOne :: struct { + headerSize: u32, + headerVersion: PipelineCacheHeaderVersion, + vendorID: u32, + deviceID: u32, + pipelineCacheUUID: [UUID_SIZE]u8, +} + +AllocationCallbacks :: struct { + pUserData: rawptr, + pfnAllocation: ProcAllocationFunction, + pfnReallocation: ProcReallocationFunction, + pfnFree: ProcFreeFunction, + pfnInternalAllocation: ProcInternalAllocationNotification, + pfnInternalFree: ProcInternalFreeNotification, +} + +ApplicationInfo :: struct { + sType: StructureType, + pNext: rawptr, + pApplicationName: cstring, + applicationVersion: u32, + pEngineName: cstring, + engineVersion: u32, + apiVersion: u32, +} + +FormatProperties :: struct { + linearTilingFeatures: FormatFeatureFlags, + optimalTilingFeatures: FormatFeatureFlags, + bufferFeatures: FormatFeatureFlags, +} + +ImageFormatProperties :: struct { + maxExtent: Extent3D, + maxMipLevels: u32, + maxArrayLayers: u32, + sampleCounts: SampleCountFlags, + maxResourceSize: DeviceSize, +} + +InstanceCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: InstanceCreateFlags, + pApplicationInfo: ^ApplicationInfo, + enabledLayerCount: u32, + ppEnabledLayerNames: [^]cstring, + enabledExtensionCount: u32, + ppEnabledExtensionNames: [^]cstring, +} + +MemoryHeap :: struct { + size: DeviceSize, + flags: MemoryHeapFlags, +} + +MemoryType :: struct { + propertyFlags: MemoryPropertyFlags, + heapIndex: u32, +} + +PhysicalDeviceFeatures :: struct { + robustBufferAccess: b32, + fullDrawIndexUint32: b32, + imageCubeArray: b32, + independentBlend: b32, + geometryShader: b32, + tessellationShader: b32, + sampleRateShading: b32, + dualSrcBlend: b32, + logicOp: b32, + multiDrawIndirect: b32, + drawIndirectFirstInstance: b32, + depthClamp: b32, + depthBiasClamp: b32, + fillModeNonSolid: b32, + depthBounds: b32, + wideLines: b32, + largePoints: b32, + alphaToOne: b32, + multiViewport: b32, + samplerAnisotropy: b32, + textureCompressionETC2: b32, + textureCompressionASTC_LDR: b32, + textureCompressionBC: b32, + occlusionQueryPrecise: b32, + pipelineStatisticsQuery: b32, + vertexPipelineStoresAndAtomics: b32, + fragmentStoresAndAtomics: b32, + shaderTessellationAndGeometryPointSize: b32, + shaderImageGatherExtended: b32, + shaderStorageImageExtendedFormats: b32, + shaderStorageImageMultisample: b32, + shaderStorageImageReadWithoutFormat: b32, + shaderStorageImageWriteWithoutFormat: b32, + shaderUniformBufferArrayDynamicIndexing: b32, + shaderSampledImageArrayDynamicIndexing: b32, + shaderStorageBufferArrayDynamicIndexing: b32, + shaderStorageImageArrayDynamicIndexing: b32, + shaderClipDistance: b32, + shaderCullDistance: b32, + shaderFloat64: b32, + shaderInt64: b32, + shaderInt16: b32, + shaderResourceResidency: b32, + shaderResourceMinLod: b32, + sparseBinding: b32, + sparseResidencyBuffer: b32, + sparseResidencyImage2D: b32, + sparseResidencyImage3D: b32, + sparseResidency2Samples: b32, + sparseResidency4Samples: b32, + sparseResidency8Samples: b32, + sparseResidency16Samples: b32, + sparseResidencyAliased: b32, + variableMultisampleRate: b32, + inheritedQueries: b32, +} + +PhysicalDeviceLimits :: struct { + maxImageDimension1D: u32, + maxImageDimension2D: u32, + maxImageDimension3D: u32, + maxImageDimensionCube: u32, + maxImageArrayLayers: u32, + maxTexelBufferElements: u32, + maxUniformBufferRange: u32, + maxStorageBufferRange: u32, + maxPushConstantsSize: u32, + maxMemoryAllocationCount: u32, + maxSamplerAllocationCount: u32, + bufferImageGranularity: DeviceSize, + sparseAddressSpaceSize: DeviceSize, + maxBoundDescriptorSets: u32, + maxPerStageDescriptorSamplers: u32, + maxPerStageDescriptorUniformBuffers: u32, + maxPerStageDescriptorStorageBuffers: u32, + maxPerStageDescriptorSampledImages: u32, + maxPerStageDescriptorStorageImages: u32, + maxPerStageDescriptorInputAttachments: u32, + maxPerStageResources: u32, + maxDescriptorSetSamplers: u32, + maxDescriptorSetUniformBuffers: u32, + maxDescriptorSetUniformBuffersDynamic: u32, + maxDescriptorSetStorageBuffers: u32, + maxDescriptorSetStorageBuffersDynamic: u32, + maxDescriptorSetSampledImages: u32, + maxDescriptorSetStorageImages: u32, + maxDescriptorSetInputAttachments: u32, + maxVertexInputAttributes: u32, + maxVertexInputBindings: u32, + maxVertexInputAttributeOffset: u32, + maxVertexInputBindingStride: u32, + maxVertexOutputComponents: u32, + maxTessellationGenerationLevel: u32, + maxTessellationPatchSize: u32, + maxTessellationControlPerVertexInputComponents: u32, + maxTessellationControlPerVertexOutputComponents: u32, + maxTessellationControlPerPatchOutputComponents: u32, + maxTessellationControlTotalOutputComponents: u32, + maxTessellationEvaluationInputComponents: u32, + maxTessellationEvaluationOutputComponents: u32, + maxGeometryShaderInvocations: u32, + maxGeometryInputComponents: u32, + maxGeometryOutputComponents: u32, + maxGeometryOutputVertices: u32, + maxGeometryTotalOutputComponents: u32, + maxFragmentInputComponents: u32, + maxFragmentOutputAttachments: u32, + maxFragmentDualSrcAttachments: u32, + maxFragmentCombinedOutputResources: u32, + maxComputeSharedMemorySize: u32, + maxComputeWorkGroupCount: [3]u32, + maxComputeWorkGroupInvocations: u32, + maxComputeWorkGroupSize: [3]u32, + subPixelPrecisionBits: u32, + subTexelPrecisionBits: u32, + mipmapPrecisionBits: u32, + maxDrawIndexedIndexValue: u32, + maxDrawIndirectCount: u32, + maxSamplerLodBias: f32, + maxSamplerAnisotropy: f32, + maxViewports: u32, + maxViewportDimensions: [2]u32, + viewportBoundsRange: [2]f32, + viewportSubPixelBits: u32, + minMemoryMapAlignment: int, + minTexelBufferOffsetAlignment: DeviceSize, + minUniformBufferOffsetAlignment: DeviceSize, + minStorageBufferOffsetAlignment: DeviceSize, + minTexelOffset: i32, + maxTexelOffset: u32, + minTexelGatherOffset: i32, + maxTexelGatherOffset: u32, + minInterpolationOffset: f32, + maxInterpolationOffset: f32, + subPixelInterpolationOffsetBits: u32, + maxFramebufferWidth: u32, + maxFramebufferHeight: u32, + maxFramebufferLayers: u32, + framebufferColorSampleCounts: SampleCountFlags, + framebufferDepthSampleCounts: SampleCountFlags, + framebufferStencilSampleCounts: SampleCountFlags, + framebufferNoAttachmentsSampleCounts: SampleCountFlags, + maxColorAttachments: u32, + sampledImageColorSampleCounts: SampleCountFlags, + sampledImageIntegerSampleCounts: SampleCountFlags, + sampledImageDepthSampleCounts: SampleCountFlags, + sampledImageStencilSampleCounts: SampleCountFlags, + storageImageSampleCounts: SampleCountFlags, + maxSampleMaskWords: u32, + timestampComputeAndGraphics: b32, + timestampPeriod: f32, + maxClipDistances: u32, + maxCullDistances: u32, + maxCombinedClipAndCullDistances: u32, + discreteQueuePriorities: u32, + pointSizeRange: [2]f32, + lineWidthRange: [2]f32, + pointSizeGranularity: f32, + lineWidthGranularity: f32, + strictLines: b32, + standardSampleLocations: b32, + optimalBufferCopyOffsetAlignment: DeviceSize, + optimalBufferCopyRowPitchAlignment: DeviceSize, + nonCoherentAtomSize: DeviceSize, +} + +PhysicalDeviceMemoryProperties :: struct { + memoryTypeCount: u32, + memoryTypes: [MAX_MEMORY_TYPES]MemoryType, + memoryHeapCount: u32, + memoryHeaps: [MAX_MEMORY_HEAPS]MemoryHeap, +} + +PhysicalDeviceSparseProperties :: struct { + residencyStandard2DBlockShape: b32, + residencyStandard2DMultisampleBlockShape: b32, + residencyStandard3DBlockShape: b32, + residencyAlignedMipSize: b32, + residencyNonResidentStrict: b32, +} + +PhysicalDeviceProperties :: struct { + apiVersion: u32, + driverVersion: u32, + vendorID: u32, + deviceID: u32, + deviceType: PhysicalDeviceType, + deviceName: [MAX_PHYSICAL_DEVICE_NAME_SIZE]byte, + pipelineCacheUUID: [UUID_SIZE]u8, + limits: PhysicalDeviceLimits, + sparseProperties: PhysicalDeviceSparseProperties, +} + +QueueFamilyProperties :: struct { + queueFlags: QueueFlags, + queueCount: u32, + timestampValidBits: u32, + minImageTransferGranularity: Extent3D, +} + +DeviceQueueCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: DeviceQueueCreateFlags, + queueFamilyIndex: u32, + queueCount: u32, + pQueuePriorities: [^]f32, +} + +DeviceCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: DeviceCreateFlags, + queueCreateInfoCount: u32, + pQueueCreateInfos: [^]DeviceQueueCreateInfo, + enabledLayerCount: u32, + ppEnabledLayerNames: [^]cstring, + enabledExtensionCount: u32, + ppEnabledExtensionNames: [^]cstring, + pEnabledFeatures: [^]PhysicalDeviceFeatures, +} + +ExtensionProperties :: struct { + extensionName: [MAX_EXTENSION_NAME_SIZE]byte, + specVersion: u32, +} + +LayerProperties :: struct { + layerName: [MAX_EXTENSION_NAME_SIZE]byte, + specVersion: u32, + implementationVersion: u32, + description: [MAX_DESCRIPTION_SIZE]byte, +} + +SubmitInfo :: struct { + sType: StructureType, + pNext: rawptr, + waitSemaphoreCount: u32, + pWaitSemaphores: [^]Semaphore, + pWaitDstStageMask: [^]PipelineStageFlags, + commandBufferCount: u32, + pCommandBuffers: [^]CommandBuffer, + signalSemaphoreCount: u32, + pSignalSemaphores: [^]Semaphore, +} + +MappedMemoryRange :: struct { + sType: StructureType, + pNext: rawptr, + memory: DeviceMemory, + offset: DeviceSize, + size: DeviceSize, +} + +MemoryAllocateInfo :: struct { + sType: StructureType, + pNext: rawptr, + allocationSize: DeviceSize, + memoryTypeIndex: u32, +} + +MemoryRequirements :: struct { + size: DeviceSize, + alignment: DeviceSize, + memoryTypeBits: u32, +} + +SparseMemoryBind :: struct { + resourceOffset: DeviceSize, + size: DeviceSize, + memory: DeviceMemory, + memoryOffset: DeviceSize, + flags: SparseMemoryBindFlags, +} + +SparseBufferMemoryBindInfo :: struct { + buffer: Buffer, + bindCount: u32, + pBinds: [^]SparseMemoryBind, +} + +SparseImageOpaqueMemoryBindInfo :: struct { + image: Image, + bindCount: u32, + pBinds: [^]SparseMemoryBind, +} + +ImageSubresource :: struct { + aspectMask: ImageAspectFlags, + mipLevel: u32, + arrayLayer: u32, +} + +SparseImageMemoryBind :: struct { + subresource: ImageSubresource, + offset: Offset3D, + extent: Extent3D, + memory: DeviceMemory, + memoryOffset: DeviceSize, + flags: SparseMemoryBindFlags, +} + +SparseImageMemoryBindInfo :: struct { + image: Image, + bindCount: u32, + pBinds: [^]SparseImageMemoryBind, +} + +BindSparseInfo :: struct { + sType: StructureType, + pNext: rawptr, + waitSemaphoreCount: u32, + pWaitSemaphores: [^]Semaphore, + bufferBindCount: u32, + pBufferBinds: [^]SparseBufferMemoryBindInfo, + imageOpaqueBindCount: u32, + pImageOpaqueBinds: [^]SparseImageOpaqueMemoryBindInfo, + imageBindCount: u32, + pImageBinds: [^]SparseImageMemoryBindInfo, + signalSemaphoreCount: u32, + pSignalSemaphores: [^]Semaphore, +} + +SparseImageFormatProperties :: struct { + aspectMask: ImageAspectFlags, + imageGranularity: Extent3D, + flags: SparseImageFormatFlags, +} + +SparseImageMemoryRequirements :: struct { + formatProperties: SparseImageFormatProperties, + imageMipTailFirstLod: u32, + imageMipTailSize: DeviceSize, + imageMipTailOffset: DeviceSize, + imageMipTailStride: DeviceSize, +} + +FenceCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: FenceCreateFlags, +} + +SemaphoreCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: SemaphoreCreateFlags, +} + +EventCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: EventCreateFlags, +} + +QueryPoolCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: QueryPoolCreateFlags, + queryType: QueryType, + queryCount: u32, + pipelineStatistics: QueryPipelineStatisticFlags, +} + +BufferCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: BufferCreateFlags, + size: DeviceSize, + usage: BufferUsageFlags, + sharingMode: SharingMode, + queueFamilyIndexCount: u32, + pQueueFamilyIndices: [^]u32, +} + +BufferViewCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: BufferViewCreateFlags, + buffer: Buffer, + format: Format, + offset: DeviceSize, + range: DeviceSize, +} + +ImageCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: ImageCreateFlags, + imageType: ImageType, + format: Format, + extent: Extent3D, + mipLevels: u32, + arrayLayers: u32, + samples: SampleCountFlags, + tiling: ImageTiling, + usage: ImageUsageFlags, + sharingMode: SharingMode, + queueFamilyIndexCount: u32, + pQueueFamilyIndices: [^]u32, + initialLayout: ImageLayout, +} + +SubresourceLayout :: struct { + offset: DeviceSize, + size: DeviceSize, + rowPitch: DeviceSize, + arrayPitch: DeviceSize, + depthPitch: DeviceSize, +} + +ComponentMapping :: struct { + r: ComponentSwizzle, + g: ComponentSwizzle, + b: ComponentSwizzle, + a: ComponentSwizzle, +} + +ImageViewCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: ImageViewCreateFlags, + image: Image, + viewType: ImageViewType, + format: Format, + components: ComponentMapping, + subresourceRange: ImageSubresourceRange, +} + +ShaderModuleCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: ShaderModuleCreateFlags, + codeSize: int, + pCode: ^u32, +} + +PipelineCacheCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: PipelineCacheCreateFlags, + initialDataSize: int, + pInitialData: rawptr, +} + +SpecializationMapEntry :: struct { + constantID: u32, + offset: u32, + size: int, +} + +SpecializationInfo :: struct { + mapEntryCount: u32, + pMapEntries: [^]SpecializationMapEntry, + dataSize: int, + pData: rawptr, +} + +PipelineShaderStageCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: PipelineShaderStageCreateFlags, + stage: ShaderStageFlags, + module: ShaderModule, + pName: cstring, + pSpecializationInfo: ^SpecializationInfo, +} + +ComputePipelineCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: PipelineCreateFlags, + stage: PipelineShaderStageCreateInfo, + layout: PipelineLayout, + basePipelineHandle: Pipeline, + basePipelineIndex: i32, +} + +VertexInputBindingDescription :: struct { + binding: u32, + stride: u32, + inputRate: VertexInputRate, +} + +VertexInputAttributeDescription :: struct { + location: u32, + binding: u32, + format: Format, + offset: u32, +} + +PipelineVertexInputStateCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: PipelineVertexInputStateCreateFlags, + vertexBindingDescriptionCount: u32, + pVertexBindingDescriptions: [^]VertexInputBindingDescription, + vertexAttributeDescriptionCount: u32, + pVertexAttributeDescriptions: [^]VertexInputAttributeDescription, +} + +PipelineInputAssemblyStateCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: PipelineInputAssemblyStateCreateFlags, + topology: PrimitiveTopology, + primitiveRestartEnable: b32, +} + +PipelineTessellationStateCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: PipelineTessellationStateCreateFlags, + patchControlPoints: u32, +} + +Viewport :: struct { + x: f32, + y: f32, + width: f32, + height: f32, + minDepth: f32, + maxDepth: f32, +} + +PipelineViewportStateCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: PipelineViewportStateCreateFlags, + viewportCount: u32, + pViewports: [^]Viewport, + scissorCount: u32, + pScissors: [^]Rect2D, +} + +PipelineRasterizationStateCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: PipelineRasterizationStateCreateFlags, + depthClampEnable: b32, + rasterizerDiscardEnable: b32, + polygonMode: PolygonMode, + cullMode: CullModeFlags, + frontFace: FrontFace, + depthBiasEnable: b32, + depthBiasConstantFactor: f32, + depthBiasClamp: f32, + depthBiasSlopeFactor: f32, + lineWidth: f32, +} + +PipelineMultisampleStateCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: PipelineMultisampleStateCreateFlags, + rasterizationSamples: SampleCountFlags, + sampleShadingEnable: b32, + minSampleShading: f32, + pSampleMask: ^SampleMask, + alphaToCoverageEnable: b32, + alphaToOneEnable: b32, +} + +StencilOpState :: struct { + failOp: StencilOp, + passOp: StencilOp, + depthFailOp: StencilOp, + compareOp: CompareOp, + compareMask: u32, + writeMask: u32, + reference: u32, +} + +PipelineDepthStencilStateCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: PipelineDepthStencilStateCreateFlags, + depthTestEnable: b32, + depthWriteEnable: b32, + depthCompareOp: CompareOp, + depthBoundsTestEnable: b32, + stencilTestEnable: b32, + front: StencilOpState, + back: StencilOpState, + minDepthBounds: f32, + maxDepthBounds: f32, +} + +PipelineColorBlendAttachmentState :: struct { + blendEnable: b32, + srcColorBlendFactor: BlendFactor, + dstColorBlendFactor: BlendFactor, + colorBlendOp: BlendOp, + srcAlphaBlendFactor: BlendFactor, + dstAlphaBlendFactor: BlendFactor, + alphaBlendOp: BlendOp, + colorWriteMask: ColorComponentFlags, +} + +PipelineColorBlendStateCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: PipelineColorBlendStateCreateFlags, + logicOpEnable: b32, + logicOp: LogicOp, + attachmentCount: u32, + pAttachments: [^]PipelineColorBlendAttachmentState, + blendConstants: [4]f32, +} + +PipelineDynamicStateCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: PipelineDynamicStateCreateFlags, + dynamicStateCount: u32, + pDynamicStates: [^]DynamicState, +} + +GraphicsPipelineCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: PipelineCreateFlags, + stageCount: u32, + pStages: [^]PipelineShaderStageCreateInfo, + pVertexInputState: ^PipelineVertexInputStateCreateInfo, + pInputAssemblyState: ^PipelineInputAssemblyStateCreateInfo, + pTessellationState: ^PipelineTessellationStateCreateInfo, + pViewportState: ^PipelineViewportStateCreateInfo, + pRasterizationState: ^PipelineRasterizationStateCreateInfo, + pMultisampleState: ^PipelineMultisampleStateCreateInfo, + pDepthStencilState: ^PipelineDepthStencilStateCreateInfo, + pColorBlendState: ^PipelineColorBlendStateCreateInfo, + pDynamicState: ^PipelineDynamicStateCreateInfo, + layout: PipelineLayout, + renderPass: RenderPass, + subpass: u32, + basePipelineHandle: Pipeline, + basePipelineIndex: i32, +} + +PushConstantRange :: struct { + stageFlags: ShaderStageFlags, + offset: u32, + size: u32, +} + +PipelineLayoutCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: PipelineLayoutCreateFlags, + setLayoutCount: u32, + pSetLayouts: [^]DescriptorSetLayout, + pushConstantRangeCount: u32, + pPushConstantRanges: [^]PushConstantRange, +} + +SamplerCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: SamplerCreateFlags, + magFilter: Filter, + minFilter: Filter, + mipmapMode: SamplerMipmapMode, + addressModeU: SamplerAddressMode, + addressModeV: SamplerAddressMode, + addressModeW: SamplerAddressMode, + mipLodBias: f32, + anisotropyEnable: b32, + maxAnisotropy: f32, + compareEnable: b32, + compareOp: CompareOp, + minLod: f32, + maxLod: f32, + borderColor: BorderColor, + unnormalizedCoordinates: b32, +} + +CopyDescriptorSet :: struct { + sType: StructureType, + pNext: rawptr, + srcSet: DescriptorSet, + srcBinding: u32, + srcArrayElement: u32, + dstSet: DescriptorSet, + dstBinding: u32, + dstArrayElement: u32, + descriptorCount: u32, +} + +DescriptorBufferInfo :: struct { + buffer: Buffer, + offset: DeviceSize, + range: DeviceSize, +} + +DescriptorImageInfo :: struct { + sampler: Sampler, + imageView: ImageView, + imageLayout: ImageLayout, +} + +DescriptorPoolSize :: struct { + type: DescriptorType, + descriptorCount: u32, +} + +DescriptorPoolCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: DescriptorPoolCreateFlags, + maxSets: u32, + poolSizeCount: u32, + pPoolSizes: [^]DescriptorPoolSize, +} + +DescriptorSetAllocateInfo :: struct { + sType: StructureType, + pNext: rawptr, + descriptorPool: DescriptorPool, + descriptorSetCount: u32, + pSetLayouts: [^]DescriptorSetLayout, +} + +DescriptorSetLayoutBinding :: struct { + binding: u32, + descriptorType: DescriptorType, + descriptorCount: u32, + stageFlags: ShaderStageFlags, + pImmutableSamplers: [^]Sampler, +} + +DescriptorSetLayoutCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: DescriptorSetLayoutCreateFlags, + bindingCount: u32, + pBindings: [^]DescriptorSetLayoutBinding, +} + +WriteDescriptorSet :: struct { + sType: StructureType, + pNext: rawptr, + dstSet: DescriptorSet, + dstBinding: u32, + dstArrayElement: u32, + descriptorCount: u32, + descriptorType: DescriptorType, + pImageInfo: ^DescriptorImageInfo, + pBufferInfo: ^DescriptorBufferInfo, + pTexelBufferView: ^BufferView, +} + +AttachmentDescription :: struct { + flags: AttachmentDescriptionFlags, + format: Format, + samples: SampleCountFlags, + loadOp: AttachmentLoadOp, + storeOp: AttachmentStoreOp, + stencilLoadOp: AttachmentLoadOp, + stencilStoreOp: AttachmentStoreOp, + initialLayout: ImageLayout, + finalLayout: ImageLayout, +} + +AttachmentReference :: struct { + attachment: u32, + layout: ImageLayout, +} + +FramebufferCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: FramebufferCreateFlags, + renderPass: RenderPass, + attachmentCount: u32, + pAttachments: [^]ImageView, + width: u32, + height: u32, + layers: u32, +} + +SubpassDescription :: struct { + flags: SubpassDescriptionFlags, + pipelineBindPoint: PipelineBindPoint, + inputAttachmentCount: u32, + pInputAttachments: [^]AttachmentReference, + colorAttachmentCount: u32, + pColorAttachments: [^]AttachmentReference, + pResolveAttachments: [^]AttachmentReference, + pDepthStencilAttachment: ^AttachmentReference, + preserveAttachmentCount: u32, + pPreserveAttachments: [^]u32, +} + +SubpassDependency :: struct { + srcSubpass: u32, + dstSubpass: u32, + srcStageMask: PipelineStageFlags, + dstStageMask: PipelineStageFlags, + srcAccessMask: AccessFlags, + dstAccessMask: AccessFlags, + dependencyFlags: DependencyFlags, +} + +RenderPassCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: RenderPassCreateFlags, + attachmentCount: u32, + pAttachments: [^]AttachmentDescription, + subpassCount: u32, + pSubpasses: [^]SubpassDescription, + dependencyCount: u32, + pDependencies: [^]SubpassDependency, +} + +CommandPoolCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: CommandPoolCreateFlags, + queueFamilyIndex: u32, +} + +CommandBufferAllocateInfo :: struct { + sType: StructureType, + pNext: rawptr, + commandPool: CommandPool, + level: CommandBufferLevel, + commandBufferCount: u32, +} + +CommandBufferInheritanceInfo :: struct { + sType: StructureType, + pNext: rawptr, + renderPass: RenderPass, + subpass: u32, + framebuffer: Framebuffer, + occlusionQueryEnable: b32, + queryFlags: QueryControlFlags, + pipelineStatistics: QueryPipelineStatisticFlags, +} + +CommandBufferBeginInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: CommandBufferUsageFlags, + pInheritanceInfo: ^CommandBufferInheritanceInfo, +} + +BufferCopy :: struct { + srcOffset: DeviceSize, + dstOffset: DeviceSize, + size: DeviceSize, +} + +ImageSubresourceLayers :: struct { + aspectMask: ImageAspectFlags, + mipLevel: u32, + baseArrayLayer: u32, + layerCount: u32, +} + +BufferImageCopy :: struct { + bufferOffset: DeviceSize, + bufferRowLength: u32, + bufferImageHeight: u32, + imageSubresource: ImageSubresourceLayers, + imageOffset: Offset3D, + imageExtent: Extent3D, +} + +ClearColorValue :: struct #raw_union { + float32: [4]f32, + int32: [4]i32, + uint32: [4]u32, +} + +ClearDepthStencilValue :: struct { + depth: f32, + stencil: u32, +} + +ClearValue :: struct #raw_union { + color: ClearColorValue, + depthStencil: ClearDepthStencilValue, +} + +ClearAttachment :: struct { + aspectMask: ImageAspectFlags, + colorAttachment: u32, + clearValue: ClearValue, +} + +ClearRect :: struct { + rect: Rect2D, + baseArrayLayer: u32, + layerCount: u32, +} + +ImageBlit :: struct { + srcSubresource: ImageSubresourceLayers, + srcOffsets: [2]Offset3D, + dstSubresource: ImageSubresourceLayers, + dstOffsets: [2]Offset3D, +} + +ImageCopy :: struct { + srcSubresource: ImageSubresourceLayers, + srcOffset: Offset3D, + dstSubresource: ImageSubresourceLayers, + dstOffset: Offset3D, + extent: Extent3D, +} + +ImageResolve :: struct { + srcSubresource: ImageSubresourceLayers, + srcOffset: Offset3D, + dstSubresource: ImageSubresourceLayers, + dstOffset: Offset3D, + extent: Extent3D, +} + +RenderPassBeginInfo :: struct { + sType: StructureType, + pNext: rawptr, + renderPass: RenderPass, + framebuffer: Framebuffer, + renderArea: Rect2D, + clearValueCount: u32, + pClearValues: [^]ClearValue, +} + +PhysicalDeviceSubgroupProperties :: struct { + sType: StructureType, + pNext: rawptr, + subgroupSize: u32, + supportedStages: ShaderStageFlags, + supportedOperations: SubgroupFeatureFlags, + quadOperationsInAllStages: b32, +} + +BindBufferMemoryInfo :: struct { + sType: StructureType, + pNext: rawptr, + buffer: Buffer, + memory: DeviceMemory, + memoryOffset: DeviceSize, +} + +BindImageMemoryInfo :: struct { + sType: StructureType, + pNext: rawptr, + image: Image, + memory: DeviceMemory, + memoryOffset: DeviceSize, +} + +PhysicalDevice16BitStorageFeatures :: struct { + sType: StructureType, + pNext: rawptr, + storageBuffer16BitAccess: b32, + uniformAndStorageBuffer16BitAccess: b32, + storagePushConstant16: b32, + storageInputOutput16: b32, +} + +MemoryDedicatedRequirements :: struct { + sType: StructureType, + pNext: rawptr, + prefersDedicatedAllocation: b32, + requiresDedicatedAllocation: b32, +} + +MemoryDedicatedAllocateInfo :: struct { + sType: StructureType, + pNext: rawptr, + image: Image, + buffer: Buffer, +} + +MemoryAllocateFlagsInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: MemoryAllocateFlags, + deviceMask: u32, +} + +DeviceGroupRenderPassBeginInfo :: struct { + sType: StructureType, + pNext: rawptr, + deviceMask: u32, + deviceRenderAreaCount: u32, + pDeviceRenderAreas: [^]Rect2D, +} + +DeviceGroupCommandBufferBeginInfo :: struct { + sType: StructureType, + pNext: rawptr, + deviceMask: u32, +} + +DeviceGroupSubmitInfo :: struct { + sType: StructureType, + pNext: rawptr, + waitSemaphoreCount: u32, + pWaitSemaphoreDeviceIndices: [^]u32, + commandBufferCount: u32, + pCommandBufferDeviceMasks: [^]u32, + signalSemaphoreCount: u32, + pSignalSemaphoreDeviceIndices: [^]u32, +} + +DeviceGroupBindSparseInfo :: struct { + sType: StructureType, + pNext: rawptr, + resourceDeviceIndex: u32, + memoryDeviceIndex: u32, +} + +BindBufferMemoryDeviceGroupInfo :: struct { + sType: StructureType, + pNext: rawptr, + deviceIndexCount: u32, + pDeviceIndices: [^]u32, +} + +BindImageMemoryDeviceGroupInfo :: struct { + sType: StructureType, + pNext: rawptr, + deviceIndexCount: u32, + pDeviceIndices: [^]u32, + splitInstanceBindRegionCount: u32, + pSplitInstanceBindRegions: [^]Rect2D, +} + +PhysicalDeviceGroupProperties :: struct { + sType: StructureType, + pNext: rawptr, + physicalDeviceCount: u32, + physicalDevices: [MAX_DEVICE_GROUP_SIZE]PhysicalDevice, + subsetAllocation: b32, +} + +DeviceGroupDeviceCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + physicalDeviceCount: u32, + pPhysicalDevices: [^]PhysicalDevice, +} + +BufferMemoryRequirementsInfo2 :: struct { + sType: StructureType, + pNext: rawptr, + buffer: Buffer, +} + +ImageMemoryRequirementsInfo2 :: struct { + sType: StructureType, + pNext: rawptr, + image: Image, +} + +ImageSparseMemoryRequirementsInfo2 :: struct { + sType: StructureType, + pNext: rawptr, + image: Image, +} + +MemoryRequirements2 :: struct { + sType: StructureType, + pNext: rawptr, + memoryRequirements: MemoryRequirements, +} + +SparseImageMemoryRequirements2 :: struct { + sType: StructureType, + pNext: rawptr, + memoryRequirements: SparseImageMemoryRequirements, +} + +PhysicalDeviceFeatures2 :: struct { + sType: StructureType, + pNext: rawptr, + features: PhysicalDeviceFeatures, +} + +PhysicalDeviceProperties2 :: struct { + sType: StructureType, + pNext: rawptr, + properties: PhysicalDeviceProperties, +} + +FormatProperties2 :: struct { + sType: StructureType, + pNext: rawptr, + formatProperties: FormatProperties, +} + +ImageFormatProperties2 :: struct { + sType: StructureType, + pNext: rawptr, + imageFormatProperties: ImageFormatProperties, +} + +PhysicalDeviceImageFormatInfo2 :: struct { + sType: StructureType, + pNext: rawptr, + format: Format, + type: ImageType, + tiling: ImageTiling, + usage: ImageUsageFlags, + flags: ImageCreateFlags, +} + +QueueFamilyProperties2 :: struct { + sType: StructureType, + pNext: rawptr, + queueFamilyProperties: QueueFamilyProperties, +} + +PhysicalDeviceMemoryProperties2 :: struct { + sType: StructureType, + pNext: rawptr, + memoryProperties: PhysicalDeviceMemoryProperties, +} + +SparseImageFormatProperties2 :: struct { + sType: StructureType, + pNext: rawptr, + properties: SparseImageFormatProperties, +} + +PhysicalDeviceSparseImageFormatInfo2 :: struct { + sType: StructureType, + pNext: rawptr, + format: Format, + type: ImageType, + samples: SampleCountFlags, + usage: ImageUsageFlags, + tiling: ImageTiling, +} + +PhysicalDevicePointClippingProperties :: struct { + sType: StructureType, + pNext: rawptr, + pointClippingBehavior: PointClippingBehavior, +} + +InputAttachmentAspectReference :: struct { + subpass: u32, + inputAttachmentIndex: u32, + aspectMask: ImageAspectFlags, +} + +RenderPassInputAttachmentAspectCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + aspectReferenceCount: u32, + pAspectReferences: [^]InputAttachmentAspectReference, +} + +ImageViewUsageCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + usage: ImageUsageFlags, +} + +PipelineTessellationDomainOriginStateCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + domainOrigin: TessellationDomainOrigin, +} + +RenderPassMultiviewCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + subpassCount: u32, + pViewMasks: [^]u32, + dependencyCount: u32, + pViewOffsets: [^]i32, + correlationMaskCount: u32, + pCorrelationMasks: [^]u32, +} + +PhysicalDeviceMultiviewFeatures :: struct { + sType: StructureType, + pNext: rawptr, + multiview: b32, + multiviewGeometryShader: b32, + multiviewTessellationShader: b32, +} + +PhysicalDeviceMultiviewProperties :: struct { + sType: StructureType, + pNext: rawptr, + maxMultiviewViewCount: u32, + maxMultiviewInstanceIndex: u32, +} + +PhysicalDeviceVariablePointersFeatures :: struct { + sType: StructureType, + pNext: rawptr, + variablePointersStorageBuffer: b32, + variablePointers: b32, +} + +PhysicalDeviceProtectedMemoryFeatures :: struct { + sType: StructureType, + pNext: rawptr, + protectedMemory: b32, +} + +PhysicalDeviceProtectedMemoryProperties :: struct { + sType: StructureType, + pNext: rawptr, + protectedNoFault: b32, +} + +DeviceQueueInfo2 :: struct { + sType: StructureType, + pNext: rawptr, + flags: DeviceQueueCreateFlags, + queueFamilyIndex: u32, + queueIndex: u32, +} + +ProtectedSubmitInfo :: struct { + sType: StructureType, + pNext: rawptr, + protectedSubmit: b32, +} + +SamplerYcbcrConversionCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + format: Format, + ycbcrModel: SamplerYcbcrModelConversion, + ycbcrRange: SamplerYcbcrRange, + components: ComponentMapping, + xChromaOffset: ChromaLocation, + yChromaOffset: ChromaLocation, + chromaFilter: Filter, + forceExplicitReconstruction: b32, +} + +SamplerYcbcrConversionInfo :: struct { + sType: StructureType, + pNext: rawptr, + conversion: SamplerYcbcrConversion, +} + +BindImagePlaneMemoryInfo :: struct { + sType: StructureType, + pNext: rawptr, + planeAspect: ImageAspectFlags, +} + +ImagePlaneMemoryRequirementsInfo :: struct { + sType: StructureType, + pNext: rawptr, + planeAspect: ImageAspectFlags, +} + +PhysicalDeviceSamplerYcbcrConversionFeatures :: struct { + sType: StructureType, + pNext: rawptr, + samplerYcbcrConversion: b32, +} + +SamplerYcbcrConversionImageFormatProperties :: struct { + sType: StructureType, + pNext: rawptr, + combinedImageSamplerDescriptorCount: u32, +} + +DescriptorUpdateTemplateEntry :: struct { + dstBinding: u32, + dstArrayElement: u32, + descriptorCount: u32, + descriptorType: DescriptorType, + offset: int, + stride: int, +} + +DescriptorUpdateTemplateCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: DescriptorUpdateTemplateCreateFlags, + descriptorUpdateEntryCount: u32, + pDescriptorUpdateEntries: [^]DescriptorUpdateTemplateEntry, + templateType: DescriptorUpdateTemplateType, + descriptorSetLayout: DescriptorSetLayout, + pipelineBindPoint: PipelineBindPoint, + pipelineLayout: PipelineLayout, + set: u32, +} + +ExternalMemoryProperties :: struct { + externalMemoryFeatures: ExternalMemoryFeatureFlags, + exportFromImportedHandleTypes: ExternalMemoryHandleTypeFlags, + compatibleHandleTypes: ExternalMemoryHandleTypeFlags, +} + +PhysicalDeviceExternalImageFormatInfo :: struct { + sType: StructureType, + pNext: rawptr, + handleType: ExternalMemoryHandleTypeFlags, +} + +ExternalImageFormatProperties :: struct { + sType: StructureType, + pNext: rawptr, + externalMemoryProperties: ExternalMemoryProperties, +} + +PhysicalDeviceExternalBufferInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: BufferCreateFlags, + usage: BufferUsageFlags, + handleType: ExternalMemoryHandleTypeFlags, +} + +ExternalBufferProperties :: struct { + sType: StructureType, + pNext: rawptr, + externalMemoryProperties: ExternalMemoryProperties, +} + +PhysicalDeviceIDProperties :: struct { + sType: StructureType, + pNext: rawptr, + deviceUUID: [UUID_SIZE]u8, + driverUUID: [UUID_SIZE]u8, + deviceLUID: [LUID_SIZE]u8, + deviceNodeMask: u32, + deviceLUIDValid: b32, +} + +ExternalMemoryImageCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + handleTypes: ExternalMemoryHandleTypeFlags, +} + +ExternalMemoryBufferCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + handleTypes: ExternalMemoryHandleTypeFlags, +} + +ExportMemoryAllocateInfo :: struct { + sType: StructureType, + pNext: rawptr, + handleTypes: ExternalMemoryHandleTypeFlags, +} + +PhysicalDeviceExternalFenceInfo :: struct { + sType: StructureType, + pNext: rawptr, + handleType: ExternalFenceHandleTypeFlags, +} + +ExternalFenceProperties :: struct { + sType: StructureType, + pNext: rawptr, + exportFromImportedHandleTypes: ExternalFenceHandleTypeFlags, + compatibleHandleTypes: ExternalFenceHandleTypeFlags, + externalFenceFeatures: ExternalFenceFeatureFlags, +} + +ExportFenceCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + handleTypes: ExternalFenceHandleTypeFlags, +} + +ExportSemaphoreCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + handleTypes: ExternalSemaphoreHandleTypeFlags, +} + +PhysicalDeviceExternalSemaphoreInfo :: struct { + sType: StructureType, + pNext: rawptr, + handleType: ExternalSemaphoreHandleTypeFlags, +} + +ExternalSemaphoreProperties :: struct { + sType: StructureType, + pNext: rawptr, + exportFromImportedHandleTypes: ExternalSemaphoreHandleTypeFlags, + compatibleHandleTypes: ExternalSemaphoreHandleTypeFlags, + externalSemaphoreFeatures: ExternalSemaphoreFeatureFlags, +} + +PhysicalDeviceMaintenance3Properties :: struct { + sType: StructureType, + pNext: rawptr, + maxPerSetDescriptors: u32, + maxMemoryAllocationSize: DeviceSize, +} + +DescriptorSetLayoutSupport :: struct { + sType: StructureType, + pNext: rawptr, + supported: b32, +} + +PhysicalDeviceShaderDrawParametersFeatures :: struct { + sType: StructureType, + pNext: rawptr, + shaderDrawParameters: b32, +} + +PhysicalDeviceVulkan11Features :: struct { + sType: StructureType, + pNext: rawptr, + storageBuffer16BitAccess: b32, + uniformAndStorageBuffer16BitAccess: b32, + storagePushConstant16: b32, + storageInputOutput16: b32, + multiview: b32, + multiviewGeometryShader: b32, + multiviewTessellationShader: b32, + variablePointersStorageBuffer: b32, + variablePointers: b32, + protectedMemory: b32, + samplerYcbcrConversion: b32, + shaderDrawParameters: b32, +} + +PhysicalDeviceVulkan11Properties :: struct { + sType: StructureType, + pNext: rawptr, + deviceUUID: [UUID_SIZE]u8, + driverUUID: [UUID_SIZE]u8, + deviceLUID: [LUID_SIZE]u8, + deviceNodeMask: u32, + deviceLUIDValid: b32, + subgroupSize: u32, + subgroupSupportedStages: ShaderStageFlags, + subgroupSupportedOperations: SubgroupFeatureFlags, + subgroupQuadOperationsInAllStages: b32, + pointClippingBehavior: PointClippingBehavior, + maxMultiviewViewCount: u32, + maxMultiviewInstanceIndex: u32, + protectedNoFault: b32, + maxPerSetDescriptors: u32, + maxMemoryAllocationSize: DeviceSize, +} + +PhysicalDeviceVulkan12Features :: struct { + sType: StructureType, + pNext: rawptr, + samplerMirrorClampToEdge: b32, + drawIndirectCount: b32, + storageBuffer8BitAccess: b32, + uniformAndStorageBuffer8BitAccess: b32, + storagePushConstant8: b32, + shaderBufferInt64Atomics: b32, + shaderSharedInt64Atomics: b32, + shaderFloat16: b32, + shaderInt8: b32, + descriptorIndexing: b32, + shaderInputAttachmentArrayDynamicIndexing: b32, + shaderUniformTexelBufferArrayDynamicIndexing: b32, + shaderStorageTexelBufferArrayDynamicIndexing: b32, + shaderUniformBufferArrayNonUniformIndexing: b32, + shaderSampledImageArrayNonUniformIndexing: b32, + shaderStorageBufferArrayNonUniformIndexing: b32, + shaderStorageImageArrayNonUniformIndexing: b32, + shaderInputAttachmentArrayNonUniformIndexing: b32, + shaderUniformTexelBufferArrayNonUniformIndexing: b32, + shaderStorageTexelBufferArrayNonUniformIndexing: b32, + descriptorBindingUniformBufferUpdateAfterBind: b32, + descriptorBindingSampledImageUpdateAfterBind: b32, + descriptorBindingStorageImageUpdateAfterBind: b32, + descriptorBindingStorageBufferUpdateAfterBind: b32, + descriptorBindingUniformTexelBufferUpdateAfterBind: b32, + descriptorBindingStorageTexelBufferUpdateAfterBind: b32, + descriptorBindingUpdateUnusedWhilePending: b32, + descriptorBindingPartiallyBound: b32, + descriptorBindingVariableDescriptorCount: b32, + runtimeDescriptorArray: b32, + samplerFilterMinmax: b32, + scalarBlockLayout: b32, + imagelessFramebuffer: b32, + uniformBufferStandardLayout: b32, + shaderSubgroupExtendedTypes: b32, + separateDepthStencilLayouts: b32, + hostQueryReset: b32, + timelineSemaphore: b32, + bufferDeviceAddress: b32, + bufferDeviceAddressCaptureReplay: b32, + bufferDeviceAddressMultiDevice: b32, + vulkanMemoryModel: b32, + vulkanMemoryModelDeviceScope: b32, + vulkanMemoryModelAvailabilityVisibilityChains: b32, + shaderOutputViewportIndex: b32, + shaderOutputLayer: b32, + subgroupBroadcastDynamicId: b32, +} + +ConformanceVersion :: struct { + major: u8, + minor: u8, + subminor: u8, + patch: u8, +} + +PhysicalDeviceVulkan12Properties :: struct { + sType: StructureType, + pNext: rawptr, + driverID: DriverId, + driverName: [MAX_DRIVER_NAME_SIZE]byte, + driverInfo: [MAX_DRIVER_INFO_SIZE]byte, + conformanceVersion: ConformanceVersion, + denormBehaviorIndependence: ShaderFloatControlsIndependence, + roundingModeIndependence: ShaderFloatControlsIndependence, + shaderSignedZeroInfNanPreserveFloat16: b32, + shaderSignedZeroInfNanPreserveFloat32: b32, + shaderSignedZeroInfNanPreserveFloat64: b32, + shaderDenormPreserveFloat16: b32, + shaderDenormPreserveFloat32: b32, + shaderDenormPreserveFloat64: b32, + shaderDenormFlushToZeroFloat16: b32, + shaderDenormFlushToZeroFloat32: b32, + shaderDenormFlushToZeroFloat64: b32, + shaderRoundingModeRTEFloat16: b32, + shaderRoundingModeRTEFloat32: b32, + shaderRoundingModeRTEFloat64: b32, + shaderRoundingModeRTZFloat16: b32, + shaderRoundingModeRTZFloat32: b32, + shaderRoundingModeRTZFloat64: b32, + maxUpdateAfterBindDescriptorsInAllPools: u32, + shaderUniformBufferArrayNonUniformIndexingNative: b32, + shaderSampledImageArrayNonUniformIndexingNative: b32, + shaderStorageBufferArrayNonUniformIndexingNative: b32, + shaderStorageImageArrayNonUniformIndexingNative: b32, + shaderInputAttachmentArrayNonUniformIndexingNative: b32, + robustBufferAccessUpdateAfterBind: b32, + quadDivergentImplicitLod: b32, + maxPerStageDescriptorUpdateAfterBindSamplers: u32, + maxPerStageDescriptorUpdateAfterBindUniformBuffers: u32, + maxPerStageDescriptorUpdateAfterBindStorageBuffers: u32, + maxPerStageDescriptorUpdateAfterBindSampledImages: u32, + maxPerStageDescriptorUpdateAfterBindStorageImages: u32, + maxPerStageDescriptorUpdateAfterBindInputAttachments: u32, + maxPerStageUpdateAfterBindResources: u32, + maxDescriptorSetUpdateAfterBindSamplers: u32, + maxDescriptorSetUpdateAfterBindUniformBuffers: u32, + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic: u32, + maxDescriptorSetUpdateAfterBindStorageBuffers: u32, + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic: u32, + maxDescriptorSetUpdateAfterBindSampledImages: u32, + maxDescriptorSetUpdateAfterBindStorageImages: u32, + maxDescriptorSetUpdateAfterBindInputAttachments: u32, + supportedDepthResolveModes: ResolveModeFlags, + supportedStencilResolveModes: ResolveModeFlags, + independentResolveNone: b32, + independentResolve: b32, + filterMinmaxSingleComponentFormats: b32, + filterMinmaxImageComponentMapping: b32, + maxTimelineSemaphoreValueDifference: u64, + framebufferIntegerColorSampleCounts: SampleCountFlags, +} + +ImageFormatListCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + viewFormatCount: u32, + pViewFormats: [^]Format, +} + +AttachmentDescription2 :: struct { + sType: StructureType, + pNext: rawptr, + flags: AttachmentDescriptionFlags, + format: Format, + samples: SampleCountFlags, + loadOp: AttachmentLoadOp, + storeOp: AttachmentStoreOp, + stencilLoadOp: AttachmentLoadOp, + stencilStoreOp: AttachmentStoreOp, + initialLayout: ImageLayout, + finalLayout: ImageLayout, +} + +AttachmentReference2 :: struct { + sType: StructureType, + pNext: rawptr, + attachment: u32, + layout: ImageLayout, + aspectMask: ImageAspectFlags, +} + +SubpassDescription2 :: struct { + sType: StructureType, + pNext: rawptr, + flags: SubpassDescriptionFlags, + pipelineBindPoint: PipelineBindPoint, + viewMask: u32, + inputAttachmentCount: u32, + pInputAttachments: [^]AttachmentReference2, + colorAttachmentCount: u32, + pColorAttachments: [^]AttachmentReference2, + pResolveAttachments: [^]AttachmentReference2, + pDepthStencilAttachment: ^AttachmentReference2, + preserveAttachmentCount: u32, + pPreserveAttachments: [^]u32, +} + +SubpassDependency2 :: struct { + sType: StructureType, + pNext: rawptr, + srcSubpass: u32, + dstSubpass: u32, + srcStageMask: PipelineStageFlags, + dstStageMask: PipelineStageFlags, + srcAccessMask: AccessFlags, + dstAccessMask: AccessFlags, + dependencyFlags: DependencyFlags, + viewOffset: i32, +} + +RenderPassCreateInfo2 :: struct { + sType: StructureType, + pNext: rawptr, + flags: RenderPassCreateFlags, + attachmentCount: u32, + pAttachments: [^]AttachmentDescription2, + subpassCount: u32, + pSubpasses: [^]SubpassDescription2, + dependencyCount: u32, + pDependencies: [^]SubpassDependency2, + correlatedViewMaskCount: u32, + pCorrelatedViewMasks: [^]u32, +} + +SubpassBeginInfo :: struct { + sType: StructureType, + pNext: rawptr, + contents: SubpassContents, +} + +SubpassEndInfo :: struct { + sType: StructureType, + pNext: rawptr, +} + +PhysicalDevice8BitStorageFeatures :: struct { + sType: StructureType, + pNext: rawptr, + storageBuffer8BitAccess: b32, + uniformAndStorageBuffer8BitAccess: b32, + storagePushConstant8: b32, +} + +PhysicalDeviceDriverProperties :: struct { + sType: StructureType, + pNext: rawptr, + driverID: DriverId, + driverName: [MAX_DRIVER_NAME_SIZE]byte, + driverInfo: [MAX_DRIVER_INFO_SIZE]byte, + conformanceVersion: ConformanceVersion, +} + +PhysicalDeviceShaderAtomicInt64Features :: struct { + sType: StructureType, + pNext: rawptr, + shaderBufferInt64Atomics: b32, + shaderSharedInt64Atomics: b32, +} + +PhysicalDeviceShaderFloat16Int8Features :: struct { + sType: StructureType, + pNext: rawptr, + shaderFloat16: b32, + shaderInt8: b32, +} + +PhysicalDeviceFloatControlsProperties :: struct { + sType: StructureType, + pNext: rawptr, + denormBehaviorIndependence: ShaderFloatControlsIndependence, + roundingModeIndependence: ShaderFloatControlsIndependence, + shaderSignedZeroInfNanPreserveFloat16: b32, + shaderSignedZeroInfNanPreserveFloat32: b32, + shaderSignedZeroInfNanPreserveFloat64: b32, + shaderDenormPreserveFloat16: b32, + shaderDenormPreserveFloat32: b32, + shaderDenormPreserveFloat64: b32, + shaderDenormFlushToZeroFloat16: b32, + shaderDenormFlushToZeroFloat32: b32, + shaderDenormFlushToZeroFloat64: b32, + shaderRoundingModeRTEFloat16: b32, + shaderRoundingModeRTEFloat32: b32, + shaderRoundingModeRTEFloat64: b32, + shaderRoundingModeRTZFloat16: b32, + shaderRoundingModeRTZFloat32: b32, + shaderRoundingModeRTZFloat64: b32, +} + +DescriptorSetLayoutBindingFlagsCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + bindingCount: u32, + pBindingFlags: [^]DescriptorBindingFlags, +} + +PhysicalDeviceDescriptorIndexingFeatures :: struct { + sType: StructureType, + pNext: rawptr, + shaderInputAttachmentArrayDynamicIndexing: b32, + shaderUniformTexelBufferArrayDynamicIndexing: b32, + shaderStorageTexelBufferArrayDynamicIndexing: b32, + shaderUniformBufferArrayNonUniformIndexing: b32, + shaderSampledImageArrayNonUniformIndexing: b32, + shaderStorageBufferArrayNonUniformIndexing: b32, + shaderStorageImageArrayNonUniformIndexing: b32, + shaderInputAttachmentArrayNonUniformIndexing: b32, + shaderUniformTexelBufferArrayNonUniformIndexing: b32, + shaderStorageTexelBufferArrayNonUniformIndexing: b32, + descriptorBindingUniformBufferUpdateAfterBind: b32, + descriptorBindingSampledImageUpdateAfterBind: b32, + descriptorBindingStorageImageUpdateAfterBind: b32, + descriptorBindingStorageBufferUpdateAfterBind: b32, + descriptorBindingUniformTexelBufferUpdateAfterBind: b32, + descriptorBindingStorageTexelBufferUpdateAfterBind: b32, + descriptorBindingUpdateUnusedWhilePending: b32, + descriptorBindingPartiallyBound: b32, + descriptorBindingVariableDescriptorCount: b32, + runtimeDescriptorArray: b32, +} + +PhysicalDeviceDescriptorIndexingProperties :: struct { + sType: StructureType, + pNext: rawptr, + maxUpdateAfterBindDescriptorsInAllPools: u32, + shaderUniformBufferArrayNonUniformIndexingNative: b32, + shaderSampledImageArrayNonUniformIndexingNative: b32, + shaderStorageBufferArrayNonUniformIndexingNative: b32, + shaderStorageImageArrayNonUniformIndexingNative: b32, + shaderInputAttachmentArrayNonUniformIndexingNative: b32, + robustBufferAccessUpdateAfterBind: b32, + quadDivergentImplicitLod: b32, + maxPerStageDescriptorUpdateAfterBindSamplers: u32, + maxPerStageDescriptorUpdateAfterBindUniformBuffers: u32, + maxPerStageDescriptorUpdateAfterBindStorageBuffers: u32, + maxPerStageDescriptorUpdateAfterBindSampledImages: u32, + maxPerStageDescriptorUpdateAfterBindStorageImages: u32, + maxPerStageDescriptorUpdateAfterBindInputAttachments: u32, + maxPerStageUpdateAfterBindResources: u32, + maxDescriptorSetUpdateAfterBindSamplers: u32, + maxDescriptorSetUpdateAfterBindUniformBuffers: u32, + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic: u32, + maxDescriptorSetUpdateAfterBindStorageBuffers: u32, + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic: u32, + maxDescriptorSetUpdateAfterBindSampledImages: u32, + maxDescriptorSetUpdateAfterBindStorageImages: u32, + maxDescriptorSetUpdateAfterBindInputAttachments: u32, +} + +DescriptorSetVariableDescriptorCountAllocateInfo :: struct { + sType: StructureType, + pNext: rawptr, + descriptorSetCount: u32, + pDescriptorCounts: [^]u32, +} + +DescriptorSetVariableDescriptorCountLayoutSupport :: struct { + sType: StructureType, + pNext: rawptr, + maxVariableDescriptorCount: u32, +} + +SubpassDescriptionDepthStencilResolve :: struct { + sType: StructureType, + pNext: rawptr, + depthResolveMode: ResolveModeFlags, + stencilResolveMode: ResolveModeFlags, + pDepthStencilResolveAttachment: ^AttachmentReference2, +} + +PhysicalDeviceDepthStencilResolveProperties :: struct { + sType: StructureType, + pNext: rawptr, + supportedDepthResolveModes: ResolveModeFlags, + supportedStencilResolveModes: ResolveModeFlags, + independentResolveNone: b32, + independentResolve: b32, +} + +PhysicalDeviceScalarBlockLayoutFeatures :: struct { + sType: StructureType, + pNext: rawptr, + scalarBlockLayout: b32, +} + +ImageStencilUsageCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + stencilUsage: ImageUsageFlags, +} + +SamplerReductionModeCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + reductionMode: SamplerReductionMode, +} + +PhysicalDeviceSamplerFilterMinmaxProperties :: struct { + sType: StructureType, + pNext: rawptr, + filterMinmaxSingleComponentFormats: b32, + filterMinmaxImageComponentMapping: b32, +} + +PhysicalDeviceVulkanMemoryModelFeatures :: struct { + sType: StructureType, + pNext: rawptr, + vulkanMemoryModel: b32, + vulkanMemoryModelDeviceScope: b32, + vulkanMemoryModelAvailabilityVisibilityChains: b32, +} + +PhysicalDeviceImagelessFramebufferFeatures :: struct { + sType: StructureType, + pNext: rawptr, + imagelessFramebuffer: b32, +} + +FramebufferAttachmentImageInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: ImageCreateFlags, + usage: ImageUsageFlags, + width: u32, + height: u32, + layerCount: u32, + viewFormatCount: u32, + pViewFormats: [^]Format, +} + +FramebufferAttachmentsCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + attachmentImageInfoCount: u32, + pAttachmentImageInfos: [^]FramebufferAttachmentImageInfo, +} + +RenderPassAttachmentBeginInfo :: struct { + sType: StructureType, + pNext: rawptr, + attachmentCount: u32, + pAttachments: [^]ImageView, +} + +PhysicalDeviceUniformBufferStandardLayoutFeatures :: struct { + sType: StructureType, + pNext: rawptr, + uniformBufferStandardLayout: b32, +} + +PhysicalDeviceShaderSubgroupExtendedTypesFeatures :: struct { + sType: StructureType, + pNext: rawptr, + shaderSubgroupExtendedTypes: b32, +} + +PhysicalDeviceSeparateDepthStencilLayoutsFeatures :: struct { + sType: StructureType, + pNext: rawptr, + separateDepthStencilLayouts: b32, +} + +AttachmentReferenceStencilLayout :: struct { + sType: StructureType, + pNext: rawptr, + stencilLayout: ImageLayout, +} + +AttachmentDescriptionStencilLayout :: struct { + sType: StructureType, + pNext: rawptr, + stencilInitialLayout: ImageLayout, + stencilFinalLayout: ImageLayout, +} + +PhysicalDeviceHostQueryResetFeatures :: struct { + sType: StructureType, + pNext: rawptr, + hostQueryReset: b32, +} + +PhysicalDeviceTimelineSemaphoreFeatures :: struct { + sType: StructureType, + pNext: rawptr, + timelineSemaphore: b32, +} + +PhysicalDeviceTimelineSemaphoreProperties :: struct { + sType: StructureType, + pNext: rawptr, + maxTimelineSemaphoreValueDifference: u64, +} + +SemaphoreTypeCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + semaphoreType: SemaphoreType, + initialValue: u64, +} + +TimelineSemaphoreSubmitInfo :: struct { + sType: StructureType, + pNext: rawptr, + waitSemaphoreValueCount: u32, + pWaitSemaphoreValues: [^]u64, + signalSemaphoreValueCount: u32, + pSignalSemaphoreValues: [^]u64, +} + +SemaphoreWaitInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: SemaphoreWaitFlags, + semaphoreCount: u32, + pSemaphores: [^]Semaphore, + pValues: [^]u64, +} + +SemaphoreSignalInfo :: struct { + sType: StructureType, + pNext: rawptr, + semaphore: Semaphore, + value: u64, +} + +PhysicalDeviceBufferDeviceAddressFeatures :: struct { + sType: StructureType, + pNext: rawptr, + bufferDeviceAddress: b32, + bufferDeviceAddressCaptureReplay: b32, + bufferDeviceAddressMultiDevice: b32, +} + +BufferDeviceAddressInfo :: struct { + sType: StructureType, + pNext: rawptr, + buffer: Buffer, +} + +BufferOpaqueCaptureAddressCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + opaqueCaptureAddress: u64, +} + +MemoryOpaqueCaptureAddressAllocateInfo :: struct { + sType: StructureType, + pNext: rawptr, + opaqueCaptureAddress: u64, +} + +DeviceMemoryOpaqueCaptureAddressInfo :: struct { + sType: StructureType, + pNext: rawptr, + memory: DeviceMemory, +} + +PhysicalDeviceVulkan13Features :: struct { + sType: StructureType, + pNext: rawptr, + robustImageAccess: b32, + inlineUniformBlock: b32, + descriptorBindingInlineUniformBlockUpdateAfterBind: b32, + pipelineCreationCacheControl: b32, + privateData: b32, + shaderDemoteToHelperInvocation: b32, + shaderTerminateInvocation: b32, + subgroupSizeControl: b32, + computeFullSubgroups: b32, + synchronization2: b32, + textureCompressionASTC_HDR: b32, + shaderZeroInitializeWorkgroupMemory: b32, + dynamicRendering: b32, + shaderIntegerDotProduct: b32, + maintenance4: b32, +} + +PhysicalDeviceVulkan13Properties :: struct { + sType: StructureType, + pNext: rawptr, + minSubgroupSize: u32, + maxSubgroupSize: u32, + maxComputeWorkgroupSubgroups: u32, + requiredSubgroupSizeStages: ShaderStageFlags, + maxInlineUniformBlockSize: u32, + maxPerStageDescriptorInlineUniformBlocks: u32, + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks: u32, + maxDescriptorSetInlineUniformBlocks: u32, + maxDescriptorSetUpdateAfterBindInlineUniformBlocks: u32, + maxInlineUniformTotalSize: u32, + integerDotProduct8BitUnsignedAccelerated: b32, + integerDotProduct8BitSignedAccelerated: b32, + integerDotProduct8BitMixedSignednessAccelerated: b32, + integerDotProduct4x8BitPackedUnsignedAccelerated: b32, + integerDotProduct4x8BitPackedSignedAccelerated: b32, + integerDotProduct4x8BitPackedMixedSignednessAccelerated: b32, + integerDotProduct16BitUnsignedAccelerated: b32, + integerDotProduct16BitSignedAccelerated: b32, + integerDotProduct16BitMixedSignednessAccelerated: b32, + integerDotProduct32BitUnsignedAccelerated: b32, + integerDotProduct32BitSignedAccelerated: b32, + integerDotProduct32BitMixedSignednessAccelerated: b32, + integerDotProduct64BitUnsignedAccelerated: b32, + integerDotProduct64BitSignedAccelerated: b32, + integerDotProduct64BitMixedSignednessAccelerated: b32, + integerDotProductAccumulatingSaturating8BitUnsignedAccelerated: b32, + integerDotProductAccumulatingSaturating8BitSignedAccelerated: b32, + integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated: b32, + integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated: b32, + integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated: b32, + integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated: b32, + integerDotProductAccumulatingSaturating16BitUnsignedAccelerated: b32, + integerDotProductAccumulatingSaturating16BitSignedAccelerated: b32, + integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated: b32, + integerDotProductAccumulatingSaturating32BitUnsignedAccelerated: b32, + integerDotProductAccumulatingSaturating32BitSignedAccelerated: b32, + integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated: b32, + integerDotProductAccumulatingSaturating64BitUnsignedAccelerated: b32, + integerDotProductAccumulatingSaturating64BitSignedAccelerated: b32, + integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated: b32, + storageTexelBufferOffsetAlignmentBytes: DeviceSize, + storageTexelBufferOffsetSingleTexelAlignment: b32, + uniformTexelBufferOffsetAlignmentBytes: DeviceSize, + uniformTexelBufferOffsetSingleTexelAlignment: b32, + maxBufferSize: DeviceSize, +} + +PipelineCreationFeedback :: struct { + flags: PipelineCreationFeedbackFlags, + duration: u64, +} + +PipelineCreationFeedbackCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + pPipelineCreationFeedback: ^PipelineCreationFeedback, + pipelineStageCreationFeedbackCount: u32, + pPipelineStageCreationFeedbacks: [^]PipelineCreationFeedback, +} + +PhysicalDeviceShaderTerminateInvocationFeatures :: struct { + sType: StructureType, + pNext: rawptr, + shaderTerminateInvocation: b32, +} + +PhysicalDeviceToolProperties :: struct { + sType: StructureType, + pNext: rawptr, + name: [MAX_EXTENSION_NAME_SIZE]byte, + version: [MAX_EXTENSION_NAME_SIZE]byte, + purposes: ToolPurposeFlags, + description: [MAX_DESCRIPTION_SIZE]byte, + layer: [MAX_EXTENSION_NAME_SIZE]byte, +} + +PhysicalDeviceShaderDemoteToHelperInvocationFeatures :: struct { + sType: StructureType, + pNext: rawptr, + shaderDemoteToHelperInvocation: b32, +} + +PhysicalDevicePrivateDataFeatures :: struct { + sType: StructureType, + pNext: rawptr, + privateData: b32, +} + +DevicePrivateDataCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + privateDataSlotRequestCount: u32, +} + +PrivateDataSlotCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: PrivateDataSlotCreateFlags, +} + +PhysicalDevicePipelineCreationCacheControlFeatures :: struct { + sType: StructureType, + pNext: rawptr, + pipelineCreationCacheControl: b32, +} + +MemoryBarrier2 :: struct { + sType: StructureType, + pNext: rawptr, + srcStageMask: PipelineStageFlags2, + srcAccessMask: AccessFlags2, + dstStageMask: PipelineStageFlags2, + dstAccessMask: AccessFlags2, +} + +BufferMemoryBarrier2 :: struct { + sType: StructureType, + pNext: rawptr, + srcStageMask: PipelineStageFlags2, + srcAccessMask: AccessFlags2, + dstStageMask: PipelineStageFlags2, + dstAccessMask: AccessFlags2, + srcQueueFamilyIndex: u32, + dstQueueFamilyIndex: u32, + buffer: Buffer, + offset: DeviceSize, + size: DeviceSize, +} + +ImageMemoryBarrier2 :: struct { + sType: StructureType, + pNext: rawptr, + srcStageMask: PipelineStageFlags2, + srcAccessMask: AccessFlags2, + dstStageMask: PipelineStageFlags2, + dstAccessMask: AccessFlags2, + oldLayout: ImageLayout, + newLayout: ImageLayout, + srcQueueFamilyIndex: u32, + dstQueueFamilyIndex: u32, + image: Image, + subresourceRange: ImageSubresourceRange, +} + +DependencyInfo :: struct { + sType: StructureType, + pNext: rawptr, + dependencyFlags: DependencyFlags, + memoryBarrierCount: u32, + pMemoryBarriers: [^]MemoryBarrier2, + bufferMemoryBarrierCount: u32, + pBufferMemoryBarriers: [^]BufferMemoryBarrier2, + imageMemoryBarrierCount: u32, + pImageMemoryBarriers: [^]ImageMemoryBarrier2, +} + +SemaphoreSubmitInfo :: struct { + sType: StructureType, + pNext: rawptr, + semaphore: Semaphore, + value: u64, + stageMask: PipelineStageFlags2, + deviceIndex: u32, +} + +CommandBufferSubmitInfo :: struct { + sType: StructureType, + pNext: rawptr, + commandBuffer: CommandBuffer, + deviceMask: u32, +} + +SubmitInfo2 :: struct { + sType: StructureType, + pNext: rawptr, + flags: SubmitFlags, + waitSemaphoreInfoCount: u32, + pWaitSemaphoreInfos: [^]SemaphoreSubmitInfo, + commandBufferInfoCount: u32, + pCommandBufferInfos: [^]CommandBufferSubmitInfo, + signalSemaphoreInfoCount: u32, + pSignalSemaphoreInfos: [^]SemaphoreSubmitInfo, +} + +PhysicalDeviceSynchronization2Features :: struct { + sType: StructureType, + pNext: rawptr, + synchronization2: b32, +} + +PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures :: struct { + sType: StructureType, + pNext: rawptr, + shaderZeroInitializeWorkgroupMemory: b32, +} + +PhysicalDeviceImageRobustnessFeatures :: struct { + sType: StructureType, + pNext: rawptr, + robustImageAccess: b32, +} + +BufferCopy2 :: struct { + sType: StructureType, + pNext: rawptr, + srcOffset: DeviceSize, + dstOffset: DeviceSize, + size: DeviceSize, +} + +CopyBufferInfo2 :: struct { + sType: StructureType, + pNext: rawptr, + srcBuffer: Buffer, + dstBuffer: Buffer, + regionCount: u32, + pRegions: [^]BufferCopy2, +} + +ImageCopy2 :: struct { + sType: StructureType, + pNext: rawptr, + srcSubresource: ImageSubresourceLayers, + srcOffset: Offset3D, + dstSubresource: ImageSubresourceLayers, + dstOffset: Offset3D, + extent: Extent3D, +} + +CopyImageInfo2 :: struct { + sType: StructureType, + pNext: rawptr, + srcImage: Image, + srcImageLayout: ImageLayout, + dstImage: Image, + dstImageLayout: ImageLayout, + regionCount: u32, + pRegions: [^]ImageCopy2, +} + +BufferImageCopy2 :: struct { + sType: StructureType, + pNext: rawptr, + bufferOffset: DeviceSize, + bufferRowLength: u32, + bufferImageHeight: u32, + imageSubresource: ImageSubresourceLayers, + imageOffset: Offset3D, + imageExtent: Extent3D, +} + +CopyBufferToImageInfo2 :: struct { + sType: StructureType, + pNext: rawptr, + srcBuffer: Buffer, + dstImage: Image, + dstImageLayout: ImageLayout, + regionCount: u32, + pRegions: [^]BufferImageCopy2, +} + +CopyImageToBufferInfo2 :: struct { + sType: StructureType, + pNext: rawptr, + srcImage: Image, + srcImageLayout: ImageLayout, + dstBuffer: Buffer, + regionCount: u32, + pRegions: [^]BufferImageCopy2, +} + +ImageBlit2 :: struct { + sType: StructureType, + pNext: rawptr, + srcSubresource: ImageSubresourceLayers, + srcOffsets: [2]Offset3D, + dstSubresource: ImageSubresourceLayers, + dstOffsets: [2]Offset3D, +} + +BlitImageInfo2 :: struct { + sType: StructureType, + pNext: rawptr, + srcImage: Image, + srcImageLayout: ImageLayout, + dstImage: Image, + dstImageLayout: ImageLayout, + regionCount: u32, + pRegions: [^]ImageBlit2, + filter: Filter, +} + +ImageResolve2 :: struct { + sType: StructureType, + pNext: rawptr, + srcSubresource: ImageSubresourceLayers, + srcOffset: Offset3D, + dstSubresource: ImageSubresourceLayers, + dstOffset: Offset3D, + extent: Extent3D, +} + +ResolveImageInfo2 :: struct { + sType: StructureType, + pNext: rawptr, + srcImage: Image, + srcImageLayout: ImageLayout, + dstImage: Image, + dstImageLayout: ImageLayout, + regionCount: u32, + pRegions: [^]ImageResolve2, +} + +PhysicalDeviceSubgroupSizeControlFeatures :: struct { + sType: StructureType, + pNext: rawptr, + subgroupSizeControl: b32, + computeFullSubgroups: b32, +} + +PhysicalDeviceSubgroupSizeControlProperties :: struct { + sType: StructureType, + pNext: rawptr, + minSubgroupSize: u32, + maxSubgroupSize: u32, + maxComputeWorkgroupSubgroups: u32, + requiredSubgroupSizeStages: ShaderStageFlags, +} + +PipelineShaderStageRequiredSubgroupSizeCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + requiredSubgroupSize: u32, +} + +PhysicalDeviceInlineUniformBlockFeatures :: struct { + sType: StructureType, + pNext: rawptr, + inlineUniformBlock: b32, + descriptorBindingInlineUniformBlockUpdateAfterBind: b32, +} + +PhysicalDeviceInlineUniformBlockProperties :: struct { + sType: StructureType, + pNext: rawptr, + maxInlineUniformBlockSize: u32, + maxPerStageDescriptorInlineUniformBlocks: u32, + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks: u32, + maxDescriptorSetInlineUniformBlocks: u32, + maxDescriptorSetUpdateAfterBindInlineUniformBlocks: u32, +} + +WriteDescriptorSetInlineUniformBlock :: struct { + sType: StructureType, + pNext: rawptr, + dataSize: u32, + pData: rawptr, +} + +DescriptorPoolInlineUniformBlockCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + maxInlineUniformBlockBindings: u32, +} + +PhysicalDeviceTextureCompressionASTCHDRFeatures :: struct { + sType: StructureType, + pNext: rawptr, + textureCompressionASTC_HDR: b32, +} + +RenderingAttachmentInfo :: struct { + sType: StructureType, + pNext: rawptr, + imageView: ImageView, + imageLayout: ImageLayout, + resolveMode: ResolveModeFlags, + resolveImageView: ImageView, + resolveImageLayout: ImageLayout, + loadOp: AttachmentLoadOp, + storeOp: AttachmentStoreOp, + clearValue: ClearValue, +} + +RenderingInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: RenderingFlags, + renderArea: Rect2D, + layerCount: u32, + viewMask: u32, + colorAttachmentCount: u32, + pColorAttachments: [^]RenderingAttachmentInfo, + pDepthAttachment: ^RenderingAttachmentInfo, + pStencilAttachment: ^RenderingAttachmentInfo, +} + +PipelineRenderingCreateInfo :: struct { + sType: StructureType, + pNext: rawptr, + viewMask: u32, + colorAttachmentCount: u32, + pColorAttachmentFormats: [^]Format, + depthAttachmentFormat: Format, + stencilAttachmentFormat: Format, +} + +PhysicalDeviceDynamicRenderingFeatures :: struct { + sType: StructureType, + pNext: rawptr, + dynamicRendering: b32, +} + +CommandBufferInheritanceRenderingInfo :: struct { + sType: StructureType, + pNext: rawptr, + flags: RenderingFlags, + viewMask: u32, + colorAttachmentCount: u32, + pColorAttachmentFormats: [^]Format, + depthAttachmentFormat: Format, + stencilAttachmentFormat: Format, + rasterizationSamples: SampleCountFlags, +} + +PhysicalDeviceShaderIntegerDotProductFeatures :: struct { + sType: StructureType, + pNext: rawptr, + shaderIntegerDotProduct: b32, +} + +PhysicalDeviceShaderIntegerDotProductProperties :: struct { + sType: StructureType, + pNext: rawptr, + integerDotProduct8BitUnsignedAccelerated: b32, + integerDotProduct8BitSignedAccelerated: b32, + integerDotProduct8BitMixedSignednessAccelerated: b32, + integerDotProduct4x8BitPackedUnsignedAccelerated: b32, + integerDotProduct4x8BitPackedSignedAccelerated: b32, + integerDotProduct4x8BitPackedMixedSignednessAccelerated: b32, + integerDotProduct16BitUnsignedAccelerated: b32, + integerDotProduct16BitSignedAccelerated: b32, + integerDotProduct16BitMixedSignednessAccelerated: b32, + integerDotProduct32BitUnsignedAccelerated: b32, + integerDotProduct32BitSignedAccelerated: b32, + integerDotProduct32BitMixedSignednessAccelerated: b32, + integerDotProduct64BitUnsignedAccelerated: b32, + integerDotProduct64BitSignedAccelerated: b32, + integerDotProduct64BitMixedSignednessAccelerated: b32, + integerDotProductAccumulatingSaturating8BitUnsignedAccelerated: b32, + integerDotProductAccumulatingSaturating8BitSignedAccelerated: b32, + integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated: b32, + integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated: b32, + integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated: b32, + integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated: b32, + integerDotProductAccumulatingSaturating16BitUnsignedAccelerated: b32, + integerDotProductAccumulatingSaturating16BitSignedAccelerated: b32, + integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated: b32, + integerDotProductAccumulatingSaturating32BitUnsignedAccelerated: b32, + integerDotProductAccumulatingSaturating32BitSignedAccelerated: b32, + integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated: b32, + integerDotProductAccumulatingSaturating64BitUnsignedAccelerated: b32, + integerDotProductAccumulatingSaturating64BitSignedAccelerated: b32, + integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated: b32, +} + +PhysicalDeviceTexelBufferAlignmentProperties :: struct { + sType: StructureType, + pNext: rawptr, + storageTexelBufferOffsetAlignmentBytes: DeviceSize, + storageTexelBufferOffsetSingleTexelAlignment: b32, + uniformTexelBufferOffsetAlignmentBytes: DeviceSize, + uniformTexelBufferOffsetSingleTexelAlignment: b32, +} + +FormatProperties3 :: struct { + sType: StructureType, + pNext: rawptr, + linearTilingFeatures: FormatFeatureFlags2, + optimalTilingFeatures: FormatFeatureFlags2, + bufferFeatures: FormatFeatureFlags2, +} + +PhysicalDeviceMaintenance4Features :: struct { + sType: StructureType, + pNext: rawptr, + maintenance4: b32, +} + +PhysicalDeviceMaintenance4Properties :: struct { + sType: StructureType, + pNext: rawptr, + maxBufferSize: DeviceSize, +} + +DeviceBufferMemoryRequirements :: struct { + sType: StructureType, + pNext: rawptr, + pCreateInfo: ^BufferCreateInfo, +} + +DeviceImageMemoryRequirements :: struct { + sType: StructureType, + pNext: rawptr, + pCreateInfo: ^ImageCreateInfo, + planeAspect: ImageAspectFlags, +} + +SurfaceCapabilitiesKHR :: struct { + minImageCount: u32, + maxImageCount: u32, + currentExtent: Extent2D, + minImageExtent: Extent2D, + maxImageExtent: Extent2D, + maxImageArrayLayers: u32, + supportedTransforms: SurfaceTransformFlagsKHR, + currentTransform: SurfaceTransformFlagsKHR, + supportedCompositeAlpha: CompositeAlphaFlagsKHR, + supportedUsageFlags: ImageUsageFlags, +} + +SurfaceFormatKHR :: struct { + format: Format, + colorSpace: ColorSpaceKHR, +} + +SwapchainCreateInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + flags: SwapchainCreateFlagsKHR, + surface: SurfaceKHR, + minImageCount: u32, + imageFormat: Format, + imageColorSpace: ColorSpaceKHR, + imageExtent: Extent2D, + imageArrayLayers: u32, + imageUsage: ImageUsageFlags, + imageSharingMode: SharingMode, + queueFamilyIndexCount: u32, + pQueueFamilyIndices: [^]u32, + preTransform: SurfaceTransformFlagsKHR, + compositeAlpha: CompositeAlphaFlagsKHR, + presentMode: PresentModeKHR, + clipped: b32, + oldSwapchain: SwapchainKHR, +} + +PresentInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + waitSemaphoreCount: u32, + pWaitSemaphores: [^]Semaphore, + swapchainCount: u32, + pSwapchains: [^]SwapchainKHR, + pImageIndices: [^]u32, + pResults: [^]Result, +} + +ImageSwapchainCreateInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + swapchain: SwapchainKHR, +} + +BindImageMemorySwapchainInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + swapchain: SwapchainKHR, + imageIndex: u32, +} + +AcquireNextImageInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + swapchain: SwapchainKHR, + timeout: u64, + semaphore: Semaphore, + fence: Fence, + deviceMask: u32, +} + +DeviceGroupPresentCapabilitiesKHR :: struct { + sType: StructureType, + pNext: rawptr, + presentMask: [MAX_DEVICE_GROUP_SIZE]u32, + modes: DeviceGroupPresentModeFlagsKHR, +} + +DeviceGroupPresentInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + swapchainCount: u32, + pDeviceMasks: [^]u32, + mode: DeviceGroupPresentModeFlagsKHR, +} + +DeviceGroupSwapchainCreateInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + modes: DeviceGroupPresentModeFlagsKHR, +} + +DisplayModeParametersKHR :: struct { + visibleRegion: Extent2D, + refreshRate: u32, +} + +DisplayModeCreateInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + flags: DisplayModeCreateFlagsKHR, + parameters: DisplayModeParametersKHR, +} + +DisplayModePropertiesKHR :: struct { + displayMode: DisplayModeKHR, + parameters: DisplayModeParametersKHR, +} + +DisplayPlaneCapabilitiesKHR :: struct { + supportedAlpha: DisplayPlaneAlphaFlagsKHR, + minSrcPosition: Offset2D, + maxSrcPosition: Offset2D, + minSrcExtent: Extent2D, + maxSrcExtent: Extent2D, + minDstPosition: Offset2D, + maxDstPosition: Offset2D, + minDstExtent: Extent2D, + maxDstExtent: Extent2D, +} + +DisplayPlanePropertiesKHR :: struct { + currentDisplay: DisplayKHR, + currentStackIndex: u32, +} + +DisplayPropertiesKHR :: struct { + display: DisplayKHR, + displayName: cstring, + physicalDimensions: Extent2D, + physicalResolution: Extent2D, + supportedTransforms: SurfaceTransformFlagsKHR, + planeReorderPossible: b32, + persistentContent: b32, +} + +DisplaySurfaceCreateInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + flags: DisplaySurfaceCreateFlagsKHR, + displayMode: DisplayModeKHR, + planeIndex: u32, + planeStackIndex: u32, + transform: SurfaceTransformFlagsKHR, + globalAlpha: f32, + alphaMode: DisplayPlaneAlphaFlagsKHR, + imageExtent: Extent2D, +} + +DisplayPresentInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + srcRect: Rect2D, + dstRect: Rect2D, + persistent: b32, +} + +RenderingFragmentShadingRateAttachmentInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + imageView: ImageView, + imageLayout: ImageLayout, + shadingRateAttachmentTexelSize: Extent2D, +} + +RenderingFragmentDensityMapAttachmentInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + imageView: ImageView, + imageLayout: ImageLayout, +} + +AttachmentSampleCountInfoAMD :: struct { + sType: StructureType, + pNext: rawptr, + colorAttachmentCount: u32, + pColorAttachmentSamples: [^]SampleCountFlags, + depthStencilAttachmentSamples: SampleCountFlags, +} + +MultiviewPerViewAttributesInfoNVX :: struct { + sType: StructureType, + pNext: rawptr, + perViewAttributes: b32, + perViewAttributesPositionXOnly: b32, +} + +ImportMemoryFdInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + handleType: ExternalMemoryHandleTypeFlags, + fd: c.int, +} + +MemoryFdPropertiesKHR :: struct { + sType: StructureType, + pNext: rawptr, + memoryTypeBits: u32, +} + +MemoryGetFdInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + memory: DeviceMemory, + handleType: ExternalMemoryHandleTypeFlags, +} + +ImportSemaphoreFdInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + semaphore: Semaphore, + flags: SemaphoreImportFlags, + handleType: ExternalSemaphoreHandleTypeFlags, + fd: c.int, +} + +SemaphoreGetFdInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + semaphore: Semaphore, + handleType: ExternalSemaphoreHandleTypeFlags, +} + +PhysicalDevicePushDescriptorPropertiesKHR :: struct { + sType: StructureType, + pNext: rawptr, + maxPushDescriptors: u32, +} + +RectLayerKHR :: struct { + offset: Offset2D, + extent: Extent2D, + layer: u32, +} + +PresentRegionKHR :: struct { + rectangleCount: u32, + pRectangles: [^]RectLayerKHR, +} + +PresentRegionsKHR :: struct { + sType: StructureType, + pNext: rawptr, + swapchainCount: u32, + pRegions: [^]PresentRegionKHR, +} + +SharedPresentSurfaceCapabilitiesKHR :: struct { + sType: StructureType, + pNext: rawptr, + sharedPresentSupportedUsageFlags: ImageUsageFlags, +} + +ImportFenceFdInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + fence: Fence, + flags: FenceImportFlags, + handleType: ExternalFenceHandleTypeFlags, + fd: c.int, +} + +FenceGetFdInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + fence: Fence, + handleType: ExternalFenceHandleTypeFlags, +} + +PhysicalDevicePerformanceQueryFeaturesKHR :: struct { + sType: StructureType, + pNext: rawptr, + performanceCounterQueryPools: b32, + performanceCounterMultipleQueryPools: b32, +} + +PhysicalDevicePerformanceQueryPropertiesKHR :: struct { + sType: StructureType, + pNext: rawptr, + allowCommandBufferQueryCopies: b32, +} + +PerformanceCounterKHR :: struct { + sType: StructureType, + pNext: rawptr, + unit: PerformanceCounterUnitKHR, + scope: PerformanceCounterScopeKHR, + storage: PerformanceCounterStorageKHR, + uuid: [UUID_SIZE]u8, +} + +PerformanceCounterDescriptionKHR :: struct { + sType: StructureType, + pNext: rawptr, + flags: PerformanceCounterDescriptionFlagsKHR, + name: [MAX_DESCRIPTION_SIZE]byte, + category: [MAX_DESCRIPTION_SIZE]byte, + description: [MAX_DESCRIPTION_SIZE]byte, +} + +QueryPoolPerformanceCreateInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + queueFamilyIndex: u32, + counterIndexCount: u32, + pCounterIndices: [^]u32, +} + +PerformanceCounterResultKHR :: struct #raw_union { + int32: i32, + int64: i64, + uint32: u32, + uint64: u64, + float32: f32, + float64: f64, +} + +AcquireProfilingLockInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + flags: AcquireProfilingLockFlagsKHR, + timeout: u64, +} + +PerformanceQuerySubmitInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + counterPassIndex: u32, +} + +PhysicalDeviceSurfaceInfo2KHR :: struct { + sType: StructureType, + pNext: rawptr, + surface: SurfaceKHR, +} + +SurfaceCapabilities2KHR :: struct { + sType: StructureType, + pNext: rawptr, + surfaceCapabilities: SurfaceCapabilitiesKHR, +} + +SurfaceFormat2KHR :: struct { + sType: StructureType, + pNext: rawptr, + surfaceFormat: SurfaceFormatKHR, +} + +DisplayProperties2KHR :: struct { + sType: StructureType, + pNext: rawptr, + displayProperties: DisplayPropertiesKHR, +} + +DisplayPlaneProperties2KHR :: struct { + sType: StructureType, + pNext: rawptr, + displayPlaneProperties: DisplayPlanePropertiesKHR, +} + +DisplayModeProperties2KHR :: struct { + sType: StructureType, + pNext: rawptr, + displayModeProperties: DisplayModePropertiesKHR, +} + +DisplayPlaneInfo2KHR :: struct { + sType: StructureType, + pNext: rawptr, + mode: DisplayModeKHR, + planeIndex: u32, +} + +DisplayPlaneCapabilities2KHR :: struct { + sType: StructureType, + pNext: rawptr, + capabilities: DisplayPlaneCapabilitiesKHR, +} + +PhysicalDeviceShaderClockFeaturesKHR :: struct { + sType: StructureType, + pNext: rawptr, + shaderSubgroupClock: b32, + shaderDeviceClock: b32, +} + +DeviceQueueGlobalPriorityCreateInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + globalPriority: QueueGlobalPriorityKHR, +} + +PhysicalDeviceGlobalPriorityQueryFeaturesKHR :: struct { + sType: StructureType, + pNext: rawptr, + globalPriorityQuery: b32, +} + +QueueFamilyGlobalPriorityPropertiesKHR :: struct { + sType: StructureType, + pNext: rawptr, + priorityCount: u32, + priorities: [MAX_GLOBAL_PRIORITY_SIZE_KHR]QueueGlobalPriorityKHR, +} + +FragmentShadingRateAttachmentInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + pFragmentShadingRateAttachment: ^AttachmentReference2, + shadingRateAttachmentTexelSize: Extent2D, +} + +PipelineFragmentShadingRateStateCreateInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + fragmentSize: Extent2D, + combinerOps: [2]FragmentShadingRateCombinerOpKHR, +} + +PhysicalDeviceFragmentShadingRateFeaturesKHR :: struct { + sType: StructureType, + pNext: rawptr, + pipelineFragmentShadingRate: b32, + primitiveFragmentShadingRate: b32, + attachmentFragmentShadingRate: b32, +} + +PhysicalDeviceFragmentShadingRatePropertiesKHR :: struct { + sType: StructureType, + pNext: rawptr, + minFragmentShadingRateAttachmentTexelSize: Extent2D, + maxFragmentShadingRateAttachmentTexelSize: Extent2D, + maxFragmentShadingRateAttachmentTexelSizeAspectRatio: u32, + primitiveFragmentShadingRateWithMultipleViewports: b32, + layeredShadingRateAttachments: b32, + fragmentShadingRateNonTrivialCombinerOps: b32, + maxFragmentSize: Extent2D, + maxFragmentSizeAspectRatio: u32, + maxFragmentShadingRateCoverageSamples: u32, + maxFragmentShadingRateRasterizationSamples: SampleCountFlags, + fragmentShadingRateWithShaderDepthStencilWrites: b32, + fragmentShadingRateWithSampleMask: b32, + fragmentShadingRateWithShaderSampleMask: b32, + fragmentShadingRateWithConservativeRasterization: b32, + fragmentShadingRateWithFragmentShaderInterlock: b32, + fragmentShadingRateWithCustomSampleLocations: b32, + fragmentShadingRateStrictMultiplyCombiner: b32, +} + +PhysicalDeviceFragmentShadingRateKHR :: struct { + sType: StructureType, + pNext: rawptr, + sampleCounts: SampleCountFlags, + fragmentSize: Extent2D, +} + +SurfaceProtectedCapabilitiesKHR :: struct { + sType: StructureType, + pNext: rawptr, + supportsProtected: b32, +} + +PhysicalDevicePresentWaitFeaturesKHR :: struct { + sType: StructureType, + pNext: rawptr, + presentWait: b32, +} + +PhysicalDevicePipelineExecutablePropertiesFeaturesKHR :: struct { + sType: StructureType, + pNext: rawptr, + pipelineExecutableInfo: b32, +} + +PipelineInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + pipeline: Pipeline, +} + +PipelineExecutablePropertiesKHR :: struct { + sType: StructureType, + pNext: rawptr, + stages: ShaderStageFlags, + name: [MAX_DESCRIPTION_SIZE]byte, + description: [MAX_DESCRIPTION_SIZE]byte, + subgroupSize: u32, +} + +PipelineExecutableInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + pipeline: Pipeline, + executableIndex: u32, +} + +PipelineExecutableStatisticValueKHR :: struct #raw_union { + b32: b32, + i64: i64, + u64: u64, + f64: f64, +} + +PipelineExecutableStatisticKHR :: struct { + sType: StructureType, + pNext: rawptr, + name: [MAX_DESCRIPTION_SIZE]byte, + description: [MAX_DESCRIPTION_SIZE]byte, + format: PipelineExecutableStatisticFormatKHR, + value: PipelineExecutableStatisticValueKHR, +} + +PipelineExecutableInternalRepresentationKHR :: struct { + sType: StructureType, + pNext: rawptr, + name: [MAX_DESCRIPTION_SIZE]byte, + description: [MAX_DESCRIPTION_SIZE]byte, + isText: b32, + dataSize: int, + pData: rawptr, +} + +PipelineLibraryCreateInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + libraryCount: u32, + pLibraries: [^]Pipeline, +} + +PresentIdKHR :: struct { + sType: StructureType, + pNext: rawptr, + swapchainCount: u32, + pPresentIds: [^]u64, +} + +PhysicalDevicePresentIdFeaturesKHR :: struct { + sType: StructureType, + pNext: rawptr, + presentId: b32, +} + +QueueFamilyCheckpointProperties2NV :: struct { + sType: StructureType, + pNext: rawptr, + checkpointExecutionStageMask: PipelineStageFlags2, +} + +CheckpointData2NV :: struct { + sType: StructureType, + pNext: rawptr, + stage: PipelineStageFlags2, + pCheckpointMarker: rawptr, +} + +PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR :: struct { + sType: StructureType, + pNext: rawptr, + shaderSubgroupUniformControlFlow: b32, +} + +PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR :: struct { + sType: StructureType, + pNext: rawptr, + workgroupMemoryExplicitLayout: b32, + workgroupMemoryExplicitLayoutScalarBlockLayout: b32, + workgroupMemoryExplicitLayout8BitAccess: b32, + workgroupMemoryExplicitLayout16BitAccess: b32, +} + +DebugReportCallbackCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + flags: DebugReportFlagsEXT, + pfnCallback: ProcDebugReportCallbackEXT, + pUserData: rawptr, +} + +PipelineRasterizationStateRasterizationOrderAMD :: struct { + sType: StructureType, + pNext: rawptr, + rasterizationOrder: RasterizationOrderAMD, +} + +DebugMarkerObjectNameInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + objectType: DebugReportObjectTypeEXT, + object: u64, + pObjectName: cstring, +} + +DebugMarkerObjectTagInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + objectType: DebugReportObjectTypeEXT, + object: u64, + tagName: u64, + tagSize: int, + pTag: rawptr, +} + +DebugMarkerMarkerInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + pMarkerName: cstring, + color: [4]f32, +} + +DedicatedAllocationImageCreateInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + dedicatedAllocation: b32, +} + +DedicatedAllocationBufferCreateInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + dedicatedAllocation: b32, +} + +DedicatedAllocationMemoryAllocateInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + image: Image, + buffer: Buffer, +} + +PhysicalDeviceTransformFeedbackFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + transformFeedback: b32, + geometryStreams: b32, +} + +PhysicalDeviceTransformFeedbackPropertiesEXT :: struct { + sType: StructureType, + pNext: rawptr, + maxTransformFeedbackStreams: u32, + maxTransformFeedbackBuffers: u32, + maxTransformFeedbackBufferSize: DeviceSize, + maxTransformFeedbackStreamDataSize: u32, + maxTransformFeedbackBufferDataSize: u32, + maxTransformFeedbackBufferDataStride: u32, + transformFeedbackQueries: b32, + transformFeedbackStreamsLinesTriangles: b32, + transformFeedbackRasterizationStreamSelect: b32, + transformFeedbackDraw: b32, +} + +PipelineRasterizationStateStreamCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + flags: PipelineRasterizationStateStreamCreateFlagsEXT, + rasterizationStream: u32, +} + +CuModuleCreateInfoNVX :: struct { + sType: StructureType, + pNext: rawptr, + dataSize: int, + pData: rawptr, +} + +CuFunctionCreateInfoNVX :: struct { + sType: StructureType, + pNext: rawptr, + module: CuModuleNVX, + pName: cstring, +} + +CuLaunchInfoNVX :: struct { + sType: StructureType, + pNext: rawptr, + function: CuFunctionNVX, + gridDimX: u32, + gridDimY: u32, + gridDimZ: u32, + blockDimX: u32, + blockDimY: u32, + blockDimZ: u32, + sharedMemBytes: u32, + paramCount: int, + pParams: [^]rawptr, + extraCount: int, + pExtras: [^]rawptr, +} + +ImageViewHandleInfoNVX :: struct { + sType: StructureType, + pNext: rawptr, + imageView: ImageView, + descriptorType: DescriptorType, + sampler: Sampler, +} + +ImageViewAddressPropertiesNVX :: struct { + sType: StructureType, + pNext: rawptr, + deviceAddress: DeviceAddress, + size: DeviceSize, +} + +TextureLODGatherFormatPropertiesAMD :: struct { + sType: StructureType, + pNext: rawptr, + supportsTextureGatherLODBiasAMD: b32, +} + +ShaderResourceUsageAMD :: struct { + numUsedVgprs: u32, + numUsedSgprs: u32, + ldsSizePerLocalWorkGroup: u32, + ldsUsageSizeInBytes: int, + scratchMemUsageInBytes: int, +} + +ShaderStatisticsInfoAMD :: struct { + shaderStageMask: ShaderStageFlags, + resourceUsage: ShaderResourceUsageAMD, + numPhysicalVgprs: u32, + numPhysicalSgprs: u32, + numAvailableVgprs: u32, + numAvailableSgprs: u32, + computeWorkGroupSize: [3]u32, +} + +PhysicalDeviceCornerSampledImageFeaturesNV :: struct { + sType: StructureType, + pNext: rawptr, + cornerSampledImage: b32, +} + +ExternalImageFormatPropertiesNV :: struct { + imageFormatProperties: ImageFormatProperties, + externalMemoryFeatures: ExternalMemoryFeatureFlagsNV, + exportFromImportedHandleTypes: ExternalMemoryHandleTypeFlagsNV, + compatibleHandleTypes: ExternalMemoryHandleTypeFlagsNV, +} + +ExternalMemoryImageCreateInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + handleTypes: ExternalMemoryHandleTypeFlagsNV, +} + +ExportMemoryAllocateInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + handleTypes: ExternalMemoryHandleTypeFlagsNV, +} + +ValidationFlagsEXT :: struct { + sType: StructureType, + pNext: rawptr, + disabledValidationCheckCount: u32, + pDisabledValidationChecks: [^]ValidationCheckEXT, +} + +ImageViewASTCDecodeModeEXT :: struct { + sType: StructureType, + pNext: rawptr, + decodeMode: Format, +} + +PhysicalDeviceASTCDecodeFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + decodeModeSharedExponent: b32, +} + +ConditionalRenderingBeginInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + buffer: Buffer, + offset: DeviceSize, + flags: ConditionalRenderingFlagsEXT, +} + +PhysicalDeviceConditionalRenderingFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + conditionalRendering: b32, + inheritedConditionalRendering: b32, +} + +CommandBufferInheritanceConditionalRenderingInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + conditionalRenderingEnable: b32, +} + +ViewportWScalingNV :: struct { + xcoeff: f32, + ycoeff: f32, +} + +PipelineViewportWScalingStateCreateInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + viewportWScalingEnable: b32, + viewportCount: u32, + pViewportWScalings: [^]ViewportWScalingNV, +} + +SurfaceCapabilities2EXT :: struct { + sType: StructureType, + pNext: rawptr, + minImageCount: u32, + maxImageCount: u32, + currentExtent: Extent2D, + minImageExtent: Extent2D, + maxImageExtent: Extent2D, + maxImageArrayLayers: u32, + supportedTransforms: SurfaceTransformFlagsKHR, + currentTransform: SurfaceTransformFlagsKHR, + supportedCompositeAlpha: CompositeAlphaFlagsKHR, + supportedUsageFlags: ImageUsageFlags, + supportedSurfaceCounters: SurfaceCounterFlagsEXT, +} + +DisplayPowerInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + powerState: DisplayPowerStateEXT, +} + +DeviceEventInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + deviceEvent: DeviceEventTypeEXT, +} + +DisplayEventInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + displayEvent: DisplayEventTypeEXT, +} + +SwapchainCounterCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + surfaceCounters: SurfaceCounterFlagsEXT, +} + +RefreshCycleDurationGOOGLE :: struct { + refreshDuration: u64, +} + +PastPresentationTimingGOOGLE :: struct { + presentID: u32, + desiredPresentTime: u64, + actualPresentTime: u64, + earliestPresentTime: u64, + presentMargin: u64, +} + +PresentTimeGOOGLE :: struct { + presentID: u32, + desiredPresentTime: u64, +} + +PresentTimesInfoGOOGLE :: struct { + sType: StructureType, + pNext: rawptr, + swapchainCount: u32, + pTimes: [^]PresentTimeGOOGLE, +} + +PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX :: struct { + sType: StructureType, + pNext: rawptr, + perViewPositionAllComponents: b32, +} + +ViewportSwizzleNV :: struct { + x: ViewportCoordinateSwizzleNV, + y: ViewportCoordinateSwizzleNV, + z: ViewportCoordinateSwizzleNV, + w: ViewportCoordinateSwizzleNV, +} + +PipelineViewportSwizzleStateCreateInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + flags: PipelineViewportSwizzleStateCreateFlagsNV, + viewportCount: u32, + pViewportSwizzles: [^]ViewportSwizzleNV, +} + +PhysicalDeviceDiscardRectanglePropertiesEXT :: struct { + sType: StructureType, + pNext: rawptr, + maxDiscardRectangles: u32, +} + +PipelineDiscardRectangleStateCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + flags: PipelineDiscardRectangleStateCreateFlagsEXT, + discardRectangleMode: DiscardRectangleModeEXT, + discardRectangleCount: u32, + pDiscardRectangles: [^]Rect2D, +} + +PhysicalDeviceConservativeRasterizationPropertiesEXT :: struct { + sType: StructureType, + pNext: rawptr, + primitiveOverestimationSize: f32, + maxExtraPrimitiveOverestimationSize: f32, + extraPrimitiveOverestimationSizeGranularity: f32, + primitiveUnderestimation: b32, + conservativePointAndLineRasterization: b32, + degenerateTrianglesRasterized: b32, + degenerateLinesRasterized: b32, + fullyCoveredFragmentShaderInputVariable: b32, + conservativeRasterizationPostDepthCoverage: b32, +} + +PipelineRasterizationConservativeStateCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + flags: PipelineRasterizationConservativeStateCreateFlagsEXT, + conservativeRasterizationMode: ConservativeRasterizationModeEXT, + extraPrimitiveOverestimationSize: f32, +} + +PhysicalDeviceDepthClipEnableFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + depthClipEnable: b32, +} + +PipelineRasterizationDepthClipStateCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + flags: PipelineRasterizationDepthClipStateCreateFlagsEXT, + depthClipEnable: b32, +} + +XYColorEXT :: struct { + x: f32, + y: f32, +} + +HdrMetadataEXT :: struct { + sType: StructureType, + pNext: rawptr, + displayPrimaryRed: XYColorEXT, + displayPrimaryGreen: XYColorEXT, + displayPrimaryBlue: XYColorEXT, + whitePoint: XYColorEXT, + maxLuminance: f32, + minLuminance: f32, + maxContentLightLevel: f32, + maxFrameAverageLightLevel: f32, +} + +DebugUtilsLabelEXT :: struct { + sType: StructureType, + pNext: rawptr, + pLabelName: cstring, + color: [4]f32, +} + +DebugUtilsObjectNameInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + objectType: ObjectType, + objectHandle: u64, + pObjectName: cstring, +} + +DebugUtilsMessengerCallbackDataEXT :: struct { + sType: StructureType, + pNext: rawptr, + flags: DebugUtilsMessengerCallbackDataFlagsEXT, + pMessageIdName: cstring, + messageIdNumber: i32, + pMessage: cstring, + queueLabelCount: u32, + pQueueLabels: [^]DebugUtilsLabelEXT, + cmdBufLabelCount: u32, + pCmdBufLabels: [^]DebugUtilsLabelEXT, + objectCount: u32, + pObjects: [^]DebugUtilsObjectNameInfoEXT, +} + +DebugUtilsMessengerCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + flags: DebugUtilsMessengerCreateFlagsEXT, + messageSeverity: DebugUtilsMessageSeverityFlagsEXT, + messageType: DebugUtilsMessageTypeFlagsEXT, + pfnUserCallback: ProcDebugUtilsMessengerCallbackEXT, + pUserData: rawptr, +} + +DebugUtilsObjectTagInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + objectType: ObjectType, + objectHandle: u64, + tagName: u64, + tagSize: int, + pTag: rawptr, +} + +SampleLocationEXT :: struct { + x: f32, + y: f32, +} + +SampleLocationsInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + sampleLocationsPerPixel: SampleCountFlags, + sampleLocationGridSize: Extent2D, + sampleLocationsCount: u32, + pSampleLocations: [^]SampleLocationEXT, +} + +AttachmentSampleLocationsEXT :: struct { + attachmentIndex: u32, + sampleLocationsInfo: SampleLocationsInfoEXT, +} + +SubpassSampleLocationsEXT :: struct { + subpassIndex: u32, + sampleLocationsInfo: SampleLocationsInfoEXT, +} + +RenderPassSampleLocationsBeginInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + attachmentInitialSampleLocationsCount: u32, + pAttachmentInitialSampleLocations: [^]AttachmentSampleLocationsEXT, + postSubpassSampleLocationsCount: u32, + pPostSubpassSampleLocations: [^]SubpassSampleLocationsEXT, +} + +PipelineSampleLocationsStateCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + sampleLocationsEnable: b32, + sampleLocationsInfo: SampleLocationsInfoEXT, +} + +PhysicalDeviceSampleLocationsPropertiesEXT :: struct { + sType: StructureType, + pNext: rawptr, + sampleLocationSampleCounts: SampleCountFlags, + maxSampleLocationGridSize: Extent2D, + sampleLocationCoordinateRange: [2]f32, + sampleLocationSubPixelBits: u32, + variableSampleLocations: b32, +} + +MultisamplePropertiesEXT :: struct { + sType: StructureType, + pNext: rawptr, + maxSampleLocationGridSize: Extent2D, +} + +PhysicalDeviceBlendOperationAdvancedFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + advancedBlendCoherentOperations: b32, +} + +PhysicalDeviceBlendOperationAdvancedPropertiesEXT :: struct { + sType: StructureType, + pNext: rawptr, + advancedBlendMaxColorAttachments: u32, + advancedBlendIndependentBlend: b32, + advancedBlendNonPremultipliedSrcColor: b32, + advancedBlendNonPremultipliedDstColor: b32, + advancedBlendCorrelatedOverlap: b32, + advancedBlendAllOperations: b32, +} + +PipelineColorBlendAdvancedStateCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + srcPremultiplied: b32, + dstPremultiplied: b32, + blendOverlap: BlendOverlapEXT, +} + +PipelineCoverageToColorStateCreateInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + flags: PipelineCoverageToColorStateCreateFlagsNV, + coverageToColorEnable: b32, + coverageToColorLocation: u32, +} + +PipelineCoverageModulationStateCreateInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + flags: PipelineCoverageModulationStateCreateFlagsNV, + coverageModulationMode: CoverageModulationModeNV, + coverageModulationTableEnable: b32, + coverageModulationTableCount: u32, + pCoverageModulationTable: [^]f32, +} + +PhysicalDeviceShaderSMBuiltinsPropertiesNV :: struct { + sType: StructureType, + pNext: rawptr, + shaderSMCount: u32, + shaderWarpsPerSM: u32, +} + +PhysicalDeviceShaderSMBuiltinsFeaturesNV :: struct { + sType: StructureType, + pNext: rawptr, + shaderSMBuiltins: b32, +} + +DrmFormatModifierPropertiesEXT :: struct { + drmFormatModifier: u64, + drmFormatModifierPlaneCount: u32, + drmFormatModifierTilingFeatures: FormatFeatureFlags, +} + +DrmFormatModifierPropertiesListEXT :: struct { + sType: StructureType, + pNext: rawptr, + drmFormatModifierCount: u32, + pDrmFormatModifierProperties: [^]DrmFormatModifierPropertiesEXT, +} + +PhysicalDeviceImageDrmFormatModifierInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + drmFormatModifier: u64, + sharingMode: SharingMode, + queueFamilyIndexCount: u32, + pQueueFamilyIndices: [^]u32, +} + +ImageDrmFormatModifierListCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + drmFormatModifierCount: u32, + pDrmFormatModifiers: [^]u64, +} + +ImageDrmFormatModifierExplicitCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + drmFormatModifier: u64, + drmFormatModifierPlaneCount: u32, + pPlaneLayouts: [^]SubresourceLayout, +} + +ImageDrmFormatModifierPropertiesEXT :: struct { + sType: StructureType, + pNext: rawptr, + drmFormatModifier: u64, +} + +DrmFormatModifierProperties2EXT :: struct { + drmFormatModifier: u64, + drmFormatModifierPlaneCount: u32, + drmFormatModifierTilingFeatures: FormatFeatureFlags2, +} + +DrmFormatModifierPropertiesList2EXT :: struct { + sType: StructureType, + pNext: rawptr, + drmFormatModifierCount: u32, + pDrmFormatModifierProperties: [^]DrmFormatModifierProperties2EXT, +} + +ValidationCacheCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + flags: ValidationCacheCreateFlagsEXT, + initialDataSize: int, + pInitialData: rawptr, +} + +ShaderModuleValidationCacheCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + validationCache: ValidationCacheEXT, +} + +ShadingRatePaletteNV :: struct { + shadingRatePaletteEntryCount: u32, + pShadingRatePaletteEntries: [^]ShadingRatePaletteEntryNV, +} + +PipelineViewportShadingRateImageStateCreateInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + shadingRateImageEnable: b32, + viewportCount: u32, + pShadingRatePalettes: [^]ShadingRatePaletteNV, +} + +PhysicalDeviceShadingRateImageFeaturesNV :: struct { + sType: StructureType, + pNext: rawptr, + shadingRateImage: b32, + shadingRateCoarseSampleOrder: b32, +} + +PhysicalDeviceShadingRateImagePropertiesNV :: struct { + sType: StructureType, + pNext: rawptr, + shadingRateTexelSize: Extent2D, + shadingRatePaletteSize: u32, + shadingRateMaxCoarseSamples: u32, +} + +CoarseSampleLocationNV :: struct { + pixelX: u32, + pixelY: u32, + sample: u32, +} + +CoarseSampleOrderCustomNV :: struct { + shadingRate: ShadingRatePaletteEntryNV, + sampleCount: u32, + sampleLocationCount: u32, + pSampleLocations: [^]CoarseSampleLocationNV, +} + +PipelineViewportCoarseSampleOrderStateCreateInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + sampleOrderType: CoarseSampleOrderTypeNV, + customSampleOrderCount: u32, + pCustomSampleOrders: [^]CoarseSampleOrderCustomNV, +} + +RayTracingShaderGroupCreateInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + type: RayTracingShaderGroupTypeKHR, + generalShader: u32, + closestHitShader: u32, + anyHitShader: u32, + intersectionShader: u32, +} + +RayTracingPipelineCreateInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + flags: PipelineCreateFlags, + stageCount: u32, + pStages: [^]PipelineShaderStageCreateInfo, + groupCount: u32, + pGroups: [^]RayTracingShaderGroupCreateInfoNV, + maxRecursionDepth: u32, + layout: PipelineLayout, + basePipelineHandle: Pipeline, + basePipelineIndex: i32, +} + +GeometryTrianglesNV :: struct { + sType: StructureType, + pNext: rawptr, + vertexData: Buffer, + vertexOffset: DeviceSize, + vertexCount: u32, + vertexStride: DeviceSize, + vertexFormat: Format, + indexData: Buffer, + indexOffset: DeviceSize, + indexCount: u32, + indexType: IndexType, + transformData: Buffer, + transformOffset: DeviceSize, +} + +GeometryAABBNV :: struct { + sType: StructureType, + pNext: rawptr, + aabbData: Buffer, + numAABBs: u32, + stride: u32, + offset: DeviceSize, +} + +GeometryDataNV :: struct { + triangles: GeometryTrianglesNV, + aabbs: GeometryAABBNV, +} + +GeometryNV :: struct { + sType: StructureType, + pNext: rawptr, + geometryType: GeometryTypeKHR, + geometry: GeometryDataNV, + flags: GeometryFlagsKHR, +} + +AccelerationStructureInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + type: AccelerationStructureTypeNV, + flags: BuildAccelerationStructureFlagsNV, + instanceCount: u32, + geometryCount: u32, + pGeometries: [^]GeometryNV, +} + +AccelerationStructureCreateInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + compactedSize: DeviceSize, + info: AccelerationStructureInfoNV, +} + +BindAccelerationStructureMemoryInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + accelerationStructure: AccelerationStructureNV, + memory: DeviceMemory, + memoryOffset: DeviceSize, + deviceIndexCount: u32, + pDeviceIndices: [^]u32, +} + +WriteDescriptorSetAccelerationStructureNV :: struct { + sType: StructureType, + pNext: rawptr, + accelerationStructureCount: u32, + pAccelerationStructures: [^]AccelerationStructureNV, +} + +AccelerationStructureMemoryRequirementsInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + type: AccelerationStructureMemoryRequirementsTypeNV, + accelerationStructure: AccelerationStructureNV, +} + +PhysicalDeviceRayTracingPropertiesNV :: struct { + sType: StructureType, + pNext: rawptr, + shaderGroupHandleSize: u32, + maxRecursionDepth: u32, + maxShaderGroupStride: u32, + shaderGroupBaseAlignment: u32, + maxGeometryCount: u64, + maxInstanceCount: u64, + maxTriangleCount: u64, + maxDescriptorSetAccelerationStructures: u32, +} + +TransformMatrixKHR :: struct { + mat: [3][4]f32, +} + +AabbPositionsKHR :: struct { + minX: f32, + minY: f32, + minZ: f32, + maxX: f32, + maxY: f32, + maxZ: f32, +} + +AccelerationStructureInstanceKHR :: struct { + transform: TransformMatrixKHR, + accelerationStructureReference: u64, +} + +PhysicalDeviceRepresentativeFragmentTestFeaturesNV :: struct { + sType: StructureType, + pNext: rawptr, + representativeFragmentTest: b32, +} + +PipelineRepresentativeFragmentTestStateCreateInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + representativeFragmentTestEnable: b32, +} + +PhysicalDeviceImageViewImageFormatInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + imageViewType: ImageViewType, +} + +FilterCubicImageViewImageFormatPropertiesEXT :: struct { + sType: StructureType, + pNext: rawptr, + filterCubic: b32, + filterCubicMinmax: b32, +} + +ImportMemoryHostPointerInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + handleType: ExternalMemoryHandleTypeFlags, + pHostPointer: rawptr, +} + +MemoryHostPointerPropertiesEXT :: struct { + sType: StructureType, + pNext: rawptr, + memoryTypeBits: u32, +} + +PhysicalDeviceExternalMemoryHostPropertiesEXT :: struct { + sType: StructureType, + pNext: rawptr, + minImportedHostPointerAlignment: DeviceSize, +} + +PipelineCompilerControlCreateInfoAMD :: struct { + sType: StructureType, + pNext: rawptr, + compilerControlFlags: PipelineCompilerControlFlagsAMD, +} + +CalibratedTimestampInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + timeDomain: TimeDomainEXT, +} + +PhysicalDeviceShaderCorePropertiesAMD :: struct { + sType: StructureType, + pNext: rawptr, + shaderEngineCount: u32, + shaderArraysPerEngineCount: u32, + computeUnitsPerShaderArray: u32, + simdPerComputeUnit: u32, + wavefrontsPerSimd: u32, + wavefrontSize: u32, + sgprsPerSimd: u32, + minSgprAllocation: u32, + maxSgprAllocation: u32, + sgprAllocationGranularity: u32, + vgprsPerSimd: u32, + minVgprAllocation: u32, + maxVgprAllocation: u32, + vgprAllocationGranularity: u32, +} + +DeviceMemoryOverallocationCreateInfoAMD :: struct { + sType: StructureType, + pNext: rawptr, + overallocationBehavior: MemoryOverallocationBehaviorAMD, +} + +PhysicalDeviceVertexAttributeDivisorPropertiesEXT :: struct { + sType: StructureType, + pNext: rawptr, + maxVertexAttribDivisor: u32, +} + +VertexInputBindingDivisorDescriptionEXT :: struct { + binding: u32, + divisor: u32, +} + +PipelineVertexInputDivisorStateCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + vertexBindingDivisorCount: u32, + pVertexBindingDivisors: [^]VertexInputBindingDivisorDescriptionEXT, +} + +PhysicalDeviceVertexAttributeDivisorFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + vertexAttributeInstanceRateDivisor: b32, + vertexAttributeInstanceRateZeroDivisor: b32, +} + +PhysicalDeviceComputeShaderDerivativesFeaturesNV :: struct { + sType: StructureType, + pNext: rawptr, + computeDerivativeGroupQuads: b32, + computeDerivativeGroupLinear: b32, +} + +PhysicalDeviceMeshShaderFeaturesNV :: struct { + sType: StructureType, + pNext: rawptr, + taskShader: b32, + meshShader: b32, +} + +PhysicalDeviceMeshShaderPropertiesNV :: struct { + sType: StructureType, + pNext: rawptr, + maxDrawMeshTasksCount: u32, + maxTaskWorkGroupInvocations: u32, + maxTaskWorkGroupSize: [3]u32, + maxTaskTotalMemorySize: u32, + maxTaskOutputCount: u32, + maxMeshWorkGroupInvocations: u32, + maxMeshWorkGroupSize: [3]u32, + maxMeshTotalMemorySize: u32, + maxMeshOutputVertices: u32, + maxMeshOutputPrimitives: u32, + maxMeshMultiviewViewCount: u32, + meshOutputPerVertexGranularity: u32, + meshOutputPerPrimitiveGranularity: u32, +} + +DrawMeshTasksIndirectCommandNV :: struct { + taskCount: u32, + firstTask: u32, +} + +PhysicalDeviceFragmentShaderBarycentricFeaturesNV :: struct { + sType: StructureType, + pNext: rawptr, + fragmentShaderBarycentric: b32, +} + +PhysicalDeviceShaderImageFootprintFeaturesNV :: struct { + sType: StructureType, + pNext: rawptr, + imageFootprint: b32, +} + +PipelineViewportExclusiveScissorStateCreateInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + exclusiveScissorCount: u32, + pExclusiveScissors: [^]Rect2D, +} + +PhysicalDeviceExclusiveScissorFeaturesNV :: struct { + sType: StructureType, + pNext: rawptr, + exclusiveScissor: b32, +} + +QueueFamilyCheckpointPropertiesNV :: struct { + sType: StructureType, + pNext: rawptr, + checkpointExecutionStageMask: PipelineStageFlags, +} + +CheckpointDataNV :: struct { + sType: StructureType, + pNext: rawptr, + stage: PipelineStageFlags, + pCheckpointMarker: rawptr, +} + +PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL :: struct { + sType: StructureType, + pNext: rawptr, + shaderIntegerFunctions2: b32, +} + +PerformanceValueDataINTEL :: struct #raw_union { + value32: u32, + value64: u64, + valueFloat: f32, + valueBool: b32, + valueString: cstring, +} + +PerformanceValueINTEL :: struct { + type: PerformanceValueTypeINTEL, + data: PerformanceValueDataINTEL, +} + +InitializePerformanceApiInfoINTEL :: struct { + sType: StructureType, + pNext: rawptr, + pUserData: rawptr, +} + +QueryPoolPerformanceQueryCreateInfoINTEL :: struct { + sType: StructureType, + pNext: rawptr, + performanceCountersSampling: QueryPoolSamplingModeINTEL, +} + +PerformanceMarkerInfoINTEL :: struct { + sType: StructureType, + pNext: rawptr, + marker: u64, +} + +PerformanceStreamMarkerInfoINTEL :: struct { + sType: StructureType, + pNext: rawptr, + marker: u32, +} + +PerformanceOverrideInfoINTEL :: struct { + sType: StructureType, + pNext: rawptr, + type: PerformanceOverrideTypeINTEL, + enable: b32, + parameter: u64, +} + +PerformanceConfigurationAcquireInfoINTEL :: struct { + sType: StructureType, + pNext: rawptr, + type: PerformanceConfigurationTypeINTEL, +} + +PhysicalDevicePCIBusInfoPropertiesEXT :: struct { + sType: StructureType, + pNext: rawptr, + pciDomain: u32, + pciBus: u32, + pciDevice: u32, + pciFunction: u32, +} + +DisplayNativeHdrSurfaceCapabilitiesAMD :: struct { + sType: StructureType, + pNext: rawptr, + localDimmingSupport: b32, +} + +SwapchainDisplayNativeHdrCreateInfoAMD :: struct { + sType: StructureType, + pNext: rawptr, + localDimmingEnable: b32, +} + +PhysicalDeviceFragmentDensityMapFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + fragmentDensityMap: b32, + fragmentDensityMapDynamic: b32, + fragmentDensityMapNonSubsampledImages: b32, +} + +PhysicalDeviceFragmentDensityMapPropertiesEXT :: struct { + sType: StructureType, + pNext: rawptr, + minFragmentDensityTexelSize: Extent2D, + maxFragmentDensityTexelSize: Extent2D, + fragmentDensityInvocations: b32, +} + +RenderPassFragmentDensityMapCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + fragmentDensityMapAttachment: AttachmentReference, +} + +PhysicalDeviceShaderCoreProperties2AMD :: struct { + sType: StructureType, + pNext: rawptr, + shaderCoreFeatures: ShaderCorePropertiesFlagsAMD, + activeComputeUnitCount: u32, +} + +PhysicalDeviceCoherentMemoryFeaturesAMD :: struct { + sType: StructureType, + pNext: rawptr, + deviceCoherentMemory: b32, +} + +PhysicalDeviceShaderImageAtomicInt64FeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + shaderImageInt64Atomics: b32, + sparseImageInt64Atomics: b32, +} + +PhysicalDeviceMemoryBudgetPropertiesEXT :: struct { + sType: StructureType, + pNext: rawptr, + heapBudget: [MAX_MEMORY_HEAPS]DeviceSize, + heapUsage: [MAX_MEMORY_HEAPS]DeviceSize, +} + +PhysicalDeviceMemoryPriorityFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + memoryPriority: b32, +} + +MemoryPriorityAllocateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + priority: f32, +} + +PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV :: struct { + sType: StructureType, + pNext: rawptr, + dedicatedAllocationImageAliasing: b32, +} + +PhysicalDeviceBufferDeviceAddressFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + bufferDeviceAddress: b32, + bufferDeviceAddressCaptureReplay: b32, + bufferDeviceAddressMultiDevice: b32, +} + +BufferDeviceAddressCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + deviceAddress: DeviceAddress, +} + +ValidationFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + enabledValidationFeatureCount: u32, + pEnabledValidationFeatures: [^]ValidationFeatureEnableEXT, + disabledValidationFeatureCount: u32, + pDisabledValidationFeatures: [^]ValidationFeatureDisableEXT, +} + +CooperativeMatrixPropertiesNV :: struct { + sType: StructureType, + pNext: rawptr, + MSize: u32, + NSize: u32, + KSize: u32, + AType: ComponentTypeNV, + BType: ComponentTypeNV, + CType: ComponentTypeNV, + DType: ComponentTypeNV, + scope: ScopeNV, +} + +PhysicalDeviceCooperativeMatrixFeaturesNV :: struct { + sType: StructureType, + pNext: rawptr, + cooperativeMatrix: b32, + cooperativeMatrixRobustBufferAccess: b32, +} + +PhysicalDeviceCooperativeMatrixPropertiesNV :: struct { + sType: StructureType, + pNext: rawptr, + cooperativeMatrixSupportedStages: ShaderStageFlags, +} + +PhysicalDeviceCoverageReductionModeFeaturesNV :: struct { + sType: StructureType, + pNext: rawptr, + coverageReductionMode: b32, +} + +PipelineCoverageReductionStateCreateInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + flags: PipelineCoverageReductionStateCreateFlagsNV, + coverageReductionMode: CoverageReductionModeNV, +} + +FramebufferMixedSamplesCombinationNV :: struct { + sType: StructureType, + pNext: rawptr, + coverageReductionMode: CoverageReductionModeNV, + rasterizationSamples: SampleCountFlags, + depthStencilSamples: SampleCountFlags, + colorSamples: SampleCountFlags, +} + +PhysicalDeviceFragmentShaderInterlockFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + fragmentShaderSampleInterlock: b32, + fragmentShaderPixelInterlock: b32, + fragmentShaderShadingRateInterlock: b32, +} + +PhysicalDeviceYcbcrImageArraysFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + ycbcrImageArrays: b32, +} + +PhysicalDeviceProvokingVertexFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + provokingVertexLast: b32, + transformFeedbackPreservesProvokingVertex: b32, +} + +PhysicalDeviceProvokingVertexPropertiesEXT :: struct { + sType: StructureType, + pNext: rawptr, + provokingVertexModePerPipeline: b32, + transformFeedbackPreservesTriangleFanProvokingVertex: b32, +} + +PipelineRasterizationProvokingVertexStateCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + provokingVertexMode: ProvokingVertexModeEXT, +} + +HeadlessSurfaceCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + flags: HeadlessSurfaceCreateFlagsEXT, +} + +PhysicalDeviceLineRasterizationFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + rectangularLines: b32, + bresenhamLines: b32, + smoothLines: b32, + stippledRectangularLines: b32, + stippledBresenhamLines: b32, + stippledSmoothLines: b32, +} + +PhysicalDeviceLineRasterizationPropertiesEXT :: struct { + sType: StructureType, + pNext: rawptr, + lineSubPixelPrecisionBits: u32, +} + +PipelineRasterizationLineStateCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + lineRasterizationMode: LineRasterizationModeEXT, + stippledLineEnable: b32, + lineStippleFactor: u32, + lineStipplePattern: u16, +} + +PhysicalDeviceShaderAtomicFloatFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + shaderBufferFloat32Atomics: b32, + shaderBufferFloat32AtomicAdd: b32, + shaderBufferFloat64Atomics: b32, + shaderBufferFloat64AtomicAdd: b32, + shaderSharedFloat32Atomics: b32, + shaderSharedFloat32AtomicAdd: b32, + shaderSharedFloat64Atomics: b32, + shaderSharedFloat64AtomicAdd: b32, + shaderImageFloat32Atomics: b32, + shaderImageFloat32AtomicAdd: b32, + sparseImageFloat32Atomics: b32, + sparseImageFloat32AtomicAdd: b32, +} + +PhysicalDeviceIndexTypeUint8FeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + indexTypeUint8: b32, +} + +PhysicalDeviceExtendedDynamicStateFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + extendedDynamicState: b32, +} + +PhysicalDeviceShaderAtomicFloat2FeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + shaderBufferFloat16Atomics: b32, + shaderBufferFloat16AtomicAdd: b32, + shaderBufferFloat16AtomicMinMax: b32, + shaderBufferFloat32AtomicMinMax: b32, + shaderBufferFloat64AtomicMinMax: b32, + shaderSharedFloat16Atomics: b32, + shaderSharedFloat16AtomicAdd: b32, + shaderSharedFloat16AtomicMinMax: b32, + shaderSharedFloat32AtomicMinMax: b32, + shaderSharedFloat64AtomicMinMax: b32, + shaderImageFloat32AtomicMinMax: b32, + sparseImageFloat32AtomicMinMax: b32, +} + +PhysicalDeviceDeviceGeneratedCommandsPropertiesNV :: struct { + sType: StructureType, + pNext: rawptr, + maxGraphicsShaderGroupCount: u32, + maxIndirectSequenceCount: u32, + maxIndirectCommandsTokenCount: u32, + maxIndirectCommandsStreamCount: u32, + maxIndirectCommandsTokenOffset: u32, + maxIndirectCommandsStreamStride: u32, + minSequencesCountBufferOffsetAlignment: u32, + minSequencesIndexBufferOffsetAlignment: u32, + minIndirectCommandsBufferOffsetAlignment: u32, +} + +PhysicalDeviceDeviceGeneratedCommandsFeaturesNV :: struct { + sType: StructureType, + pNext: rawptr, + deviceGeneratedCommands: b32, +} + +GraphicsShaderGroupCreateInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + stageCount: u32, + pStages: [^]PipelineShaderStageCreateInfo, + pVertexInputState: ^PipelineVertexInputStateCreateInfo, + pTessellationState: ^PipelineTessellationStateCreateInfo, +} + +GraphicsPipelineShaderGroupsCreateInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + groupCount: u32, + pGroups: [^]GraphicsShaderGroupCreateInfoNV, + pipelineCount: u32, + pPipelines: [^]Pipeline, +} + +BindShaderGroupIndirectCommandNV :: struct { + groupIndex: u32, +} + +BindIndexBufferIndirectCommandNV :: struct { + bufferAddress: DeviceAddress, + size: u32, + indexType: IndexType, +} + +BindVertexBufferIndirectCommandNV :: struct { + bufferAddress: DeviceAddress, + size: u32, + stride: u32, +} + +SetStateFlagsIndirectCommandNV :: struct { + data: u32, +} + +IndirectCommandsStreamNV :: struct { + buffer: Buffer, + offset: DeviceSize, +} + +IndirectCommandsLayoutTokenNV :: struct { + sType: StructureType, + pNext: rawptr, + tokenType: IndirectCommandsTokenTypeNV, + stream: u32, + offset: u32, + vertexBindingUnit: u32, + vertexDynamicStride: b32, + pushconstantPipelineLayout: PipelineLayout, + pushconstantShaderStageFlags: ShaderStageFlags, + pushconstantOffset: u32, + pushconstantSize: u32, + indirectStateFlags: IndirectStateFlagsNV, + indexTypeCount: u32, + pIndexTypes: [^]IndexType, + pIndexTypeValues: [^]u32, +} + +IndirectCommandsLayoutCreateInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + flags: IndirectCommandsLayoutUsageFlagsNV, + pipelineBindPoint: PipelineBindPoint, + tokenCount: u32, + pTokens: [^]IndirectCommandsLayoutTokenNV, + streamCount: u32, + pStreamStrides: [^]u32, +} + +GeneratedCommandsInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + pipelineBindPoint: PipelineBindPoint, + pipeline: Pipeline, + indirectCommandsLayout: IndirectCommandsLayoutNV, + streamCount: u32, + pStreams: [^]IndirectCommandsStreamNV, + sequencesCount: u32, + preprocessBuffer: Buffer, + preprocessOffset: DeviceSize, + preprocessSize: DeviceSize, + sequencesCountBuffer: Buffer, + sequencesCountOffset: DeviceSize, + sequencesIndexBuffer: Buffer, + sequencesIndexOffset: DeviceSize, +} + +GeneratedCommandsMemoryRequirementsInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + pipelineBindPoint: PipelineBindPoint, + pipeline: Pipeline, + indirectCommandsLayout: IndirectCommandsLayoutNV, + maxSequencesCount: u32, +} + +PhysicalDeviceInheritedViewportScissorFeaturesNV :: struct { + sType: StructureType, + pNext: rawptr, + inheritedViewportScissor2D: b32, +} + +CommandBufferInheritanceViewportScissorInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + viewportScissor2D: b32, + viewportDepthCount: u32, + pViewportDepths: [^]Viewport, +} + +PhysicalDeviceTexelBufferAlignmentFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + texelBufferAlignment: b32, +} + +RenderPassTransformBeginInfoQCOM :: struct { + sType: StructureType, + pNext: rawptr, + transform: SurfaceTransformFlagsKHR, +} + +CommandBufferInheritanceRenderPassTransformInfoQCOM :: struct { + sType: StructureType, + pNext: rawptr, + transform: SurfaceTransformFlagsKHR, + renderArea: Rect2D, +} + +PhysicalDeviceDeviceMemoryReportFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + deviceMemoryReport: b32, +} + +DeviceMemoryReportCallbackDataEXT :: struct { + sType: StructureType, + pNext: rawptr, + flags: DeviceMemoryReportFlagsEXT, + type: DeviceMemoryReportEventTypeEXT, + memoryObjectId: u64, + size: DeviceSize, + objectType: ObjectType, + objectHandle: u64, + heapIndex: u32, +} + +DeviceDeviceMemoryReportCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + flags: DeviceMemoryReportFlagsEXT, + pfnUserCallback: ProcDeviceMemoryReportCallbackEXT, + pUserData: rawptr, +} + +PhysicalDeviceRobustness2FeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + robustBufferAccess2: b32, + robustImageAccess2: b32, + nullDescriptor: b32, +} + +PhysicalDeviceRobustness2PropertiesEXT :: struct { + sType: StructureType, + pNext: rawptr, + robustStorageBufferAccessSizeAlignment: DeviceSize, + robustUniformBufferAccessSizeAlignment: DeviceSize, +} + +SamplerCustomBorderColorCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + customBorderColor: ClearColorValue, + format: Format, +} + +PhysicalDeviceCustomBorderColorPropertiesEXT :: struct { + sType: StructureType, + pNext: rawptr, + maxCustomBorderColorSamplers: u32, +} + +PhysicalDeviceCustomBorderColorFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + customBorderColors: b32, + customBorderColorWithoutFormat: b32, +} + +PhysicalDeviceDiagnosticsConfigFeaturesNV :: struct { + sType: StructureType, + pNext: rawptr, + diagnosticsConfig: b32, +} + +DeviceDiagnosticsConfigCreateInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + flags: DeviceDiagnosticsConfigFlagsNV, +} + +PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + graphicsPipelineLibrary: b32, +} + +PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT :: struct { + sType: StructureType, + pNext: rawptr, + graphicsPipelineLibraryFastLinking: b32, + graphicsPipelineLibraryIndependentInterpolationDecoration: b32, +} + +GraphicsPipelineLibraryCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + flags: GraphicsPipelineLibraryFlagsEXT, +} + +PhysicalDeviceFragmentShadingRateEnumsFeaturesNV :: struct { + sType: StructureType, + pNext: rawptr, + fragmentShadingRateEnums: b32, + supersampleFragmentShadingRates: b32, + noInvocationFragmentShadingRates: b32, +} + +PhysicalDeviceFragmentShadingRateEnumsPropertiesNV :: struct { + sType: StructureType, + pNext: rawptr, + maxFragmentShadingRateInvocationCount: SampleCountFlags, +} + +PipelineFragmentShadingRateEnumStateCreateInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + shadingRateType: FragmentShadingRateTypeNV, + shadingRate: FragmentShadingRateNV, + combinerOps: [2]FragmentShadingRateCombinerOpKHR, +} + +DeviceOrHostAddressConstKHR :: struct #raw_union { + deviceAddress: DeviceAddress, + hostAddress: rawptr, +} + +AccelerationStructureGeometryMotionTrianglesDataNV :: struct { + sType: StructureType, + pNext: rawptr, + vertexData: DeviceOrHostAddressConstKHR, +} + +AccelerationStructureMotionInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + maxInstances: u32, + flags: AccelerationStructureMotionInfoFlagsNV, +} + +AccelerationStructureMatrixMotionInstanceNV :: struct { + transformT0: TransformMatrixKHR, + transformT1: TransformMatrixKHR, + accelerationStructureReference: u64, +} + +SRTDataNV :: struct { + sx: f32, + a: f32, + b: f32, + pvx: f32, + sy: f32, + c: f32, + pvy: f32, + sz: f32, + pvz: f32, + qx: f32, + qy: f32, + qz: f32, + qw: f32, + tx: f32, + ty: f32, + tz: f32, +} + +AccelerationStructureSRTMotionInstanceNV :: struct { + transformT0: SRTDataNV, + transformT1: SRTDataNV, + accelerationStructureReference: u64, +} + +AccelerationStructureMotionInstanceDataNV :: struct #raw_union { + staticInstance: AccelerationStructureInstanceKHR, + matrixMotionInstance: AccelerationStructureMatrixMotionInstanceNV, + srtMotionInstance: AccelerationStructureSRTMotionInstanceNV, +} + +AccelerationStructureMotionInstanceNV :: struct { + type: AccelerationStructureMotionInstanceTypeNV, + flags: AccelerationStructureMotionInstanceFlagsNV, + data: AccelerationStructureMotionInstanceDataNV, +} + +PhysicalDeviceRayTracingMotionBlurFeaturesNV :: struct { + sType: StructureType, + pNext: rawptr, + rayTracingMotionBlur: b32, + rayTracingMotionBlurPipelineTraceRaysIndirect: b32, +} + +PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + ycbcr2plane444Formats: b32, +} + +PhysicalDeviceFragmentDensityMap2FeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + fragmentDensityMapDeferred: b32, +} + +PhysicalDeviceFragmentDensityMap2PropertiesEXT :: struct { + sType: StructureType, + pNext: rawptr, + subsampledLoads: b32, + subsampledCoarseReconstructionEarlyAccess: b32, + maxSubsampledArrayLayers: u32, + maxDescriptorSetSubsampledSamplers: u32, +} + +CopyCommandTransformInfoQCOM :: struct { + sType: StructureType, + pNext: rawptr, + transform: SurfaceTransformFlagsKHR, +} + +PhysicalDevice4444FormatsFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + formatA4R4G4B4: b32, + formatA4B4G4R4: b32, +} + +PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM :: struct { + sType: StructureType, + pNext: rawptr, + rasterizationOrderColorAttachmentAccess: b32, + rasterizationOrderDepthAttachmentAccess: b32, + rasterizationOrderStencilAttachmentAccess: b32, +} + +PhysicalDeviceRGBA10X6FormatsFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + formatRgba10x6WithoutYCbCrSampler: b32, +} + +PhysicalDeviceMutableDescriptorTypeFeaturesVALVE :: struct { + sType: StructureType, + pNext: rawptr, + mutableDescriptorType: b32, +} + +MutableDescriptorTypeListVALVE :: struct { + descriptorTypeCount: u32, + pDescriptorTypes: [^]DescriptorType, +} + +MutableDescriptorTypeCreateInfoVALVE :: struct { + sType: StructureType, + pNext: rawptr, + mutableDescriptorTypeListCount: u32, + pMutableDescriptorTypeLists: [^]MutableDescriptorTypeListVALVE, +} + +PhysicalDeviceVertexInputDynamicStateFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + vertexInputDynamicState: b32, +} + +VertexInputBindingDescription2EXT :: struct { + sType: StructureType, + pNext: rawptr, + binding: u32, + stride: u32, + inputRate: VertexInputRate, + divisor: u32, +} + +VertexInputAttributeDescription2EXT :: struct { + sType: StructureType, + pNext: rawptr, + location: u32, + binding: u32, + format: Format, + offset: u32, +} + +PhysicalDeviceDrmPropertiesEXT :: struct { + sType: StructureType, + pNext: rawptr, + hasPrimary: b32, + hasRender: b32, + primaryMajor: i64, + primaryMinor: i64, + renderMajor: i64, + renderMinor: i64, +} + +PhysicalDeviceDepthClipControlFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + depthClipControl: b32, +} + +PipelineViewportDepthClipControlCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + negativeOneToOne: b32, +} + +PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + primitiveTopologyListRestart: b32, + primitiveTopologyPatchListRestart: b32, +} + +SubpassShadingPipelineCreateInfoHUAWEI :: struct { + sType: StructureType, + pNext: rawptr, + renderPass: RenderPass, + subpass: u32, +} + +PhysicalDeviceSubpassShadingFeaturesHUAWEI :: struct { + sType: StructureType, + pNext: rawptr, + subpassShading: b32, +} + +PhysicalDeviceSubpassShadingPropertiesHUAWEI :: struct { + sType: StructureType, + pNext: rawptr, + maxSubpassShadingWorkgroupSizeAspectRatio: u32, +} + +PhysicalDeviceInvocationMaskFeaturesHUAWEI :: struct { + sType: StructureType, + pNext: rawptr, + invocationMask: b32, +} + +MemoryGetRemoteAddressInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + memory: DeviceMemory, + handleType: ExternalMemoryHandleTypeFlags, +} + +PhysicalDeviceExternalMemoryRDMAFeaturesNV :: struct { + sType: StructureType, + pNext: rawptr, + externalMemoryRDMA: b32, +} + +PhysicalDeviceExtendedDynamicState2FeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + extendedDynamicState2: b32, + extendedDynamicState2LogicOp: b32, + extendedDynamicState2PatchControlPoints: b32, +} + +PhysicalDeviceColorWriteEnableFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + colorWriteEnable: b32, +} + +PipelineColorWriteCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + attachmentCount: u32, + pColorWriteEnables: [^]b32, +} + +PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + primitivesGeneratedQuery: b32, + primitivesGeneratedQueryWithRasterizerDiscard: b32, + primitivesGeneratedQueryWithNonZeroStreams: b32, +} + +PhysicalDeviceImageViewMinLodFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + minLod: b32, +} + +ImageViewMinLodCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + minLod: f32, +} + +PhysicalDeviceMultiDrawFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + multiDraw: b32, +} + +PhysicalDeviceMultiDrawPropertiesEXT :: struct { + sType: StructureType, + pNext: rawptr, + maxMultiDrawCount: u32, +} + +MultiDrawInfoEXT :: struct { + firstVertex: u32, + vertexCount: u32, +} + +MultiDrawIndexedInfoEXT :: struct { + firstIndex: u32, + indexCount: u32, + vertexOffset: i32, +} + +PhysicalDeviceImage2DViewOf3DFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + image2DViewOf3D: b32, + sampler2DViewOf3D: b32, +} + +PhysicalDeviceBorderColorSwizzleFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + borderColorSwizzle: b32, + borderColorSwizzleFromImage: b32, +} + +SamplerBorderColorComponentMappingCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + components: ComponentMapping, + srgb: b32, +} + +PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT :: struct { + sType: StructureType, + pNext: rawptr, + pageableDeviceLocalMemory: b32, +} + +PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE :: struct { + sType: StructureType, + pNext: rawptr, + descriptorSetHostMapping: b32, +} + +DescriptorSetBindingReferenceVALVE :: struct { + sType: StructureType, + pNext: rawptr, + descriptorSetLayout: DescriptorSetLayout, + binding: u32, +} + +DescriptorSetLayoutHostMappingInfoVALVE :: struct { + sType: StructureType, + pNext: rawptr, + descriptorOffset: int, + descriptorSize: u32, +} + +PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM :: struct { + sType: StructureType, + pNext: rawptr, + fragmentDensityMapOffset: b32, +} + +PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM :: struct { + sType: StructureType, + pNext: rawptr, + fragmentDensityOffsetGranularity: Extent2D, +} + +SubpassFragmentDensityMapOffsetEndInfoQCOM :: struct { + sType: StructureType, + pNext: rawptr, + fragmentDensityOffsetCount: u32, + pFragmentDensityOffsets: [^]Offset2D, +} + +PhysicalDeviceLinearColorAttachmentFeaturesNV :: struct { + sType: StructureType, + pNext: rawptr, + linearColorAttachment: b32, +} + +DeviceOrHostAddressKHR :: struct #raw_union { + deviceAddress: DeviceAddress, + hostAddress: rawptr, +} + +AccelerationStructureBuildRangeInfoKHR :: struct { + primitiveCount: u32, + primitiveOffset: u32, + firstVertex: u32, + transformOffset: u32, +} + +AccelerationStructureGeometryTrianglesDataKHR :: struct { + sType: StructureType, + pNext: rawptr, + vertexFormat: Format, + vertexData: DeviceOrHostAddressConstKHR, + vertexStride: DeviceSize, + maxVertex: u32, + indexType: IndexType, + indexData: DeviceOrHostAddressConstKHR, + transformData: DeviceOrHostAddressConstKHR, +} + +AccelerationStructureGeometryAabbsDataKHR :: struct { + sType: StructureType, + pNext: rawptr, + data: DeviceOrHostAddressConstKHR, + stride: DeviceSize, +} + +AccelerationStructureGeometryInstancesDataKHR :: struct { + sType: StructureType, + pNext: rawptr, + arrayOfPointers: b32, + data: DeviceOrHostAddressConstKHR, +} + +AccelerationStructureGeometryDataKHR :: struct #raw_union { + triangles: AccelerationStructureGeometryTrianglesDataKHR, + aabbs: AccelerationStructureGeometryAabbsDataKHR, + instances: AccelerationStructureGeometryInstancesDataKHR, +} + +AccelerationStructureGeometryKHR :: struct { + sType: StructureType, + pNext: rawptr, + geometryType: GeometryTypeKHR, + geometry: AccelerationStructureGeometryDataKHR, + flags: GeometryFlagsKHR, +} + +AccelerationStructureBuildGeometryInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + type: AccelerationStructureTypeKHR, + flags: BuildAccelerationStructureFlagsKHR, + mode: BuildAccelerationStructureModeKHR, + srcAccelerationStructure: AccelerationStructureKHR, + dstAccelerationStructure: AccelerationStructureKHR, + geometryCount: u32, + pGeometries: [^]AccelerationStructureGeometryKHR, + ppGeometries: ^[^]AccelerationStructureGeometryKHR, + scratchData: DeviceOrHostAddressKHR, +} + +AccelerationStructureCreateInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + createFlags: AccelerationStructureCreateFlagsKHR, + buffer: Buffer, + offset: DeviceSize, + size: DeviceSize, + type: AccelerationStructureTypeKHR, + deviceAddress: DeviceAddress, +} + +WriteDescriptorSetAccelerationStructureKHR :: struct { + sType: StructureType, + pNext: rawptr, + accelerationStructureCount: u32, + pAccelerationStructures: [^]AccelerationStructureKHR, +} + +PhysicalDeviceAccelerationStructureFeaturesKHR :: struct { + sType: StructureType, + pNext: rawptr, + accelerationStructure: b32, + accelerationStructureCaptureReplay: b32, + accelerationStructureIndirectBuild: b32, + accelerationStructureHostCommands: b32, + descriptorBindingAccelerationStructureUpdateAfterBind: b32, +} + +PhysicalDeviceAccelerationStructurePropertiesKHR :: struct { + sType: StructureType, + pNext: rawptr, + maxGeometryCount: u64, + maxInstanceCount: u64, + maxPrimitiveCount: u64, + maxPerStageDescriptorAccelerationStructures: u32, + maxPerStageDescriptorUpdateAfterBindAccelerationStructures: u32, + maxDescriptorSetAccelerationStructures: u32, + maxDescriptorSetUpdateAfterBindAccelerationStructures: u32, + minAccelerationStructureScratchOffsetAlignment: u32, +} + +AccelerationStructureDeviceAddressInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + accelerationStructure: AccelerationStructureKHR, +} + +AccelerationStructureVersionInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + pVersionData: ^u8, +} + +CopyAccelerationStructureToMemoryInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + src: AccelerationStructureKHR, + dst: DeviceOrHostAddressKHR, + mode: CopyAccelerationStructureModeKHR, +} + +CopyMemoryToAccelerationStructureInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + src: DeviceOrHostAddressConstKHR, + dst: AccelerationStructureKHR, + mode: CopyAccelerationStructureModeKHR, +} + +CopyAccelerationStructureInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + src: AccelerationStructureKHR, + dst: AccelerationStructureKHR, + mode: CopyAccelerationStructureModeKHR, +} + +AccelerationStructureBuildSizesInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + accelerationStructureSize: DeviceSize, + updateScratchSize: DeviceSize, + buildScratchSize: DeviceSize, +} + +RayTracingShaderGroupCreateInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + type: RayTracingShaderGroupTypeKHR, + generalShader: u32, + closestHitShader: u32, + anyHitShader: u32, + intersectionShader: u32, + pShaderGroupCaptureReplayHandle: rawptr, +} + +RayTracingPipelineInterfaceCreateInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + maxPipelineRayPayloadSize: u32, + maxPipelineRayHitAttributeSize: u32, +} + +RayTracingPipelineCreateInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + flags: PipelineCreateFlags, + stageCount: u32, + pStages: [^]PipelineShaderStageCreateInfo, + groupCount: u32, + pGroups: [^]RayTracingShaderGroupCreateInfoKHR, + maxPipelineRayRecursionDepth: u32, + pLibraryInfo: ^PipelineLibraryCreateInfoKHR, + pLibraryInterface: ^RayTracingPipelineInterfaceCreateInfoKHR, + pDynamicState: ^PipelineDynamicStateCreateInfo, + layout: PipelineLayout, + basePipelineHandle: Pipeline, + basePipelineIndex: i32, +} + +PhysicalDeviceRayTracingPipelineFeaturesKHR :: struct { + sType: StructureType, + pNext: rawptr, + rayTracingPipeline: b32, + rayTracingPipelineShaderGroupHandleCaptureReplay: b32, + rayTracingPipelineShaderGroupHandleCaptureReplayMixed: b32, + rayTracingPipelineTraceRaysIndirect: b32, + rayTraversalPrimitiveCulling: b32, +} + +PhysicalDeviceRayTracingPipelinePropertiesKHR :: struct { + sType: StructureType, + pNext: rawptr, + shaderGroupHandleSize: u32, + maxRayRecursionDepth: u32, + maxShaderGroupStride: u32, + shaderGroupBaseAlignment: u32, + shaderGroupHandleCaptureReplaySize: u32, + maxRayDispatchInvocationCount: u32, + shaderGroupHandleAlignment: u32, + maxRayHitAttributeSize: u32, +} + +StridedDeviceAddressRegionKHR :: struct { + deviceAddress: DeviceAddress, + stride: DeviceSize, + size: DeviceSize, +} + +TraceRaysIndirectCommandKHR :: struct { + width: u32, + height: u32, + depth: u32, +} + +PhysicalDeviceRayQueryFeaturesKHR :: struct { + sType: StructureType, + pNext: rawptr, + rayQuery: b32, +} + +Win32SurfaceCreateInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + flags: Win32SurfaceCreateFlagsKHR, + hinstance: HINSTANCE, + hwnd: HWND, +} + +ImportMemoryWin32HandleInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + handleType: ExternalMemoryHandleTypeFlags, + handle: HANDLE, + name: LPCWSTR, +} + +ExportMemoryWin32HandleInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + pAttributes: [^]SECURITY_ATTRIBUTES, + dwAccess: DWORD, + name: LPCWSTR, +} + +MemoryWin32HandlePropertiesKHR :: struct { + sType: StructureType, + pNext: rawptr, + memoryTypeBits: u32, +} + +MemoryGetWin32HandleInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + memory: DeviceMemory, + handleType: ExternalMemoryHandleTypeFlags, +} + +Win32KeyedMutexAcquireReleaseInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + acquireCount: u32, + pAcquireSyncs: [^]DeviceMemory, + pAcquireKeys: [^]u64, + pAcquireTimeouts: [^]u32, + releaseCount: u32, + pReleaseSyncs: [^]DeviceMemory, + pReleaseKeys: [^]u64, +} + +ImportSemaphoreWin32HandleInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + semaphore: Semaphore, + flags: SemaphoreImportFlags, + handleType: ExternalSemaphoreHandleTypeFlags, + handle: HANDLE, + name: LPCWSTR, +} + +ExportSemaphoreWin32HandleInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + pAttributes: [^]SECURITY_ATTRIBUTES, + dwAccess: DWORD, + name: LPCWSTR, +} + +D3D12FenceSubmitInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + waitSemaphoreValuesCount: u32, + pWaitSemaphoreValues: [^]u64, + signalSemaphoreValuesCount: u32, + pSignalSemaphoreValues: [^]u64, +} + +SemaphoreGetWin32HandleInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + semaphore: Semaphore, + handleType: ExternalSemaphoreHandleTypeFlags, +} + +ImportFenceWin32HandleInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + fence: Fence, + flags: FenceImportFlags, + handleType: ExternalFenceHandleTypeFlags, + handle: HANDLE, + name: LPCWSTR, +} + +ExportFenceWin32HandleInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + pAttributes: [^]SECURITY_ATTRIBUTES, + dwAccess: DWORD, + name: LPCWSTR, +} + +FenceGetWin32HandleInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + fence: Fence, + handleType: ExternalFenceHandleTypeFlags, +} + +ImportMemoryWin32HandleInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + handleType: ExternalMemoryHandleTypeFlagsNV, + handle: HANDLE, +} + +ExportMemoryWin32HandleInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + pAttributes: [^]SECURITY_ATTRIBUTES, + dwAccess: DWORD, +} + +Win32KeyedMutexAcquireReleaseInfoNV :: struct { + sType: StructureType, + pNext: rawptr, + acquireCount: u32, + pAcquireSyncs: [^]DeviceMemory, + pAcquireKeys: [^]u64, + pAcquireTimeoutMilliseconds: [^]u32, + releaseCount: u32, + pReleaseSyncs: [^]DeviceMemory, + pReleaseKeys: [^]u64, +} + +SurfaceFullScreenExclusiveInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + fullScreenExclusive: FullScreenExclusiveEXT, +} + +SurfaceCapabilitiesFullScreenExclusiveEXT :: struct { + sType: StructureType, + pNext: rawptr, + fullScreenExclusiveSupported: b32, +} + +SurfaceFullScreenExclusiveWin32InfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + hmonitor: HMONITOR, +} + +MetalSurfaceCreateInfoEXT :: struct { + sType: StructureType, + pNext: rawptr, + flags: MetalSurfaceCreateFlagsEXT, + pLayer: ^CAMetalLayer, +} + +MacOSSurfaceCreateInfoMVK :: struct { + sType: StructureType, + pNext: rawptr, + flags: MacOSSurfaceCreateFlagsMVK, + pView: rawptr, +} + +IOSSurfaceCreateInfoMVK :: struct { + sType: StructureType, + pNext: rawptr, + flags: IOSSurfaceCreateFlagsMVK, + pView: rawptr, +} + +WaylandSurfaceCreateInfoKHR :: struct { + sType: StructureType, + pNext: rawptr, + flags: WaylandSurfaceCreateFlagsKHR, + display: ^wl_display, + surface: ^wl_surface, +} + +// Opaque structs + +wl_surface :: struct {} // Opaque struct defined by Wayland +wl_display :: struct {} // Opaque struct defined by Wayland +// Aliases +PhysicalDeviceVariablePointerFeatures :: PhysicalDeviceVariablePointersFeatures +PhysicalDeviceShaderDrawParameterFeatures :: PhysicalDeviceShaderDrawParametersFeatures +PipelineStageFlags2 :: Flags64 +PipelineStageFlag2 :: Flags64 +AccessFlags2 :: Flags64 +AccessFlag2 :: Flags64 +FormatFeatureFlags2 :: Flags64 +FormatFeatureFlag2 :: Flags64 +RenderingFlagsKHR :: RenderingFlags +RenderingFlagKHR :: RenderingFlag +RenderingInfoKHR :: RenderingInfo +RenderingAttachmentInfoKHR :: RenderingAttachmentInfo +PipelineRenderingCreateInfoKHR :: PipelineRenderingCreateInfo +PhysicalDeviceDynamicRenderingFeaturesKHR :: PhysicalDeviceDynamicRenderingFeatures +CommandBufferInheritanceRenderingInfoKHR :: CommandBufferInheritanceRenderingInfo +AttachmentSampleCountInfoNV :: AttachmentSampleCountInfoAMD +RenderPassMultiviewCreateInfoKHR :: RenderPassMultiviewCreateInfo +PhysicalDeviceMultiviewFeaturesKHR :: PhysicalDeviceMultiviewFeatures +PhysicalDeviceMultiviewPropertiesKHR :: PhysicalDeviceMultiviewProperties +PhysicalDeviceFeatures2KHR :: PhysicalDeviceFeatures2 +PhysicalDeviceProperties2KHR :: PhysicalDeviceProperties2 +FormatProperties2KHR :: FormatProperties2 +ImageFormatProperties2KHR :: ImageFormatProperties2 +PhysicalDeviceImageFormatInfo2KHR :: PhysicalDeviceImageFormatInfo2 +QueueFamilyProperties2KHR :: QueueFamilyProperties2 +PhysicalDeviceMemoryProperties2KHR :: PhysicalDeviceMemoryProperties2 +SparseImageFormatProperties2KHR :: SparseImageFormatProperties2 +PhysicalDeviceSparseImageFormatInfo2KHR :: PhysicalDeviceSparseImageFormatInfo2 +PeerMemoryFeatureFlagsKHR :: PeerMemoryFeatureFlags +PeerMemoryFeatureFlagKHR :: PeerMemoryFeatureFlag +MemoryAllocateFlagsKHR :: MemoryAllocateFlags +MemoryAllocateFlagKHR :: MemoryAllocateFlag +MemoryAllocateFlagsInfoKHR :: MemoryAllocateFlagsInfo +DeviceGroupRenderPassBeginInfoKHR :: DeviceGroupRenderPassBeginInfo +DeviceGroupCommandBufferBeginInfoKHR :: DeviceGroupCommandBufferBeginInfo +DeviceGroupSubmitInfoKHR :: DeviceGroupSubmitInfo +DeviceGroupBindSparseInfoKHR :: DeviceGroupBindSparseInfo +BindBufferMemoryDeviceGroupInfoKHR :: BindBufferMemoryDeviceGroupInfo +BindImageMemoryDeviceGroupInfoKHR :: BindImageMemoryDeviceGroupInfo +CommandPoolTrimFlagsKHR :: CommandPoolTrimFlags +PhysicalDeviceGroupPropertiesKHR :: PhysicalDeviceGroupProperties +DeviceGroupDeviceCreateInfoKHR :: DeviceGroupDeviceCreateInfo +ExternalMemoryHandleTypeFlagsKHR :: ExternalMemoryHandleTypeFlags +ExternalMemoryHandleTypeFlagKHR :: ExternalMemoryHandleTypeFlag +ExternalMemoryFeatureFlagsKHR :: ExternalMemoryFeatureFlags +ExternalMemoryFeatureFlagKHR :: ExternalMemoryFeatureFlag +ExternalMemoryPropertiesKHR :: ExternalMemoryProperties +PhysicalDeviceExternalImageFormatInfoKHR :: PhysicalDeviceExternalImageFormatInfo +ExternalImageFormatPropertiesKHR :: ExternalImageFormatProperties +PhysicalDeviceExternalBufferInfoKHR :: PhysicalDeviceExternalBufferInfo +ExternalBufferPropertiesKHR :: ExternalBufferProperties +PhysicalDeviceIDPropertiesKHR :: PhysicalDeviceIDProperties +ExternalMemoryImageCreateInfoKHR :: ExternalMemoryImageCreateInfo +ExternalMemoryBufferCreateInfoKHR :: ExternalMemoryBufferCreateInfo +ExportMemoryAllocateInfoKHR :: ExportMemoryAllocateInfo +ExternalSemaphoreHandleTypeFlagsKHR :: ExternalSemaphoreHandleTypeFlags +ExternalSemaphoreHandleTypeFlagKHR :: ExternalSemaphoreHandleTypeFlag +ExternalSemaphoreFeatureFlagsKHR :: ExternalSemaphoreFeatureFlags +ExternalSemaphoreFeatureFlagKHR :: ExternalSemaphoreFeatureFlag +PhysicalDeviceExternalSemaphoreInfoKHR :: PhysicalDeviceExternalSemaphoreInfo +ExternalSemaphorePropertiesKHR :: ExternalSemaphoreProperties +SemaphoreImportFlagsKHR :: SemaphoreImportFlags +SemaphoreImportFlagKHR :: SemaphoreImportFlag +ExportSemaphoreCreateInfoKHR :: ExportSemaphoreCreateInfo +PhysicalDeviceShaderFloat16Int8FeaturesKHR :: PhysicalDeviceShaderFloat16Int8Features +PhysicalDeviceFloat16Int8FeaturesKHR :: PhysicalDeviceShaderFloat16Int8Features +PhysicalDevice16BitStorageFeaturesKHR :: PhysicalDevice16BitStorageFeatures +DescriptorUpdateTemplateKHR :: DescriptorUpdateTemplate +DescriptorUpdateTemplateTypeKHR :: DescriptorUpdateTemplateType +DescriptorUpdateTemplateCreateFlagsKHR :: DescriptorUpdateTemplateCreateFlags +DescriptorUpdateTemplateEntryKHR :: DescriptorUpdateTemplateEntry +DescriptorUpdateTemplateCreateInfoKHR :: DescriptorUpdateTemplateCreateInfo +PhysicalDeviceImagelessFramebufferFeaturesKHR :: PhysicalDeviceImagelessFramebufferFeatures +FramebufferAttachmentsCreateInfoKHR :: FramebufferAttachmentsCreateInfo +FramebufferAttachmentImageInfoKHR :: FramebufferAttachmentImageInfo +RenderPassAttachmentBeginInfoKHR :: RenderPassAttachmentBeginInfo +RenderPassCreateInfo2KHR :: RenderPassCreateInfo2 +AttachmentDescription2KHR :: AttachmentDescription2 +AttachmentReference2KHR :: AttachmentReference2 +SubpassDescription2KHR :: SubpassDescription2 +SubpassDependency2KHR :: SubpassDependency2 +SubpassBeginInfoKHR :: SubpassBeginInfo +SubpassEndInfoKHR :: SubpassEndInfo +ExternalFenceHandleTypeFlagsKHR :: ExternalFenceHandleTypeFlags +ExternalFenceHandleTypeFlagKHR :: ExternalFenceHandleTypeFlag +ExternalFenceFeatureFlagsKHR :: ExternalFenceFeatureFlags +ExternalFenceFeatureFlagKHR :: ExternalFenceFeatureFlag +PhysicalDeviceExternalFenceInfoKHR :: PhysicalDeviceExternalFenceInfo +ExternalFencePropertiesKHR :: ExternalFenceProperties +FenceImportFlagsKHR :: FenceImportFlags +FenceImportFlagKHR :: FenceImportFlag +ExportFenceCreateInfoKHR :: ExportFenceCreateInfo +PointClippingBehaviorKHR :: PointClippingBehavior +TessellationDomainOriginKHR :: TessellationDomainOrigin +PhysicalDevicePointClippingPropertiesKHR :: PhysicalDevicePointClippingProperties +RenderPassInputAttachmentAspectCreateInfoKHR :: RenderPassInputAttachmentAspectCreateInfo +InputAttachmentAspectReferenceKHR :: InputAttachmentAspectReference +ImageViewUsageCreateInfoKHR :: ImageViewUsageCreateInfo +PipelineTessellationDomainOriginStateCreateInfoKHR :: PipelineTessellationDomainOriginStateCreateInfo +PhysicalDeviceVariablePointerFeaturesKHR :: PhysicalDeviceVariablePointersFeatures +PhysicalDeviceVariablePointersFeaturesKHR :: PhysicalDeviceVariablePointersFeatures +MemoryDedicatedRequirementsKHR :: MemoryDedicatedRequirements +MemoryDedicatedAllocateInfoKHR :: MemoryDedicatedAllocateInfo +BufferMemoryRequirementsInfo2KHR :: BufferMemoryRequirementsInfo2 +ImageMemoryRequirementsInfo2KHR :: ImageMemoryRequirementsInfo2 +ImageSparseMemoryRequirementsInfo2KHR :: ImageSparseMemoryRequirementsInfo2 +MemoryRequirements2KHR :: MemoryRequirements2 +SparseImageMemoryRequirements2KHR :: SparseImageMemoryRequirements2 +ImageFormatListCreateInfoKHR :: ImageFormatListCreateInfo +SamplerYcbcrConversionKHR :: SamplerYcbcrConversion +SamplerYcbcrModelConversionKHR :: SamplerYcbcrModelConversion +SamplerYcbcrRangeKHR :: SamplerYcbcrRange +ChromaLocationKHR :: ChromaLocation +SamplerYcbcrConversionCreateInfoKHR :: SamplerYcbcrConversionCreateInfo +SamplerYcbcrConversionInfoKHR :: SamplerYcbcrConversionInfo +BindImagePlaneMemoryInfoKHR :: BindImagePlaneMemoryInfo +ImagePlaneMemoryRequirementsInfoKHR :: ImagePlaneMemoryRequirementsInfo +PhysicalDeviceSamplerYcbcrConversionFeaturesKHR :: PhysicalDeviceSamplerYcbcrConversionFeatures +SamplerYcbcrConversionImageFormatPropertiesKHR :: SamplerYcbcrConversionImageFormatProperties +BindBufferMemoryInfoKHR :: BindBufferMemoryInfo +BindImageMemoryInfoKHR :: BindImageMemoryInfo +PhysicalDeviceMaintenance3PropertiesKHR :: PhysicalDeviceMaintenance3Properties +DescriptorSetLayoutSupportKHR :: DescriptorSetLayoutSupport +PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR :: PhysicalDeviceShaderSubgroupExtendedTypesFeatures +PhysicalDevice8BitStorageFeaturesKHR :: PhysicalDevice8BitStorageFeatures +PhysicalDeviceShaderAtomicInt64FeaturesKHR :: PhysicalDeviceShaderAtomicInt64Features +DriverIdKHR :: DriverId +ConformanceVersionKHR :: ConformanceVersion +PhysicalDeviceDriverPropertiesKHR :: PhysicalDeviceDriverProperties +ShaderFloatControlsIndependenceKHR :: ShaderFloatControlsIndependence +PhysicalDeviceFloatControlsPropertiesKHR :: PhysicalDeviceFloatControlsProperties +ResolveModeFlagKHR :: ResolveModeFlag +ResolveModeFlagsKHR :: ResolveModeFlags +SubpassDescriptionDepthStencilResolveKHR :: SubpassDescriptionDepthStencilResolve +PhysicalDeviceDepthStencilResolvePropertiesKHR :: PhysicalDeviceDepthStencilResolveProperties +SemaphoreTypeKHR :: SemaphoreType +SemaphoreWaitFlagKHR :: SemaphoreWaitFlag +SemaphoreWaitFlagsKHR :: SemaphoreWaitFlags +PhysicalDeviceTimelineSemaphoreFeaturesKHR :: PhysicalDeviceTimelineSemaphoreFeatures +PhysicalDeviceTimelineSemaphorePropertiesKHR :: PhysicalDeviceTimelineSemaphoreProperties +SemaphoreTypeCreateInfoKHR :: SemaphoreTypeCreateInfo +TimelineSemaphoreSubmitInfoKHR :: TimelineSemaphoreSubmitInfo +SemaphoreWaitInfoKHR :: SemaphoreWaitInfo +SemaphoreSignalInfoKHR :: SemaphoreSignalInfo +PhysicalDeviceVulkanMemoryModelFeaturesKHR :: PhysicalDeviceVulkanMemoryModelFeatures +PhysicalDeviceShaderTerminateInvocationFeaturesKHR :: PhysicalDeviceShaderTerminateInvocationFeatures +PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR :: PhysicalDeviceSeparateDepthStencilLayoutsFeatures +AttachmentReferenceStencilLayoutKHR :: AttachmentReferenceStencilLayout +AttachmentDescriptionStencilLayoutKHR :: AttachmentDescriptionStencilLayout +PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR :: PhysicalDeviceUniformBufferStandardLayoutFeatures +PhysicalDeviceBufferDeviceAddressFeaturesKHR :: PhysicalDeviceBufferDeviceAddressFeatures +BufferDeviceAddressInfoKHR :: BufferDeviceAddressInfo +BufferOpaqueCaptureAddressCreateInfoKHR :: BufferOpaqueCaptureAddressCreateInfo +MemoryOpaqueCaptureAddressAllocateInfoKHR :: MemoryOpaqueCaptureAddressAllocateInfo +DeviceMemoryOpaqueCaptureAddressInfoKHR :: DeviceMemoryOpaqueCaptureAddressInfo +PhysicalDeviceShaderIntegerDotProductFeaturesKHR :: PhysicalDeviceShaderIntegerDotProductFeatures +PhysicalDeviceShaderIntegerDotProductPropertiesKHR :: PhysicalDeviceShaderIntegerDotProductProperties +PipelineStageFlags2KHR :: PipelineStageFlags2 +PipelineStageFlag2KHR :: PipelineStageFlag2 +AccessFlags2KHR :: AccessFlags2 +AccessFlag2KHR :: AccessFlag2 +SubmitFlagKHR :: SubmitFlag +SubmitFlagsKHR :: SubmitFlags +MemoryBarrier2KHR :: MemoryBarrier2 +BufferMemoryBarrier2KHR :: BufferMemoryBarrier2 +ImageMemoryBarrier2KHR :: ImageMemoryBarrier2 +DependencyInfoKHR :: DependencyInfo +SubmitInfo2KHR :: SubmitInfo2 +SemaphoreSubmitInfoKHR :: SemaphoreSubmitInfo +CommandBufferSubmitInfoKHR :: CommandBufferSubmitInfo +PhysicalDeviceSynchronization2FeaturesKHR :: PhysicalDeviceSynchronization2Features +PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR :: PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures +CopyBufferInfo2KHR :: CopyBufferInfo2 +CopyImageInfo2KHR :: CopyImageInfo2 +CopyBufferToImageInfo2KHR :: CopyBufferToImageInfo2 +CopyImageToBufferInfo2KHR :: CopyImageToBufferInfo2 +BlitImageInfo2KHR :: BlitImageInfo2 +ResolveImageInfo2KHR :: ResolveImageInfo2 +BufferCopy2KHR :: BufferCopy2 +ImageCopy2KHR :: ImageCopy2 +ImageBlit2KHR :: ImageBlit2 +BufferImageCopy2KHR :: BufferImageCopy2 +ImageResolve2KHR :: ImageResolve2 +FormatFeatureFlags2KHR :: FormatFeatureFlags2 +FormatFeatureFlag2KHR :: FormatFeatureFlag2 +FormatProperties3KHR :: FormatProperties3 +PhysicalDeviceMaintenance4FeaturesKHR :: PhysicalDeviceMaintenance4Features +PhysicalDeviceMaintenance4PropertiesKHR :: PhysicalDeviceMaintenance4Properties +DeviceBufferMemoryRequirementsKHR :: DeviceBufferMemoryRequirements +DeviceImageMemoryRequirementsKHR :: DeviceImageMemoryRequirements +PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT :: PhysicalDeviceTextureCompressionASTCHDRFeatures +SamplerReductionModeEXT :: SamplerReductionMode +SamplerReductionModeCreateInfoEXT :: SamplerReductionModeCreateInfo +PhysicalDeviceSamplerFilterMinmaxPropertiesEXT :: PhysicalDeviceSamplerFilterMinmaxProperties +PhysicalDeviceInlineUniformBlockFeaturesEXT :: PhysicalDeviceInlineUniformBlockFeatures +PhysicalDeviceInlineUniformBlockPropertiesEXT :: PhysicalDeviceInlineUniformBlockProperties +WriteDescriptorSetInlineUniformBlockEXT :: WriteDescriptorSetInlineUniformBlock +DescriptorPoolInlineUniformBlockCreateInfoEXT :: DescriptorPoolInlineUniformBlockCreateInfo +DescriptorBindingFlagEXT :: DescriptorBindingFlag +DescriptorBindingFlagsEXT :: DescriptorBindingFlags +DescriptorSetLayoutBindingFlagsCreateInfoEXT :: DescriptorSetLayoutBindingFlagsCreateInfo +PhysicalDeviceDescriptorIndexingFeaturesEXT :: PhysicalDeviceDescriptorIndexingFeatures +PhysicalDeviceDescriptorIndexingPropertiesEXT :: PhysicalDeviceDescriptorIndexingProperties +DescriptorSetVariableDescriptorCountAllocateInfoEXT :: DescriptorSetVariableDescriptorCountAllocateInfo +DescriptorSetVariableDescriptorCountLayoutSupportEXT :: DescriptorSetVariableDescriptorCountLayoutSupport +RayTracingShaderGroupTypeNV :: RayTracingShaderGroupTypeKHR +GeometryTypeNV :: GeometryTypeKHR +AccelerationStructureTypeNV :: AccelerationStructureTypeKHR +CopyAccelerationStructureModeNV :: CopyAccelerationStructureModeKHR +GeometryFlagsNV :: GeometryFlagsKHR +GeometryFlagNV :: GeometryFlagKHR +GeometryInstanceFlagsNV :: GeometryInstanceFlagsKHR +GeometryInstanceFlagNV :: GeometryInstanceFlagKHR +BuildAccelerationStructureFlagsNV :: BuildAccelerationStructureFlagsKHR +BuildAccelerationStructureFlagNV :: BuildAccelerationStructureFlagKHR +TransformMatrixNV :: TransformMatrixKHR +AabbPositionsNV :: AabbPositionsKHR +AccelerationStructureInstanceNV :: AccelerationStructureInstanceKHR +QueueGlobalPriorityEXT :: QueueGlobalPriorityKHR +DeviceQueueGlobalPriorityCreateInfoEXT :: DeviceQueueGlobalPriorityCreateInfoKHR +PipelineCreationFeedbackFlagEXT :: PipelineCreationFeedbackFlag +PipelineCreationFeedbackFlagsEXT :: PipelineCreationFeedbackFlags +PipelineCreationFeedbackCreateInfoEXT :: PipelineCreationFeedbackCreateInfo +PipelineCreationFeedbackEXT :: PipelineCreationFeedback +QueryPoolCreateInfoINTEL :: QueryPoolPerformanceQueryCreateInfoINTEL +PhysicalDeviceScalarBlockLayoutFeaturesEXT :: PhysicalDeviceScalarBlockLayoutFeatures +PhysicalDeviceSubgroupSizeControlFeaturesEXT :: PhysicalDeviceSubgroupSizeControlFeatures +PhysicalDeviceSubgroupSizeControlPropertiesEXT :: PhysicalDeviceSubgroupSizeControlProperties +PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT :: PipelineShaderStageRequiredSubgroupSizeCreateInfo +PhysicalDeviceBufferAddressFeaturesEXT :: PhysicalDeviceBufferDeviceAddressFeaturesEXT +BufferDeviceAddressInfoEXT :: BufferDeviceAddressInfo +ToolPurposeFlagEXT :: ToolPurposeFlag +ToolPurposeFlagsEXT :: ToolPurposeFlags +PhysicalDeviceToolPropertiesEXT :: PhysicalDeviceToolProperties +ImageStencilUsageCreateInfoEXT :: ImageStencilUsageCreateInfo +PhysicalDeviceHostQueryResetFeaturesEXT :: PhysicalDeviceHostQueryResetFeatures +PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT :: PhysicalDeviceShaderDemoteToHelperInvocationFeatures +PhysicalDeviceTexelBufferAlignmentPropertiesEXT :: PhysicalDeviceTexelBufferAlignmentProperties +PrivateDataSlotEXT :: PrivateDataSlot +PrivateDataSlotCreateFlagsEXT :: PrivateDataSlotCreateFlags +PhysicalDevicePrivateDataFeaturesEXT :: PhysicalDevicePrivateDataFeatures +DevicePrivateDataCreateInfoEXT :: DevicePrivateDataCreateInfo +PrivateDataSlotCreateInfoEXT :: PrivateDataSlotCreateInfo +PhysicalDevicePipelineCreationCacheControlFeaturesEXT :: PhysicalDevicePipelineCreationCacheControlFeatures +PhysicalDeviceImageRobustnessFeaturesEXT :: PhysicalDeviceImageRobustnessFeatures +PhysicalDeviceGlobalPriorityQueryFeaturesEXT :: PhysicalDeviceGlobalPriorityQueryFeaturesKHR +QueueFamilyGlobalPriorityPropertiesEXT :: QueueFamilyGlobalPriorityPropertiesKHR + + diff --git a/vendor/zlib/zlib.odin b/vendor/zlib/zlib.odin index 8a046a401..021449813 100644 --- a/vendor/zlib/zlib.odin +++ b/vendor/zlib/zlib.odin @@ -2,8 +2,13 @@ package vendor_zlib import "core:c" -when ODIN_OS == .Windows { foreign import zlib "libz.lib" } -when ODIN_OS == .Linux { foreign import zlib "system:z" } +when ODIN_OS == .Windows { + foreign import zlib "libz.lib" +} else when ODIN_OS == .Linux { + foreign import zlib "system:z" +} else { + foreign import zlib "system:z" +} VERSION :: "1.2.12" VERNUM :: 0x12c0 @@ -41,39 +46,39 @@ gzFile_s :: struct { gzFile :: ^gzFile_s z_stream_s :: struct { - next_in: ^Bytef, - avail_in: uInt, - total_in: uLong, - next_out: ^Bytef, - avail_out: uInt, - total_out: uLong, - msg: [^]c.char, - state: rawptr, - zalloc: alloc_func, - zfree: free_func, - opaque: voidpf, - data_type: c.int, - adler: uLong, - reserved: uLong, + next_in: ^Bytef, + avail_in: uInt, + total_in: uLong, + next_out: ^Bytef, + avail_out: uInt, + total_out: uLong, + msg: [^]c.char, + state: rawptr, + zalloc: alloc_func, + zfree: free_func, + opaque: voidpf, + data_type: c.int, + adler: uLong, + reserved: uLong, } z_stream :: z_stream_s z_streamp :: ^z_stream gz_header_s :: struct { - text: c.int, - time: uLong, - xflags: c.int, - os: c.int, - extra: [^]Bytef, - extra_len: uInt, - extra_max: uInt, - name: [^]Bytef, - name_max: uInt, - comment: [^]Bytef, - comm_max: uInt, - hcrc: c.int, - done: c.int, + text: c.int, + time: uLong, + xflags: c.int, + os: c.int, + extra: [^]Bytef, + extra_len: uInt, + extra_max: uInt, + name: [^]Bytef, + name_max: uInt, + comment: [^]Bytef, + comm_max: uInt, + hcrc: c.int, + done: c.int, } gz_header :: gz_header_s