From a3860e23c60c30d4f6aae462015c5bda8b856266 Mon Sep 17 00:00:00 2001 From: Jon Lipstate Date: Tue, 28 Mar 2023 13:09:21 -0700 Subject: [PATCH 01/75] doc decimal --- core/strconv/decimal/decimal.odin | 123 +++++++++++++++++++++++++++++- 1 file changed, 119 insertions(+), 4 deletions(-) diff --git a/core/strconv/decimal/decimal.odin b/core/strconv/decimal/decimal.odin index 24ad2ce91..3ae0dd143 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,61 @@ 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" + strconv_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" + + strconv_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 From 0570c84a83884bbf5c36dc4a5546c04cf3be3c2d Mon Sep 17 00:00:00 2001 From: Jon Lipstate Date: Tue, 28 Mar 2023 15:40:48 -0700 Subject: [PATCH 02/75] initial --- core/strconv/decimal/decimal.odin | 1 + core/strconv/generic_float.odin | 52 ++++ core/strconv/integers.odin | 50 +++- core/strconv/strconv.odin | 403 +++++++++++++++++++++++++++++- 4 files changed, 501 insertions(+), 5 deletions(-) diff --git a/core/strconv/decimal/decimal.odin b/core/strconv/decimal/decimal.odin index 3ae0dd143..bea5d4452 100644 --- a/core/strconv/decimal/decimal.odin +++ b/core/strconv/decimal/decimal.odin @@ -501,6 +501,7 @@ Example: import "core:fmt" import "core:strconv" + strconv_round_down_example :: proc { d: decimal.Decimal str := [64]u8{} 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..918ebc3ec 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 numerical value of the given rune +**Inputs** +- r: The input rune to find the numerical value of + +**Returns** The numerical value of the given rune +*/ _digit_value :: proc(r: rune) -> int { ri := int(r) v: int = 16 @@ -25,7 +44,24 @@ _digit_value :: proc(r: rune) -> int { } return v } +/* +Parses an integer value from the input string in the given base, without a prefix +**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) + +**Returns** +- value: The parsed integer value +- ok: A boolean indicating whether the parsing was successful + +Example: + + n, ok := strconv.parse_i64_of_base("-1234eeee", 10) + assert(n == -1234 && ok) + +*/ // 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, @@ -80,7 +116,28 @@ 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 +*Does NOT allocate* + +**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) + +**Returns** +- value: The parsed integer value +- ok: A boolean indicating whether the parsing was successful + +Example: + + n, ok := strconv.parse_i64_maybe_prefixed("1234") + assert(n == 1234 && ok) + + n, ok = strconv.parse_i64_maybe_prefixed("0xeeee") + assert(n == 0xeeee && ok) + +*/ // 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, @@ -148,7 +205,20 @@ parse_i64_maybe_prefixed :: proc(str: string, n: ^int = nil) -> (value: i64, ok: } 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 +*Implicitly allocates using context.temp_allocator* + +**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) + +**Returns** +- value: The parsed uint64 value +- ok: A boolean indicating whether the parsing was successful +*/ // Parses an unsigned integer value from a string, in the given base, and // without a prefix. // @@ -193,7 +263,21 @@ 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 +*Implicitly allocates using context.temp_allocator* + +**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 + +**Returns** +- value: The parsed uint64 value +- ok: A boolean indicating whether the parsing was successful +*/ // 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, @@ -250,7 +334,21 @@ parse_u64_maybe_prefixed :: proc(str: string, n: ^int = nil) -> (value: u64, ok: } 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 +*Implicitly allocates using context.temp_allocator* + +**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 + +**Returns** +- value: The parsed int value +- ok: A boolean indicating whether the parsing was successful +*/ // 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. @@ -277,7 +375,22 @@ 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 +*Implicitly allocates using context.temp_allocator* + +**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 + +**Returns** + +value: The parsed uint value +ok: A boolean indicating whether the parsing was successful +*/ // 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; @@ -307,7 +420,26 @@ 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 +*WARNING: base must be 1-16* + +**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) + +**Returns** +- value: The parsed i128 value +- ok: A boolean indicating whether the parsing was successful + +Example: + + n, ok := strconv.parse_i128_of_base("-1234eeee", 10); + assert(n == -1234 && ok); + +*/ // Parses an integer value from a string, in the given base, without a prefix. // @@ -361,7 +493,28 @@ 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 +*WARNING: base must be 1-16* + +**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) + +**Returns** +- value: The parsed i128 value +- ok: A boolean indicating whether the parsing was successful + +Example: + + n, ok := strconv.parse_i128_maybe_prefixed("1234"); + assert(n == 1234 && ok); + + n, ok = strconv.parse_i128_maybe_prefixed("0xeeee"); + assert(n == 0xeeee && ok); + +*/ // 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, @@ -429,7 +582,29 @@ parse_i128_maybe_prefixed :: proc(str: string, n: ^int = nil) -> (value: i128, o } 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 +*WARNING: base must be 1-16* + +**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) + +**Returns** +- value: The parsed u128 value +- ok: A boolean indicating whether the parsing was successful + +Example: + + 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); + +*/ // Parses an unsigned integer value from a string, in the given base, and // without a prefix. // @@ -474,7 +649,28 @@ 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 +*WARNING: base must be 1-16* + +**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) + +**Returns** +- value: The parsed u128 value +- ok: A boolean indicating whether the parsing was successful + +Example: + +n, ok := strconv.parse_u128_maybe_prefixed("1234"); +assert(n == 1234 && ok); + +n, ok = strconv.parse_u128_maybe_prefixed("0xeeee"); +assert(n == 0xeeee && ok); + +*/ // 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, @@ -533,11 +729,27 @@ parse_u128_maybe_prefixed :: proc(str: string, n: ^int = nil) -> (value: u128, o 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). - +**Returns** +- value: The parsed 32-bit floating point number. +- ok: A boolean indicating whether the parsing was successful. +*/ // Parses a 32-bit floating point number from a string. // // Returns ok=false if a base 10 float could not be found, @@ -555,8 +767,19 @@ parse_f32 :: proc(s: string, n: ^int = nil) -> (value: f32, ok: bool) { v, ok = parse_f64(s, n) return f32(v), ok } +/* +Parses a 64-bit floating point number from a string +Does NOT allocate +**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). + +**Returns** +- value: The parsed 64-bit floating point number. +- ok: A boolean indicating whether the parsing was successful. +*/ parse_f64 :: proc(str: string, n: ^int = nil) -> (value: f64, ok: bool) { nr: int value, nr, ok = parse_f64_prefix(str) @@ -566,7 +789,18 @@ 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 +Does NOT allocate + +**Inputs** +- str: The input string containing a 32-bit floating point number. +**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. +*/ // Parses a 32-bit floating point number from a string. // @@ -586,7 +820,19 @@ parse_f32_prefix :: proc(str: string) -> (value: f32, nr: int, ok: bool) { 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 +Does NOT allocate + +**Inputs** +- str: The input string containing a 64-bit floating point number. + +**Returns** +- value: The parsed 64-bit floating point number. +- nr: The length of the parsed substring. +- ok: A boolean indicating whether the parsing was successful. +*/ // Parses a 64-bit floating point number from a string. // @@ -877,8 +1123,21 @@ 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: + + buf: [8]byte + result := append_bool(buf[:], true) + fmt.println(result) // "true" + +**Returns** The resulting string after appending the boolean value +*/ append_bool :: proc(buf: []byte, b: bool) -> string { n := 0 if b { @@ -888,32 +1147,133 @@ 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: + + buf: [32]byte + result := append_uint(buf[:], 42, 16) + fmt.println(result) // "2A" + +**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: + + buf: [32]byte + result := append_int(buf[:], -42, 10) + fmt.println(result) // "-42" + +**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: + + buf: [16]byte + result := itoa(buf[:], 42) + fmt.println(result) // "42" + +**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: + + value := atoi("42") + fmt.println(value) // 42 + +**Returns** The resulting integer value after converting the string +*/ 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: + + value := atof("3.14") + fmt.println(value) // 3.14 + +**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: + + buf: [32]byte + result := append_float(buf[:], 3.14159, 'f', 2, 64) + fmt.println(result) // "3.14" + +**Returns** The resulting string after appending the float64 value +*/ 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 +Example: + + buf: [20]byte + result := quote(buf[:], "hello") // "\"hello\"" + +**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 +1311,20 @@ 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: + + buf: [10]byte + result := quote_rune(buf[:], 'A') // "'A'" + +**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 +1380,19 @@ 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., '"') - - +**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 +1487,20 @@ 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: The memory allocator to use (default: context.allocator) + +**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 { From 24493e89ad581e6e095179bf89b0c01fdd3e415c Mon Sep 17 00:00:00 2001 From: Jon Lipstate Date: Tue, 28 Mar 2023 22:17:39 -0700 Subject: [PATCH 03/75] WSAPoll --- core/sys/windows/ws2_32.odin | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/core/sys/windows/ws2_32.odin b/core/sys/windows/ws2_32.odin index 30515d430..4b70e880a 100644 --- a/core/sys/windows/ws2_32.odin +++ b/core/sys/windows/ws2_32.odin @@ -3,11 +3,22 @@ package sys_windows foreign import ws2_32 "system:Ws2_32.lib" +POLLRDNORM :: 0x0100 +POLLRDBAND :: 0x0200 +POLLIN :: (POLLRDNORM | POLLRDBAND) +POLLPRI :: 0x0400 +WSA_POLLFD::struct{ + fd:SOCKET, + events:c_short, + revents:c_short, +} + @(default_calling_convention="stdcall") foreign ws2_32 { WSAStartup :: proc(wVersionRequested: WORD, lpWSAData: LPWSADATA) -> c_int --- WSACleanup :: proc() -> c_int --- WSAGetLastError :: proc() -> c_int --- + WSAPoll :: proc(fdArray: ^WSA_POLLFD, fds: c_ulong, timeout: c_int) -> c_int --- WSADuplicateSocketW :: proc( s: SOCKET, dwProcessId: DWORD, From 08bc6a1698c4c63c95a0e3452f81b7d713e20280 Mon Sep 17 00:00:00 2001 From: Lucas Perlind Date: Mon, 3 Apr 2023 12:41:00 +1000 Subject: [PATCH 04/75] Fix type comparison not accounting for parapoly params --- src/types.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/types.cpp b/src/types.cpp index ee610a2ce..5addb5b7b 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -2683,7 +2683,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; From 2795f09fa8e257421fcf1e44423445e98a520542 Mon Sep 17 00:00:00 2001 From: Elusive Porpoise <95202750+elusivePorpoise@users.noreply.github.com> Date: Mon, 3 Apr 2023 22:27:19 -0700 Subject: [PATCH 05/75] Add GetStartupInfoW. Rename StartupInfo to StartupInfoW. --- core/sys/windows/advapi32.odin | 4 ++-- core/sys/windows/kernel32.odin | 3 ++- core/sys/windows/types.odin | 5 ++--- core/sys/windows/util.odin | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) 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..ff2607b62 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 --- diff --git a/core/sys/windows/types.odin b/core/sys/windows/types.odin index cd8bb4060..bf2a28e14 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 @@ -2418,8 +2418,7 @@ PROCESS_INFORMATION :: struct { dwThreadId: DWORD, } -// FYI: This is STARTUPINFOW, not STARTUPINFOA -STARTUPINFO :: struct { +STARTUPINFOW :: struct { cb: DWORD, lpReserved: LPWSTR, lpDesktop: LPWSTR, 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( From aa5a222c6d3f10d9a9b19085e8cfa4af767b3512 Mon Sep 17 00:00:00 2001 From: Elusive Porpoise <95202750+elusivePorpoise@users.noreply.github.com> Date: Mon, 3 Apr 2023 22:32:21 -0700 Subject: [PATCH 06/75] Add creation, thread priority, and copy file flags. --- core/sys/windows/kernel32.odin | 66 ++++++++++++++++++++++++++++++++++ core/sys/windows/types.odin | 8 ++--- 2 files changed, 68 insertions(+), 6 deletions(-) diff --git a/core/sys/windows/kernel32.odin b/core/sys/windows/kernel32.odin index ff2607b62..c7542be43 100644 --- a/core/sys/windows/kernel32.odin +++ b/core/sys/windows/kernel32.odin @@ -407,6 +407,72 @@ foreign kernel32 { GetLogicalProcessorInformation :: proc(buffer: ^SYSTEM_LOGICAL_PROCESSOR_INFORMATION, returnedLength: PDWORD) -> 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 bf2a28e14..81e545039 100644 --- a/core/sys/windows/types.odin +++ b/core/sys/windows/types.odin @@ -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 From 738cf837def804b06e3869b02d5d8055301294ac Mon Sep 17 00:00:00 2001 From: Jon Lipstate Date: Tue, 4 Apr 2023 00:32:34 -0700 Subject: [PATCH 07/75] additional winsock apis, doc links --- core/sys/windows/ws2_32.odin | 111 ++++++++++++++++++++++++++++++++++- 1 file changed, 108 insertions(+), 3 deletions(-) diff --git a/core/sys/windows/ws2_32.odin b/core/sys/windows/ws2_32.odin index 4b70e880a..cfb09e1fc 100644 --- a/core/sys/windows/ws2_32.odin +++ b/core/sys/windows/ws2_32.odin @@ -1,29 +1,103 @@ // +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 +WSAOVERLAPPED_COMPLETION_ROUTINE :: proc(dwError: DWORD, cbTransferred: DWORD, lpOverlapped: ^OVERLAPPED, dwFlags: DWORD) + +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) + } +*/ +// NOTE: AcceptEx should be loaded at runtime per MS-Docs +//[MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/mswsock/nf-mswsock-acceptex) +AcceptEx :: proc( + sListenSocket: SOCKET, + sAcceptSocket: SOCKET, + lpOutputBuffer: rawptr, + dwReceiveDataLength: u32, + dwLocalAddressLength: u32, + dwRemoteAddressLength: u32, + lpdwBytesReceived: ^u32, + lpOverlapped: ^OVERLAPPED, +) -> b32 +// NOTE: GetAcceptExSockaddrs should be loaded at runtime per MS-Docs +//[MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/mswsock/nf-mswsock-getacceptexsockaddrs) +GetAcceptExSockaddrs :: proc( + lpOutputBuffer: rawptr, + dwReceiveDataLength: u32, + dwLocalAddressLength: u32, + dwRemoteAddressLength: u32, + LocalSockaddr: ^^sockaddr, + LocalSockaddrLength: ^i32, + RemoteSockaddr: ^^sockaddr, + RemoteSockaddrLength: ^i32, +) + +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, @@ -33,6 +107,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, @@ -42,6 +117,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, @@ -50,16 +126,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: ^WSAOVERLAPPED_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, @@ -68,6 +160,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, @@ -76,9 +169,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, @@ -86,19 +182,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, @@ -110,7 +215,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, @@ -118,6 +223,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, @@ -125,5 +231,4 @@ foreign ws2_32 { optval: ^c_char, optlen: ^c_int, ) -> c_int --- - } From 6cba4d348383f66655f088ad1dc65e1eb3b3335d Mon Sep 17 00:00:00 2001 From: Jon Lipstate Date: Tue, 4 Apr 2023 00:42:38 -0700 Subject: [PATCH 08/75] iocp support --- core/sys/windows/kernel32.odin | 17 +++++++++++++++++ core/sys/windows/types.odin | 21 +++++++++++++++++++++ core/sys/windows/ws2_32.odin | 3 +-- 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/core/sys/windows/kernel32.odin b/core/sys/windows/kernel32.odin index 1bbf910bb..c0f09ef2a 100644 --- a/core/sys/windows/kernel32.odin +++ b/core/sys/windows/kernel32.odin @@ -404,6 +404,23 @@ 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-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/sysinfoapi/nf-sysinfoapi-gettickcount64) + GetTickCount64 :: proc() -> u64 --- + // [MS-Docs](https://github.com/mic101/windows/blob/master/WRK-v1.2/base/ntos/ex/keyedevent.c) + NtCreateKeyedEvent :: proc(KeyedEventHandle: ^HANDLE, DesiredAccess: ACCESS_MASK, ObjectAttributes: OBJECT_ATTRIBUTES, Flags: u32) -> NTSTATUS --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/handleapi/nf-handleapi-gethandleinformation) + GetHandleInformation :: proc(hObject: HANDLE, lpdwFlags: ^DWORD) -> BOOL --- + //[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 --- } diff --git a/core/sys/windows/types.odin b/core/sys/windows/types.odin index cd8bb4060..dd2b0e49b 100644 --- a/core/sys/windows/types.odin +++ b/core/sys/windows/types.odin @@ -2450,6 +2450,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 +2473,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/ws2_32.odin b/core/sys/windows/ws2_32.odin index cfb09e1fc..ef4a9465b 100644 --- a/core/sys/windows/ws2_32.odin +++ b/core/sys/windows/ws2_32.odin @@ -36,7 +36,6 @@ WSANETWORKEVENTS :: struct { } WSAEVENT :: HANDLE -WSAOVERLAPPED_COMPLETION_ROUTINE :: proc(dwError: DWORD, cbTransferred: DWORD, lpOverlapped: ^OVERLAPPED, dwFlags: DWORD) 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}} @@ -127,7 +126,7 @@ foreign ws2_32 { 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: ^WSAOVERLAPPED_COMPLETION_ROUTINE) -> c_int --- + 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) From 70ce878dfb1b6068d5ceb9c14a08a32f0394db78 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 4 Apr 2023 12:11:12 +0100 Subject: [PATCH 09/75] Add `-max-error-count:` --- src/build_settings.cpp | 16 ++++++++++++++++ src/error.cpp | 10 +++++----- src/main.cpp | 30 ++++++++++++++++++++++++++++-- 3 files changed, 49 insertions(+), 7 deletions(-) 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/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/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"); From 219343f3c0e1bdf6130af5d07baa6c929379dfe1 Mon Sep 17 00:00:00 2001 From: Jon Lipstate Date: Tue, 4 Apr 2023 11:47:26 -0700 Subject: [PATCH 10/75] remove keyedevent --- core/sys/windows/kernel32.odin | 2 -- 1 file changed, 2 deletions(-) diff --git a/core/sys/windows/kernel32.odin b/core/sys/windows/kernel32.odin index c0f09ef2a..c06d49ff3 100644 --- a/core/sys/windows/kernel32.odin +++ b/core/sys/windows/kernel32.odin @@ -415,8 +415,6 @@ foreign kernel32 { PostQueuedCompletionStatus :: proc(CompletionPort: HANDLE, dwNumberOfBytesTransferred: DWORD, dwCompletionKey: c_ulong, lpOverlapped: ^OVERLAPPED) -> BOOL --- // [MS-Docs] (https://learn.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-gettickcount64) GetTickCount64 :: proc() -> u64 --- - // [MS-Docs](https://github.com/mic101/windows/blob/master/WRK-v1.2/base/ntos/ex/keyedevent.c) - NtCreateKeyedEvent :: proc(KeyedEventHandle: ^HANDLE, DesiredAccess: ACCESS_MASK, ObjectAttributes: OBJECT_ATTRIBUTES, Flags: u32) -> NTSTATUS --- // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/handleapi/nf-handleapi-gethandleinformation) GetHandleInformation :: proc(hObject: HANDLE, lpdwFlags: ^DWORD) -> BOOL --- //[MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/ioapiset/nf-ioapiset-getqueuedcompletionstatus) From 6c943722f3033e27ffaf078a2a5024a16c805337 Mon Sep 17 00:00:00 2001 From: Jon Lipstate Date: Tue, 4 Apr 2023 22:00:22 -0700 Subject: [PATCH 11/75] add non Ex variant --- core/sys/windows/kernel32.odin | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/sys/windows/kernel32.odin b/core/sys/windows/kernel32.odin index c06d49ff3..d7e67acc5 100644 --- a/core/sys/windows/kernel32.odin +++ b/core/sys/windows/kernel32.odin @@ -409,6 +409,8 @@ foreign kernel32 { 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) From 9a8c69d1c060f1aa72e058e325efbe18022f0ab6 Mon Sep 17 00:00:00 2001 From: Jon Lipstate Date: Tue, 4 Apr 2023 22:01:44 -0700 Subject: [PATCH 12/75] remove duplicate --- core/sys/windows/kernel32.odin | 901 +++++++++------------------------ 1 file changed, 239 insertions(+), 662 deletions(-) diff --git a/core/sys/windows/kernel32.odin b/core/sys/windows/kernel32.odin index d7e67acc5..7bd795ac2 100644 --- a/core/sys/windows/kernel32.odin +++ b/core/sys/windows/kernel32.odin @@ -3,75 +3,53 @@ package sys_windows foreign import kernel32 "system:Kernel32.lib" -FOREGROUND_BLUE :: WORD(0x0001) -FOREGROUND_GREEN :: WORD(0x0002) -FOREGROUND_RED :: WORD(0x0004) -FOREGROUND_INTENSITY :: WORD(0x0008) -BACKGROUND_BLUE :: WORD(0x0010) -BACKGROUND_GREEN :: WORD(0x0020) -BACKGROUND_RED :: WORD(0x0040) -BACKGROUND_INTENSITY :: WORD(0x0080) -COMMON_LVB_LEADING_BYTE :: WORD(0x0100) -COMMON_LVB_TRAILING_BYTE :: WORD(0x0200) +FOREGROUND_BLUE :: WORD(0x0001) +FOREGROUND_GREEN :: WORD(0x0002) +FOREGROUND_RED :: WORD(0x0004) +FOREGROUND_INTENSITY :: WORD(0x0008) +BACKGROUND_BLUE :: WORD(0x0010) +BACKGROUND_GREEN :: WORD(0x0020) +BACKGROUND_RED :: WORD(0x0040) +BACKGROUND_INTENSITY :: WORD(0x0080) +COMMON_LVB_LEADING_BYTE :: WORD(0x0100) +COMMON_LVB_TRAILING_BYTE :: WORD(0x0200) COMMON_LVB_GRID_HORIZONTAL :: WORD(0x0400) -COMMON_LVB_GRID_LVERTICAL :: WORD(0x0800) -COMMON_LVB_GRID_RVERTICAL :: WORD(0x1000) -COMMON_LVB_REVERSE_VIDEO :: WORD(0x4000) -COMMON_LVB_UNDERSCORE :: WORD(0x8000) -COMMON_LVB_SBCSDBCS :: WORD(0x0300) +COMMON_LVB_GRID_LVERTICAL :: WORD(0x0800) +COMMON_LVB_GRID_RVERTICAL :: WORD(0x1000) +COMMON_LVB_REVERSE_VIDEO :: WORD(0x4000) +COMMON_LVB_UNDERSCORE :: WORD(0x8000) +COMMON_LVB_SBCSDBCS :: WORD(0x0300) -@(default_calling_convention="stdcall") +@(default_calling_convention = "stdcall") foreign kernel32 { OutputDebugStringA :: proc(lpOutputString: LPCSTR) --- // The only A thing that is allowed OutputDebugStringW :: proc(lpOutputString: LPCWSTR) --- - ReadConsoleW :: proc(hConsoleInput: HANDLE, - lpBuffer: LPVOID, - nNumberOfCharsToRead: DWORD, - lpNumberOfCharsRead: LPDWORD, - pInputControl: PCONSOLE_READCONSOLE_CONTROL) -> BOOL --- + ReadConsoleW :: proc(hConsoleInput: HANDLE, lpBuffer: LPVOID, nNumberOfCharsToRead: DWORD, lpNumberOfCharsRead: LPDWORD, pInputControl: PCONSOLE_READCONSOLE_CONTROL) -> BOOL --- - WriteConsoleW :: proc(hConsoleOutput: HANDLE, - lpBuffer: LPCVOID, - nNumberOfCharsToWrite: DWORD, - lpNumberOfCharsWritten: LPDWORD, - lpReserved: LPVOID) -> BOOL --- + WriteConsoleW :: proc(hConsoleOutput: HANDLE, lpBuffer: LPCVOID, nNumberOfCharsToWrite: DWORD, lpNumberOfCharsWritten: LPDWORD, lpReserved: LPVOID) -> BOOL --- - GetConsoleMode :: proc(hConsoleHandle: HANDLE, - lpMode: LPDWORD) -> BOOL --- - SetConsoleMode :: proc(hConsoleHandle: HANDLE, - dwMode: DWORD) -> BOOL --- - SetConsoleCursorPosition :: proc(hConsoleHandle: HANDLE, - dwCursorPosition: COORD) -> BOOL --- - SetConsoleTextAttribute :: proc(hConsoleOutput: HANDLE, - wAttributes: WORD) -> BOOL --- + GetConsoleMode :: proc(hConsoleHandle: HANDLE, lpMode: LPDWORD) -> BOOL --- + SetConsoleMode :: proc(hConsoleHandle: HANDLE, dwMode: DWORD) -> BOOL --- + SetConsoleCursorPosition :: proc(hConsoleHandle: HANDLE, dwCursorPosition: COORD) -> BOOL --- + SetConsoleTextAttribute :: proc(hConsoleOutput: HANDLE, wAttributes: WORD) -> BOOL --- SetConsoleOutputCP :: proc(wCodePageID: UINT) -> BOOL --- - + GetFileInformationByHandle :: proc(hFile: HANDLE, lpFileInformation: LPBY_HANDLE_FILE_INFORMATION) -> BOOL --- - SetHandleInformation :: proc(hObject: HANDLE, - dwMask: DWORD, - dwFlags: DWORD) -> BOOL --- - SetFileInformationByHandle :: proc(hFile: HANDLE, - FileInformationClass: FILE_INFO_BY_HANDLE_CLASS, - lpFileInformation: LPVOID, - dwBufferSize: DWORD) -> BOOL --- + SetHandleInformation :: proc(hObject: HANDLE, dwMask: DWORD, dwFlags: DWORD) -> BOOL --- + SetFileInformationByHandle :: proc(hFile: HANDLE, FileInformationClass: FILE_INFO_BY_HANDLE_CLASS, lpFileInformation: LPVOID, dwBufferSize: DWORD) -> BOOL --- AddVectoredExceptionHandler :: proc(FirstHandler: ULONG, VectoredHandler: PVECTORED_EXCEPTION_HANDLER) -> LPVOID --- - AddVectoredContinueHandler :: proc(FirstHandler: ULONG, VectoredHandler: PVECTORED_EXCEPTION_HANDLER) -> LPVOID --- - RemoveVectoredExceptionHandler :: proc(Handle: LPVOID) -> DWORD --- - RemoveVectoredContinueHandler :: proc(Handle: LPVOID) -> DWORD --- + AddVectoredContinueHandler :: proc(FirstHandler: ULONG, VectoredHandler: PVECTORED_EXCEPTION_HANDLER) -> LPVOID --- + RemoveVectoredExceptionHandler :: proc(Handle: LPVOID) -> DWORD --- + RemoveVectoredContinueHandler :: proc(Handle: LPVOID) -> DWORD --- RaiseException :: proc(dwExceptionCode, dwExceptionFlags, nNumberOfArguments: DWORD, lpArguments: ^ULONG_PTR) -> ! --- - CreateHardLinkW :: proc(lpSymlinkFileName: LPCWSTR, - lpTargetFileName: LPCWSTR, - lpSecurityAttributes: LPSECURITY_ATTRIBUTES) -> BOOL --- + CreateHardLinkW :: proc(lpSymlinkFileName: LPCWSTR, lpTargetFileName: LPCWSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES) -> BOOL --- - GetFileInformationByHandleEx :: proc(hFile: HANDLE, - fileInfoClass: FILE_INFO_BY_HANDLE_CLASS, - lpFileInformation: LPVOID, - dwBufferSize: DWORD) -> BOOL --- + GetFileInformationByHandleEx :: proc(hFile: HANDLE, fileInfoClass: FILE_INFO_BY_HANDLE_CLASS, lpFileInformation: LPVOID, dwBufferSize: DWORD) -> BOOL --- InitializeCriticalSection :: proc(CriticalSection: ^CRITICAL_SECTION) --- InitializeCriticalSectionAndSpinCount :: proc(CriticalSection: ^CRITICAL_SECTION, dwSpinCount: DWORD) -> BOOL --- @@ -89,42 +67,12 @@ foreign kernel32 { GetCurrentProcessId :: proc() -> DWORD --- GetCurrentThread :: proc() -> HANDLE --- GetCurrentThreadId :: proc() -> DWORD --- - GetProcessTimes :: proc( - hProcess: HANDLE, - lpCreationTime: LPFILETIME, - lpExitTime: LPFILETIME, - lpKernelTime: LPFILETIME, - lpUserTime: LPFILETIME, - ) -> BOOL --- + GetProcessTimes :: proc(hProcess: HANDLE, lpCreationTime: LPFILETIME, lpExitTime: LPFILETIME, lpKernelTime: LPFILETIME, lpUserTime: LPFILETIME) -> BOOL --- GetStdHandle :: proc(which: DWORD) -> HANDLE --- ExitProcess :: proc(uExitCode: c_uint) -> ! --- - DeviceIoControl :: proc( - hDevice: HANDLE, - dwIoControlCode: DWORD, - lpInBuffer: LPVOID, - nInBufferSize: DWORD, - lpOutBuffer: LPVOID, - nOutBufferSize: DWORD, - lpBytesReturned: LPDWORD, - lpOverlapped: LPOVERLAPPED, - ) -> BOOL --- - CreateThread :: proc( - lpThreadAttributes: LPSECURITY_ATTRIBUTES, - dwStackSize: SIZE_T, - lpStartAddress: proc "stdcall" (rawptr) -> DWORD, - lpParameter: LPVOID, - dwCreationFlags: DWORD, - lpThreadId: LPDWORD, - ) -> HANDLE --- - CreateRemoteThread :: proc( - hProcess: HANDLE, - lpThreadAttributes: LPSECURITY_ATTRIBUTES, - dwStackSize: SIZE_T, - lpStartAddress: proc "stdcall" (rawptr) -> DWORD, - lpParameter: LPVOID, - dwCreationFlags: DWORD, - lpThreadId: LPDWORD, - ) -> HANDLE --- + DeviceIoControl :: proc(hDevice: HANDLE, dwIoControlCode: DWORD, lpInBuffer: LPVOID, nInBufferSize: DWORD, lpOutBuffer: LPVOID, nOutBufferSize: DWORD, lpBytesReturned: LPDWORD, lpOverlapped: LPOVERLAPPED) -> BOOL --- + CreateThread :: proc(lpThreadAttributes: LPSECURITY_ATTRIBUTES, dwStackSize: SIZE_T, lpStartAddress: proc "stdcall" (_: rawptr) -> DWORD, lpParameter: LPVOID, dwCreationFlags: DWORD, lpThreadId: LPDWORD) -> HANDLE --- + CreateRemoteThread :: proc(hProcess: HANDLE, lpThreadAttributes: LPSECURITY_ATTRIBUTES, dwStackSize: SIZE_T, lpStartAddress: proc "stdcall" (_: rawptr) -> DWORD, lpParameter: LPVOID, dwCreationFlags: DWORD, lpThreadId: LPDWORD) -> HANDLE --- SwitchToThread :: proc() -> BOOL --- ResumeThread :: proc(thread: HANDLE) -> DWORD --- GetThreadPriority :: proc(thread: HANDLE) -> c_int --- @@ -135,46 +83,14 @@ foreign kernel32 { CreateSemaphoreW :: proc(attributes: LPSECURITY_ATTRIBUTES, initial_count, maximum_count: LONG, name: LPCWSTR) -> HANDLE --- ReleaseSemaphore :: proc(semaphore: HANDLE, release_count: LONG, previous_count: ^LONG) -> BOOL --- - CreateWaitableTimerW :: proc( - lpTimerAttributes: LPSECURITY_ATTRIBUTES, - bManualReset: BOOL, - lpTimerName: LPCWSTR, - ) -> HANDLE --- - CreateWaitableTimerExW :: proc( - lpTimerAttributes: LPSECURITY_ATTRIBUTES, - lpTimerName: LPCWSTR, - dwFlags: DWORD, - dwDesiredAccess: DWORD, - ) -> HANDLE --- - SetWaitableTimerEx :: proc( - hTimer: HANDLE, - lpDueTime: ^LARGE_INTEGER, - lPeriod: LONG, - pfnCompletionRoutine: PTIMERAPCROUTINE, - lpArgToCompletionRoutine: LPVOID, - WakeContext: PREASON_CONTEXT, - TolerableDelay: ULONG, - ) -> BOOL --- + CreateWaitableTimerW :: proc(lpTimerAttributes: LPSECURITY_ATTRIBUTES, bManualReset: BOOL, lpTimerName: LPCWSTR) -> HANDLE --- + CreateWaitableTimerExW :: proc(lpTimerAttributes: LPSECURITY_ATTRIBUTES, lpTimerName: LPCWSTR, dwFlags: DWORD, dwDesiredAccess: DWORD) -> HANDLE --- + SetWaitableTimerEx :: proc(hTimer: HANDLE, lpDueTime: ^LARGE_INTEGER, lPeriod: LONG, pfnCompletionRoutine: PTIMERAPCROUTINE, lpArgToCompletionRoutine: LPVOID, WakeContext: PREASON_CONTEXT, TolerableDelay: ULONG) -> BOOL --- WaitForSingleObject :: proc(hHandle: HANDLE, dwMilliseconds: DWORD) -> DWORD --- Sleep :: proc(dwMilliseconds: DWORD) --- GetProcessId :: proc(handle: HANDLE) -> DWORD --- - CopyFileExW :: proc( - lpExistingFileName: LPCWSTR, - lpNewFileName: LPCWSTR, - lpProgressRoutine: LPPROGRESS_ROUTINE, - lpData: LPVOID, - pbCancel: LPBOOL, - dwCopyFlags: DWORD, - ) -> BOOL --- - FormatMessageW :: proc( - flags: DWORD, - lpSrc: LPVOID, - msgId: DWORD, - langId: DWORD, - buf: LPWSTR, - nsize: DWORD, - args: rawptr, - ) -> DWORD --- + CopyFileExW :: proc(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, lpProgressRoutine: LPPROGRESS_ROUTINE, lpData: LPVOID, pbCancel: LPBOOL, dwCopyFlags: DWORD) -> BOOL --- + FormatMessageW :: proc(flags: DWORD, lpSrc: LPVOID, msgId: DWORD, langId: DWORD, buf: LPWSTR, nsize: DWORD, args: rawptr) -> DWORD --- TlsAlloc :: proc() -> DWORD --- TlsFree :: proc(dwTlsIndex: DWORD) -> BOOL --- TlsGetValue :: proc(dwTlsIndex: DWORD) -> LPVOID --- @@ -184,89 +100,26 @@ foreign kernel32 { QueryPerformanceCounter :: proc(lpPerformanceCount: ^LARGE_INTEGER) -> BOOL --- GetExitCodeProcess :: proc(hProcess: HANDLE, lpExitCode: LPDWORD) -> BOOL --- TerminateProcess :: proc(hProcess: HANDLE, uExitCode: UINT) -> BOOL --- - CreateProcessW :: proc( - lpApplicationName: LPCWSTR, - lpCommandLine: LPWSTR, - lpProcessAttributes: LPSECURITY_ATTRIBUTES, - lpThreadAttributes: LPSECURITY_ATTRIBUTES, - bInheritHandles: BOOL, - dwCreationFlags: DWORD, - lpEnvironment: LPVOID, - lpCurrentDirectory: LPCWSTR, - lpStartupInfo: LPSTARTUPINFO, - lpProcessInformation: LPPROCESS_INFORMATION, - ) -> BOOL --- + CreateProcessW :: proc(lpApplicationName: LPCWSTR, lpCommandLine: LPWSTR, lpProcessAttributes: LPSECURITY_ATTRIBUTES, lpThreadAttributes: LPSECURITY_ATTRIBUTES, bInheritHandles: BOOL, dwCreationFlags: DWORD, lpEnvironment: LPVOID, lpCurrentDirectory: LPCWSTR, lpStartupInfo: LPSTARTUPINFO, lpProcessInformation: LPPROCESS_INFORMATION) -> BOOL --- GetEnvironmentVariableW :: proc(n: LPCWSTR, v: LPWSTR, nsize: DWORD) -> DWORD --- SetEnvironmentVariableW :: proc(n: LPCWSTR, v: LPCWSTR) -> BOOL --- GetEnvironmentStringsW :: proc() -> LPWCH --- FreeEnvironmentStringsW :: proc(env_ptr: LPWCH) -> BOOL --- GetModuleFileNameW :: proc(hModule: HMODULE, lpFilename: LPWSTR, nSize: DWORD) -> DWORD --- - CreateDirectoryW :: proc( - lpPathName: LPCWSTR, - lpSecurityAttributes: LPSECURITY_ATTRIBUTES, - ) -> BOOL --- + CreateDirectoryW :: proc(lpPathName: LPCWSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES) -> BOOL --- DeleteFileW :: proc(lpPathName: LPCWSTR) -> BOOL --- GetCurrentDirectoryW :: proc(nBufferLength: DWORD, lpBuffer: LPWSTR) -> DWORD --- SetCurrentDirectoryW :: proc(lpPathName: LPCWSTR) -> BOOL --- - WideCharToMultiByte :: proc( - CodePage: UINT, - dwFlags: DWORD, - lpWideCharStr: LPCWSTR, - cchWideChar: c_int, - lpMultiByteStr: LPSTR, - cbMultiByte: c_int, - lpDefaultChar: LPCSTR, - lpUsedDefaultChar: LPBOOL, - ) -> c_int --- - MultiByteToWideChar :: proc( - CodePage: UINT, - dwFlags: DWORD, - lpMultiByteStr: LPSTR, - cbMultiByte: c_int, - lpWideCharStr: LPWSTR, - cchWideChar: c_int, - ) -> c_int --- - DuplicateHandle :: proc( - hSourceProcessHandle: HANDLE, - hSourceHandle: HANDLE, - hTargetProcessHandle: HANDLE, - lpTargetHandle: LPHANDLE, - dwDesiredAccess: DWORD, - bInheritHandle: BOOL, - dwOptions: DWORD, - ) -> BOOL --- - ReadFile :: proc( - hFile: HANDLE, - lpBuffer: LPVOID, - nNumberOfBytesToRead: DWORD, - lpNumberOfBytesRead: LPDWORD, - lpOverlapped: LPOVERLAPPED, - ) -> BOOL --- - WriteFile :: proc( - hFile: HANDLE, - lpBuffer: LPVOID, - nNumberOfBytesToWrite: DWORD, - lpNumberOfBytesWritten: LPDWORD, - lpOverlapped: LPOVERLAPPED, - ) -> BOOL --- + WideCharToMultiByte :: proc(CodePage: UINT, dwFlags: DWORD, lpWideCharStr: LPCWSTR, cchWideChar: c_int, lpMultiByteStr: LPSTR, cbMultiByte: c_int, lpDefaultChar: LPCSTR, lpUsedDefaultChar: LPBOOL) -> c_int --- + MultiByteToWideChar :: proc(CodePage: UINT, dwFlags: DWORD, lpMultiByteStr: LPSTR, cbMultiByte: c_int, lpWideCharStr: LPWSTR, cchWideChar: c_int) -> c_int --- + DuplicateHandle :: proc(hSourceProcessHandle: HANDLE, hSourceHandle: HANDLE, hTargetProcessHandle: HANDLE, lpTargetHandle: LPHANDLE, dwDesiredAccess: DWORD, bInheritHandle: BOOL, dwOptions: DWORD) -> BOOL --- + ReadFile :: proc(hFile: HANDLE, lpBuffer: LPVOID, nNumberOfBytesToRead: DWORD, lpNumberOfBytesRead: LPDWORD, lpOverlapped: LPOVERLAPPED) -> BOOL --- + WriteFile :: proc(hFile: HANDLE, lpBuffer: LPVOID, nNumberOfBytesToWrite: DWORD, lpNumberOfBytesWritten: LPDWORD, lpOverlapped: LPOVERLAPPED) -> BOOL --- CloseHandle :: proc(hObject: HANDLE) -> BOOL --- MoveFileExW :: proc(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, dwFlags: DWORD) -> BOOL --- - SetFilePointerEx :: proc( - hFile: HANDLE, - liDistanceToMove: LARGE_INTEGER, - lpNewFilePointer: PLARGE_INTEGER, - dwMoveMethod: DWORD, - ) -> BOOL --- + SetFilePointerEx :: proc(hFile: HANDLE, liDistanceToMove: LARGE_INTEGER, lpNewFilePointer: PLARGE_INTEGER, dwMoveMethod: DWORD) -> BOOL --- FlushFileBuffers :: proc(hFile: HANDLE) -> BOOL --- - CreateFileW :: proc( - lpFileName: LPCWSTR, - dwDesiredAccess: DWORD, - dwShareMode: DWORD, - lpSecurityAttributes: LPSECURITY_ATTRIBUTES, - dwCreationDisposition: DWORD, - dwFlagsAndAttributes: DWORD, - hTemplateFile: HANDLE, - ) -> HANDLE --- + CreateFileW :: proc(lpFileName: LPCWSTR, dwDesiredAccess: DWORD, dwShareMode: DWORD, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, dwCreationDisposition: DWORD, dwFlagsAndAttributes: DWORD, hTemplateFile: HANDLE) -> HANDLE --- FindFirstFileW :: proc(fileName: LPCWSTR, findFileData: LPWIN32_FIND_DATAW) -> HANDLE --- FindNextFileW :: proc(findFile: HANDLE, findFileData: LPWIN32_FIND_DATAW) -> BOOL --- @@ -276,45 +129,14 @@ foreign kernel32 { GetSystemTimeAsFileTime :: proc(lpSystemTimeAsFileTime: LPFILETIME) --- GetSystemTimePreciseAsFileTime :: proc(lpSystemTimeAsFileTime: LPFILETIME) --- FileTimeToSystemTime :: proc(lpFileTime: ^FILETIME, lpSystemTime: ^SYSTEMTIME) -> BOOL --- - SystemTimeToTzSpecificLocalTime :: proc( - lpTimeZoneInformation: ^TIME_ZONE_INFORMATION, - lpUniversalTime: ^SYSTEMTIME, - lpLocalTime: ^SYSTEMTIME, - ) -> BOOL --- - SystemTimeToFileTime :: proc( - lpSystemTime: ^SYSTEMTIME, - lpFileTime: LPFILETIME, - ) -> BOOL --- - CreateEventW :: proc( - lpEventAttributes: LPSECURITY_ATTRIBUTES, - bManualReset: BOOL, - bInitialState: BOOL, - lpName: LPCWSTR, - ) -> HANDLE --- + SystemTimeToTzSpecificLocalTime :: proc(lpTimeZoneInformation: ^TIME_ZONE_INFORMATION, lpUniversalTime: ^SYSTEMTIME, lpLocalTime: ^SYSTEMTIME) -> BOOL --- + SystemTimeToFileTime :: proc(lpSystemTime: ^SYSTEMTIME, lpFileTime: LPFILETIME) -> BOOL --- + CreateEventW :: proc(lpEventAttributes: LPSECURITY_ATTRIBUTES, bManualReset: BOOL, bInitialState: BOOL, lpName: LPCWSTR) -> HANDLE --- ResetEvent :: proc(hEvent: HANDLE) -> BOOL --- - WaitForMultipleObjects :: proc( - nCount: DWORD, - lpHandles: ^HANDLE, - bWaitAll: BOOL, - dwMilliseconds: DWORD, - ) -> DWORD --- - CreateNamedPipeW :: proc( - lpName: LPCWSTR, - dwOpenMode: DWORD, - dwPipeMode: DWORD, - nMaxInstances: DWORD, - nOutBufferSize: DWORD, - nInBufferSize: DWORD, - nDefaultTimeOut: DWORD, - lpSecurityAttributes: LPSECURITY_ATTRIBUTES, - ) -> HANDLE --- + WaitForMultipleObjects :: proc(nCount: DWORD, lpHandles: ^HANDLE, bWaitAll: BOOL, dwMilliseconds: DWORD) -> DWORD --- + CreateNamedPipeW :: proc(lpName: LPCWSTR, dwOpenMode: DWORD, dwPipeMode: DWORD, nMaxInstances: DWORD, nOutBufferSize: DWORD, nInBufferSize: DWORD, nDefaultTimeOut: DWORD, lpSecurityAttributes: LPSECURITY_ATTRIBUTES) -> HANDLE --- CancelIo :: proc(handle: HANDLE) -> BOOL --- - GetOverlappedResult :: proc( - hFile: HANDLE, - lpOverlapped: LPOVERLAPPED, - lpNumberOfBytesTransferred: LPDWORD, - bWait: BOOL, - ) -> BOOL --- + GetOverlappedResult :: proc(hFile: HANDLE, lpOverlapped: LPOVERLAPPED, lpNumberOfBytesTransferred: LPDWORD, bWait: BOOL) -> BOOL --- GetProcessHeap :: proc() -> HANDLE --- HeapAlloc :: proc(hHeap: HANDLE, dwFlags: DWORD, dwBytes: SIZE_T) -> LPVOID --- HeapReAlloc :: proc(hHeap: HANDLE, dwFlags: DWORD, lpMem: LPVOID, dwBytes: SIZE_T) -> LPVOID --- @@ -325,43 +147,30 @@ foreign kernel32 { LocalFree :: proc(mem: LPVOID) -> LPVOID --- - ReadDirectoryChangesW :: proc( - hDirectory: HANDLE, - lpBuffer: LPVOID, - nBufferLength: DWORD, - bWatchSubtree: BOOL, - dwNotifyFilter: DWORD, - lpBytesReturned: LPDWORD, - lpOverlapped: LPOVERLAPPED, - lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE, - ) -> BOOL --- - FindFirstChangeNotificationW :: proc( - lpPathName: LPWSTR, - bWatchSubtree: BOOL, - dwNotifyFilter: DWORD, - ) -> HANDLE --- + ReadDirectoryChangesW :: proc(hDirectory: HANDLE, lpBuffer: LPVOID, nBufferLength: DWORD, bWatchSubtree: BOOL, dwNotifyFilter: DWORD, lpBytesReturned: LPDWORD, lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE) -> BOOL --- + FindFirstChangeNotificationW :: proc(lpPathName: LPWSTR, bWatchSubtree: BOOL, dwNotifyFilter: DWORD) -> HANDLE --- FindNextChangeNotification :: proc(hChangeHandle: HANDLE) -> BOOL --- FindCloseChangeNotification :: proc(hChangeHandle: HANDLE) -> BOOL --- - InitializeSRWLock :: proc(SRWLock: ^SRWLOCK) --- - AcquireSRWLockExclusive :: proc(SRWLock: ^SRWLOCK) --- + InitializeSRWLock :: proc(SRWLock: ^SRWLOCK) --- + AcquireSRWLockExclusive :: proc(SRWLock: ^SRWLOCK) --- TryAcquireSRWLockExclusive :: proc(SRWLock: ^SRWLOCK) -> BOOLEAN --- - ReleaseSRWLockExclusive :: proc(SRWLock: ^SRWLOCK) --- - AcquireSRWLockShared :: proc(SRWLock: ^SRWLOCK) --- + ReleaseSRWLockExclusive :: proc(SRWLock: ^SRWLOCK) --- + AcquireSRWLockShared :: proc(SRWLock: ^SRWLOCK) --- TryAcquireSRWLockShared :: proc(SRWLock: ^SRWLOCK) -> BOOLEAN --- - ReleaseSRWLockShared :: proc(SRWLock: ^SRWLOCK) --- + ReleaseSRWLockShared :: proc(SRWLock: ^SRWLOCK) --- InitializeConditionVariable :: proc(ConditionVariable: ^CONDITION_VARIABLE) --- - WakeConditionVariable :: proc(ConditionVariable: ^CONDITION_VARIABLE) --- - WakeAllConditionVariable :: proc(ConditionVariable: ^CONDITION_VARIABLE) --- - SleepConditionVariableCS :: proc(ConditionVariable: ^CONDITION_VARIABLE, CriticalSection: ^CRITICAL_SECTION, dwMilliseconds: DWORD) -> BOOL --- - SleepConditionVariableSRW :: proc(ConditionVariable: ^CONDITION_VARIABLE, SRWLock: ^SRWLOCK, dwMilliseconds: DWORD, Flags: LONG) -> BOOL --- + WakeConditionVariable :: proc(ConditionVariable: ^CONDITION_VARIABLE) --- + WakeAllConditionVariable :: proc(ConditionVariable: ^CONDITION_VARIABLE) --- + SleepConditionVariableCS :: proc(ConditionVariable: ^CONDITION_VARIABLE, CriticalSection: ^CRITICAL_SECTION, dwMilliseconds: DWORD) -> BOOL --- + SleepConditionVariableSRW :: proc(ConditionVariable: ^CONDITION_VARIABLE, SRWLock: ^SRWLOCK, dwMilliseconds: DWORD, Flags: LONG) -> BOOL --- GetFileType :: proc(file_handle: HANDLE) -> DWORD --- SetFilePointer :: proc(file_handle: HANDLE, distance_to_move: LONG, distance_to_move_high: ^LONG, move_method: DWORD) -> DWORD --- GetFileSizeEx :: proc(file_handle: HANDLE, file_size: ^LARGE_INTEGER) -> BOOL --- - GetFileAttributesW :: proc(lpFileName: LPCWSTR) -> DWORD --- + GetFileAttributesW :: proc(lpFileName: LPCWSTR) -> DWORD --- GetFileAttributesExW :: proc(lpFileName: LPCWSTR, fInfoLevelId: GET_FILEEX_INFO_LEVELS, lpFileInformation: LPVOID) -> BOOL --- GetSystemInfo :: proc(system_info: ^SYSTEM_INFO) --- GetVersionExW :: proc(osvi: ^OSVERSIONINFOEXW) --- @@ -371,8 +180,8 @@ foreign kernel32 { GetProcAddress :: proc(h: HMODULE, c_str: LPCSTR) -> rawptr --- - GetFullPathNameW :: proc(filename: LPCWSTR, buffer_length: DWORD, buffer: LPCWSTR, file_part: ^LPCWSTR) -> DWORD --- - GetLongPathNameW :: proc(short, long: LPCWSTR, len: DWORD) -> DWORD --- + GetFullPathNameW :: proc(filename: LPCWSTR, buffer_length: DWORD, buffer: LPCWSTR, file_part: ^LPCWSTR) -> DWORD --- + GetLongPathNameW :: proc(short, long: LPCWSTR, len: DWORD) -> DWORD --- GetShortPathNameW :: proc(long, short: LPCWSTR, len: DWORD) -> DWORD --- GetFinalPathNameByHandleW :: proc(hFile: HANDLE, lpszFilePath: LPCWSTR, cchFilePath: DWORD, dwFlags: DWORD) -> DWORD --- @@ -382,9 +191,9 @@ foreign kernel32 { CreatePipe :: proc(hReadPipe, hWritePipe: ^HANDLE, lpPipeAttributes: LPSECURITY_ATTRIBUTES, nSize: DWORD) -> BOOL --- - ConnectNamedPipe :: proc(hNamedPipe: HANDLE, lpOverlapped: LPOVERLAPPED,) -> BOOL --- - DisconnectNamedPipe :: proc(hNamedPipe: HANDLE,) -> BOOL --- - WaitNamedPipeW :: proc(lpNamedPipeName: LPCWSTR, nTimeOut: DWORD,) -> BOOL --- + ConnectNamedPipe :: proc(hNamedPipe: HANDLE, lpOverlapped: LPOVERLAPPED) -> BOOL --- + DisconnectNamedPipe :: proc(hNamedPipe: HANDLE) -> BOOL --- + WaitNamedPipeW :: proc(lpNamedPipeName: LPCWSTR, nTimeOut: DWORD) -> BOOL --- SetConsoleCtrlHandler :: proc(HandlerRoutine: PHANDLER_ROUTINE, Add: BOOL) -> BOOL --- GenerateConsoleCtrlEvent :: proc(dwCtrlEvent: DWORD, dwProcessGroupId: DWORD) -> BOOL --- @@ -392,16 +201,11 @@ foreign kernel32 { GetConsoleWindow :: proc() -> HWND --- GetConsoleScreenBufferInfo :: proc(hConsoleOutput: HANDLE, lpConsoleScreenBufferInfo: PCONSOLE_SCREEN_BUFFER_INFO) -> BOOL --- SetConsoleScreenBufferSize :: proc(hConsoleOutput: HANDLE, dwSize: COORD) -> BOOL --- - SetConsoleWindowInfo :: proc(hConsoleOutput: HANDLE, bAbsolute : BOOL, lpConsoleWindow: ^SMALL_RECT) -> BOOL --- + SetConsoleWindowInfo :: proc(hConsoleOutput: HANDLE, bAbsolute: BOOL, lpConsoleWindow: ^SMALL_RECT) -> BOOL --- GetConsoleCursorInfo :: proc(hConsoleOutput: HANDLE, lpConsoleCursorInfo: PCONSOLE_CURSOR_INFO) -> BOOL --- SetConsoleCursorInfo :: proc(hConsoleOutput: HANDLE, lpConsoleCursorInfo: PCONSOLE_CURSOR_INFO) -> BOOL --- - GetDiskFreeSpaceExW :: proc( - lpDirectoryName: LPCWSTR, - lpFreeBytesAvailableToCaller: PULARGE_INTEGER, - lpTotalNumberOfBytes: PULARGE_INTEGER, - lpTotalNumberOfFreeBytes: PULARGE_INTEGER, - ) -> BOOL --- + GetDiskFreeSpaceExW :: proc(lpDirectoryName: LPCWSTR, lpFreeBytesAvailableToCaller: PULARGE_INTEGER, lpTotalNumberOfBytes: PULARGE_INTEGER, lpTotalNumberOfFreeBytes: PULARGE_INTEGER) -> BOOL --- GetLogicalProcessorInformation :: proc(buffer: ^SYSTEM_LOGICAL_PROCESSOR_INFORMATION, returnedLength: PDWORD) -> BOOL --- @@ -419,197 +223,94 @@ foreign kernel32 { GetTickCount64 :: proc() -> u64 --- // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/handleapi/nf-handleapi-gethandleinformation) GetHandleInformation :: proc(hObject: HANDLE, lpdwFlags: ^DWORD) -> BOOL --- - //[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 --- } -SECTION_QUERY :: DWORD(0x0001) -SECTION_MAP_WRITE :: DWORD(0x0002) -SECTION_MAP_READ :: DWORD(0x0004) -SECTION_MAP_EXECUTE :: DWORD(0x0008) -SECTION_EXTEND_SIZE :: DWORD(0x0010) -SECTION_ALL_ACCESS :: STANDARD_RIGHTS_REQUIRED | SECTION_QUERY | SECTION_MAP_WRITE | SECTION_MAP_READ | SECTION_MAP_EXECUTE | SECTION_EXTEND_SIZE +SECTION_QUERY :: DWORD(0x0001) +SECTION_MAP_WRITE :: DWORD(0x0002) +SECTION_MAP_READ :: DWORD(0x0004) +SECTION_MAP_EXECUTE :: DWORD(0x0008) +SECTION_EXTEND_SIZE :: DWORD(0x0010) +SECTION_ALL_ACCESS :: + STANDARD_RIGHTS_REQUIRED | + SECTION_QUERY | + SECTION_MAP_WRITE | + SECTION_MAP_READ | + SECTION_MAP_EXECUTE | + SECTION_EXTEND_SIZE SECTION_MAP_EXECUTE_EXPLICIT :: DWORD(0x0020) -FILE_MAP_WRITE :: SECTION_MAP_WRITE -FILE_MAP_READ :: SECTION_MAP_READ -FILE_MAP_ALL_ACCESS :: SECTION_ALL_ACCESS -FILE_MAP_EXECUTE :: SECTION_MAP_EXECUTE_EXPLICIT -FILE_MAP_COPY :: DWORD(0x00000001) -FILE_MAP_RESERVE :: DWORD(0x80000000) +FILE_MAP_WRITE :: SECTION_MAP_WRITE +FILE_MAP_READ :: SECTION_MAP_READ +FILE_MAP_ALL_ACCESS :: SECTION_ALL_ACCESS +FILE_MAP_EXECUTE :: SECTION_MAP_EXECUTE_EXPLICIT +FILE_MAP_COPY :: DWORD(0x00000001) +FILE_MAP_RESERVE :: DWORD(0x80000000) FILE_MAP_TARGETS_INVALID :: DWORD(0x40000000) -FILE_MAP_LARGE_PAGES :: DWORD(0x20000000) +FILE_MAP_LARGE_PAGES :: DWORD(0x20000000) -PAGE_NOACCESS :: 0x01 -PAGE_READONLY :: 0x02 -PAGE_READWRITE :: 0x04 -PAGE_WRITECOPY :: 0x08 -PAGE_EXECUTE :: 0x10 -PAGE_EXECUTE_READ :: 0x20 +PAGE_NOACCESS :: 0x01 +PAGE_READONLY :: 0x02 +PAGE_READWRITE :: 0x04 +PAGE_WRITECOPY :: 0x08 +PAGE_EXECUTE :: 0x10 +PAGE_EXECUTE_READ :: 0x20 PAGE_EXECUTE_READWRITE :: 0x40 PAGE_EXECUTE_WRITECOPY :: 0x80 -PAGE_GUARD :: 0x100 -PAGE_NOCACHE :: 0x200 -PAGE_WRITECOMBINE :: 0x400 +PAGE_GUARD :: 0x100 +PAGE_NOCACHE :: 0x200 +PAGE_WRITECOMBINE :: 0x400 MEMORY_BASIC_INFORMATION :: struct { - BaseAddress: PVOID, - AllocationBase: PVOID, + BaseAddress: PVOID, + AllocationBase: PVOID, AllocationProtect: DWORD, - PartitionId: WORD, - RegionSize: SIZE_T, - State: DWORD, - Protect: DWORD, - Type: DWORD, + PartitionId: WORD, + RegionSize: SIZE_T, + State: DWORD, + Protect: DWORD, + Type: DWORD, } PMEMORY_BASIC_INFORMATION :: ^MEMORY_BASIC_INFORMATION LPMEMORY_BASIC_INFORMATION :: ^MEMORY_BASIC_INFORMATION -MEM_COMMIT :: 0x1000 -MEM_RESERVE :: 0x2000 -MEM_DECOMMIT :: 0x4000 -MEM_RELEASE :: 0x8000 -MEM_FREE :: 0x10000 -MEM_PRIVATE :: 0x20000 -MEM_MAPPED :: 0x40000 -MEM_RESET :: 0x80000 -MEM_TOP_DOWN :: 0x100000 +MEM_COMMIT :: 0x1000 +MEM_RESERVE :: 0x2000 +MEM_DECOMMIT :: 0x4000 +MEM_RELEASE :: 0x8000 +MEM_FREE :: 0x10000 +MEM_PRIVATE :: 0x20000 +MEM_MAPPED :: 0x40000 +MEM_RESET :: 0x80000 +MEM_TOP_DOWN :: 0x100000 MEM_LARGE_PAGES :: 0x20000000 -MEM_4MB_PAGES :: 0x80000000 +MEM_4MB_PAGES :: 0x80000000 -@(default_calling_convention="stdcall") +@(default_calling_convention = "stdcall") foreign kernel32 { - VirtualAlloc :: proc( - lpAddress: LPVOID, - dwSize: SIZE_T, - flAllocationType: DWORD, - flProtect: DWORD, - ) -> LPVOID --- - VirtualProtect :: proc( - lpAddress: LPVOID, - dwSize: SIZE_T, - flNewProtect: DWORD, - lpflOldProtect: PDWORD, - ) -> BOOL --- - VirtualFree :: proc( - lpAddress: LPVOID, - dwSize: SIZE_T, - dwFreeType: DWORD, - ) -> BOOL --- - VirtualQuery :: proc( - lpAddress: LPCVOID, - lpBuffer: PMEMORY_BASIC_INFORMATION, - dwLength: SIZE_T, - ) -> SIZE_T --- - VirtualAllocEx :: proc( - hProcess: HANDLE, - lpAddress: LPVOID, - dwSize: SIZE_T, - flAllocationType: DWORD, - flProtect: DWORD, - ) -> LPVOID --- - VirtualFreeEx :: proc( - hProcess: HANDLE, - lpAddress: LPVOID, - dwSize: SIZE_T, - dwFreeType: DWORD, - ) -> BOOL --- - VirtualProtectEx :: proc( - hProcess: HANDLE, - lpAddress: LPVOID, - dwSize: SIZE_T, - flNewProtect: DWORD, - lpflOldProtect: PDWORD, - ) -> BOOL --- - VirtualQueryEx :: proc( - hProcess: HANDLE, - lpAddress: LPCVOID, - lpBuffer: PMEMORY_BASIC_INFORMATION, - dwLength: SIZE_T, - ) -> SIZE_T --- - ReadProcessMemory :: proc( - hProcess: HANDLE, - lpBaseAddress: LPCVOID, - lpBuffer: LPVOID, - nSize: SIZE_T, - lpNumberOfBytesRead: ^SIZE_T, - ) -> BOOL --- - WriteProcessMemory :: proc( - hProcess: HANDLE, - lpBaseAddress: LPVOID, - lpBuffer: LPCVOID, - nSize: SIZE_T, - lpNumberOfBytesWritten: ^SIZE_T, - ) -> BOOL --- - CreateFileMappingW :: proc( - hFile: HANDLE, - lpFileMappingAttributes: LPSECURITY_ATTRIBUTES, - flProtect: DWORD, - dwMaximumSizeHigh: DWORD, - dwMaximumSizeLow: DWORD, - lpName: LPCWSTR, - ) -> HANDLE --- - OpenFileMappingW :: proc( - dwDesiredAccess: DWORD, - bInheritHandle: BOOL, - lpName: LPCWSTR, - ) -> HANDLE --- - MapViewOfFile :: proc( - hFileMappingObject: HANDLE, - dwDesiredAccess: DWORD, - dwFileOffsetHigh: DWORD, - dwFileOffsetLow: DWORD, - dwNumberOfBytesToMap: SIZE_T, - ) -> LPVOID --- - MapViewOfFileEx :: proc( - hFileMappingObject: HANDLE, - dwDesiredAccess: DWORD, - dwFileOffsetHigh: DWORD, - dwFileOffsetLow: DWORD, - dwNumberOfBytesToMap: SIZE_T, - lpBaseAddress: LPVOID, - ) -> LPVOID --- - FlushViewOfFile :: proc( - lpBaseAddress: LPCVOID, - dwNumberOfBytesToFlush: SIZE_T, - ) -> BOOL --- - UnmapViewOfFile :: proc( - lpBaseAddress: LPCVOID, - ) -> BOOL --- + VirtualAlloc :: proc(lpAddress: LPVOID, dwSize: SIZE_T, flAllocationType: DWORD, flProtect: DWORD) -> LPVOID --- + VirtualProtect :: proc(lpAddress: LPVOID, dwSize: SIZE_T, flNewProtect: DWORD, lpflOldProtect: PDWORD) -> BOOL --- + VirtualFree :: proc(lpAddress: LPVOID, dwSize: SIZE_T, dwFreeType: DWORD) -> BOOL --- + VirtualQuery :: proc(lpAddress: LPCVOID, lpBuffer: PMEMORY_BASIC_INFORMATION, dwLength: SIZE_T) -> SIZE_T --- + VirtualAllocEx :: proc(hProcess: HANDLE, lpAddress: LPVOID, dwSize: SIZE_T, flAllocationType: DWORD, flProtect: DWORD) -> LPVOID --- + VirtualFreeEx :: proc(hProcess: HANDLE, lpAddress: LPVOID, dwSize: SIZE_T, dwFreeType: DWORD) -> BOOL --- + VirtualProtectEx :: proc(hProcess: HANDLE, lpAddress: LPVOID, dwSize: SIZE_T, flNewProtect: DWORD, lpflOldProtect: PDWORD) -> BOOL --- + VirtualQueryEx :: proc(hProcess: HANDLE, lpAddress: LPCVOID, lpBuffer: PMEMORY_BASIC_INFORMATION, dwLength: SIZE_T) -> SIZE_T --- + ReadProcessMemory :: proc(hProcess: HANDLE, lpBaseAddress: LPCVOID, lpBuffer: LPVOID, nSize: SIZE_T, lpNumberOfBytesRead: ^SIZE_T) -> BOOL --- + WriteProcessMemory :: proc(hProcess: HANDLE, lpBaseAddress: LPVOID, lpBuffer: LPCVOID, nSize: SIZE_T, lpNumberOfBytesWritten: ^SIZE_T) -> BOOL --- + CreateFileMappingW :: proc(hFile: HANDLE, lpFileMappingAttributes: LPSECURITY_ATTRIBUTES, flProtect: DWORD, dwMaximumSizeHigh: DWORD, dwMaximumSizeLow: DWORD, lpName: LPCWSTR) -> HANDLE --- + OpenFileMappingW :: proc(dwDesiredAccess: DWORD, bInheritHandle: BOOL, lpName: LPCWSTR) -> HANDLE --- + MapViewOfFile :: proc(hFileMappingObject: HANDLE, dwDesiredAccess: DWORD, dwFileOffsetHigh: DWORD, dwFileOffsetLow: DWORD, dwNumberOfBytesToMap: SIZE_T) -> LPVOID --- + MapViewOfFileEx :: proc(hFileMappingObject: HANDLE, dwDesiredAccess: DWORD, dwFileOffsetHigh: DWORD, dwFileOffsetLow: DWORD, dwNumberOfBytesToMap: SIZE_T, lpBaseAddress: LPVOID) -> LPVOID --- + FlushViewOfFile :: proc(lpBaseAddress: LPCVOID, dwNumberOfBytesToFlush: SIZE_T) -> BOOL --- + UnmapViewOfFile :: proc(lpBaseAddress: LPCVOID) -> BOOL --- GetLargePageMinimum :: proc() -> SIZE_T --- - GetProcessWorkingSetSizeEx :: proc( - hProcess: HANDLE, - lpMinimumWorkingSetSize: PSIZE_T, - lpMaximumWorkingSetSize: PSIZE_T, - Flags: PDWORD, - ) -> BOOL --- - SetProcessWorkingSetSizeEx :: proc( - hProcess: HANDLE, - dwMinimumWorkingSetSize: SIZE_T, - dwMaximumWorkingSetSize: SIZE_T, - Flags: DWORD, - ) -> BOOL --- - VirtualLock :: proc( - lpAddress: LPVOID, - dwSize: SIZE_T, - ) -> BOOL --- - VirtualUnlock :: proc( - lpAddress: LPVOID, - dwSize: SIZE_T, - ) -> BOOL --- - GetWriteWatch :: proc( - dwFlags: DWORD, - lpBaseAddress: PVOID, - dwRegionSize: SIZE_T, - lpAddresses: ^PVOID, - lpdwCount: ^ULONG_PTR, - lpdwGranularity: LPDWORD, - ) -> UINT --- - ResetWriteWatch :: proc( - lpBaseAddress: LPVOID, - dwRegionSize: SIZE_T, - ) -> UINT --- + GetProcessWorkingSetSizeEx :: proc(hProcess: HANDLE, lpMinimumWorkingSetSize: PSIZE_T, lpMaximumWorkingSetSize: PSIZE_T, Flags: PDWORD) -> BOOL --- + SetProcessWorkingSetSizeEx :: proc(hProcess: HANDLE, dwMinimumWorkingSetSize: SIZE_T, dwMaximumWorkingSetSize: SIZE_T, Flags: DWORD) -> BOOL --- + VirtualLock :: proc(lpAddress: LPVOID, dwSize: SIZE_T) -> BOOL --- + VirtualUnlock :: proc(lpAddress: LPVOID, dwSize: SIZE_T) -> BOOL --- + GetWriteWatch :: proc(dwFlags: DWORD, lpBaseAddress: PVOID, dwRegionSize: SIZE_T, lpAddresses: ^PVOID, lpdwCount: ^ULONG_PTR, lpdwGranularity: LPDWORD) -> UINT --- + ResetWriteWatch :: proc(lpBaseAddress: LPVOID, dwRegionSize: SIZE_T) -> UINT --- } @@ -617,138 +318,66 @@ MEMORY_RESOURCE_NOTIFICATION_TYPE :: enum c_int { LowMemoryResourceNotification, HighMemoryResourceNotification, } -LowMemoryResourceNotification :: MEMORY_RESOURCE_NOTIFICATION_TYPE.LowMemoryResourceNotification +LowMemoryResourceNotification :: MEMORY_RESOURCE_NOTIFICATION_TYPE.LowMemoryResourceNotification HighMemoryResourceNotification :: MEMORY_RESOURCE_NOTIFICATION_TYPE.HighMemoryResourceNotification -@(default_calling_convention="stdcall") +@(default_calling_convention = "stdcall") foreign kernel32 { - CreateMemoryResourceNotification :: proc( - NotificationType: MEMORY_RESOURCE_NOTIFICATION_TYPE, - ) -> HANDLE --- - QueryMemoryResourceNotification :: proc( - ResourceNotificationHandle: HANDLE, - ResourceState: PBOOL, - ) -> BOOL --- + CreateMemoryResourceNotification :: proc(NotificationType: MEMORY_RESOURCE_NOTIFICATION_TYPE) -> HANDLE --- + QueryMemoryResourceNotification :: proc(ResourceNotificationHandle: HANDLE, ResourceState: PBOOL) -> BOOL --- } -FILE_CACHE_MAX_HARD_ENABLE :: DWORD(0x00000001) +FILE_CACHE_MAX_HARD_ENABLE :: DWORD(0x00000001) FILE_CACHE_MAX_HARD_DISABLE :: DWORD(0x00000002) -FILE_CACHE_MIN_HARD_ENABLE :: DWORD(0x00000004) +FILE_CACHE_MIN_HARD_ENABLE :: DWORD(0x00000004) FILE_CACHE_MIN_HARD_DISABLE :: DWORD(0x00000008) -@(default_calling_convention="stdcall") +@(default_calling_convention = "stdcall") foreign kernel32 { - GetSystemFileCacheSize :: proc( - lpMinimumFileCacheSize: PSIZE_T, - lpMaximumFileCacheSize: PSIZE_T, - lpFlags: PDWORD, - ) -> BOOL --- - SetSystemFileCacheSize :: proc( - MinimumFileCacheSize: SIZE_T, - MaximumFileCacheSize: SIZE_T, - Flags: DWORD, - ) -> BOOL --- - CreateFileMappingNumaW :: proc( - hFile: HANDLE, - lpFileMappingAttributes: LPSECURITY_ATTRIBUTES, - flProtect: DWORD, - dwMaximumSizeHigh: DWORD, - dwMaximumSizeLow: DWORD, - lpName: LPCWSTR, - nndPreferred: DWORD, - ) -> HANDLE --- + GetSystemFileCacheSize :: proc(lpMinimumFileCacheSize: PSIZE_T, lpMaximumFileCacheSize: PSIZE_T, lpFlags: PDWORD) -> BOOL --- + SetSystemFileCacheSize :: proc(MinimumFileCacheSize: SIZE_T, MaximumFileCacheSize: SIZE_T, Flags: DWORD) -> BOOL --- + CreateFileMappingNumaW :: proc(hFile: HANDLE, lpFileMappingAttributes: LPSECURITY_ATTRIBUTES, flProtect: DWORD, dwMaximumSizeHigh: DWORD, dwMaximumSizeLow: DWORD, lpName: LPCWSTR, nndPreferred: DWORD) -> HANDLE --- } WIN32_MEMORY_RANGE_ENTRY :: struct { VirtualAddress: PVOID, - NumberOfBytes: SIZE_T, + NumberOfBytes: SIZE_T, } PWIN32_MEMORY_RANGE_ENTRY :: ^WIN32_MEMORY_RANGE_ENTRY -@(default_calling_convention="stdcall") +@(default_calling_convention = "stdcall") foreign kernel32 { - PrefetchVirtualMemory :: proc( - hProcess: HANDLE, - NumberOfEntries: ULONG_PTR, - VirtualAddresses: PWIN32_MEMORY_RANGE_ENTRY, - Flags: ULONG, - ) -> BOOL --- - CreateFileMappingFromApp :: proc( - hFile: HANDLE, - SecurityAttributes: PSECURITY_ATTRIBUTES, - PageProtection: ULONG, - MaximumSize: ULONG64, - Name: PCWSTR, - ) -> HANDLE --- - MapViewOfFileFromApp :: proc( - hFileMappingObject: HANDLE, - DesiredAccess: ULONG, - FileOffset: ULONG64, - NumberOfBytesToMap: SIZE_T, - ) -> PVOID --- - UnmapViewOfFileEx :: proc( - BaseAddress: PVOID, - UnmapFlags: ULONG, - ) -> BOOL --- - AllocateUserPhysicalPages :: proc( - hProcess: HANDLE, - NumberOfPages: PULONG_PTR, - PageArray: PULONG_PTR, - ) -> BOOL --- - FreeUserPhysicalPages :: proc( - hProcess: HANDLE, - NumberOfPages: PULONG_PTR, - PageArray: PULONG_PTR, - ) -> BOOL --- - MapUserPhysicalPages :: proc( - VirtualAddress: PVOID, - NumberOfPages: ULONG_PTR, - PageArray: PULONG_PTR, - ) -> BOOL --- - AllocateUserPhysicalPagesNuma :: proc( - hProcess: HANDLE, - NumberOfPages: PULONG_PTR, - PageArray: PULONG_PTR, - nndPreferred: DWORD, - ) -> BOOL --- - VirtualAllocExNuma :: proc( - hProcess: HANDLE, - lpAddress: LPVOID, - dwSize: SIZE_T, - flAllocationType: DWORD, - flProtect: DWORD, - nndPreferred: DWORD, - ) -> LPVOID --- + PrefetchVirtualMemory :: proc(hProcess: HANDLE, NumberOfEntries: ULONG_PTR, VirtualAddresses: PWIN32_MEMORY_RANGE_ENTRY, Flags: ULONG) -> BOOL --- + CreateFileMappingFromApp :: proc(hFile: HANDLE, SecurityAttributes: PSECURITY_ATTRIBUTES, PageProtection: ULONG, MaximumSize: ULONG64, Name: PCWSTR) -> HANDLE --- + MapViewOfFileFromApp :: proc(hFileMappingObject: HANDLE, DesiredAccess: ULONG, FileOffset: ULONG64, NumberOfBytesToMap: SIZE_T) -> PVOID --- + UnmapViewOfFileEx :: proc(BaseAddress: PVOID, UnmapFlags: ULONG) -> BOOL --- + AllocateUserPhysicalPages :: proc(hProcess: HANDLE, NumberOfPages: PULONG_PTR, PageArray: PULONG_PTR) -> BOOL --- + FreeUserPhysicalPages :: proc(hProcess: HANDLE, NumberOfPages: PULONG_PTR, PageArray: PULONG_PTR) -> BOOL --- + MapUserPhysicalPages :: proc(VirtualAddress: PVOID, NumberOfPages: ULONG_PTR, PageArray: PULONG_PTR) -> BOOL --- + AllocateUserPhysicalPagesNuma :: proc(hProcess: HANDLE, NumberOfPages: PULONG_PTR, PageArray: PULONG_PTR, nndPreferred: DWORD) -> BOOL --- + VirtualAllocExNuma :: proc(hProcess: HANDLE, lpAddress: LPVOID, dwSize: SIZE_T, flAllocationType: DWORD, flProtect: DWORD, nndPreferred: DWORD) -> LPVOID --- } MEHC_PATROL_SCRUBBER_PRESENT :: ULONG(0x1) -@(default_calling_convention="stdcall") +@(default_calling_convention = "stdcall") foreign kernel32 { - GetMemoryErrorHandlingCapabilities :: proc( - Capabilities: PULONG, - ) -> BOOL --- + GetMemoryErrorHandlingCapabilities :: proc(Capabilities: PULONG) -> BOOL --- } -@(default_calling_convention="stdcall") +@(default_calling_convention = "stdcall") foreign kernel32 { - GlobalMemoryStatusEx :: proc( - lpBuffer: ^MEMORYSTATUSEX, - ) -> BOOL --- + GlobalMemoryStatusEx :: proc(lpBuffer: ^MEMORYSTATUSEX) -> BOOL --- } PBAD_MEMORY_CALLBACK_ROUTINE :: #type proc "stdcall" () -@(default_calling_convention="stdcall") +@(default_calling_convention = "stdcall") foreign kernel32 { - RegisterBadMemoryNotification :: proc( - Callback: PBAD_MEMORY_CALLBACK_ROUTINE, - ) -> PVOID --- - UnregisterBadMemoryNotification :: proc( - RegistrationHandle: PVOID, - ) -> BOOL --- + RegisterBadMemoryNotification :: proc(Callback: PBAD_MEMORY_CALLBACK_ROUTINE) -> PVOID --- + UnregisterBadMemoryNotification :: proc(RegistrationHandle: PVOID) -> BOOL --- } OFFER_PRIORITY :: enum c_int { @@ -757,43 +386,19 @@ OFFER_PRIORITY :: enum c_int { VmOfferPriorityBelowNormal, VmOfferPriorityNormal, } -VmOfferPriorityVeryLow :: OFFER_PRIORITY.VmOfferPriorityVeryLow -VmOfferPriorityLow :: OFFER_PRIORITY.VmOfferPriorityLow +VmOfferPriorityVeryLow :: OFFER_PRIORITY.VmOfferPriorityVeryLow +VmOfferPriorityLow :: OFFER_PRIORITY.VmOfferPriorityLow VmOfferPriorityBelowNormal :: OFFER_PRIORITY.VmOfferPriorityBelowNormal -VmOfferPriorityNormal :: OFFER_PRIORITY.VmOfferPriorityNormal +VmOfferPriorityNormal :: OFFER_PRIORITY.VmOfferPriorityNormal -@(default_calling_convention="stdcall") +@(default_calling_convention = "stdcall") foreign kernel32 { - OfferVirtualMemory :: proc( - VirtualAddress: PVOID, - Size: SIZE_T, - Priority: OFFER_PRIORITY, - ) -> DWORD --- - ReclaimVirtualMemory :: proc( - VirtualAddress: PVOID, - Size: SIZE_T, - ) -> DWORD --- - DiscardVirtualMemory :: proc( - VirtualAddress: PVOID, - Size: SIZE_T, - ) -> DWORD --- - VirtualAllocFromApp :: proc( - BaseAddress: PVOID, - Size: SIZE_T, - AllocationType: ULONG, - Protection: ULONG, - ) -> PVOID --- - VirtualProtectFromApp :: proc( - Address: PVOID, - Size: SIZE_T, - NewProtection: ULONG, - OldProtection: PULONG, - ) -> BOOL --- - OpenFileMappingFromApp :: proc( - DesiredAccess: ULONG, - InheritHandle: BOOL, - Name: PCWSTR, - ) -> HANDLE --- + OfferVirtualMemory :: proc(VirtualAddress: PVOID, Size: SIZE_T, Priority: OFFER_PRIORITY) -> DWORD --- + ReclaimVirtualMemory :: proc(VirtualAddress: PVOID, Size: SIZE_T) -> DWORD --- + DiscardVirtualMemory :: proc(VirtualAddress: PVOID, Size: SIZE_T) -> DWORD --- + VirtualAllocFromApp :: proc(BaseAddress: PVOID, Size: SIZE_T, AllocationType: ULONG, Protection: ULONG) -> PVOID --- + VirtualProtectFromApp :: proc(Address: PVOID, Size: SIZE_T, NewProtection: ULONG, OldProtection: PULONG) -> BOOL --- + OpenFileMappingFromApp :: proc(DesiredAccess: ULONG, InheritHandle: BOOL, Name: PCWSTR) -> HANDLE --- } WIN32_MEMORY_INFORMATION_CLASS :: enum c_int { @@ -802,16 +407,16 @@ WIN32_MEMORY_INFORMATION_CLASS :: enum c_int { MemoryRegionInfo :: WIN32_MEMORY_INFORMATION_CLASS.MemoryRegionInfo WIN32_MEMORY_REGION_INFORMATION :: struct { - AllocationBase: PVOID, + AllocationBase: PVOID, AllocationProtect: ULONG, - u: WIN32_MEMORY_REGION_INFORMATION_u, - RegionSize: SIZE_T, - CommitSize: SIZE_T, + u: WIN32_MEMORY_REGION_INFORMATION_u, + RegionSize: SIZE_T, + CommitSize: SIZE_T, } WIN32_MEMORY_REGION_INFORMATION_u :: struct #raw_union { - u: [1]u32, + u: [1]u32, Flags: ULONG, - s: WIN32_MEMORY_REGION_INFORMATION_u_s, + s: WIN32_MEMORY_REGION_INFORMATION_u_s, } WIN32_MEMORY_REGION_INFORMATION_u_s :: struct { Bitfield: ULONG, @@ -827,26 +432,10 @@ WIN32_MEMORY_REGION_INFORMATION_u_s_Bitfield :: distinct ULONG Reserved : 32-6, }*/ -@(default_calling_convention="stdcall") +@(default_calling_convention = "stdcall") foreign kernel32 { - QueryVirtualMemoryInformation :: proc( - Process: HANDLE, - VirtualAddress: PVOID, - MemoryInformationClass: WIN32_MEMORY_INFORMATION_CLASS, - MemoryInformation: PVOID, - MemoryInformationSize: SIZE_T, - ReturnSize: PSIZE_T, - ) -> BOOL --- - MapViewOfFileNuma2 :: proc( - FileMappingHandle: HANDLE, - ProcessHandle: HANDLE, - Offset: ULONG64, - BaseAddress: PVOID, - ViewSize: SIZE_T, - AllocationType: ULONG, - PageProtection: ULONG, - PreferredNode: ULONG, - ) -> PVOID --- + QueryVirtualMemoryInformation :: proc(Process: HANDLE, VirtualAddress: PVOID, MemoryInformationClass: WIN32_MEMORY_INFORMATION_CLASS, MemoryInformation: PVOID, MemoryInformationSize: SIZE_T, ReturnSize: PSIZE_T) -> BOOL --- + MapViewOfFileNuma2 :: proc(FileMappingHandle: HANDLE, ProcessHandle: HANDLE, Offset: ULONG64, BaseAddress: PVOID, ViewSize: SIZE_T, AllocationType: ULONG, PageProtection: ULONG, PreferredNode: ULONG) -> PVOID --- } @@ -873,57 +462,45 @@ MapViewOfFile2 :: #force_inline proc "stdcall" ( ) } -@(default_calling_convention="stdcall") +@(default_calling_convention = "stdcall") foreign kernel32 { - UnmapViewOfFile2 :: proc( - ProcessHandle: HANDLE, - BaseAddress: PVOID, - UnmapFlags: ULONG, - ) -> BOOL --- + UnmapViewOfFile2 :: proc(ProcessHandle: HANDLE, BaseAddress: PVOID, UnmapFlags: ULONG) -> BOOL --- } -@(default_calling_convention="stdcall") +@(default_calling_convention = "stdcall") foreign kernel32 { - GetProductInfo :: proc( - OSMajorVersion: DWORD, - OSMinorVersion: DWORD, - SpMajorVersion: DWORD, - SpMinorVersion: DWORD, - product_type: ^Windows_Product_Type, - ) -> BOOL --- + GetProductInfo :: proc(OSMajorVersion: DWORD, OSMinorVersion: DWORD, SpMajorVersion: DWORD, SpMinorVersion: DWORD, product_type: ^Windows_Product_Type) -> BOOL --- } HandlerRoutine :: proc "stdcall" (dwCtrlType: DWORD) -> BOOL PHANDLER_ROUTINE :: HandlerRoutine - - DCB_Config :: struct { - fParity: bool, - fOutxCtsFlow: bool, - fOutxDsrFlow: bool, - fDtrControl: DTR_Control, - fDsrSensitivity: bool, + fParity: bool, + fOutxCtsFlow: bool, + fOutxDsrFlow: bool, + fDtrControl: DTR_Control, + fDsrSensitivity: bool, fTXContinueOnXoff: bool, - fOutX: bool, - fInX: bool, - fErrorChar: bool, - fNull: bool, - fRtsControl: RTS_Control, - fAbortOnError: bool, - BaudRate: DWORD, - ByteSize: BYTE, - Parity: Parity, - StopBits: Stop_Bits, - XonChar: byte, - XoffChar: byte, - ErrorChar: byte, - EvtChar: byte, + fOutX: bool, + fInX: bool, + fErrorChar: bool, + fNull: bool, + fRtsControl: RTS_Control, + fAbortOnError: bool, + BaudRate: DWORD, + ByteSize: BYTE, + Parity: Parity, + StopBits: Stop_Bits, + XonChar: byte, + XoffChar: byte, + ErrorChar: byte, + EvtChar: byte, } DTR_Control :: enum byte { - Disable = 0, - Enable = 1, + Disable = 0, + Enable = 1, Handshake = 2, } RTS_Control :: enum byte { @@ -940,9 +517,9 @@ Parity :: enum byte { Space = 4, } Stop_Bits :: enum byte { - One = 0, + One = 0, One_And_A_Half = 1, - Two = 2, + Two = 2, } // A helper procedure to set the values of a DCB structure. @@ -1017,24 +594,24 @@ get_dcb_config :: proc "contextless" (dcb: DCB) -> (config: DCB_Config) { // NOTE(tetra): See get_dcb_config() and init_dcb_with_config() for help with initializing this. DCB :: struct { - DCBlength: DWORD, // NOTE(tetra): Must be set to size_of(DCB). - BaudRate: DWORD, - settings: u32, // NOTE(tetra): These are bitfields in the C struct. - wReserved: WORD, - XOnLim: WORD, - XOffLim: WORD, - ByteSize: BYTE, - Parity: Parity, - StopBits: Stop_Bits, - XonChar: byte, - XoffChar: byte, - ErrorChar: byte, - EofChar: byte, - EvtChar: byte, + DCBlength: DWORD, // NOTE(tetra): Must be set to size_of(DCB). + BaudRate: DWORD, + settings: u32, // NOTE(tetra): These are bitfields in the C struct. + wReserved: WORD, + XOnLim: WORD, + XOffLim: WORD, + ByteSize: BYTE, + Parity: Parity, + StopBits: Stop_Bits, + XonChar: byte, + XoffChar: byte, + ErrorChar: byte, + EofChar: byte, + EvtChar: byte, wReserved1: WORD, } -@(default_calling_convention="stdcall") +@(default_calling_convention = "stdcall") foreign kernel32 { GetCommState :: proc(handle: HANDLE, dcb: ^DCB) -> BOOL --- SetCommState :: proc(handle: HANDLE, dcb: ^DCB) -> BOOL --- @@ -1071,11 +648,11 @@ PROCESSOR_CACHE_TYPE :: enum c_int { } CACHE_DESCRIPTOR :: struct { - Level: BYTE, + Level: BYTE, Associativity: BYTE, - LineSize: WORD, - Size: DWORD, - Type: PROCESSOR_CACHE_TYPE, + LineSize: WORD, + Size: DWORD, + Type: PROCESSOR_CACHE_TYPE, } ProcessorCore :: struct { @@ -1085,14 +662,14 @@ NumaNode :: struct { NodeNumber: DWORD, } DUMMYUNIONNAME_u :: struct #raw_union { - Core: ProcessorCore, - Node: NumaNode, - Cache: CACHE_DESCRIPTOR, + Core: ProcessorCore, + Node: NumaNode, + Cache: CACHE_DESCRIPTOR, Reserved: [2]ULONGLONG, } SYSTEM_LOGICAL_PROCESSOR_INFORMATION :: struct { ProcessorMask: ULONG_PTR, - Relationship: LOGICAL_PROCESSOR_RELATIONSHIP, - DummyUnion: DUMMYUNIONNAME_u, + Relationship: LOGICAL_PROCESSOR_RELATIONSHIP, + DummyUnion: DUMMYUNIONNAME_u, } From bf75fd9d3494c451f564b2b55032e4b8df2776b4 Mon Sep 17 00:00:00 2001 From: Jon Lipstate Date: Tue, 4 Apr 2023 22:02:37 -0700 Subject: [PATCH 13/75] Revert "remove keyedevent" This reverts commit 219343f3c0e1bdf6130af5d07baa6c929379dfe1. --- core/sys/windows/kernel32.odin | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/sys/windows/kernel32.odin b/core/sys/windows/kernel32.odin index 7bd795ac2..37cb25d3b 100644 --- a/core/sys/windows/kernel32.odin +++ b/core/sys/windows/kernel32.odin @@ -221,6 +221,8 @@ foreign kernel32 { PostQueuedCompletionStatus :: proc(CompletionPort: HANDLE, dwNumberOfBytesTransferred: DWORD, dwCompletionKey: c_ulong, lpOverlapped: ^OVERLAPPED) -> BOOL --- // [MS-Docs] (https://learn.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-gettickcount64) GetTickCount64 :: proc() -> u64 --- + // [MS-Docs](https://github.com/mic101/windows/blob/master/WRK-v1.2/base/ntos/ex/keyedevent.c) + NtCreateKeyedEvent :: proc(KeyedEventHandle: ^HANDLE, DesiredAccess: ACCESS_MASK, ObjectAttributes: OBJECT_ATTRIBUTES, Flags: u32) -> NTSTATUS --- // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/handleapi/nf-handleapi-gethandleinformation) GetHandleInformation :: proc(hObject: HANDLE, lpdwFlags: ^DWORD) -> BOOL --- } From c5d2b019235f04b5d7b3d4dde415acf645d7d07f Mon Sep 17 00:00:00 2001 From: Jon Lipstate Date: Tue, 4 Apr 2023 23:03:19 -0700 Subject: [PATCH 14/75] remove runtime signatures to prevent ffi collisions --- core/sys/windows/ws2_32.odin | 35 +---------------------------------- 1 file changed, 1 insertion(+), 34 deletions(-) diff --git a/core/sys/windows/ws2_32.odin b/core/sys/windows/ws2_32.odin index ef4a9465b..bc3816e3d 100644 --- a/core/sys/windows/ws2_32.odin +++ b/core/sys/windows/ws2_32.odin @@ -44,40 +44,7 @@ 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) - } -*/ -// NOTE: AcceptEx should be loaded at runtime per MS-Docs -//[MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/mswsock/nf-mswsock-acceptex) -AcceptEx :: proc( - sListenSocket: SOCKET, - sAcceptSocket: SOCKET, - lpOutputBuffer: rawptr, - dwReceiveDataLength: u32, - dwLocalAddressLength: u32, - dwRemoteAddressLength: u32, - lpdwBytesReceived: ^u32, - lpOverlapped: ^OVERLAPPED, -) -> b32 -// NOTE: GetAcceptExSockaddrs should be loaded at runtime per MS-Docs -//[MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/mswsock/nf-mswsock-getacceptexsockaddrs) -GetAcceptExSockaddrs :: proc( - lpOutputBuffer: rawptr, - dwReceiveDataLength: u32, - dwLocalAddressLength: u32, - dwRemoteAddressLength: u32, - LocalSockaddr: ^^sockaddr, - LocalSockaddrLength: ^i32, - RemoteSockaddr: ^^sockaddr, - RemoteSockaddrLength: ^i32, -) + foreign import ws2_32 "system:Ws2_32.lib" @(default_calling_convention="stdcall") From 236347b5bc105f41ef2fee82dc4aa396c5e02271 Mon Sep 17 00:00:00 2001 From: Jon Lipstate Date: Tue, 4 Apr 2023 23:11:01 -0700 Subject: [PATCH 15/75] retain runtime load sample --- core/sys/windows/ws2_32.odin | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/core/sys/windows/ws2_32.odin b/core/sys/windows/ws2_32.odin index bc3816e3d..631ef4241 100644 --- a/core/sys/windows/ws2_32.odin +++ b/core/sys/windows/ws2_32.odin @@ -44,7 +44,16 @@ 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") From 2c9156e2c18c9789c79e34bae296914e6aeca66e Mon Sep 17 00:00:00 2001 From: Jon Lipstate Date: Tue, 4 Apr 2023 23:57:52 -0700 Subject: [PATCH 16/75] repaired autoformatter --- core/sys/windows/kernel32.odin | 903 ++++++++++++++++++++++++--------- 1 file changed, 660 insertions(+), 243 deletions(-) diff --git a/core/sys/windows/kernel32.odin b/core/sys/windows/kernel32.odin index 37cb25d3b..ae21654b4 100644 --- a/core/sys/windows/kernel32.odin +++ b/core/sys/windows/kernel32.odin @@ -3,53 +3,75 @@ package sys_windows foreign import kernel32 "system:Kernel32.lib" -FOREGROUND_BLUE :: WORD(0x0001) -FOREGROUND_GREEN :: WORD(0x0002) -FOREGROUND_RED :: WORD(0x0004) -FOREGROUND_INTENSITY :: WORD(0x0008) -BACKGROUND_BLUE :: WORD(0x0010) -BACKGROUND_GREEN :: WORD(0x0020) -BACKGROUND_RED :: WORD(0x0040) -BACKGROUND_INTENSITY :: WORD(0x0080) -COMMON_LVB_LEADING_BYTE :: WORD(0x0100) -COMMON_LVB_TRAILING_BYTE :: WORD(0x0200) +FOREGROUND_BLUE :: WORD(0x0001) +FOREGROUND_GREEN :: WORD(0x0002) +FOREGROUND_RED :: WORD(0x0004) +FOREGROUND_INTENSITY :: WORD(0x0008) +BACKGROUND_BLUE :: WORD(0x0010) +BACKGROUND_GREEN :: WORD(0x0020) +BACKGROUND_RED :: WORD(0x0040) +BACKGROUND_INTENSITY :: WORD(0x0080) +COMMON_LVB_LEADING_BYTE :: WORD(0x0100) +COMMON_LVB_TRAILING_BYTE :: WORD(0x0200) COMMON_LVB_GRID_HORIZONTAL :: WORD(0x0400) -COMMON_LVB_GRID_LVERTICAL :: WORD(0x0800) -COMMON_LVB_GRID_RVERTICAL :: WORD(0x1000) -COMMON_LVB_REVERSE_VIDEO :: WORD(0x4000) -COMMON_LVB_UNDERSCORE :: WORD(0x8000) -COMMON_LVB_SBCSDBCS :: WORD(0x0300) +COMMON_LVB_GRID_LVERTICAL :: WORD(0x0800) +COMMON_LVB_GRID_RVERTICAL :: WORD(0x1000) +COMMON_LVB_REVERSE_VIDEO :: WORD(0x4000) +COMMON_LVB_UNDERSCORE :: WORD(0x8000) +COMMON_LVB_SBCSDBCS :: WORD(0x0300) -@(default_calling_convention = "stdcall") +@(default_calling_convention="stdcall") foreign kernel32 { OutputDebugStringA :: proc(lpOutputString: LPCSTR) --- // The only A thing that is allowed OutputDebugStringW :: proc(lpOutputString: LPCWSTR) --- - ReadConsoleW :: proc(hConsoleInput: HANDLE, lpBuffer: LPVOID, nNumberOfCharsToRead: DWORD, lpNumberOfCharsRead: LPDWORD, pInputControl: PCONSOLE_READCONSOLE_CONTROL) -> BOOL --- + ReadConsoleW :: proc(hConsoleInput: HANDLE, + lpBuffer: LPVOID, + nNumberOfCharsToRead: DWORD, + lpNumberOfCharsRead: LPDWORD, + pInputControl: PCONSOLE_READCONSOLE_CONTROL) -> BOOL --- - WriteConsoleW :: proc(hConsoleOutput: HANDLE, lpBuffer: LPCVOID, nNumberOfCharsToWrite: DWORD, lpNumberOfCharsWritten: LPDWORD, lpReserved: LPVOID) -> BOOL --- + WriteConsoleW :: proc(hConsoleOutput: HANDLE, + lpBuffer: LPCVOID, + nNumberOfCharsToWrite: DWORD, + lpNumberOfCharsWritten: LPDWORD, + lpReserved: LPVOID) -> BOOL --- - GetConsoleMode :: proc(hConsoleHandle: HANDLE, lpMode: LPDWORD) -> BOOL --- - SetConsoleMode :: proc(hConsoleHandle: HANDLE, dwMode: DWORD) -> BOOL --- - SetConsoleCursorPosition :: proc(hConsoleHandle: HANDLE, dwCursorPosition: COORD) -> BOOL --- - SetConsoleTextAttribute :: proc(hConsoleOutput: HANDLE, wAttributes: WORD) -> BOOL --- + GetConsoleMode :: proc(hConsoleHandle: HANDLE, + lpMode: LPDWORD) -> BOOL --- + SetConsoleMode :: proc(hConsoleHandle: HANDLE, + dwMode: DWORD) -> BOOL --- + SetConsoleCursorPosition :: proc(hConsoleHandle: HANDLE, + dwCursorPosition: COORD) -> BOOL --- + SetConsoleTextAttribute :: proc(hConsoleOutput: HANDLE, + wAttributes: WORD) -> BOOL --- SetConsoleOutputCP :: proc(wCodePageID: UINT) -> BOOL --- - + GetFileInformationByHandle :: proc(hFile: HANDLE, lpFileInformation: LPBY_HANDLE_FILE_INFORMATION) -> BOOL --- - SetHandleInformation :: proc(hObject: HANDLE, dwMask: DWORD, dwFlags: DWORD) -> BOOL --- - SetFileInformationByHandle :: proc(hFile: HANDLE, FileInformationClass: FILE_INFO_BY_HANDLE_CLASS, lpFileInformation: LPVOID, dwBufferSize: DWORD) -> BOOL --- + SetHandleInformation :: proc(hObject: HANDLE, + dwMask: DWORD, + dwFlags: DWORD) -> BOOL --- + SetFileInformationByHandle :: proc(hFile: HANDLE, + FileInformationClass: FILE_INFO_BY_HANDLE_CLASS, + lpFileInformation: LPVOID, + dwBufferSize: DWORD) -> BOOL --- AddVectoredExceptionHandler :: proc(FirstHandler: ULONG, VectoredHandler: PVECTORED_EXCEPTION_HANDLER) -> LPVOID --- - AddVectoredContinueHandler :: proc(FirstHandler: ULONG, VectoredHandler: PVECTORED_EXCEPTION_HANDLER) -> LPVOID --- - RemoveVectoredExceptionHandler :: proc(Handle: LPVOID) -> DWORD --- - RemoveVectoredContinueHandler :: proc(Handle: LPVOID) -> DWORD --- + AddVectoredContinueHandler :: proc(FirstHandler: ULONG, VectoredHandler: PVECTORED_EXCEPTION_HANDLER) -> LPVOID --- + RemoveVectoredExceptionHandler :: proc(Handle: LPVOID) -> DWORD --- + RemoveVectoredContinueHandler :: proc(Handle: LPVOID) -> DWORD --- RaiseException :: proc(dwExceptionCode, dwExceptionFlags, nNumberOfArguments: DWORD, lpArguments: ^ULONG_PTR) -> ! --- - CreateHardLinkW :: proc(lpSymlinkFileName: LPCWSTR, lpTargetFileName: LPCWSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES) -> BOOL --- + CreateHardLinkW :: proc(lpSymlinkFileName: LPCWSTR, + lpTargetFileName: LPCWSTR, + lpSecurityAttributes: LPSECURITY_ATTRIBUTES) -> BOOL --- - GetFileInformationByHandleEx :: proc(hFile: HANDLE, fileInfoClass: FILE_INFO_BY_HANDLE_CLASS, lpFileInformation: LPVOID, dwBufferSize: DWORD) -> BOOL --- + GetFileInformationByHandleEx :: proc(hFile: HANDLE, + fileInfoClass: FILE_INFO_BY_HANDLE_CLASS, + lpFileInformation: LPVOID, + dwBufferSize: DWORD) -> BOOL --- InitializeCriticalSection :: proc(CriticalSection: ^CRITICAL_SECTION) --- InitializeCriticalSectionAndSpinCount :: proc(CriticalSection: ^CRITICAL_SECTION, dwSpinCount: DWORD) -> BOOL --- @@ -67,12 +89,42 @@ foreign kernel32 { GetCurrentProcessId :: proc() -> DWORD --- GetCurrentThread :: proc() -> HANDLE --- GetCurrentThreadId :: proc() -> DWORD --- - GetProcessTimes :: proc(hProcess: HANDLE, lpCreationTime: LPFILETIME, lpExitTime: LPFILETIME, lpKernelTime: LPFILETIME, lpUserTime: LPFILETIME) -> BOOL --- + GetProcessTimes :: proc( + hProcess: HANDLE, + lpCreationTime: LPFILETIME, + lpExitTime: LPFILETIME, + lpKernelTime: LPFILETIME, + lpUserTime: LPFILETIME, + ) -> BOOL --- GetStdHandle :: proc(which: DWORD) -> HANDLE --- ExitProcess :: proc(uExitCode: c_uint) -> ! --- - DeviceIoControl :: proc(hDevice: HANDLE, dwIoControlCode: DWORD, lpInBuffer: LPVOID, nInBufferSize: DWORD, lpOutBuffer: LPVOID, nOutBufferSize: DWORD, lpBytesReturned: LPDWORD, lpOverlapped: LPOVERLAPPED) -> BOOL --- - CreateThread :: proc(lpThreadAttributes: LPSECURITY_ATTRIBUTES, dwStackSize: SIZE_T, lpStartAddress: proc "stdcall" (_: rawptr) -> DWORD, lpParameter: LPVOID, dwCreationFlags: DWORD, lpThreadId: LPDWORD) -> HANDLE --- - CreateRemoteThread :: proc(hProcess: HANDLE, lpThreadAttributes: LPSECURITY_ATTRIBUTES, dwStackSize: SIZE_T, lpStartAddress: proc "stdcall" (_: rawptr) -> DWORD, lpParameter: LPVOID, dwCreationFlags: DWORD, lpThreadId: LPDWORD) -> HANDLE --- + DeviceIoControl :: proc( + hDevice: HANDLE, + dwIoControlCode: DWORD, + lpInBuffer: LPVOID, + nInBufferSize: DWORD, + lpOutBuffer: LPVOID, + nOutBufferSize: DWORD, + lpBytesReturned: LPDWORD, + lpOverlapped: LPOVERLAPPED, + ) -> BOOL --- + CreateThread :: proc( + lpThreadAttributes: LPSECURITY_ATTRIBUTES, + dwStackSize: SIZE_T, + lpStartAddress: proc "stdcall" (rawptr) -> DWORD, + lpParameter: LPVOID, + dwCreationFlags: DWORD, + lpThreadId: LPDWORD, + ) -> HANDLE --- + CreateRemoteThread :: proc( + hProcess: HANDLE, + lpThreadAttributes: LPSECURITY_ATTRIBUTES, + dwStackSize: SIZE_T, + lpStartAddress: proc "stdcall" (rawptr) -> DWORD, + lpParameter: LPVOID, + dwCreationFlags: DWORD, + lpThreadId: LPDWORD, + ) -> HANDLE --- SwitchToThread :: proc() -> BOOL --- ResumeThread :: proc(thread: HANDLE) -> DWORD --- GetThreadPriority :: proc(thread: HANDLE) -> c_int --- @@ -83,14 +135,46 @@ foreign kernel32 { CreateSemaphoreW :: proc(attributes: LPSECURITY_ATTRIBUTES, initial_count, maximum_count: LONG, name: LPCWSTR) -> HANDLE --- ReleaseSemaphore :: proc(semaphore: HANDLE, release_count: LONG, previous_count: ^LONG) -> BOOL --- - CreateWaitableTimerW :: proc(lpTimerAttributes: LPSECURITY_ATTRIBUTES, bManualReset: BOOL, lpTimerName: LPCWSTR) -> HANDLE --- - CreateWaitableTimerExW :: proc(lpTimerAttributes: LPSECURITY_ATTRIBUTES, lpTimerName: LPCWSTR, dwFlags: DWORD, dwDesiredAccess: DWORD) -> HANDLE --- - SetWaitableTimerEx :: proc(hTimer: HANDLE, lpDueTime: ^LARGE_INTEGER, lPeriod: LONG, pfnCompletionRoutine: PTIMERAPCROUTINE, lpArgToCompletionRoutine: LPVOID, WakeContext: PREASON_CONTEXT, TolerableDelay: ULONG) -> BOOL --- + CreateWaitableTimerW :: proc( + lpTimerAttributes: LPSECURITY_ATTRIBUTES, + bManualReset: BOOL, + lpTimerName: LPCWSTR, + ) -> HANDLE --- + CreateWaitableTimerExW :: proc( + lpTimerAttributes: LPSECURITY_ATTRIBUTES, + lpTimerName: LPCWSTR, + dwFlags: DWORD, + dwDesiredAccess: DWORD, + ) -> HANDLE --- + SetWaitableTimerEx :: proc( + hTimer: HANDLE, + lpDueTime: ^LARGE_INTEGER, + lPeriod: LONG, + pfnCompletionRoutine: PTIMERAPCROUTINE, + lpArgToCompletionRoutine: LPVOID, + WakeContext: PREASON_CONTEXT, + TolerableDelay: ULONG, + ) -> BOOL --- WaitForSingleObject :: proc(hHandle: HANDLE, dwMilliseconds: DWORD) -> DWORD --- Sleep :: proc(dwMilliseconds: DWORD) --- GetProcessId :: proc(handle: HANDLE) -> DWORD --- - CopyFileExW :: proc(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, lpProgressRoutine: LPPROGRESS_ROUTINE, lpData: LPVOID, pbCancel: LPBOOL, dwCopyFlags: DWORD) -> BOOL --- - FormatMessageW :: proc(flags: DWORD, lpSrc: LPVOID, msgId: DWORD, langId: DWORD, buf: LPWSTR, nsize: DWORD, args: rawptr) -> DWORD --- + CopyFileExW :: proc( + lpExistingFileName: LPCWSTR, + lpNewFileName: LPCWSTR, + lpProgressRoutine: LPPROGRESS_ROUTINE, + lpData: LPVOID, + pbCancel: LPBOOL, + dwCopyFlags: DWORD, + ) -> BOOL --- + FormatMessageW :: proc( + flags: DWORD, + lpSrc: LPVOID, + msgId: DWORD, + langId: DWORD, + buf: LPWSTR, + nsize: DWORD, + args: rawptr, + ) -> DWORD --- TlsAlloc :: proc() -> DWORD --- TlsFree :: proc(dwTlsIndex: DWORD) -> BOOL --- TlsGetValue :: proc(dwTlsIndex: DWORD) -> LPVOID --- @@ -100,26 +184,89 @@ foreign kernel32 { QueryPerformanceCounter :: proc(lpPerformanceCount: ^LARGE_INTEGER) -> BOOL --- GetExitCodeProcess :: proc(hProcess: HANDLE, lpExitCode: LPDWORD) -> BOOL --- TerminateProcess :: proc(hProcess: HANDLE, uExitCode: UINT) -> BOOL --- - CreateProcessW :: proc(lpApplicationName: LPCWSTR, lpCommandLine: LPWSTR, lpProcessAttributes: LPSECURITY_ATTRIBUTES, lpThreadAttributes: LPSECURITY_ATTRIBUTES, bInheritHandles: BOOL, dwCreationFlags: DWORD, lpEnvironment: LPVOID, lpCurrentDirectory: LPCWSTR, lpStartupInfo: LPSTARTUPINFO, lpProcessInformation: LPPROCESS_INFORMATION) -> BOOL --- + CreateProcessW :: proc( + lpApplicationName: LPCWSTR, + lpCommandLine: LPWSTR, + lpProcessAttributes: LPSECURITY_ATTRIBUTES, + lpThreadAttributes: LPSECURITY_ATTRIBUTES, + bInheritHandles: BOOL, + dwCreationFlags: DWORD, + lpEnvironment: LPVOID, + lpCurrentDirectory: LPCWSTR, + lpStartupInfo: LPSTARTUPINFO, + lpProcessInformation: LPPROCESS_INFORMATION, + ) -> BOOL --- GetEnvironmentVariableW :: proc(n: LPCWSTR, v: LPWSTR, nsize: DWORD) -> DWORD --- SetEnvironmentVariableW :: proc(n: LPCWSTR, v: LPCWSTR) -> BOOL --- GetEnvironmentStringsW :: proc() -> LPWCH --- FreeEnvironmentStringsW :: proc(env_ptr: LPWCH) -> BOOL --- GetModuleFileNameW :: proc(hModule: HMODULE, lpFilename: LPWSTR, nSize: DWORD) -> DWORD --- - CreateDirectoryW :: proc(lpPathName: LPCWSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES) -> BOOL --- + CreateDirectoryW :: proc( + lpPathName: LPCWSTR, + lpSecurityAttributes: LPSECURITY_ATTRIBUTES, + ) -> BOOL --- DeleteFileW :: proc(lpPathName: LPCWSTR) -> BOOL --- GetCurrentDirectoryW :: proc(nBufferLength: DWORD, lpBuffer: LPWSTR) -> DWORD --- SetCurrentDirectoryW :: proc(lpPathName: LPCWSTR) -> BOOL --- - WideCharToMultiByte :: proc(CodePage: UINT, dwFlags: DWORD, lpWideCharStr: LPCWSTR, cchWideChar: c_int, lpMultiByteStr: LPSTR, cbMultiByte: c_int, lpDefaultChar: LPCSTR, lpUsedDefaultChar: LPBOOL) -> c_int --- - MultiByteToWideChar :: proc(CodePage: UINT, dwFlags: DWORD, lpMultiByteStr: LPSTR, cbMultiByte: c_int, lpWideCharStr: LPWSTR, cchWideChar: c_int) -> c_int --- - DuplicateHandle :: proc(hSourceProcessHandle: HANDLE, hSourceHandle: HANDLE, hTargetProcessHandle: HANDLE, lpTargetHandle: LPHANDLE, dwDesiredAccess: DWORD, bInheritHandle: BOOL, dwOptions: DWORD) -> BOOL --- - ReadFile :: proc(hFile: HANDLE, lpBuffer: LPVOID, nNumberOfBytesToRead: DWORD, lpNumberOfBytesRead: LPDWORD, lpOverlapped: LPOVERLAPPED) -> BOOL --- - WriteFile :: proc(hFile: HANDLE, lpBuffer: LPVOID, nNumberOfBytesToWrite: DWORD, lpNumberOfBytesWritten: LPDWORD, lpOverlapped: LPOVERLAPPED) -> BOOL --- + WideCharToMultiByte :: proc( + CodePage: UINT, + dwFlags: DWORD, + lpWideCharStr: LPCWSTR, + cchWideChar: c_int, + lpMultiByteStr: LPSTR, + cbMultiByte: c_int, + lpDefaultChar: LPCSTR, + lpUsedDefaultChar: LPBOOL, + ) -> c_int --- + MultiByteToWideChar :: proc( + CodePage: UINT, + dwFlags: DWORD, + lpMultiByteStr: LPSTR, + cbMultiByte: c_int, + lpWideCharStr: LPWSTR, + cchWideChar: c_int, + ) -> c_int --- + DuplicateHandle :: proc( + hSourceProcessHandle: HANDLE, + hSourceHandle: HANDLE, + hTargetProcessHandle: HANDLE, + lpTargetHandle: LPHANDLE, + dwDesiredAccess: DWORD, + bInheritHandle: BOOL, + dwOptions: DWORD, + ) -> BOOL --- + ReadFile :: proc( + hFile: HANDLE, + lpBuffer: LPVOID, + nNumberOfBytesToRead: DWORD, + lpNumberOfBytesRead: LPDWORD, + lpOverlapped: LPOVERLAPPED, + ) -> BOOL --- + WriteFile :: proc( + hFile: HANDLE, + lpBuffer: LPVOID, + nNumberOfBytesToWrite: DWORD, + lpNumberOfBytesWritten: LPDWORD, + lpOverlapped: LPOVERLAPPED, + ) -> BOOL --- CloseHandle :: proc(hObject: HANDLE) -> BOOL --- MoveFileExW :: proc(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, dwFlags: DWORD) -> BOOL --- - SetFilePointerEx :: proc(hFile: HANDLE, liDistanceToMove: LARGE_INTEGER, lpNewFilePointer: PLARGE_INTEGER, dwMoveMethod: DWORD) -> BOOL --- + SetFilePointerEx :: proc( + hFile: HANDLE, + liDistanceToMove: LARGE_INTEGER, + lpNewFilePointer: PLARGE_INTEGER, + dwMoveMethod: DWORD, + ) -> BOOL --- FlushFileBuffers :: proc(hFile: HANDLE) -> BOOL --- - CreateFileW :: proc(lpFileName: LPCWSTR, dwDesiredAccess: DWORD, dwShareMode: DWORD, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, dwCreationDisposition: DWORD, dwFlagsAndAttributes: DWORD, hTemplateFile: HANDLE) -> HANDLE --- + CreateFileW :: proc( + lpFileName: LPCWSTR, + dwDesiredAccess: DWORD, + dwShareMode: DWORD, + lpSecurityAttributes: LPSECURITY_ATTRIBUTES, + dwCreationDisposition: DWORD, + dwFlagsAndAttributes: DWORD, + hTemplateFile: HANDLE, + ) -> HANDLE --- FindFirstFileW :: proc(fileName: LPCWSTR, findFileData: LPWIN32_FIND_DATAW) -> HANDLE --- FindNextFileW :: proc(findFile: HANDLE, findFileData: LPWIN32_FIND_DATAW) -> BOOL --- @@ -129,14 +276,45 @@ foreign kernel32 { GetSystemTimeAsFileTime :: proc(lpSystemTimeAsFileTime: LPFILETIME) --- GetSystemTimePreciseAsFileTime :: proc(lpSystemTimeAsFileTime: LPFILETIME) --- FileTimeToSystemTime :: proc(lpFileTime: ^FILETIME, lpSystemTime: ^SYSTEMTIME) -> BOOL --- - SystemTimeToTzSpecificLocalTime :: proc(lpTimeZoneInformation: ^TIME_ZONE_INFORMATION, lpUniversalTime: ^SYSTEMTIME, lpLocalTime: ^SYSTEMTIME) -> BOOL --- - SystemTimeToFileTime :: proc(lpSystemTime: ^SYSTEMTIME, lpFileTime: LPFILETIME) -> BOOL --- - CreateEventW :: proc(lpEventAttributes: LPSECURITY_ATTRIBUTES, bManualReset: BOOL, bInitialState: BOOL, lpName: LPCWSTR) -> HANDLE --- + SystemTimeToTzSpecificLocalTime :: proc( + lpTimeZoneInformation: ^TIME_ZONE_INFORMATION, + lpUniversalTime: ^SYSTEMTIME, + lpLocalTime: ^SYSTEMTIME, + ) -> BOOL --- + SystemTimeToFileTime :: proc( + lpSystemTime: ^SYSTEMTIME, + lpFileTime: LPFILETIME, + ) -> BOOL --- + CreateEventW :: proc( + lpEventAttributes: LPSECURITY_ATTRIBUTES, + bManualReset: BOOL, + bInitialState: BOOL, + lpName: LPCWSTR, + ) -> HANDLE --- ResetEvent :: proc(hEvent: HANDLE) -> BOOL --- - WaitForMultipleObjects :: proc(nCount: DWORD, lpHandles: ^HANDLE, bWaitAll: BOOL, dwMilliseconds: DWORD) -> DWORD --- - CreateNamedPipeW :: proc(lpName: LPCWSTR, dwOpenMode: DWORD, dwPipeMode: DWORD, nMaxInstances: DWORD, nOutBufferSize: DWORD, nInBufferSize: DWORD, nDefaultTimeOut: DWORD, lpSecurityAttributes: LPSECURITY_ATTRIBUTES) -> HANDLE --- + WaitForMultipleObjects :: proc( + nCount: DWORD, + lpHandles: ^HANDLE, + bWaitAll: BOOL, + dwMilliseconds: DWORD, + ) -> DWORD --- + CreateNamedPipeW :: proc( + lpName: LPCWSTR, + dwOpenMode: DWORD, + dwPipeMode: DWORD, + nMaxInstances: DWORD, + nOutBufferSize: DWORD, + nInBufferSize: DWORD, + nDefaultTimeOut: DWORD, + lpSecurityAttributes: LPSECURITY_ATTRIBUTES, + ) -> HANDLE --- CancelIo :: proc(handle: HANDLE) -> BOOL --- - GetOverlappedResult :: proc(hFile: HANDLE, lpOverlapped: LPOVERLAPPED, lpNumberOfBytesTransferred: LPDWORD, bWait: BOOL) -> BOOL --- + GetOverlappedResult :: proc( + hFile: HANDLE, + lpOverlapped: LPOVERLAPPED, + lpNumberOfBytesTransferred: LPDWORD, + bWait: BOOL, + ) -> BOOL --- GetProcessHeap :: proc() -> HANDLE --- HeapAlloc :: proc(hHeap: HANDLE, dwFlags: DWORD, dwBytes: SIZE_T) -> LPVOID --- HeapReAlloc :: proc(hHeap: HANDLE, dwFlags: DWORD, lpMem: LPVOID, dwBytes: SIZE_T) -> LPVOID --- @@ -147,30 +325,43 @@ foreign kernel32 { LocalFree :: proc(mem: LPVOID) -> LPVOID --- - ReadDirectoryChangesW :: proc(hDirectory: HANDLE, lpBuffer: LPVOID, nBufferLength: DWORD, bWatchSubtree: BOOL, dwNotifyFilter: DWORD, lpBytesReturned: LPDWORD, lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE) -> BOOL --- - FindFirstChangeNotificationW :: proc(lpPathName: LPWSTR, bWatchSubtree: BOOL, dwNotifyFilter: DWORD) -> HANDLE --- + ReadDirectoryChangesW :: proc( + hDirectory: HANDLE, + lpBuffer: LPVOID, + nBufferLength: DWORD, + bWatchSubtree: BOOL, + dwNotifyFilter: DWORD, + lpBytesReturned: LPDWORD, + lpOverlapped: LPOVERLAPPED, + lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE, + ) -> BOOL --- + FindFirstChangeNotificationW :: proc( + lpPathName: LPWSTR, + bWatchSubtree: BOOL, + dwNotifyFilter: DWORD, + ) -> HANDLE --- FindNextChangeNotification :: proc(hChangeHandle: HANDLE) -> BOOL --- FindCloseChangeNotification :: proc(hChangeHandle: HANDLE) -> BOOL --- - InitializeSRWLock :: proc(SRWLock: ^SRWLOCK) --- - AcquireSRWLockExclusive :: proc(SRWLock: ^SRWLOCK) --- + InitializeSRWLock :: proc(SRWLock: ^SRWLOCK) --- + AcquireSRWLockExclusive :: proc(SRWLock: ^SRWLOCK) --- TryAcquireSRWLockExclusive :: proc(SRWLock: ^SRWLOCK) -> BOOLEAN --- - ReleaseSRWLockExclusive :: proc(SRWLock: ^SRWLOCK) --- - AcquireSRWLockShared :: proc(SRWLock: ^SRWLOCK) --- + ReleaseSRWLockExclusive :: proc(SRWLock: ^SRWLOCK) --- + AcquireSRWLockShared :: proc(SRWLock: ^SRWLOCK) --- TryAcquireSRWLockShared :: proc(SRWLock: ^SRWLOCK) -> BOOLEAN --- - ReleaseSRWLockShared :: proc(SRWLock: ^SRWLOCK) --- + ReleaseSRWLockShared :: proc(SRWLock: ^SRWLOCK) --- InitializeConditionVariable :: proc(ConditionVariable: ^CONDITION_VARIABLE) --- - WakeConditionVariable :: proc(ConditionVariable: ^CONDITION_VARIABLE) --- - WakeAllConditionVariable :: proc(ConditionVariable: ^CONDITION_VARIABLE) --- - SleepConditionVariableCS :: proc(ConditionVariable: ^CONDITION_VARIABLE, CriticalSection: ^CRITICAL_SECTION, dwMilliseconds: DWORD) -> BOOL --- - SleepConditionVariableSRW :: proc(ConditionVariable: ^CONDITION_VARIABLE, SRWLock: ^SRWLOCK, dwMilliseconds: DWORD, Flags: LONG) -> BOOL --- + WakeConditionVariable :: proc(ConditionVariable: ^CONDITION_VARIABLE) --- + WakeAllConditionVariable :: proc(ConditionVariable: ^CONDITION_VARIABLE) --- + SleepConditionVariableCS :: proc(ConditionVariable: ^CONDITION_VARIABLE, CriticalSection: ^CRITICAL_SECTION, dwMilliseconds: DWORD) -> BOOL --- + SleepConditionVariableSRW :: proc(ConditionVariable: ^CONDITION_VARIABLE, SRWLock: ^SRWLOCK, dwMilliseconds: DWORD, Flags: LONG) -> BOOL --- GetFileType :: proc(file_handle: HANDLE) -> DWORD --- SetFilePointer :: proc(file_handle: HANDLE, distance_to_move: LONG, distance_to_move_high: ^LONG, move_method: DWORD) -> DWORD --- GetFileSizeEx :: proc(file_handle: HANDLE, file_size: ^LARGE_INTEGER) -> BOOL --- - GetFileAttributesW :: proc(lpFileName: LPCWSTR) -> DWORD --- + GetFileAttributesW :: proc(lpFileName: LPCWSTR) -> DWORD --- GetFileAttributesExW :: proc(lpFileName: LPCWSTR, fInfoLevelId: GET_FILEEX_INFO_LEVELS, lpFileInformation: LPVOID) -> BOOL --- GetSystemInfo :: proc(system_info: ^SYSTEM_INFO) --- GetVersionExW :: proc(osvi: ^OSVERSIONINFOEXW) --- @@ -180,8 +371,8 @@ foreign kernel32 { GetProcAddress :: proc(h: HMODULE, c_str: LPCSTR) -> rawptr --- - GetFullPathNameW :: proc(filename: LPCWSTR, buffer_length: DWORD, buffer: LPCWSTR, file_part: ^LPCWSTR) -> DWORD --- - GetLongPathNameW :: proc(short, long: LPCWSTR, len: DWORD) -> DWORD --- + GetFullPathNameW :: proc(filename: LPCWSTR, buffer_length: DWORD, buffer: LPCWSTR, file_part: ^LPCWSTR) -> DWORD --- + GetLongPathNameW :: proc(short, long: LPCWSTR, len: DWORD) -> DWORD --- GetShortPathNameW :: proc(long, short: LPCWSTR, len: DWORD) -> DWORD --- GetFinalPathNameByHandleW :: proc(hFile: HANDLE, lpszFilePath: LPCWSTR, cchFilePath: DWORD, dwFlags: DWORD) -> DWORD --- @@ -191,9 +382,9 @@ foreign kernel32 { CreatePipe :: proc(hReadPipe, hWritePipe: ^HANDLE, lpPipeAttributes: LPSECURITY_ATTRIBUTES, nSize: DWORD) -> BOOL --- - ConnectNamedPipe :: proc(hNamedPipe: HANDLE, lpOverlapped: LPOVERLAPPED) -> BOOL --- - DisconnectNamedPipe :: proc(hNamedPipe: HANDLE) -> BOOL --- - WaitNamedPipeW :: proc(lpNamedPipeName: LPCWSTR, nTimeOut: DWORD) -> BOOL --- + ConnectNamedPipe :: proc(hNamedPipe: HANDLE, lpOverlapped: LPOVERLAPPED,) -> BOOL --- + DisconnectNamedPipe :: proc(hNamedPipe: HANDLE,) -> BOOL --- + WaitNamedPipeW :: proc(lpNamedPipeName: LPCWSTR, nTimeOut: DWORD,) -> BOOL --- SetConsoleCtrlHandler :: proc(HandlerRoutine: PHANDLER_ROUTINE, Add: BOOL) -> BOOL --- GenerateConsoleCtrlEvent :: proc(dwCtrlEvent: DWORD, dwProcessGroupId: DWORD) -> BOOL --- @@ -201,11 +392,16 @@ foreign kernel32 { GetConsoleWindow :: proc() -> HWND --- GetConsoleScreenBufferInfo :: proc(hConsoleOutput: HANDLE, lpConsoleScreenBufferInfo: PCONSOLE_SCREEN_BUFFER_INFO) -> BOOL --- SetConsoleScreenBufferSize :: proc(hConsoleOutput: HANDLE, dwSize: COORD) -> BOOL --- - SetConsoleWindowInfo :: proc(hConsoleOutput: HANDLE, bAbsolute: BOOL, lpConsoleWindow: ^SMALL_RECT) -> BOOL --- + SetConsoleWindowInfo :: proc(hConsoleOutput: HANDLE, bAbsolute : BOOL, lpConsoleWindow: ^SMALL_RECT) -> BOOL --- GetConsoleCursorInfo :: proc(hConsoleOutput: HANDLE, lpConsoleCursorInfo: PCONSOLE_CURSOR_INFO) -> BOOL --- SetConsoleCursorInfo :: proc(hConsoleOutput: HANDLE, lpConsoleCursorInfo: PCONSOLE_CURSOR_INFO) -> BOOL --- - GetDiskFreeSpaceExW :: proc(lpDirectoryName: LPCWSTR, lpFreeBytesAvailableToCaller: PULARGE_INTEGER, lpTotalNumberOfBytes: PULARGE_INTEGER, lpTotalNumberOfFreeBytes: PULARGE_INTEGER) -> BOOL --- + GetDiskFreeSpaceExW :: proc( + lpDirectoryName: LPCWSTR, + lpFreeBytesAvailableToCaller: PULARGE_INTEGER, + lpTotalNumberOfBytes: PULARGE_INTEGER, + lpTotalNumberOfFreeBytes: PULARGE_INTEGER, + ) -> BOOL --- GetLogicalProcessorInformation :: proc(buffer: ^SYSTEM_LOGICAL_PROCESSOR_INFORMATION, returnedLength: PDWORD) -> BOOL --- @@ -219,100 +415,197 @@ foreign kernel32 { 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/sysinfoapi/nf-sysinfoapi-gettickcount64) - GetTickCount64 :: proc() -> u64 --- - // [MS-Docs](https://github.com/mic101/windows/blob/master/WRK-v1.2/base/ntos/ex/keyedevent.c) - NtCreateKeyedEvent :: proc(KeyedEventHandle: ^HANDLE, DesiredAccess: ACCESS_MASK, ObjectAttributes: OBJECT_ATTRIBUTES, Flags: u32) -> NTSTATUS --- // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/handleapi/nf-handleapi-gethandleinformation) GetHandleInformation :: proc(hObject: HANDLE, lpdwFlags: ^DWORD) -> BOOL --- } -SECTION_QUERY :: DWORD(0x0001) -SECTION_MAP_WRITE :: DWORD(0x0002) -SECTION_MAP_READ :: DWORD(0x0004) -SECTION_MAP_EXECUTE :: DWORD(0x0008) -SECTION_EXTEND_SIZE :: DWORD(0x0010) -SECTION_ALL_ACCESS :: - STANDARD_RIGHTS_REQUIRED | - SECTION_QUERY | - SECTION_MAP_WRITE | - SECTION_MAP_READ | - SECTION_MAP_EXECUTE | - SECTION_EXTEND_SIZE +SECTION_QUERY :: DWORD(0x0001) +SECTION_MAP_WRITE :: DWORD(0x0002) +SECTION_MAP_READ :: DWORD(0x0004) +SECTION_MAP_EXECUTE :: DWORD(0x0008) +SECTION_EXTEND_SIZE :: DWORD(0x0010) +SECTION_ALL_ACCESS :: STANDARD_RIGHTS_REQUIRED | SECTION_QUERY | SECTION_MAP_WRITE | SECTION_MAP_READ | SECTION_MAP_EXECUTE | SECTION_EXTEND_SIZE SECTION_MAP_EXECUTE_EXPLICIT :: DWORD(0x0020) -FILE_MAP_WRITE :: SECTION_MAP_WRITE -FILE_MAP_READ :: SECTION_MAP_READ -FILE_MAP_ALL_ACCESS :: SECTION_ALL_ACCESS -FILE_MAP_EXECUTE :: SECTION_MAP_EXECUTE_EXPLICIT -FILE_MAP_COPY :: DWORD(0x00000001) -FILE_MAP_RESERVE :: DWORD(0x80000000) +FILE_MAP_WRITE :: SECTION_MAP_WRITE +FILE_MAP_READ :: SECTION_MAP_READ +FILE_MAP_ALL_ACCESS :: SECTION_ALL_ACCESS +FILE_MAP_EXECUTE :: SECTION_MAP_EXECUTE_EXPLICIT +FILE_MAP_COPY :: DWORD(0x00000001) +FILE_MAP_RESERVE :: DWORD(0x80000000) FILE_MAP_TARGETS_INVALID :: DWORD(0x40000000) -FILE_MAP_LARGE_PAGES :: DWORD(0x20000000) +FILE_MAP_LARGE_PAGES :: DWORD(0x20000000) -PAGE_NOACCESS :: 0x01 -PAGE_READONLY :: 0x02 -PAGE_READWRITE :: 0x04 -PAGE_WRITECOPY :: 0x08 -PAGE_EXECUTE :: 0x10 -PAGE_EXECUTE_READ :: 0x20 +PAGE_NOACCESS :: 0x01 +PAGE_READONLY :: 0x02 +PAGE_READWRITE :: 0x04 +PAGE_WRITECOPY :: 0x08 +PAGE_EXECUTE :: 0x10 +PAGE_EXECUTE_READ :: 0x20 PAGE_EXECUTE_READWRITE :: 0x40 PAGE_EXECUTE_WRITECOPY :: 0x80 -PAGE_GUARD :: 0x100 -PAGE_NOCACHE :: 0x200 -PAGE_WRITECOMBINE :: 0x400 +PAGE_GUARD :: 0x100 +PAGE_NOCACHE :: 0x200 +PAGE_WRITECOMBINE :: 0x400 MEMORY_BASIC_INFORMATION :: struct { - BaseAddress: PVOID, - AllocationBase: PVOID, + BaseAddress: PVOID, + AllocationBase: PVOID, AllocationProtect: DWORD, - PartitionId: WORD, - RegionSize: SIZE_T, - State: DWORD, - Protect: DWORD, - Type: DWORD, + PartitionId: WORD, + RegionSize: SIZE_T, + State: DWORD, + Protect: DWORD, + Type: DWORD, } PMEMORY_BASIC_INFORMATION :: ^MEMORY_BASIC_INFORMATION LPMEMORY_BASIC_INFORMATION :: ^MEMORY_BASIC_INFORMATION -MEM_COMMIT :: 0x1000 -MEM_RESERVE :: 0x2000 -MEM_DECOMMIT :: 0x4000 -MEM_RELEASE :: 0x8000 -MEM_FREE :: 0x10000 -MEM_PRIVATE :: 0x20000 -MEM_MAPPED :: 0x40000 -MEM_RESET :: 0x80000 -MEM_TOP_DOWN :: 0x100000 +MEM_COMMIT :: 0x1000 +MEM_RESERVE :: 0x2000 +MEM_DECOMMIT :: 0x4000 +MEM_RELEASE :: 0x8000 +MEM_FREE :: 0x10000 +MEM_PRIVATE :: 0x20000 +MEM_MAPPED :: 0x40000 +MEM_RESET :: 0x80000 +MEM_TOP_DOWN :: 0x100000 MEM_LARGE_PAGES :: 0x20000000 -MEM_4MB_PAGES :: 0x80000000 +MEM_4MB_PAGES :: 0x80000000 -@(default_calling_convention = "stdcall") +@(default_calling_convention="stdcall") foreign kernel32 { - VirtualAlloc :: proc(lpAddress: LPVOID, dwSize: SIZE_T, flAllocationType: DWORD, flProtect: DWORD) -> LPVOID --- - VirtualProtect :: proc(lpAddress: LPVOID, dwSize: SIZE_T, flNewProtect: DWORD, lpflOldProtect: PDWORD) -> BOOL --- - VirtualFree :: proc(lpAddress: LPVOID, dwSize: SIZE_T, dwFreeType: DWORD) -> BOOL --- - VirtualQuery :: proc(lpAddress: LPCVOID, lpBuffer: PMEMORY_BASIC_INFORMATION, dwLength: SIZE_T) -> SIZE_T --- - VirtualAllocEx :: proc(hProcess: HANDLE, lpAddress: LPVOID, dwSize: SIZE_T, flAllocationType: DWORD, flProtect: DWORD) -> LPVOID --- - VirtualFreeEx :: proc(hProcess: HANDLE, lpAddress: LPVOID, dwSize: SIZE_T, dwFreeType: DWORD) -> BOOL --- - VirtualProtectEx :: proc(hProcess: HANDLE, lpAddress: LPVOID, dwSize: SIZE_T, flNewProtect: DWORD, lpflOldProtect: PDWORD) -> BOOL --- - VirtualQueryEx :: proc(hProcess: HANDLE, lpAddress: LPCVOID, lpBuffer: PMEMORY_BASIC_INFORMATION, dwLength: SIZE_T) -> SIZE_T --- - ReadProcessMemory :: proc(hProcess: HANDLE, lpBaseAddress: LPCVOID, lpBuffer: LPVOID, nSize: SIZE_T, lpNumberOfBytesRead: ^SIZE_T) -> BOOL --- - WriteProcessMemory :: proc(hProcess: HANDLE, lpBaseAddress: LPVOID, lpBuffer: LPCVOID, nSize: SIZE_T, lpNumberOfBytesWritten: ^SIZE_T) -> BOOL --- - CreateFileMappingW :: proc(hFile: HANDLE, lpFileMappingAttributes: LPSECURITY_ATTRIBUTES, flProtect: DWORD, dwMaximumSizeHigh: DWORD, dwMaximumSizeLow: DWORD, lpName: LPCWSTR) -> HANDLE --- - OpenFileMappingW :: proc(dwDesiredAccess: DWORD, bInheritHandle: BOOL, lpName: LPCWSTR) -> HANDLE --- - MapViewOfFile :: proc(hFileMappingObject: HANDLE, dwDesiredAccess: DWORD, dwFileOffsetHigh: DWORD, dwFileOffsetLow: DWORD, dwNumberOfBytesToMap: SIZE_T) -> LPVOID --- - MapViewOfFileEx :: proc(hFileMappingObject: HANDLE, dwDesiredAccess: DWORD, dwFileOffsetHigh: DWORD, dwFileOffsetLow: DWORD, dwNumberOfBytesToMap: SIZE_T, lpBaseAddress: LPVOID) -> LPVOID --- - FlushViewOfFile :: proc(lpBaseAddress: LPCVOID, dwNumberOfBytesToFlush: SIZE_T) -> BOOL --- - UnmapViewOfFile :: proc(lpBaseAddress: LPCVOID) -> BOOL --- + VirtualAlloc :: proc( + lpAddress: LPVOID, + dwSize: SIZE_T, + flAllocationType: DWORD, + flProtect: DWORD, + ) -> LPVOID --- + VirtualProtect :: proc( + lpAddress: LPVOID, + dwSize: SIZE_T, + flNewProtect: DWORD, + lpflOldProtect: PDWORD, + ) -> BOOL --- + VirtualFree :: proc( + lpAddress: LPVOID, + dwSize: SIZE_T, + dwFreeType: DWORD, + ) -> BOOL --- + VirtualQuery :: proc( + lpAddress: LPCVOID, + lpBuffer: PMEMORY_BASIC_INFORMATION, + dwLength: SIZE_T, + ) -> SIZE_T --- + VirtualAllocEx :: proc( + hProcess: HANDLE, + lpAddress: LPVOID, + dwSize: SIZE_T, + flAllocationType: DWORD, + flProtect: DWORD, + ) -> LPVOID --- + VirtualFreeEx :: proc( + hProcess: HANDLE, + lpAddress: LPVOID, + dwSize: SIZE_T, + dwFreeType: DWORD, + ) -> BOOL --- + VirtualProtectEx :: proc( + hProcess: HANDLE, + lpAddress: LPVOID, + dwSize: SIZE_T, + flNewProtect: DWORD, + lpflOldProtect: PDWORD, + ) -> BOOL --- + VirtualQueryEx :: proc( + hProcess: HANDLE, + lpAddress: LPCVOID, + lpBuffer: PMEMORY_BASIC_INFORMATION, + dwLength: SIZE_T, + ) -> SIZE_T --- + ReadProcessMemory :: proc( + hProcess: HANDLE, + lpBaseAddress: LPCVOID, + lpBuffer: LPVOID, + nSize: SIZE_T, + lpNumberOfBytesRead: ^SIZE_T, + ) -> BOOL --- + WriteProcessMemory :: proc( + hProcess: HANDLE, + lpBaseAddress: LPVOID, + lpBuffer: LPCVOID, + nSize: SIZE_T, + lpNumberOfBytesWritten: ^SIZE_T, + ) -> BOOL --- + CreateFileMappingW :: proc( + hFile: HANDLE, + lpFileMappingAttributes: LPSECURITY_ATTRIBUTES, + flProtect: DWORD, + dwMaximumSizeHigh: DWORD, + dwMaximumSizeLow: DWORD, + lpName: LPCWSTR, + ) -> HANDLE --- + OpenFileMappingW :: proc( + dwDesiredAccess: DWORD, + bInheritHandle: BOOL, + lpName: LPCWSTR, + ) -> HANDLE --- + MapViewOfFile :: proc( + hFileMappingObject: HANDLE, + dwDesiredAccess: DWORD, + dwFileOffsetHigh: DWORD, + dwFileOffsetLow: DWORD, + dwNumberOfBytesToMap: SIZE_T, + ) -> LPVOID --- + MapViewOfFileEx :: proc( + hFileMappingObject: HANDLE, + dwDesiredAccess: DWORD, + dwFileOffsetHigh: DWORD, + dwFileOffsetLow: DWORD, + dwNumberOfBytesToMap: SIZE_T, + lpBaseAddress: LPVOID, + ) -> LPVOID --- + FlushViewOfFile :: proc( + lpBaseAddress: LPCVOID, + dwNumberOfBytesToFlush: SIZE_T, + ) -> BOOL --- + UnmapViewOfFile :: proc( + lpBaseAddress: LPCVOID, + ) -> BOOL --- GetLargePageMinimum :: proc() -> SIZE_T --- - GetProcessWorkingSetSizeEx :: proc(hProcess: HANDLE, lpMinimumWorkingSetSize: PSIZE_T, lpMaximumWorkingSetSize: PSIZE_T, Flags: PDWORD) -> BOOL --- - SetProcessWorkingSetSizeEx :: proc(hProcess: HANDLE, dwMinimumWorkingSetSize: SIZE_T, dwMaximumWorkingSetSize: SIZE_T, Flags: DWORD) -> BOOL --- - VirtualLock :: proc(lpAddress: LPVOID, dwSize: SIZE_T) -> BOOL --- - VirtualUnlock :: proc(lpAddress: LPVOID, dwSize: SIZE_T) -> BOOL --- - GetWriteWatch :: proc(dwFlags: DWORD, lpBaseAddress: PVOID, dwRegionSize: SIZE_T, lpAddresses: ^PVOID, lpdwCount: ^ULONG_PTR, lpdwGranularity: LPDWORD) -> UINT --- - ResetWriteWatch :: proc(lpBaseAddress: LPVOID, dwRegionSize: SIZE_T) -> UINT --- + GetProcessWorkingSetSizeEx :: proc( + hProcess: HANDLE, + lpMinimumWorkingSetSize: PSIZE_T, + lpMaximumWorkingSetSize: PSIZE_T, + Flags: PDWORD, + ) -> BOOL --- + SetProcessWorkingSetSizeEx :: proc( + hProcess: HANDLE, + dwMinimumWorkingSetSize: SIZE_T, + dwMaximumWorkingSetSize: SIZE_T, + Flags: DWORD, + ) -> BOOL --- + VirtualLock :: proc( + lpAddress: LPVOID, + dwSize: SIZE_T, + ) -> BOOL --- + VirtualUnlock :: proc( + lpAddress: LPVOID, + dwSize: SIZE_T, + ) -> BOOL --- + GetWriteWatch :: proc( + dwFlags: DWORD, + lpBaseAddress: PVOID, + dwRegionSize: SIZE_T, + lpAddresses: ^PVOID, + lpdwCount: ^ULONG_PTR, + lpdwGranularity: LPDWORD, + ) -> UINT --- + ResetWriteWatch :: proc( + lpBaseAddress: LPVOID, + dwRegionSize: SIZE_T, + ) -> UINT --- } @@ -320,66 +613,138 @@ MEMORY_RESOURCE_NOTIFICATION_TYPE :: enum c_int { LowMemoryResourceNotification, HighMemoryResourceNotification, } -LowMemoryResourceNotification :: MEMORY_RESOURCE_NOTIFICATION_TYPE.LowMemoryResourceNotification +LowMemoryResourceNotification :: MEMORY_RESOURCE_NOTIFICATION_TYPE.LowMemoryResourceNotification HighMemoryResourceNotification :: MEMORY_RESOURCE_NOTIFICATION_TYPE.HighMemoryResourceNotification -@(default_calling_convention = "stdcall") +@(default_calling_convention="stdcall") foreign kernel32 { - CreateMemoryResourceNotification :: proc(NotificationType: MEMORY_RESOURCE_NOTIFICATION_TYPE) -> HANDLE --- - QueryMemoryResourceNotification :: proc(ResourceNotificationHandle: HANDLE, ResourceState: PBOOL) -> BOOL --- + CreateMemoryResourceNotification :: proc( + NotificationType: MEMORY_RESOURCE_NOTIFICATION_TYPE, + ) -> HANDLE --- + QueryMemoryResourceNotification :: proc( + ResourceNotificationHandle: HANDLE, + ResourceState: PBOOL, + ) -> BOOL --- } -FILE_CACHE_MAX_HARD_ENABLE :: DWORD(0x00000001) +FILE_CACHE_MAX_HARD_ENABLE :: DWORD(0x00000001) FILE_CACHE_MAX_HARD_DISABLE :: DWORD(0x00000002) -FILE_CACHE_MIN_HARD_ENABLE :: DWORD(0x00000004) +FILE_CACHE_MIN_HARD_ENABLE :: DWORD(0x00000004) FILE_CACHE_MIN_HARD_DISABLE :: DWORD(0x00000008) -@(default_calling_convention = "stdcall") +@(default_calling_convention="stdcall") foreign kernel32 { - GetSystemFileCacheSize :: proc(lpMinimumFileCacheSize: PSIZE_T, lpMaximumFileCacheSize: PSIZE_T, lpFlags: PDWORD) -> BOOL --- - SetSystemFileCacheSize :: proc(MinimumFileCacheSize: SIZE_T, MaximumFileCacheSize: SIZE_T, Flags: DWORD) -> BOOL --- - CreateFileMappingNumaW :: proc(hFile: HANDLE, lpFileMappingAttributes: LPSECURITY_ATTRIBUTES, flProtect: DWORD, dwMaximumSizeHigh: DWORD, dwMaximumSizeLow: DWORD, lpName: LPCWSTR, nndPreferred: DWORD) -> HANDLE --- + GetSystemFileCacheSize :: proc( + lpMinimumFileCacheSize: PSIZE_T, + lpMaximumFileCacheSize: PSIZE_T, + lpFlags: PDWORD, + ) -> BOOL --- + SetSystemFileCacheSize :: proc( + MinimumFileCacheSize: SIZE_T, + MaximumFileCacheSize: SIZE_T, + Flags: DWORD, + ) -> BOOL --- + CreateFileMappingNumaW :: proc( + hFile: HANDLE, + lpFileMappingAttributes: LPSECURITY_ATTRIBUTES, + flProtect: DWORD, + dwMaximumSizeHigh: DWORD, + dwMaximumSizeLow: DWORD, + lpName: LPCWSTR, + nndPreferred: DWORD, + ) -> HANDLE --- } WIN32_MEMORY_RANGE_ENTRY :: struct { VirtualAddress: PVOID, - NumberOfBytes: SIZE_T, + NumberOfBytes: SIZE_T, } PWIN32_MEMORY_RANGE_ENTRY :: ^WIN32_MEMORY_RANGE_ENTRY -@(default_calling_convention = "stdcall") +@(default_calling_convention="stdcall") foreign kernel32 { - PrefetchVirtualMemory :: proc(hProcess: HANDLE, NumberOfEntries: ULONG_PTR, VirtualAddresses: PWIN32_MEMORY_RANGE_ENTRY, Flags: ULONG) -> BOOL --- - CreateFileMappingFromApp :: proc(hFile: HANDLE, SecurityAttributes: PSECURITY_ATTRIBUTES, PageProtection: ULONG, MaximumSize: ULONG64, Name: PCWSTR) -> HANDLE --- - MapViewOfFileFromApp :: proc(hFileMappingObject: HANDLE, DesiredAccess: ULONG, FileOffset: ULONG64, NumberOfBytesToMap: SIZE_T) -> PVOID --- - UnmapViewOfFileEx :: proc(BaseAddress: PVOID, UnmapFlags: ULONG) -> BOOL --- - AllocateUserPhysicalPages :: proc(hProcess: HANDLE, NumberOfPages: PULONG_PTR, PageArray: PULONG_PTR) -> BOOL --- - FreeUserPhysicalPages :: proc(hProcess: HANDLE, NumberOfPages: PULONG_PTR, PageArray: PULONG_PTR) -> BOOL --- - MapUserPhysicalPages :: proc(VirtualAddress: PVOID, NumberOfPages: ULONG_PTR, PageArray: PULONG_PTR) -> BOOL --- - AllocateUserPhysicalPagesNuma :: proc(hProcess: HANDLE, NumberOfPages: PULONG_PTR, PageArray: PULONG_PTR, nndPreferred: DWORD) -> BOOL --- - VirtualAllocExNuma :: proc(hProcess: HANDLE, lpAddress: LPVOID, dwSize: SIZE_T, flAllocationType: DWORD, flProtect: DWORD, nndPreferred: DWORD) -> LPVOID --- + PrefetchVirtualMemory :: proc( + hProcess: HANDLE, + NumberOfEntries: ULONG_PTR, + VirtualAddresses: PWIN32_MEMORY_RANGE_ENTRY, + Flags: ULONG, + ) -> BOOL --- + CreateFileMappingFromApp :: proc( + hFile: HANDLE, + SecurityAttributes: PSECURITY_ATTRIBUTES, + PageProtection: ULONG, + MaximumSize: ULONG64, + Name: PCWSTR, + ) -> HANDLE --- + MapViewOfFileFromApp :: proc( + hFileMappingObject: HANDLE, + DesiredAccess: ULONG, + FileOffset: ULONG64, + NumberOfBytesToMap: SIZE_T, + ) -> PVOID --- + UnmapViewOfFileEx :: proc( + BaseAddress: PVOID, + UnmapFlags: ULONG, + ) -> BOOL --- + AllocateUserPhysicalPages :: proc( + hProcess: HANDLE, + NumberOfPages: PULONG_PTR, + PageArray: PULONG_PTR, + ) -> BOOL --- + FreeUserPhysicalPages :: proc( + hProcess: HANDLE, + NumberOfPages: PULONG_PTR, + PageArray: PULONG_PTR, + ) -> BOOL --- + MapUserPhysicalPages :: proc( + VirtualAddress: PVOID, + NumberOfPages: ULONG_PTR, + PageArray: PULONG_PTR, + ) -> BOOL --- + AllocateUserPhysicalPagesNuma :: proc( + hProcess: HANDLE, + NumberOfPages: PULONG_PTR, + PageArray: PULONG_PTR, + nndPreferred: DWORD, + ) -> BOOL --- + VirtualAllocExNuma :: proc( + hProcess: HANDLE, + lpAddress: LPVOID, + dwSize: SIZE_T, + flAllocationType: DWORD, + flProtect: DWORD, + nndPreferred: DWORD, + ) -> LPVOID --- } MEHC_PATROL_SCRUBBER_PRESENT :: ULONG(0x1) -@(default_calling_convention = "stdcall") +@(default_calling_convention="stdcall") foreign kernel32 { - GetMemoryErrorHandlingCapabilities :: proc(Capabilities: PULONG) -> BOOL --- + GetMemoryErrorHandlingCapabilities :: proc( + Capabilities: PULONG, + ) -> BOOL --- } -@(default_calling_convention = "stdcall") +@(default_calling_convention="stdcall") foreign kernel32 { - GlobalMemoryStatusEx :: proc(lpBuffer: ^MEMORYSTATUSEX) -> BOOL --- + GlobalMemoryStatusEx :: proc( + lpBuffer: ^MEMORYSTATUSEX, + ) -> BOOL --- } PBAD_MEMORY_CALLBACK_ROUTINE :: #type proc "stdcall" () -@(default_calling_convention = "stdcall") +@(default_calling_convention="stdcall") foreign kernel32 { - RegisterBadMemoryNotification :: proc(Callback: PBAD_MEMORY_CALLBACK_ROUTINE) -> PVOID --- - UnregisterBadMemoryNotification :: proc(RegistrationHandle: PVOID) -> BOOL --- + RegisterBadMemoryNotification :: proc( + Callback: PBAD_MEMORY_CALLBACK_ROUTINE, + ) -> PVOID --- + UnregisterBadMemoryNotification :: proc( + RegistrationHandle: PVOID, + ) -> BOOL --- } OFFER_PRIORITY :: enum c_int { @@ -388,19 +753,43 @@ OFFER_PRIORITY :: enum c_int { VmOfferPriorityBelowNormal, VmOfferPriorityNormal, } -VmOfferPriorityVeryLow :: OFFER_PRIORITY.VmOfferPriorityVeryLow -VmOfferPriorityLow :: OFFER_PRIORITY.VmOfferPriorityLow +VmOfferPriorityVeryLow :: OFFER_PRIORITY.VmOfferPriorityVeryLow +VmOfferPriorityLow :: OFFER_PRIORITY.VmOfferPriorityLow VmOfferPriorityBelowNormal :: OFFER_PRIORITY.VmOfferPriorityBelowNormal -VmOfferPriorityNormal :: OFFER_PRIORITY.VmOfferPriorityNormal +VmOfferPriorityNormal :: OFFER_PRIORITY.VmOfferPriorityNormal -@(default_calling_convention = "stdcall") +@(default_calling_convention="stdcall") foreign kernel32 { - OfferVirtualMemory :: proc(VirtualAddress: PVOID, Size: SIZE_T, Priority: OFFER_PRIORITY) -> DWORD --- - ReclaimVirtualMemory :: proc(VirtualAddress: PVOID, Size: SIZE_T) -> DWORD --- - DiscardVirtualMemory :: proc(VirtualAddress: PVOID, Size: SIZE_T) -> DWORD --- - VirtualAllocFromApp :: proc(BaseAddress: PVOID, Size: SIZE_T, AllocationType: ULONG, Protection: ULONG) -> PVOID --- - VirtualProtectFromApp :: proc(Address: PVOID, Size: SIZE_T, NewProtection: ULONG, OldProtection: PULONG) -> BOOL --- - OpenFileMappingFromApp :: proc(DesiredAccess: ULONG, InheritHandle: BOOL, Name: PCWSTR) -> HANDLE --- + OfferVirtualMemory :: proc( + VirtualAddress: PVOID, + Size: SIZE_T, + Priority: OFFER_PRIORITY, + ) -> DWORD --- + ReclaimVirtualMemory :: proc( + VirtualAddress: PVOID, + Size: SIZE_T, + ) -> DWORD --- + DiscardVirtualMemory :: proc( + VirtualAddress: PVOID, + Size: SIZE_T, + ) -> DWORD --- + VirtualAllocFromApp :: proc( + BaseAddress: PVOID, + Size: SIZE_T, + AllocationType: ULONG, + Protection: ULONG, + ) -> PVOID --- + VirtualProtectFromApp :: proc( + Address: PVOID, + Size: SIZE_T, + NewProtection: ULONG, + OldProtection: PULONG, + ) -> BOOL --- + OpenFileMappingFromApp :: proc( + DesiredAccess: ULONG, + InheritHandle: BOOL, + Name: PCWSTR, + ) -> HANDLE --- } WIN32_MEMORY_INFORMATION_CLASS :: enum c_int { @@ -409,16 +798,16 @@ WIN32_MEMORY_INFORMATION_CLASS :: enum c_int { MemoryRegionInfo :: WIN32_MEMORY_INFORMATION_CLASS.MemoryRegionInfo WIN32_MEMORY_REGION_INFORMATION :: struct { - AllocationBase: PVOID, + AllocationBase: PVOID, AllocationProtect: ULONG, - u: WIN32_MEMORY_REGION_INFORMATION_u, - RegionSize: SIZE_T, - CommitSize: SIZE_T, + u: WIN32_MEMORY_REGION_INFORMATION_u, + RegionSize: SIZE_T, + CommitSize: SIZE_T, } WIN32_MEMORY_REGION_INFORMATION_u :: struct #raw_union { - u: [1]u32, + u: [1]u32, Flags: ULONG, - s: WIN32_MEMORY_REGION_INFORMATION_u_s, + s: WIN32_MEMORY_REGION_INFORMATION_u_s, } WIN32_MEMORY_REGION_INFORMATION_u_s :: struct { Bitfield: ULONG, @@ -434,10 +823,26 @@ WIN32_MEMORY_REGION_INFORMATION_u_s_Bitfield :: distinct ULONG Reserved : 32-6, }*/ -@(default_calling_convention = "stdcall") +@(default_calling_convention="stdcall") foreign kernel32 { - QueryVirtualMemoryInformation :: proc(Process: HANDLE, VirtualAddress: PVOID, MemoryInformationClass: WIN32_MEMORY_INFORMATION_CLASS, MemoryInformation: PVOID, MemoryInformationSize: SIZE_T, ReturnSize: PSIZE_T) -> BOOL --- - MapViewOfFileNuma2 :: proc(FileMappingHandle: HANDLE, ProcessHandle: HANDLE, Offset: ULONG64, BaseAddress: PVOID, ViewSize: SIZE_T, AllocationType: ULONG, PageProtection: ULONG, PreferredNode: ULONG) -> PVOID --- + QueryVirtualMemoryInformation :: proc( + Process: HANDLE, + VirtualAddress: PVOID, + MemoryInformationClass: WIN32_MEMORY_INFORMATION_CLASS, + MemoryInformation: PVOID, + MemoryInformationSize: SIZE_T, + ReturnSize: PSIZE_T, + ) -> BOOL --- + MapViewOfFileNuma2 :: proc( + FileMappingHandle: HANDLE, + ProcessHandle: HANDLE, + Offset: ULONG64, + BaseAddress: PVOID, + ViewSize: SIZE_T, + AllocationType: ULONG, + PageProtection: ULONG, + PreferredNode: ULONG, + ) -> PVOID --- } @@ -464,45 +869,57 @@ MapViewOfFile2 :: #force_inline proc "stdcall" ( ) } -@(default_calling_convention = "stdcall") +@(default_calling_convention="stdcall") foreign kernel32 { - UnmapViewOfFile2 :: proc(ProcessHandle: HANDLE, BaseAddress: PVOID, UnmapFlags: ULONG) -> BOOL --- + UnmapViewOfFile2 :: proc( + ProcessHandle: HANDLE, + BaseAddress: PVOID, + UnmapFlags: ULONG, + ) -> BOOL --- } -@(default_calling_convention = "stdcall") +@(default_calling_convention="stdcall") foreign kernel32 { - GetProductInfo :: proc(OSMajorVersion: DWORD, OSMinorVersion: DWORD, SpMajorVersion: DWORD, SpMinorVersion: DWORD, product_type: ^Windows_Product_Type) -> BOOL --- + GetProductInfo :: proc( + OSMajorVersion: DWORD, + OSMinorVersion: DWORD, + SpMajorVersion: DWORD, + SpMinorVersion: DWORD, + product_type: ^Windows_Product_Type, + ) -> BOOL --- } HandlerRoutine :: proc "stdcall" (dwCtrlType: DWORD) -> BOOL PHANDLER_ROUTINE :: HandlerRoutine + + DCB_Config :: struct { - fParity: bool, - fOutxCtsFlow: bool, - fOutxDsrFlow: bool, - fDtrControl: DTR_Control, - fDsrSensitivity: bool, + fParity: bool, + fOutxCtsFlow: bool, + fOutxDsrFlow: bool, + fDtrControl: DTR_Control, + fDsrSensitivity: bool, fTXContinueOnXoff: bool, - fOutX: bool, - fInX: bool, - fErrorChar: bool, - fNull: bool, - fRtsControl: RTS_Control, - fAbortOnError: bool, - BaudRate: DWORD, - ByteSize: BYTE, - Parity: Parity, - StopBits: Stop_Bits, - XonChar: byte, - XoffChar: byte, - ErrorChar: byte, - EvtChar: byte, + fOutX: bool, + fInX: bool, + fErrorChar: bool, + fNull: bool, + fRtsControl: RTS_Control, + fAbortOnError: bool, + BaudRate: DWORD, + ByteSize: BYTE, + Parity: Parity, + StopBits: Stop_Bits, + XonChar: byte, + XoffChar: byte, + ErrorChar: byte, + EvtChar: byte, } DTR_Control :: enum byte { - Disable = 0, - Enable = 1, + Disable = 0, + Enable = 1, Handshake = 2, } RTS_Control :: enum byte { @@ -519,9 +936,9 @@ Parity :: enum byte { Space = 4, } Stop_Bits :: enum byte { - One = 0, + One = 0, One_And_A_Half = 1, - Two = 2, + Two = 2, } // A helper procedure to set the values of a DCB structure. @@ -596,24 +1013,24 @@ get_dcb_config :: proc "contextless" (dcb: DCB) -> (config: DCB_Config) { // NOTE(tetra): See get_dcb_config() and init_dcb_with_config() for help with initializing this. DCB :: struct { - DCBlength: DWORD, // NOTE(tetra): Must be set to size_of(DCB). - BaudRate: DWORD, - settings: u32, // NOTE(tetra): These are bitfields in the C struct. - wReserved: WORD, - XOnLim: WORD, - XOffLim: WORD, - ByteSize: BYTE, - Parity: Parity, - StopBits: Stop_Bits, - XonChar: byte, - XoffChar: byte, - ErrorChar: byte, - EofChar: byte, - EvtChar: byte, + DCBlength: DWORD, // NOTE(tetra): Must be set to size_of(DCB). + BaudRate: DWORD, + settings: u32, // NOTE(tetra): These are bitfields in the C struct. + wReserved: WORD, + XOnLim: WORD, + XOffLim: WORD, + ByteSize: BYTE, + Parity: Parity, + StopBits: Stop_Bits, + XonChar: byte, + XoffChar: byte, + ErrorChar: byte, + EofChar: byte, + EvtChar: byte, wReserved1: WORD, } -@(default_calling_convention = "stdcall") +@(default_calling_convention="stdcall") foreign kernel32 { GetCommState :: proc(handle: HANDLE, dcb: ^DCB) -> BOOL --- SetCommState :: proc(handle: HANDLE, dcb: ^DCB) -> BOOL --- @@ -650,11 +1067,11 @@ PROCESSOR_CACHE_TYPE :: enum c_int { } CACHE_DESCRIPTOR :: struct { - Level: BYTE, + Level: BYTE, Associativity: BYTE, - LineSize: WORD, - Size: DWORD, - Type: PROCESSOR_CACHE_TYPE, + LineSize: WORD, + Size: DWORD, + Type: PROCESSOR_CACHE_TYPE, } ProcessorCore :: struct { @@ -664,14 +1081,14 @@ NumaNode :: struct { NodeNumber: DWORD, } DUMMYUNIONNAME_u :: struct #raw_union { - Core: ProcessorCore, - Node: NumaNode, - Cache: CACHE_DESCRIPTOR, + Core: ProcessorCore, + Node: NumaNode, + Cache: CACHE_DESCRIPTOR, Reserved: [2]ULONGLONG, } SYSTEM_LOGICAL_PROCESSOR_INFORMATION :: struct { ProcessorMask: ULONG_PTR, - Relationship: LOGICAL_PROCESSOR_RELATIONSHIP, - DummyUnion: DUMMYUNIONNAME_u, + Relationship: LOGICAL_PROCESSOR_RELATIONSHIP, + DummyUnion: DUMMYUNIONNAME_u, } From 5fc54ec7e57af02af38e6f979929d4542cadbfcf Mon Sep 17 00:00:00 2001 From: Mark Naughton Date: Wed, 5 Apr 2023 11:09:31 +0100 Subject: [PATCH 17/75] Add script for removing platform-specific libs --- misc/remove_libraries_for_other_platforms.sh | 46 ++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100755 misc/remove_libraries_for_other_platforms.sh diff --git a/misc/remove_libraries_for_other_platforms.sh b/misc/remove_libraries_for_other_platforms.sh new file mode 100755 index 000000000..5a5286faf --- /dev/null +++ b/misc/remove_libraries_for_other_platforms.sh @@ -0,0 +1,46 @@ +#!/bin/bash +OS=$(uname) + +panic() { + printf "%s\n" "$1" + exit 1 +} + +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) + remove_windows_libraries + remove_macos_libraries + ;; + Darwin) + remove_windows_libraries + remove_linux_libraries + ;; + OpenBSD) + remove_windows_libraries + remove_macos_libraries + remove_linux_libraries + ;; + FreeBSD) + remove_windows_libraries + remove_macos_libraries + remove_linux_libraries + ;; +*) + panic "Platform unsupported!" +esac From 119cafd963fc807466ca69c0464bf05a91471f88 Mon Sep 17 00:00:00 2001 From: Mark Naughton Date: Wed, 5 Apr 2023 11:28:54 +0100 Subject: [PATCH 18/75] Add assert_vendor() sub-routine --- misc/remove_libraries_for_other_platforms.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/misc/remove_libraries_for_other_platforms.sh b/misc/remove_libraries_for_other_platforms.sh index 5a5286faf..b66deddb6 100755 --- a/misc/remove_libraries_for_other_platforms.sh +++ b/misc/remove_libraries_for_other_platforms.sh @@ -6,6 +6,12 @@ panic() { 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 @@ -24,6 +30,7 @@ remove_linux_libraries() { case $OS in Linux) + assert_vendor remove_windows_libraries remove_macos_libraries ;; From 4030c5a6893f9f49c79c75a4ca05a7dc486642cb Mon Sep 17 00:00:00 2001 From: Mark Naughton Date: Wed, 5 Apr 2023 11:34:41 +0100 Subject: [PATCH 19/75] Add assert_vendor to Darwin and *BSD --- misc/remove_libraries_for_other_platforms.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/misc/remove_libraries_for_other_platforms.sh b/misc/remove_libraries_for_other_platforms.sh index b66deddb6..db2e33ccd 100755 --- a/misc/remove_libraries_for_other_platforms.sh +++ b/misc/remove_libraries_for_other_platforms.sh @@ -35,15 +35,18 @@ case $OS in 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 From d715158fe39952570217ebacfc26af4b5eae1185 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 5 Apr 2023 15:55:55 +0100 Subject: [PATCH 20/75] Add `vendor:lua/5.4` --- vendor/lua/5.4/include/lauxlib.h | 276 ++++++++++ vendor/lua/5.4/include/lua.h | 517 +++++++++++++++++ vendor/lua/5.4/include/lua.hpp | 9 + vendor/lua/5.4/include/luaconf.h | 763 ++++++++++++++++++++++++++ vendor/lua/5.4/include/lualib.h | 58 ++ vendor/lua/5.4/lua.odin | 822 ++++++++++++++++++++++++++++ vendor/lua/5.4/windows/lua54.dll | Bin 0 -> 354816 bytes vendor/lua/5.4/windows/lua54dll.lib | Bin 0 -> 30090 bytes 8 files changed, 2445 insertions(+) create mode 100644 vendor/lua/5.4/include/lauxlib.h create mode 100644 vendor/lua/5.4/include/lua.h create mode 100644 vendor/lua/5.4/include/lua.hpp create mode 100644 vendor/lua/5.4/include/luaconf.h create mode 100644 vendor/lua/5.4/include/lualib.h create mode 100644 vendor/lua/5.4/lua.odin create mode 100644 vendor/lua/5.4/windows/lua54.dll create mode 100644 vendor/lua/5.4/windows/lua54dll.lib 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/lua.odin b/vendor/lua/5.4/lua.odin new file mode 100644 index 000000000..ce15e185f --- /dev/null +++ b/vendor/lua/5.4/lua.odin @@ -0,0 +1,822 @@ +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" +} + +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: ^c.int = nil) -> Number --- + @(link_name="lua_tointegerx") + tointeger :: proc(L: ^State, idx: c.int, isnum: ^c.int = 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: cstring) -> 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 */ + + 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: cstring, 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 0000000000000000000000000000000000000000..44130fad2ce7e082a4e985b06594608bb91523ec GIT binary patch literal 354816 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 z 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�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%0AZL_?tlstU!r>N;~ut-YcL@)u60G8=@MR0 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 literal 0 HcmV?d00001 diff --git a/vendor/lua/5.4/windows/lua54dll.lib b/vendor/lua/5.4/windows/lua54dll.lib new file mode 100644 index 0000000000000000000000000000000000000000..21bdd6ebd886d0865de23af61de37d70d53dc049 GIT binary patch literal 30090 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 Date: Wed, 5 Apr 2023 15:56:56 +0100 Subject: [PATCH 21/75] Add README.md --- vendor/lua/README.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 vendor/lua/README.md diff --git a/vendor/lua/README.md b/vendor/lua/README.md new file mode 100644 index 000000000..6484ab2d1 --- /dev/null +++ b/vendor/lua/README.md @@ -0,0 +1,5 @@ +# Lua in Odin + +```odin +import lua "vendor:lua/5.4" // or whatever version you want +``` \ No newline at end of file From cbd2d896376f09d81fcb974fee3a61af46b228fc Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 5 Apr 2023 15:58:06 +0100 Subject: [PATCH 22/75] Add LICENSE --- vendor/lua/LICENSE | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 vendor/lua/LICENSE 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 From 31bc982a5387a130dac0db627eed459c11381a60 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 5 Apr 2023 16:00:58 +0100 Subject: [PATCH 23/75] Fix typo --- vendor/lua/5.4/lua.odin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/lua/5.4/lua.odin b/vendor/lua/5.4/lua.odin index ce15e185f..c1c18485f 100644 --- a/vendor/lua/5.4/lua.odin +++ b/vendor/lua/5.4/lua.odin @@ -542,7 +542,7 @@ foreign lib { /* open all previous libraries */ - openlibs :: proc(L: ^State) --- + L_openlibs :: proc(L: ^State) --- } From 8c327567c04caf82342024f7035760e54e73fc78 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 5 Apr 2023 16:05:39 +0100 Subject: [PATCH 24/75] Minor change to `L_loadbuffer`'s signature --- vendor/lua/5.4/lua.odin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/lua/5.4/lua.odin b/vendor/lua/5.4/lua.odin index c1c18485f..6b3179670 100644 --- a/vendor/lua/5.4/lua.odin +++ b/vendor/lua/5.4/lua.odin @@ -617,7 +617,7 @@ foreign lib { L_loadfile :: proc (L: ^State, filename: cstring, mode: cstring = nil) -> Status --- @(link_name="luaL_loadbufferx") - L_loadbuffer :: proc(L: ^State, buff: cstring, sz: c.size_t, name: cstring, mode: cstring = nil) -> Status --- + 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 --- From 3fa684d6ba295bd6ef38a0cf6c992d13dcb9d372 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 5 Apr 2023 16:08:57 +0100 Subject: [PATCH 25/75] Update examples/all/all_vendor.odin --- examples/all/all_vendor.odin | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/examples/all/all_vendor.odin b/examples/all/all_vendor.odin index bd5921e6a..8ba141e8f 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,13 @@ import NS "vendor:darwin/Foundation" import MTL "vendor:darwin/Metal" import CA "vendor:darwin/QuartzCore" +import lua_5_4 "vendor:lua/5.4" + _ :: botan +_ :: cgltf +_ :: commonmark _ :: ENet +_ :: exr _ :: ggpo _ :: gl _ :: glfw @@ -33,8 +40,7 @@ _ :: microui _ :: miniaudio _ :: PM _ :: rl -_ :: exr -_ :: cgltf +_ :: zlib _ :: SDL _ :: SDLNet @@ -46,4 +52,6 @@ _ :: vk _ :: NS _ :: MTL -_ :: CA \ No newline at end of file +_ :: CA + +_ :: lua_5_4 \ No newline at end of file From 012f386057964c9afde4e948bc18d9b8b0b7b8e5 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 5 Apr 2023 16:16:48 +0100 Subject: [PATCH 26/75] Add linux binaries --- vendor/lua/5.4/linux/liblua54.a | Bin 0 -> 510970 bytes vendor/lua/5.4/linux/liblua54.so | Bin 0 -> 309576 bytes vendor/lua/5.4/lua.odin | 4 ++++ 3 files changed, 4 insertions(+) create mode 100644 vendor/lua/5.4/linux/liblua54.a create mode 100644 vendor/lua/5.4/linux/liblua54.so diff --git a/vendor/lua/5.4/linux/liblua54.a b/vendor/lua/5.4/linux/liblua54.a new file mode 100644 index 0000000000000000000000000000000000000000..479aa3322e9a1af0b6bc6a0991bc9676fa8370d1 GIT binary patch literal 510970 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 aMxse9?NKgw>9xv7V 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ÐD;I@U?~%<2uwtQ(h|BM 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

|2i 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 literal 0 HcmV?d00001 diff --git a/vendor/lua/5.4/linux/liblua54.so b/vendor/lua/5.4/linux/liblua54.so new file mode 100644 index 0000000000000000000000000000000000000000..d7a0cf0753546b20f56eba8704ffb503fc938247 GIT binary patch literal 309576 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 z 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

9LTMpkv5OcLoYzLoOpn4 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 literal 0 HcmV?d00001 diff --git a/vendor/lua/5.4/lua.odin b/vendor/lua/5.4/lua.odin index 6b3179670..edfc2db5f 100644 --- a/vendor/lua/5.4/lua.odin +++ b/vendor/lua/5.4/lua.odin @@ -9,6 +9,10 @@ import c "core:c/libc" when ODIN_OS == .Windows { foreign import lib "windows/lua54dll.lib" +} else when ODIN_OS == .Linux { + foreign import lib "linux/liblua54.a" +} else { + #panic(`Unsupported platform of "vendor:lua/5.4"`) } VERSION_MAJOR :: "5" From 4dcf253330f47d7bb5b52364a113945842ca490a Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 5 Apr 2023 16:30:08 +0100 Subject: [PATCH 27/75] Add `vendor:lua/5.3` --- vendor/lua/5.3/include/lauxlib.h | 264 ++++++++++ vendor/lua/5.3/include/lua.h | 485 +++++++++++++++++ vendor/lua/5.3/include/lua.hpp | 9 + vendor/lua/5.3/include/luaconf.h | 792 ++++++++++++++++++++++++++++ vendor/lua/5.3/include/lualib.h | 61 +++ vendor/lua/5.3/linux/liblua53.a | Bin 0 -> 463532 bytes vendor/lua/5.3/linux/liblua53.so | Bin 0 -> 273536 bytes vendor/lua/5.3/lua.odin | 759 ++++++++++++++++++++++++++ vendor/lua/5.3/windows/lua53.dll | Bin 0 -> 302592 bytes vendor/lua/5.3/windows/lua53dll.lib | Bin 0 -> 28930 bytes 10 files changed, 2370 insertions(+) create mode 100644 vendor/lua/5.3/include/lauxlib.h create mode 100644 vendor/lua/5.3/include/lua.h create mode 100644 vendor/lua/5.3/include/lua.hpp create mode 100644 vendor/lua/5.3/include/luaconf.h create mode 100644 vendor/lua/5.3/include/lualib.h create mode 100644 vendor/lua/5.3/linux/liblua53.a create mode 100644 vendor/lua/5.3/linux/liblua53.so create mode 100644 vendor/lua/5.3/lua.odin create mode 100644 vendor/lua/5.3/windows/lua53.dll create mode 100644 vendor/lua/5.3/windows/lua53dll.lib 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 0000000000000000000000000000000000000000..67b462b1baaba9e2f509c36c1961cd11c65202ca GIT binary patch literal 463532 zcmY$iNi0gvu;bEKKm`U!TnHPPR8TNAF))EBN#J5&U^HN05KS1x7m|=LC1_SdN5eDW{5(s=Hhk=EyVCdl5 z7zUP;9t^BPR~T4xA26_P{KLTdG=PDv*@uDcs0IVuB_9U1_Y-nT6XTOJQj@cbOA?c_ z89>~M-2AdsFe|a7ATcj98O$zAEh^5;&jYg)lZrF*Qc^3xob=R^lKcWNvlziF$}dSQ zftZq@XB8W{8%_aFr zCc-!nkCo&@t%h-v^7C_26CpuRlAi-H0BmkiVtGy~Oaj#dCHW{0E6Fd(C`wIC0c$JC zF96#C@f;|4@-iV#2D1@f1#zK{0c!;Dk?jZZk(>kKmZhNyp!1WHbMlKzp@9L?f$TjH zKPNLiqXfnAAWB;r=j10rLm89~5|eTuft#LMl9rj81My~hYDp&8*+q%v>8T}1 zOk`n55=t&gO)N<*K{hBiwImTm0OTe_Ix0qS1tLQY#=~k({5G zoCsmUQc-$pNn%b;esUUEYcUEhFSQ&L0`Rn+o?22`fN&YesYqO?R3;=UpuDX7Oh{_Y zOi9fH+w2_=O?uw(2IPAw`+ElN!X2c>sBBx!p? zOv%hEfwGEIONvrUN{jMf%2G@6^HSk1PsuD!&PXguPc2Ied-P?VaM2@Q_SJUFu;zZlL=%dE)B%!6t!PA!3jbbN7YNk)D?H~>LWgwD=Q zEJl$_&M$>TJV-I3><2||elo;&AR}|&98f0COUnm&&OJUcB_$Ki0jKEPVsHSu#}}36 zfdwE6L4`aL7m~D)1o8_&#TqP2xW_}vTm(PAC?&NBNqtFCVsdI~MJhNixx|-b6y=wL zY;uV&N-Qrb%_}I%FG)=y`t3OQh22X7KWEgU>-O+T;jpS2h3oo;|mgt ziXoL;XgsVaaf{DOEq4axBxsop7Vtq4$jr-x6b0ba?G~SwnU@02@gVcv;z4S`DF>_- z6jb2obc;_bN=-%L!V&?jQg)6{N-QeMOf8BBnFHq~B_?M>MZlJzDuSk1XOOe=ld>Q> zOAE?UQj_6n&l!@_(=ziCb26(SK6VDX1{7^cS*gh-V4paHQdLQ2PBE-a;T&IFk_yg` z&hcrbIXRHBH6k7q03e$p;!EmaAj(0tKwd#9 zxX=PgLQ3X{_?-Ow?8FRceeEBgnO9cMuoIOEq za|Oo%gbfKPXj{%T9+F`YQi$dNL=%FKNN&OLsf9Ut>Cngsj?YLe1~E~gR9L$;802P9^9bY@FbB>kh1HrK z@t|TKBo1PM%McH+uOUL<(heLl9^e8pBfqEw>VAj-Bw>Ns5FOwY1l5t3TArN>Zu5G? zBYflm3UG*Gh+tw-Q6f}TdTI%{LJol^;Si9$CE%n2WhPZZ{TdRVpOghESwZm%GB6|_ z#w!LVfRK1lu@vG9kpr=lGV@^ElA=l^9!L^g$U>w;<4f~kB~Dm8tUU}i6vPD;*3he~hVbAG^00U?6Y85Vqy|SA$Y;eRulyf%_vY+05&8uJ{c5P zU@zqtq~^sZWtJF&Gp=uZNq&A(Cb%B+1*r!$z`*K!!PQ1$X$6=E)&*~n`ox#R8b3bq z@B+ps9@Ne#f;RPhKrTuJRR}rY6ygJRE;2tawH&3v=@XCM1oeq8Ni8mcr(YjP(Fw20 zeB!}XBdAOUg&9;jF%O)+d_XOWf~3;4G+6HP0af9kECTI6f%%9M$Ol{kAv+LMB0=~l zM!?H9pLme*uq=w;AygNog4;tr@uhiiCaA%jmYDH#z&e~z6A_(4pZNTO5@aq|15!o+D?s6c@)RgG zAx?lMXPDYYYrIi3OQ@`H0a~$S5jgDiwCoTN9P9* z%W{G8P>)_#kix_K@-7SvjsI@${P4flqw(L3oge;}M0j)yK;@gOIK)acJi57dfn+p4 z@o%f-vbOS+!{pvP*36cZ5!!ab(qw}jr=e1yu&fhOU!mfq~nrk^+Jv)z-IC*pj z3wU(C^XR-pswK<@Xj z{9Y2`(d{qbk$lMG-~$#9&4V7D{sOI+>g;^F{REm{F?t+)#NylQBBz~SN1?JnWd-Ee?`fx)A51BmkJ zJOE14E({R+AsNY|^?wOBNUcYA!vzKghQs{w4q*A-Y3gqL44oeue}U+7L62^K1&{7< z0S|3KP*^fvKuTX=|8%=6fbt(G3pF1S@X)*f3SCG(1a55EGIg!R9r;;Q$%v*m=>X*Wts9 z6Tkoe_e?(N(Rs+H^O(oMhb$hNr#v*zd2}B1XnrN&+IrH1-}9PB=QR(@LuD$^{Qj9g zpYbz)KA%VPK>?5EcLMx^o*(!H-2^-=KNdaqXg(z1(|ORx@=!67dZy3(`GO!RkLH&G z{DMIr_yrvWJS6kk;Mn*RRG!r; zIDT{Da43=V>~>J_=w|TfHUMWYPS0*3Q0^+_gIK{2Ex&v^kAnoD1r{WJJs|e^bo&du z=mA;5pU>dgd=QlJ96$JWdI*4YAf=ZV>A(K}_vjUcMotNPw*v>Lh}!Z0|NsBUzJaFi z=3|V|vKX8RSw5hpmlxu{{{Qa|;As9O#y{mi^RG1iDTg>O@NYW+O}{U`|NQ^Ixq?HO zf64){C?dPT!b>8>qnkxl1DwKLR5%O|yg2+5lwptW0AC zc3$%A{PDu}Cn)}|f#dJs3w^Mg4nYIM)AC@6goov!5@DatbB6yxfeein7X}8y10eok zu>XR6y4?kO-M)Bq{`Tzk_|W`=v0MU_3>-dq_BwzPCa8q;>^uO<7@oZW4?H^Wdv;y` z`v_D%3q+%ZH^hCH!Ab1oi&;NFPP_+p;-MEkKS05TaN?m7F_04l9h-kLmKZrU|70qW zacwpUpoG<<*;zm!`Y=@fGN@|8 zh|~Aq!Rdh6qw{#F+9!Si25{_pwB9aZ>SXo+RT?QC#*k!CDhsYI4#OfnjsN|D)&nJ% zKk*B&sJuP{4jfo~277d3x33;zpD@TiJ)drT)@gvO^XWVg4b3NpmtZzK?f~VJ)&oBL zt}H6A4}xt*Bw&z#UxNsFR zE}hRn%!v?<9^Gu95an&C;9vo@n*szpI)y!&4@iI-BZmzSfF!?o9A^gk3M>RJ=lHh; zaKF9=t#6v&aJ+E-_Wysk2S?|r=12C;zt~H{njcz}N;dyuDY0q(#agQF(QN@wHT?1n z&A&uSg~8>Q1Ejctmdns&hSdII;NRu|s-Zc+^%F#k1jr~b9~_>?zrxCs5^+$|=2u!N zyGJ*JPq%{vsOAI3yH7U*h&chQemYeBBmU-Jp!98cp!pYjDZ5WMgJ<&r4Ujsx{ZM^y zK3ISF*Z==P_Ed0qlrlqAK-~|PH;0*T-~3ChT*RZ77Zi9N$s!Xy7*E;#f5b1(V0Zvh zKYDaS>Rph(nh$7z^8=`EJMO>%*3*1I0F=!S!^(4z`A~UKjDTvHPmp#1xRM0d-ynI9 zP6LqKafctm;6f5C>%st*ha??PCE9wa)X$^W6l4=5v2-5x=ynzG=#=2!7R&)Mp!t*o z|F%n=0Y5xCT?MeDB~V0o^g2sK$3pxAGv@VnSbZq>3)}|%3o3;?TECU}LX>oe3i$LU zNO*KI@o)3sK(vU#$@P$cM`x%2TCxRM<x34@y!Epz=fzdcy#)xc=&X>s08?Q z`lv*-94N8k*K|=y;Mep~Dd5+fq5|qc@N3RdnZUrnz^}PPWdWF8qp|@^Z&3j?!T2@z zsDN5oD21Gc;Q^1{7L^Ymn|ec31fVXI@aT0>F*xp`A|SxPz;N6}MZ^H4qSHl1fe1f! z`>1H7co_3Qsyj}P#v>q~#6qe(Q2028ctXpM)=Q;wsHsH^Y>_*>ecySl^D@-VS^VK@gTT9&36(1z%S?`C;)1Fd02ibedF2507^NY z%?AV=k30NG16ctok$gH`1?r|ndvv~!b&LU5C(!bw+g-r$QtLPVsfRkjjoaf6KS0$w zI3pl6o1Zii$%matdK9D)! zlmN;o-R=?|-4zaykZ3-_;nVpD99PFcF8}fI|9|BC849lOK!u{-M{q&m(RmcqBLZ~` zJ$eH^lqf;^gdUw2AqI9k3v@gD0Htqm2M*ls1^4@|f#qTSK9Ct;{Rcp;0R~XEN7IJV zzVqz7_+ssc|KNs(N9Qr0&Qm^}$6tDX{Qn;*3_;-s^6wR}qhHj106Vz3g2UCL^Js}B zqH_r9xB7G{d30Vp?!*BpQ?PejA^F~;+rkIh{(?EbWE02(V5ftk0_1#;PO#6xzIKcO z`5WXOuv0uh;rH(S|NkD{*#e--qqp<}I5a>lY>+|xg03IXybq14K+XDk47mF!0thqr-71vB@7R|@CKRR`3&UB<1Q*3pj6}2 z$)e)XZGqxikUji@t_)DSnji3cbo;1CAo3}@NAnSlXlO1)ly4yW9YY;Eufi*Ru(2N9 zwE`ZU>>ka>1&+J_a0MsnS^?MAC-r)+t#9i!LHP|_eAe^DI>tDH3TH_B0g~AqW5L;t zU!K9G^Q8+YEgu852tf6~>mx|11Ck#>4cnA=kSZ2bWwMr7f@*jd&u#|^kK{`p-BT_s zU<5Z|TQ8MJdv-erc);^5$Z4LP4g%oj&Ed2Opn9%5K;!i#XnhIc3%ouA<%9eSvhT}V zP|P!Ub_WP}bbBa(yIq}LANaRBf`)aPUnxLS4W#mehHtlpM<;5wEeQtYqHj*{s-5Zm2XhW09%mjp#jkABmgP{dc8hi6apv%Lx}W?tsGbf%Dyxi9)hG-MESAq zHK=WTA6ou`#-coW10FzgP_V#f{(PqopwXsoSB7H_Tnun`iGY-X`_){qVXIP6kLDK& zpaKh0PD9)M9-a50#yJbTz6-S~;o)g#&1yf&m;c zTp(A10-#h4G$aT1cDD<-yn^<()S%@RG~dF4spJB}h0X%64}q;fDp5fB+c5-MI!nCZ z1-Y&}SfJa3qr2!w^F#jDZzVQ9-ANysf3lVYH~(ZWsq^S|mhebE>C?I71gMk&g$cMY zf#(U7@lKGwXjj80%|F>okAe!9;|`!U6ay%rUxUjZ0iVt!4d2!$CHAnf6As63E-IYN zrPknD9TuO#0AIbd!`Tm9Q%m4qOLGRgZ017^j&M<}UfFB)UT+NRhN(4ZmUxG+}e6Vq(H)cSD>W?$P)6dywLfo z`Gi24W2cLX6F6WzyIoW?(j1#pRGi*>Kol7scp3Ho|9`MFG(17^=NRS~>f3n~R4ku? zwm>aVLJQPwXgvuVR_c7_!|(C{JeBatr}G=wG@s6wKAqn@I^X+rJ^~9kb{=UxP|6SL z-T8E9d~j^2y>@HRC?1VHy zJ-XTW1sT3Ma5$7~@#qZ`@UXm4x*Fb+SO~TmDLFvXKd3$4T=B!LgbSRJA?dl>;e%u6 z38*i+JtTZO&w<-0DB2Tkapa!6~04P^?8+h~v!YWK~yGNk)Kq(7I(4#XLW4sfT zXTZs!`5$AwTdl&9Mh~wd7HlSYBafcu7phSXqvKx#~MEm9+Y$g7#hL@UusFhl~wjQW6YKAjgpp$^UGff692%w4RV1nLbPdma9Rbuv3e zc+BwVb~&iv(aqu6?eM{;H$cLp^#HVx^Wk^7@Om-7JcFy@rPu3`LJ$-_pn~$JW9Nkz z`yYZ_Z-8)pBB&+sL#;FrWTg-PHaD>Aok5O-_&^m@IQS+XfJ{F227CZH#CmrmcM9<^{;2AxTce(>UKwaGi>**Xx54PEP@TK@MH(-h`QD}To@eKw7d{XE|M%<` z^5|ypO+Mh&D|5=PSLJ|5cd>-0b%}~Zi9M_`@a!&8kpK-fgKCM+VhN9CHx5P*%L^rH z$K52rgFD^DAbGIoIia2};Rh8~;B*5P|A;(R1d6#~jtlA`OCylHsp38Kp;jF1(XlZGpYh++#08*ltUzDz+5D@CD8UYYQb)l@Pr*Y^AthD8Ei=6|HM1x+C0|D&Tu;F{ zH7B)LL4|?Ao=+cH$H0VRGb?Xk&KgQ)p&ka^>QaaO4wk;^Xk+&IdDH z`8XIDY#10AYC!547#P4UN;G}$dg32fIae(9a3{+eRBo6h*1E?5id>JGRa`P9cm>fs|st!DW#=yV; zG9M%?!N9;E0~%CgU|{eC33%`+)N}E1IC4YMh6Pj(F>rcwfuuK3+K+>$eMfG8INJ@BcXUAMAF3Ce4?Oq; zGPw9SJh%hEq#HP#yt()|T)DlW@w*19ULRx^G~NzC#b9m%#lsb-m?V-+!3I+I z2Py^%Kaf(8m;k77U|?X71qndyP=SiU(laP-ETCdpAa$;M0&Pq#d=kyfE_@20Y%Adk z4qG>F29VkmsM-RMT5uS_$_FM#c&7B`W&ov^2~f45a)kkGt~;MX8rU>&TyB8MgQiv> z@?Lx&7@1DNA`_(V3RKNJxP6E?iH1jm3pZ0TtQ3HxX&z7^$-uy%2+{}jy8=`U=66sS znLx!raR^eX0&4g{#XxC-0qjRlP&#nuQwZdf@B$Y*450F<0ICig=V1Rig2K(6PoW6n zGDlEy%LA8sj(i;8{I~?F2i$1#;1lrY;{cbtd!XW=jy1$ius!!R0|RI*84}juICke#$Oi`;$bF#rb%Cmboy-x}zYC$YEem0SP%rJ`PWAB=>u8gX6-09i)MQ z0XZ%}b(sfL{4huw9RG;8aOX3qN3P1extZdSsxojM>45651L;S0j{;K^+(GV;{ImtC zHV>{A7B5VmaJ8-wwGW_bm!hk6V9JB5^?<150ng3PQ8Y zgF6;Y#1&M>fbz`)sM{ecA@~G9W&IbZm>I~c;J7OQ*Oj2S6W{^~GB8wvC~!Iir!5yg zg$Q_jd2)w9ifwRN#Q;tZ9#DPCP<_ozv0yVnZb*U3fy#G~G)SxhDh6VM#6Wqs2P)RkszS4%9A41}8mm{c!;*#|w?C9ww%8EsQTziYq|H!F?+R28NY5 z%misDBAnZvZVSVST}$P;t-+OQ3Lpxf9f{1(gE}pz2|LLQ!T& zJRX3GL&{AC24$!?tjGnm7eMCeL&X)KMKP>@Xa^N{fQrNNwI5VG0V)peCxXUUn6bxu zHdOrusCsZ;k%57s3M%fv19Amqya~kW#$nD}sQLz|dT>9Hfq`KyR6GIP5Mp2e_YD~s z81~^X=R8zB10TpXM4#|JRNMe64)gCQRu1i=pBSLLeTb ze*j`_fr=YI#bM!j2r6Cx6$kh07#JANL&Y6H4Iu_-zm0)`;SN;104fgdw=pm*1juT8hw1NWn!x$JCf}!FL;-JuCU;y{Q7#J90ahQ`1Reu4h9^Ch0U|=Z1 zp}rQXo&j2rfcsqx3=C~J)Pw3*Y~i*Phx#2*^B+LXhxN@4;!uAYs$K!wFo71M4A-FI z22gQu-;IHR;VuqyUf~e`1~umcG^0a{4+c=Zj?G_uY>@Z`cSaZ(7{Glj1_lOkHtgv^ z5vtw+T2X`hT?`BiIylr@K-C|Bst5PCK;w`&)cZiye}JloQVda0aRF#S4$a;S8BlQr zs5rPU#=yW(fy4YZsQLn^dT^hNfq`KvRNMgC&;a+x7#J9qK*b&8A?Xv=58DJ4p8ypH z_r(|(7!KjE_c9v;gCGMd1FU=pwWq-*f;Z77Gl0*CF-lBHDPl-0tw>J=pG1&YT2TyP zrGa<*GeCC%>lvFFm@(-2I2(cpBM@N>+G31;NCetZDDYzvU>ob9`})Br96(P#fJs63 z_+uUf;sSOF@*ybT&C>8q>R3-{iKo?hV{rF@H%5bZw3p#OeGL5^g?QpmBLkg|kOw}n zE1n_V-N)a_(I?*D%`Mn9BtFE^$;UOGAwC`)4)Mtu+3{(K&~v^rixIo6<1>p<&UHdQ z!wmJvgm|PAM&QhNq{GcH4qQM!jRABDNoHPp3DU`DC?}J|!(_ml@Z%vz@}xuen%unOb=0~tx$Icwk`gC0BsJ|YBmst{NL>=9}m zzJ_!%3go~NnCZDRJCO~3MhYmAfR0oFSqT<|dATUDyg0Q4eCh|r85!8l69Op$Wh+G1 zPlg@c1}UyUHb72cLO+oSd>#czItqS{h)X=^oFwoGQ;3svoZ~UhKY}0IggC$nl>Jf9 zfUJK;ncxVPgK2QaeT0rM25p$>90LObv^oXNc0R zk~pZz22&3jw*XlIQjcuTTO{?MrWs5ha1B8elrUk?;X&~gKmWMJkyL&ZVi1{zC(iH9JGmm}Fb4@n$3evc!GS0JfB zha`^do?uX*L)`-^a%O-k8wLi3c~EhXduox)*@q+!8Uup4Qx_D7(C|T4Z;B+2T%PPj z5=U151W6oO{ZAxu&_Z#Ty)w{_JII|)NbW2|5(lkJg{hwj6$h2)psWuQp9d8OnS)#o z-#`)vt#*g0*8^3?Q2%xz*&BrkT@ud!^|&05=VCDMI>=#^p;a}^Qj=UAZ!2?_W>zJ3Lg`wIH-*Tk^-p(VGF2u2uKh~y$w_x zR3?L@Kx#o4w3Y|Nj{y-#>Rq7f6VSwA>Qm6feW2uz4ep z7zjr|#X)r$vicaPI4Er+i^JxtVDl~@Ge9^6svcA(BdgDVii65tWbquRIB3rTvUmYh zyayzR6h0+TanMl~ASsZYAY1_zp8^s@QeOiVht*>swIJL96$h;s0BHeiyay@{TiXp%3&J~~;-DivP}D=+gPyNJYCsr0-@*Kko-bhTMvq_E`WSS3LG#@p z^RIviq;P|+x8Q*Gb3twgVc5C~88mU&x(Wj{aoD;F7c_C$x(d+x1(4Msvq2cPt|A9b zJ#1Y?1DZH&UBwJEanL*$$Xrm+zU zh9ZfB=2JlCz`_+I4Z^T>5;h&G#b53v6Eh2AX=pp1Wu=({KG;!Gc`VKU4 z*gX0ZG;!E`xd60539=J}Ve{oS=;F|RGHg5zq!xr>^WqcG)Whb#kD!Ue=DA@@7C~l! zFl>HW1lm3aiGeU|9$EuU95xUA1Wg<^ulxf|95#O}0&N$A%m!iDJh2a&IBY&R15F$@ z?^}Z=4x9I#fF=%`_uYXe4x8V-f+h}|--Wf`L2d+L*!(W6Jq{8BVc7gGgI;lEZb@Pi zgI;k-5rocwv5Hc267@g;f1jvG^if~GLu~WpfPZe{h+vom1KqU*PS>WB5;VCvEJgVvjXf*3vhF$6+%Yyde98vdZJ1x!CI{IS^$(pjJj zA{iKFfFh280bC7(`ta!bLB$?=+5_q208N&F*6W~UERcO5c^C#&YuNN}fObq_{V$k$ zbp1KW`6;PLhpt0TSXTf82pdAe&RjP%x3GYS5P#>kPI zJh~k$JbHOLTEEo^cRT)p9(mCGz`ntTjiJK1o6*(qK+@Z!AESW_6Pp|ha6kmJeps!yxyKR;ovhiRfYrg z3=pN9ADT}nbuuEUbL{-s{O^B>E$mFaT_9UrI?ufb{tw#UFYcLq(4#xZqMN1Z;0wOq z35*Q?{@ech&&W{1?bhqV#pu}l^MC1Sq%&|qh9!G+v-?2Lz3#5CcrC{-&(O_)rr)l& z#E223+SDWYm`5*5yGQ4t)^Bx!-5!6MAKE)M*l;jZvUv0c{OJ|~@2XcW*#qvMpzWb| z4EOB(06N44bTGjcpUy+D1F4_~liG67snmJ2k!ZF8oFA(s`E^9j3H|^7-#7Uf z_~-@3502dq9FE2=DjX~9`CGsL1D$m8$fxs|;eXIEoRBl)T|2+F9^h|P0VfAYXn{`C z<9K-je8R{(Sh&7q0v(Pvq1#`?@PMViK&eBwc=IpT68Yv|Y^5gPnDc1;20EiYoa49~ zIE+0y#STw^%Lshp7jOqjfpYdIenB?K8K>aO`4V@PZPiS7S{r{hlpVHu7I@rl~IKZRZ9-3Fd$3%e6*8TUN zzhypX@ol(c=SR=Z|KPL;IzrI3^GK*iZ@xfq=V{QPAFt)XXZd<|+k=k*Jmt~(?nVCp z|Nk99dBD%L^P^`sYG!lk-GIn#tnR%fe2ks9z~`0!f3fZN|NpHAN;iQ`d+5>$HVt$P z4al_8O`sD%kWwJ%EDP8fKH#GbcY-o`XmEG90_d=+ZvF0Z4bV9j2LJ#6KklpnT3z6g z9IRj+Dp70T(d}yC(y21Rqr21tBKZ+ z0gvud3yxfs0>&cibilqL)CkD zbRGk_;B_OcyaMI_6W}lp@$CHL(Rn?z^DF46W{>7K5h&+4c^Dq>>CI6Q@acT_BK$8n z__PfVcy!08c%*n3%RtYossx>7)O;iYDfH67@#fQ8qN3o_c^q`;lLT0M$-(Bo-2DBg zK}S*jW#jKZ4rVZyaP+$V1|1{r+FYZeA^eG7z(qx&R4|SInu`ht=%nmV9{gGm=1Ic? z;3cYQ{CWrZXC2^oJ=A)Dza<@%kKlJo`1IDO7M)A_3N9Vo28q0(HV zVj;}m0;=!8_86q`>mA_lQU&GzR(X&){O?ch0#!j^D`tbNXgR>&$^wdLW>C`#oc%uW z3p#VW{0KU4XhQQ}-qP;o8WjoQ(h$&zRRUlKfX-So0Q-l(1(awFFZp!-^XdE!b_J+- z03EIMaxJJt=mwpp%M7Z)JvyB^z~;Z4_78M$8#tc9#(}iI_v!ox)8112@BjbT^TAxC z^JYNlwwvwS5yny;{%zq_mKSPR8uD!zQO*!<{>NTY3_80GT3$GI3v^y=dxBvHnq(H{Bek(l#Hug~c5fC3z-n4!LSypak`2k{C>&en( zVEq^B=RsA0{n5?Td93jn$SjcMimeAK*0+A+Z!HG}J=m@MJ)l!!UN42#$4Kt7yih;0 z^(235HCU~`mE|e^9#EjZO#A=;Kj@4dk7Rd+&X3maDs_?`-R2(MWfnfYE^U7tyBVNu z0+teq-lG2pAF>^MCeC@T`5enj)jyyRc41)XJm%PW$fcJ@@ZdW($AhoL9r(9>b7cHv z`LRaSwKs~<(eiYypykKX1MvJ~`LSlR z-{+L0=10ea55-+LPdIimAV&bmy`2}EfBi3U?G^)3Za&@ozTJ)%ui3%*rt^?T@*&4= zmIhGuk5r&>_PQ7`Hvjlvde5V`T)?OE{L7?Y|No~=fR$67e31A6neP~~Pp;vAJ?Kar z(9I(*-RY=DFLD?jIPMNEwqD5o2Hl=eqQU|`X!U)kiwX-kRdu_luz;&A#38U8pt}h` z*N}h}z`_G$U-KcxgU{FwJ`(4=)_hLw%12o%X!T)ruiJ>%gH}MDUzZ26w|@SY@OF$H2?hnzw@3)=X=M_BhBaZ zUKE3GZ+HMIXwlP?M>o4;=Li06jZ*#YC;os)S(|L&TgNx;XIxbtVcCHRb9>!}99pyHdW`NTx$bTNqZ%`AM zgy8}HZEhT(6A?W?=lOqv9!Lf{-@N)OsGW>*yfEn23k}E-;NbA|XnuovrXb`9auXGg z&JxgBM$IhfKay&)J;10NF1aXrtE(`xL*MZ&BjNd z9>>84Y#@Cvr-Dm#=o!%6VEau$_Jb}C0GE$ob3u0pfjT-O6S|pH|NpNC_vjfrnU1r8 zrh>ug5vuMu8>r6-vbvjP!oe48s-PB1ryB?OOsvpuHjmD)%|EzG9Lx2ae{k@(fO^2q zKR8Pzy305YJ`-;~$NEC~`~UyPT^T?Ice-+b4q*nnqxl6ds4{*Z`!WbrA5P%k@5X^q zqcqfVbMS9-<=O?Rwn}vP_m^@Ud?0@C86W30&SNi5enU6eg@FO$;Ml{vK<>71w<6V09^QVb2tCwDYu0t=+09f$t=@67(dwk ze=x!DTk}t*&KEwN&mH)u96R^`T;v~XKF9pR=o_fK?9Apk&J1z`sImqn70B_D{H^aH zoe={_27|XJx`R17-}!Vt2iyDl;Dk^70?r(uGzV&Sd-Q_S;-^pif-azz((@N{KmGp? zRu4T^?{z=4KJ(}XYXfZ=WdPmdB;e5rO2Xiz>j65GyVFHQ;Psvf-Oe1AFZf$R|AWjq z_(0sJ^ZCJNY@Ekl6o38y|D_!$PQdvN)Wq>f4(0$Q0gqmu37xOH8R69sq-?v;$@r2N zRA++jBm*~`z%B#(#-V5DUr@sreDE?T8aQ60{QLjE*_xZb z<1w}9pe zo2|JW_kr}3aD${6Ks|!aV~*Xf3ND>beLCMCe9Gq7>8jHCuJIhR0|Ud0k}seD@c|Ww z$3dzZ&oMJJFo2Z2i2MS&gsN1-rSp?d=ljm1AZf4!$WV|wUAs#aTswcbbUp-k2j07O zma4dPetJ>x`Tzg!Vgbj_7hoxn?iVqi|NnmpsvDv4)*Z~@(OWD4bK^@!aDX~6KumgJ z`vL5wR^9*q|L+BP$8kT11f7Qm=}$U_9DKwV>ezV&bR`NXUw&@>!BZmH{DZwz$D_9x zeD8_JxBvfNJ3-pb(EJUG)^3&worju1H;K#3Utwoog}Lv_*+ zKY_iT|93lcynYA~2f4S|j%6*+@tf;iw|$XR=l3gFAuuN12oJ6qQT4CUtfcS?R+CB4D;;#=NRe=Iwv?3bOYfzXcrSQMB>qT&!_XdW9JcY*gAIecN=^3 z26OoKx^sZV4>}%v!uKNRGw3d;a|fS^yKp|^eD|X01L!8TFoomH;5y5h!?T;squas5 zr88&3AG97kTKg-^r?-g1F%(>?g?e;e4R+~P^XUBS*!+i+zXi05&awFqS4oIt^B;~9 zz2;g5_7dHHQ8Dt=->qA#a@0;L`o28L!UcK#O7hJ8>$(fKag2Yg`& zSk1;?|Nl>DsN?3?0UFTt=)C5_?+Q8Joqt;~7ytfX4p2GwfDhJocI5ox()o<@*o%($ z|Np-%1s607umk(Miy^9E^%>`jB#fJh!oJE9;7@3iGj*JpU&r?n$|J)r5EVZ4|shG%8wZ31*pDf zD|2c7$zAH#4Jk84-v0j&3i94!5m>3%?WzE}`=GZ}!=v+krz_-oL}<+fvKDlC#)Ms< z;<@=JbNNxw^E;~D~bvtu(ICFvXOtUrT zac0o0S6Zht2k73n0~{UB+|kfG>Ks95PJ`+j$X#L_&HtGATe`tD>=(z*v*p^oWjr3e zpbi0e;^D=Mx1dU_L=xgQP{oaiujYTurOzQgb!mkHg)0^QD_6wz5M(&;Sl!uJJ8HTZ;UXmYcD0m``ypfm`IuQTud z|9@!)&PCw%?{Q{OLHBw)EPjqNgJz9hFNg7=$#3eb|Nmc4;+JOtSAigdK;%9`rLG>G*Iw5C0J#oS zuKW`zH3o@f{{@MF%7K>;{(vsbc*9}%&7<@Bi$gELu_gzKHAH;*fG*QH|56p)n*^5& z$9y`^gVekf{Q3VsxPR6BPlUf6bSQ{pm}}=TP`P-u^Ao6uI0GFh_DE)#2+o9^pFJ2) z*!_QiC{IA?#;5b4Pv@%_8()JQz~8cyk%0jcxQ=m$UBN}dGndW}4QCh~n`;?ZT=-oe z$74Ho^Qbs>moj*CzW3}6gxJoqB>?f?JHzXkYPKICi>nz+HiGFYKZp$L>%OQ1b

@5~@;XL>98o09wDQ{8aT{_P-pOb&N6G^_em>2HOml5DJ3U(JL z>ex%=J$p+*S?$GA&`lxTt_)~?ckK4%0C!XmJ`@Lyr8t7_Jp{!FsEP)~$jirnQLo_y zm1p2KZny%d^6o5|@CSJ~1Cl;pF*=5Hp78Aa6MFE0c;{E}{=8t1Us%5Q|KG7AN5uw| zJYe;C^9k*PkJ&(~j=hk00UB!Y>3j|vXW>Rsot&RnT#}eqQp}K?pI1_ppQBJ*QdF8; zQd*R%P?DdokdvR6&X8XKnjnRo?vYlSmkhe|TOq$lA+@5QD7CmaGe1uuFEur#7_1{V zF|SggC^bE^xFod*q6ZY+!xe)@2$1~-ssllo*u$AYvml^`DQNJW+_RZGp$-6<16#uY zJCg|{23r@N4OQm>I{OOB2AxsG;KV1;4?2UhkJ*V&p_j#pPosy`ozI|+&5_TdncbZ) zfT@a$&%%Yzz>!bG3F!<)=$W{%b;I6JGeLI3*7PE~19VFVNC{}Y1w$R50BCs!?Cge> zAPH}fJ3RO#pzd%5xx)qI4p)#n-1r=r3ivD>F`VIg_}H1V=gu>L*0I3W(1OY;kiUAE zz-O?6&qHPMg`eXGUWyJ1hXhckfq{YHB8bKr4$dI^-T5XkR&!x<05lxdfXqNTKN%Db z2cTlGGpRvhSD<3Bb6-GWFQ8)4pm1PdU;yno_yZLKuYU)hN$3VTlMr+)wh!DVj*xRK zH9*xk=!_Alevp~4^|GKf8z5nj7;LR9Xuk_g47N@dvn%{RP>@EjyTNDug3nS6g*e=WkHecg5q#1tJGP-@V66xbSD@X`+tJ_jby8PU)%@`38B z2DuA#1|9YVwur;|JP(A&i^F%SyJv9G06yQpB;4}|An|T$; zUkLjlXRnuY!49khpE(WM;}QZYbQl;I!23MF@dI|RJD)-xpM*R3@Lh2FtAVNm?af3x z`xg?6(6c{5akm1h7P|EgoHq7A#X!vikkdeE`T|tU736PZy8}QcnnF*B_u>YhC;tbk z7PJ=)l$W7plq;V?FAKPAa0HbNZjij`z!ZZmYl8NmxPS^*1_p+&AV+}DhjoLW59pqVWha(t>2?0{GgZb!(Gv92%?FVMN%D2K?paf9L#b~f`esQJC1xP+c(>;gI) z7L;Q%A;vo*40GYr@Bp9k3OOwnlIK4_-3o4`fYToM>{ZY~h~M zZe6*ViqKSfaD%p%9f6t;8b)AXa^VvQ;^Thxf=l8mT;>R6y zey=|~en1EKIwDm*j@(Rj5bNMk=FOdlA;RRvb(l}XRF;FvwH~M#Xb&NSC+J=QaCz(vJ|or{5<5 zxE%pHn-jcmfRO>V*9F!l0Nn%yQV%PiVfKRdl!3%ydmX@S0|o|$WT-i?y({4M0RsaA zXm1x-J+y29*Ylt=0-@>yp!o+}pEEEp^g+d8XLf_uAA;NqYO{dMf$i~t)z2U~X4pm) z5C@7ubpc5I2k?*r0|U6Mhst3)Mwz;FsGegKrn7#JA9Wi|r?!&RvG z2GD>h=qxp;*`PC785!8&XIz2mIH(i@DQD$^^e}^G!$2$q22FP`U^%-NbS*MSoC~28 z%mSC846Kl|&%q)P;un~LW@IoML0~)U7c}0B?d&ujM(k&#iQ*7f#vyKqL);#RI4B)s zb5Ar5^;sZsgcso~&>kyj)WXF;jESH#R+$(X6hLF842U!TW@AtpwK15j~To9{SO{ROBvtetiPD*gc~4r}{8hl<1Y z6v5hm-=X5Lwdk-mAPeZsQ6@$P*q$Po`GQb!*q$PATM)D-7b*_hI|Od)fzG;vio^B@ zf!liw3=FnV@dZ#1f!llx3=CdS@efdOaC?t|fdPC*EE6L`0H}w~z`y`&>w((1pzyf> z6^FI=ilOEhK=U;ypM&D74Juv$T3ifkD={!IOoxgefQp0LMhpxL%c0^5ppEJb4Dc-@ zJE7tZP;ppW=onNy0V)n|4>2$>T!M;^4Lb=uBUz`U}v4 z2V93UFfeFC#RH%XK5*R)I@1>_egV2y6IR}W_PBw}hwXI%*P$SbA&ak*8440hk~2zD zi%W`9(;13VbMwnm!6zjZGl0ex;=yc&#FUh52JkU!sYQu740);Pi6yDY`FSaspfL%( z%;KU%Jp+cc%!;hi+yWREY;sO!aYh3v%;QQj0+x@R400hHrd&QGR)1X$ANYKGb9EP!H&f zh%c_pD@m+KEh@?{0%`R}9CL?!>KyT>>v_lLL5|r2g;ZX0VhPAp?|6_0A*`ZQs8D)p zNls!?Y7Rsg9MC2C8L367NCKdcN8%>u8!DcWnw$;U$&*u> z=pA2_TAW%`mRgjW4h}GH=&5|(5Y?G^B~VszYDrOQNoi3YOj&A4eqJivED`E`5GM#`dr5v#YFQ#UKD^_LQ*+WF z?n}?lOe-mZ90%qd58|aI=D@-Od|qX03Pfc=QEFNyG&nNz;LL*jVmLc3vmz%m4;q-o zsU_f$2IVOR$bAeTCa6iR$bdNe2~yuPfX_Za7Ow?0NTFv&C?Tl_4LHKg0k!4-fCjhz z|Nk!zG8n2J)OLi4uSF6E^)+GQSCPa)`)Od}9?-rsNE+Ea$a`5qWhPAhNvL{I^AEJ| z2`2s?BmizhLC!~miGx?QVsWPiw4DgD7gU$Q)Eh&^LB=8b%M;qP0f~d|M}Vn6k0cK2 z-@?TCpnV09dSr1~Byr@k$%>)%Fi5=)Qut3n5=U0=2d(!&?gt%j0<$+5Dh@ISIeaET z#nIJIhl-=Ce~l!LY_AKn{sgH<78itWvI2?QAh};2Dh{$2R2RV9*$EW~sW(MZzZ-{m zFwz-V+DPhSk;IYR^BhSWv<(SnuMMK8)$6CiQq z@VS5_4%(UoQ-2SK_(f3ULGux^dKPHA17tq3y%9LX`;o+v!)F$fII{VS(Dn<+eB^Lb zM-oSlM;jdCjY#6i=4?O`M>gju4sju9`v~M7WOv3x#bNPs2NWp`3=9*X;vn_N;d2K` z9N9gupyDudVD0af(DoO|9OQ5-gtot6>S66aAm-6;z_D+6Q>a=vgu5=VAVD3UmG z__QF2Bd5>pNaD!p`3aIZviV<;#F5R11|PVd0{JZxsaycbfy6-A2b#~J-6yzu3#fW% zaRnE*fr>-3J6wDMR2-Vj;o?i6;?UrSi$8#hgX%>#u(>3VoglmdDh?V4MOHrrDh^A(AhjU;0_q;{*fX@g28ruK0~j+5+nw~PoV12&lq|E6$h>1 zMRw;KsQ3|(Ad-JSK*eF>kRY=`_zP7044V2MP;uCJBS_dwl=ah4FYAB|p~K#c|8 z0SRJ*%m86nyrSnv*tjlwegTbpf%Kz?KWzLKJ$zu}x9IL~fVRt@fDA(lAK3V<3ABF! zaw7;gfGQvc28I+gaoG6n1~hTl`0WuiaoG4RXgmvKHOOobhK;j%bRcBZUKOybgAc zEXWKHhK<+3hRi`?APgI~_ki{vL1G{b8^^;q8wlFoh26snQVYVcaXj=hfMDZzpu0Sf z(;I9Y4|Hb-vN&uU?*z1e3NjmnVdHo&(8OWmcs0=eDM&2{!^ZI@pozoA@yIyC1$=x9 z{MZ)cQ(P>dC$m7r2J%Q3@IAwzq6QjFpr8d~Si7hm*6;(1GJxm1p-eCZDz-sM4W=F} z$iTob1KMzdoxucZ&VlTKwO^stJOilj4iblE2bgw-{b=^WBtU9mY!D4P%410`vo z6GEb6J$pmMK6rMDsDPHgJH~<6sPk|0=knA%=6UcRi$~`v7tN2BXX}(bG+#x>g7kPW zUhwQ>QE`m%fE?WdTGm6y<_D1N2Y;}5 zSYD{P(E7IS4AhX9dH?_a_w05RczqkO2HB(AUBRQ<-@>C?z@xjs!b9_v2je-9P6Ln5 z0E@%?@(hmQKE0r^1P0K)n{%M`+MdsMdS0Xl$S0}}&7 z>s$W5Mn(n(-|koo!~c$ZKttEAh6h{?PrkMQ?FDT9C&%9kIt2RQD?Z2GDMFy*H7tMC z30PjO;c>LQ;KJ{7h#$1K(8cm!{2_Afq|j(r)M%xzYpV2yZ;YC?uBm7`o?19 z067-I@-%;I{Qv*|L8l6U*VJp4-flj~XnC5y&jTdfmj-sfu8sXFV(WUd5N4F3(+I%|Sd-O(0c(h(} z>HOuv?{ecs1|tK*PEZ-@0f`!q&U>GiK~?ilKh$uGq2*EuJ5&I)JRh_;8I*(^;}0Kv z#n=3wv4q31J7hDE+-n zK8OQ-I^Q=w0(s!YP0$XC<|7_FOPtC z9=I?t9DF4XbwUKl%dM9@dYvSof$hQXatP!K9A<;N>AgjaKArDfIv;@--h-X?3lw~v zhe4?lH0tNkdYixH{lEYJ!KdW7SYGAtd-3l-G)cZ(2zH1A1Jv;^&!TSopAhWPdHUNi z#uD|0Xa78sFM-_Z!5nVT?ZnaifWP?%ONkm(r$;9 zL?9Njdmd>+62Cln4-4pUBJQE`iFYZw^jOC7@jq8XleQ8Xle7K^^AKeo*(g zvmZ2A&^aA61OP5q4KEpfdwmL#ULkt|+Ce(N@*sY9J5)Jr&wM+`C`kDVl6N&c(E6>y z2xPTK^YMh%ZzbX$md8suU(2UW@UT2yqU_P_Akh4dvGfy&C+gAZQ~^2C3+XH`SHlA! z9(d0|sAuN~kIui2ofkoojULer^*oHFtS^dx{r~R^sxv&h3o1N7+lfzkbiRkBf)^=2 z|Nr;wJOHXyBs{uBR6M#}1wQlVgL0|>zo5ehk4{&ChFTs*$d(GVU!a2!T);sN*@RxI z4+?Uh&I6#`_$~|#ApOl1Kio=Bd2~B`Fudf_dCsG|LIRwNJUb7(-VA1?!QB55l<=D0 zpr%p@!vi44dw}+Vf@-}|-p&veo);^B{{P<{qQc|ZU0C7K>jOGb;r)vxKj7|{1ljG; z9ijsAfWrrm<`)9|f=s9$Nc{=%fJBOiG1LQ`9?eG-z#afQ4Z7DB6kniyq2ECjH}o(J z$ksHBV;(?mEoFVd^%J}gk=@3QzXfzlu1|M%g>QE$gJX9XhpXX}=11UTvY36l)mjel zx13>S0PS040ku(ldO@?H3_hJDDjc4my}5tWCN#hBvC%9S3E3kLicwKeh=4Zbuz55ez!II| zKmPyU2O7qE|>ys5|V(G4&4D69-v~{OQJhKquW8pgWvUIXRr=P z2wakMIvc<;J-_QAkIrHRk4|R^kKSsFU7+?WIP#z&`SKp9v;~)6V0*|kqzY+d7*XD~eA+xoVI!;ycRt5fp>g$`%)mz*Gn z@ykO-i^1m{ft2VwesgtVD$(%l4rKsa>LuaP9q0ini$y%UT{S$k9W6W#{$Of;!RRrg zo29AKS>xq?aODK9=Z-m>Fzf;yag^2>Z2EH9-~az1?F(3}Kx%4_efF1^tF_WwUL0z6s|cyu}o@VAD7Z32}GaDyP}sMA^Cr3F|L;vZPl zb~?lAdyoMyMZroy`nz2PJVDJh!?!-Y1s{AmO9dSHx3RyR2R;^$z#$pkt+@3_+s$bR!s0nhFb6$wxY1ImHjPBO5~=B)?#`{cm3g2Tr% zS!AA1=S!c?f1pyc`7k5cRB*bnjF72+@bVMb0r0&1vK+$4^v_Fe&@N|K{DIC$c*Ty$ zAD-QA5+2Idww z2ep(tpQd%PsJz|)GV;FXgN?~#jok2lEAO&qf)@HIYkAOB=|MwsDMV~`8AiQfM!JaHP@(s z9LTS^MFrGo;Md%v0vbt2sgE^4$I!V-cyz}qcr;f?Fw_Zwk`t)F2U*VG(G5DJqPIl_ zloO#RD!d0JPS6mDN2iO5ghwyv%rzGk5zycTNJIgmvGdqBXD6l-6OV3Yk8TE!ZU+gE zZVwNS){`Zg9^Jtj9@+sG9*_>CNAjg^o{1iyVip!NP`df#|JTov(gG-*fx;hD^?8Dh zIrQvAJz4{@Vbrtp*o&!OLFY+=j;sUiknKDGjeBT256MiBdEofu=yn4)abGYu|6ugs zcl!iwl!Lv4$PXa(pkCow&>mmVK^IrSJ?7>&5-8!yVR)dqj)S>W{1d+b+b4cO78Re) zSIFmEfVQ^Y2b&NFo3q^dW%7XyH;d56}@PAcH~2guGb% z1$6otxR(!(!b4EMf_CLU^XP=x<-_mt`1Kh~|6GN%CBQE7>3jzcHOQF~-~%p>d3GKJ z%e5XT74qqP1PxEv23v4Rgd_;H8`{2w7#-}>ovzTl9+VUryXS*iq@_XM4s(?Fc7vOv zo$VkQNB-?DDo!gL_*;K7Fff2O^zQ==t$^)re$2w(`WKWhyF*koK&?NI&QJ|VrxsMX zgYs?jW0sQ75K|0qgUs0sR?ngWDpxhY$3gxFCrA$okIoAo-Gvq&-JTvEnjc_wQR~SP zc8}yAF5N6UTMv||dVs1b%R^-{;In8z>6aI(*keX_P2(R&%O548E}e(KB>*fqz;?mi z*9tn@qxE*F6{x)eIujJO&ppkt*+<360n{M$>cHpXI1d7-{i!S)V#!!RAgn)E0IAe%QH(dK!$({?omwF5P;l^ty-** zkyxydm#+Z5KU$$E6}0a;9R*QAv?Bw`6N8SI}hE!+wPo^ zHhO{gErQ$ys!>74gL^;>3=B043=FXK3SU42-QfMZo}m51u6!ta1i|}v-S`}smoZ}9 zN$JSV6wSqF;eoNW*oB+P9jgTB&MMH@hzKa>gZ3SO9OlR;(9D#>#mC_c+9}B4!R-Rt z;s%~evVp2&0@03q0&Pq#d9_&K7}?G=>Ee7My7B`LV<6fbm0cgHB5o(jRfg+1&5{!p8^B;>I~2rFi2Ps6gFUg zK=)EMFfoAQ?gCUVsF}|I-WQ6NX5IO~%Wgn>DM03cr!HW22rz)n0PULq$$|HQfZguO zCxN>6(*YFjHlP}lfq?Sz`pm2h%v4{cr z2fTL{v9Fpb4!-};g`4RToZ|>fBp@@gq;sPKCGcYiK^EyZ)0|NuLy?UT#FIYV&ZNl;<0|Nu-o(hn70aP5E z7vbiB`xdG6fO?g8_5dZ8x0p^ zU|NSCILhP(F+TmE$0B*d8&MIOvX3kT^I$zyui>7(jEA zAaU55K$sM0uO~6_U3>0#LjOOtUh8?o0(Up#)?t8Y{f+f(kQ$%VY*thV?K3C=FS2hM7J= zdr27>IKX@Lp-RCNs7DEM|86i3mB6+a^BM#8J(r+%FSb3Apgn2W#6hEEp!x~bMg|7Z zeRtTzbwPUy85kKFpjiM`?^!~{FF?gX^UEMJL3`wc7#JB~_s7ACwos^g*xq@Vcp6k3 zww)JN4;Dkk1E7mLAmPry0NT3=GG72XHw~`;7#J9Oq3U7xpn&T<1_p+ijF{^_K<-=s z5{K3;AU+JQ#UZ{8hxj3oy`a67&;S4(aRxH$JX9REmI_?=f$mAcVGgK1#};2dq2^40 z7EIuJ6147s343|~?dim3jxuzw;ReuR00ssIaDB?az+i;K9A~I{2GHa`0|R)i3&>xf zwRE68f(B4=aGeTTBZ$Ks*xtX&zWHNTqXpaY-t8k02y$ z%3y&5R#{S6kP25C5}%)x1rmV;t$TcOK4{Y=T!njlegUZK2ixBX+SCc@8iMzRy2qE~ zqf3MM>8W5JyT|7jrKA=?Oalc(F4$e}@g+rx$*HLosmUM*yTpS7ACdt;cR+(!pk@+i z9T{wI&?Jx`bWIW{3&F&%BZ-67-N3{_d-g$6prR18o(Cpw0d2>jn=cJg2sIznHi4<{ zLlOs#NW;Wo?R$_kXuujKz6T@#H3u}v4HG|$Bn}!AhlvY7+vXr?&@ebm+zv?`)E0w@ zcOZ!)yJr@XIH+#|Q@;x;j_%*zP;rpGpk?7O^`;<&Q1>I7e;0@N7bJ0Hd;cSegO-=W z%;$vGs~~C6{%@FgFjO4m9?<$ln0Ovk9Hbu9wuXs=PfdmH2}4dNT+sRxUHwuV;_}d@ z4ai_v_jWh8OX8akLcdPw5PdwF5^ON0CcI$r^%{uER_NE|dh3KRbf6$jaioDTmXi6ifk zHHWrSK;?H1CVmG=969{oLB&DlgZhLp_1~c4Aajt@vpTe0 z0}@9z-v>z?G^GSHrw&Qn0V&?4pzRuvIiRu;ral-+9MqSCiNp4ifz*TgWH9j=Na{g- zLYVkTBymvN2`2suDh~25XzT$d{t+q;G9R>@5hgARZ3ltWBkxgGf{KIGgZ6L1)EDCr zuR{_C^+jRoFF?gX=7aXD!Nl)E#X;sHyXO^>IH)fOQx7@VjRAb{H?n`_K$Qx#JV6%M zK@tb8K!BNJ1r-OmM-wT&oS@?9?(v6;gVZDMg^h%YqpM$mB<_b~ejuolgSr!0d?J!K za=L;R2jDFyAiH6EC_wgsQwQN$iE*gezGWDYmyE>u0#nQ-xkP;pS* z2Qmr71>qKGeFLf^ki}tV{ej9%WO3MD6;K(4EdCK>7z1Sd3t9XtR2-Bxki~yO#X)rh zviM)9I4Ex-i^IYPeJ^7GwA=@cg(0i=fr^95E@W|-dQe_Q77u}{2jvB1ao9b;^=!B8=&Hl@fw7^El_dvy^I}DarC{6Jy3DTI1a)b*!{||aeI(o zL3j#OJ!CZpLj4S=IAnYWAwCBxj=q<10aP3`!;Tz2OQ7PgxdD)!AiM%9j=q<14OAR` zFC+L|d-!+|!aZA{>e2Ty!qkHn`XRe#4^%y5oCsmg0jM}=MF6sT*!|O>^_Ixu7ohC} z$oLV$oHI~!Kr0B5)muQ-gXSrb#jilsL&lX5=G=gagXV#e)!%`Np8*L%+c}`{gxz0% z0Zse~RQ(k+ahUsI?IVyGAS?rQCv49=NDPEw_rE_tGY57C1!z4KND8DDgkgKpK;u@( z;ylpy${Ua%lKUf|1uAU38Ds_si$K+X!J!_u_XMOCgms|i{6SN102K!<)Bs6=)Pk@H zR2;mZ56L|iP;m}u{|KZOgl(YWptI4C&4GmvY+M|q7KCBp1Dl%yiGi>O)Ew{y7)bW| zK*d4hbjaqz!V|P+4Ou({svdNPIkGq`JT=hVe-)};2TlAERNMefJOmp4=zB&lL)F9j zk03vRFl?_Oe2xw3H`pFW2Q>39Ld|hO6F&zPhn>|2G8=?62tPQua|dioK7He}Gl88**??oQZvZv|R7z{Y!f(8OWmy`XVbkb6O40K%~G-YsbA zVdK3g(8OWmz36*_VdK59F+GskAPgJtjRA3>X$r(#01eL>AP$l^Y&;fr{xL`zgkj^W zS3n#j^|0~MKWO5xaZ&WWxv+6j2WUGEqz!~&%Xvm4~L2~Y(Y&~ZFa_a2s3LGn;(22l40&50msh996oFa`#OLueiY z*#}ktB|zB(oBkEh4k75e9H>$-g|0s*B_FYIQ$Yc`UlY&XO(RPa6R15IGt zLAy3V49MP1=n_%z#>D1-EG6pA|JX``Ji6TlJem(fHk*Jqn#4ly>_P0!a+mPvZU8ln zJvy2Bw>fZt)I;wTb^hVe3D*Ewle!BuAPrsd32yJcKEV&#s~GB$d@0!D;3F2$P2SCK zI6S)Z1w1sbdUWPPS2lOLGJs5nn(WE}n#^MGXm%EWIS6SXE_AJEFlft=N4I+fXv>F4 z=LS%F-=nvJ1H5JuY`I5wyo5tXIgd|wGpO_6*<2C9P@>@3?I7UM8zA7>86e=%9WLP0 zdHgefzS9SOK?aDf=H1|~2|u_20#X59oc&@4_}=Im&?PjWjiKQJ9+m+d#Vj730UZA) zgLJ$Eg*PM|K>M_`L5qK{f)@XN3FY5s>j-V|2;azJwUf}gZiW%-R>M7y#b6Ko#7lV z{M!^fx{CuGoBv3cIDuCELiV=32>uV+O=RrT?HmCX^;Q7g3Fq4R5bOZ(?KvKu#~foI zeuLi^238B2tYCN{2rw!`M(4uq+k8T?k&}JWj{}(`%0%(sI|Mn6UK95ePh;E3fX`P!uc6fAe0b82lVQd1v zPOy~2qwxsHmCy}&u)Pl;3qW^v`XqmI4E62&>Ur=Pi(`mS=SR@(IiQ3o;gj4B>JWQ$ z=Ue!69tN-Hc2VK*?L6*r@G*-==Pj^1Jv&`gEL<($*XsL#ukh*h{qNB$BH^O>)3euy zgAu$xk?|nto-9i3UGM^mSU{D#UdB~&rmp~mqWVf2L0BE6VgtA78Ow4Yk0t?8@xZ%xAj{|UBiCxxQR#S?~)>q z?tBH1?VTnnpbhUn-KiXqMdn96y2A}TI&)MiJT=dHYM$}XJmk^%3)G>iOZ8v{(cp`w z?|XE*avW<08<^JY>%`*t|C&d)vjs$m(Ub9rC*x6{&QuPc&TN6S=2WNO9^DW(A@(q; zdNdvZIUAOoAbU>tf!Y?}!1L&K7I@taW=0-m6|@H%}J(pqnqxTZD#X5??#2wFPU{QG}NHvj(5E|$;u`$2aQw|=WrZGOjS zc+#W!7^BC*XDpC(@|i!Mhl^j3hr^@!pn!+vxzcyw?8|s~2dH)jRez}NUBOgZ;@Ryh z;L+`<;nC@;@e;bX-L>^eovLGRiOPS34WNAanLnR}i(ilhYW~O4cb*5IutfVXJ^*b| zj5R#q2)_98uxslR*cLl}my4hI^QHI&C0-Ulwqt?zmT8AufYXL&=QZ$F2yj3_ToP&l za*Yq;C$NKFfwtgH0J$gGv9|`|p5u%j2cNS*-6O)qFDL?a&(G3#&F>gJlh3$lKJ(}V zpMLfitWu7*!uZ$+xXAa$2V z^BWG(Ru9M~j1>YUqRkK9L-sOwcDtx(cyxmIO{F-njhGEXr5~R zA;#bGh>3xr`G*>Riy@f7#^2HbK1|@3K)r@Xx2uGYcB%zr9~StgIFJLNj)Yu;=fj+8 z0d9>!b~=I6Lw5j2^CSM|Uu^uXQOuxyp1uMeou@o4&lF2S;}P5t@@Re~z%S?|;AwfK z=-p@jd;xIc@AMULR>dq<&hB^t*{h%%?JT4tJDiG(msPOP_1KlnEzLNzi#G(RnxMM>dH-jVp zwlXgM7Dgrp2Fnki*yi^?)_EMXxp5j314FO>e~(@#0Ze;F)~Z1aSbUin~z8!Ih9|Y!MEE))I;gz}5*G(6h3MY_8gtnP>dmG(cDg#fOa{w2 zFc|)SIsfnf|IiJANLdf5?1Q9FxnGDf&?8w4RQ-B%UIhD0^Fl*C4}(YNp^^$v>3GbY z2fR1f0<>8awDHUFn~RDQQ>izoj8p*iC8WUxBRKnm+PI+tNTHA922gnf+F$%F)-mSg zuV4TFBic(~kG{T#XrJ^Jd;rGK>hc zn-4Iib%I;%X|~51$|YgJ4caD`*1Q(f)Mf+~j0|bECm2dp(rh0vl-)+O^wK84G$0g1 zJ4n!$9;iG`Yi(%&`CIOT7McEFUfu#Veu&-!0^r4NucDdPj|J24|6T33GCDP4{W$g z=QE$qUm)M@dH?@E|2AhQkIq;HkIwha4;VXILCrnG18JSDAQyqvdvrT%_;h{(HKKb> zXa4yA-=nh?G>Zt9gu9fHzdsk$aDk?SG?z|rSid|7&O?y=1r692N8W?O<>gYaoC5cO0C;n8`&(?x~Hqw^hDPdAwT3M6{$ zMa^5#ChKYikIwrp9h*Vsr@3^3b1Pi!>v>3F4t8${)Rh%Jkp1&0c{c+T9gqUR1JrNn zHGKh!;m#112#?N3pl$F0pr)0Fw!a1F6c+H{=5ZGl(7+%ANB}$vd)!3@ygCCU03H@T z?xNxYs`^0!kRCVaPz8_(*qxxGStJZkdUW0gjVy3Dc0%?&dnAXb=)i>)KzrLcKqi1k z9z7T@LG&iOsMx?28F=)HICva<#0;17fy+6d$iYfAP|1>k=r3`5G#{w|l`4)gkg*By zQd)(~JOv0NBQY-}2ej}xDKjszsFI;1wW5RpygFGSzbv&VEhoR6AvrN8hrw9^Lo_ch zzeJ%ZwYW4lRUsucF-0LczbL=71azqf*tsZsJ9F|AQy{x{!E2ZmG(fk;C}hGm34_9p zfgw2&+04BBJl*2b;)2w?lvHHHQOpIeVOB^?F3K+k?GAR<1-VusDZex?1>_%yxk!76 zA?nkL@^cmPOG}C~Q&JTYksMCkW>Zj&4w`oXEiENwuPJB<7`9Fce76&HFQr5?vpb(c z5@g?-Bj^&obU53c8?sgjbfzT8H=s3q3(_BJB+ z2Zq3Q!Fn7!a~8bIuZOvpiGcyUz6sRrWnf^~3(|+a*Dn@wr>83)hd*~boDJHN3U(uG z9(+4UuQ%TWCZ=Uvd>oG4p!H6$xo0tu`QUw zCMb+xbFtt(T^@W2wOo80uG|dZ`%w3Q%w}LBnvF{SJ;T3cnDePX#5b(vMj(i-T z`1}CX11=nVL17-s1=^4r&c^|sPlC-^yakzw*sJLT+FuO5!_yITho?K=0Y;|nT;OfI z$ah7$af1pQ(EbvT_N^eh5N4q7Q7(gQG=<+P=?2~d47#h+1r}kB+@LjXp!1GE=2d|R z@V%?x{g|M;Ivu(AB)s_q+(0)?g7=BS_L_p%V1dKLkq?q)nPOmx544^Ow%3#qltB>j z;{=Ky@V(67`;fu=YTft(n4Oup_$-{k{zbi*nQ0c*jn3eEk3l6dY_I8gklPXI3*`1} zEjI81Cq52PI$r>tpaHKP1N$eRi;u&FI}@DJAomZ!?(hLm z`+(y#kPlSWgVxtQfa-Sy%>`leCu0Aw3ts|ggR%wY{nJj6yN`81Va33}0G*x$=K%+( z*ldvhJop5dJiu4@GJx!kfy#mJU&e2@J6}K<)_??MHUkC*2H3r~#?Um?!vu}j35?8= zjF7zP1j>9Mci_Pw?E|qF7c`Xz+7kP5bJI{OvY9~Z+87xoK-YAG(>YX*8hd)fz-EDJFE9g6K<;nE^e>drCpa)WXVah$;vPT4RY# z9F!M9d;dUliy)QYx)*fcC1`IdNB|9k`fH%}1DY@cXw4xuaZqmzoA^VJ`Jgfg&7e;> z#Q)(C=fko0QVNGSXzd)xzp!)v!F4qQ0|RL9D>ipJg3Lj4BZwOW-NOl6GYziSL3<`a z>aqB%2&x{oHVa&TGcYiKI^)>lr5~#P1GLNp*Xf`&u{g|MgF_s2_7=#$3!qsBT+cHw zFdT!L4_o5}uHP9L7(n?Sr2YbER*Hdv0bFO}+2i^ahrPdXh;u;qb~ZrE4RC$Sz`!61 zYRh2>H+dZ5`Z&Zv_m*M{Pamkg382Ln(EE%*@fZdbzW@~n*O?3q4Cx?o21bStP;qd5 z$-ux+gu~uisCoy`A_}BB5!9{(?QKqgii7J#(0TMA^-Q2h0J#EjFYRKe_y%aD3a;Nk zN zc5&tumwJTQ(mft|uc=FXaYj*Q z9^#Hn*Lcu1rp}%qb6la45S~kXW?phhK6nEtbjN2-X`)MfL4GkfHgZZ6{p0g8bMlk2 zQj<%-R)@u>W#(lTXZV9Pg~fw5jFy&w@0@grFDOcd=|k*z4FPStEy+!)1f`9f(nQzz z)QXbSycCEN+~YxeUBPJwXhbnPXmZ3Ejw1X`;FO4gv_4V33#;-Gp8CJt)bz{ElI0!$ov z?;C8*Gsqm|y?9;Fb__@ywC)UM&Jw6NsHg!=y~4ydLB&DpLF))%;`@=rkXH3*9wY#D4``_s%>3I>agg<(B~UQ&M^JGP1zP_I6Ss%f zHz09Pn+Yb~h$IdgQ-Fz|LlOtIQDNfXF>|PUki}0z>nD);$o@SBYFI<#1=OF1nez!M z4pI*~X9Xsn0Ii2W;>delGmykVZDW}Fhe+a}{v1sF9g;Y*JDH$+EI{TX?@649B#vy( z5+reCb1p#Fn1jqgcE2oWAt9FVsYMb8UA+Nw=Vl~vWOGEI?RAj($nH@=5=Y)UX@Nt$ z2r3RrC!n@9%-&k4ILLhDJ$j7L`V}OO>`p}_apdr~LJ~*bOWTY?d=-*7ays9FB#vzU zQK&e`{m6U6&p^dN?nF-K50S({Z7Z06qdJ)pC4u!%c?0ut(e(3lrYeI*X@ zXry$AoSvc87kFJb@*Z$d-3qf8Y9xpY?|*{CKo~X-0i!`;AbbI=nt=hd8Vtk)iGlnD zVuSD*5CKj9AUW801Nz=8P=5oY6tvU|M1$0VFsy%uzBdQf-$Jg(LF!@sssm6DgTz1> z)_?kfCJyTlA=l#|^|1aB>}))c7zo4qLn}ZWB!9uiMbP({z{W+;_n5%?J?MKzVB;lA zp!GG#8W4u{S5Bab!}=>v(8OW=6$4NPLUJdpU*du$4(pdBpozl<_0aEagY`?OvxfyV zXQNk|my?;Dnp4RD-O@4`wz7cFV+17`Xfp$pG{G2D#)BA-q4^xd24QIN3SxpWsEh># zDNH?Bkb!~W2B`7Mz`)P|ZI6JmEyx~N-T~E_Ahn=2C`cR{y&xelRt7a%!7Nk)q!w8O z)HVc}Nv?iSSq(B1RHh=E3$q_~<`YZ~q!z@6(XhQN=;7B1bw9MZ2hsw@FnwSS17vMK zw(yGpRSFD{ac+=WQ22rD0QnWfhlL+#&Ix2Dy89W7uzFgcj}VSLaY zY>=7g`a7WdZ-4?9rkDXVB8kLdU|;}^BZ8Emr{4l-_`~ky1cg7SNeQzb7XH}m2HB7R zYV~K-xZ@t9d0-7iF=q>o~(fot4M6C5vsgOr+wS-US zqZehMB`n~z6`+ZEQ$Jp|gc z!0*%f2)u&hg~I>;|3RxkWm*rEE(af;UZWzg4;1?^SV1d2x?NNR9J@nQWL~Dh?LX$C zBEZmkiNCcNq@wc^$V35%aTh^%JH>#P*EujijpK(%Z3FLSfg30OAGYvi0&JZK=wx~5 z3Ji(vD&(CRE-D;`2U`F0w@w6kwYxgQ!}2?S3uxtzN9VN{HUIwq?{?MzUDDR=q9Oy@ zj?%^eTAGtB;tIO^EQXbV!Lc{@zYk>XzN_I|&@C_?2cJUMT>Era8~8H5ckB-5Xnthh zA)?ZHpi~^>_|E4Lr~m#73M8;>^Dhzpb~9$sO=T?8d>B92{eLjQr}LTN{}qPwEC z3LHL9L4gg*yP$PV8$hapb-+R139^a5HRL~Nsmdep;y#d)UeHqFZNXe%HDK59w;Djz zfU*ThO(sMQH?kTYG&QaeH9W{_K(}pyoC7mQ5$qfZuo9?qj{f`qAM6%z2)uvs4|IuE zaxp}W$H8Yztp`fQK5b^9K|>E-ErE-Ps~8ojNL@i|3mDq55h&Oc5wb z`g1{1mMs8P%f`gOz%S3>(fJ(YHc(K#=zuA2eOs5~(wqC=v-6qZThHdBjGpj#1ML9f z-xi|90S=^68<1v@$9y`!zwiLLx;r=m>@yF>SNz+8I3dbJk(DXJtnp|*D&T4PwsduO zwgT8yr2@##`T6_*|JJv4M!l~8L6@oM90lbN*jjCmZf6IN?&1tkfOXqwcr+j7c%kw4 z|9_Bqj~%;xR3Ks3dXm3&C1`bCaFL-M@$}_R~`AM9tDNhW{?b00JQ&x1}aE$ z8Y2UPYs*{y7SIu#9^KU*Agemxy+{Hp3V~U0iNB?ik%6K0KxrzHr+zL7n zlV6^p8x|2QQsCPH>(rayG9u*?k8bA(pU!7q-8LGY%|``Z@cf4O?K!9*0^KAAxfP1P z6*S3!v0Mvu&y2lK=d%}Ae?ff&GQ`L7Eq`nCpa1_6mjC?=3S<6$K5*Jlc-aG6W9Qk; z?t#eMr3avX14Y4$1el?(SHjmGesbg&U}Ky^Q2|SU0<{#J zJHbf~lxkjx!i;(u4KBbKK#C+0ia_ZS7M3qT7gvD_8&KIO0V)gI!LC*Tryc&5oeYp` z7eRi&NWC82&HuAgN852 z`WFl!IU`7TAdA2F@&EtJi=Yw)oPJ(9|N9SF#|T}U2-=GH6c9{9Cvn%psT$efy;1^0+S#A|GRX@sOY%1-sW!wo#p}34r;AJo$x{k ztRe(r6N@V-UVnm?wnA%5kRk8CgADP3DB*AgWopp5!61`h4mkr>0(CEoE6Bm1n?Ar> zEg`OXvGV)>|J^lELqHW9=uAnlL%})w{fiEef)bd5Z>6Qk7G#4YeN=QnOa3@2!WbA@ zPnL#&6o9e>$dO*(L2FOJZTjvI6&+ARfTQ(NsR6PYweO(p=qk|RqQU_RT+sGKkUY#6 zY~TO?2d%|_1iG#$5*oH1-99Q7h`R&1JerRn19+?j)E@+e2PtdpKy7ExSR2SX(3l};tz0t`XeAZ{_^fHrcs585l+GBO z_yoXb**7!0@HsHm!Pg79LhcCwt!VxibIDy;O4|b#X;o_vifAGIIIi;xdnvNq2jRo0}=z_Y^XSBTp8J%e5g2R z+!|TD7%C1Ln?e>Zhl+#B8f5Wms5oez5Lvt)Dh?|TL2d!zW~ewM{e#w_L2x@%9MZ>z zh=J61L&ZVsbCJ#Ohl+#NEFz0fhKhsMv?7bc;tTye!U<6I=-~#^3&QB`gsB7NFOWRQ zjUWswpU}^xgXKRm#$s_DAY=$1giS6k8Q9Z=7zmERYC-cED6Bvjmi|F(5XLnITL7Jl zgq;@%%Ilz_0+!!k`2yD%Y!;fmAiF>qWCn+2YpnC{F_QT2rn7SKK{h)On zFfkAfQj1K(#&AJm$oMZ*Ke8Bz4bu-|gD~hG5>U~P9{vo_W+5!Ug4BXA%-tY12!rm8 z0GWxdUjeEgcD^D=EeNCQ2MsD=i$B;ozL2%8koW_|1x!CI{;=5%vWEe>mH-z2pgIi{ zN9g)N!GxZ6LHd7yECa2D196Zr$UY=4188^?oBjf5MxBbR7&_jLER>U0nwLz%7_70W zsS&ATunVAZ0kRj8PaGI{8F;|^**iZ3cYfXnDg_QcVCfA|@JNPibn1xUibmZY2igA~ z8tjpL54>QdSL7}zaeyw3Z+^o8?y7hkcL2vrM+8^v?GnS@?EfAIA2WjvL-9EHl-Z;C zHHU}hYmZ(Y3COt&9><-)$~~H2ad=psDt!;yGzZ>m4;qDJ0K2cDj*For3^W=Hx_t9% zu;FdQepkawJ3%f0b*P?0?C%W_@Hp;XOx~v|S62)&Y-2l4( z7hM$2@?C^RMBD_KS`9S+4 zcYzM+-3Q7!;7~Wbl-3!*b!Q;3CIN8I}fyZ(1{bV3p+|A5$}*ggc*r zCm#n$KkVFCaC!x)#e+flo|a<)Agi(Mmw||bYIP6`731#1gIY(ZYC$<1)CY!%g3|(Y ztO48lb5Jb;QV-7Ku=K&ezyRvQgTx_spFz_D0|SFQj{OdxyV^kN1wa7^x+4qf0MK|3 zNF2655FCdL3=E)sE7;rvy5kL`-T>M-fvE?jGm!WJs5m&z85kJmgVwY&F)|cDD|C1q zLn>+TWj1c072(dHCBvmf;6=jDAOYxdWU!zVjh!LF=%QxG0w>LBk7NxkCHspe6vU?+$9Sf|P*TUC82R zL4r{ApzZ@qeIPU*K8Kw`U7KCBx*#fE$BnHB;^h|mmIypZ#H#M(>K`$@ABvsGdFH{$@ zQ2@eE&nwj{D9SHLEh+&mYy$PSQ#0bzia_^|LA^o|1qyGFS3t7~$OeJi450N9(0GE$ zfzld`4We=NjTNAs0NB~uptK0G2PzES;|bCaD$hXTXx1?NKoxb>1g`I^C(}S)bbcY_uDp-8O)D?g#CeZpCr~oMbKzczKBm^t>K>k6u z8zkQWt?C|t6fiJ=yNVzq(e;DG(BlrIA9hA9=ny&(ABLgE!MHg4h6W%9Bkd=JX+YPX zlaAaoB;u@Da|3fo=aBgIIR>Bs5U2wn;q1U5#30BJ>d^~cMHCF`0X4so;NKR;$-m8+ zqxsRFj$qE_7c4eP7}>ehk+)H%?~$R#20$`4o#sx3fe?FsDa%IOxDoCJm2H(4mmd3g4W$97-ne zZwui3c8Iy8-J|pHOMmG6D#Se==;lKV6F@Rd5^NawaI3><6Pi!4bOdwqZwu!3=ynHN zhAIy^!txquf_EFpK{YBI&?#<6-_^78r$=u;sHNi5+YVY2@R|=2KFtR?d@K)^*n4yv zg8cU$(lnjgBFX zonOF*GCo4|sIGcj4c* z6;# z!-;_r(l_i5RY+@0a{B+zr2}lDOGkD%XsuKRXbD*J6Gr})xc~qEH~(NN;qN>Knnea> zHK? zRU@YV&{qwQeg7e#-s9jaCXdbw9^W5&bbbIGkv7xg;7cZt?>{{)57e^zbRP5IU;hz& z+7h$7fQRM>kIrKdI}q!E+y%Zla59&$A9t4km7k~?fB}?^O1Z#2WypF9(3q6@@Bjay zM=?2uID)nbGkA9X_U!x^8qB}VkK3o)O`_Y4$MNzb-{ec42OqKeG9Cg&UI!xsgW*Zg zX_rE9|2H3GbhPy3DKqap0Xm_{li5+=n*)bK$#aix1CZS%_k23>$egPP_`5Soy*vKK*87YP?@)5w}XUZ zcK}D{vF2wEt(Qt}wSFrJYkt7**~^m3>~u8n?eqqpI|Mom4qPsQjJQIv};e@g{; z;Tz0H??5Y7QXz{KA@23*y#J!(A855h0LRN3a9Ilu_tujoDxTfVpkpqhV?j2#bUtv5 z@$Kvei6D*LwBF`#0UfLA+1(84j-jdri9pXlbTxbe3bv+`ppsVJfdT9f{uYz}|NpYONQnHj3rm(9>5z)mGqt}H|&LbIgiZ+jjN3yes2jd41#zP*xEE5ktVDgyZ!RQJ) z8yI>DBCLLM7VzkFFKDRdV&HFyV+Ez4*J6mVD*kQGTprB_87)uLnRr0b&^H%m4Tq9v z9^EC(3g9Gk8&p6v{{SD-231^t8Jd0$K457+px`m%brW>#wAWOwT4IQ{}PdJ z?pz%FExybQ4By;AHRfs-28Qlx9-nS+3I1)~+@KY+J6ISPTn!Jr<^`?WYCgc|V(rXR zZ06E=0F4nAb{VLa($ zd9YmmWg;^J!-UoYko4^G=l_3DBJ{C5$lvD9%)kIk)6EY+Df$NJR6S9o+fgPIi;pf*J7$x^|W9?YO6myq-bK5f<7 zTY$g0iIIWfnaT+Q)m%@OGXVva(c3S=Rt$qA4NufQfe0hurdZh}Jn9gpN-6|i4KUzYs& z{~zQou>Mp0eJP+dr;z;O!R#CWb;?7qLE!un3^FJ=SmpIuu=@=UK+;Js%TWbTJ7C63 zzd!%~r%eE*2mTg0Mh1q4+Av1`R?r?TkK|_1)-L|-!CW5A2YA7`pjYIQM=#5Tml7~{ zbWa6!zrlz2gDYZ>?qUs()^Gf+pxxIVpz2~8XvJj! zbb_+_To4lxzTLq*h6lh0jW$;+Fq8;_@;EF%&hR++fYqbdg~{S&;BQcHg2(jVztH#s zEw5*SJqIqYVG{u_--8QS256XgbRGg5&KzvvVR@=daKdp%aPJ75tSwKKfAFx54&ZME zo%ZO_T12>zBFP)i4N z>MN+NX!#kmV9!N`<7Ftw5!<}E!G?lLE?2{oF5S^QNM+YS*VfyP{8JBlTAnD9c%2L{ zzgoV-%dawDP}$`QYI#0zaBaO*a=Z0F2^XyJDh+dOJz09ivD<;evGbr~^FxP{aLu+bRP)-5a^LkZ7Z74&jwnw)ss30-$=!~s+sSb8NIEVRs|Ns9b=&)K)sN{e8 z|Nr#@(7MPL7LbzeR#4nQ(*=n6@-5_K(HCDqrOGT&d0=^szlE2Pfg#kh^Oq;+N`uS6 z;PwHi3jiwr`L}s;cisgxOB}l$c`iToNPg>a@F}YgBWUGx3+V7sP*tG;YkxuA-+G{g z9hwvzn-4I$S~~LZw}HmBTsjYeCNn&lJq5ZQIaWB7JZOHv@6l}tYSkY0>Ae0T8ssui z=7hu-D4bdklvu2AC^10+WMsQFt|4WQ+NNx0&t~KUBFQK5z@j1soeMa3Q`9Ey59tRl0RrVF4&_t z>ObggQgEBTThE1mTS16x=Xb~EXUvYx-aNb;mYaJc@^Z? z5Rc~9j2_Lu|MR!#F)}dlZ*%4J=niG*JlOn^*`?)Y=^4+?P>?7GWHdq+y5Jbpx=Uth z_h9^C_x}MRJium_t^tinpd7Ugniz&peS37iGdu|^usyqT8D4_7<8-@%?wXN&{lKFW zG`9yXzQMAgpfraj<_Hq&c9rnx4bXVKuAvsx9t7Ry>1ud@U!K9MyX2?>s4f)nXwKtc zEae1G;99bkq=6jb32JFs9;m-%y+>va|ehGVXw?5>92UY=(_YL6wm+IVzt1x*!t9CrmxU^93ecLkr^;&Hqc zlvO}Bc^rJe?9u6};Bg#W^MZwrg9}>_6O`xqTbWoG7{0lBIDqa`DRqE|odX@j-}(Lp z8~F6v_b>9^{r`W=HI%`pyHw$|H@H31>zlC)G?)kq5lD1GLI8B<%F8~`eGcGy&f~Z% zsNDjtFEv0FSaWRw1Aoh2W(KffAl*Kl9}rp(L(2sZkUEdf*YLYhI^Vx|@d?yQs|Dp- z&+Zr%iDS;896sII6&}Z(!FGU-AP03796+50XNZrAp*{l5v4GkJCT~HNXfvoT_vr;w z9-!vQUr@=}9T4Er?cwmvfs?&d-J|s+e+wJPnY|7Hpsqeh8E6&12a>Xqo1UEl9-R&W zpfM>!P`GqEO0*s*k@e_i1h-asp{-T^R&6E*hU1Rlpn- z$z7lkk(X;hRl7Xsj)-1R-12V=4dLJB$l3gex%t5l&I=umoS<}3BHJBm(|W1biJ9N? zkm1RLKbS0CE%)gYpVU-!8CYVXl9%8o~uTy7RtI=c^Z$;0+UC1>gh7 z@4rX~i9i>ZG!%z0gS_O^`5c@$cY)k<%sG_FqqjKX#afVEoz4lM8xK5~T?ITq*RcEt zH(R0gH)t5?{7cY&N=Uxxy#K=E<^TULPeAt1ytw`5|9_7eKD{PKL0Q*R^VrJ+kj5rN zf9Exi?pTR~@8lV;U4)#I?$PZl;h}l+jTj~D;{zf=WV$^i253lRS~jQ{?{ z4G{k$xKYXg+I!S_|HV;|&<0SS7n06jdV-zf04kFhUs{3nf`W*_qZd3r`qCbpv>X^9 z<7@R24fUanWm2GK5dXIDkmd(JK;xnpI@~y6lP~p)T zX5i6TPys6sAo5W2m<~?>EeC>(?Ua0aDgWaCf27JAlx`vFLHERoHKcL=@#qYQ@aUcZ zYT0>oig|Qy0I`sV+(7C>JvuLTehO}W#NYYZ@EfRM2^x(A*N&ik*b%|e{D`?D090#7 zc!0vgH3C$AMaLe7+#(QI63%RLA%;PwG(I{+N1M2 zq`qjqRKoVniHoI#A7TUO#vSl@rcZaOgh%J+eW0Oa&+aMU+sD8z1Z9}Zj{MtPR6?6y zFxfDJW;2{Q9r?F~s33yfnbWsBMD-)9XP#$lRGGp9R@Y7I*)l;9xZtdy4@z>^)!(A zpxZ7YUN3>SUqImvS(_FN8hH1B4z%}XXMoG&wcx4_RKIo}0xc72Jpgi-Gf1+;1Z18^ zH-|^3cLwNEuucw8aR5>WmM?wc(YzZ})-jaGAp+d+8>kt?_5xHAKx9kb9CHp~hE!c1 z#}9!9c8@uSF}z>`d7!r#v=Ry`{Ng>RPu{y3lxBQ7pGQN5K^InB1-IZq?(BBXfaU>^ z2UMUeFi=$k5LB9y2|@|Mci(Y4GSZY4AAs403LKG-$b) zW6VoUP_Bfz--CbsIgm9Tou^9|f^P8hIDX7w(f|LTKm-+NAR!RDKSF$bda^=pYDr>lYDq?Z zih_n}u_gnk4F~q9yR);Ef<|akXjo7_%MJr@u$dx|B%H<2?9&`l%Ld@grUAe(`3xEba zL1v_b2=G2kSI~M$NAOxq4~T1>K*#cXBi3Sq*54R_?1Y~24bln{bAgJ1_S(V3V0Q(8 z*5rf4Kx->ucRzzWCn0kkQ6FNjIt6Y&`s7(gTc4N&!`K=z{TadidVsQ^B+AH2uagD-$- z3f3e09l4oqbMaw0}_m4ti3FK%>7KDGzVU94vIIBVg|?^8fTzxgRQ3mse|1W0NY0k68i#G2V3t765{~* z2fCjYWF%!=}VY$F$+ zgapaz`$@AW)5h>76StVxSV8QV0Z)-HvnZQ z1_lOjc?eC1Aah`6`GLzYP(Uy+Ffe1e8{!+(oC2sv!Q~WaogyR1zu-A8ux+q*C3+Gfb0b=bU_uB#&PDnHV$#n znVhh+gKQG6GylUu<{&GCvNJ&9&@>1Y0#l%~aj=;WnjOU^J{^ZSi$LOF6Hy7!;Xc^R z0k!^ zz`)Q3RX+jh5OCeWz`!sID&7D(V1fa9e-r})!)mDb0jM~*J^b9EJ{t$%PcNR)H8sI zmlP$Ir4|*ZrWRzR=B5_q=P`hmt|z7^mZXB*zyQ`&mY7qTS`1-lr&bp0CFkcAmw*)N z889U0=ar=vr6Wv0l`bw%O)bdDEG}UHvx-Yn3mA$s^U`xt(U_3S3lPUb^0zj#SQIUamP1U%(HG=O%_fNn$pUqk@D zXTceC=|M?mPH{;h7Z@api~S#_XflO6)~Wy4z{;tI!FMzcLr2f z!o-pHq=51=OgsYG#spQPplfJh;;~5Lpgao`&wz@9tU*3|x(P{K4%F_3j%4*f#X;tS z$_kh{H$aXC*MSV+8c(EuS60@J`4K=k~p%x zlcDVbm^um;xSkQ$AQ1^iP4={V*A&G<9WH51SX!(lnue(U%$l;t0EiXapk?&NH z2MIv!1?@+Hncs{gj;y`|$^D?J0;awJ$zEjt&cR_XC{2JcC>%hT0U8caYvJdtfX;vg zse`qbKx#o4)W-pd!&*onF%a$n2}1j0ASOr*gl~X23=H6L4G(N1)=cu{e+z z2!ke_K~k`I0EvMxEIq^G0VD>(3!q&9SUiBlKzI%`1Hs|}BnHA7Q1!5Q0EvOH3}|x_ z0|Nsr9zbFs3_E)r77rjX5H^9D1B(Zc7zkTH#bNOP5(8lys5mShKw=>502PPD14s;n zU7+HycmRokum@Be77rjX5cYwJ!{PxX2EqYQaacTn#6UO%Dh`VWkQfL@K*eG401^Y? z7^paCn+GUq8?_!Bhs6;N^ToFtOHHBfO_yBcH$2sc2*KcJb@0u_htZwILb;SQ)cY&;hv2Esj1 z@jqzhOn{2R%6pJn5S{`R2d$e0X#t6W@C>Lp_{5dHuahm9A3#6b89R2+7nE=UZ7e?Y}y<3=Dc z5dH%dhmEC!#6TFl$q=;E1I?W*Q1|V2T%uUAygc+^AOoR70>}f^gBhiK*d*}nI8ca2i>`dYz~ho zh{wPH8@~kE3BnsdlO7BV3|r95IRX_2FTF;}zXzc0RPc@|B=I*;arAcPWT<=4+jS7v zFu?B)1-S);VfhEW9)!6Yy*`4CC83vxuyIuMd@TTVpa+_NVdJal`2se+ik@y^ukwI6NZ|$>U$sFKhmEho?xzMxgYX9E_-YG?gJceDeDwvIIBa~? z1lq3zNrNzK9CZ(pIH=zNi}O znmBA6jP$b?ia_Tn6y>KRmL$RtEG#Z5GSmZ|UkH*zyI5v$pVe>*)=>imGE)B!%4Gm` zLqS0e>-WIKBS4*e1_lOLdITj~P?m!>mkFNLzy%sCffsQ{4wK}ihV|DbVSke|@cF+2kr z6k=dt0FB*%?15pBS`ZsX2Z8257$9RpAaNM}3e^v@4<-)N2jhe0m$1420O$}3q`PcD z?gyC#!XUk{em!V@3}hx~Yy~6^!+)XngT}C6Vjvo%7MTX!X$=ztiNmlGXu=J~L88&s zg6{kVH9!DC76C#_<{TbRRXgDOy7VGc!2khL-QTTFX;L~-AQOs4b}%ECV&R<7#J81q8Sdd z52gl0gPI*!^@A>iMCzx4)PgX&{+yiD3Z!EYq4&=~PCA6#LIWXTchMLbTAGr2)&)Z# z$YuzJ=!5V!!pL=v312dtjU-PGd*Mxd@ zm%L>FU84e8P6%=)Sm|MyYKM+&E|2EFVx`wnmX<=+{x$vs_1NlcdfWbkHf8jJ(g=gc z43BP>gN^?{ouN8T_}WO1?s^N*`c=r)Ertici)}$`@Ve_QIzJg6fI15*>;T$Z1l|Vn zyW5||qdPnSq#x}5*0-g6pbJY7yCXe2kMy?Q`v*GmfVte(@Ed5EAgE}7Y@e;RfEw-5 zEno;a*TAFmAjkyJ3H>nVfQ^2=9K1mZ%=YL!`1%&odS%CuP|%@>-SHkC-N76_-Od6Y zy_o#+O1;4@he#GswgX zu7(GETc1Qb@=rP7*?fe_@@T9tzsnKF7@y7qu=EPv-vhBX*afr~;5Yw1Hb=_?C4&6> z!Waz?I9gsPVFO*i1lp^4-=*`|i>aW5)Q#q~5+#tUQCtkm7kaR@tKjf_{S3Z#8MIOx zoc_DzJ-X{rgQ}zm&AjFxT%E2A{8J7#|KR1Ha){$%35(^8Qkia7mgWPDovtjlpk=xx z!H_Hf+k0P&W+>=3z%J6zG+&vKYO+(|~hQ~5!SvCiF-9BWr50s6;=bnI;xOba3 z|NCDmvP%_w5ymr+TF_lRpf$-al0myLyU`sZf#$h*^Sq21;loqu1b zV%2Sgs@tO1oe{bhs+1SZH2_xEJid&f~AIz;avX`xh4f|Nn=@k7Jl; z=Qr?TVUNzgpomfEmQV5MhTJ#fzD(%%j@^ z944TZ<}IKtWz97z9Ks&mEGmvWlo=TqKJg2%sFZN0dGOaAaNME9$iU#)$%cBYOsOB} zNEw&T1E69Bw4)B`EDNyNosckS{R7H1kfO|^^F1^)UUdEe?Xl!n7}8mt7#M zkRoaFFHj_b_ksjOfD>D|z>7N2HfO}bcz$`XykiI?S9Ql*fXY}2h|!3up@K3oh3Y)DjOH?1Gbj|ZZWcA(B9%u&(6PK2f{ZGcAL9&r?b3p`t|?6 zCuWiY9WaO*+XjxEr3}sgxcFN<85tOw|MBv-fO_|SIHrd*4v=Xz3*SN{>0*V^zsnw@Rw1beVC}_Vdt^ePoR7C zKsJKhZGzRn9Mq6ta0Dg%*4vKqm)udvJhudud+uV0`D%c?z5aK~)!c z12lN|3s|W07%U)Lw}USad;cO2d?iyU!^^F(WcYfHN9%2mUQoA!!Lz&80$RR!@Vi`q zCQg^mhtT?Zmm;{_dk<=qJoyevt_}>4y_=9Y-^=L1zz_^g_Mq$gT)NdgI!#p2%NLJs zcMs4}&7g$q*z2Og*!-iuT&(kuN3zId55`+|{~saZ4`$koZ!FA=rFt*-aDw)Ag7*9& zT4*l(+Z4d&xOS$3i$!K;{+7=ipv#KhyL3JS?-jvFd8K>7f#leE`tA^}YtznBNw z@sF8Ck8?6GV2PRLAA0;P+?)&ypvwn)!GmMqLYb*V(xcl%1r*J_paAbYg5;lW7Zv0K zt4?x(53JH~f#f$(=>poX3r{~7?&fc)L~{+u`yii#gW%-`@TM|QI(gCX-H3b_Jf6H1<1_s01 zhHraa)`C3Mo8xxj1?VgQECKTY(~9Q95G#H&mx#jZA2z1aP4N1^@$Y}ohM4|PP6h_g z?obbpR+$W)Mvd^+Dd?g6z=JfNjSZ{RNR=EkD`8`R7IV7py4-w9XhcOMp|#ODk|&!vPdkFBrfnA=Cq00E5ExB?st)D`>be zf=-=5%T{1B;PJ%4-|`yNod8t@IV?~ICbNJd3N5fpcYrf<=dsuO_JJ0myvzk%x(Mpi zzf6XN=Dt$UK+?X?SUsbT8B?I}Z2nQr-x>u8huxqK`U^kMez)Wouf5>u2Q>^pEi^}P z+syGB3!4Cc%UNayNYey#J7)7?M$iFLM?D(<{{Jt)z~8=?4N_-;l9)0!r%`0M!V zW#BW{Urzn||NlNv|L$cshy|+IUV==+k{g(Cc}kbRwG4FQAZEG(U2KEwA$ZBs{3p6J z66DIipl#)yhd?O}R)TvpgSM5mflj^p22%11T!y-OfJz>i8b}EQx)2bn@sK)zubj(+ zfALZNrnlJY#!|@1IiT|TG{~A_kV~3>F!Hy5WMKephURZw@azA7aN8VObAgoEe1z0f zSOQ28qz|<*3yF1G{?<@XW2F~#bo~1lH{XNWZ#zK81iJ9MK6q&flEVzVP0Uy`W%Ca! z{#G`S7N~Ju5aU4oaRJbQB;nt#~xw>)NIU}*kf!{53Jyj}Vo$g}zo zqd_MffsO9RZZv598FD=EZv!_pK*qMlfV4ne`rsYda+n_1B;e9WuuJXu zTNw~8ZG{*u&&a?4Hu~ugtQm726OJ&|=WpEv(gJm<8N@iy1|6_*(|*AA3PSSFv6mBm zLec?@?+@O(?ZD7kqQV0f>n>5@c^Lz0Z-dKoP;feYgp|rJv%reMwG7mH+vdR4d59I%323qtixFIffyOJqDc=+-56YyD-L4Ga;t|x2fVhwO zH%fTDwEKq24~85M-~uhIUw%PV-+AmM=x`;td5)b&UUq>twnF=zFVjKi27vt!v2QJ! zc}{42(5L~VKLb_|GH(i`{|Dy3)PtvA$L3lFy^;{eJ)lJpFZX?gxf|5L^Z<=uL96>0 z&7c1Ne>v|fq{a7gN9-vW1@O3dBoz58^-JzhaGPGI-b+ACk`yF=>01b^phn5iSb&z|y-B}vz z!IpqVi#y#pN+dt?=esLJA9n|f@(a2P!289$&h180I z)Z~)X6b9E+hJXTwiUZHC;$oV5I++|(3>ywcpH)FRNj?@W-n(4*cn^U4x)GE=~o zDHMb6GgL@P&B@HoEJ-b5D9uaD%*!m!NKJvtG2~_zgI2jKs8_2qgoe23S}1@Q(Su!= zlUS6VicnFj&Hyt#wKzGkAXT9_wXifbFFBO~=5VMu*tcNKNkyrN*$gT945>NAsbC^A zjUhEJg&{2wB#@S0!~nWM34GIHI%q|DW*S3g9z#xka$*icUSbBPi$Fq&xv6#xHjvP=Lk=WRlqskdD`*s# zBo>uq=A|nnmVo0+K{W+^N)FT&9>t>}Fd71*Aut*O*g}BFV;w-F&d{B33gWLjJ zmkt^p1DOx92exLs6(oQ-3&0t4#sX*`0c=fnJr?;y_)!6F+_iAFBR6Qj0&MN^E>wMx z{ohj|`?B3Y$0aa8?jMD%#Rcybb_Ct^6~zTQ+M$$-kHecAa>o{I{Tq1Q9QdpY@Euz& zdvpL;0QW1!3C5K-1!Wca~RQf@H>LfTY#PE;0Nkwp`DQcKGOkwMuHpY-g0lg1ZHhU ztcM|ZbAy(4oPoLne7BW9=v)f$U2N`r3QUl#`;L4Zpg8#gRR>Pj{-8Mak>$Kc+59$zu_jW@a0Cqc+jcw08XdfLT185}+L=kLF zH)vQNWDaP!1tbH`Z_sD2JI36$ht( zkOuI&G|;X&Citl;I{W2WlTXBdV0*Qk|3Y7qz z*#T;kpo%guykulx0Qq+UGzmeM;xqh$io@2PgX>KO1_n+XXC4UQ5C`20h|Ry6&@%%j zfTvFx7{GNIsCw052j;W&m&cj?YW2C^1Ak1R$q0F(SSs zKRY!KJi-D#O^l&9u`HFLI6Jc-zBsi2NwX0{W?nLAYz5NeXGkqh2Ad2!Q6N3F1T^LX zI@2H}KCd)4wJ0$MY9B-l)cKEx3<`jq#-QipYzQI@K!h=fFai-KAi@+xn1Kj$5Mco# z48f`m!OAVc0$}xqU=4;~0}R3X48a-=!8#4WDviKejlk-Szy=svfVRI!#iwQF!tkB-U{R0=G{lUc3NVfraF0(+Ny*Gh1D^)q5)V19Ag44D z_0)jO_~eqxf>iK^e*bt-z=6k!Ko+xaYpz;)?1!OO%&V-4(L)C-CL2Y7~cpg+76b{Jd!}ef-)PvT`!_;>osRy-1VdAho zQt0Yod!9hzpkmk-}3ADh{GRi_>80H-iMA>XGC3ArA3CX!{OiFS7cN zIK&x23bB}vyq5*kHi5aP5{LTDP;rp6K+C~l>MugYK@_rk?tlcK@eW#k4pSchZEAtc z0S$D+#KV!qkarwDh@IS)E9uMZ-k12%mMX@VB&|N;vn_N`3|&31mrJ}xFeGJuszQpaVI44 zL{LWrOFSMy5(l+GVD?@|5=Rc7KRCoWpzU;!`$4NFVde-Ui6fu=AcrK5eD;F|R2<}f zgNaD^&>E|GlII{YuNaD!hUfT13WbV;%tt005ts|=SPrQ5C-`dgjJBzAF}uo zX!!yy4#C55AoVMt;?Uv&F1`jT4(qdk)PnE^s5mrw;p(?Q#X(_$Z0`=JIH-+*EDl;v z3gUz6L=X)!8-x!))r0C3Wbq?VaZnk8EPeu7K7!&DS)2u04ubMNviJq4dQe*qS^NrA z9Mq;l78ih;1FBn*#qU7f11dw1#UDV$(a(%|0u@I;Gv)>cNYHkldpH6^HD~fV8VY z>Q$ie2pj(giGi>NR6Y8cF*Q*2=x4^j?vX}6GsXmJ4*Hof7Ep2YGh=L^;^=$jCqV5* zKQqP!svb5!0dhMCdqBm}&y4YbibKZl5aAF26-PfaCIl)D8%G714Z`)%`WyYsn1fLD zuyGoYS`hYz)~}FpJ%qi|P=BGH86yuBKLg4{Nb#r)6~BNct_~Hyf+nsF6-PfaMjtAU zerAj@R2(*M19CeEn?uFX&y2B#ii6j-Ai2{XDvo|;j54$x16rE~aw^Dd5S{=HH}o@O zs-Wu8&y2YV6-PfKK?fSnpk-vp<}ZMn584)lEWQLPj(%p$3aB{xnK5gi;;?xtklR6c z15_OS%$O}uaajEYQVYU6pyHr~P{{7t0~LqO4}jEy@ByeeXc--{`Xf+r*!%)WEeONQ ze`tLQ5(D8gQ1$3%#=y&eH1+WEA5HuQ)Ex9PW9~r3K|5rS-T442j(%p$6R0@)*%dFK z;^=3_yn%|NpBeK3Dh?VaMYi_~R2==xm>*Da^s_PkK*eG6hM+J5Vc1YG`k67X`V{@l z7!GLqM?W)$2P%$!_J%4nJ%h$=k=-u>RSz4l0J#N(C7|NyXU51t#bNWBAhjT@02N0+ zGX`G%qs6ZVR6S^17}-5KP;uCJ2*_*@Hh_wwpBZBU6-Pfa2G$>gjh}$b0AU-bdf2=x zNDPD>pyKFf#<)Pm(a((WfQqA^8RG*Lht0Er%m(2As5ttWF(FWK@Df0z@+|@?j(%oL z3{)I;#sbJ}5Ke%KA3+P}6sS1ptYGAD&VY);?g;>y0m3;@arCoT3ZUXw(9AD^ii5`4 zk>UTiJRnWxuK*crC#1BBlbD zHc;^uXyOh~@il1TE>Q6eXyP7F@hxcLK2UMknI|A=5DtKf?*Va;!Yu?UegI880xEt4 zO*{rFegaKA0V)n#Qv;F);S{L&1rP_x-VCVt6*Tc2sQ3*u@dBv$9W?P0sQ3dk@d~Io z?0y!IGzix~#bIY6fy6+#0V@6m#6far3sfAoZUrO_!W~d?*xDeF7zp=3#eaY}Najp{ zivK|qp8^$UfX;(}q(OKFRGbA(d=6Bc15JDZR2+2oD02C;1S&3orhWxf9JY1|WG4u( zfr?9@soww(tb737YviAzAmThPR1pyC~9;>pnQ4cOW3AU}cdGUx#31T^&; zP;;iBiR(bcXP}82K*i^viLZg04?F7+WG4t)K-DinQ*Q$mUx6m>02N<@Chh_i-+(6W z0TthZChh|j-+?9`02N0*YY^nlO6b7w0W|dyQ1wU9#ABf1C(y(bpyIH5qCjSYa6Qy~ z^s@{zpz5!nnNtf@e*;Z?FEoDdpoy=Aio@=r0@(?|6;Sih&q`#2&U?K;Gp7Nn{tcRV z9MpVJUIbxK^Bp=h3gW_V$$^Qhff&%U!axc@T#$O$S-7xqb(pw5hyh(ojI18EW*9b3 z4pIg(#~Q>yIzt`A1&P~(7)WQOgSa4ZR}g~%x^@?O&KgJ@bTkOaKG--mNEt{x2*hAu zfUn~NaY5psyKO+~VdK&;@hA`jdVd*69>fKyj|DN1)@OpaAaT(8FOWLecrr{p9mHT@ zV1SJqgSa5|*&qf30|RV)7{mpM!`4Z_#(`ntr62|a0|RWl7sLgrhmAYH#&u!hp!H=S z_rS()Vd8Bd1_J{FY@8Ov1(^dIUx1Cr!o(+m7z_*yuyI!q7o>hFh{3?X02^NgaY5p+ z@dem8Doh+Uz5p99g^AAxF&G#aVB?}7F323v-9I4r!^S^h;!8mc(3X9WBvQP?#vNee znIL5#b5?^G3=9mgaZ3;vB)$&B0GR=$K@>=QBZ$GkzyKSE1aU#)prb56%322*bi1eO>@&ANqJZY@7vs z+!)sXL?17OwF}YDsD{kQHR zr?7R-==~|!I%o9uIcz;4dOH@jo)Eo#2wP7`##yc4V_Nm#$Fm}FEg1ArPjUqv-3mI? z6(p=zl&=Tbs;D=B$G3v!JwZtol=eaC5{6;vu?)Vz5+Vbw-XI(X$XYQ_6vNcRBqBhQ zflvcD68RZ2?F<41?SXVuSR6XwdvAhz-pKAR#c` z0}Y@LXdVNFHCO?Z@Q2RDgWLfX0#hBJMTHCu46w76LE#TN4+UmF)OZHi*{f*QFdTqR zl*8sZz=k4~XD~i!J{ROBbo({DAu3?)XpsG&q=0TeX#N%Cf7tvuL>B|Y3(#Ucq&qiZ z;vlskHjJ)CiW87H4D*5(*TFbQG)x~%2z2%;C|uCPUjV8fls{l2Iyf4 z9-W82xv(*Elqh=kIxs^0%c8=+jl;9^fCuP=v(8iBT=*C{N?){GDpm35c2VI-@i2xQ z99b&q(R@V02XsOr(%Fcvh6i3>2ipoc>jH9WVe=afkM4K@usG@3SP{`a5|XGr6RtYU?o!SIPc0u;y$pZH^-bR?Jt zh07;?K_3;!F^He|1$l9Rej47X}8HKRkNf*>~DAFfh3E z`g8KjGjx8s_|moWMDrtikAv^n95oMkG{0bMKGo0>z}R`p!}41By&a(J{r#eg<^jf& z9y2)4Idqt?yMWGt1;;1oEQ-z_&HvfU0u2v*Ug7moB#8diSx@d^!hV`HN9Tph4-ThI0LeGMXEZ#}_#brWTA3*HOvHolIhqe}Km^M_ zK_i@hn}`+Tg~Lck|AO^9hI@AYcMS9GJmwhc*?AUpJnNOv&aWQLZxm3HyoBL_ZYPfB zf86~2pe=vR|JeBZ8yOfFdc*#J&Z}w%^-r3AF!Q(GW?*3WdeC5;m%%}4|Bpsuj>IXX42y|v> zEa)^w$2iCM!=STcn*Z^ZMmPTu=5O7^06N5sMFn)=DhJ43Vg8nLpqqU!q1jn7!K2$p zMZlvwM1=!%T+9C#?!W*4cRcRK0a{<@*~#|01#wmh*l6|t|Nlcx1oas}=5fHzlx{u1 z-(mxmXXbB}`Tzev$m_lg;9Mc_iC@4)g`@NRi{?KNJ3s~dCr5rkwwKcX|Nox=IwZG5 z1;w;?pfgRap=Z8H;FAg%%Z1 z6d4}i-^T6%Ik)he3p*nRe~T>WaH-B0i16dz=D`Rr>G&BrO5Zj7(&cY?%E-XrYIvaG zmp1>DL;Tw=c`#n!-zL!T%YeTHw5!i^_vtfWz{9`o6#u?Yp1Z)jGiP{Q__z7+Gd907 zFg)q_?I06>i#HSK@Ja@cUXf0ZfH7gUGTBIS$5gS z@?t5kWAhJ2$xF?LI4rN#9fTLy??D~|AAQ#Hkdc9be;Y&d2?ZDaZ4Yen_*?da&SdP( zQQ>gueB{yj-ly~3i#wq6w?JvY7<7!U<_k!CA9n_i#ed=#WPS&?(}bCmg>W6yR@ZVq{=2JjuWBlgGh_EH1r%AW!=ypLF`h z!p~I7*?dZYf8VF(ci}KkGk)aXW&kq9oYAB66Ud0t!>)#x9Gf3D%0u&oM<+Kpbi3z(BR|E% zSVk4ppy6+Q3c4?;@dzl5fX=stowo@tA3<6i!3z&wN`ub&2K(^E%kSW$roi?8`+cCM z1SHry-+Mxja`$chRub%C3mOV3_x9w(@7=yp-DK(sJYJ(`brK%xv*KZ1?&>^$HJIzP~}TY!I? zkW+_<3g{H{V=OENujfPSmo!iQx`W8>^yz#LcIrNmJHe*-BtLkW3oDgimNCAC&}t%@CCWe$6>5ppia)%_SHr`yW6^*?`$924lkQD}V%v*5)E(3xe;N11$k>zH0<|Ns9VY6xf?5XF!h6%L?QV<=3?P#Pz|L`I`NS{4bleeE zCNjd4XSb^WsJYr(@BtjoFVhf?nGH1p>LZVCBTzQuZwCz)J9Lz&s6$d4sGsSAS_ zwoAQEjG%Lf8Cm#SKxeywngH@(7l7<72id#oA1EN<_JTH3Bbn#Xjco64(7D0j@)2SN z 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 literal 0 HcmV?d00001 diff --git a/vendor/lua/5.3/linux/liblua53.so b/vendor/lua/5.3/linux/liblua53.so new file mode 100644 index 0000000000000000000000000000000000000000..83c5fbd68d24a020332b12555b84b20909b1d9e4 GIT binary patch literal 273536 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≪6r3@%cz=a7sPoRu0JWhQK#BM@xcm|D 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 Tl_5C=cCH*m6cW}jHi!lQ#H>bB literal 0 HcmV?d00001 diff --git a/vendor/lua/5.3/lua.odin b/vendor/lua/5.3/lua.odin new file mode 100644 index 000000000..d7884e852 --- /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 { + #panic(`Unsupported platform of "vendor:lua/5.3"`) +} + +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: ^c.int = nil) -> Number --- + @(link_name="lua_tointegerx") + tointeger :: proc(L: ^State, idx: c.int, isnum: ^c.int = 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: cstring) -> 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 0000000000000000000000000000000000000000..fca1529ee1a44e09b40cb069a9a1d793c261f40f GIT binary patch literal 302592 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

)YPWQshGiSjz`%deBPyUc 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

OknbU~fLHz9)k1KtuT`5n|50I9V^?V^Jwjip=v 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

^S_2xg9BAF zGY}@GBZniLgCdV`a(ZeBgo7dv4LOjX(y@eNL1}SDNk&mBH1#5J5vG6yb28I2N>K7W zrYNe8r2PDx)I>-Q2C0SdQB@@;=j0cc7C}-kNEuuJRb5(fNl|8AIygOml)?C@s>)!( zAn$^d!39v&p&16{qN>S(io%S7@ljP}=9Q$Tr$WjWkcBWls;a!w+$1DLP%fI9Oh{@6 znUa^8gOoZ-@(c1o=0a>i@DTb-@{!^Y&Ow$(iMo<}I2Tz>a$0F#a!F=BB+g3m5qyNI zqQr7gaSRF+C=(%9k`D_bkTimatOAw_ASz%yWECKvrl%HFfTOwu>~Sy`Sq&rrVM<^; zgbGO1mE=QYz$T#yA=D=4=N2SF6CjL@kWDPgEXe>H0AV3yiW19H3rnFz6r6*Q&n$)q zGRU(?Tx2y6XMruqEQWHB<&k`lSq$YM%R@s8Y55N9Cx2vsGO1*v(7xsY54 z=b*}itpLd(rA$y-MO0D<9zthwenBNzCzyc{FUl`TEP>buWg_H?Q%g$nA(a)BiI4*o za!@%a6CszFRGgWYk_t%{a1KJgEVZZ@mbzhVglu9-L1JDeq&Wa%BV;Rb^UEO4g|HAZ z$r-81*~KM^$&gweiHlGJD%SJT^1%TCVrAqT2TAaMj?A!PDW%RwzUh$NhYB9Byn=B1WH zd2ki^1*v)QNtq?aMj)Rd@laJj>ffBwM6e1753a%|9-KCyDK8#m5V{bOTDU87N)vtJ z;XEW2>BXf<5JSK$B$=Yr!qUv5RB+qdCmzm2QUOXOrAZJ6f-OK6KvD;4yOri8gB!y> z@o*lJ3PdpvHV45)QUk3qeBwb2Bymu)7t|Po_yW#DQUPtP!5fo4@hBolDnadTX!!|t z2ofJnRZ?kM8nk}#i3cfz381M<%glk4B@k5*E|QwkJa`a8m`HMP84v?W9As5yUS>&g zW)(Ow`oyD%U{MJP8<;9YPVDa<%17fB6RFH{(;3RwV2U4B6c%x_?2NPHw!V9hA%P(;vGCgy=FO=$4|;-RYm zSHxfo!3Kf3=xQMK074OjkFE+7n2;tP)H5d>R_;3BCh zM(%xqm7$0rsmx0)2NexSMHGq%lFHPI)MQ91hooC1K9VX>_C;2O#79yE86E&T48lZ` zE6+%UG!uQ|AxtE>#G-VFdazbF4@pHyQDSmx610`z6OZ7+)qv}aq{L!y!GPeP%BQ3z zm4bUgUhUa7^fh|Jf!Bv3dL{L?hmZVvLq8+Ra%prY# z!4f{dFqMIU;gSIZ!xtk41`QJihBsLZ3@up<3@1_;7({{?7`}xuFsLLlFr4vWU`PmM zV94`gU`PmOU|{oMV94@eV3?Q6z_7@hf#Fan1H+MU28L@M3=Br83=DnA3=E&*85nxv z85q>!85j;FF);KbGBEr~W?=Y|$iPq+#K2G#z`$VP&A<>9$H4F+pMk-| zmw~}8kbz;2F9XAiXaY^DKT%s5lvLYE6M4}lO)VO=@{Ls1$7gG)LCgIERw14|kM1BVv_1CIv-gIX*D zLr(|;gGvYk!=7LUhLB(ehF3uh3^G{^3_CIz7=mIL7_N9RFzicUU`R?~U|1K(z_7%f zfgvoLfuX>IfniTJ1A~<(1H%%31_rfc1_rJG28Me93=CO*3=G%&7#LXm7#L!b7#I|C z7#O~VFfc?UFfc6fWMEJWV_@hDV_ zE({DTZVU`F>=+onnKLlN*fKC&vS(oUW5>XdVb8#D!;OLAmoo!HmpKE2k~srIkQoC* zk23>vvM$56>o%TUeG$k4!0&(Oq>$k4&i#?a1?#gNL7%#gv5!;s66&Ctq_#4wqm zf}w_?ilLmLgrS%rpCN@IjiH61nIWB_n<0;(lfj3o>ih-L!h#{6C zj)8-LmqD08i$R+~hrxhBlR=-sh{2FSk3oaMok5quon8Ad>l);U`m4TIkg~6A> zpCOW=hasL}3PUeLA45OG1cpfr6B!a1rjCXY5n;s4K*mf1yx{Z!H63A%5mZt1QXQ-m z(#k|u2&?Uo#6T@MP|FrkYv69%Vr%Jxn=#m0IxyCP7Gvw+;%cB`ZQo+; z{$gqC`NU&%8PVF5@mL11(1#!~hp9k0D;tpoAtMfGX*?c%bOdwM6JufxZS)TN>8Hs6PRf&)5%0gp(~2msok6Lg>oGQfqQ5Oe$rd0GZ@I1c*=8=^CUVgY*C zf(9kQLs%%PK*O0R0{*$7(F}3;~0iU480+&Mkz_a z10_fa3p4kF#;DMT%|K%CQE-IGXtT2z6QiI!j5##`5+yJ@gs=jn7&DAOqNp=js5&r; zqb4ED_JVuUU9kxsf znleDkfgquL;162rPJOg8F0_+q>6k`#moYdV8@@J2HV58QA8i-4+gP#On~a6pIMKuu(b9BAGNR>UDh zU}*>;0&Nf@1VAk^lo3BjC5BJ{ZvG;;kcKaU4~=-}3h4O}oErD+Qj zDMp=#fKO_Gsvoc#P_q;iP$*;eAfv$(eUQO<M5MGh19@N(RKP>{h44$6nDx`8$3pn{MZ z1Ij@OTaaxCpTZk$P^F;e8k7kw`al^Fqz6$!faH-IXAnM8end3LAX11Virff;$bkz= zaHR#}LsLGa$psQXPQRcg6|}5}N`c%28=H>@H?2St&_)%QSz4R{tC?VYctZ*%fWC4D z*(abRjoNI2=|ajX;8qN%sRWZllsjN4B>#iVL-GTN3ojzUYT=C`kXi6%5R`+uiV70( zutpD52`mI5?HX|8L6~sW;KmJDHKbVsWRAH$NsZjz|28vlkz(5-!U^(z&C|KhF>_0@~1Ec`C*#Y50;}cwF#v{6^ z5J^Z>!Q@a^8zDs$Qj-F#57d}|G2qKbpg9J0B`Ub-08$FAJHSqcG#5ak;PekJgg}Ke zq=^8VXh5BHM>Gpy@{k4rjE6M)0d54q#F1t;U==@13Xw3umc!!)%mY{RIM(QbSMKVi zKRV{j%DXj&JjQ{^b^gz^ui~~80i2>>jBL@Zs zuv0T&B4Ce!Y+#0on1IxPbi&n`B1Ayqav%bVL8db>m_vCWiiyFGfq|T%RU8R~3+_=O zQ;3m?1yTxOV)$*c`pR|&1_p>z85ppokQ9*1kuXvUF@_0)QpjQ$2TFrd2*_M2$2>7H zDhm!}91G$}4l@fQq%dP<5a#=G@HT-k!;`B_p}_;rm7rV&jpAOH8;*Gce%VPe5v@nwUWYRROf?3Y0Zd+IWpR-b#Ue$pR|B!E*yh4FFSP zP+16)fv|{7^CqxD5y>W_If0)f89;Mp2%8YaG{krYl5>}d38tTvPK*AM0H+p&P4Frg zY7xm{hsB;hxi|iT>|thr*@M&(q@q1FGv=NK*~0>}2h?){&&$AlL3#|q3MHf%%2hl1 zRR&z3L;VA@2iEDKqMwdAp1ub16C2D=pe_rjIgjuOf<<7Ug6A({ zV+%{UxBuAVGoW&h7sV#na17KUs`%+ZT0sH2LWC><9Cw`ZZ{5_|}PY+JCTh)v<&E`vf(5auV;kuRuK zB!?aro6af-yaU-J1hWY=@C6xOLdsGk+k~a0_%1B>5>!$M!)!tyts~c0SaPqj%c1|E z+$(})7xFkD)GE?b1au{r0#Z%2(rf7>=Mai}cOF8sRX6|QDIV6E>7bxX{hX}~F z2}}AuTzum=D1A#J+l0~7BQ=iT-6*7V;CW`+4N&@)g4u*VP7L)H$#!9BNu(X#dmq%2 zkVdi#G<*YI&qzgkHe@+J0NEo0vj;S00UO&U*B&gfv`qQ$eNZgPBJ4pPHK(FYeD7sH zfozgPvWW_<6)b7IR`T9?P#Tv;{=V=sd2QH9xqJP$;!Jy_CR@srE%KIZ$p=huMWPcLlYG^jN}TQ^ekoXCRw2;5H#oi&4|23EI1#fNau)+l0J^pKP13 zv|24cyB`9zTD4#{!6);mX-hBjl>;DKv|+Zu=LyNS#Tc`_zkh?_BXI@>1|5hkh;?l6 ztV2c*5KH-Ezq9Qms9mQEvj;Z23H1!zI%4}{uwg``HpA&|{*z)13=DcOI}r1x_DBchgwByj=|=er6*Q=1Np`bY7=ZJ0MrVS zL(BwA3X{)I{tZfD=1@D(yZ9vg150l!??~QfK?Vi}3#c8Cb7IK$1(w!^Q%mqOP%FR^ zW&`qhI8cj7^@$0V^4O&)=nAMjwnEqgpUj3@Lwc-W@lWfLN4G%!u}0W~SkD2qh-Cj@ z%lmf^-2ml%8-zWu8F+GS!4m)bX1d)1^|ozMZGo>rfm%g+$YJSS`CZfjkMY={+67zQ z0=0_Nu)~%+_lCcF0?M8C2%EqwBA`}~?i(!eW8zQ@E}I>Y?0}wq0JVlxpI}SX@*MB3 zfl{?2!WQ_F3#c`u`vyxo;N`h|ACwN95cXheLX&P6mYljJ{{c9sIwS0&yoSbNPjAvi zustpad(gWCr27X;{kiYblnbEx(-p}c$k`oa#}Jm5jj2=Jdr-^94Pgs(2@28xDe3;f zk{0fIF8&Kj3+_lZ!I$jA6EzvFTP$Tl@#3W)KsB}p)GoB8X3zkHTS{yj7fZRFpSk27 zsND91+eC$#C@iUN)xu+sK{?h7ZVwekTd>%}+F&Dijys@q z=L5F~v|J0cGKZpchb1lC^=Li}N(;Vlo51U(VCx0RObfYLOnxz>|m)C zHmz_5_o_mmb|4n2l5Go?JYy?g3-0lR!fZiZ0}Hi^)G#x_QY*}!p?4EhD}*80guJ>I zY8B~Whs9UZPuKqhrG#)KyO0*{Laid%S6FO%WOM&D$fgJ+n<%drOtG{VmmJxDUIBcR z0eHq1y#5zsu`v~W=JTWOJ;-NKNIs*&369O4+5-c{!wC(-}s_|lxY@$uwYB$RlJU0`EWD`cwN_vjMQiglh8b1NG ze&UgAqImrmmQq4s;;yTpQX&D_9?Yyux}UJrf3JLQTm;pBiBP+c7tli!9_jXADajw| zmAnGA?~@SrK-cDzZ3~uM#M=>g29%4EQEWl(w!)J+v8`Y%wtSoL;RDE)6ck&)hY&(N zL$WPcLM$!d&=XLIr6O!WZDLU+UP?;dod?;HhOng=a`G(HE2P_kCB&FBS)YSKEFHxb zYR5}JW5*wmEg2}bP&-~^ERVhhg;*xc7Wk$RvO^3@>@zf|JqOv61+xXd--K*iu#{*Y z7keHDm1x;eTTr&LKrJFUEn_KV?)FW64k~4G5cbeyT=8`d$5)VlauN2>WL%MJ!QS(r zl$M9Ehr)41Y%T0-OHaQ7wXpLMwjgI2(sL%3n3-rE_7)T~1qeH6GB!3pFaHrm2YJ*yC8?>!wVZSTA^6h+C5V__7Ak4v>a{==wNWQS%j`X~Q zr8Je5&jYWps({*tvds=^5!{2swm-1+x6E>WUIXaW$FfiU zFsRmRfY}7yISLIllI_4YBc#K&@;s=9XhgCDwkeftd$6Q}m%Ed{fl@&e)E;QT4cYGs zwTR@@hNVQIltY7cBDEx9&fY01B?F!>5<`LsZ7g09U+8pbBsKUik%8Jsn* zgJ$hpp|-$x|B~wyEH#koZso_I8mJ9w2Y8$uc_|H5Qkrzq#NVKl)()`+wB{DRWf|%j z((S>L()L$1T?M7I4rF`4N2S2y0})5W);(B8{hd0*j)2w)b|Tq>vdUG> Date: Wed, 5 Apr 2023 16:31:25 +0100 Subject: [PATCH 28/75] Alignment fix --- vendor/lua/5.4/lua.odin | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vendor/lua/5.4/lua.odin b/vendor/lua/5.4/lua.odin index edfc2db5f..df02076ba 100644 --- a/vendor/lua/5.4/lua.odin +++ b/vendor/lua/5.4/lua.odin @@ -319,9 +319,9 @@ foreign lib { ** state manipulation */ - newstate :: proc(f: Alloc, ud: rawptr) -> ^State --- - close :: proc(L: ^State) --- - newthread :: proc(L: ^State) -> ^State --- + 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 --- From 8ff713f3bb60172ae880dfebcef039cf4c331653 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 5 Apr 2023 16:52:17 +0100 Subject: [PATCH 29/75] Add `vendor:lua/5.2` --- vendor/lua/5.2/include/lauxlib.h | 212 ++++++++ vendor/lua/5.2/include/lua.h | 444 +++++++++++++++++ vendor/lua/5.2/include/lua.hpp | 9 + vendor/lua/5.2/include/luaconf.h | 553 +++++++++++++++++++++ vendor/lua/5.2/include/lualib.h | 55 +++ vendor/lua/5.2/linux/liblua52.a | Bin 0 -> 396236 bytes vendor/lua/5.2/linux/liblua52.so | Bin 0 -> 235709 bytes vendor/lua/5.2/lua.odin | 728 ++++++++++++++++++++++++++++ vendor/lua/5.2/windows/lua52.dll | Bin 0 -> 300544 bytes vendor/lua/5.2/windows/lua52dll.lib | Bin 0 -> 29546 bytes 10 files changed, 2001 insertions(+) create mode 100644 vendor/lua/5.2/include/lauxlib.h create mode 100644 vendor/lua/5.2/include/lua.h create mode 100644 vendor/lua/5.2/include/lua.hpp create mode 100644 vendor/lua/5.2/include/luaconf.h create mode 100644 vendor/lua/5.2/include/lualib.h create mode 100644 vendor/lua/5.2/linux/liblua52.a create mode 100644 vendor/lua/5.2/linux/liblua52.so create mode 100644 vendor/lua/5.2/lua.odin create mode 100644 vendor/lua/5.2/windows/lua52.dll create mode 100644 vendor/lua/5.2/windows/lua52dll.lib 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 0000000000000000000000000000000000000000..828b775c8511e9ac3584408901a4a029d68e81f6 GIT binary patch literal 396236 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 Xh4q&p=fgqDTabEK_@l2ogtglMI)UL~ literal 0 HcmV?d00001 diff --git a/vendor/lua/5.2/linux/liblua52.so b/vendor/lua/5.2/linux/liblua52.so new file mode 100644 index 0000000000000000000000000000000000000000..e2c4741927e36f6fd550eef7d53dfde2554fdf16 GIT binary patch literal 235709 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 z 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') */ +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, + 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, + 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 0000000000000000000000000000000000000000..b7e15d585a02969328c99aa499b6a526ccb2e3ab GIT binary patch literal 300544 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�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 literal 0 HcmV?d00001 diff --git a/vendor/lua/5.2/windows/lua52dll.lib b/vendor/lua/5.2/windows/lua52dll.lib new file mode 100644 index 0000000000000000000000000000000000000000..0d6ffb7517dd68371568c79d4171a770b8260326 GIT binary patch literal 29546 zcmY$iNi0gvu;bEKKn1#nsC*dD0Lm~kHZp@S6Sx={7EtSF3;jkVC1~C4@zz_z)N(>BPN(>C)F%X>7 z!N35su=fgvpkf-~3{7(m#283O|d2e2?OfN+!+ z0|N+0XfQBRezyQMjRtyXv?01cU0fZxuF))CzuN?ye z2!|hIU;ttNISdRSoD##p0K&l=7#Kh}sEmODjPEco1l?g^Nc{!DA zhA=RI@g4?-+&v5osZ$_0(29WpgoAh(7(h610RsaFJ99BGfUvC_0|N-#y<=biVM{3n z1`zhR!oUE+=JyyFK-embfdPb_?=Uccu+izFff3y(;@~2r$zDcp1uM8K_T%juEEYh zo&h2LLGd}IiKa#j@$r74K0cVz4E11nh-`>QsGoPdi(`l*LwtN@ZUIPdenDzpd{Sa@ zDnm|bB7%b|pPXNmUs{rxhfstNK~-6jn3RK11>vEp$jpb^l$np_j{IV{Tz)Z{TyaTJ zW?nj69?C^EJ1Mio*a)r!!b4S&n^=+oR{-Xq%BQ3zl_D&G@K9A0BqnDkrX&0ael^{3>`Q)5@NN~qPSO}TC)bf&yqSV9`kP|^#p*)0&#FB!8Eh)(_0Lwy|2)SZ}9F&QWD=00_C`-&K zg?JdjL#QZ9&CM@^NJE(jxy-!c)S?owtxzUHt|+x2CovhO5yD2uCg&Gag7twJNa7i( z$=SsviOJazSp*lMrULFD2n!*TS)5mzo0M7v)(ht#%R`f1PHAF%W-*k5ET5cKnwMMx zi-*i&1Rq&dX>n>%N@7VO)E+n&p{As=0OEBp164dPF&7~R<{-)ELwo><=n^;&Sw&`E zNosm(5lji3i>#(JuQ)S3FEs_G2*F2Im6V^KlbQ%gb0zsO9du{^b~G%*Jpmv9b3J~=8T~@ zIr&M@q=4X|sDM<9ATvPaEV#x*kx$D^&4E+_>8T|U4nn>tu{=E$QeHxt=yI9h$c0E| zB5KiihzO*Bhp`cQlZ#RlOHvU|L*^q?<)xORgcmX&p(;JKBsaAr5n&jL0E#-0X^6@r zJrx`s5CMd`Vw6xt@K97BYy;I$XrWpR3rJ9?!#N23MTzCbh)@MF(dFQwTAW&f7OKUm zCGb!Mvk`iW(L(}707V^YNEBlaiR8qb9B8!$W+6;SPc2C6R1glKwdNn%b;esUT(#~^qJ z6~!nj5Ils6^wbhWTLaEPk>=DRvM%3>8`VnUJa)ss_wQs47k^$;i)#Bo7!H zA)AgQ3u9x*<|YfEt*XlLO`zy=|>NNN&` z(jn;{tOU+OQUP`AILJ>hynO{(Xq7I3VqzbGX(sG149TYrJ0VH+#1tm~Hu%!qt zk{YmCuoehd8Hxy!%KU;76m>{^BvoMD@TLmFK)4W++WdkNxG-2HvH+4gu$l0z3ypdR zA6*r=0S-0`tO?9TSCg0r?uhP)K}KRnVXYhg@Px z3Y3eg23{Td#3!btKzK+hK)nX!bcV#ostU>VrNtQ#onSE})gWJj!U8M~b{vWbl1h+m zx%nxjkWn(9cqBfODrnsWNeD0w=`$Y2@EMO83=9n43>g?COc)q^Oc@x$@);P^3K$re ziWwMw6)-TIC}d!mQN+NoFQ0)Sp^$-LQUL>lUJ(OBPXq%)i4OzAmk0(12X6)jwLAuf z5-$dZh7bk@vvdXqm3RgQtz-sLuqu;*VM{gx!;K6E29YcVhDnJG3=WwL401UP3_jTm3{SEc z818s6F#L#TV7TGKz#tOKz)%&-z;Gd&fni4+1H-Bq28JiG3=BQ-3=C<}3=F@b7#Jo* zF)&!gFfjPVF)&;TU|^64VPMD#fQc1B06_1H(Hz1_mih28Jsh z3=H?o85qK>7#Qw2GcX*oVqkD{VPJS=$-q$L%)oHNhJj&&3j@O}YX$}u8wQ3ZO9qB> zjtmU{+!+|MJQx`AY#12$ycig^*fKEaSu-%SfXuaHU^wN*z_7xTf#H_}14Ew!14D`< z1A~eFLoq`>Lm@*0LpehQ zLoGuoLl#3lLlZ+ILpDPXLl;9QLmNXYLpwtiLkGhQhD?SMh608nhBAf;4AU8=Fid4= zX6R$+W~gSUVaR3ZWoTijV-RN0We{ZWV~}RxXV7PeWRPNTVhCagX9#16X7FdQW3XXJ zW5{4gXNY5nXK-PNWw2!sVMt_fWsqQyXOLx(V^Cm-VhCj5V-R3)W{6-2V6bGcU@&Je zVz6Q`VK87YWH4p0W-w+DV=!aTW3Xp%U~pv6VDMz{V(?}VXOLtFVTfVyU~pqdWk_J~ zVQ^;96&Vo+pIVn}94VGv@FVF+emVc=q5W#D08 zXW(YwVBlroWMCT&DWXG)nSqSC52ON>P=$i36r;|-*8YZ-@W{0~OblEPAejm86CjI$ zn%8LUL~x4=)*ePz3#%c~#i6ZnbYaYP7}#_?EnIXHAPq+hQRuKRvcJJ5!+TOlIxyOd z*jsg=))}N`MK%?s&xK?tj%E#dg9)u=1#0$z;s?~iLoy5`46?og*=CR+X4?X#6^~>D zytRiU2CK9&g^(t;K;2S!_XkBKyu*eniW${7Iybl)TG*Q#AW_WVM~I>)XHdHk$zj-9 zhuGSugnKebhGOj%V{NKpwD-|EG4WXDy3j}PG3U}iSvDJyCLkjNXqg9N0uOU=A7dm6 zeX0o zOvKXj1(}E*y4Xj@L35NSra?!dkm3q73|5?4gjS5lW6Uq&nwvwPLE|8$NHt(Q_9?t1r|a8 z+Mq@VK~tj3UPYN`n`y0bYlJd7voG$%KwqLOIa!Nl;)x z)|f!Ni!|o|)rvlgfEqj~4Op-aP|=P)a)ulvAbAKMkq|%)Rj_7w6BWz@6`UwTsi4Gy zlr#}z>0srELI%P`9X^FLKfyAPh9_tu4&LMha}Wzhkd|+O5-DV&3!FgVi3!@M1Zjjd zCn0R4*-hBOC#1$BNDa8z2x7of5~!&N5)pY%Oipmq#53H0;z{L znxGuiWhe0U5a1>fR0%9dq0J(wD7Zm{U_+J_Ko_9n4 z2^BWc43$BoJ(NZbR2GrkpbZ(QIC64BX}o~tOASf=g7S<_SbG zB(7j`uqFva4k@OPn;{TMl*9+CXAq4JkRqrDP^a+04GoYiw59>)CP?D~BnoX-pe+4` zbHGgr7!T2ifQdkw4=^6mvR-hL0Va;Lq!-pqfJq@zDyZs+heQmH^~&H?%z7y~InYTE zLc2XoEKDJrJrokSQregq7Tj5Um7S4+fr9}8^uVrH35M_(80;As7K)h2qGDXj&JjQ{^b^gz^ui~~80i2>>jBL@Zsuv0T& zB4Ce!Y+#0on1IxPbi&n`B1Ayqav%bVL8db>m_vCWiiyFGfq|SsT^tF73+_=OQ;3m? z1yTxOVvx1m@qRl40|UgV3=G&(ND9d1NEj)F7{i1?DP%E>1EoPJ1Y|CiW1g58l?8_~ zj?Doihna;DQkXF_q)ps?>^6Zg!;`B_p}_;rm7rV&jpAOH8;*Gce%VTS025nm}i16%;@_(?D4>rR{_8>1$G8U$TITZ17ArQX|0B2vin= zWFRae)4U0+P(-q+?D+p9k_@1kJA_S$k{Mz=1If9|!~~j9kZf8KYa_zzrcB$`r4uSl{2J;iBmjY_PBhngzMQp0WV$Z%66~{sLu*2;Eb<3fh zbaMTJCG7T`P&fn%I}Q|kplvjSPY^6({e;D?0?D;EL3VMX*hPh0YmS+hY^Ix>0u@1A zD0V@bmk7_0k#DisC8?Bq6J!@Rid~=%K4je&G`dJHBe0ZvZs&y`g33J}6uaPkW2jXm zml9aZJ;rySa*r3qCRo!NY7tfZRHkS84&*036r13qLr|+o_LC)Ms#w5$>_4c&=SQ^( zHen05f{b*5#WwX{44mXdDhQeub2QNwx_~xujCg z`vp`kiNI_^A3P-2S6Iplw#L6NKxKs}l3m3}YZ9SWk)9%8+xU^{#oxzo9t5?v#o%^9 zM?9gHkQ#QzSkm||P5A@D3=9n7Fgu_l98fDr_Xn0Rlew|^Hz>>`;CAFErhw{r=rAqW zc3~;?)V;i3f=WF}WV=8q4?HG8woO>lH~Ynmlc4l1g=`Z>!;;iEf_K`G(t-QhMF&9X zTN-8)`mi1d_2=mepb|m}$tL8HTxdj*o+7Z+7LK1T zoCD=1Wtd&)Gci!h;IT$QTor_g9Rf%BMpy56ty)?p7M&ve6 zJO?Txv|)CkOf5n^MS3h@u_^0R%@>eOI&hodTkR2EqKZvB*Ghi?*`y1%33)=4Y(HUX z^RL^$c>&bs*Mr#vpKGP2EvuDMo`7u8huH$3#wFVpEH(PKsjlBaHM#-B7Q~`NN@52~ z`Qyf~_W{%@HiX#&n|y|P25ud(D{qW($p1c?YW5Ea0|4 z7Cn$_2ewgmr~U7qg4!RJFgsA!Q$VdEHOFA{&GW$i=OEu$L2ZJq)PPz+a)_B=NntNf znEnQ(Fl(qC=mR7q`vXf~^|F8GQ9%X<1{T z^@$0VRLs7F`7kII+ac_Mu8DzKLVBEFDfQcD+_(rT_3aV1z?a*QZ4Z`ElZw3l9n^Mm zK-hy=AOW?A!fbf3^&+T*aYWbyS{H<9De7s3|k8X-g`C1WN4OIl#O zcIy!+EqEi@1Yi6O&pKq-g(d6?3?DoMg`E%7F6gEXN^HSWDp)D#{{fW>zA#&mPH{t6 z1!oak)?rC=tlG!Ufzq5G+$JiFAz`tn`MSz!kUjozdoTuLNl)8YQk`UC{{>L03xL~$ zympP;^lgl#AOBun_lFPz14AIxCe)#MQsV|&tIhpjDv@LI{ES1?8+ss70iP8MZccp;9q;q&E~{50(T# zs!iBpCyuw_FerAy;5I?dg@Ss9^wf-{v{VyIQ5hM5VLl3Fq_@hqsMjzqEvd5tpED$>Iai?8&g&VK;;DhkOiq~*_0t4Q`0 z7MnKsTmA*v6pdsPzHl;8FJZ>F}Y#&C!O>!7w z@tJ9<$uUstG!Dro=rVJ1{ez`;IO4PDDX4acN45oWoF&{7WV92o*mV4Q{4J182}m|! z1RUw<9E(j>H@;j3*_4Q66JjwpH1J5b2}|yE+WPDpDEB5I*+i9jAT0HTasBfrp!y;i z$u5dl>tXTJ4ykUipHh(R!7L_74?iq*?THgs;NEyD)Gp*54rIp@mRjR$o7PKEt&xVX z2fBHJY+JD8*a@<-H$XWy9mN*#z6_`}@GM1a`xJ{U`_vl#gKWt_u?4(`gIrs%gxLD{ zth=BP%S70M+MFXj{;}9{tJ4Bpn`a?x0Uh-T4<<579xNfY{i5q1P>5xt*h1}iskrF^ z9)r(8v4z_4@>qcTF(_VgVYWcFE>k(gK5qW`2^3;^a9bezp%K==S;VGfEU}+m)_V)& zmwdP_u&qYWgiLxG!%}X}lzR0RRBjePZ9&<^1ht4{-(V@r{PsP31L`*vBJ82b$l}BI zowq^$DMHvolaa;q4>X^E(m*l79!f_Rv4mP$QT!KBsFfgWp~>i2wzI-}P)%Kmu!m-& zV^c0j`~~@`3}F{dMy(VtZ~6?%KjldFP=C~F&n{E&euN5yEi@XnQktyy927^DNH)=G z)M|;DJh&XKg4qS%PzWs&s8aUGsoc8&%B$5-TTu2YLM?7`CCI``7*6R5vc1Gfip zU<2HI#2_QFWj2=YprNL8VV4+#V|QeXyiC z_eXjEKxwWCZV#;ILs7_KNpo^-g5Wg)%?O*2?&^RB9m)9>+X&W&54Ar)BUmjko1iy- zkZT9F@x?R;xyzvVX+^RFd{7BIk&)5r#gg81?tTHM>o%x8&_Wxs9U1B&xRu1FYb@#D z*h&2ppmflVY7cCqGr2ZlX~&C%PJaz*k#s<9g6?cUlxqkUvHrm_Yk#j$^gd|Tz7uK- zd~-IrKEc-V{SyIR;nW4S1F`KJY6;1y8Cyz=YzjOKN@?8?TRQE2Ctt2*Pu*@&iTAnx$S|`|xWDm+VcyjH+l6y8U-30biACg_*E$WCg zhF}rvCoCzUs(bDmP#dlv$sWkoeW+)sk`g2@KDq@;2@{ZPft?CKwmn#UQ~h_(L6C1I zBH05uaDZ%Eu#`B<<9NZN%af37K|0F-Y8A;T4ol7RVs+d@P-|y0l1)??v&53#j Date: Wed, 5 Apr 2023 16:52:27 +0100 Subject: [PATCH 30/75] Minor fixes --- vendor/lua/5.3/lua.odin | 6 +++--- vendor/lua/5.4/lua.odin | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/vendor/lua/5.3/lua.odin b/vendor/lua/5.3/lua.odin index d7884e852..8f519c7ab 100644 --- a/vendor/lua/5.3/lua.odin +++ b/vendor/lua/5.3/lua.odin @@ -343,9 +343,9 @@ foreign lib { typename :: proc(L: ^State, tp: Type) -> cstring --- @(link_name="lua_tonumberx") - tonumber :: proc(L: ^State, idx: c.int, isnum: ^c.int = nil) -> Number --- + tonumber :: proc(L: ^State, idx: c.int, isnum: ^b32 = nil) -> Number --- @(link_name="lua_tointegerx") - tointeger :: proc(L: ^State, idx: c.int, isnum: ^c.int = nil) -> Integer --- + 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 --- @@ -369,7 +369,7 @@ foreign lib { pushnil :: proc(L: ^State) --- pushnumber :: proc(L: ^State, n: Number) --- pushinteger :: proc(L: ^State, n: Integer) --- - pushlstring :: proc(L: ^State, s: cstring, len: cstring) -> cstring --- + 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 --- diff --git a/vendor/lua/5.4/lua.odin b/vendor/lua/5.4/lua.odin index df02076ba..afadb3857 100644 --- a/vendor/lua/5.4/lua.odin +++ b/vendor/lua/5.4/lua.odin @@ -357,9 +357,9 @@ foreign lib { typename :: proc(L: ^State, tp: Type) -> cstring --- @(link_name="lua_tonumberx") - tonumber :: proc(L: ^State, idx: c.int, isnum: ^c.int = nil) -> Number --- + tonumber :: proc(L: ^State, idx: c.int, isnum: ^b32 = nil) -> Number --- @(link_name="lua_tointegerx") - tointeger :: proc(L: ^State, idx: c.int, isnum: ^c.int = nil) -> Integer --- + 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 --- @@ -383,7 +383,7 @@ foreign lib { pushnil :: proc(L: ^State) --- pushnumber :: proc(L: ^State, n: Number) --- pushinteger :: proc(L: ^State, n: Integer) --- - pushlstring :: proc(L: ^State, s: cstring, len: cstring) -> cstring --- + 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 --- From c5af69ffa6085ee307ab7140f674c9e147185688 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 5 Apr 2023 17:25:30 +0100 Subject: [PATCH 31/75] Add `vendor:lua/5.1` --- examples/all/all_vendor.odin | 1 + vendor/lua/5.1/include/lauxlib.h | 174 ++++++ vendor/lua/5.1/include/lua.h | 388 +++++++++++++ vendor/lua/5.1/include/lua.hpp | 9 + vendor/lua/5.1/include/luaconf.h | 766 ++++++++++++++++++++++++++ vendor/lua/5.1/include/lualib.h | 53 ++ vendor/lua/5.1/linux/liblua5.1.a | Bin 0 -> 347548 bytes vendor/lua/5.1/linux/liblua5.1.so | Bin 0 -> 212314 bytes vendor/lua/5.1/lua.odin | 659 ++++++++++++++++++++++ vendor/lua/5.1/windows/lua5.1.dll | Bin 0 -> 247296 bytes vendor/lua/5.1/windows/lua5.1.dll.lib | Bin 0 -> 25478 bytes vendor/lua/5.2/lua.odin | 4 +- 12 files changed, 2052 insertions(+), 2 deletions(-) create mode 100644 vendor/lua/5.1/include/lauxlib.h create mode 100644 vendor/lua/5.1/include/lua.h create mode 100644 vendor/lua/5.1/include/lua.hpp create mode 100644 vendor/lua/5.1/include/luaconf.h create mode 100644 vendor/lua/5.1/include/lualib.h create mode 100644 vendor/lua/5.1/linux/liblua5.1.a create mode 100644 vendor/lua/5.1/linux/liblua5.1.so create mode 100644 vendor/lua/5.1/lua.odin create mode 100644 vendor/lua/5.1/windows/lua5.1.dll create mode 100644 vendor/lua/5.1/windows/lua5.1.dll.lib diff --git a/examples/all/all_vendor.odin b/examples/all/all_vendor.odin index 8ba141e8f..e550e600c 100644 --- a/examples/all/all_vendor.odin +++ b/examples/all/all_vendor.odin @@ -26,6 +26,7 @@ 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 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 0000000000000000000000000000000000000000..ce7e09844f809bb9a31cd7b410968b303bf1c52a GIT binary patch literal 347548 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

Vb8=$@bfniBz?3jz)#P|gA!22#4} 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

JIGfOf+y41m@F)(0J2fLS0Jyu2Tx*^)h-u_AoFo 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

!KC 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 literal 0 HcmV?d00001 diff --git a/vendor/lua/5.1/lua.odin b/vendor/lua/5.1/lua.odin new file mode 100644 index 000000000..a92698082 --- /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 { + #panic(`Unsupported platform of "vendor:lua/5.1"`) +} + +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 0000000000000000000000000000000000000000..353c21940690c97952048492dc557378d5eda6f3 GIT binary patch literal 247296 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

Q0MGwZ z9?BO$U4d?%3m%=^AXcZ$1;_sm93WXo%K(ltp~heT{{OeH=K^hXJp1DB8U}_2Z%zf! zj%COH$2*+4Je!YjI5z(mGhchd1Zzb+E{T%^yML8^HHBHvR@p&eR%ppZ+h}FdcND32*8gCI*-8!>tEAdPRLf zb7uT5pw+n+pn@8*gz6=mENFE$um4=oIA_bvAK;=5-jYSK4yk?b0k*HV`3dN{i62bm zlE#-_>;vx(aQ6V;Mh@4H?4~!N?gA6>n{XtnQ zZzgE7XpD-&i!ajP#M1h$M4|f{sN7-(x9-8JBxZy5OP=uQKK$Y=Sed`YF3|ZCFZxfR zXD`rwyrBEM1YUqP>cip-RCftLBCWd+bh#d=tNUp+$i`p;@C@HM576$-AdVM4yBQ$8 zJY~pv7SPiyJi5a`8;T1&ES)Nfz!z0q1}#s8Oy+_2>_BIwK-jZ`N;|27Vf z{|7(|ruerV>|}2K!BxWA{DZgD&iYu16=Vm9phvIMe-F^5ecleBu9}cXw<8DtHUY3c zM~+V6*Mcvqe=;z1U+83h&2}6V#Q*<0vouz-fR0_O1z#izZ7V|BV7;PiKrz&P`o)re zkf3&edh3u!_s?$7y^Q}w87F}cI4NZVb!_4fcZ-9n#?BZOix=|XHU{XleuT^7!7fwq z03Emu^^r3NxRDLY9~Pbb5K}k^UO8y}XnAzo^D!P?22P*=(&>(&Eu8YBK{=jGTUv@DDto2x@%jLWO)mxA<`X z7ri?PtcA7NI=-|F;@l>10tRgyLPSnAIC4OzPa`?Ell%2PYz|g}M+a!lAqUveNU5}w z`*k}c?73f7gZ8O|ujA$c+v@DWzYR3n3mS}K0Ht#!*!+mc|C5dlHXM4TERG!_9H4!7 zZ$Uj)pKb;Z(2W!)UT6z5fVL)v{ugDOzyunk^Ns*bJ#ct{I+g;jnKtQx)OVnmF6r_A zq^kuF2f|R$D7gp1&}%{DB~gmaE3!Uhshn`fvy2(jXpO8t_0e1SqS%w#G>O-6y~!w4ljL z5Ae-zpuXr-P>1RN36D;14v$V|k6uSc{%wMwjKRO{P$zry58Kk(vKyHkM3y&H4Wrc%5t~J2*dgpR+#t{UWHwb>MgX2)TqA z(lLQ#ENFQN8We;qVl?pS{^Z#G0aUi!d~xq9C`)-e_;w3=_B#Fd1Ql)74!*6IN+6{t z=oUl?P%(kB(zF`1#;zN-(li&u0~HmZE8daPCu%7QZZ+G3W{H@=H&)s*F)(zWFn-(o zgNwgqGpK*^gO|T$6_^pt-vZjI(flKpzvU$OfUj>QL7;;5$BcX%1*w4wgSN5G!s=R6*usfO3~KByU3M4p=SH z$^G�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

=L`%U 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%0DwWV})k+!h0+ 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 yuUOu&ykq%<)&!kc9y4jN*O( literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..6e1497cc1fa508bdf97180c3b4f5c847622df508 GIT binary patch literal 25478 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 literal 0 HcmV?d00001 diff --git a/vendor/lua/5.2/lua.odin b/vendor/lua/5.2/lua.odin index 1d1f5ef73..fb37d9833 100644 --- a/vendor/lua/5.2/lua.odin +++ b/vendor/lua/5.2/lua.odin @@ -407,14 +407,14 @@ foreign lib { */ @(link_name="lua_callk") - call :: proc(L: ^State, nargs, nresults: c.int, + 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, - k: CFunction = nil) -> c.int --- + ctx: c.int = 0, k: CFunction = nil) -> c.int --- load :: proc(L: ^State, reader: Reader, dt: rawptr, chunkname, mode: cstring) -> Status --- From 97b2d1fe5c4e594c01b3e7ccd4e9fc346422aed5 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 5 Apr 2023 17:26:48 +0100 Subject: [PATCH 32/75] Update README.md --- vendor/lua/README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/vendor/lua/README.md b/vendor/lua/README.md index 6484ab2d1..8f4b0f5a5 100644 --- a/vendor/lua/README.md +++ b/vendor/lua/README.md @@ -2,4 +2,11 @@ ```odin import lua "vendor:lua/5.4" // or whatever version you want -``` \ No newline at end of file +``` + +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 From dcf53236ff62bae8fe94f4c4ed23732a9d607c90 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 5 Apr 2023 17:31:43 +0100 Subject: [PATCH 33/75] Generalize the foreign import for unsupported platforms --- vendor/lua/5.1/lua.odin | 2 +- vendor/lua/5.2/lua.odin | 2 +- vendor/lua/5.3/lua.odin | 2 +- vendor/lua/5.4/lua.odin | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/vendor/lua/5.1/lua.odin b/vendor/lua/5.1/lua.odin index a92698082..92660c534 100644 --- a/vendor/lua/5.1/lua.odin +++ b/vendor/lua/5.1/lua.odin @@ -12,7 +12,7 @@ when ODIN_OS == .Windows { } else when ODIN_OS == .Linux { foreign import lib "linux/liblua5.1.a" } else { - #panic(`Unsupported platform of "vendor:lua/5.1"`) + foreign import lib "system:liblua5.1.a" } VERSION :: "Lua 5.1" diff --git a/vendor/lua/5.2/lua.odin b/vendor/lua/5.2/lua.odin index fb37d9833..c71c1925e 100644 --- a/vendor/lua/5.2/lua.odin +++ b/vendor/lua/5.2/lua.odin @@ -12,7 +12,7 @@ when ODIN_OS == .Windows { } else when ODIN_OS == .Linux { foreign import lib "linux/liblua52.a" } else { - #panic(`Unsupported platform of "vendor:lua/5.2"`) + foreign import lib "system:liblua52.a" } VERSION_MAJOR :: "5" diff --git a/vendor/lua/5.3/lua.odin b/vendor/lua/5.3/lua.odin index 8f519c7ab..718d52250 100644 --- a/vendor/lua/5.3/lua.odin +++ b/vendor/lua/5.3/lua.odin @@ -12,7 +12,7 @@ when ODIN_OS == .Windows { } else when ODIN_OS == .Linux { foreign import lib "linux/liblua53.a" } else { - #panic(`Unsupported platform of "vendor:lua/5.3"`) + foreign import lib "system:liblua53.a" } VERSION_MAJOR :: "5" diff --git a/vendor/lua/5.4/lua.odin b/vendor/lua/5.4/lua.odin index afadb3857..06199dee7 100644 --- a/vendor/lua/5.4/lua.odin +++ b/vendor/lua/5.4/lua.odin @@ -12,7 +12,7 @@ when ODIN_OS == .Windows { } else when ODIN_OS == .Linux { foreign import lib "linux/liblua54.a" } else { - #panic(`Unsupported platform of "vendor:lua/5.4"`) + foreign import lib "system:liblua54.a" } VERSION_MAJOR :: "5" From 167b320cddf0ac9adadf806a20adaaf25bf66a30 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 5 Apr 2023 17:35:53 +0100 Subject: [PATCH 34/75] Remove cmark from all_vendor.odin --- examples/all/all_vendor.odin | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/all/all_vendor.odin b/examples/all/all_vendor.odin index e550e600c..f66e3cca1 100644 --- a/examples/all/all_vendor.odin +++ b/examples/all/all_vendor.odin @@ -2,7 +2,7 @@ package all import botan "vendor:botan" import cgltf "vendor:cgltf" -import commonmark "vendor:commonmark" +// import commonmark "vendor:commonmark" import ENet "vendor:ENet" import exr "vendor:OpenEXRCore" import ggpo "vendor:ggpo" @@ -31,7 +31,7 @@ import lua_5_4 "vendor:lua/5.4" _ :: botan _ :: cgltf -_ :: commonmark +// _ :: commonmark _ :: ENet _ :: exr _ :: ggpo From eef44425c3a39f620b18956ee33ea915ac89223e Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 5 Apr 2023 17:39:56 +0100 Subject: [PATCH 35/75] Default zlib foreign import --- vendor/zlib/zlib.odin | 63 +++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 29 deletions(-) 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 From d7cc166eabe29be751367640a7dbe88b9bf0d095 Mon Sep 17 00:00:00 2001 From: Karl Zylinski Date: Wed, 5 Apr 2023 22:37:05 +0200 Subject: [PATCH 36/75] Fix for skip_alphanum in JSON tokenizer not checking if first character is non-alphanum. This broke any single-character key when using SJSON specification in combination with not using quoted strings. --- core/encoding/json/tokenizer.odin | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 } From 0f1c5b3891a578b65280e78cb9c1831190d496d5 Mon Sep 17 00:00:00 2001 From: Jon Lipstate Date: Wed, 5 Apr 2023 22:22:16 -0700 Subject: [PATCH 37/75] correct errors --- core/strings/strings.odin | 2 -- core/sys/windows/kernel32.odin | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/core/strings/strings.odin b/core/strings/strings.odin index 3c55374b7..dff68982d 100644 --- a/core/strings/strings.odin +++ b/core/strings/strings.odin @@ -1081,7 +1081,6 @@ 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. @@ -1116,7 +1115,6 @@ split_iterator :: proc(s: ^string, sep: string) -> (string, bool) { } /* 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. diff --git a/core/sys/windows/kernel32.odin b/core/sys/windows/kernel32.odin index 97334a837..a6897f164 100644 --- a/core/sys/windows/kernel32.odin +++ b/core/sys/windows/kernel32.odin @@ -409,7 +409,7 @@ foreign kernel32 { // [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 --- + 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) From b8989d9bf9426feab00793336b2067bc201c365e Mon Sep 17 00:00:00 2001 From: Jon Lipstate Date: Wed, 5 Apr 2023 23:52:11 -0700 Subject: [PATCH 38/75] strconv docs --- core/strconv/strconv.odin | 663 +++++++++++++++++++++----------------- 1 file changed, 373 insertions(+), 290 deletions(-) diff --git a/core/strconv/strconv.odin b/core/strconv/strconv.odin index 918ebc3ec..ad7d93ce6 100644 --- a/core/strconv/strconv.odin +++ b/core/strconv/strconv.odin @@ -6,7 +6,7 @@ import "decimal" Parses a boolean value from the input string **Inputs** -- s: The input string, +- 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) @@ -27,12 +27,12 @@ parse_bool :: proc(s: string, n: ^int = nil) -> (result: bool = false, ok: bool) return } /* -Finds the numerical value of the given rune +Finds the integer value of the given rune **Inputs** -- r: The input rune to find the numerical value of +- r: The input rune to find the integer value of -**Returns** The numerical value of the given rune +**Returns** The integer value of the given rune */ _digit_value :: proc(r: rune) -> int { ri := int(r) @@ -52,25 +52,21 @@ Parses an integer value from the input string in the given base, without a prefi - 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) -**Returns** -- value: The parsed integer value -- ok: A boolean indicating whether the parsing was successful - Example: - n, ok := strconv.parse_i64_of_base("-1234eeee", 10) - assert(n == -1234 && ok) + 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. */ -// 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); -// ``` parse_i64_of_base :: proc(str: string, base: int, n: ^int = nil) -> (value: i64, ok: bool) { assert(base <= 16, "base must be 1-16") @@ -119,37 +115,29 @@ parse_i64_of_base :: proc(str: string, base: int, n: ^int = nil) -> (value: i64, /* Parses an integer value from the input string in base 10, unless there's a prefix -*Does NOT allocate* - **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: + + 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: A boolean indicating whether the parsing was successful - -Example: - - n, ok := strconv.parse_i64_maybe_prefixed("1234") - assert(n == 1234 && ok) - - n, ok = strconv.parse_i64_maybe_prefixed("0xeeee") - assert(n == 0xeeee && ok) - +- ok: ok=false if a valid integer could not be found, or if the input string contained more than just the number. */ -// 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); -// ``` 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) } @@ -203,35 +191,36 @@ 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 -*Implicitly allocates using context.temp_allocator* - **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: + + 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 */ -// 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); -// ``` 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 @@ -266,30 +255,32 @@ parse_u64_of_base :: proc(str: string, base: int, n: ^int = nil) -> (value: u64, /* Parses an unsigned 64-bit integer value from the input string, using the specified base or inferring the base from a prefix -*Implicitly allocates using context.temp_allocator* - **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: + + 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: A boolean indicating whether the parsing was successful +- 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. */ -// 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); -// ``` 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) } @@ -332,40 +323,40 @@ 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 -*Implicitly allocates using context.temp_allocator* - **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: + + 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: A boolean indicating whether the parsing was successful +- ok: `false` if no appropriate value could be found, or if the input string contained more than just the number. */ -// 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); -// ``` parse_int :: proc(s: string, base := 0, n: ^int = nil) -> (value: int, ok: bool) { v: i64 = --- switch base { @@ -378,39 +369,36 @@ parse_int :: proc(s: string, base := 0, n: ^int = nil) -> (value: int, ok: bool) /* Parses an unsigned integer value from the input string, using the specified base or inferring the base from a prefix -*Implicitly allocates using context.temp_allocator* - **Inputs** - s: The input string to parse -- base: The base of the number system to use for parsing (default: 0) +- 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 +Example: + + 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: A boolean indicating whether the parsing was successful +ok: `false` if no appropriate value could be found; the value was negative; he input string contained more than just the number */ - -// 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); -// ``` parse_uint :: proc(s: string, base := 0, n: ^int = nil) -> (value: uint, ok: bool) { v: u64 = --- switch base { @@ -423,33 +411,26 @@ parse_uint :: proc(s: string, base := 0, n: ^int = nil) -> (value: uint, ok: boo /* Parses an integer value from a string in the given base, without any prefix -*WARNING: base must be 1-16* - **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) -**Returns** -- value: The parsed i128 value -- ok: A boolean indicating whether the parsing was successful - Example: - n, ok := strconv.parse_i128_of_base("-1234eeee", 10); - assert(n == -1234 && ok); + 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. */ - -// 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); -// ``` parse_i128_of_base :: proc(str: string, base: int, n: ^int = nil) -> (value: i128, ok: bool) { assert(base <= 16, "base must be 1-16") @@ -496,37 +477,29 @@ parse_i128_of_base :: proc(str: string, base: int, n: ^int = nil) -> (value: i12 /* Parses an integer value from a string in base 10, unless there's a prefix -*WARNING: base must be 1-16* - **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) -**Returns** -- value: The parsed i128 value -- ok: A boolean indicating whether the parsing was successful - Example: - n, ok := strconv.parse_i128_maybe_prefixed("1234"); - assert(n == 1234 && ok); + 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"); - assert(n == 0xeeee && 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. */ -// 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); -// ``` 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) } @@ -580,44 +553,35 @@ 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 -*WARNING: base must be 1-16* - **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) -**Returns** -- value: The parsed u128 value -- ok: A boolean indicating whether the parsing was successful - Example: - n, ok := strconv.parse_u128_of_base("1234eeee", 10); - assert(n == 1234 && ok); + 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); - assert(n == 0x5678eeee && 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. */ -// 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); -// ``` 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 @@ -652,37 +616,29 @@ parse_u128_of_base :: proc(str: string, base: int, n: ^int = nil) -> (value: u12 /* Parses an unsigned integer value from a string in base 10, unless there's a prefix -*WARNING: base must be 1-16* - **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) -**Returns** -- value: The parsed u128 value -- ok: A boolean indicating whether the parsing was successful - Example: -n, ok := strconv.parse_u128_maybe_prefixed("1234"); -assert(n == 1234 && ok); + 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("0xeeee"); -assert(n == 0xeeee && 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. */ -// 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); -// ``` 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) } @@ -725,17 +681,16 @@ 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. +**Returns** +- A lowercase byte character. */ @(private) lower :: #force_inline proc "contextless" (ch: byte) -> byte { return ('a' - 'A') | ch } @@ -746,22 +701,25 @@ Parses a 32-bit floating point number from a string - 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: + + 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: A boolean indicating whether the parsing was successful. +- ok: `false` if a base 10 float could not be found, or if the input string contained more than just the 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); -// ``` parse_f32 :: proc(s: string, n: ^int = nil) -> (value: f32, ok: bool) { v: f64 = --- v, ok = parse_f64(s, n) @@ -770,15 +728,28 @@ parse_f32 :: proc(s: string, n: ^int = nil) -> (value: f32, ok: bool) { /* Parses a 64-bit floating point number from a string -Does NOT allocate - **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: + + 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: A boolean indicating whether the parsing was successful. +- 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 @@ -792,28 +763,30 @@ parse_f64 :: proc(str: string, n: ^int = nil) -> (value: f64, ok: bool) { /* 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 -Does NOT allocate - **Inputs** - str: The input string containing a 32-bit floating point number. + +Example: + + 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. */ - -// 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); -// ``` parse_f32_prefix :: proc(str: string) -> (value: f32, nr: int, ok: bool) { f: f64 f, nr, ok = parse_f64_prefix(str) @@ -823,29 +796,29 @@ parse_f32_prefix :: proc(str: string) -> (value: f32, nr: int, ok: bool) { /* 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 -Does NOT allocate - **Inputs** - str: The input string containing a 64-bit floating point number. +Example: + + 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: A boolean indicating whether the parsing was successful. +- ok: `false` if a base 10 float could not be found, or if the input string contained more than just the 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); -// ``` 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) @@ -1132,11 +1105,18 @@ Appends a boolean value as a string to the given buffer Example: - buf: [8]byte - result := append_bool(buf[:], true) - fmt.println(result) // "true" + append_bool_example :: proc() { + buf: [4]byte + result := strconv.append_bool(buf[:], true) + fmt.println(result, buf) + } -**Returns** The resulting string after appending the boolean value +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 @@ -1157,11 +1137,18 @@ Appends an unsigned integer value as a string to the given buffer with the speci Example: - buf: [32]byte - result := append_uint(buf[:], 42, 16) - fmt.println(result) // "2A" + append_uint_example :: proc() { + buf: [4]byte + result := strconv.append_uint(buf[:], 42, 16) + fmt.println(result, buf) + } -**Returns** The resulting string after appending the unsigned integer value +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) @@ -1176,11 +1163,18 @@ Appends a signed integer value as a string to the given buffer with the specifie Example: - buf: [32]byte - result := append_int(buf[:], -42, 10) - fmt.println(result) // "-42" + append_int_example :: proc() { + buf: [4]byte + result := strconv.append_int(buf[:], -42, 10) + fmt.println(result, buf) + } -**Returns** The resulting string after appending the signed integer value +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) @@ -1194,16 +1188,23 @@ Converts an integer value to a string and stores it in the given buffer Example: - buf: [16]byte - result := itoa(buf[:], 42) - fmt.println(result) // "42" + itoa_example :: proc() { + buf: [4]byte + result := strconv.itoa(buf[:], 42) + fmt.println(result, buf) // "42" + } -**Returns** The resulting string after converting the integer value +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** @@ -1211,10 +1212,16 @@ Converts a string to an integer value Example: - value := atoi("42") - fmt.println(value) // 42 + atoi_example :: proc() { + fmt.println(strconv.atoi("42")) + } -**Returns** The resulting integer value after converting the string +Output: + + 42 + +**Returns** +- The resulting integer value */ atoi :: proc(s: string) -> int { v, _ := parse_int(s) @@ -1228,10 +1235,16 @@ Converts a string to a float64 value Example: - value := atof("3.14") - fmt.println(value) // 3.14 + atof_example :: proc() { + fmt.println(strconv.atof("3.14")) + } -**Returns** The resulting float64 value after converting the string +Output: + + 3.140 + +**Returns** +- The resulting float64 value after converting the string */ atof :: proc(s: string) -> f64 { v, _ := parse_f64(s) @@ -1251,11 +1264,18 @@ Appends a float64 value as a string to the given buffer with the specified forma Example: - buf: [32]byte - result := append_float(buf[:], 3.14159, 'f', 2, 64) - fmt.println(result) // "3.14" + append_float_example :: proc() { + buf: [8]byte + result := strconv.append_float(buf[:], 3.14159, 'f', 2, 64) + fmt.println(result, buf) + } -**Returns** The resulting string after appending the float64 value +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)) @@ -1269,10 +1289,19 @@ Appends a quoted string representation of the input string to a given byte slice Example: - buf: [20]byte - result := quote(buf[:], "hello") // "\"hello\"" + quote_example :: proc() { + buf: [20]byte + result := strconv.quote(buf[:], "hello") + fmt.println(result, buf) + } -**Returns** The resulting string after appending the quoted string representation +Output: + + !! ISSUE !! NOT EXPECTED -- "\"hello\"" was expected + "'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) { @@ -1320,10 +1349,18 @@ Appends a quoted rune representation of the input rune to a given byte slice and Example: - buf: [10]byte - result := quote_rune(buf[:], 'A') // "'A'" + quote_rune_example :: proc() { + buf: [4]byte + result := strconv.quote_rune(buf[:], 'A') + fmt.println(result, buf) + } -**Returns** The resulting string after appending the quoted rune representation +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) { @@ -1387,6 +1424,20 @@ Unquotes a single character from the input string, considering the given quote c - str: The input string containing the character to unquote - quote: The quote character to consider (e.g., '"') +Example: + + 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 @@ -1492,7 +1543,39 @@ Unquotes the input string considering any type of quote character and returns th **Inputs** - lit: The input string to unquote -- allocator: The memory allocator to use (default: context.allocator) +- allocator: (default: context.allocator) + +WARNING: This procedure gives unexpected results if the quotes are not the first and last characters. + +Example: + + 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 + + Source: The raven `Huginn` is black. + Unquoted: , alloc:false, ok:true **Returns** - res: The resulting unquoted string From 9ecbd70daa60bd06f80dca6dbfc5c871e6b6a07a Mon Sep 17 00:00:00 2001 From: Jon Lipstate Date: Thu, 6 Apr 2023 00:02:57 -0700 Subject: [PATCH 39/75] parens --- core/strconv/strconv.odin | 50 +++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/core/strconv/strconv.odin b/core/strconv/strconv.odin index ad7d93ce6..f1fda7561 100644 --- a/core/strconv/strconv.odin +++ b/core/strconv/strconv.odin @@ -54,7 +54,7 @@ Parses an integer value from the input string in the given base, without a prefi Example: - parse_i64_of_base_example::proc { + parse_i64_of_base_example() :: proc { n, ok := strconv.parse_i64_of_base("-1234e3", 10) fmt.println(n, ok) } @@ -121,7 +121,7 @@ Parses an integer value from the input string in base 10, unless there's a prefi Example: - parse_i64_maybe_prefixed_example :: proc { + parse_i64_maybe_prefixed_example() :: proc { n, ok := strconv.parse_i64_maybe_prefixed("1234") fmt.println(n,ok) @@ -204,7 +204,7 @@ Parses an unsigned 64-bit integer value from the input string without a prefix, Example: - parse_u64_of_base_example :: proc { + parse_u64_of_base_example() :: proc { n, ok := strconv.parse_u64_of_base("1234e3", 10) fmt.println(n,ok) @@ -264,7 +264,7 @@ Parses an unsigned 64-bit integer value from the input string, using the specifi Example: - parse_u64_maybe_prefixed_example :: proc { + parse_u64_maybe_prefixed_example() :: proc { n, ok := strconv.parse_u64_maybe_prefixed("1234") fmt.println(n,ok) @@ -336,7 +336,7 @@ Parses a signed integer value from the input string, using the specified base or Example: - parse_int_example :: proc { + parse_int_example() :: proc { n, ok := strconv.parse_int("1234") // without prefix, inferred base 10 fmt.println(n,ok) @@ -377,7 +377,7 @@ Parses an unsigned integer value from the input string, using the specified base Example: - parse_uint_example :: proc { + parse_uint_example() :: proc { n, ok := strconv.parse_uint("1234") // without prefix, inferred base 10 fmt.println(n,ok) @@ -418,7 +418,7 @@ Parses an integer value from a string in the given base, without any prefix Example: - parse_i128_of_base_example :: proc { + parse_i128_of_base_example() :: proc { n, ok := strconv.parse_i128_of_base("-1234eeee", 10) fmt.println(n,ok) } @@ -483,7 +483,7 @@ Parses an integer value from a string in base 10, unless there's a prefix Example: - parse_i128_maybe_prefixed_example :: proc { + parse_i128_maybe_prefixed_example() :: proc { n, ok := strconv.parse_i128_maybe_prefixed("1234") fmt.println(n, ok) @@ -565,7 +565,7 @@ Parses an unsigned integer value from a string in the given base, without any pr Example: - parse_u128_of_base_example :: proc { + parse_u128_of_base_example() :: proc { n, ok := strconv.parse_u128_of_base("1234eeee", 10) fmt.println(n, ok) @@ -622,7 +622,7 @@ Parses an unsigned integer value from a string in base 10, unless there's a pref Example: - parse_u128_maybe_prefixed_example :: proc { + parse_u128_maybe_prefixed_example() :: proc { n, ok := strconv.parse_u128_maybe_prefixed("1234") fmt.println(n, ok) @@ -703,7 +703,7 @@ Parses a 32-bit floating point number from a string Example: - parse_f32_example :: proc { + parse_f32_example() :: proc { n, ok := strconv.parse_f32("1234eee") fmt.println(n, ok) @@ -734,7 +734,7 @@ Parses a 64-bit floating point number from a string Example: - parse_f64_example :: proc { + parse_f64_example() :: proc { n, ok := strconv.parse_f64("1234eee") fmt.println(n, ok) @@ -768,7 +768,7 @@ Parses a 32-bit floating point number from a string and returns the parsed numbe Example: - parse_f32_prefix_example :: proc { + parse_f32_prefix_example() :: proc { n, _, ok := strconv.parse_f32_prefix("1234eee") fmt.println(n, ok) @@ -801,7 +801,7 @@ Parses a 64-bit floating point number from a string and returns the parsed numbe Example: - parse_f64_prefix_example :: proc() { + parse_f64_prefix_example() :: proc() { n, _, ok := strconv.parse_f64_prefix("12.34eee") fmt.println(n, ok) @@ -1105,7 +1105,7 @@ Appends a boolean value as a string to the given buffer Example: - append_bool_example :: proc() { + append_bool_example() :: proc() { buf: [4]byte result := strconv.append_bool(buf[:], true) fmt.println(result, buf) @@ -1137,7 +1137,7 @@ Appends an unsigned integer value as a string to the given buffer with the speci Example: - append_uint_example :: proc() { + append_uint_example() :: proc() { buf: [4]byte result := strconv.append_uint(buf[:], 42, 16) fmt.println(result, buf) @@ -1163,7 +1163,7 @@ Appends a signed integer value as a string to the given buffer with the specifie Example: - append_int_example :: proc() { + append_int_example() :: proc() { buf: [4]byte result := strconv.append_int(buf[:], -42, 10) fmt.println(result, buf) @@ -1188,7 +1188,7 @@ Converts an integer value to a string and stores it in the given buffer Example: - itoa_example :: proc() { + itoa_example() :: proc() { buf: [4]byte result := strconv.itoa(buf[:], 42) fmt.println(result, buf) // "42" @@ -1212,7 +1212,7 @@ Converts a string to an integer value Example: - atoi_example :: proc() { + atoi_example() :: proc() { fmt.println(strconv.atoi("42")) } @@ -1235,7 +1235,7 @@ Converts a string to a float64 value Example: - atof_example :: proc() { + atof_example() :: proc() { fmt.println(strconv.atof("3.14")) } @@ -1264,7 +1264,7 @@ Appends a float64 value as a string to the given buffer with the specified forma Example: - append_float_example :: proc() { + append_float_example() :: proc() { buf: [8]byte result := strconv.append_float(buf[:], 3.14159, 'f', 2, 64) fmt.println(result, buf) @@ -1289,7 +1289,7 @@ Appends a quoted string representation of the input string to a given byte slice Example: - quote_example :: proc() { + quote_example() :: proc() { buf: [20]byte result := strconv.quote(buf[:], "hello") fmt.println(result, buf) @@ -1349,7 +1349,7 @@ Appends a quoted rune representation of the input rune to a given byte slice and Example: - quote_rune_example :: proc() { + quote_rune_example() :: proc() { buf: [4]byte result := strconv.quote_rune(buf[:], 'A') fmt.println(result, buf) @@ -1426,7 +1426,7 @@ Unquotes a single character from the input string, considering the given quote c Example: - unquote_char_example :: proc() { + unquote_char_example() :: proc() { src:="\'The\' raven" r, multiple_bytes, tail_string, success := strconv.unquote_char(src,'\'') fmt.println("Source:", src) @@ -1549,7 +1549,7 @@ WARNING: This procedure gives unexpected results if the quotes are not the first Example: - unquote_string_example :: proc() { + unquote_string_example() :: proc() { src:="\"The raven Huginn is black.\"" s, allocated, ok := strconv.unquote_string(src) fmt.println(src) From ed7284add2f3e0bc88a9605a88ad43f41ca0a74d Mon Sep 17 00:00:00 2001 From: Jon Lipstate Date: Thu, 6 Apr 2023 00:14:46 -0700 Subject: [PATCH 40/75] parens --- core/strconv/strconv.odin | 50 +++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/core/strconv/strconv.odin b/core/strconv/strconv.odin index f1fda7561..81b6267de 100644 --- a/core/strconv/strconv.odin +++ b/core/strconv/strconv.odin @@ -54,7 +54,7 @@ Parses an integer value from the input string in the given base, without a prefi Example: - parse_i64_of_base_example() :: proc { + parse_i64_of_base_example :: proc() { n, ok := strconv.parse_i64_of_base("-1234e3", 10) fmt.println(n, ok) } @@ -121,7 +121,7 @@ Parses an integer value from the input string in base 10, unless there's a prefi Example: - parse_i64_maybe_prefixed_example() :: proc { + parse_i64_maybe_prefixed_example :: proc() { n, ok := strconv.parse_i64_maybe_prefixed("1234") fmt.println(n,ok) @@ -204,7 +204,7 @@ Parses an unsigned 64-bit integer value from the input string without a prefix, Example: - parse_u64_of_base_example() :: proc { + parse_u64_of_base_example :: proc() { n, ok := strconv.parse_u64_of_base("1234e3", 10) fmt.println(n,ok) @@ -264,7 +264,7 @@ Parses an unsigned 64-bit integer value from the input string, using the specifi Example: - parse_u64_maybe_prefixed_example() :: proc { + parse_u64_maybe_prefixed_example :: proc() { n, ok := strconv.parse_u64_maybe_prefixed("1234") fmt.println(n,ok) @@ -336,7 +336,7 @@ Parses a signed integer value from the input string, using the specified base or Example: - parse_int_example() :: proc { + parse_int_example :: proc() { n, ok := strconv.parse_int("1234") // without prefix, inferred base 10 fmt.println(n,ok) @@ -377,7 +377,7 @@ Parses an unsigned integer value from the input string, using the specified base Example: - parse_uint_example() :: proc { + parse_uint_example :: proc() { n, ok := strconv.parse_uint("1234") // without prefix, inferred base 10 fmt.println(n,ok) @@ -418,7 +418,7 @@ Parses an integer value from a string in the given base, without any prefix Example: - parse_i128_of_base_example() :: proc { + parse_i128_of_base_example :: proc() { n, ok := strconv.parse_i128_of_base("-1234eeee", 10) fmt.println(n,ok) } @@ -483,7 +483,7 @@ Parses an integer value from a string in base 10, unless there's a prefix Example: - parse_i128_maybe_prefixed_example() :: proc { + parse_i128_maybe_prefixed_example :: proc() { n, ok := strconv.parse_i128_maybe_prefixed("1234") fmt.println(n, ok) @@ -565,7 +565,7 @@ Parses an unsigned integer value from a string in the given base, without any pr Example: - parse_u128_of_base_example() :: proc { + parse_u128_of_base_example :: proc() { n, ok := strconv.parse_u128_of_base("1234eeee", 10) fmt.println(n, ok) @@ -622,7 +622,7 @@ Parses an unsigned integer value from a string in base 10, unless there's a pref Example: - parse_u128_maybe_prefixed_example() :: proc { + parse_u128_maybe_prefixed_example :: proc() { n, ok := strconv.parse_u128_maybe_prefixed("1234") fmt.println(n, ok) @@ -703,7 +703,7 @@ Parses a 32-bit floating point number from a string Example: - parse_f32_example() :: proc { + parse_f32_example :: proc() { n, ok := strconv.parse_f32("1234eee") fmt.println(n, ok) @@ -734,7 +734,7 @@ Parses a 64-bit floating point number from a string Example: - parse_f64_example() :: proc { + parse_f64_example :: proc() { n, ok := strconv.parse_f64("1234eee") fmt.println(n, ok) @@ -768,7 +768,7 @@ Parses a 32-bit floating point number from a string and returns the parsed numbe Example: - parse_f32_prefix_example() :: proc { + parse_f32_prefix_example :: proc() { n, _, ok := strconv.parse_f32_prefix("1234eee") fmt.println(n, ok) @@ -801,7 +801,7 @@ Parses a 64-bit floating point number from a string and returns the parsed numbe Example: - parse_f64_prefix_example() :: proc() { + parse_f64_prefix_example :: proc() { n, _, ok := strconv.parse_f64_prefix("12.34eee") fmt.println(n, ok) @@ -1105,7 +1105,7 @@ Appends a boolean value as a string to the given buffer Example: - append_bool_example() :: proc() { + append_bool_example :: proc() { buf: [4]byte result := strconv.append_bool(buf[:], true) fmt.println(result, buf) @@ -1137,7 +1137,7 @@ Appends an unsigned integer value as a string to the given buffer with the speci Example: - append_uint_example() :: proc() { + append_uint_example :: proc() { buf: [4]byte result := strconv.append_uint(buf[:], 42, 16) fmt.println(result, buf) @@ -1163,7 +1163,7 @@ Appends a signed integer value as a string to the given buffer with the specifie Example: - append_int_example() :: proc() { + append_int_example :: proc() { buf: [4]byte result := strconv.append_int(buf[:], -42, 10) fmt.println(result, buf) @@ -1188,7 +1188,7 @@ Converts an integer value to a string and stores it in the given buffer Example: - itoa_example() :: proc() { + itoa_example :: proc() { buf: [4]byte result := strconv.itoa(buf[:], 42) fmt.println(result, buf) // "42" @@ -1212,7 +1212,7 @@ Converts a string to an integer value Example: - atoi_example() :: proc() { + atoi_example :: proc() { fmt.println(strconv.atoi("42")) } @@ -1235,7 +1235,7 @@ Converts a string to a float64 value Example: - atof_example() :: proc() { + atof_example :: proc() { fmt.println(strconv.atof("3.14")) } @@ -1264,7 +1264,7 @@ Appends a float64 value as a string to the given buffer with the specified forma Example: - append_float_example() :: proc() { + append_float_example :: proc() { buf: [8]byte result := strconv.append_float(buf[:], 3.14159, 'f', 2, 64) fmt.println(result, buf) @@ -1289,7 +1289,7 @@ Appends a quoted string representation of the input string to a given byte slice Example: - quote_example() :: proc() { + quote_example :: proc() { buf: [20]byte result := strconv.quote(buf[:], "hello") fmt.println(result, buf) @@ -1349,7 +1349,7 @@ Appends a quoted rune representation of the input rune to a given byte slice and Example: - quote_rune_example() :: proc() { + quote_rune_example :: proc() { buf: [4]byte result := strconv.quote_rune(buf[:], 'A') fmt.println(result, buf) @@ -1426,7 +1426,7 @@ Unquotes a single character from the input string, considering the given quote c Example: - unquote_char_example() :: proc() { + unquote_char_example :: proc() { src:="\'The\' raven" r, multiple_bytes, tail_string, success := strconv.unquote_char(src,'\'') fmt.println("Source:", src) @@ -1549,7 +1549,7 @@ WARNING: This procedure gives unexpected results if the quotes are not the first Example: - unquote_string_example() :: proc() { + unquote_string_example :: proc() { src:="\"The raven Huginn is black.\"" s, allocated, ok := strconv.unquote_string(src) fmt.println(src) From 100e907890eb6c710c42c322fce3ec8a6b0184c2 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Thu, 6 Apr 2023 16:09:44 +0200 Subject: [PATCH 41/75] Temporarily disable doc tests. --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5fb98fca4..8c0b977e8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -168,7 +168,7 @@ jobs: run: | call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat cd tests\documentation - call build.bat + rem call build.bat timeout-minutes: 10 - name: core:math/big tests shell: cmd From 1886193c6cc691e6c8d7ea1f06c81da160ce27ff Mon Sep 17 00:00:00 2001 From: Jon Lipstate Date: Thu, 6 Apr 2023 09:44:57 -0700 Subject: [PATCH 42/75] resolve doc-test issues --- .gitignore | 2 ++ core/strconv/decimal/decimal.odin | 6 ++-- core/strconv/strconv.odin | 52 ++++++++++++++++++++++++++++++- 3 files changed, 55 insertions(+), 5 deletions(-) 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/core/strconv/decimal/decimal.odin b/core/strconv/decimal/decimal.odin index bea5d4452..9e8792813 100644 --- a/core/strconv/decimal/decimal.odin +++ b/core/strconv/decimal/decimal.odin @@ -501,8 +501,7 @@ Example: import "core:fmt" import "core:strconv" - - strconv_round_down_example :: proc { + strconv_round_down_example :: proc() { d: decimal.Decimal str := [64]u8{} ok := decimal.set(&d, "123.456") @@ -534,8 +533,7 @@ Example: import "core:fmt" import "core:strconv" - - strconv_rounded_integer_example :: proc { + strconv_rounded_integer_example :: proc() { d: decimal.Decimal ok := decimal.set(&d, "123.456") fmt.println(decimal.rounded_integer(&d)) diff --git a/core/strconv/strconv.odin b/core/strconv/strconv.odin index 81b6267de..571e26dc1 100644 --- a/core/strconv/strconv.odin +++ b/core/strconv/strconv.odin @@ -54,6 +54,8 @@ Parses an integer value from the input string in the given base, without a prefi 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) @@ -121,6 +123,8 @@ Parses an integer value from the input string in base 10, unless there's a prefi 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) @@ -204,6 +208,8 @@ Parses an unsigned 64-bit integer value from the input string without a prefix, 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) @@ -264,6 +270,8 @@ Parses an unsigned 64-bit integer value from the input string, using the specifi 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) @@ -336,6 +344,8 @@ Parses a signed integer value from the input string, using the specified base or 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) @@ -377,6 +387,8 @@ Parses an unsigned integer value from the input string, using the specified base 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) @@ -418,6 +430,8 @@ Parses an integer value from a string in the given base, without any prefix 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) @@ -483,6 +497,8 @@ Parses an integer value from a string in base 10, unless there's a prefix 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) @@ -565,6 +581,8 @@ Parses an unsigned integer value from a string in the given base, without any pr 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) @@ -622,6 +640,8 @@ Parses an unsigned integer value from a string in base 10, unless there's a pref 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) @@ -703,6 +723,8 @@ Parses a 32-bit floating point number from a string Example: + import "core:fmt" + import "core:strconv" parse_f32_example :: proc() { n, ok := strconv.parse_f32("1234eee") fmt.println(n, ok) @@ -734,6 +756,8 @@ Parses a 64-bit floating point number from a string Example: + import "core:fmt" + import "core:strconv" parse_f64_example :: proc() { n, ok := strconv.parse_f64("1234eee") fmt.println(n, ok) @@ -768,6 +792,8 @@ Parses a 32-bit floating point number from a string and returns the parsed numbe Example: + import "core:fmt" + import "core:strconv" parse_f32_prefix_example :: proc() { n, _, ok := strconv.parse_f32_prefix("1234eee") fmt.println(n, ok) @@ -801,6 +827,8 @@ Parses a 64-bit floating point number from a string and returns the parsed numbe Example: + import "core:fmt" + import "core:strconv" parse_f64_prefix_example :: proc() { n, _, ok := strconv.parse_f64_prefix("12.34eee") fmt.println(n, ok) @@ -1105,6 +1133,8 @@ Appends a boolean value as a string to the given buffer Example: + import "core:fmt" + import "core:strconv" append_bool_example :: proc() { buf: [4]byte result := strconv.append_bool(buf[:], true) @@ -1137,6 +1167,8 @@ Appends an unsigned integer value as a string to the given buffer with the speci Example: + import "core:fmt" + import "core:strconv" append_uint_example :: proc() { buf: [4]byte result := strconv.append_uint(buf[:], 42, 16) @@ -1163,6 +1195,8 @@ Appends a signed integer value as a string to the given buffer with the specifie Example: + import "core:fmt" + import "core:strconv" append_int_example :: proc() { buf: [4]byte result := strconv.append_int(buf[:], -42, 10) @@ -1188,6 +1222,8 @@ Converts an integer value to a string and stores it in the given buffer Example: + import "core:fmt" + import "core:strconv" itoa_example :: proc() { buf: [4]byte result := strconv.itoa(buf[:], 42) @@ -1212,6 +1248,8 @@ Converts a string to an integer value Example: + import "core:fmt" + import "core:strconv" atoi_example :: proc() { fmt.println(strconv.atoi("42")) } @@ -1235,6 +1273,8 @@ Converts a string to a float64 value Example: + import "core:fmt" + import "core:strconv" atof_example :: proc() { fmt.println(strconv.atof("3.14")) } @@ -1264,6 +1304,8 @@ Appends a float64 value as a string to the given buffer with the specified forma Example: + import "core:fmt" + import "core:strconv" append_float_example :: proc() { buf: [8]byte result := strconv.append_float(buf[:], 3.14159, 'f', 2, 64) @@ -1289,6 +1331,8 @@ Appends a quoted string representation of the input string to a given byte slice Example: + import "core:fmt" + import "core:strconv" quote_example :: proc() { buf: [20]byte result := strconv.quote(buf[:], "hello") @@ -1349,6 +1393,8 @@ Appends a quoted rune representation of the input rune to a given byte slice and Example: + import "core:fmt" + import "core:strconv" quote_rune_example :: proc() { buf: [4]byte result := strconv.quote_rune(buf[:], 'A') @@ -1426,6 +1472,8 @@ Unquotes a single character from the input string, considering the given quote c Example: + import "core:fmt" + import "core:strconv" unquote_char_example :: proc() { src:="\'The\' raven" r, multiple_bytes, tail_string, success := strconv.unquote_char(src,'\'') @@ -1549,12 +1597,14 @@ WARNING: This procedure gives unexpected results if the quotes are not the first 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) From 846c0f7cfc20ee67db96eb51b0ede431e2bece9b Mon Sep 17 00:00:00 2001 From: Jon Lipstate Date: Thu, 6 Apr 2023 09:56:27 -0700 Subject: [PATCH 43/75] add decimal subpackage ref --- core/strconv/decimal/decimal.odin | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/strconv/decimal/decimal.odin b/core/strconv/decimal/decimal.odin index 9e8792813..8884d9138 100644 --- a/core/strconv/decimal/decimal.odin +++ b/core/strconv/decimal/decimal.odin @@ -501,7 +501,7 @@ Example: import "core:fmt" import "core:strconv" - strconv_round_down_example :: proc() { + round_down_example :: proc() { d: decimal.Decimal str := [64]u8{} ok := decimal.set(&d, "123.456") @@ -532,9 +532,9 @@ WARNING: There are no guarantees about overflow. Example: import "core:fmt" - import "core:strconv" - strconv_rounded_integer_example :: proc() { - d: decimal.Decimal + import "core:strconv/decimal" + rounded_integer_example :: proc() { + d: decimal.Decimal ok := decimal.set(&d, "123.456") fmt.println(decimal.rounded_integer(&d)) } From 7a8aa03e544d4cde0aee61dc168f8e01d3a091c7 Mon Sep 17 00:00:00 2001 From: Jon Lipstate Date: Thu, 6 Apr 2023 14:58:57 -0700 Subject: [PATCH 44/75] doc tests verified --- core/strconv/decimal/decimal.odin | 2 +- core/strconv/strconv.odin | 53 ++++++++++++++++--------------- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/core/strconv/decimal/decimal.odin b/core/strconv/decimal/decimal.odin index 8884d9138..4130da306 100644 --- a/core/strconv/decimal/decimal.odin +++ b/core/strconv/decimal/decimal.odin @@ -500,7 +500,7 @@ Rounds down the decimal value to the specified number of decimal places Example: import "core:fmt" - import "core:strconv" + import "core:strconv/decimal" round_down_example :: proc() { d: decimal.Decimal str := [64]u8{} diff --git a/core/strconv/strconv.odin b/core/strconv/strconv.odin index 571e26dc1..eae9f9504 100644 --- a/core/strconv/strconv.odin +++ b/core/strconv/strconv.odin @@ -135,8 +135,8 @@ Example: Output: - 1234 true - 61166 true + 1234 true + 61166 true **Returns** - value: The parsed integer value @@ -220,8 +220,8 @@ Example: Output: - 1234 false - 90672878 true + 1234 false + 90672878 true **Returns** - value: The parsed uint64 value @@ -282,8 +282,8 @@ Example: Output: - 1234 true - 238 true + 1234 true + 238 true **Returns** - value: The parsed uint64 value @@ -359,9 +359,9 @@ Example: Output: - 1234 true - 65535 true - 65535 true + 1234 true + 65535 true + 65535 true **Returns** - value: The parsed int value @@ -402,9 +402,9 @@ Example: Output: - 1234 true - 65535 true - 65535 true + 1234 true + 65535 true + 65535 true **Returns** @@ -439,7 +439,7 @@ Example: Output: - -1234 false + -1234 false **Returns** - value: The parsed i128 value @@ -509,8 +509,8 @@ Example: Output: - 1234 true - 61166 true + 1234 true + 61166 true **Returns** - value: The parsed i128 value @@ -829,7 +829,7 @@ Example: import "core:fmt" import "core:strconv" - parse_f64_prefix_example :: proc() { + parse_f64_prefix_example :: proc() { n, _, ok := strconv.parse_f64_prefix("12.34eee") fmt.println(n, ok) @@ -1135,8 +1135,8 @@ Example: import "core:fmt" import "core:strconv" - append_bool_example :: proc() { - buf: [4]byte + append_bool_example :: proc() { + buf: [6]byte result := strconv.append_bool(buf[:], true) fmt.println(result, buf) } @@ -1169,7 +1169,7 @@ Example: import "core:fmt" import "core:strconv" - append_uint_example :: proc() { + append_uint_example :: proc() { buf: [4]byte result := strconv.append_uint(buf[:], 42, 16) fmt.println(result, buf) @@ -1197,7 +1197,7 @@ Example: import "core:fmt" import "core:strconv" - append_int_example :: proc() { + append_int_example :: proc() { buf: [4]byte result := strconv.append_int(buf[:], -42, 10) fmt.println(result, buf) @@ -1224,7 +1224,7 @@ Example: import "core:fmt" import "core:strconv" - itoa_example :: proc() { + itoa_example :: proc() { buf: [4]byte result := strconv.itoa(buf[:], 42) fmt.println(result, buf) // "42" @@ -1329,6 +1329,8 @@ Appends a quoted string representation of the input string to a given byte slice - 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" @@ -1341,8 +1343,7 @@ Example: Output: - !! ISSUE !! NOT EXPECTED -- "\"hello\"" was expected - "'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] + "'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 @@ -1610,7 +1611,7 @@ Example: fmt.println(src) fmt.printf("Unquoted: <%s>, alloc:%v, ok:%v\n\n", s, allocated, ok) - src="The raven \"Huginn\" is black." + 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) @@ -1624,8 +1625,8 @@ Output: 'The raven Huginn' is black. Unquoted: , alloc:false, ok:true - Source: 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 From 0af1b75a02e86fb51cf1c298be2fd5f0373295d8 Mon Sep 17 00:00:00 2001 From: Lucas Perlind Date: Fri, 7 Apr 2023 08:26:07 +1000 Subject: [PATCH 45/75] Re-enable documentation CI and improve error messages --- .github/workflows/ci.yml | 2 +- tests/documentation/documentation_tester.odin | 39 ++++++++++++++++++- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8c0b977e8..5fb98fca4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -168,7 +168,7 @@ jobs: run: | call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat cd tests\documentation - rem call build.bat + call build.bat timeout-minutes: 10 - name: core:math/big tests shell: cmd diff --git a/tests/documentation/documentation_tester.odin b/tests/documentation/documentation_tester.odin index 09c565a51..c50a18ce2 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, '`') >= 0 { + 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, From e0d9092df840b14410b709e383b196ed2ac9b9e0 Mon Sep 17 00:00:00 2001 From: Lucas Perlind Date: Fri, 7 Apr 2023 17:35:21 +1000 Subject: [PATCH 46/75] Document return values of strings and add allocator errors where possible --- core/encoding/csv/writer.odin | 2 +- core/strings/ascii_set.odin | 4 +- core/strings/builder.odin | 130 ++-- core/strings/conversion.odin | 94 +-- core/strings/intern.odin | 18 +- core/strings/reader.odin | 30 +- core/strings/strings.odin | 611 ++++++++++-------- tests/core/strings/test_core_strings.odin | 38 +- tests/documentation/documentation_tester.odin | 2 +- 9 files changed, 504 insertions(+), 425 deletions(-) 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/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 dff68982d..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: @@ -1087,7 +1079,8 @@ Inputs: - 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: @@ -1110,7 +1103,7 @@ 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) } /* @@ -1121,7 +1114,8 @@ Inputs: - 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: @@ -1144,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)) } /* @@ -1156,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' { @@ -1178,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: @@ -1196,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. @@ -1215,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. @@ -1235,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. @@ -1253,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. @@ -1273,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. @@ -1293,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. @@ -1313,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`. @@ -1329,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: @@ -1362,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: @@ -1399,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: @@ -1421,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 @@ -1437,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. @@ -1461,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 @@ -1478,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: @@ -1508,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)) @@ -1538,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: @@ -1560,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]) @@ -1617,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: @@ -1639,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]) @@ -1694,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: @@ -1718,7 +1718,7 @@ Output: -1 */ -index_any :: proc(s, chars: string) -> int { +index_any :: proc(s, chars: string) -> (res: int) { if chars == "" { return -1 } @@ -1757,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: @@ -1781,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 } @@ -1837,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 @@ -1876,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: @@ -1900,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 } @@ -1945,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 @@ -1963,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` @@ -1990,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: @@ -2026,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: @@ -2099,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: @@ -2135,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: @@ -2161,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: @@ -2186,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. @@ -2199,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: @@ -2226,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 @@ -2235,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 @@ -2244,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]) @@ -2256,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]) @@ -2275,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: @@ -2294,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 "" @@ -2310,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 "" @@ -2327,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: @@ -2346,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:]) @@ -2365,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:]) @@ -2378,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 } @@ -2398,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 } @@ -2415,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 } @@ -2432,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) } /* @@ -2444,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) } /* @@ -2456,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) } /* @@ -2468,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)) } /* @@ -2480,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) } /* @@ -2492,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) } /* @@ -2503,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)) } /* @@ -2516,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: @@ -2534,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):] } @@ -2548,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: @@ -2566,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)] } @@ -2583,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. @@ -2603,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 } } @@ -2626,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 { @@ -2641,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. @@ -2651,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: @@ -2712,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: @@ -2729,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 @@ -2758,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` @@ -2770,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: @@ -2788,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 { @@ -2800,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 @@ -2813,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 @@ -2832,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 @@ -2871,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. @@ -2881,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: @@ -2935,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) @@ -2947,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) @@ -2956,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. @@ -2970,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) @@ -2983,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. @@ -3004,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) @@ -3017,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` @@ -3062,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) @@ -3083,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 @@ -3110,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)` @@ -3125,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 { @@ -3151,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 @@ -3203,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, @@ -3221,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 } @@ -3263,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/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 c50a18ce2..efba63f88 100644 --- a/tests/documentation/documentation_tester.odin +++ b/tests/documentation/documentation_tester.odin @@ -411,7 +411,7 @@ main :: proc() { // 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, '`') >= 0 { + 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 From d72db2698bdb7b976bfdee075088d6ec697dafd9 Mon Sep 17 00:00:00 2001 From: Yawning Angel Date: Sat, 8 Apr 2023 09:57:47 +0900 Subject: [PATCH 47/75] core/crypto/_fiat: Hedge against LLVM cleverness Recent LLVM is getting smart to the point where the optimizer can change a traditional constant-time conditional swap into a pointer swap. Ensure that this does not happen by force-disabling optimization. Additionally, disable inlining the relevant routines such that manual inspection in optimized builds is still reasonably easy to do. --- core/crypto/_fiat/fiat.odin | 6 ++++-- core/crypto/_fiat/field_curve25519/field51.odin | 6 ++++-- core/crypto/_fiat/field_poly1305/field4344.odin | 6 ++++-- 3 files changed, 12 insertions(+), 6 deletions(-) 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 From b8c2b0105b42f81f44ad0553a0d28f477cdefcb7 Mon Sep 17 00:00:00 2001 From: Yawning Angel Date: Sat, 8 Apr 2023 10:11:04 +0900 Subject: [PATCH 48/75] core/crypto: Disable optimization for the ct byte compare Hedge against the possibility of a compiler getting clever enough to optimize this pattern as well. --- core/crypto/crypto.odin | 1 + 1 file changed, 1 insertion(+) 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) From 7fc208154389f1923ebc10906e84b23c1af2b3c5 Mon Sep 17 00:00:00 2001 From: Yawning Angel Date: Sat, 8 Apr 2023 10:15:00 +0900 Subject: [PATCH 49/75] core/crypto: Add private attributes for internals These constants and internal routines are not intended for use outside the actual implementations themselves. --- core/crypto/chacha20/chacha20.odin | 10 ++++++++++ core/crypto/chacha20poly1305/chacha20poly1305.odin | 5 +++++ core/crypto/poly1305/poly1305.odin | 2 ++ core/crypto/x25519/x25519.odin | 3 +++ tests/core/crypto/test_core_crypto_modern.odin | 8 +++++++- 5 files changed, 27 insertions(+), 1 deletion(-) 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/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/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)) } From b22d71a74e5cd9ad6f810a2a7d155523bb7c0782 Mon Sep 17 00:00:00 2001 From: kamil-beker Date: Fri, 7 Apr 2023 23:55:06 +0200 Subject: [PATCH 50/75] build_odin.sh - fix build on darwin arm64 Done: - use ARCH variable properly - refactor have_which() to use POSIX compliant command - ref - use command instead of which for the same reason as above. - run shfmt for consistency. --- build_odin.sh | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/build_odin.sh b/build_odin.sh index bdf80c534..af1efee59 100755 --- a/build_odin.sh +++ b/build_odin.sh @@ -25,11 +25,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 +37,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 +59,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,11 +86,11 @@ 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-16)" ]; then LLVM_CONFIG=llvm-config-11-64 else panic "Unable to find LLVM-config" @@ -111,7 +111,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,6 +135,7 @@ build_odin() { ;; *) panic "Build mode unsupported!" + ;; esac set -x @@ -147,7 +148,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 +170,7 @@ FreeBSD) ;; *) panic "Platform unsupported!" + ;; esac if [[ $# -eq 0 ]]; then From 8b29b07f5a0089139ee34074344fe6b9c7d3a693 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Sat, 8 Apr 2023 09:51:34 +0200 Subject: [PATCH 51/75] Add VK Wayland Closes #2442 --- .../vulkan/_gen/create_vulkan_odin_wrapper.py | 17 +- vendor/vulkan/_gen/vulkan_wayland.h | 54 + vendor/vulkan/core.odin | 1671 +-- vendor/vulkan/enums.odin | 6360 ++++----- vendor/vulkan/procedures.odin | 6676 ++++----- vendor/vulkan/structs.odin | 11738 ++++++++-------- 6 files changed, 13296 insertions(+), 13220 deletions(-) create mode 100644 vendor/vulkan/_gen/vulkan_wayland.h diff --git a/vendor/vulkan/_gen/create_vulkan_odin_wrapper.py b/vendor/vulkan/_gen/create_vulkan_odin_wrapper.py index 1dbac58d8..a1a247e9d 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: 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..8b8dffb3a 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: ^struct 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..32ed8a7b3 100644 --- a/vendor/vulkan/structs.odin +++ b/vendor/vulkan/structs.odin @@ -1,5865 +1,5873 @@ -// -// 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: ^struct wl_display, + surface: ^struct wl_surface, +} + +// 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 + + From d8e0a866008eaa935cec69957643204a994728f3 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Sat, 8 Apr 2023 09:54:02 +0200 Subject: [PATCH 52/75] Revert "Add VK Wayland" This reverts commit 8b29b07f5a0089139ee34074344fe6b9c7d3a693. --- .../vulkan/_gen/create_vulkan_odin_wrapper.py | 17 +- vendor/vulkan/_gen/vulkan_wayland.h | 54 - vendor/vulkan/core.odin | 1671 ++- vendor/vulkan/enums.odin | 6360 +++++---- vendor/vulkan/procedures.odin | 6676 +++++---- vendor/vulkan/structs.odin | 11738 ++++++++-------- 6 files changed, 13220 insertions(+), 13296 deletions(-) delete mode 100644 vendor/vulkan/_gen/vulkan_wayland.h diff --git a/vendor/vulkan/_gen/create_vulkan_odin_wrapper.py b/vendor/vulkan/_gen/create_vulkan_odin_wrapper.py index a1a247e9d..1dbac58d8 100644 --- a/vendor/vulkan/_gen/create_vulkan_odin_wrapper.py +++ b/vendor/vulkan/_gen/create_vulkan_odin_wrapper.py @@ -7,15 +7,14 @@ 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), - ("vulkan_wayland.h", 'https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/include/vulkan/vulkan_wayland.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), ] for file, url, _ in file_and_urls: diff --git a/vendor/vulkan/_gen/vulkan_wayland.h b/vendor/vulkan/_gen/vulkan_wayland.h deleted file mode 100644 index bdf4fdfad..000000000 --- a/vendor/vulkan/_gen/vulkan_wayland.h +++ /dev/null @@ -1,54 +0,0 @@ -#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 414d546a1..b90bfad17 100644 --- a/vendor/vulkan/core.odin +++ b/vendor/vulkan/core.odin @@ -1,837 +1,834 @@ -// -// 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 - - +// +// 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 + + diff --git a/vendor/vulkan/enums.odin b/vendor/vulkan/enums.odin index 9360a1e3e..b2eec06ab 100644 --- a/vendor/vulkan/enums.odin +++ b/vendor/vulkan/enums.odin @@ -1,3181 +1,3179 @@ -// -// 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 {} - - +// +// 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 {} + + diff --git a/vendor/vulkan/procedures.odin b/vendor/vulkan/procedures.odin index 8b8dffb3a..02cfa9dbf 100644 --- a/vendor/vulkan/procedures.odin +++ b/vendor/vulkan/procedures.odin @@ -1,3342 +1,3334 @@ -// -// 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: ^struct 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, -} - +// +// 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, +} + diff --git a/vendor/vulkan/structs.odin b/vendor/vulkan/structs.odin index 32ed8a7b3..3bc3e1935 100644 --- a/vendor/vulkan/structs.odin +++ b/vendor/vulkan/structs.odin @@ -1,5873 +1,5865 @@ -// -// 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: ^struct wl_display, - surface: ^struct wl_surface, -} - -// 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, +} + +// 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 + + From ec3ea3752f131221c0ae6b1bd78c06e8c0b765ee Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Sat, 8 Apr 2023 13:26:38 +0200 Subject: [PATCH 53/75] Add Vulkan-Wayland to wrapper generator Closes #2442 --- .../vulkan/_gen/create_vulkan_odin_wrapper.py | 28 +- vendor/vulkan/_gen/vulkan_wayland.h | 54 + vendor/vulkan/core.odin | 1671 +-- vendor/vulkan/enums.odin | 6360 ++++----- vendor/vulkan/procedures.odin | 6676 ++++----- vendor/vulkan/structs.odin | 11742 ++++++++-------- 6 files changed, 13310 insertions(+), 13221 deletions(-) create mode 100644 vendor/vulkan/_gen/vulkan_wayland.h 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 + + From 586e85281ea1d760645f9b3bcc28b22ab7024106 Mon Sep 17 00:00:00 2001 From: RestartFU <45609733+RestartFU@users.noreply.github.com> Date: Sat, 8 Apr 2023 23:13:37 +0000 Subject: [PATCH 54/75] fix SendInput function in user32 --- core/sys/windows/user32.odin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 --- From b6f356c2113d6ddb8c3e66d61123181e580b573e Mon Sep 17 00:00:00 2001 From: destroycomputers Date: Tue, 11 Apr 2023 01:11:01 +0200 Subject: [PATCH 55/75] Fix intrinsics.alloca code generation There was a disconnect between the declared return type for alloca intrinsic in check_builtin.cpp (multi_pointer(t_u8)) and the generated result type in llvm_backend_proc.cpp (t_u8_ptr). This allowed slicing the return type, but in the code generation process the type of the expression wasn't sliceable, which triggered the assert. Fixes #2139 --- src/llvm_backend_proc.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp index 02748663b..adc4f8458 100644 --- a/src/llvm_backend_proc.cpp +++ b/src/llvm_backend_proc.cpp @@ -2042,7 +2042,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; From b42bb5be26eef651f886810778ee931cf37a8d6b Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Tue, 11 Apr 2023 11:55:29 +0200 Subject: [PATCH 56/75] Only try to parse git hash if .git is present Closes 2451 --- build.bat | 3 +++ build_odin.sh | 9 +++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) 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 af1efee59..a1cdbd62f 100755 --- a/build_odin.sh +++ b/build_odin.sh @@ -6,13 +6,18 @@ set -eu : ${CXXFLAGS=} : ${LDFLAGS=} : ${ODIN_VERSION=dev-$(date +"%Y-%m")} +: ${GIT_SHA=} CPPFLAGS="$CPPFLAGS -DODIN_VERSION_RAW=\"$ODIN_VERSION\"" CXXFLAGS="$CXXFLAGS -std=c++14" 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) From b5784bc2efb3c264947b67771a118f965de57082 Mon Sep 17 00:00:00 2001 From: TryAngle <45734252+TriedAngle@users.noreply.github.com> Date: Tue, 11 Apr 2023 15:08:31 +0200 Subject: [PATCH 57/75] Fix: `Unable to find LLVM-config` on Ubuntu appends a check for llvm-config-14 on linux --- build_odin.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build_odin.sh b/build_odin.sh index a1cdbd62f..8cb081b45 100755 --- a/build_odin.sh +++ b/build_odin.sh @@ -97,6 +97,8 @@ config_linux() { LLVM_CONFIG=llvm-config-11 elif [ -x "$(command -v llvm-config-11-16)" ]; 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 From 1bf4a6f7115dbaa21e7395277a9bd849fe4850eb Mon Sep 17 00:00:00 2001 From: Meghan Date: Wed, 12 Apr 2023 12:18:11 -0700 Subject: [PATCH 58/75] build_odin.sh: fix typo introduced in detection of llvm-config-11-64 appeared in https://github.com/odin-lang/Odin/commit/b22d71a74e5cd9ad6f810a2a7d155523bb7c0782 --- build_odin.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_odin.sh b/build_odin.sh index 8cb081b45..8f5ce0525 100755 --- a/build_odin.sh +++ b/build_odin.sh @@ -95,7 +95,7 @@ config_linux() { LLVM_CONFIG=llvm-config elif [ -x "$(command -v llvm-config-11)" ]; then LLVM_CONFIG=llvm-config-11 - elif [ -x "$(command -v llvm-config-11-16)" ]; 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 From 994825671d53c0a165854e17c7498e2000e0e21c Mon Sep 17 00:00:00 2001 From: jakubtomsu <66876057+jakubtomsu@users.noreply.github.com> Date: Fri, 14 Apr 2023 15:05:25 +0200 Subject: [PATCH 59/75] Handle unmarshalling to json.Value --- core/encoding/json/unmarshal.odin | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/encoding/json/unmarshal.odin b/core/encoding/json/unmarshal.odin index 1e8ec0e0d..09a7bc938 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: From a6d5f9877f489002b00153b67d13b04fb8c20c55 Mon Sep 17 00:00:00 2001 From: jakubtomsu <66876057+jakubtomsu@users.noreply.github.com> Date: Fri, 14 Apr 2023 17:27:52 +0200 Subject: [PATCH 60/75] Convert indentation to tabs --- core/encoding/json/unmarshal.odin | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/core/encoding/json/unmarshal.odin b/core/encoding/json/unmarshal.odin index 09a7bc938..e6c61d8fa 100644 --- a/core/encoding/json/unmarshal.odin +++ b/core/encoding/json/unmarshal.odin @@ -215,12 +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 - } + 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: From 5da76ae34bac2f54b1bda5528cf49c0551e88bba Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 15 Apr 2023 15:36:21 +0100 Subject: [PATCH 61/75] Add `struct #no_copy` --- core/runtime/core.odin | 1 + src/check_decl.cpp | 8 ++++++++ src/check_expr.cpp | 20 ++++++++++++++++++++ src/check_stmt.cpp | 4 +++- src/check_type.cpp | 5 +++-- src/llvm_backend_type.cpp | 16 +++++++++------- src/parser.cpp | 11 +++++++++-- src/parser.hpp | 1 + src/types.cpp | 7 +++++++ 9 files changed, 61 insertions(+), 12 deletions(-) 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/src/check_decl.cpp b/src/check_decl.cpp index 5c25dd6a3..5a8080f96 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 from a return value 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..e55765ff8 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -5043,6 +5043,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 a #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 +5129,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 +5968,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/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/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 5addb5b7b..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 && @@ -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, " {"); From e79883e4fdc5d182398c76003c159d26ec58b7e7 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 15 Apr 2023 15:41:30 +0100 Subject: [PATCH 62/75] Add `#no_copy` to sync primitives --- core/sync/extended.odin | 16 ++++++++-------- core/sync/primitives.odin | 10 +++++----- core/sync/primitives_atomic.odin | 10 +++++----- 3 files changed, 18 insertions(+), 18 deletions(-) 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, } From 7abaf77292ea9d45ca135e9c166dbba5c9fe3af2 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 15 Apr 2023 15:47:18 +0100 Subject: [PATCH 63/75] Add `struct #no_copy` --- core/odin/ast/ast.odin | 1 + core/odin/parser/parser.odin | 7 +++++++ 2 files changed, 8 insertions(+) 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 From dc55e885888a9d036dafea2036c1907306e69d14 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 15 Apr 2023 16:04:04 +0100 Subject: [PATCH 64/75] Add `@(deferred_*_by_ptr=)` --- src/checker.cpp | 321 ++++++++++++++++++++++++-------------- src/checker.hpp | 4 + src/llvm_backend_proc.cpp | 16 ++ 3 files changed, 226 insertions(+), 115 deletions(-) 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/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp index 02748663b..93c480e7f 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); } From e24315eed892aeb6c53da78c415455a80ccdf5e5 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 15 Apr 2023 16:16:16 +0100 Subject: [PATCH 65/75] Improve grammar --- src/check_decl.cpp | 2 +- src/check_expr.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/check_decl.cpp b/src/check_decl.cpp index 5a8080f96..a984f87a3 100644 --- a/src/check_decl.cpp +++ b/src/check_decl.cpp @@ -135,7 +135,7 @@ gb_internal void check_init_variables(CheckerContext *ctx, Entity **lhs, isize l 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 from a return value a call expression"); + 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(); } diff --git a/src/check_expr.cpp b/src/check_expr.cpp index e55765ff8..de9a6b911 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -5050,7 +5050,7 @@ gb_internal bool check_no_copy_assignment(Operand const &o, String const &contex if (expr->kind == Ast_CallExpr) { // Okay } else { - error(o.expr, "Invalid use a #no_copy value in %.*s", LIT(context)); + error(o.expr, "Invalid use of #no_copy value in %.*s", LIT(context)); return true; } } From 8d951ab7f18096393b192f7cfe175c0dee4b64ba Mon Sep 17 00:00:00 2001 From: Peter Lef Date: Sun, 16 Apr 2023 04:15:22 -0400 Subject: [PATCH 66/75] Fix: header directories in Unix build script --- build_odin.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build_odin.sh b/build_odin.sh index 8f5ce0525..62943732f 100755 --- a/build_odin.sh +++ b/build_odin.sh @@ -4,12 +4,14 @@ 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++" if [ -d ".git" ]; then @@ -146,7 +148,7 @@ build_odin() { 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 } From af63eff8d738b0c1d6869510b14e5abde84a2c48 Mon Sep 17 00:00:00 2001 From: Andrea Piseri Date: Sun, 16 Apr 2023 15:01:30 +0200 Subject: [PATCH 67/75] improve code generation for `intrinsics.unaligned_load/store` on `#simd` types the default implementation calls memcpy on an `alloca` constant, which seems to heavily confuse the optimizer and produces overall suboptimal code. Introducing this specialization simplifies the intermediate representation produced, resulting in more efficient code. --- src/llvm_backend_proc.cpp | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp index 02748663b..5e709b0bf 100644 --- a/src/llvm_backend_proc.cpp +++ b/src/llvm_backend_proc.cpp @@ -2363,9 +2363,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 +2379,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: From 0ec4e8d5d4d3712955eb60d71da0a9db4663deb5 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 18 Apr 2023 15:17:16 +0100 Subject: [PATCH 68/75] Inline static map calls for map get, and improve readability of the LLVM IR --- src/llvm_backend.cpp | 80 ++++++++++++++++++++++++++++++-------------- 1 file changed, 54 insertions(+), 26 deletions(-) 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; From 30fa8f8ac2cd19442e027042a3b0031f294b9cd2 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 18 Apr 2023 16:08:54 +0100 Subject: [PATCH 69/75] Add missing enum --- src/llvm_backend.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/llvm_backend.hpp b/src/llvm_backend.hpp index 4a78ca3a9..73e125f41 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, From 843eaf8893e3a7df9645c0bcba86c71a01a14765 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 18 Apr 2023 17:20:50 +0100 Subject: [PATCH 70/75] Fix race condition with -use-separate-modules due to type determination --- src/llvm_backend.hpp | 8 +++++--- src/llvm_backend_general.cpp | 6 ++++++ src/llvm_backend_utility.cpp | 7 +++++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/llvm_backend.hpp b/src/llvm_backend.hpp index 73e125f41..964195223 100644 --- a/src/llvm_backend.hpp +++ b/src/llvm_backend.hpp @@ -139,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_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; } From fa42a788c8a770060fcffa6a02a246185eaafda7 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Tue, 18 Apr 2023 18:24:27 +0200 Subject: [PATCH 71/75] Preserve port when calling `net.resolve` with hostname:port. --- core/net/dns.odin | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 } From 13c321b8fba9ab4bce2a2e715f04c22a0fb65927 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 19 Apr 2023 15:31:51 +0100 Subject: [PATCH 72/75] Fix missing cast in `array_elems` --- core/runtime/core_builtin.odin | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/core/runtime/core_builtin.odin b/core/runtime/core_builtin.odin index 84fe5e522..4c96cd34a 100644 --- a/core/runtime/core_builtin.odin +++ b/core/runtime/core_builtin.odin @@ -317,6 +317,8 @@ append_elem :: proc(array: ^$T/[dynamic]$E, arg: E, loc := #caller_location) -> if array == nil { return 0 } + array := (^Raw_Dynamic_Array)(array) + when size_of(E) == 0 { array.len += 1 return 1 @@ -344,6 +346,7 @@ append_elems :: proc(array: ^$T/[dynamic]$E, args: ..E, loc := #caller_location) if array == nil { return 0 } + array := (^Raw_Dynamic_Array)(array) arg_len := len(args) if arg_len <= 0 { @@ -360,13 +363,12 @@ append_elems :: proc(array: ^$T/[dynamic]$E, args: ..E, loc := #caller_location) } arg_len = min(cap(array)-len(array), arg_len) if arg_len > 0 { - a := (^Raw_Dynamic_Array)(array) when size_of(E) != 0 { - data := ([^]E)(a.data) + data := ([^]E)(array.data) assert(condition=data != nil, loc=loc) intrinsics.mem_copy(&data[a.len], raw_data(args), size_of(E) * arg_len) } - a.len += arg_len + array.len += arg_len } return arg_len } From 2d699fd13bb4bb15e9a36b0b1fe44d274b538f3e Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 19 Apr 2023 15:34:40 +0100 Subject: [PATCH 73/75] Fix again append on zero sized types --- core/runtime/core_builtin.odin | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core/runtime/core_builtin.odin b/core/runtime/core_builtin.odin index 4c96cd34a..4b152e7cc 100644 --- a/core/runtime/core_builtin.odin +++ b/core/runtime/core_builtin.odin @@ -317,9 +317,8 @@ append_elem :: proc(array: ^$T/[dynamic]$E, arg: E, loc := #caller_location) -> if array == nil { return 0 } - array := (^Raw_Dynamic_Array)(array) - when size_of(E) == 0 { + array := (^Raw_Dynamic_Array)(array) array.len += 1 return 1 } else { @@ -346,7 +345,6 @@ append_elems :: proc(array: ^$T/[dynamic]$E, args: ..E, loc := #caller_location) if array == nil { return 0 } - array := (^Raw_Dynamic_Array)(array) arg_len := len(args) if arg_len <= 0 { @@ -354,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 { @@ -363,12 +362,13 @@ append_elems :: proc(array: ^$T/[dynamic]$E, args: ..E, loc := #caller_location) } arg_len = min(cap(array)-len(array), arg_len) if arg_len > 0 { + a := (^Raw_Dynamic_Array)(array) when size_of(E) != 0 { - data := ([^]E)(array.data) + data := ([^]E)(a.data) assert(condition=data != nil, loc=loc) intrinsics.mem_copy(&data[a.len], raw_data(args), size_of(E) * arg_len) } - array.len += arg_len + a.len += arg_len } return arg_len } From 6726df4d58b2538014b1e9487eddd8de26bc89fa Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 20 Apr 2023 11:20:15 +0100 Subject: [PATCH 74/75] Allow aliasing foreign import name --- src/check_expr.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/check_expr.cpp b/src/check_expr.cpp index de9a6b911..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: From b2b88f1d99c497f152485869b3f155b965e813bc Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 20 Apr 2023 11:27:36 +0100 Subject: [PATCH 75/75] Unify `foreign import` for `vendor:sdl2` --- vendor/sdl2/sdl2.odin | 7 ++++--- vendor/sdl2/sdl_audio.odin | 6 ------ vendor/sdl2/sdl_blendmode.odin | 6 ------ vendor/sdl2/sdl_cpuinfo.odin | 6 ------ vendor/sdl2/sdl_events.odin | 6 ------ vendor/sdl2/sdl_gamecontroller.odin | 6 ------ vendor/sdl2/sdl_gesture_haptic.odin | 6 ------ vendor/sdl2/sdl_hints.odin | 6 ------ vendor/sdl2/sdl_joystick.odin | 6 ------ vendor/sdl2/sdl_keyboard.odin | 6 ------ vendor/sdl2/sdl_keycode.odin | 1 - vendor/sdl2/sdl_log.odin | 6 ------ vendor/sdl2/sdl_messagebox.odin | 6 ------ vendor/sdl2/sdl_metal.odin | 6 ------ vendor/sdl2/sdl_mouse.odin | 6 ------ vendor/sdl2/sdl_mutex.odin | 6 ------ vendor/sdl2/sdl_pixels.odin | 6 ------ vendor/sdl2/sdl_rect.odin | 6 ------ vendor/sdl2/sdl_render.odin | 6 ------ vendor/sdl2/sdl_rwops.odin | 6 ------ vendor/sdl2/sdl_stdinc.odin | 6 ------ vendor/sdl2/sdl_surface.odin | 6 ------ vendor/sdl2/sdl_system.odin | 6 ------ vendor/sdl2/sdl_syswm.odin | 6 ------ vendor/sdl2/sdl_thread.odin | 6 ------ vendor/sdl2/sdl_timer.odin | 6 ------ vendor/sdl2/sdl_touch.odin | 6 ------ vendor/sdl2/sdl_video.odin | 6 ------ vendor/sdl2/sdl_vulkan.odin | 6 ------ 29 files changed, 4 insertions(+), 166 deletions(-) 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

_7wj#Nc;Wl#|Not!bsj#T#?AlF%fJ!EKmC9V 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
h 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