# 2j      !"#$%&' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ ABCDEFGHIJKLMNOPQRSTUVWXY Z![!\"]"^#_$`%a%b&c&d'e'f(g)h*i+j,k-l-m.n.o.p.q.r.s.t.u/v/w/x/y/z/{/|/}/~/////////////////////0011123345555556666667777777777777777777899:;<=>?????????@AABBCCDDDDEFGGHHIIJJJJJKKLLMNNOOOPPPPPPQRRSSSSSTTTTTTTTTUUUU U V V W WWXXXXXXYZ[[[[\\\\\ ]!^"^#_$`%a&b'b(b)b*b+c,c-c.c/c0c1c2d3d4e5e6f7g8g9g:g;h<h=h>i?j@kAlBmCmDmEmFmGmHnIoJpKpLpMpNpOpPpQpRpSpTpUpVqWrXrYsZs[s\s]t^t_t`taubucuduevfwgwhwiwjxkxlxmxnyozp{q{r{s{t|u}v~w~x~y~z{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~             !!!!!!!!!!!!!)))))))))""""""""" " " " " """"""""""""""""""" "!"""#"$"%"&"'"(")"*"+","-"."/"0"1"2"3"4"5"6"7"8"9":";"<"=">"?"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o"p"q"r"s"t"u"v"w"x"y"z"{"|"}"~""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " " " " """"""""""""""""""" "!"""#"$"%"&"'"(")"*"+","-"."/"0"1"2"3"4"5"6"7"8"9":";"<"=">"?"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o"p"q"r"s"t"u"v"w"x"y"z"{"|"}"~""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""      !"#$%&'()*+,-./0123|4|5|6|7|8|9|:|;|<|=|>|?|@|A|B|C|D|E|F|G|H|I|J|K|L|MzNzOzPzQzRzSzTzUzVzWzXzYzZz[z\z]z^z_z`zazbzczdvevfvgvhvivjvkvlvmvnvovpvqvrvsvtvuvvvwvxvyvzv{v|(}(~(((((((((((((##########$$$$$$$$$$%%%%%%%%%%%%%&&&&&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$''''''''.................................. . . . . ................... .!.".#.$.%.& ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m nopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6} 7} 8} 9} :} ;} <} =} >} ?} @} A} B} C} D} E} F} G} H} I} J} K} L} M} Ny Oy Py Qy Ry Sy Ty Uy Vy Wy Xy Yy Zy [y \y ]y ^y _y `y ay by cy dy eq fq gq hq iq jq kq lq mq nq oq pq qq ro so to uo vo wo xo yo zo {o |o }( ~( ( ( ( ( n n n n n n n n n ) ) ) ) ) ) l l l l l l l l l * * * * * * k k k k k k k k k k k k k k k k k k k k k k k k k + + + + + + + + + + j j j j j j j j j j , , , , , , , , i i i i i i i i i i - - - - - - a a a a a a a a a a a . . . . . . _ _ _ _ _ _ _ _ _ / / / / / / 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 !2 "2 #2 $2 %2 &2 '2 (2 )2 *2 +2 ,2 -2 .Z /Z 0Z 1Z 2Z 3Z 4Z 5Z 6Z 7Z 8Z 9Z :3 ;3 <3 =3 >3 ?3 @3 A3 BY CY DY EY FY GY HY IY JY KY LY MF NF OF PF QF RF SF TF UF VF WF XF Y4 Z4 [4 \4 ]4 ^4 _5 `5 a5 b5 c5 d5 e5 f5 g5 h5 i5 j5 k5 l5 m5 n5 o5 p5 q5 r6 s6 t6 u6 v6 w6 x6 y6 z6 {6 |6 }B ~B B B B B B B B B B B 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 Q Q Q Q Q Q Q Q Q : : : : : : : : : ; ; ; ; ; ; ; ; ; ; ; ; A A A A A A A A A A A A A A A A A A A < < < < < < < < < < < < < = = = = = = = = = = = = = = M M M M M M M M M > > > > > > > > > ? ? ? ? ? ? ? ? ? ? ? ? @ @ @ @ @ @ @ !@ "@ #@ $@ %@ &@ '@ (@ )@ *@ +A ,A -A .A /A 0A 1A 2A 3A 4A 5A 6A 7A 8A 9' :' ;' <' =' >' ?' @' A' B' C' DB EB FB GB HB IB JB KB LB MB NB OC PC QC RC SC TC UC VC WC XC YC ZC [C \& ]& ^& _& `& a& b& c& d& e& f& g& h& i& j& k& l& m& n& o& p& q& r& s& t u v w x y z { | } ~  E E E E E E E E E E E E D D D D D D D D D D E E E E E E E E E F F F F F F F F F F F F % % % % % % % % % % % % % % % G G G G G G G G G G G H H H H H H H H H H H H H H H # # # # # # # # # # # # # # # " " " " " " " " " " " " I I I I I I I I I J J J J J J J J J J J J J J J J J J !J "J #J $! %! &! '! (! )! *! +! ,! - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ?K @K AK BK CK DK EK FK GK HK IK JK KL LL ML NL OL PL QL RL SL TM UM VM WM XM YM ZM [M \M ]N ^N _N `N aN bN cN dN eN f g h i j k l m n o p q r s t u v w x y z { | } ~          O O O O O O O O O O O O P P P P P P P P P Q Q Q Q Q Q Q Q Q R R R R R R R R R S S S S S S S S S T T T T T T T T T U U U U U U U U U V V V V V V V V V V V V V V V V V V V V V V V V V V V V W W W W W W W W W X X X X X X X X X Y Y Y Y Y Y Y YYYY     ZZZZZZZZZZZZZ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI[J[K[L[M[N[O[P[Q[R[S[T[U[V[W[X[Y[Z[[\]^_`abc\d\e\f\g\h\i\j\k\l\m\n\o]p]q]r]s]t]u]v]w]x]y]z]{]|]}]~]]]]]]]]]^^^^^^^^^----------_________```````````````aaaaaaaaaaaa`````````bbbbbb     hhhhhhhh h!h"h#h$h%h&h'h(h)h*h+h,h-h.h/h0h1h2h3h4c5c6c7c8c9c:c;c<c=c>c?c@cAcBCDEFGHIJKLMNOPQRSTUVWXYKZK[K\K]K^K_K`KaKbKcKdKeKfKgKhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}U~UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUeeeeeeeeeeeeeeeeeeeeeeefffffffffffgggggggggggggggggggggggggggggggggggg^^^^^^^^^^^^^^^^ ^ ^ ^ h hhhhhhhhhhhh !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'f(f)f*f+f,f-f.i/i0i1i2i3i456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWjXjYjZj[j\j]j^j_j`jajbkckdkekfkgkhkikjkklllmlnlolplqlrlsltlulvlwlxlylzl{l|l}l~lllllllllllllllllmmmmmmmmmmmnnnnnnnnnoooooooooooooooooooooppppppppppppqqqqqqqqqqqq\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \ \ \ \ \\\\\\\\\\\\\\\\\\\ \!\"\#\$\%\&\'\(\)\*r+r,r-r.r/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rABCDEFGHIJKLWMWNWOWPWQWRWSWTWUWVWWWXWYWZW[W\W]W^W_W`WaWbWcWdWeWfWgWhWiWjskslsmsnsospsqsrssstsuvwxyz{|}~tttttttttttttttuuuuuuuuuuuuuvvvvvvvvvvvvv         wwwwwwwwwwxxxxxxxxxxxxxxyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzz{{{{{ { { { { {{{{{{||||||||||||| |!|"|#}$}%}&}'}(})}*}+},}-}.}/}0}1}2}3}4}5}6}7}8}9}:};}<}=}>}?}@}A}B}C}D}E}F}G}H}I}J}K}L}M}N}O}P}Q}R}S}T}U}V}W}X}Y}Z}[}\}]}^~_~`~a~b~c~d~e~f~g~h~i~j~k~l~m~n~o~p~q~r~s~t~u~v~w~x~yz{|}~     eeeeeeeeeeeeeeeee e!e"e#e$e%&'()*+,-./0123456789:;O<O=O>O?O@OAOBOCODOEOFOGOHOIOJOKOLOMONOOOPOQOROSOTOUOVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     // /!/"/#/$/%/&/'/(/)/*/+/,/-/.///0/1/2/3/4/5/6/7/8/9/:/;/</=/>/?/@/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/[/\/]/^/_/`/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/{/|/}/~////////////////////////////////////////////////////////////////////////////////////////////////////////                                                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X YZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmggggggggggggggggggggggggggggggggggg     b b!b"b#b$b%b&b'b(b)b*b+b,b-b.b/b0b1b2b3b4b5b6b7b8b9b:b;b<b=b>b?b@bAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~]]]]]]]]]]PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNN N N N N NNNN !"#$L%L&L'L(L)L*L+L,L-L.L/L0L1L2L3L4L5L6789:;<=>?@AJBJCJDJEJFJGJHJIJJJKJLJMJNJOJPJQJRJSJTJUJVJWJXJYJZJ[J\J]J^J_J`JaJbJcJdJeJfJgJhJiJjJkJlJmJnJoJpJqJrJsHtHuHvHwHxHyHzH{H|H}H~HHHHHHHHHDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p ppppppppppppppppppp p!p"p#p$p%p&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                    !!!!!!!!!! ! ! ! ! !!!!!!!!!!!!!!!!!!! !!!"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2!3!4!5!6!7!8!9!:!;!<!=!>!?!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""""""""" " " " " """"""""""""""""""" "!"""#"$"%"&"'"(")"*"+","-"."/"0"1"2"3"4"5"6"7"8"9":";"<"=">"?"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o"p"q"r"s"t"u"v"w"x"y"z"{"|"}"~"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""########## # # # # ################### #!#"###$#%#&#'#(#)#*#+#,#-#.#/#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#^#_#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z#{#|#}#~#################################################################################################################################$$$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$$$$$$$ $!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$Ir$Jr$Kr$Lr$Mr$Nr$Or$Pr$Qr$Rr$Sr$Tr$Ur$Vr$Wr$Xr$Yr$Zr$[r$\r$]r$^r$_r$`I$aI$bI$cI$dI$eI$fI$gI$hI$iI$jI$kI$lI$mI$nI$oI$pI$qI$rI$sI$tI$uI$vI$wI$xI$yI$zI${I$|I$}I$~I$9$9$9$9$9$9$9$9$9$9$9$9$9$9$9$9$9$9$9$9$9$9$9$8$8$8$8$8$8$8$8$8$8$8$8$8$8$8$4$4$4$4$4$4$4$4$4$4$4$4$4$4$4$2$2$2$2$2$2$2$2$2$2$2$2$2$+$+$+$+$+$+$+$+$+$+$+$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$ $ $ $ $ $ $ $ $ $ $ $ $ $ $$$$$$$$$$$$$$$$$R$R$R$R$R$R$R%R%R%R%R%R%R%R%R%R% R% R% R% R% R%%%%%%%%%%%%%%%%%%% %!%"G%#G%$G%%G%&G%'G%(G%)G%*G%+G%,G%-G%.G%/G%0G%1G%2G%3G%4G%5G%6G%7G%8G%9G%:%;%<%=%>%?%@%A%B%C%D%E?%F?%G?%H?%I?%J?%K?%L?%M?%N?%O?%P?%Q?%R?%S?%T?%U?%V?%W?%X?%Y?%Z?%[?%\?%]?%^?%_?%`?%a?%b?%c?%d?%e?%f?%g?%h?%i?%j?%k?%l?%m?%n?%o?%p?%q?%r?%s?%t?%u?%v?%w?%x?%y?%z?%{?%|?%}?%~?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%?%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%%%%%%%%%%%%%%%%%>%>%>%>%>%>%>%>%>%>%>%>%>%=%=%=%=%=%=%=%=%=%=%=%=%=%=%=%=&=&=&=&=&=&=&=&=&=& =& =& <& <& <&<&<&<&<&<&<&<&<&<&;&;&;&;&;&;&;&;&;& ;&!;&";&#;&$;&%;&&;&';&(;&):&*:&+:&,:&-:&.:&/:&0:&1:&2:&3:&4:&5:&6:&7:&8:&97&:7&;7&<7&=7&>7&?7&@7&A7&B7&C7&D7&E7&F7&G7&H7&I7&J7&K7&L7&M7&N7&O7&P7&Q7&R7&S7&T7&U7&V7&W7&X7&Y7&Z7&[7&\7&]7&^7&_7&`7&a7&b7&c7&d7&e7&f7&g7&h7&i7&j7&k7&l7&m7&n7&o7&p7&q7&r7&s7&t7&u7&v7&w7&x7&y7&z7&{7&|7&}7&~7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7'7'7'7'7'7'7'7'7'7' 7' 7' 7' 7' 7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7' 7'!7'"7'#7'$7'%7'&7''7'(7')7'*7'+7',7'-7'.7'/7'07'17'27'37'47'57'67'77'87'97':7';7'<'='>'?'@'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O'P'Q'R'S'T'U'V'W'X'Y'Z'['\']'^'_'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'r's't'u'v'w'x'y'z'{'|'}'~'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((( ( ( ( ( ((((((((((((((((((( (!("(#($(%(&('((()(*(+(,(-(.(/(0(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(g(h(i(j(k(l(m(n(o(p(q(r(s(t(u(v(w(x(y(z({(|(}(~((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()))))))))) ) ) ) ) ))))))))))))))))))) )!)")#)$)%)&)')()))*)+),)-).)/)0)1)2)3)4)5)6)7)8)9):);)<)=)>)?)@)A)B)C)D)E)F)G)H)I)J)K)L)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)f)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)z){)|)})~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))********** * * * * ******************* *!*"*#*$*%*&*'*(*)***+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*>*?*@*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*[*\*]*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*{*|*}*~**********************6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6********************++++++++++ + + 3+ 3+ 3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+ 3+!3+"3+#3+$3+%3+&3+'3+(3+)1+*1++1+,1+-1+.1+/1+01+11+21+31+41+51+61+71+81+91+:1+;1+<1+=1+>1+?1+@1+A1+B1+C1+D1+E1+F1+G1+H1+I1+J1+K1+L1+M1+N1+O1+P1+Q1+R1+S+T+U+V+W+X+Y+Z+[+\+]+^+_+`+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+{+|+}+~+++++++++++++++++++++++X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,, , , , , ,,,,,,,,,,,,,,,,,,, ,!,",#5,$5,%5,&5,'5,(5,)5,*5,+5,,5,-5,.5,/5,05,15,25,35,45,55,65,75,85,95,:5,;5,<5,=5,>5,?5,@5,A5,B5,C5,D5,E5,F5,G5,H5,I5,J5,K5,L5,M5,N5,O5,P5,Q5,R5,S5,T5,U5,V5,W5,X5,Y5,Z5,[5,\5,]5,^5,_5,`5,a5,b5,c5,d5,e5,f5,g5,h5,i5,j5,k5,l5,m5,n5,o5,p0,q0,r0,s0,t0,u0,v0,w0,x0,y0,z0,{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 -1 -2 -3 -4 -5 -6 -7 -8 -9 -: -; -< -= -> -? -@ -A -B -C -D -E -F -G -H -I -J -K -L -M -N -O -P -Q -R -S -T -U -V -W -X -Y -Z -[ -\ -] -^ -_ -` -a -b -c -d -e -f -g -h -i -j -k -l -m -n -o -p -q -r -s -t -u -v -w -x -y -z -{ -| -} -~ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . . . . . . . . . . . . . . ................... .!.".#.$.%.&.'.(.).*.+.,.-.../.0.1.2.3.4.5.6.7.8.9.:.;.<.=.>.?.@.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.[.\.].^._.`.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.{.|.}.~...................................................................................................................T.T.T.T.T.T.T.T.T.T.T.T.T.T.T/T/T/T/T/T/T/T/T/T/ T/ T/ T/ T/ T/T/T/T/T/T/T/T/T/T/T/T/T/T/T/T/T/T/T/ T/!T/"T/#T/$T/%T/&T/'T/(T/)T/*T/+T/,T/-T/.T//T/0T/1T/2T/3T/4T/5T/6T/7T/8T/9T/:T/;T/<T/=T/>T/?T/@T/AT/BT/CT/DT/ET/FT/GT/HT/IT/JT/KT/LT/MT/NT/O/P/Q/R/S/T/U/V/W/X/Y/Z/[/\/]/^/_/`/a/b/c/d/e/f/g/h/i/j/k/l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /{ /| /} /~ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /////0000000000 0 0 0 0 0000000000000V0V0V0V0V0V0 V0!V0"V0#V0$V0%V0&V0'V0(V0)V0*V0+V0,V0-V0.0/000102030405060708090:0;0<0=0>0?0@0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0c0c0c0c0c1c1c1c1c1c1c1c1c1c1 c1 c1 c1 c1 c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1 c1!c1"c1#c1$c1%c1&c1'c1(c1)c1*c1+c1,c1-c1.c1/c10c11c12c13c14c15c16c17c18c19c1:c1;c1<c1=c1>c1?c1@c1Ac1Bc1Cc1Dc1Ec1Fc1Gc1Hc1Ic1Jc1Kc1Lc1Mc1Nc1Oc1Pc1Qc1Rc1Sc1Tc1Uc1Vc1Wc1Xc1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1od1pd1qd1rd1sd1td1ud1vd1wd1xd1yd1zd1{d1|d1}d1~d1d1d1d1d1d1111111111111111[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[2[2[2[2[2[2[2[2[2[2 [2 [2 [2 [2 [2[2[2[2[2[2[2[2[2[2[2[2[2[2[2[2[2[2[2 [2![2"[2#[2$[2%[2&[2'[2([2)[2*[2+[2,[2-[2.[2/202122232425262728292:2;2<2=2>2?2@2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e2f2g2h2iNone("#%&'-./1789;=>?FHIMSUVX_dghklmqP vulkanDA class for types which can be marshalled from a C style structure.vulkanRead an a* and any other pointed to data from memoryvulkanDA class for types which can be marshalled into a C style structure.vulkanAllocates a C type structure and all dependencies and passes it to a continuation. The space is deallocated when this continuation returns and the C type structure must not be returned out of it.vulkanWrite a C type struct into some existing memory and run a continuation. The pointed to structure is not necessarily valid outside the continuation as additional allocations may have been made.vulkanAllocate space for an "empty" a6 and populate any univalued members with their value.vulkanoAnd populate any univalued members with their value, run a function and then clean up any allocated resources.vulkanVThe size of this struct, note that this doesn't account for any extra pointed-to datavulkan+The required memory alignment for this type  None("#%&'-./1789;=>?FHIMSUVX_dghklmq1vulkan.An unpopulated type intended to be used as in 2j (FixedArray n a)5 to indicate that the pointer points to an array of n asvulkanStore a 2k_ in a fixed amount of space inserting a null character at the end and truncating if necessary.If the 2kH is not long enough to fill the space the remaining bytes are unchangedNote that if the 2kD is exactly long enough the last byte will still be replaced with 0vulkanStore a 2k5 in a fixed amount of space, truncating if necessary.If the 2kH is not long enough to fill the space the remaining bytes are unchangedvulkanPeek a 2k" from a fixed sized array of bytesvulkan1Get the pointer to the first element in the arrayvulkanA type restricted 2lsNone("#%&'-./1789;=>?FHIMSUVX_dghklmqYZ[\Z\Y[tNone("#%&'-./1789;=>?FHIMSUVX_dghklmqm]^_`^`]_uNone("#%&'-./1789;=>?FHIMSUVX_dghklmqabcdbdacwNone("#%&'-./1789;=>?FHIMSUVX_dghklmqfghigifhxNone("#%&'-./1789;=>?FHIMSUVX_dghklmq/jklmkmjl{None("#%&'-./1789;=>?FHIMSUVX_dghklmqpqrsqspr~None("#%&'-./1789;=>?FHIMSUVX_dghklmq[vwxywyvxNone("#%&'-./1789;=>?FHIMSUVX_dghklmqz{|}{}z|None("#%&'-./1789;=>?FHIMSUVX_dghklmq~~None("#%&'-./1789;=>?FHIMSUVX_dghklmqNone("#%&'-./1789;=>?FHIMSUVX_dghklmqNone("#%&'-./1789;=>?FHIMSUVX_dghklmqINone("#%&'-./1789;=>?FHIMSUVX_dghklmqNone("#%&'-./1789;=>?FHIMSUVX_dghklmquNone("#%&'-./1789;=>?FHIMSUVX_dghklmq     None("#%&'-./1789;=>?FHIMSUVX_dghklmqơ      None("#%&'-./1789;=>?FHIMSUVX_dghklmq7None("#%&'-./1789;=>?FHIMSUVX_dghklmq)*+,*,)+None("#%&'-./1789;=>?FHIMSUVX_dghklmqc12342413None("#%&'-./1789;=>?FHIMSUVX_dghklmq56786857None("#%&'-./1789;=>?FHIMSUVX_dghklmqΏ9:;<:<9;None("#%&'-./1789;=>?FHIMSUVX_dghklmq%=>?@>@=?None("#%&'-./1789;=>?FHIMSUVX_dghklmqѻNone("#%&'-./1789;=>?FHIMSUVX_dghklmqQNone("#%&'-./1789;=>?FHIMSUVX_dghklmqNone("#%&'-./1789;=>?FHIMSUVX_dghklmq}None("#%&'-./1789;=>?FHIMSUVX_dghklmqNone("#%&'-./1789;=>?FHIMSUVX_dghklmq٩None("#%&'-./1789;=>?FHIMSUVX_dghklmq?      None("#%&'-./1789;=>?FHIMSUVX_dghklmq    None("#%&'-./1789;=>?FHIMSUVX_dghklmqk !"#!# " None("#%&'-./1789;=>?FHIMSUVX_dghklmq)*+,*,)+ None("#%&'-./1789;=>?FHIMSUVX_dghklmq56786857None("#%&'-./1789;=>?FHIMSUVX_dghklmq-<=>?=?<>None("#%&'-./1789;=>?FHIMSUVX_dghklmq@ABCAC@BNone("#%&'-./1789;=>?FHIMSUVX_dghklmqFvulkanAnnotate a type with a nameFFNone("#%&'-./1789;=>?FHIMSUVX_dghklmqeGHIJKLIHGJKLNone("#%&'-./1789;=>?FHIMSUVX_dghklmqHMvulkan2A class for initializing things with all zero data.Any instance should satisfy the following law: new zero = calloc  or  with zero = withZeroCStruct i.e. Marshaling zeroX to memory yeilds only zero-valued bytes, except for structs which require a "type" tagMNMNNone("#%&'-./1789;=>?FHIMSUVX_dghklmq_vulkanrVkShaderFloatControlsIndependence - Enum specifying whether, and how, shader float controls can be set separatelySee Alsok, [avulkana: specifies that shader float controls for all bit widths must be set identically.bvulkanb: specifies that shader float controls for all bit widths can be set independently.cvulkancA specifies that shader float controls for 32-bit floating point can) be set independently; other bit widths must" be set identically to each other._cba`_cba`cbaNone("#%&'-./1789;=>?FHIMSUVX_dghklmqVjvulkan:VkSemaphoreType - Sepcifies the type of a semaphore objectSee Alsomlvulkanl specifies a timeline semaphore type that has a monotonically increasing 64-bit unsigned integer payload indicating whether the semaphore is signaled with respect to a particular reference value. When created, the semaphore payload has the value given by the  initialValue field of m.mvulkanm specifies a binary semaphore type that has a boolean payload indicating whether the semaphore is currently signaled or unsignaled. When created, the semaphore is in the unsignaled state.jmlkjmlkmlNone("#%&'-./1789;=>?FHIMSUVX_dghklmq?tvulkanEVkSamplerReductionMode - Specify reduction mode for texture filteringSee Also^vvulkanv specifies that texel values are combined by taking the component-wise maximum of values in the footprint with non-zero weights.wvulkanw specifies that texel values are combined by taking the component-wise minimum of values in the footprint with non-zero weights.xvulkanx specifies that texel values are combined by computing a weighted average of values in the footprint, using weights as specified in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-unnormalized-to-integerthe image operations chapter.txwvutxwvuxwvNone("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanVkDriverId - Khronos driver IDs DescriptionNote&Khronos driver IDs may be allocated by vendors at any time. There may be multiple driver IDs for the same vendor, representing different drivers (for e.g. different platforms, proprietary or open source, etc.). Only the latest canonical versions of this Specification, of the corresponding vk.xml) API Registry, and of the corresponding  vulkan_core.h header file must* contain all reserved Khronos driver IDs.IOnly driver IDs registered with Khronos are given symbolic names. There may% be unregistered driver IDs returned.See Alsoe, [None("#%&'-./1789;=>?FHIMSUVX_dghklmq&vulkanGVkTessellationDomainOrigin - Enum describing tessellation domain origin DescriptionThis enum affects how the  VertexOrderCw and VertexOrderCcwx tessellation execution modes are interpreted, since the winding is defined relative to the orientation of the domain.See AlsoUvulkana specifies that the origin of the domain space is in the lower left corner, as shown in figure  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#img-tessellation-topology-ll.vulkana specifies that the origin of the domain space is in the upper left corner, as shown in figure  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#img-tessellation-topology-ul.None("#%&'-./1789;=>?FHIMSUVX_dghklmq6vulkan>VkSamplerYcbcrRange - Range of encoded values in a color space Description8The formulae for these conversions is described in the  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion-rangeexpandSampler Y 2CBCR Range Expansion section of the  Vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#texturesImage Operations chapter.%No range modification takes place if  ycbcrModel is ; the  ycbcrRange field of X is ignored in this case.See Also, Xvulkan specifies that headroom and foot room are reserved in the numerical range of encoded values, and the remaining values are expanded according to the ITU narrow range  quantization rules.vulkan specifies that the full range of the encoded values are valid and interpreted according to the ITU full range  quantization rules.None("#%&'-./1789;=>?FHIMSUVX_dghklmqW'vulkanFVkSamplerYcbcrModelConversion - Color model component of a color space DescriptionG specifies that the input values to the conversion are unmodified.T specifies no model conversion but the inputs are range expanded as for Y 2CBCR. specifies the color model conversion from Y 2CBCR to R 2G 2B 2 defined in BT.709 and described in the BT.709 Y CBCR conversion  section of the  Yhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#data-format!Khronos Data Format Specification. specifies the color model conversion from Y 2CBCR to R 2G 2B 2 defined in BT.601 and described in the BT.601 Y CBCR conversion  section of the  Yhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#data-format!Khronos Data Format Specification. specifies the color model conversion from Y 2CBCR to R 2G 2B 2 defined in BT.2020 and described in the BT.2020 Y CBCR conversion  section of the  Yhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#data-format!Khronos Data Format Specification.In the )VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_*Y color models, for the input to the sampler Y 2CBCR range expansion and model conversion:Jthe Y (Y 2 luma) channel corresponds to the G channel of an RGB image.cthe CB (CB or U  blue color difference) channel corresponds to the B channel of an RGB image.bthe CR (CR or V  red color difference) channel corresponds to the R channel of an RGB image.Nthe alpha channel, if present, is not modified by color model conversion.aThese rules reflect the mapping of channels after the channel swizzle operation (controlled by X:: components).Note[For example, an YUVA  32-bit format comprising four 8-bit channels can be implemented as  with a component mapping: components.a = t components.r = t components.g = t components.b = tSee Also, X None("#%&'-./1789;=>?FHIMSUVX_dghklmq^avulkanEVkPointClippingBehavior - Enum specifying the point clipping behaviorSee AlsoU, [vulkana specifies that the primitive is discarded only if the vertex lies outside any user clip plane.vulkan specifies that the primitive is discarded if the vertex lies outside any clip plane, including the planes bounding the view volume.None("#%&'-./1789;=>?FHIMSUVX_dghklmqevulkan]VkDescriptorUpdateTemplateType - Indicates the valid usage of the descriptor update templateSee AlsoIvulkan_ specifies that the descriptor update template will be used for push descriptor updates only.vulkan] specifies that the descriptor update template will be used for descriptor set updates only.None("#%&'-./1789;=>?FHIMSUVX_dghklmqkvulkan9VkChromaLocation - Position of downsampled chroma samplesSee Also, Xvulkan specifies that downsampled chroma samples are located half way between each even luma sample and the nearest higher odd luma sample.vulkan` specifies that downsampled chroma samples are aligned with luma samples with even coordinates.None("#%&'-./1789;=>?FHIMSUVX_dghklmqrvulkanTVkVertexInputRate - Specify rate at which vertex attributes are pulled from buffersSee Also7vulkanQ specifies that vertex attribute addressing is a function of the instance index.vulkanO specifies that vertex attribute addressing is a function of the vertex index. None("#%&'-./1789;=>?FHIMSUVX_dghklmq{vulkanVkVendorId - Khronos vendor IDs DescriptionNoteKhronos vendor IDs may be allocated by vendors at any time. Only the latest canonical versions of this Specification, of the corresponding vk.xml( API Registry, and of the corresponding  vulkan_core.h header file must) contain all reserved Khronos vendor IDs.Only Khronos vendor IDs are given symbolic names at present. PCI vendor IDs returned by the implementation can be looked up in the PCI-SIG database.See Also!No cross-references are available !None("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkan*VkSystemAllocationScope - Allocation scope DescriptionT specifies that the allocation is scoped to the duration of the Vulkan command.v specifies that the allocation is scoped to the lifetime of the Vulkan object that is being created or used.C specifies that the allocation is scoped to the lifetime of a / or p object.S specifies that the allocation is scoped to the lifetime of the Vulkan device.U specifies that the allocation is scoped to the lifetime of the Vulkan instance.Most Vulkan commands operate on a single object, or there is a sole object that is being created or manipulated. When an allocation uses an allocation scope of  or G, the allocation is scoped to the object being created or manipulated.When an implementation requires host memory, it will make callbacks to the application using the most specific allocator and allocation scope available:YIf an allocation is scoped to the duration of a command, the allocator will use the  allocation scope. The most specific allocator available is used: if the object being created or manipulated has an allocator, that object s allocator will be used, else if the parent /; has an allocator it will be used, else if the parent /- has an allocator it will be used. Else,+If an allocation is associated with a p or /) object, the allocator will use the u allocation scope. The most specific allocator available is used (cache, else device, else instance). Else,If an allocation is scoped to the lifetime of an object, that object is being created or manipulated by the command, and that object s type is not / or /5, the allocator will use an allocation scope of e. The most specific allocator available is used (object, else device, else instance). Else,pIf an allocation is scoped to the lifetime of a device, the allocator will use an allocation scope of S. The most specific allocator available is used (device, else instance). Else,If the allocation is scoped to the lifetime of an instance and the instance has an allocator, its allocator will be used with an allocation scope of .kOtherwise an implementation will allocate memory through an alternative mechanism that is unspecified.See Also )None("#%&'-./1789;=>?FHIMSUVX_dghklmqgvulkan\VkSubpassContents - Specify how commands in the first subpass of a render pass are providedSee Alsoc, , vulkan specifies that the contents are recorded in secondary command buffers that will be called from the primary command buffer, and 9 is the only valid command on the command buffer until  or .vulkan specifies that the contents of the subpass will be recorded inline in the primary command buffer, and secondary command buffers must$ not be executed within the subpass.gg"None("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkan*VkStructureType - Vulkan structure types (sType) Description8Each value corresponds to a particular structure with a sTypeD member with a matching name. As a general rule, the name of each O value is obtained by taking the name of the structure, stripping the leading Vk%, prefixing each capital letter with _P, converting the entire resulting string to upper case, and prefixing it with VK_STRUCTURE_TYPE_#. For example, structures of type 0 correspond to a  of , and thus its sType member must* equal that when it is passed to the API. The values  and v are reserved for internal use by the loader, and do not have corresponding Vulkan structures in this Specification.See Also, , , , , , , , , , , , , , , , , , ,  , c, h, c, h, , , , K, G, K, G, , X, ?, , , b, 5, S, b, , , , , , , , ,  , 7, , , , ,  , , , , , , , , , , , , , , , ,  , ,   , \ ,   , V , \ , \, I,  , , , J, J, L, , , J, J, , b, v, ,  , , D,  , !, ", #, r$, %, &, ', (, ), *, +, ,, *-, M., /, O0, 1, 2, 3, Q4, 5, P6, N7, 8, P9, O:, O;, <, R=, ,>, ?, @, A, TB, gC, gD, 6E, F, G, H, I, J, K, 7L, M, N, O, P, Q, 0, R, S, T, fU, TV, 5W, SX, Y, XZ, S[, `\, ], ^, _, 1`, a, Ub, c, d, e, f, g, h, i, j, k, l, m, n,  o, p, 3q, Jr, 3s, 5t, Hu, Hv, w, x, y, z, {, b|, }, S~, , , , , , , , , , , F, a, , , , b, , q, , , , , , , , , , , , d, \, \, , , , , e, , , P, N, P, , R, T, k, , , , , , , L, ], P, , T, , g, , , , , , V, , , T, , , W, , W, , , , , , U, , T, D, D, , , , , , , , , ^, X, _, h, i, , }, |, , Y, j, , ,  ,  , l,  ,  , T, E, , , , , , , m, m, , , , n, Z, , , [, [, [, [, o, , 8, , 7, y, , , , , 7, , 7,  ,  ,  ,  ,  , 7, 9, , 7, , , , 7, z, , , , 7, , U, 7, , 7,  ,  ,  !, 7",  #, $, %, &, ', (, ), D*, :+, ,, -, ., T/, 0, 1, 2, 3, 4, g5, 6, 67, c8, 9, U:, W;, <, =, >, =?, @, ^, X, XA, XB, <C, D, E, mF, m, mG, >H, I, J, TK, SL, M, ;N, c, cO, cP, dQ, cR, S, T, U, V, W, X, Y, Z, [, r\, ], m^, _, `, a, b, c, d, e, f,  g, h, i, j, k~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      r~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      None("#%&'-./1789;=>?FHIMSUVX_dghklmqL'vulkan>VkPresentFrameTokenGGP - The Google Games Platform frame tokenValid Usage (Implicit)See Alsovulkan frameToken* is the Google Games Platform frame token. frameToken must be a valid ''None("#%&'-./1789;=>?FHIMSUVX_dghklmq  vulkanRVkValidationFlagsEXT - Specify validation checks to disable for a Vulkan instanceValid Usage (Implicit)See Also, vulkan;VkValidationCheckEXT - Specify validation checks to disableSee Also vulkanpDisabledValidationChecks is a pointer to an array of 9 values specifying the validation checks to be disabled.pDisabledValidationChecks must$ be a valid pointer to an array of disabledValidationCheckCount valid  valuesvulkan/ specifies that shader validation is disabled.vulkan4 specifies that all validation checks are disabled.    None("#%&'-./1789;=>?FHIMSUVX_dghklmq=vulkanaVkValidationFeaturesEXT - Specify validation features to enable or disable for a Vulkan instance Valid UsageIf the pEnabledValidationFeatures array contains , then it must also contain If the pEnabledValidationFeatures array contains  , then it must not contain Valid Usage (Implicit)sType must be TIf enabledValidationFeatureCount is not 0, pEnabledValidationFeatures must( be a valid pointer to an array of enabledValidationFeatureCount valid  valuesIf disabledValidationFeatureCount is not 0, pDisabledValidationFeatures must( be a valid pointer to an array of disabledValidationFeatureCount valid  valuesSee Also, , vulkanFVkValidationFeatureDisableEXT - Specify validation features to disableSee AlsovulkanDVkValidationFeatureEnableEXT - Specify validation features to enableSee AlsovulkanpEnabledValidationFeatures is a pointer to an array of : values specifying the validation features to be enabled.vulkanpDisabledValidationFeatures is a pointer to an array of ; values specifying the validation features to be disabled.vulkan specifies that protection against duplicate non-dispatchable object handles is disabled. This feature is enabled by default.vulkan specifies that core validation checks are disabled. This feature is enabled by default. If this feature is disabled, the shader validation and GPU-assisted validation features are also disabled.vulkan\ specifies that object lifetime validation is disabled. This feature is enabled by default.vulkan` specifies that stateless parameter validation is disabled. This feature is enabled by default.vulkanZ specifies that thread safety validation is disabled. This feature is enabled by default.vulkanS specifies that shader validation is disabled. This feature is enabled by default.vulkan4 specifies that all validation checks are disabled.vulkan) specifies that the layers will process debugPrintfEXTr operations in shaders and send the resulting output to the debug callback. This feature is disabled by default.vulkan specifies that Vulkan best-practices validation is enabled. Activating this feature enables the output of warnings related to common misuse of the API, but which are not explicitly prohibited by the specification. This feature is disabled by default.vulkan specifies that the validation layers reserve a descriptor set binding slot for their own use. The layer reports a value for  l::maxBoundDescriptorSets that is one less than the value reported by the device. If the device supports the binding of only one descriptor set, the validation layer does not perform GPU-assisted validation. This feature is disabled by default.vulkan specifies that GPU-assisted validation is enabled. Activating this feature instruments shader programs to generate additional diagnostic data. This feature is disabled by default."None("#%&'-./1789;=>?FHIMSUVX_dghklmqDvulkanhVkPhysicalDevicePCIBusInfoPropertiesEXT - Structure containing PCI bus information of a physical deviceValid Usage (Implicit)See Also vulkan pciDomain is the PCI bus domain.vulkanpciBus is the PCI bus identifier.vulkan pciDevice is the PCI device identifier.vulkan pciFunction' is the PCI device function identifier.          None("#%&'-./1789;=>?FHIMSUVX_dghklmqS!vulkanJVkDeviceQueueGlobalPriorityCreateInfoEXT - Specify a system wide priority Description$A queue created without specifying  will default to $.Valid Usage (Implicit)See Also, vulkanJVkQueueGlobalPriorityEXT - Values specifying a system-wide queue priority DescriptionPriority values are sorted in ascending order. A comparison operation on the enum values can be used to determine the priority order.See AlsovulkanglobalPriorityG is the system-wide priority associated to this queue as specified by globalPriority must be a valid  value"vulkan"5 is the highest priority. Useful for critical tasks.#vulkan# is above the system default.$vulkan$ is the system default priority.%vulkan%@ is below the system default. Useful for non-interactive tasks. %$#" !%$#"%$#"! |None("#%&'-./1789;=>?FHIMSUVX_dghklmq|tvulkanVkPhysicalDeviceShaderCorePropertiesAMD - Structure describing shader core properties that can be supported by an implementationMembersThe members of the tC structure describe the following implementation-dependent limits: DescriptionIf the t structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Also6vulkanshaderEngineCount{ is an unsigned integer value indicating the number of shader engines found inside the shader core of the physical device.7vulkanshaderArraysPerEngineCount is an unsigned integer value indicating the number of shader arrays inside a shader engine. Each shader array has its own scan converter, set of compute units, and a render back end (color and depth buffers). Shader arrays within a shader engine share shader processor input (wave launcher) and shader export (export buffer) units. Currently, a shader engine can have one or two shader arrays.8vulkancomputeUnitsPerShaderArray is an unsigned integer value indicating the physical number of compute units within a shader array. The active number of compute units in a shader array mayg be lower. A compute unit houses a set of SIMDs along with a sequencer module and a local data store.9vulkansimdPerComputeUnit is an unsigned integer value indicating the number of SIMDs inside a compute unit. Each SIMD processes a single instruction at a time.;vulkan wavefrontSizeI is an unsigned integer value indicating the maximum size of a subgroup.<vulkan sgprsPerSimds is an unsigned integer value indicating the number of physical Scalar General Purpose Registers (SGPRs) per SIMD.=vulkanminSgprAllocation[ is an unsigned integer value indicating the minimum number of SGPRs allocated for a wave.>vulkanmaxSgprAllocation[ is an unsigned integer value indicating the maximum number of SGPRs allocated for a wave.?vulkansgprAllocationGranularityX is an unsigned integer value indicating the granularity of SGPR allocation for a wave.@vulkan vgprsPerSimds is an unsigned integer value indicating the number of physical Vector General Purpose Registers (VGPRs) per SIMD.AvulkanminVgprAllocation[ is an unsigned integer value indicating the minimum number of VGPRs allocated for a wave.BvulkanmaxVgprAllocation[ is an unsigned integer value indicating the maximum number of VGPRs allocated for a wave.CvulkanvgprAllocationGranularityX is an unsigned integer value indicating the granularity of VGPR allocation for a wave.t56789:;<=>?@ABC34DEt56789:;<=>?@ABC4E3DzNone("#%&'-./1789;=>?FHIMSUVX_dghklmqovulkansVkPipelineRasterizationStateRasterizationOrderAMD - Structure defining rasterization order for a graphics pipelineValid Usage (Implicit)If the VK_AMD_rasterization_order} device extension is not enabled or the application does not request a particular rasterization order through specifying a oT structure then the rasterization order used by the graphics pipeline defaults to V.See AlsoO, OvulkanNVkRasterizationOrderAMD - Specify rasterization order for a graphics pipelineSee AlsooRvulkanrasterizationOrder is a O< value specifying the primitive rasterization order to use.rasterizationOrder must be a valid O valueUvulkanU< specifies that operations for each primitive in a subpass may not occur in  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-orderprimitive order.VvulkanV< specifies that operations for each primitive in a subpass must occur in  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-orderprimitive order. oQRMNOVUPST oQROVUPVUNTMSvNone("#%&'-./1789;=>?FHIMSUVX_dghklmqcevulkangVkDeviceMemoryOverallocationCreateInfoAMD - Specify memory overallocation behavior for a Vulkan deviceValid Usage (Implicit)See Alsof, fvulkanKVkMemoryOverallocationBehaviorAMD - Specify memory overallocation behaviorSee AlsoeivulkanoverallocationBehavior( is the desired overallocation behavior.overallocationBehavior must be a valid f valuelvulkanli specifies the application is not allowed to allocate device memory beyond the heap sizes reported by  m~. Allocations that are not explicitly made by the application within the scope of the Vulkan instance are not accounted for.mvulkanm: specifies overallocation is allowed if platform permits.nvulkann> lets the implementation decide if overallocation is allowed. ehidefnmlgjkehifnmlgnmlekdj(None("#%&'-./1789;=>?FHIMSUVX_dghklmqN fvulkan)VkStencilOp - Stencil comparison function DescriptionaFor purposes of increment and decrement, the stencil bits are considered as an unsigned integer.See Also7n, o}vulkan}g decrements the current value and wraps to the maximum possible value when the value would go below 0.~vulkan~^ increments the current value and wraps to 0 when the maximum value would have been exceeded.vulkan# bitwise-inverts the current value.vulkan/ decrements the current value and clamps to 0.vulkanV increments the current value and clamps to the maximum representable unsigned value.vulkan sets the value to  reference.vulkan sets the value to 0.vulkan keeps the current value. f~}|f~}|~}#None("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkan.VkSharingMode - Buffer and image sharing modes DescriptionNote mayA result in lower performance access to the buffer or image than .IRanges of buffers and image subresources of image objects created using  must: only be accessed by queues in the queue family that has  ownership of the resource. Upon creation, such resources are not owned by any queue family; ownership is implicitly acquired upon first use within a queue. Once a resource using 1 is owned by some queue family, the application must perform a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transferf to make the memory contents of a range or image subresource accessible to a different queue family.NoteImages still require a  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-layoutslayout transition from p or q' before being used on the first queue.A queue family canT take ownership of an image subresource or buffer range of a resource created with , without an ownership transfer, in the same way as for a resource that was just created; however, taking ownership in this way has the effect that the contents of the image subresource or buffer range are undefined.IRanges of buffers and image subresources of image objects created using  mustK only be accessed by queues from the queue families specified through the queueFamilyIndexCount and pQueueFamilyIndices6 members of the corresponding create info structures.See Also, 0, , [vulkan~ specifies that concurrent access to any range or image subresource of the object from multiple queue families is supported.vulkan~ specifies that access to any range or image subresource of the object will be exclusive to a single queue family at a time.$None("#%&'-./1789;=>?FHIMSUVX_dghklmqзvulkanBVkSamplerMipmapMode - Specify mipmap mode used for texture lookups Description(These modes are described in detail in  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-filteringTexel Filtering.See Also=?vulkan specifies linear filtering.vulkan specifies nearest filtering.%None("#%&'-./1789;=>?FHIMSUVX_dghklmqavulkan^VkSamplerAddressMode - Specify behavior of sampling with texture coordinates outside an imageSee Also=?vulkanY specifies that the mirror clamp to edge wrap mode will be used. This is only valid if  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-samplerMirrorClampToEdgesamplerMirrorClampToEdge is enabled, or if the #VK_KHR_sampler_mirror_clamp_to_edge extension is enabled.vulkan< specifies that the clamp to border wrap mode will be used.vulkan: specifies that the clamp to edge wrap mode will be used.vulkan< specifies that the mirrored repeat wrap mode will be used.vulkan3 specifies that the repeat wrap mode will be used. &None("#%&'-./1789;=>?FHIMSUVX_dghklmq#$None("#%&'-./1789;=>?FHIMSUVX_dghklmq5$_vulkan&VkResult - Vulkan command return codes DescriptionIf a command returns a runtime error, unless otherwise specified any output parameters will have undefined contents, except that if the output parameter is a structure with sType and pNextG fields, those fields will be unmodified. Any structures chained from pNext1 will also have undefined contents, except that sType and pNext will be unmodified.Out of memory errors do not damage any currently existing Vulkan objects. Objects that have already been successfully created can# still be used by the application. will be returned by an implementation when an unexpected error occurs that cannot be attributed to valid behavior of the application and implementation. Under these conditions, it may+ be returned from any command returning a _.Notew is not expected to ever be returned if the application behavior is valid, and if the implementation is bug-free. If  is received, the application should be checked against the latest validation layers to verify correct behavior as much as possible. If no issues are identified it could be an implementation issue, and the implementor should be contacted for support.Performance-critical commands generally do not have return codes. If a runtime error occurs in such commands, the implementation will defer reporting the error until a specified point. For commands that record into command buffers (vkCmd*") runtime errors are reported by r.See Also&vulkan, A pool memory allocation has failed. This must only be returned if no attempt to allocate host or device memory was made to accommodate the new allocation. If the failure was definitely due to fragmentation of the pool,  should be returned instead.vulkanA An external handle is not a valid handle of the specified type.vulkan= A descriptor pool creation has failed due to fragmentation.vulkan A buffer creation or memory allocation failed because the requested address is not available. A shader group handle assignment failed because the requested shader group handle information is no longer valid.vulkan" A surface is no longer available.vulkanw The requested window is already in use by Vulkan or another API in a manner which prevents it from being used again.vulkanD A swapchain no longer matches the surface properties exactly, but can6 still be used to present to the surface successfully.vulkan A surface has changed in such a way that it is no longer compatible with the swapchain, and further presentation requests using the swapchain will fail. Applications mustt query the new surface properties and recreate their swapchain if they wish to continue presenting to the surface.vulkan The display used by a swapchain does not use the same presentable image layout, or is incompatible in a way that prevents sharing an image.vulkanh One or more shaders failed to compile or link. More details are reported back to the application via VK_EXT_debug_report if enabled.vulkan, An operation on a swapchain created with s> failed as it did not have exlusive full-screen access. This mayW occur due to implementation-dependent reasons, outside of the application s control.vulkanu A deferred operation is not complete but there is currently no work for this thread to do at the time of this call.vulkanf A deferred operation is not complete but there is no work remaining to assign to additional threads.vulkanP A deferred operation was requested and at least some of the work was deferred.vulkanE A deferred operation was requested and no operations were deferred.vulkan A requested pipeline creation would have required compilation, but the application requested compilation to not be performed.vulkan~ An unknown error has occurred; either the application has provided invalid input, or an implementation failure has occurred.vulkanO A pool allocation has failed due to fragmentation of the pool s memory. This mustu only be returned if no attempt to allocate host or device memory was made to accommodate the new allocation. This should be returned in preference to g, but only if the implementation is certain that the pool allocation failure was due to fragmentation.vulkan5 A requested format is not supported on this device.vulkan9 Too many objects of the type have already been created.vulkan The requested version of Vulkan is not supported by the driver or is otherwise incompatible for implementation-specific reasons.vulkan& A requested feature is not supported.vulkan( A requested extension is not supported.vulkan: A requested layer is not present or could not be loaded.vulkan' Mapping of a memory object has failed.vulkan4 The logical or physical device has been lost. See ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost DevicevulkanY Initialization of an object could not be completed for implementation-specific reasons.vulkan' A device memory allocation has failed.vulkan% A host memory allocation has failed.vulkan, A return array was too small for the resultvulkan An event is unsignaledvulkan An event is signaledvulkan9 A wait operation has not completed in the specified timevulkan' A fence or query has not yet completedvulkan Command successfully completed)_P_'None("#%&'-./1789;=>?FHIMSUVX_dghklmq;vulkandThis exception is thrown from calls to marshalled Vulkan commands which return a negative VkResult.2mvulkan0A human understandable message for each VkResult.None("#%&'-./1789;=>?FHIMSUVX_dghklmqmvulkan4VkDeviceSize - Vulkan device memory size and offsetsSee Also, , , , , , G, G, t, , u, 5, , ,  v, G, I, K,  w, _, x, 3q, 3s,  y, 4z, ,  l, V, , , , , [, ?{, ?|, ?}, ~, 0, 4, 4, , , , , , , , , , , , , , , , , , , , , , , , , , , 3, :, 3nvulkan,VkDeviceAddress - Vulkan device address typeSee Also, , , , , , _ovulkanVkBool32 - Vulkan boolean type Description represents a boolean True (integer 1) value, and  a boolean False (integer 0) value.6All values returned from a Vulkan implementation in a o will be either  or . Applications must not pass any other values than  or ' into a Vulkan implementation where a o is expected.See Also, , , , , , , V , r$, ), , A, m, Hv, , , F, a, , , , b, , q, , , , , , , , , , d, \, \, , , , ,  , k, , , , , , , L, ], P, g, , ,  l, , , , W, , , , , , , D, D, , , , , ^, X, _, h, i, , , Y, j, , ,  , l,  ,  , E, , , , , m, , , n, Z, , [, [, [, [, o, , , 7, 7, , , 7,  , , 7, 7, , , 7, , ,  !, $, D*, =?, X, U, Y, [, r\, ], , , , , , , , r, ,pvulkan;VkRect2D - Structure specifying a two-dimensional subregionSee AlsoK, , , J, ), t, r, ,  , 7", 6, , , , , qvulkan<VkOffset3D - Structure specifying a three-dimensional offsetSee Alsou, , , , ?{rvulkan:VkOffset2D - Structure specifying a two-dimensional offsetSee Also, p, svulkan<VkExtent3D - Structure specifying a three-dimensional extentSee Alsou, , 0,  w, ,  , ?, ?{tvulkan:VkExtent2D - Structure specifying a two-dimensional extentSee Also, , , +, , , ,  , p, , >, S, , [, 6vulkanVkFlags - Vulkan bitmasks DescriptionYBitmasks are passed to many commands and structures to compactly represent options, but . is not used directly in the API. Instead, a Vk*Flags type which is an alias of ,, and whose name matches the corresponding  Vk*FlagBits' that are valid for that type, is used.Any Vk*Flags1 member or parameter used in the API as an input must be a valid combination of bit flags. A valid combination is either zero or the bitwise OR of valid bit flags. A bit flag is valid if:'The bit flag is defined as part of the  Vk*FlagBitsd type, where the bits type is obtained by taking the flag type and replacing the trailing  with FlagBits). For example, a flag value of type x must( contain only bit flags defined by x.The flag is allowed in the context in which it is being used. For example, in some cases, certain bit flags or combinations of bit flags are mutually exclusive.Any Vk*Flagsg member or parameter returned from a query command or otherwise output from Vulkan to the application may3 contain bit flags undefined in its corresponding  Vk*FlagBits type. An application cannot- rely on the state of these unspecified bits._Only the low-order 31 bits (bit positions zero through 30) are available for use as flag bits.Note`This restriction is due to poorly defined behavior by C compilers given a C enumerant value of  0x80000000U. In some cases adding this enumerant value may increase the size of the underlying  Vk*FlagBits type, breaking the ABI.See Alsoxvulkan2VkSampleMask - Mask of sample coverage informationSee Also7vulkanoffset is a r! specifying the rectangle offset.vulkanextent is a t! specifying the rectangle extent.vulkanwidth is the width of the extent.vulkanheight is the height of the extent.vulkandepth is the depth of the extent.vulkanwidth is the width of the extent.vulkanheight is the height of the extent.vulkanx is the x offset.vulkany is the y offset.vulkanz is the z offset.vulkanx is the x offset.vulkany is the y offset._mnopqrst~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      rqtspomn~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      _ None("#%&'-./1789;=>?FHIMSUVX_dghklmqr 9vulkan=VkViewportSwizzleNV - Structure specifying a viewport swizzleValid Usage (Implicit)See Also:, (:vulkanpVkPipelineViewportSwizzleStateCreateInfoNV - Structure specifying swizzle applied to primitive clip coordinatesValid Usage (Implicit)See Also*, , 9(vulkanNVkViewportCoordinateSwizzleNV - Specify how a viewport coordinate is swizzled Description)These values are described in detail in  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-viewport-swizzleViewport Swizzle.See Also9*vulkanEVkPipelineViewportSwizzleStateCreateFlagsNV - Reserved for future use Description*Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also:-vulkanflags is reserved for future use.flags must be 0.vulkanpViewportSwizzles is a pointer to an array of 9- structures, defining the viewport swizzles.pViewportSwizzles must$ be a valid pointer to an array of  viewportCount valid 9 structures0vulkanx is a (U value specifying the swizzle operation to apply to the x component of the primitivex must be a valid ( value1vulkany is a (U value specifying the swizzle operation to apply to the y component of the primitivey must be a valid ( value2vulkanz is a (U value specifying the swizzle operation to apply to the z component of the primitivez must be a valid ( value3vulkanw is a (U value specifying the swizzle operation to apply to the w component of the primitivew must be a valid ( value9/0312:,-.&'(=<;:9876)*+45"9/0312:,-.*+(=<;:9876)=<;:9876'5&4 None("#%&'-./1789;=>?FHIMSUVX_dghklmq6'vulkanVkPhysicalDeviceShaderSMBuiltinsPropertiesNV - Structure describing shader SM Builtins properties supported by an implementationMembersThe members of the 'C structure describe the following implementation-dependent limits: DescriptionIf the ' structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Also(vulkanVkPhysicalDeviceShaderSMBuiltinsFeaturesNV - Structure describing the shader SM Builtins features that can be supported by an implementationMembersThe members of the (, structure describe the following features: DescriptionIf the ( structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported. ( can also be included in the pNext chain of   to enable the feature.Valid Usage (Implicit)See Alsoo, ZvulkanshaderSMBuiltins; indicates whether the implementation supports the SPIR-V ShaderSMBuiltinsNV capability.\vulkan shaderSMCount$ is the number of SMs on the device.]vulkanshaderWarpsPerSMC is the maximum number of simultaneously executing warps on an SM. '[\](YZWX^_ '[\](YZX_W^None("#%&'-./1789;=>?FHIMSUVX_dghklmq&vulkanVkPhysicalDeviceShaderImageFootprintFeaturesNV - Structure describing shader image footprint features that can be supported by an implementation DescriptionSee  `https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-footprintTexel Footprint Evaluation for more information.If the & structure is included in the pNext chain of TK, it is filled with values indicating whether each feature is supported. & can also be included in the pNext chain of   to enable features.Valid Usage (Implicit)See Alsoo, qvulkanimageFootprint4 specifies whether the implementation supports the ImageFootprintNV SPIR-V capability.&pqnors&pqosnrNone("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkanjVkPipelineRepresentativeFragmentTestStateCreateInfoNV - Structure specifying representative fragment test Description"If this structure is not present,  representativeFragmentTestEnable is considered to be .4, and the representative fragment test is disabled.If  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-earlytestearly fragment testsy are not enabled in the active fragment shader, the representative fragment shader test has no effect, even if enabled.Valid Usage (Implicit)See Alsoo, vulkanVkPhysicalDeviceRepresentativeFragmentTestFeaturesNV - Structure describing the representative fragment test features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of   to enable the feature.Valid Usage (Implicit)See Alsoo, ~vulkan representativeFragmentTestEnable? controls whether the representative fragment test is enabled.vulkanrepresentativeFragmentTestW indicates whether the implementation supports the representative fragment test. See  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-rep-frag-testRepresentative Fragment Test. }~{| }~|{None("#%&'-./1789;=>?FHIMSUVX_dghklmq's vulkanpVkPipelineCoverageModulationStateCreateInfoNV - Structure specifying parameters controlling coverage modulation DescriptionIf coverageModulationTableEnable is ., then for each color sample the associated bits of the fragment s coverage are counted and divided by the number of associated bits to produce a modulation factor R in the range (0,1] (a value of zero would have been killed due to a color coverage of 0). Specifically: N = value of rasterizationSamples M = value of 6::samples for any color attachments0R = popcount(associated coverage bits) / (N / M)If coverageModulationTableEnable is ., the value R is computed using a programmable lookup table. The lookup table has N / M elements, and the element of the table is selected by:R = pCoverageModulationTable&[popcount(associated coverage bits)-1]Note that the table does not have an entry for popcount(associated coverage bits) = 0, because such samples would have been killed.The values of pCoverageModulationTable mayq be rounded to an implementation-dependent precision, which is at least as fine as 1 / N, and clamped to [0,1].For each color attachment with a floating point or normalized color format, each fragment output color value is replicated to M values which can each be modulated (multiplied) by that color sample s associated value of R. Which components are modulated is controlled by coverageModulationMode..If this structure is not present, it is as if coverageModulationMode is .If the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-coverage-reductioncoverage reduction mode is b, each color sample is associated with only a single coverage sample. In this case, it is as if coverageModulationMode is . Valid UsageIf coverageModulationTableEnable is ., coverageModulationTableCount mustp be equal to the number of rasterization samples divided by the number of color samples in the subpassValid Usage (Implicit)sType must be flags must be 0coverageModulationMode must be a valid  valueSee Alsoo, , , vulkanAVkCoverageModulationModeNV - Specify the coverage modulation modeSee AlsovulkanHVkPipelineCoverageModulationStateCreateFlagsNV - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Alsovulkanflags is reserved for future use.vulkancoverageModulationMode is a 9 value controlling which color components are modulated.vulkancoverageModulationTableEnableF controls whether the modulation factor is looked up from a table in pCoverageModulationTable.vulkancoverageModulationTableCount is the number of elements in pCoverageModulationTable.vulkanpCoverageModulationTableY is a table of modulation factors containing a value for each number of covered samples.vulkanH specifies that all components are multiplied by the modulation factor.vulkanL specifies that the alpha component is multiplied by the modulation factor.vulkan] specifies that the red, green, and blue components are multiplied by the modulation factor.vulkanG specifies that no components are multiplied by the modulation factor.None("#%&'-./1789;=>?FHIMSUVX_dghklmq7vulkanVkPhysicalDeviceFragmentShaderBarycentricFeaturesNV - Structure describing barycentric support in fragment shaders that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionSee  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-barycentricBarycentric Interpolation for more information.If the  structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of   to enable features.Valid Usage (Implicit)See Alsoo, vulkanfragmentShaderBarycentric1 indicates that the implementation supports the  BaryCoordNV and BaryCoordNoPerspNV4 SPIR-V fragment shader built-ins and supports the  PerVertexNV7 SPIR-V decoration on fragment shader input variables.None("#%&'-./1789;=>?FHIMSUVX_dghklmqU"vulkanmVkPipelineCoverageToColorStateCreateInfoNV - Structure specifying whether fragment coverage replaces a color DescriptionIf coverageToColorEnable is ., the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask coverage maskm replaces the first component of the color value corresponding to the fragment shader output location with Location equal to coverageToColorLocation and Index( equal to zero. If the color attachment format has fewer bits than the coverage mask, the low bits of the sample coverage mask are taken without any clamping. If the color attachment format has more bits than the coverage mask, the high bits of the sample coverage mask are filled with zeros.If coverageToColorEnable is .P, these operations are skipped. If this structure is not present, it is as if coverageToColorEnable is .. Valid UsageIf coverageToColorEnable is .6, then the render pass subpass indicated by 7L:: renderPass and 7L::subpass must: have a color attachment at the location selected by coverageToColorLocation, with a  of , , , ,  , or Valid Usage (Implicit)sType must be flags must be 0See Alsoo, , vulkanEVkPipelineCoverageToColorStateCreateFlagsNV - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Alsovulkanflags is reserved for future use.vulkancoverageToColorEnableP controls whether the fragment coverage value replaces a fragment color output.vulkancoverageToColorLocation@ controls which fragment shader color output value is replaced.  None("#%&'-./1789;=>?FHIMSUVX_dghklmqovulkanVkPhysicalDeviceDiagnosticsConfigFeaturesNV - Structure describing the device-generated diagnostic configuration features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported.  can also be used in the pNext chain of   to enable the feature.Valid Usage (Implicit)See Alsoo, vulkanWVkDeviceDiagnosticsConfigCreateInfoNV - Specify diagnostics config for a Vulkan deviceValid Usage (Implicit)See Also, vulkanKVkDeviceDiagnosticsConfigFlagBitsNV - Bitmask specifying diagnostics flagsSee Alsovulkanflags is a bitmask of C specifying addtional parameters for configuring diagnostic tools.flags must be a valid combination of  valuesvulkandiagnosticsConfigZ indicates whether the implementation supports the ability to configure diagnostic tools.vulkan" enables automatic insertion of  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#device-diagnostic-checkpointsdiagnostic checkpoints for draw calls, dispatches, trace rays, and copies. The CPU call stack at the time of the command will be associated as the marker data for the automatically inserted checkpoints.vulkanr enables driver side tracking of resources (images, buffers, etc.) used to augment the device fault information.vulkan: enables the generation of debug information for shaders.None("#%&'-./1789;=>?FHIMSUVX_dghklmq|'vulkanVkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV - Structure describing dedicated allocation image aliasing features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TK, it is filled with values indicating whether each feature is supported.  can also be included in the pNext chain of   to enable features.Valid Usage (Implicit)See Alsoo, vulkan dedicatedAllocationImageAliasingl indicates that the implementation supports aliasing of compatible image objects on a dedicated allocation.None("#%&'-./1789;=>?FHIMSUVX_dghklmqvvulkanVkPhysicalDeviceCornerSampledImageFeaturesNV - Structure describing corner sampled image features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TK, it is filled with values indicating whether each feature is supported.  can also be included in the pNext chain of   to enable features.Valid Usage (Implicit)See Alsoo,  vulkancornerSampledImage1 specifies whether images can be created with a 0::flags containing . See  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-images-corner-sampledCorner-Sampled Images.        None("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanVkPhysicalDeviceComputeShaderDerivativesFeaturesNV - Structure describing compute shader derivative features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionSee  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#texture-derivatives-computeCompute Shader Derivatives for more information.If the  structure is included in the pNext chain of TK, it is filled with values indicating whether each feature is supported.  can also be included in the pNext chain of   to enable features.Valid Usage (Implicit)See Alsoo, vulkancomputeDerivativeGroupQuads1 indicates that the implementation supports the ComputeDerivativeGroupQuadsNV SPIR-V capability.vulkancomputeDerivativeGroupLinear1 indicates that the implementation supports the ComputeDerivativeGroupLinearNV SPIR-V capability.None("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanVkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX - Structure describing multiview limits that can be supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alsoo, (vulkanperViewPositionAllComponents is .p if the implementation supports per-view position values that differ in components other than the X component.'(%&)*'(&*%)None("#%&'-./1789;=>?FHIMSUVX_dghklmq9vulkanaVkSurfaceProtectedCapabilitiesKHR - Structure describing capability of a surface to be protectedValid Usage (Implicit)See Alsoo, 5vulkansupportsProtected7 specifies whether a protected swapchain created from ::surface$ for a particular windowing system can$ be displayed on screen or not. If supportsProtected is .), then creation of swapchains with the  flag set must be supported for surface.452367453726None("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanhVkPhysicalDeviceShaderClockFeaturesKHR - Structure describing features supported by VK_KHR_shader_clock DescriptionIf the  structure is included in the pNext chain of TK, it is filled with values indicating whether each feature is supported.  can also be included in the pNext chain of   to enable the features.Valid Usage (Implicit)See Alsoo, BvulkanshaderSubgroupClock indicates whether shaders can support Subgroup scoped clock reads.CvulkanshaderDeviceClock indicates whether shaders can support / scoped clock reads.ABC?@DEABC@E?DNone("#%&'-./1789;=>?FHIMSUVX_dghklmq ovulkanuVkRectLayerKHR - Structure containing a rectangle, including layer, changed by vkQueuePresentKHR for a given VkImage Valid Usage The sum of offset and extent must be no greater than the  imageExtent member of the [ structure passed to layer must be less than the imageArrayLayers member of the [ structure passed to rSome platforms allow the size of a surface to change, and then scale the pixels of the image to fit the surface. of specifies pixels of the swapchain s image(s), which will be constant for the life of the swapchain.See Alsot, r, qpvulkanYVkPresentRegionsKHR - Structure hint of rectangular regions changed by vkQueuePresentKHR Valid UsageswapchainCount must be the same value as &::swapchainCount , where & is included in the pNext chain of this p structureValid Usage (Implicit)sType must be If pRegions is not NULL, pRegions must( be a valid pointer to an array of swapchainCount valid q structuresswapchainCount must be greater than 0See Alsoq, qvulkannVkPresentRegionKHR - Structure containing rectangular region changed by vkQueuePresentKHR for a given VkImageValid Usage (Implicit)If rectangleCount is not 0, and  pRectangles is not NULL,  pRectangles must( be a valid pointer to an array of rectangleCount valid o structuresSee Alsop, oPvulkanoffset+ is the origin of the rectangle, in pixels.Qvulkanextent) is the size of the rectangle, in pixels.RvulkanlayerJ is the layer of the image. For images with only one layer, the value of layer must be 0.TvulkanrectangleCount is the number of rectangles in  pRectanglesC, or zero if the entire image has changed and should be presented.Uvulkan pRectangles is either NULL or a pointer to an array of o structures. The or structure is the framebuffer coordinates, plus layer, of a portion of a presentable image that has changed and must be presented. If non-NULL, each entry in  pRectangleso is a rectangle of the given image that has changed since the last image was presented to the given swapchain.WvulkanswapchainCountA is the number of swapchains being presented to by this command.XvulkanpRegions is NULL or a pointer to an array of q elements with swapchainCount entries. If not NULL, each element of pRegionsr contains the region that has changed since the last present to the swapchain in the corresponding entry in the &:: pSwapchains array.oOPQRpVWXqSTUMNYZpVWXqSTUoOPQRNZMYNone("#%&'-./1789;=>?FHIMSUVX_dghklmqeIvulkanVkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL - Structure describing shader integer functions that can be supported by an implementationMembersThe members of the I, structure describe the following features: DescriptionIf the I structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported. I can also be included in the pNext chain of   to enable features.Valid Usage (Implicit)See Alsoo, mvulkanshaderIntegerFunctions21 indicates that the implementation supports the ShaderIntegerFunctions2INTEL SPIR-V capability.IlmjknoIlmkojnNone("#%&'-./1789;=>?FHIMSUVX_dghklmqw%vulkanVkPhysicalDeviceYcbcrImageArraysFeaturesEXT - Structure describing extended Y CbCr image creation features that can be supported by an implementationMembersThe members of the %, structure describe the following features: DescriptionIf the % structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported. % can also be included in the pNext chain of   to enable features.Valid Usage (Implicit)See Alsoo, zvulkanycbcrImageArraysZ indicates that the implementation supports creating images with a format that requires  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionY 2CBCR conversion and has multiple array layers.%yzwx{|%yzx|w{None("#%&'-./1789;=>?FHIMSUVX_dghklmq/B !vulkangVkVertexInputBindingDivisorDescriptionEXT - Structure specifying a divisor used in instanced rendering Description|If this structure is not used to define a divisor value for an attribute then the divisor has a logical default value of 1. Valid Usagebinding must be less than  l::maxVertexInputBindingsIf the &vertexAttributeInstanceRateZeroDivisor feature is not enabled, divisor must not be 0If the "vertexAttributeInstanceRateDivisor feature is not enabled, divisor must be 1divisor must be a value between 0 and #::maxVertexAttribDivisor, inclusive7:: inputRate must be of type  for this bindingSee Also""vulkan~VkPipelineVertexInputDivisorStateCreateInfoEXT - Structure specifying vertex attributes assignment during instanced renderingValid Usage (Implicit)See Also, !#vulkanVkPhysicalDeviceVertexAttributeDivisorPropertiesEXT - Structure describing max value of vertex attribute divisor that can be supported by an implementationMembersThe members of the #C structure describe the following implementation-dependent limits: DescriptionIf the # structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Also$vulkanVkPhysicalDeviceVertexAttributeDivisorFeaturesEXT - Structure describing if fetching of vertex attribute may be repeated for instanced rendering DescriptionIf the $ structure is included in the pNext chain of TO, it is filled with values indicating the implementation-dependent behavior. $ can also be included in pNext chain of   to enable the feature.Valid Usage (Implicit)See Alsoo, vulkan"vertexAttributeInstanceRateDivisor] specifies whether vertex attribute fetching may be repeated in case of instanced rendering.vulkan&vertexAttributeInstanceRateZeroDivisor% specifies whether a zero value for !::divisor is supported.vulkanmaxVertexAttribDivisor is the maximum value of the number of instances that will repeat the value of vertex attribute data when instanced rendering is enabled.vulkanpVertexBindingDivisors is a pointer to an array of !A structures, which specifies the divisor value for each binding.pVertexBindingDivisors must$ be a valid pointer to an array of vertexBindingDivisorCount ! structuresvulkanbinding: is the binding number for which the divisor is specified.vulkandivisorn is the number of successive instances that will use the same value of the vertex attribute when instanced rendering is enabled. For example, if the divisor is N, the same vertex attribute will be applied to N successive instances before moving on to the next vertex attribute. The maximum value of divisor is implementation dependent and can be queried using #::maxVertexAttribDivisor. A value of 0 can! be used for the divisor if the  }https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeInstanceRateZeroDivisor&vertexAttributeInstanceRateZeroDivisor` feature is enabled. In this case, the same vertex attribute will be applied to all instances.!"#$!"#$None("#%&'-./1789;=>?FHIMSUVX_dghklmq@fvulkanVkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT - Structure describing ASTC HDR features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TK, it is filled with values indicating whether each feature is supported.  can also be included in the pNext chain of   to enable features.Valid Usage (Implicit)See Alsoo, vulkantextureCompressionASTC_HDRy indicates whether all of the ASTC HDR compressed texture formats are supported. If this feature is enabled, then the g, g and g features must be supported in optimalTilingFeatures for the following formats:GTo query for additional properties, or if the feature is not enabled,   and   canL be used to check for supported properties of individual formats as normal.None("#%&'-./1789;=>?FHIMSUVX_dghklmqhgvulkanVkPhysicalDeviceTexelBufferAlignmentPropertiesEXT - Structure describing the texel buffer alignment requirements supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.+If the single texel alignment property is .!, then the buffer view s offset mustc be aligned to the corresponding byte alignment value. If the single texel alignment property is .!, then the buffer view s offset mustn be aligned to the lesser of the corresponding byte alignment value or the size of a single texel, based on ::format. If the size of a single texel is a multiple of three bytes, then the size of a single component of the format is used instead. These limits must, not advertise a larger alignment than the  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-requiredrequired maximum minimum value of  l::minTexelBufferOffsetAlignment6, for any format that supports use as a texel buffer.Valid Usage (Implicit)See Alsoo, m, vulkanVkPhysicalDeviceTexelBufferAlignmentFeaturesEXT - Structure describing the texel buffer alignment features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of   to enable the feature.Valid Usage (Implicit)See Alsoo, vulkan&storageTexelBufferOffsetAlignmentBytesR is a byte alignment that is sufficient for a storage texel buffer of any format.vulkan,storageTexelBufferOffsetSingleTexelAlignmentb indicates whether single texel alignment is sufficient for a storage texel buffer of any format.vulkan&uniformTexelBufferOffsetAlignmentBytesR is a byte alignment that is sufficient for a uniform texel buffer of any format.vulkan,uniformTexelBufferOffsetSingleTexelAlignmentb indicates whether single texel alignment is sufficient for a uniform texel buffer of any format.vulkantexelBufferAlignment` indicates whether the implementation uses more specific alignment requirements advertised in  rather than  l::minTexelBufferOffsetAlignment.  None("#%&'-./1789;=>?FHIMSUVX_dghklmqtvulkanVkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT - Structure describing the shader demote to helper invocations features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of   to enable the feature.Valid Usage (Implicit)See Alsoo, vulkanshaderDemoteToHelperInvocation; indicates whether the implementation supports the SPIR-V DemoteToHelperInvocationEXT capability.None("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanVkPhysicalDeviceRobustness2PropertiesEXT - Structure describing robust buffer access properties supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alsom, vulkanoVkPhysicalDeviceRobustness2FeaturesEXT - Structure describing the out-of-bounds behavior for an implementationMembersThe members of the , structure describe the following features: DescriptionrobustBufferAccess2} indicates whether buffer accesses are tightly bounds-checked against the range of the descriptor. Uniform buffers mustl be bounds-checked to the range of the descriptor, where the range is rounded up to a multiple of  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustUniformBufferAccessSizeAlignment&robustUniformBufferAccessSizeAlignment. Storage buffers mustl be bounds-checked to the range of the descriptor, where the range is rounded up to a multiple of  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment&robustStorageBufferAccessSizeAlignment. Out of bounds buffer loads will return zero values, and formatted loads will have (0,0,1) values inserted for missing G, B, or A components based on the format.robustImageAccess2 indicates whether image accesses are tightly bounds-checked against the dimensions of the image view. Out of bounds image loads will return zero values, with (0,0,1) values  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-conversion-to-rgba*inserted for missing G, B, or A components based on the format.nullDescriptor indicates whether descriptors can be written with a u resource or view, which are considered valid to access and act as if the descriptor were bound to nothing.If the  structure is included in the pNext chain of TI, it is filled with values indicating whether each feature is supported. Valid UsageIf robustBufferAccess2 is enabled then  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobustBufferAccess must also be enabledValid Usage (Implicit)sType must be zSee Alsoo, vulkan&robustStorageBufferAccessSizeAlignment} is the number of bytes that the range of a storage buffer descriptor is rounded up to when used for bounds-checking when  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2* is enabled. This value is either 1 or 4.vulkan&robustUniformBufferAccessSizeAlignment} is the number of bytes that the range of a uniform buffer descriptor is rounded up to when used for bounds-checking when  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2A is enabled. This value is a power of two in the range [1, 256].  None("#%&'-./1789;=>?FHIMSUVX_dghklmq" vulkan\VkPipelineCreationFeedbackEXT - Feedback about the creation of a pipeline or pipeline stage DescriptionIf the   is not set in flags, an implementation must not set any other bits in flags, and all other  data members are undefined.See Also, , vulkan`VkPipelineCreationFeedbackCreateInfoEXT - Request for feedback about the creation of a pipeline DescriptionAn implementation should& write pipeline creation feedback to pPipelineCreationFeedback and may, write pipeline stage creation feedback to pPipelineStageCreationFeedbacks. An implementation must set or clear the   in ::flags for pPipelineCreationFeedback and every element of pPipelineStageCreationFeedbacks.NoteNOne common scenario for an implementation to skip per-stage feedback is when   is set in pPipelineCreationFeedback.When chained to 0, 1, or 7L, the i element of pPipelineStageCreationFeedbacks corresponds to the i element of 0::pStages, 1::pStages, or 7L::pStages. When chained to 7, the first element of pPipelineStageCreationFeedbacks corresponds to 7::stage. Valid UsageWhen chained to 7L, ::"pipelineStageCreationFeedbackCount must equal 7L:: stageCountWhen chained to 7, ::"pipelineStageCreationFeedbackCount must equal 1When chained to 0, ::"pipelineStageCreationFeedbackCount must equal 0:: stageCountWhen chained to 1, ::"pipelineStageCreationFeedbackCount must equal 1:: stageCountValid Usage (Implicit)sType must be .pPipelineCreationFeedback must be a valid pointer to a  structurepPipelineStageCreationFeedbacks must( be a valid pointer to an array of "pipelineStageCreationFeedbackCount  structures"pipelineStageCreationFeedbackCount must be greater than 0See Also7, 7L, , 0, 1, vulkanhVkPipelineCreationFeedbackFlagBitsEXT - Bitmask specifying pipeline or pipeline stage creation feedbackSee Also, , vulkanpPipelineCreationFeedback is a pointer to a  structure.vulkan"pipelineStageCreationFeedbackCount is the number of elements in pPipelineStageCreationFeedbacks. vulkanpPipelineStageCreationFeedbacks is a pointer to an array of "pipelineStageCreationFeedbackCount  structures. vulkanflags is a bitmask of M providing feedback about the creation of a pipeline or of a pipeline stage. vulkandurationM is the duration spent creating a pipeline or pipeline stage in nanoseconds. vulkan 4 indicates that the base pipeline specified by the basePipelineHandle or basePipelineIndex member of the Vk*PipelineCreateInfo@ structure was used to accelerate the creation of the pipeline.An implementation should set the  W bit if it was able to avoid a significant amount of work by using the base pipeline.NoteWhile "significant amount of work" is subjective, implementations are encouraged to provide a meaningful signal to applications using this bit. For example, a 1% reduction in duration may not warrant setting this bit, while a 50% reduction would. vulkan O indicates that a readily usable pipeline or pipeline stage was found in the  pipelineCache@ specified by the application in the pipeline creation command.An implementation should set the  k bit if it was able to avoid the large majority of pipeline or pipeline stage creation work by using the  pipelineCache parameter of 7, , , or 7D. When an implementation sets this bit for the entire pipeline, it may leave it unset for any stage.NoteImplementations are encouraged to provide a meaningful signal to applications using this bit. The intention is to communicate to the application that the pipeline or pipeline stage was created "as fast as it gets" using the pipeline cache provided by the application. If an implementation uses an internal cache, it is discouraged from setting this bit as the feedback would be unactionable. vulkan 3 indicates that the feedback information is valid.                     None("#%&'-./1789;=>?FHIMSUVX_dghklmqPvulkanVkPhysicalDevicePipelineCreationCacheControlFeaturesEXT - Structure describing whether pipeline cache control can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported.  can also be used in the pNext chain of   to enable features.Valid Usage (Implicit)See Alsoo,  !vulkanpipelineCreationCacheControl- indicates that the implementation supports:The following can be used in Vk*PipelineCreateInfo::flags:VVThe following can be used in 8::flags:Y !   " # $ $ !  #  "None("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkanVkPhysicalDeviceMemoryPriorityFeaturesEXT - Structure describing memory priority features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of   to enable features.Valid Usage (Implicit)See Alsoo, vulkanFVkMemoryPriorityAllocateInfoEXT - Specify a memory allocation priority Description(Memory allocations with higher priority mayY be more likely to stay in device-local memory when the system is under memory pressure.3If this structure is not included, it is as if the priority value were 0.5.Valid Usage (Implicit)See Also /vulkanpriority# is a floating-point value between 0 and 1, indicating the priority of the allocation relative to other memory allocations. Larger values are higher priority. The granularity of the priorities is implementation-dependent.priority must be between 0 and 1 , inclusive 1vulkanmemoryPriorityh indicates that the implementation supports memory priorities specified at memory allocation time via .  0 1 . / , - 2 3  0 1 . / - 3 , 2None("#%&'-./1789;=>?FHIMSUVX_dghklmqA? vulkan[VkWriteDescriptorSetInlineUniformBlockEXT - Structure specifying inline uniform block dataValid Usage (Implicit)See AlsovulkanVkPhysicalDeviceInlineUniformBlockPropertiesEXT - Structure describing inline uniform block properties that can be supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See AlsovulkanVkPhysicalDeviceInlineUniformBlockFeaturesEXT - Structure describing inline uniform block features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TK, it is filled with values indicating whether each feature is supported.  can also be included in the pNext chain of   to enable features.Valid Usage (Implicit)See Alsoo, vulkanVkDescriptorPoolInlineUniformBlockCreateInfoEXT - Structure specifying the maximum number of inline uniform block bindings of a newly created descriptor poolValid Usage (Implicit)See Also EvulkanmaxInlineUniformBlockBindings= is the number of inline uniform block bindings to allocate. GvulkandataSizeD is the number of bytes of inline uniform block data pointed to by pData.dataSize must be an integer multiple of 4dataSize must be greater than 0 HvulkanpData is a pointer to dataSize? number of bytes of data to write to the inline uniform block.pData must# be a valid pointer to an array of dataSize bytes JvulkanmaxInlineUniformBlockSize% is the maximum size in bytes of an  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inlineuniformblockinline uniform block binding. Lvulkan7maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks is similar to (maxPerStageDescriptorInlineUniformBlocksS but counts descriptor bindings from descriptor sets created with or without the p bit set. Mvulkan#maxDescriptorSetInlineUniformBlocks> is the maximum number of inline uniform block bindings that can be included in descriptor bindings in a pipeline layout across all pipeline shader stages and descriptor set numbers. Descriptor bindings with a descriptor type of oe count against this limit. Only descriptor bindings in descriptor set layouts created without the p# bit set count against this limit. Nvulkan2maxDescriptorSetUpdateAfterBindInlineUniformBlocks is similar to #maxDescriptorSetInlineUniformBlocksS but counts descriptor bindings from descriptor sets created with or without the p bit set. PvulkaninlineUniformBlocks indicates whether the implementation supports inline uniform block descriptors. If this feature is not enabled, o must not be used. Qvulkan2descriptorBindingInlineUniformBlockUpdateAfterBind indicates whether the implementation supports updating inline uniform block descriptors after a set is bound. If this feature is not enabled, 2 must not be used with o. F G H I J K L M N O P Q D E B C R S O P Q I J K L M N F G H D E C S B RNone("#%&'-./1789;=>?FHIMSUVX_dghklmqKvulkanfVkPhysicalDeviceIndexTypeUint8FeaturesEXT - Structure describing whether uint8 index type can be usedMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of   to enable features.Valid Usage (Implicit)See Alsoo,  rvulkanindexTypeUint8 indicates that  can be used with . q r o p s t q r p t o sNone("#%&'-./1789;=>?FHIMSUVX_dghklmq[vulkanVkPhysicalDeviceFragmentShaderInterlockFeaturesEXT - Structure describing fragment shader interlock features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of   to enable features.Valid Usage (Implicit)See Alsoo,  vulkanfragmentShaderSampleInterlock1 indicates that the implementation supports the  FragmentShaderSampleInterlockEXT SPIR-V capability. vulkanfragmentShaderPixelInterlock1 indicates that the implementation supports the FragmentShaderPixelInterlockEXT SPIR-V capability. vulkan"fragmentShaderShadingRateInterlock1 indicates that the implementation supports the %FragmentShaderShadingRateInterlockEXT SPIR-V capability.  ~  | }  ~  } | None("#%&'-./1789;=>?FHIMSUVX_dghklmqyvulkanVkPhysicalDeviceFragmentDensityMap2PropertiesEXT - Structure describing additional fragment density map properties that can be supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits:Valid Usage (Implicit)If the  structure is included in the pNext chain of TH, it is filled with the implementation-dependent limits and properties.See Alsoo, vulkanVkPhysicalDeviceFragmentDensityMap2FeaturesEXT - Structure describing additional fragment density map features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TK, it is filled with values indicating whether each feature is supported.  can also be included in pNext chain of   to enable the features.Valid Usage (Implicit)See Alsoo,  vulkansubsampledLoads specifies if performing image data read with load operations on subsampled attachments will be resampled to the fragment density of the render pass vulkan)subsampledCoarseReconstructionEarlyAccessE specifies if performing image data read with samplers created with flags containing F; in fragment shader will trigger additional reads during  vulkanmaxSubsampledArrayLayers is the maximum number of /8 array layers for usages supporting subsampled samplers vulkan"maxDescriptorSetSubsampledSamplers4 is the maximum number of subsampled samplers that can be included in a / vulkanfragmentDensityMapDeferred specifies whether the implementation supports deferred reads of fragment density map image views. If this feature is not enabled, a must not be included in 1`::flags.     None("#%&'-./1789;=>?FHIMSUVX_dghklmq:vulkan_VkPipelineRasterizationDepthClipStateCreateInfoEXT - Structure specifying depth clipping stateValid Usage (Implicit)See Alsoo,  , vulkanlVkPhysicalDeviceDepthClipEnableFeaturesEXT - Structure indicating support for explicit enable of depth clipMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of   to enable this feature.Valid Usage (Implicit)See Alsoo,  vulkanNVkPipelineRasterizationDepthClipStateCreateFlagsEXT - Reserved for future use Description Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also vulkanflags is reserved for future use.flags must be 0 vulkandepthClipEnable> controls whether depth clipping is enabled as described in  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-clippingPrimitive Clipping. vulkandepthClipEnablef indicates that the implementation supports setting the depth clipping operation explicitly via the A pipeline state. Otherwise depth clipping is only enabled when 7::depthClampEnable is set to ..     None("#%&'-./1789;=>?FHIMSUVX_dghklmq|vulkangVkPipelineRasterizationConservativeStateCreateInfoEXT - Structure specifying conservative raster stateValid Usage (Implicit)See Also ,  , vulkanVkPhysicalDeviceConservativeRasterizationPropertiesEXT - Structure describing conservative raster properties that can be supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of TH, it is filled with the implementation-dependent limits and properties.Valid Usage (Implicit)See Alsoo,  vulkanQVkConservativeRasterizationModeEXT - Specify the conservative rasterization modeSee Also vulkanQVkPipelineRasterizationConservativeStateCreateFlagsEXT - Reserved for future use Description Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also vulkanflags is reserved for future use.flags must be 0 vulkanconservativeRasterizationMode0 is the conservative rasterization mode to use.conservativeRasterizationMode must be a valid   value vulkan extraPrimitiveOverestimationSize~ is the extra size in pixels to increase the generating primitive during conservative rasterization at each of its edges in X and YG equally in screen space beyond the base overestimation specified in ::primitiveOverestimationSize. extraPrimitiveOverestimationSize must be in the range of 0.0 to ::#maxExtraPrimitiveOverestimationSize inclusive vulkanprimitiveOverestimationSizex is the size in pixels the generating primitive is increased at each of its edges during conservative rasterization overestimation mode. Even with a size of 0.0, conservative rasterization overestimation rules still apply and if any part of the pixel rectangle is covered by the generating primitive, fragments are generated for the entire pixel. However implementations mayj make the pixel coverage area even more conservative by increasing the size of the generating primitive. vulkan#maxExtraPrimitiveOverestimationSize is the maximum size in pixels of extra overestimation the implementation supports in the pipeline state. A value of 0.0 means the implementation does not support any additional overestimation of the generating primitive during conservative rasterization. A value above 0.0 allows the application to further increase the size of the generating primitive during conservative rasterization overestimation. vulkan+extraPrimitiveOverestimationSizeGranularityj is the granularity of extra overestimation that can be specified in the pipeline state between 0.0 and #maxExtraPrimitiveOverestimationSize inclusive. A value of 0.0 means the implementation can use the smallest representable non-zero value in the screen space pixel fixed-point grid. vulkanprimitiveUnderestimation- is true if the implementation supports the  2 conservative rasterization mode in addition to  /. Otherwise the implementation only supports  . vulkan%conservativePointAndLineRasterization is true if the implementation supports conservative rasterization of point and line primitives as well as triangle primitives. Otherwise the implementation only supports triangle primitives. vulkandegenerateTrianglesRasterized is false if the implementation culls primitives generated from triangles that become zero area after they are quantized to the fixed-point rasterization pixel grid. degenerateTrianglesRasterized# is true if these primitives are not culled and the provoking vertex attributes and depth value are used for the fragments. The primitive area calculation is done on the primitive generated from the clipped triangle if applicable. Zero area primitives are backfacing and the application can% enable backface culling if desired. vulkandegenerateLinesRasterized is false if the implementation culls lines that become zero length after they are quantized to the fixed-point rasterization pixel grid. degenerateLinesRasterized~ is true if zero length lines are not culled and the provoking vertex attributes and depth value are used for the fragments. vulkan'fullyCoveredFragmentShaderInputVariable\ is true if the implementation supports the SPIR-V builtin fragment shader input variable FullyCoveredEXT which specifies that conservative rasterization is enabled and the fragment area is fully covered by the generating primitive. vulkan*conservativeRasterizationPostDepthCoverageN is true if the implementation supports conservative rasterization with the  zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-earlytest-postdepthcoveragePostDepthCoverage. execution mode enabled. When supported the . built-in input variable will reflect the coverage after the early per-fragment depth and stencil tests are applied even when conservative rasterization is enabled. Otherwise  zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-earlytest-postdepthcoveragePostDepthCoverage execution mode must9 not be used when conservative rasterization is enabled. vulkan O specifies that conservative rasterization is enabled in underestimation mode. vulkan N specifies that conservative rasterization is enabled in overestimation mode. vulkan ^ specifies that conservative rasterization is disabled and rasterization proceeds as normal.    None("#%&'-./1789;=>?FHIMSUVX_dghklmq NvulkanwVkPipelineColorBlendAdvancedStateCreateInfoEXT - Structure specifying parameters that affect advanced blend operations Description"If this structure is not present, srcPremultiplied and dstPremultiplied are both considered to be ., and  blendOverlap is considered to be  . Valid Usage If the  zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendNonPremultipliedSrcColornon-premultiplied source color! property is not supported, srcPremultiplied must be . If the  zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendNonPremultipliedDstColor#non-premultiplied destination color! property is not supported, dstPremultiplied must be . If the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendCorrelatedOverlapcorrelated overlap! property is not supported,  blendOverlap must be  Valid Usage (Implicit)sType must be  blendOverlap must be a valid   valueSee Also , o, vulkanVkPhysicalDeviceBlendOperationAdvancedPropertiesEXT - Structure describing advanced blending limits that can be supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alsoo, vulkanVkPhysicalDeviceBlendOperationAdvancedFeaturesEXT - Structure describing advanced blending features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TK, it is filled with values indicating whether each feature is supported.  can also be included in the pNext chain of   to enable the features.Valid Usage (Implicit)See Alsoo,  vulkanDVkBlendOverlapEXT - Enumerant specifying the blend overlap parameter Description'# Overlap Mode V Weighting Equations      \begin{aligned} p_0(A_s,A_d) & = A_sA_d \\ p_1(A_s,A_d) & = A_s(1-A_d) \\ p_2(A_s,A_d) & = A_d(1-A_s) \\ \end{aligned}      \begin{aligned} p_0(A_s,A_d) & = min(A_s,A_d) \\ p_1(A_s,A_d) & = max(A_s-A_d,0) \\ p_2(A_s,A_d) & = max(A_d-A_s,0) \\ \end{aligned}      \begin{aligned} p_0(A_s,A_d) & = max(A_s+A_d-1,0) \\ p_1(A_s,A_d) & = min(A_s,1-A_d) \\ p_2(A_s,A_d) & = min(A_d,1-A_s) \\ \end{aligned} Advanced Blend Overlap ModesSee Also vulkansrcPremultipliedX specifies whether the source color of the blend operation is treated as premultiplied. vulkandstPremultiplied] specifies whether the destination color of the blend operation is treated as premultiplied. vulkan blendOverlap is a  R value specifying how the source and destination sample s coverage is correlated. vulkan advancedBlendMaxColorAttachments> is one greater than the highest color attachment index that can5 be used in a subpass, for a pipeline that uses an  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advancedadvanced blend operation. vulkanadvancedBlendIndependentBlend. specifies whether advanced blend operations can vary per-attachment. vulkan%advancedBlendNonPremultipliedSrcColor% specifies whether the source color can. be treated as non-premultiplied. If this is ., then ::srcPremultiplied must be .. vulkan%advancedBlendNonPremultipliedDstColor* specifies whether the destination color can. be treated as non-premultiplied. If this is ., then ::dstPremultiplied must be .. vulkanadvancedBlendCorrelatedOverlap% specifies whether the overlap mode can' be treated as correlated. If this is ., then :: blendOverlap must be  . vulkanadvancedBlendAllOperations^ specifies whether all advanced blend operation enums are supported. See the valid usage of 7. vulkanadvancedBlendCoherentOperations# specifies whether blending using  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advancedadvanced blend operations. is guaranteed to execute atomically and in  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-orderprimitive order. If this is .,  is treated the same as ^, and advanced blending needs no additional synchronization over basic blending. If this is ., then memory dependencies are required to guarantee order between two advanced blending operations that occur on the same sample. vulkan \ specifies that the source and destination coverage are considered to have maximal overlap. vulkan \ specifies that the source and destination coverage are considered to have minimal overlap. vulkan U specifies that there is no correlation between the source and destination coverage.                   None("#%&'-./1789;=>?FHIMSUVX_dghklmq XvulkanVkTextureLODGatherFormatPropertiesAMD - Structure informing whether or not texture gather bias/LOD functionality is supported for a given image format and a given physical device.Valid Usage (Implicit)See Alsoo,  ,vulkansupportsTextureGatherLODBiasAMDf tells if the image format can be used with texture gather bias/LOD functions, as introduced by the VK_AMD_texture_gather_bias_lodV extension. This field is set by the implementation. User-specified value is ignored. + , ) * - . + , * . ) -}None("#%&'-./1789;=>?FHIMSUVX_dghklmq feuvulkanVkPhysicalDeviceShaderCoreProperties2AMD - Structure describing shader core properties that can be supported by an implementationMembersThe members of the uC structure describe the following implementation-dependent limits: DescriptionIf the u structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Also 8,  9vulkanNVkShaderCorePropertiesFlagBitsAMD - Bitmask specifying shader core propertiesSee Alsou,  8 <vulkanshaderCoreFeatures is a bitmask of  9> indicating the set of features supported by the shader core. =vulkanactiveComputeUnitCount] is an unsigned integer value indicating the number of compute units that have been enabled. u ; < = 6 7 8 9 : > ? u ; < = 9 : 8 7 ? 6 >yNone("#%&'-./1789;=>?FHIMSUVX_dghklmq npnvulkanhVkPipelineCompilerControlCreateInfoAMD - Structure used to pass compilation control flags to a pipelineValid Usage (Implicit)See Also P,  Qvulkan[VkPipelineCompilerControlFlagBitsAMD - Enum specifying available compilation control flagsSee Also P TvulkancompilerControlFlags is a bitmask of  Q. affecting how the pipeline will be compiled.compilerControlFlags must be 0 n S T N O P Q R U V n S T Q R P O V N UqNone("#%&'-./1789;=>?FHIMSUVX_dghklmq vSVvulkanVkPhysicalDeviceCoherentMemoryFeaturesAMD - Structure describing whether device coherent memory can be supported by an implementationMembersThe members of the V, structure describe the following features:Valid Usage (Implicit)See Alsoo,  hvulkandeviceCoherentMemory- indicates that the implementation supports  VkMemoryPropertyFlagBits.htmldevice coherent memory.V g h e f i jV g h f j e ioNone("#%&'-./1789;=>?FHIMSUVX_dghklmq ,IvulkanhVkPhysicalDeviceVulkanMemoryModelFeatures - Structure describing features supported by the memory modelValid Usage (Implicit)See Alsoo,  svulkanvulkanMemoryModelI indicates whether the Vulkan Memory Model is supported, as defined in  Zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-modelVulkan Memory Model.. This also indicates whether shader modules can declare the VulkanMemoryModel capability. tvulkanvulkanMemoryModelDeviceScope4 indicates whether the Vulkan Memory Model can use /D scope synchronization. This also indicates whether shader modules can declare the VulkanMemoryModelDeviceScope capability. uvulkan-vulkanMemoryModelAvailabilityVisibilityChains5 indicates whether the Vulkan Memory Model can use  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-model-availability-visibility"availability and visibility chains with more than one element.I r s t u~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      wI r s t u~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      (None("#%&'-./1789;=>?FHIMSUVX_dghklmq  } ~    ~ } nNone("#%&'-./1789;=>?FHIMSUVX_dghklmq Hvulkan~VkPhysicalDeviceUniformBufferStandardLayoutFeatures - Structure indicating support for std430-like packing in uniform buffersMembersThe members of the H, structure describe the following features: DescriptionIf the H structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported. H can also be included in the pNext chain of   to enable this feature.Valid Usage (Implicit)See Alsoo,  vulkanuniformBufferStandardLayout indicates that the implementation supports the same layouts for uniform buffers as for storage and other kinds of buffers. See  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources-standard-layoutStandard Buffer Layout.H ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      uH ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      )None("#%&'-./1789;=>?FHIMSUVX_dghklmq   lNone("#%&'-./1789;=>?FHIMSUVX_dghklmq AvulkanVkPhysicalDeviceShaderSubgroupExtendedTypesFeatures - Structure describing the extended types subgroups support feature for an implementationMembersThe members of the A, structure describe the following features: DescriptionIf the A structure is included in the pNext chain of TK, it is filled with values indicating whether each feature is supported. A can also be included in the pNext chain of   to enable features.Valid Usage (Implicit)See Alsoo,  vulkanshaderSubgroupExtendedTypes is a boolean that specifies whether subgroup operations can use 8-bit integer, 16-bit integer, 64-bit integer, 16-bit floating-point, and vectors of these types in  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operationsgroup operations with  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroupsubgroup scope*if the implementation supports the types.A ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      uA ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      *None("#%&'-./1789;=>?FHIMSUVX_dghklmq 3  kNone("#%&'-./1789;=>?FHIMSUVX_dghklmq :V@vulkantVkPhysicalDeviceFloatControlsProperties - Structure describing properties supported by VK_KHR_shader_float_controlsMembersThe members of the @C structure describe the following implementation-dependent limits: DescriptionIf the @ structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alsoo, _,  vulkandenormBehaviorIndependence is a _h value indicating whether, and how, denorm behavior can be set independently for different bit widths. vulkanroundingModeIndependence is a _g value indicating whether, and how, rounding modes can be set independently for different bit widths. vulkan%shaderSignedZeroInfNanPreserveFloat16A is a boolean value indicating whether sign of a zero, Nans and  \pm\infty canU be preserved in 16-bit floating-point computations. It also indicates whether the SignedZeroInfNanPreserve execution mode can* be used for 16-bit floating-point types. vulkan%shaderSignedZeroInfNanPreserveFloat32A is a boolean value indicating whether sign of a zero, Nans and  \pm\infty canU be preserved in 32-bit floating-point computations. It also indicates whether the SignedZeroInfNanPreserve execution mode can* be used for 32-bit floating-point types. vulkan%shaderSignedZeroInfNanPreserveFloat64A is a boolean value indicating whether sign of a zero, Nans and  \pm\infty canU be preserved in 64-bit floating-point computations. It also indicates whether the SignedZeroInfNanPreserve execution mode can* be used for 64-bit floating-point types. vulkanshaderDenormPreserveFloat162 is a boolean value indicating whether denormals canT be preserved in 16-bit floating-point computations. It also indicates whether the DenormPreserve execution mode can* be used for 16-bit floating-point types. vulkanshaderDenormPreserveFloat322 is a boolean value indicating whether denormals canT be preserved in 32-bit floating-point computations. It also indicates whether the DenormPreserve execution mode can* be used for 32-bit floating-point types. vulkanshaderDenormPreserveFloat642 is a boolean value indicating whether denormals canT be preserved in 64-bit floating-point computations. It also indicates whether the DenormPreserve execution mode can* be used for 64-bit floating-point types. vulkanshaderDenormFlushToZeroFloat162 is a boolean value indicating whether denormals canZ be flushed to zero in 16-bit floating-point computations. It also indicates whether the DenormFlushToZero execution mode can) be used for 16-bit floating-point types. vulkanshaderDenormFlushToZeroFloat322 is a boolean value indicating whether denormals canZ be flushed to zero in 32-bit floating-point computations. It also indicates whether the DenormFlushToZero execution mode can) be used for 32-bit floating-point types. vulkanshaderDenormFlushToZeroFloat642 is a boolean value indicating whether denormals canZ be flushed to zero in 64-bit floating-point computations. It also indicates whether the DenormFlushToZero execution mode can) be used for 64-bit floating-point types. vulkanshaderRoundingModeRTEFloat16 is a boolean value indicating whether an implementation supports the round-to-nearest-even rounding mode for 16-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTE execution mode can* be used for 16-bit floating-point types. vulkanshaderRoundingModeRTEFloat32 is a boolean value indicating whether an implementation supports the round-to-nearest-even rounding mode for 32-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTE execution mode can* be used for 32-bit floating-point types. vulkanshaderRoundingModeRTEFloat64 is a boolean value indicating whether an implementation supports the round-to-nearest-even rounding mode for 64-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTE execution mode can* be used for 64-bit floating-point types. vulkanshaderRoundingModeRTZFloat16 is a boolean value indicating whether an implementation supports the round-towards-zero rounding mode for 16-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTZ execution mode can* be used for 16-bit floating-point types. vulkanshaderRoundingModeRTZFloat32 is a boolean value indicating whether an implementation supports the round-towards-zero rounding mode for 32-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTZ execution mode can* be used for 32-bit floating-point types. vulkanshaderRoundingModeRTZFloat64 is a boolean value indicating whether an implementation supports the round-towards-zero rounding mode for 64-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTZ execution mode can* be used for 64-bit floating-point types.@ _`cba~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      @ ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      _`cbacba+None("#%&'-./1789;=>?FHIMSUVX_dghklmq QP jNone("#%&'-./1789;=>?FHIMSUVX_dghklmq gz?vulkanrVkPhysicalDeviceShaderFloat16Int8Features - Structure describing features supported by VK_KHR_shader_float16_int8Valid Usage (Implicit)See Alsoo,  vulkan shaderFloat16s indicates whether 16-bit floats (halfs) are supported in shader code. This also indicates whether shader modules can declare the Float16d capability. However, this only enables a subset of the storage classes that SPIR-V allows for the Float16> SPIR-V capability: Declaring and using 16-bit floats in the Private,  Workgroup, and Function[ storage classes is enabled, while declaring them in the interface storage classes (e.g., UniformConstant, Uniform,  StorageBuffer, Input, Output, and  PushConstant) is not enabled. vulkan shaderInt8 indicates whether 8-bit integers (signed and unsigned) are supported in shader code. This also indicates whether shader modules can declare the Int8d capability. However, this only enables a subset of the storage classes that SPIR-V allows for the Int8? SPIR-V capability: Declaring and using 8-bit integers in the Private,  Workgroup, and Function[ storage classes is enabled, while declaring them in the interface storage classes (e.g., UniformConstant, Uniform,  StorageBuffer, Input, Output, and  PushConstant) is not enabled.? ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      v? ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ,None("#%&'-./1789;=>?FHIMSUVX_dghklmq }  iNone("#%&'-./1789;=>?FHIMSUVX_dghklmq >vulkanrVkPhysicalDeviceShaderAtomicInt64Features - Structure describing features supported by VK_KHR_shader_atomic_int64Valid Usage (Implicit)See Alsoo,  vulkanshaderBufferInt64Atomics indicates whether shaders canJ support 64-bit unsigned and signed integer atomic operations on buffers. vulkanshaderSharedInt64Atomics indicates whether shaders canP support 64-bit unsigned and signed integer atomic operations on shared memory.> ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      v> ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      -None("#%&'-./1789;=>?FHIMSUVX_dghklmq   aNone("#%&'-./1789;=>?FHIMSUVX_dghklmq %vulkaneVkPhysicalDevice8BitStorageFeatures - Structure describing features supported by VK_KHR_8bit_storageValid Usage (Implicit)See Alsoo,  vulkanstorageBuffer8BitAccess# indicates whether objects in the  StorageBuffer or PhysicalStorageBuffer storage class with the Block decoration canT have 8-bit integer members. If this feature is not enabled, 8-bit integer members mustJ not be used in such objects. This also indicates whether shader modules can declare the StorageBuffer8BitAccess capability. vulkan!uniformAndStorageBuffer8BitAccess# indicates whether objects in the Uniform storage class with the Block decoration and in the  StorageBuffer or PhysicalStorageBuffer) storage class with the same decoration canT have 8-bit integer members. If this feature is not enabled, 8-bit integer members mustJ not be used in such objects. This also indicates whether shader modules can declare the !UniformAndStorageBuffer8BitAccess capability. vulkanstoragePushConstant8" indicates whether objects in the  PushConstant storage class canT have 8-bit integer members. If this feature is not enabled, 8-bit integer members mustJ not be used in such objects. This also indicates whether shader modules can declare the StoragePushConstant8 capability.% ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      w% ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      .None("#%&'-./1789;=>?FHIMSUVX_dghklmq (  _None("#%&'-./1789;=>?FHIMSUVX_dghklmq #vulkanbVkPhysicalDeviceScalarBlockLayoutFeatures - Structure indicating support for scalar block layoutsMembersThe members of the #, structure describe the following features: DescriptionIf the # structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported. # can also be included in the pNext chain of   to enable this feature.Valid Usage (Implicit)See Alsoo,  vulkanscalarBlockLayout] indicates that the implementation supports the layout of resource blocks in shaders using  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-alignment-requirementsscalar alignment.# ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      u# ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      /None("#%&'-./1789;=>?FHIMSUVX_dghklmq           0None("#%&'-./1789;=>?FHIMSUVX_dghklmq  vulkanaVkSemaphoreWaitFlagBits - Bitmask specifying additional parameters of a semaphore wait operationSee Also  vulkan Y specifies that the semaphore wait condition is that at least one of the semaphores in mG:: pSemaphoresC has reached the value specified by the corresponding element of mG::pValues. If  M is not set, the semaphore wait condition is that all of the semaphores in mG:: pSemaphoresD have reached the value specified by the corresponding element of mG::pValues.      1None("#%&'-./1789;=>?FHIMSUVX_dghklmq  vulkanUVkResolveModeFlagBits - Bitmask indicating supported depth and stencil resolve modesSee Also , dQ vulkan U indicates that result of the resolve operation is the maximum of the sample values. vulkan U indicates that result of the resolve operation is the minimum of the sample values. vulkan U indicates that result of the resolve operation is the average of the sample values. vulkan S indicates that result of the resolve operation is equal to the value of sample 0. vulkan - indicates that no resolve operation is done.                     2None("#%&'-./1789;=>?FHIMSUVX_dghklmq . !vulkanZVkDescriptorBindingFlagBits - Bitmask specifying descriptor set layout binding properties DescriptionNoteNote that while  & and  %A both involve updates to descriptor sets after they are bound,  %Y is a weaker requirement since it is only about descriptors that are not used, whereas  &N requires the implementation to observe updates to descriptors that are used.See Also #vulkan # indicates that this descriptor binding has a variable size that will be specified when a descriptor set is allocated using this layout. The value of descriptorCount@ is treated as an upper bound on the size of the binding. This mustm only be used for the last binding in the descriptor set layout (i.e. the binding with the largest value of binding8). For the purposes of counting against limits such as maxDescriptorSet* and maxPerStageDescriptor*, the full value of descriptorCountI is counted , except for descriptor bindings with a descriptor type of o where descriptorCountY specifies the upper bound on the byte size of the binding, thus it counts against the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxInlineUniformBlockSizemaxInlineUniformBlockSize limit instead. . $vulkan $: indicates that descriptors in this binding that are not dynamically used need not contain valid descriptors at the time the descriptors are consumed. A descriptor is dynamically used if any shader invocation executes an instruction that performs any memory access using the descriptor. %vulkan %- indicates that descriptors in this binding can be updated after a command buffer has bound this descriptor set, or while a command buffer that uses this descriptor set is pending execution, as long as the descriptors that are updated are not used by those command buffers. If  $ is also set, then descriptors canT be updated as long as they are not dynamically used by any shader invocations. If  $ is not set, then descriptors canO be updated as long as they are not statically used by any shader invocations. &vulkan & indicates that if descriptors in this binding are updated between when the descriptor set is bound in a command buffer and when that command buffer is submitted to a queue, then the submission will use the most recently set descriptors for this binding and the updates do not invalidate the command buffer. Descriptor bindings created with this flag are also partially exempt from the external synchronization requirement in  and  +. Multiple descriptors with this flag set canK be updated concurrently in different threads, though the same descriptor mustM not be updated concurrently by two threads. Descriptors with this flag set can be updated concurrently with the set being bound to a command buffer in another thread, but not concurrently with the set being reset or freed. ! & % $ # " ! & % $ # " & % $ # None("#%&'-./1789;=>?FHIMSUVX_dghklmq 00_`cbajkmltuxwv            ! " & % $ #ZNone("#%&'-./1789;=>?FHIMSUVX_dghklmq E vulkanVkPhysicalDeviceVariablePointersFeatures - Structure describing variable pointers features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionvariablePointersStorageBuffer? specifies whether the implementation supports the SPIR-V VariablePointersStorageBufferC capability. When this feature is not enabled, shader modules must not declare the SPV_KHR_variable_pointers extension or the VariablePointersStorageBuffer capability.variablePointers? specifies whether the implementation supports the SPIR-V VariablePointersC capability. When this feature is not enabled, shader modules must not declare the VariablePointers capability.If the  structure is included in the pNext chain of TK, it is filled with values indicating whether each feature is supported.  can also be included in the pNext chain of   to enable the features. Valid UsageIf variablePointers is enabled then variablePointersStorageBuffer must also be enabledValid Usage (Implicit)sType must be &See Alsoo,  / 0 1~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!       . 2x 2 / 0 1 .~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      3None("#%&'-./1789;=>?FHIMSUVX_dghklmq [~ : ; < = > ? @ A A @ = < ; ? : >YNone("#%&'-./1789;=>?FHIMSUVX_dghklmq cvulkanVkPhysicalDeviceShaderDrawParametersFeatures - Structure describing shader draw parameter features that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of TI, it is filled with a value indicating whether the feature is supported.Valid Usage (Implicit)See Alsoo,  DvulkanshaderDrawParameters9 specifies whether shader draw parameters are supported. C D~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!       B Ew E C D B~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      FNone("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkangVkPhysicalDevice16BitStorageFeatures - Structure describing features supported by VK_KHR_16bit_storageValid Usage (Implicit)See Alsoo,  NvulkanstorageBuffer16BitAccess# specifies whether objects in the  StorageBuffer or PhysicalStorageBuffer storage class with the Block decoration can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members mustJ not be used in such objects. This also specifies whether shader modules can declare the StorageBuffer16BitAccess capability. Ovulkan"uniformAndStorageBuffer16BitAccess# specifies whether objects in the Uniform storage class with the Block decoration and in the  StorageBuffer or PhysicalStorageBuffer) storage class with the same decoration can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members mustJ not be used in such objects. This also specifies whether shader modules can declare the "UniformAndStorageBuffer16BitAccess capability. PvulkanstoragePushConstant16" specifies whether objects in the  PushConstant storage class can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or floating-point members mustJ not be used in such objects. This also specifies whether shader modules can declare the StoragePushConstant16 capability. QvulkanstorageInputOutput16" specifies whether objects in the Input and Output storage classes can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members mustJ not be used in such objects. This also specifies whether shader modules can declare the StorageInputOutput16 capability. M N O P Q~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      x M N O P Q~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      4None("#%&'-./1789;=>?FHIMSUVX_dghklmq h Y Z [ \ ] ^ ^ [ Z ] Y \5None("#%&'-./1789;=>?FHIMSUVX_dghklmq `vulkandVkSubgroupFeatureFlagBits - Enum describing what group operations are supported with subgroup scopeSee Also _ bvulkan bH specifies the device will accept SPIR-V shader modules containing the GroupNonUniformPartitionedNV capability. cvulkan cH specifies the device will accept SPIR-V shader modules containing the GroupNonUniformQuad capability. dvulkan dH specifies the device will accept SPIR-V shader modules containing the GroupNonUniformClustered capability. evulkan eH specifies the device will accept SPIR-V shader modules containing the GroupNonUniformShuffleRelative capability. fvulkan fH specifies the device will accept SPIR-V shader modules containing the GroupNonUniformShuffle capability. gvulkan gH specifies the device will accept SPIR-V shader modules containing the GroupNonUniformBallot capability. hvulkan hH specifies the device will accept SPIR-V shader modules containing the GroupNonUniformArithmetic capability. ivulkan iH specifies the device will accept SPIR-V shader modules containing the GroupNonUniformVote capability. jvulkan jH specifies the device will accept SPIR-V shader modules containing the GroupNonUniform capability. _ ` j i h g f e d c b a ` j i h g f e d c b a j i h g f e d c b _6None("#%&'-./1789;=>?FHIMSUVX_dghklmq  svulkanaVkSemaphoreImportFlagBits - Bitmask specifying additional parameters of semaphore payload import Description'These bits have the following meanings:See Also r uvulkan u[ specifies that the semaphore payload will be imported only temporarily, as described in  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importingImporting Semaphore Payloads#, regardless of the permanence of  handleType. r s u t s u t u rBNone("#%&'-./1789;=>?FHIMSUVX_dghklmq KvulkanPVkPeerMemoryFeatureFlagBits - Bitmask specifying supported peer memory features DescriptionNoteKThe peer memory features of a memory heap also apply to any accesses that may be performed during  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transitions.  mustO be supported for all host local heaps and for at least one device local heap.If a device does not support a peer memory feature, it is still valid to use a resource that includes both local and peer memory bindings with the corresponding access type as long as only the local bindings are actually accessed. For example, an application doing split-frame rendering would use framebuffer attachments that include both local and peer memory bindings, but would scissor the rendering to only update local memory.See Also ~vulkan ~ specifies that the memory canT be written as any memory access type. Shader atomics are considered to be writes. vulkan  specifies that the memory can$ be read as any memory access type. vulkan  specifies that the memory can' be accessed as the destination of a , , , or  command. vulkan  specifies that the memory can" be accessed as the source of a , , , or  command.  ~ }  ~ }  ~7None("#%&'-./1789;=>?FHIMSUVX_dghklmq  vulkanSVkMemoryAllocateFlagBits - Bitmask specifying flags for a device memory allocationSee Also vulkan  specifies that the memory can3 be attached to a buffer object created with the z bit set in usage, and that the memory handle can- be used to retrieve an opaque address via b. vulkan & specifies that the memory s address canT be saved and reused on a subsequent run (e.g. for trace capture and replay), see b for more detail. vulkan > specifies that memory will be allocated for the devices in Jr:: deviceMask. 8None("#%&'-./1789;=>?FHIMSUVX_dghklmq  vulkanYVkFenceImportFlagBits - Bitmask specifying additional parameters of fence payload importSee Also vulkan W specifies that the fence payload will be imported only temporarily, as described in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importingImporting Fence Payloads#, regardless of the permanence of  handleType.  9None("#%&'-./1789;=>?FHIMSUVX_dghklmq 37 vulkanYVkExternalSemaphoreHandleTypeFlagBits - Bitmask of valid external semaphore handle types DescriptionNoteHandles of type   generated by the implementation may represent either Linux Sync Files or Android Fences at the implementation s discretion. Applications should only use operations defined for both types of file descriptors, unless they know via means external to Vulkan the type of the file descriptor, or are prepared to deal with the system-defined operation failures resulting from using the wrong type.Some external semaphore handle types can only be shared within the same underlying physical device and/or the same driver version, as defined in the following table:7 Handle type  P:: driverUUID  P:: deviceUUID    l Must match l Must match    l Must match l Must match    l Must match l Must match    l Must match l Must match    l No restriction l No restriction -External semaphore handle types compatibilitySee Also , j, k, R, D, E vulkan M specifies a POSIX file descriptor handle to a Linux Sync File or Android Fence object. It can be used with any native API accepting a valid sync file or fence as input. It owns a reference to the underlying synchronization primitive associated with the file descriptor. Implementations which support importing this handle type mustY accept any type of sync or fence FD supported by the native system they are running on. vulkan % specifies an NT handle returned by  ID3D12Device::CreateSharedHandle referring to a Direct3D 12 fence. It owns a reference to the underlying synchronization primitive associated with the Direct3D fence. vulkan w specifies a global share handle that has only limited valid usage outside of Vulkan and other compatible APIs. It is not compatible with any native APIs. It does not own a reference to the underlying synchronization primitive represented its Vulkan semaphore object, and will therefore become invalid when all Vulkan semaphore objects associated with it are destroyed. vulkan l specifies an NT handle that has only limited valid usage outside of Vulkan and other compatible APIs. It must" be compatible with the functions DuplicateHandle,  CloseHandle, CompareObjectHandles, GetHandleInformation, and SetHandleInformationn. It owns a reference to the underlying synchronization primitive represented by its Vulkan semaphore object. vulkan ~ specifies a POSIX file descriptor handle that has only limited valid usage outside of Vulkan and other compatible APIs. It must, be compatible with the POSIX system calls dup, dup2, close#, and the non-standard system call dup3. Additionally, it must* be transportable over a socket using an  SCM_RIGHTS~ control message. It owns a reference to the underlying synchronization primitive represented by its Vulkan semaphore object. QNone("#%&'-./1789;=>?FHIMSUVX_dghklmq >vulkanfVkExportSemaphoreCreateInfo - Structure specifying handle types that can be exported from a semaphore Valid Usage The bits in  handleTypes must7 be supported and compatible, as reported by R=Valid Usage (Implicit)sType must be = handleTypes must be a valid combination of 9 valuesSee Also ,  vulkan handleTypes is a bitmask of 9@ specifying one or more semaphore handle types the application can7 export from the resulting semaphore. The application can7 request multiple handle types for the same semaphore. ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!       r s t uz ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!       s t u u r:None("#%&'-./1789;=>?FHIMSUVX_dghklmq Tr ;None("#%&'-./1789;=>?FHIMSUVX_dghklmq [ vulkangVkExternalSemaphoreFeatureFlagBits - Bitfield describing features of an external semaphore handle typeSee Also vulkan & specifies that handles of this type can) be imported as Vulkan semaphore objects. vulkan & specifies that handles of this type can+ be exported from Vulkan semaphore objects.  ANone("#%&'-./1789;=>?FHIMSUVX_dghklmq X vulkanQVkExternalMemoryHandleTypeFlagBits - Bit specifying external memory handle types DescriptionSome external memory handle types can only be shared within the same underlying physical device and/or the same driver version, as defined in the following table: C Handle type  P:: driverUUID  P:: deviceUUID    l Must match l Must match    l Must match l Must match    l Must match l Must match    l Must match l Must match    l Must match l Must match    l Must match l Must match    l Must match l Must match    l No restriction l No restriction    l No restriction l No restriction    l No restriction l No restriction    l No restriction l No restriction *External memory handle types compatibilityNoteFThe above table does not restrict the drivers and devices with which   and   may be shared, as these handle types inherently mean memory that does not come from the same device, as they import memory from the host or a foreign device, respectively.NoteREven though the above table does not restrict the drivers and devices with which   mayr be shared, query mechanisms exist in the Vulkan API that prevent the import of incompatible dma-bufs (such as =) and that prevent incompatible usage of dma-bufs (such as P and P).See Also, f, g, h, y, z, P, P, , ,  vulkan  is a file descriptor for a Linux dma_buf. It owns a reference to the underlying memory resource represented by its Vulkan memory object. vulkan  specifies an * object defined by the Android NDK. See  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-bufferAndroid Hardware Buffers' for more details of this handle type. vulkan  specifies a host pointer returned by a host memory allocation command. It does not own a reference to the underlying memory resource, and will therefore become invalid if the host memory is freed. vulkan  specifies a host pointer to host mapped foreign memory. It does not own a reference to the underlying memory resource, and will therefore become invalid if the foreign memory is unmapped or otherwise becomes no longer available. vulkan % specifies an NT handle returned by  ID3D12Device::CreateSharedHandler referring to a Direct3D 12 committed resource. It owns a reference to the memory used by the Direct3D resource. vulkan % specifies an NT handle returned by  ID3D12Device::CreateSharedHandlel referring to a Direct3D 12 heap resource. It owns a reference to the resources used by the Direct3D heap. vulkan . specifies a global share handle returned by  IDXGIResource::GetSharedHandle referring to a Direct3D 10 or 11 texture resource. It does not own a reference to the underlying Direct3D resource, and will therefore become invalid when all Vulkan memory objects and Direct3D resources associated with it are destroyed. vulkan % specifies an NT handle returned by IDXGIResource1::CreateSharedHandlev referring to a Direct3D 10 or 11 texture resource. It owns a reference to the memory used by the Direct3D resource. vulkan f specifies a global share handle that has only limited valid usage outside of Vulkan and other compatible APIs. It is not compatible with any native APIs. It does not own a reference to the underlying memory resource represented its Vulkan memory object, and will therefore become invalid when all Vulkan memory objects associated with it are destroyed. vulkan l specifies an NT handle that has only limited valid usage outside of Vulkan and other compatible APIs. It must" be compatible with the functions DuplicateHandle,  CloseHandle, CompareObjectHandles, GetHandleInformation, and SetHandleInformationa. It owns a reference to the underlying memory resource represented by its Vulkan memory object. vulkan ~ specifies a POSIX file descriptor handle that has only limited valid usage outside of Vulkan and other compatible APIs. It must, be compatible with the POSIX system calls dup, dup2, close#, and the non-standard system call dup3. Additionally, it must* be transportable over a socket using an  SCM_RIGHTSq control message. It owns a reference to the underlying memory resource represented by its Vulkan memory object.  <None("#%&'-./1789;=>?FHIMSUVX_dghklmq & vulkan`VkExternalMemoryFeatureFlagBits - Bitmask specifying features of an external memory handle type DescriptionBecause their semantics in external APIs roughly align with that of an image or buffer with a dedicated allocation in Vulkan, implementations are required to report  * for the following external handle types:Implementations must not report  ) for buffers with external handle type A. Implementations must not report  3 for images or buffers with external handle type A , or A .See Also vulkan & specifies that handles of this type can& be imported as Vulkan memory objects. vulkan & specifies that handles of this type can( be exported from Vulkan memory objects. vulkan Y specifies that images or buffers created with the specified parameters and handle type must! use the mechanisms defined by Hv and HuG to create (or import) a dedicated allocation for the image or buffer. =None("#%&'-./1789;=>?FHIMSUVX_dghklmq  vulkanQVkExternalFenceHandleTypeFlagBits - Bitmask of valid external fence handle types DescriptionSome external fence handle types can only be shared within the same underlying physical device and/or the same driver version, as defined in the following table:3 Handle type  P:: driverUUID  P:: deviceUUID    l Must match l Must match    l Must match l Must match    l Must match l Must match    l No restriction l No restriction )External fence handle types compatibilitySee Also , ?, @, d, e, N vulkan F specifies a POSIX file descriptor handle to a Linux Sync File or Android Fence. It can be used with any native API accepting a valid sync file or fence as input. It owns a reference to the underlying synchronization primitive associated with the file descriptor. Implementations which support importing this handle type mustY accept any type of sync or fence FD supported by the native system they are running on. vulkan q specifies a global share handle that has only limited valid usage outside of Vulkan and other compatible APIs. It is not compatible with any native APIs. It does not own a reference to the underlying synchronization primitive represented by its Vulkan fence object, and will therefore become invalid when all Vulkan fence objects associated with it are destroyed. vulkan l specifies an NT handle that has only limited valid usage outside of Vulkan and other compatible APIs. It must" be compatible with the functions DuplicateHandle,  CloseHandle, CompareObjectHandles, GetHandleInformation, and SetHandleInformationj. It owns a reference to the underlying synchronization primitive represented by its Vulkan fence object. vulkan ~ specifies a POSIX file descriptor handle that has only limited valid usage outside of Vulkan and other compatible APIs. It must, be compatible with the POSIX system calls dup, dup2, close#, and the non-standard system call dup3. Additionally, it must* be transportable over a socket using an  SCM_RIGHTSz control message. It owns a reference to the underlying synchronization primitive represented by its Vulkan fence object. MNone("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkan^VkExportFenceCreateInfo - Structure specifying handle types that can be exported from a fence Valid Usage The bits in  handleTypes must7 be supported and compatible, as reported by N7Valid Usage (Implicit)sType must be < handleTypes must be a valid combination of =  valuesSee Also ,  vulkan handleTypes is a bitmask of = < specifying one or more fence handle types the application can3 export from the resulting fence. The application can3 request multiple handle types for the same fence. ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!       z ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!       >None("#%&'-./1789;=>?FHIMSUVX_dghklmq )i         ?None("#%&'-./1789;=>?FHIMSUVX_dghklmq / vulkan_VkExternalFenceFeatureFlagBits - Bitfield describing features of an external fence handle typeSee Also  vulkan ! specifies handles of this type can% be imported to Vulkan fence objects. vulkan ! specifies handles of this type can' be exported from Vulkan fence objects.            @None("#%&'-./1789;=>?FHIMSUVX_dghklmq 4- vulkan?VkDescriptorUpdateTemplateCreateFlags - Reserved for future use Description Q is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoI    @None("#%&'-./1789;=>?FHIMSUVX_dghklmq 8pvulkan0VkCommandPoolTrimFlags - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also ,   # #None("#%&'-./1789;=>?FHIMSUVX_dghklmq 9m # }  ~ _ ` a j i h g f e d c b r s t u       ANone("#%&'-./1789;=>?FHIMSUVX_dghklmq RP ,vulkanDVkSubpassDescriptionFlagBits - Bitmask specifying usage of a subpass DescriptionNoteWShader resolve operations allow for custom resolve operations, but overdrawing pixels may! have a performance and/or power cost. Furthermore, since the contents of any depth stencil attachment or color attachment is undefined at the begining of a shader resolve subpass, any depth testing, stencil testing, or blending which sources these undefined values are also undefined.See Also + .vulkan . specifies that shaders compiled for this subpass write the attributes for all views in a single invocation of each vertex processing stage. All pipelines compiled against a subpass that includes this bit must# write per-view attributes to the  *PerViewNV[]8 shader outputs, in addition to the non-per-view (e.g. Position ) outputs. /vulkan / specifies that shaders compiled for this subpass use per-view positions which only differ in value in the x component. Per-view viewport mask can also be used. 0vulkan 0 specifies that the framebuffer region is the fragment region, that is, the minimum region dependencies are by pixel rather than by sample, such that any fragment shader invocation canD access any sample associated with that fragment shader invocation. 1vulkan 1@ specifies that the subpass performs shader resolve operations. + , 1 0 / . - , 1 0 / . - 1 0 / . +'None("#%&'-./1789;=>?FHIMSUVX_dghklmq YevulkanfVkStencilFaceFlagBits - Bitmask specifying sets of stencil state for which to update the compare maskSee Alsod :vulkan : is the combination of  < and  ;=, and specifies that both sets of stencil state are updated. ;vulkan ;? specifies that only the back set of stencil state is updated. <vulkan <@ specifies that only the front set of stencil state is updated.de < ; : 9 e < ; : 9 < ; :dBNone("#%&'-./1789;=>?FHIMSUVX_dghklmq ^ Evulkan[VkSparseMemoryBindFlagBits - Bitmask specifying usage of a sparse memory binding operationSee Also D Gvulkan GH specifies that the memory being bound is only for the metadata aspect. D E G F E G F G DCNone("#%&'-./1789;=>?FHIMSUVX_dghklmq ir PvulkanfVkSparseImageFormatFlagBits - Bitmask specifying additional information about a sparse image resourceSee Also O Rvulkan RU specifies that the image uses non-standard sparse image block dimensions, and the imageGranularityV values do not match the standard sparse image block dimensions for the given format. Svulkan S specifies that the first mip level whose dimensions are not integer multiples of the corresponding dimensions of the sparse image block begins the mip tail region. Tvulkan TN specifies that the image uses a single mip tail region for all array layers. O P T S R Q P T S R Q T S R O&None("#%&'-./1789;=>?FHIMSUVX_dghklmq }cvulkan;VkShaderStageFlagBits - Bitmask specifying a pipeline stage DescriptionNote f only includes the original five graphics stages included in Vulkan 1.0, and not any stages added by extensions. Thus, it may not have the desired effect in all cases.See Also7, b,  ]vulkan ]$ specifies the ray generation stage. ^vulkan ^ specifies the any-hit stage. _vulkan _! specifies the closest hit stage. `vulkan ` specifies the miss stage. avulkan a" specifies the intersection stage. bvulkan b specifies the callable stage. cvulkan c specifies the task stage. dvulkan d specifies the mesh stage. evulkan e is a combination of bits used as shorthand to specify all shader stages supported by the device, including all additional stages which are introduced by extensions. fvulkan fy is a combination of bits used as shorthand to specify all graphics stages defined above (excluding the compute stage). gvulkan g specifies the compute stage. hvulkan h specifies the fragment stage. ivulkan i specifies the geometry stage. jvulkan j. specifies the tessellation evaluation stage. kvulkan k+ specifies the tessellation control stage. lvulkan l specifies the vertex stage.bc l k j i h g f e d c b a ` _ ^ ] \#c l k j i h g f e d c b a ` _ ^ ] \ l k j i h g f e d c b a ` _ ^ ]bNone("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkanVkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT - Structure specifying the required subgroup size of a newly created pipeline shader stage Valid Usage DescriptionIf a  structure is included in the pNext chain of 7\, it specifies that the pipeline shader stage being compiled has a required subgroup size.Valid Usage (Implicit)See AlsovulkanVkPhysicalDeviceSubgroupSizeControlPropertiesEXT - Structure describing the control subgroup size properties of an implementationMembersThe members of the . structure describe the following properties: DescriptionIf the  structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.If E::supportedOperations includes  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroup-quad, minSubgroupSize must be greater than or equal to 4.Valid Usage (Implicit)See Alsob, vulkanVkPhysicalDeviceSubgroupSizeControlFeaturesEXT - Structure describing the subgroup size control features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of   to enable the feature.NoteThe * structure was added in version 2 of the VK_EXT_subgroup_size_control extension. Version 1 implementations of this extension will not fill out the features structure but applications may assume that both subgroupSizeControl and computeFullSubgroups> are supported if the extension is supported. (See also the  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-requirementsFeature Requirements/ section.) Applications are advised to add a  structure to the pNext chain of   to enable the features regardless of the version of the extension supported by the implementation. If the implementation only supports version 1, it will safely ignore the  structure.Valid Usage (Implicit)See Alsoo,  wvulkanrequiredSubgroupSize must be a power-of-two integerrequiredSubgroupSize must be greater or equal to fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-min-subgroup-sizeminSubgroupSizerequiredSubgroupSize must be less than or equal to fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroup-sizemaxSubgroupSize yvulkanminSubgroupSize9 is the minimum subgroup size supported by this device. minSubgroupSizeA is at least one if any of the physical device s queues support H or H. minSubgroupSize is a power-of-two. minSubgroupSize is less than or equal to maxSubgroupSize. minSubgroupSize is less than or equal to  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subgroup-size subgroupSize. zvulkanmaxSubgroupSize9 is the maximum subgroup size supported by this device. maxSubgroupSizeA is at least one if any of the physical device s queues support H or H. maxSubgroupSize is a power-of-two. maxSubgroupSize is greater than or equal to minSubgroupSize. maxSubgroupSize is greater than or equal to  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subgroup-size subgroupSize. {vulkanmaxComputeWorkgroupSubgroupsX is the maximum number of subgroups supported by the implementation within a workgroup. |vulkanrequiredSubgroupSizeStagesX is a bitfield of what shader stages support having a required subgroup size specified. ~vulkansubgroupSizeControl[ indicates whether the implementation supports controlling shader subgroup sizes via the O flag and the  structure. vulkancomputeFullSubgroupse indicates whether the implementation supports requiring full subgroups in compute shaders via the O flag. v w x y z { | } ~  t u  } ~  x y z { | v w u t ENone("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkanaVkPhysicalDeviceSubgroupProperties - Structure describing subgroup support for an implementationMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.If supportedOperations includes  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroup-quad,  subgroupSize must be greater than or equal to 4.Valid Usage (Implicit)See Alsoo, b, ,  _ vulkan subgroupSize9 is the default number of invocations in each subgroup.  subgroupSize? is at least 1 if any of the physical device s queues support H or H.  subgroupSize is a power-of-two. vulkansupportedStages is a bitfield of &% describing the shader stages that  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operationsgroup operations with  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroupsubgroup scope are supported in. supportedStages will have the &: bit set if any of the physical device s queues support H. vulkansupportedOperations is a bitmask of  ` specifying the sets of  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operationsgroup operations with  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroupsubgroup scope supported on this device. supportedOperations will have the  j: bit set if any of the physical device s queues support H or H. vulkanquadOperationsInAllStages" is a boolean specifying whether  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-quad-operationsquad group operationsQ are available in all stages, or are restricted to fragment and compute stages. ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!       _ ` a j i h g f e d c b ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!       ` a j i h g f e d c b j i h g f e d c b _DNone("#%&'-./1789;=>?FHIMSUVX_dghklmq   ENone("#%&'-./1789;=>?FHIMSUVX_dghklmq  vulkan0VkSemaphoreCreateFlags - Reserved for future use Description Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also<C  FNone("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkanNVkSamplerCreateFlagBits - Bitmask specifying additional parameters of sampler DescriptionNoteThe approximations used when  @ is specified are implementation defined. Some implementations may] interpolate between fragment density levels in a subsampled image. In that case, this bit mayn be used to decide whether the interpolation factors are calculated per fragment or at a coarser granularity.See Also vulkan B specifies that the sampler will read from an image created with flags containing . vulkan $ specifies that the implementation mayg use approximations when reconstructing a full color value for texture access from a subsampled image.  %None("#%&'-./1789;=>?FHIMSUVX_dghklmqavulkanlVkSampleCountFlagBits - Bitmask specifying sample counts supported for an image used for storage operationsSee Also6, c, F, 0, T, 7, `, >, , ? vulkan . specifies an image with 64 samples per pixel. vulkan . specifies an image with 32 samples per pixel. vulkan . specifies an image with 16 samples per pixel. vulkan - specifies an image with 8 samples per pixel. vulkan - specifies an image with 4 samples per pixel. vulkan - specifies an image with 2 samples per pixel. vulkan . specifies an image with one sample per pixel. `a a `GNone("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkanVVkRenderPassCreateFlagBits - Bitmask specifying additional properties of a renderpassSee Also vulkan < specifies that the created renderpass is compatible with  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transformrender pass transform.  HNone("#%&'-./1789;=>?FHIMSUVX_dghklmq9 vulkanNVkQueueFlagBits - Bitmask specifying capabilities of queues in a queue family Description M specifies that queues in this queue family support graphics operations. L specifies that queues in this queue family support compute operations. M specifies that queues in this queue family support transfer operations. g specifies that queues in this queue family support sparse memory management operations (see  Zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememorySparse Resources`). If any of the sparse resource features are enabled, then at least one queue family must support this bit.if  D is set, then the queues in this queue family support the m bit. (see  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-protected-memoryProtected Memory). If the protected memory physical device feature is supported, then at least one queue family of at least one physical device exposed by the implementation must support this bit.If an implementation exposes any queue family that supports graphics operations, at least one queue family of at least one physical device exposed by the implementation must/ support both graphics and compute operations.Furthermore, if the protected memory physical device feature is supported, then at least one queue family of at least one physical device exposed by the implementation mustS support graphics operations, compute operations, and protected memory operations.NoteAll commands that are allowed on a queue that supports transfer operations are also allowed on a queue that supports either graphics or compute operations. Thus, if the capabilities of a queue family include   or  , then reporting the  1 capability separately for that queue family is optional.For further details see  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-queuesQueues.See Also  #None("#%&'-./1789;=>?FHIMSUVX_dghklmqP ^vulkanAVkQueryType - Specify the type of queries managed by a query poolSee Also:+, , ,  vulkan  specifies a  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-transform-feedbacktransform feedback query. vulkan  specifies a  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-performanceperformance query. vulkan  specifies a  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-copying-ray tracing acceleration structure size query. vulkan  specifies a lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-copying;ray tracing serialization acceleration structure size query vulkan  specifies a  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-performance-intelIntel performance query. vulkan  specifies a  `https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-timestampstimestamp query. vulkan  specifies a  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestatspipeline statistics query. vulkan  specifies an  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-occlusionocclusion query. ^ ^ "None("#%&'-./1789;=>?FHIMSUVX_dghklmq[]vulkanSVkQueryResultFlagBits - Bitmask specifying how and when query results are returnedSee Also\ vulkan 9 specifies that returning partial results is acceptable. vulkan A specifies that the availability status accompanies the results. vulkan l specifies that Vulkan will wait for each query s status to become available before retrieving its results. vulkan  specifies the results will be written as an array of 64-bit unsigned integer values. If this bit is not set, the results will be written as an array of 32-bit unsigned integer values.\] ] \INone("#%&'-./1789;=>?FHIMSUVX_dghklmq_ vulkan0VkQueryPoolCreateFlags - Reserved for future use Description Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also:+    JNone("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkanRVkQueryPipelineStatisticFlagBits - Bitmask specifying queried pipeline statistics DescriptionThese values are intended to measure relative statistics on one implementation. Various device architectures will count these values differently. Any or all counters may* be affected by the issues described in  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-undefinedQuery Operation.Note*For example, tile-based rendering devices mayH need to replay the scene multiple times, affecting some of the counts.If a pipeline has rasterizerDiscardEnable enabled, implementations mayN discard primitives after the final vertex processing stage. As a result, if rasterizerDiscardEnable@ is enabled, the clipping input and output primitives counters may not be incremented.nWhen a pipeline statistics query finishes, the result for that query is marked as available. The application can# copy the result to a buffer (via 0), or request it be put into host memory (via :).See Also  vulkan  specifies that queries managed by the pool will count the number of compute shader invocations. The counter s value is incremented every time the compute shader is invoked. Implementations may skip the execution of certain compute shader invocations or execute additional compute shader invocations for implementation-dependent reasons as long as the results of rendering otherwise remain unchanged. vulkan  specifies that queries managed by the pool will count the number of invocations of the tessellation evaluation shader. The counter s value is incremented each time the tessellation evaluation shader is  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-tessellation-evaluation-executioninvoked. vulkan  specifies that queries managed by the pool will count the number of patches processed by the tessellation control shader. The counter s value is incremented once for each patch for which a tessellation control shader is  thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-tessellation-control-executioninvoked. vulkan  specifies that queries managed by the pool will count the number of fragment shader invocations. The counter s value is incremented each time the fragment shader is  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-executioninvoked. vulkan a specifies that queries managed by the pool will count the number of primitives output by the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-clippingPrimitive Clipping stage of the pipeline. The counter s value is incremented each time a primitive passes the primitive clipping stage. The actual number of primitives output by the primitive clipping stage for a particular input primitive is implementation-dependent but must# satisfy the following conditions:~If at least one vertex of the input primitive lies inside the clipping volume, the counter is incremented by one or more.6Otherwise, the counter is incremented by zero or more. vulkan d specifies that queries managed by the pool will count the number of primitives processed by the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-clippingPrimitive Clippingx stage of the pipeline. The counter s value is incremented each time a primitive reaches the primitive clipping stage. vulkan  specifies that queries managed by the pool will count the number of primitives generated by geometry shader invocations. The counter s value is incremented each time the geometry shader emits a primitive. Restarting primitive topology using the SPIR-V instructions OpEndPrimitive or OpEndStreamPrimitive? has no effect on the geometry shader output primitives count. vulkan  specifies that queries managed by the pool will count the number of geometry shader invocations. This counter s value is incremented each time a geometry shader is  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-geometry-executioninvoked. In the case of  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometry-invocationsinstanced geometry shaders`, the geometry shader invocations count is incremented for each separate instanced invocation. vulkan  specifies that queries managed by the pool will count the number of vertex shader invocations. This counter s value is incremented each time a vertex shader is  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-vertex-executioninvoked. vulkan d specifies that queries managed by the pool will count the number of primitives processed by the  Uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawinginput assembly stage. If primitive restart is enabled, restarting the primitive topology has no effect on the count. Incomplete primitives may be counted. vulkan b specifies that queries managed by the pool will count the number of vertices processed by the  Uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawinginput assembly9 stage. Vertices corresponding to incomplete primitives may contribute to the count.                                       !None("#%&'-./1789;=>?FHIMSUVX_dghklmq[vulkanBVkQueryControlFlagBits - Bitmask specifying constraints on a querySee AlsoZ %vulkan % specifies the precision of  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-occlusionocclusion queries.Z[ % $[ % $ %Z None("#%&'-./1789;=>?FHIMSUVX_dghklmq3 Yvulkan4VkPrimitiveTopology - Supported primitive topologies DescriptionEach primitive topology, and its construction from a list of vertices, is described in detail below with a supporting diagram, according to the following key:  :data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iOC45ODE3ODY3IgogICBoZWlnaHQ9IjguOTgxNzg2NyIKICAgdmlld0JveD0iMCAwIDguOTgxNzg2OCA4Ljk4MTc4NyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV92ZXJ0ZXguc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzODY0NyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMi44Mjg0MjcxIgogICAgIGlua3NjYXBlOmN4PSIxMDAuMjYxNiIKICAgICBpbmtzY2FwZTpjeT0iLTEwNC40NTE0NyIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0icHgiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIgogICAgIHNob3dncmlkPSJ0cnVlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTkyMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxMDAxIgogICAgIGlua3NjYXBlOndpbmRvdy14PSItOSIKICAgICBpbmtzY2FwZTp3aW5kb3cteT0iLTkiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMCIKICAgICBmaXQtbWFyZ2luLXRvcD0iMSIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjEiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMSIKICAgICBmaXQtbWFyZ2luLWJvdHRvbT0iMSIKICAgICBpbmtzY2FwZTpzbmFwLWdyaWRzPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtdGV4dC1iYXNlbGluZT0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLW9iamVjdC1taWRwb2ludHM9InRydWUiCiAgICAgdW5pdHM9InB4IgogICAgIGJvcmRlcmxheWVyPSJmYWxzZSI+CiAgICA8aW5rc2NhcGU6Z3JpZAogICAgICAgdHlwZT0ieHlncmlkIgogICAgICAgaWQ9ImdyaWQ5NjI2IgogICAgICAgb3JpZ2lueD0iLTkwLjUwOTExIgogICAgICAgb3JpZ2lueT0iLTY0NS41MDkyMiIgLz4KICA8L3NvZGlwb2RpOm5hbWVkdmlldz4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE4NjUwIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICAgIDxkYzp0aXRsZSAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZwogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImxheWVyMSIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTAzLjA0MzUsMjMyLjUyNikiPgogICAgPGNpcmNsZQogICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgaWQ9InBhdGg0NTE3LTAtOC01LTItMyIKICAgICAgIGN4PSIxMDcuNTM0MzkiCiAgICAgICBjeT0iLTIyOC4wMzUxMSIKICAgICAgIHI9IjMuNDkwODkzMSIgLz4KICA8L2c+Cjwvc3ZnPgo=primitive topology key vertex   Vertex  A point in 3-dimensional space. Positions chosen within the diagrams are arbitrary and for illustration only.   data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iOS41NzgxMjUiCiAgIGhlaWdodD0iMTMuODc1IgogICB2aWV3Qm94PSIwIDAgOS41NzgxMjUxIDEzLjg3NSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV92ZXJ0ZXhfbnVtYmVyLnN2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczg2NDciIC8+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJiYXNlIgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnpvb209IjIuODI4NDI3MSIKICAgICBpbmtzY2FwZTpjeD0iNzguNTg2NDQiCiAgICAgaW5rc2NhcGU6Y3k9Ii02OS41NjgzODgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4IgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIKICAgICBzaG93Z3JpZD0idHJ1ZSIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE5MjAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTAwMSIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iLTkiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9Ii05IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjAiCiAgICAgZml0LW1hcmdpbi10b3A9IjEiCiAgICAgZml0LW1hcmdpbi1sZWZ0PSIxIgogICAgIGZpdC1tYXJnaW4tcmlnaHQ9IjEiCiAgICAgZml0LW1hcmdpbi1ib3R0b209IjEiCiAgICAgaW5rc2NhcGU6c25hcC1ncmlkcz0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLXRleHQtYmFzZWxpbmU9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC1vYmplY3QtbWlkcG9pbnRzPSJ0cnVlIgogICAgIHVuaXRzPSJweCIKICAgICBib3JkZXJsYXllcj0iZmFsc2UiPgogICAgPGlua3NjYXBlOmdyaWQKICAgICAgIHR5cGU9Inh5Z3JpZCIKICAgICAgIGlkPSJncmlkOTYyNiIKICAgICAgIG9yaWdpbng9Ii05MC4zNjcxOTEiCiAgICAgICBvcmlnaW55PSItNjE4Ljc1Nzg0IiAvPgogIDwvc29kaXBvZGk6bmFtZWR2aWV3PgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTg2NTAiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlPjwvZGM6dGl0bGU+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMDIuOTAxNTgsMjEwLjY2Nzg2KSI+CiAgICA8dGV4dAogICAgICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjEuMjU7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidzYW5zLXNlcmlmLCBOb3JtYWwnO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWw7Zm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDt0ZXh0LWFsaWduOmNlbnRlcjtsZXR0ZXItc3BhY2luZzowcHg7d29yZC1zcGFjaW5nOjBweDt3cml0aW5nLW1vZGU6bHItdGI7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MS4xNjQyNzM5OCIKICAgICAgIHg9IjEwNy41MzQzOSIKICAgICAgIHk9Ii0xOTguMDM1MDUiCiAgICAgICBpZD0idGV4dDUwNzAtMi0yLTktOS00MS05Ij48dHNwYW4KICAgICAgICAgc29kaXBvZGk6cm9sZT0ibGluZSIKICAgICAgICAgaWQ9InRzcGFuNTA2OC0wLTMtMzYtOS0xLTUiCiAgICAgICAgIHg9IjEwNy41MzQzOSIKICAgICAgICAgeT0iLTE5OC4wMzUwNSIKICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1zaXplOjE2cHg7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidzYW5zLXNlcmlmLCBOb3JtYWwnO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWw7Zm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDt0ZXh0LWFsaWduOmNlbnRlcjt3cml0aW5nLW1vZGU6bHItdGI7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2Utd2lkdGg6MS4xNjQyNzM5OCI+NTwvdHNwYW4+PC90ZXh0PgogIDwvZz4KPC9zdmc+Cg==$primitive topology key vertex number  Vertex Number  Sequence position of a vertex within the provided vertex data.   &data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iNTcuNDYxNTcxIgogICBoZWlnaHQ9IjguOTgxNzg2NyIKICAgdmlld0JveD0iMCAwIDU3LjQ2MTU3MSA4Ljk4MTc4NyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV9wcm92b2tpbmdfdmVydGV4LnN2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczg2NDciPgogICAgPG1hcmtlcgogICAgICAgaW5rc2NhcGU6c3RvY2tpZD0iQXJyb3cxTXN0YXJ0IgogICAgICAgb3JpZW50PSJhdXRvIgogICAgICAgcmVmWT0iMCIKICAgICAgIHJlZlg9IjAiCiAgICAgICBpZD0ibWFya2VyNjc0NC04LTItMiIKICAgICAgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlIgogICAgICAgaW5rc2NhcGU6aXNzdG9jaz0idHJ1ZSI+CiAgICAgIDxwYXRoCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoNjc0Mi05LTY3LTUiCiAgICAgICAgIGQ9Ik0gMCwwIDUsLTUgLTEyLjUsMCA1LDUgWiIKICAgICAgICAgc3R5bGU9ImZpbGw6I2ZiMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I2ZiMDAwMDtzdHJva2Utd2lkdGg6MS4wMDAwMDAwM3B0O3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuNCwwLDAsMC40LDQsMCkiIC8+CiAgICA8L21hcmtlcj4KICA8L2RlZnM+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJiYXNlIgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnpvb209IjIuODI4NDI3MSIKICAgICBpbmtzY2FwZTpjeD0iLTEzOC43MDg0NCIKICAgICBpbmtzY2FwZTpjeT0iLTU1Ljg2NTYyOCIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0icHgiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIgogICAgIHNob3dncmlkPSJ0cnVlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMjU5NSIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxNDk1IgogICAgIGlua3NjYXBlOndpbmRvdy14PSI0ODEiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjE5MSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGZpdC1tYXJnaW4tdG9wPSIxIgogICAgIGZpdC1tYXJnaW4tbGVmdD0iMSIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIxIgogICAgIGZpdC1tYXJnaW4tYm90dG9tPSIxIgogICAgIGlua3NjYXBlOnNuYXAtZ3JpZHM9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC10ZXh0LWJhc2VsaW5lPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtb2JqZWN0LW1pZHBvaW50cz0idHJ1ZSIKICAgICB1bml0cz0icHgiCiAgICAgYm9yZGVybGF5ZXI9ImZhbHNlIj4KICAgIDxpbmtzY2FwZTpncmlkCiAgICAgICB0eXBlPSJ4eWdyaWQiCiAgICAgICBpZD0iZ3JpZDk2MjYiCiAgICAgICBvcmlnaW54PSItOTAuNTA5MTEiCiAgICAgICBvcmlnaW55PSItNTk1LjUwOTE2IiAvPgogIDwvc29kaXBvZGk6bmFtZWR2aWV3PgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTg2NTAiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlIC8+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMDMuMDQzNSwxODIuNTI1OTUpIj4KICAgIDxnCiAgICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTMwLDM1LjAwMDA1NykiCiAgICAgICBpZD0iZzExOTEzLTAiPgogICAgICA8cGF0aAogICAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDE4NzItMi0zLTEtMS01IgogICAgICAgICBkPSJtIDI4Ny41MzQzOSwtMjEzLjAzNTExIGggLTUwIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojZmIwMDAwO3N0cm9rZS13aWR0aDoxcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MTttYXJrZXItc3RhcnQ6dXJsKCNtYXJrZXI2NzQ0LTgtMi0yKSIgLz4KICAgICAgPGNpcmNsZQogICAgICAgICByPSIzLjQ5MDg5MzEiCiAgICAgICAgIGN5PSItMjEzLjAzNTExIgogICAgICAgICBjeD0iMjM3LjUzNDM5IgogICAgICAgICBpZD0icGF0aDQ1MTctMC04LTUtOTEtMC0zLTgiCiAgICAgICAgIHN0eWxlPSJmaWxsOiNmZjAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjE7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4KICAgIDwvZz4KICA8L2c+Cjwvc3ZnPgo='primitive topology key provoking vertex8 # Provoking Vertex  Provoking vertex within the main primitive. The arrow points along an edge of the relevant primitive, following winding order. Used in  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-flatshading flat shading.   jdata:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iODIiCiAgIGhlaWdodD0iMyIKICAgdmlld0JveD0iMCAwIDgyLjAwMDAwMSAzLjAwMDAwMDEiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2Zzg2NTMiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuOTIuNCAoNWRhNjg5YzMxMywgMjAxOS0wMS0xNCkiCiAgIHNvZGlwb2RpOmRvY25hbWU9InByaW1pdGl2ZV90b3BvbG9neV9rZXlfZWRnZS5zdmciPgogIDxkZWZzCiAgICAgaWQ9ImRlZnM4NjQ3IiAvPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0iYmFzZSIKICAgICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgICAgYm9yZGVyb3BhY2l0eT0iMS4wIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp6b29tPSIyLjgyODQyNzEiCiAgICAgaW5rc2NhcGU6Y3g9Ii0xNTUuNzc5NSIKICAgICBpbmtzY2FwZTpjeT0iLTQuNTU4MjQ3MyIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0icHgiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIgogICAgIHNob3dncmlkPSJ0cnVlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMjI2MiIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxNTA3IgogICAgIGlua3NjYXBlOndpbmRvdy14PSI0ODIiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjM4NSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGZpdC1tYXJnaW4tdG9wPSIxIgogICAgIGZpdC1tYXJnaW4tbGVmdD0iMSIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIxIgogICAgIGZpdC1tYXJnaW4tYm90dG9tPSIxIgogICAgIGlua3NjYXBlOnNuYXAtZ3JpZHM9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC10ZXh0LWJhc2VsaW5lPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtb2JqZWN0LW1pZHBvaW50cz0idHJ1ZSIKICAgICB1bml0cz0icHgiCiAgICAgYm9yZGVybGF5ZXI9ImZhbHNlIj4KICAgIDxpbmtzY2FwZTpncmlkCiAgICAgICB0eXBlPSJ4eWdyaWQiCiAgICAgICBpZD0iZ3JpZDk2MjYiCiAgICAgICBvcmlnaW54PSItMzA5IgogICAgICAgb3JpZ2lueT0iLTY0OC41MDAwMyIgLz4KICA8L3NvZGlwb2RpOm5hbWVkdmlldz4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE4NjUwIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICAgIDxkYzp0aXRsZSAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZwogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImxheWVyMSIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzIxLjUzNDM5LDIyOS41MzUwMykiPgogICAgPHBhdGgKICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLWRhc2hvZmZzZXQ6MDtzdHJva2Utb3BhY2l0eToxIgogICAgICAgZD0ibSAzMjIuNTM0MzksLTIyOC4wMzUwMyBoIDgwIgogICAgICAgaWQ9InBhdGgyMDMzLTEiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogIDwvZz4KPC9zdmc+Cg==primitive topology key edge$X  Primitive Edge  An edge connecting the points of a main primitive.   rdata:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iODIiCiAgIGhlaWdodD0iMyIKICAgdmlld0JveD0iMCAwIDgyLjAwMDAwMSAzLjAwMDAwMDEiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2Zzg2NTMiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuOTIuNCAoNWRhNjg5YzMxMywgMjAxOS0wMS0xNCkiCiAgIHNvZGlwb2RpOmRvY25hbWU9InByaW1pdGl2ZV90b3BvbG9neV9rZXlfYWRqYWNlbmN5X2VkZ2Uuc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzODY0NyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMi44Mjg0MjcxIgogICAgIGlua3NjYXBlOmN4PSItMTYxLjc4OTkiCiAgICAgaW5rc2NhcGU6Y3k9Ii03MC43NzUwMjMiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4IgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIKICAgICBzaG93Z3JpZD0idHJ1ZSIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjIyMzMiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTM0MyIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMzkyIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyOTYiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMCIKICAgICBmaXQtbWFyZ2luLXRvcD0iMSIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjEiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMSIKICAgICBmaXQtbWFyZ2luLWJvdHRvbT0iMSIKICAgICBpbmtzY2FwZTpzbmFwLWdyaWRzPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtdGV4dC1iYXNlbGluZT0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLW9iamVjdC1taWRwb2ludHM9InRydWUiCiAgICAgdW5pdHM9InB4IgogICAgIGJvcmRlcmxheWVyPSJmYWxzZSI+CiAgICA8aW5rc2NhcGU6Z3JpZAogICAgICAgdHlwZT0ieHlncmlkIgogICAgICAgaWQ9ImdyaWQ5NjI2IgogICAgICAgb3JpZ2lueD0iLTMwOSIKICAgICAgIG9yaWdpbnk9Ii02MjMuNTAwMDMiIC8+CiAgPC9zb2RpcG9kaTpuYW1lZHZpZXc+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhODY1MCI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTMyMS41MzQzOSwyMDQuNTM1MDMpIj4KICAgIDxwYXRoCiAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTo0LCA0O3N0cm9rZS1kYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgIGQ9Im0gMzIyLjUzNDM5LC0yMDMuMDM1MDMgaCA4MCIKICAgICAgIGlkPSJwYXRoMjAzMyIKICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgPC9nPgo8L3N2Zz4K%primitive topology key adjacency edge$F  Adjacency Edge  Points connected by these lines do not contribute to a main primitive, and are only accessible in a  Vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometrygeometry shader.   Fdata:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iNTUuMDYzODE2IgogICBoZWlnaHQ9IjQ2LjE3ODgyOSIKICAgdmlld0JveD0iMCAwIDU1LjA2MzgxNyA0Ni4xNzg4MyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV93aW5kaW5nX29yZGVyLnN2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczg2NDciPgogICAgPG1hcmtlcgogICAgICAgaW5rc2NhcGU6aXNzdG9jaz0idHJ1ZSIKICAgICAgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlIgogICAgICAgaWQ9Im1hcmtlcjMwMzktMSIKICAgICAgIHJlZlg9IjAiCiAgICAgICByZWZZPSIwIgogICAgICAgb3JpZW50PSJhdXRvIgogICAgICAgaW5rc2NhcGU6c3RvY2tpZD0iQXJyb3cxTWVuZCI+CiAgICAgIDxwYXRoCiAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KC0wLjQsMCwwLC0wLjQsLTQsMCkiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEuMDAwMDAwMDNwdDtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJNIDAsMCA1LC01IC0xMi41LDAgNSw1IFoiCiAgICAgICAgIGlkPSJwYXRoMzAzNy0wIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgPC9tYXJrZXI+CiAgICA8bWFya2VyCiAgICAgICBpbmtzY2FwZTppc3N0b2NrPSJ0cnVlIgogICAgICAgc3R5bGU9Im92ZXJmbG93OnZpc2libGUiCiAgICAgICBpZD0ibWFya2VyMjg5MS02IgogICAgICAgcmVmWD0iMCIKICAgICAgIHJlZlk9IjAiCiAgICAgICBvcmllbnQ9ImF1dG8iCiAgICAgICBpbmtzY2FwZTpzdG9ja2lkPSJBcnJvdzFNZW5kIj4KICAgICAgPHBhdGgKICAgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoLTAuNCwwLDAsLTAuNCwtNCwwKSIKICAgICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS4wMDAwMDAwM3B0O3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGQ9Ik0gMCwwIDUsLTUgLTEyLjUsMCA1LDUgWiIKICAgICAgICAgaWQ9InBhdGgyODg5LTYiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICA8L21hcmtlcj4KICAgIDxtYXJrZXIKICAgICAgIGlua3NjYXBlOnN0b2NraWQ9IkFycm93MU1lbmQiCiAgICAgICBvcmllbnQ9ImF1dG8iCiAgICAgICByZWZZPSIwIgogICAgICAgcmVmWD0iMCIKICAgICAgIGlkPSJBcnJvdzFNZW5kLTgwIgogICAgICAgc3R5bGU9Im92ZXJmbG93OnZpc2libGUiCiAgICAgICBpbmtzY2FwZTppc3N0b2NrPSJ0cnVlIgogICAgICAgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIj4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGg4OTAtMCIKICAgICAgICAgZD0iTSAwLDAgNSwtNSAtMTIuNSwwIDUsNSBaIgogICAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjAwMDAwMDAzcHQ7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoLTAuNCwwLDAsLTAuNCwtNCwwKSIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICAgIDwvbWFya2VyPgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMi44Mjg0MjcxIgogICAgIGlua3NjYXBlOmN4PSItMTQwLjU1MDU2IgogICAgIGlua3NjYXBlOmN5PSItOC40MzI2NjQ2IgogICAgIGlua3NjYXBlOmRvY3VtZW50LXVuaXRzPSJweCIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJsYXllcjEiCiAgICAgc2hvd2dyaWQ9InRydWUiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMDEiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9Ii05IgogICAgIGlua3NjYXBlOndpbmRvdy15PSItOSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGZpdC1tYXJnaW4tdG9wPSIxIgogICAgIGZpdC1tYXJnaW4tbGVmdD0iMSIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIxIgogICAgIGZpdC1tYXJnaW4tYm90dG9tPSIxIgogICAgIGlua3NjYXBlOnNuYXAtZ3JpZHM9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC10ZXh0LWJhc2VsaW5lPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtb2JqZWN0LW1pZHBvaW50cz0idHJ1ZSIKICAgICB1bml0cz0icHgiCiAgICAgYm9yZGVybGF5ZXI9ImZhbHNlIj4KICAgIDxpbmtzY2FwZTpncmlkCiAgICAgICB0eXBlPSJ4eWdyaWQiCiAgICAgICBpZD0iZ3JpZDk2MjYiCiAgICAgICBvcmlnaW54PSItMzA3LjAyOTMzIgogICAgICAgb3JpZ2lueT0iLTU2Ni40NjA5NyIgLz4KICA8L3NvZGlwb2RpOm5hbWVkdmlldz4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE4NjUwIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICAgIDxkYzp0aXRsZT48L2RjOnRpdGxlPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZwogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImxheWVyMSIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzE5LjU2MzcxLDE5MC42NzQ4KSI+CiAgICA8ZwogICAgICAgaWQ9Imc0Mzg5LTg5IgogICAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjU1LC00NC45OTk5OTUpIj4KICAgICAgPHBhdGgKICAgICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjYyIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxODY4LTc5IgogICAgICAgICBkPSJtIDY3LjUzNDM5MywtMTEzLjAzNTEgMjAsLTMwIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MTttYXJrZXItZW5kOnVybCgjbWFya2VyMzAzOS0xKSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjYyIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxODcwLTMiCiAgICAgICAgIGQ9Im0gOTcuNTM0MzkzLC0xNDMuMDM1MSAxOS45OTk5OTcsMzAiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjFweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxO21hcmtlci1lbmQ6dXJsKCNtYXJrZXIyODkxLTYpIiAvPgogICAgICA8cGF0aAogICAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDE4NzItOSIKICAgICAgICAgZD0iTSAxMTcuNTM0MzksLTEwMy4wMzUxIEggNjcuNTM0MzkzIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MTttYXJrZXItZW5kOnVybCgjQXJyb3cxTWVuZC04MCkiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K$primitive topology key winding order0 # Winding Order  The relative order in which vertices are defined within a primitive, used in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-polygons-basicfacing determination. This ordering has no specific start or end point.  The diagrams are supported with mathematical definitions where the vertices (v) and primitives (p) are numbered starting from 0; v0 is the first vertex in the provided data and p0 is the first primitive in the set of primitives defined by the vertices and topology.See Also7,  .vulkan . specifies  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-patch-listsseparate patch primitives. /vulkan / specifies  thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-strips-with-adjacency,connected triangle primitives with adjacency., with consecutive triangles sharing an edge. 0vulkan 0 specifies a series of  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-lists-with-adjacency+separate triangle primitives with adjacency. 1vulkan 1 specifies a series of  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-line-strips-with-adjacency(connected line primitives with adjacency6, with consecutive primitives sharing three vertices. 2vulkan 2 specifies a series of  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-line-lists-with-adjacency'separate line primitives with adjacency. 3vulkan 3 specifies a series of  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-fansconnected triangle primitives- with all triangles sharing a common vertex. 4vulkan 4 specifies a series of  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-stripsconnected triangle primitives- with consecutive triangles sharing an edge. 5vulkan 5 specifies a series of  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-listsseparate triangle primitives. 6vulkan 6 specifies a series of  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-line-stripsconnected line primitives* with consecutive lines sharing a vertex. 7vulkan 7 specifies a series of  `https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-line-listsseparate line primitives. 8vulkan 8 specifies a series of  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-point-listsseparate point primitives. Y 8 7 6 5 4 3 2 1 0 / . -Y 8 7 6 5 4 3 2 1 0 / . - 8 7 6 5 4 3 2 1 0 / .KNone("#%&'-./1789;=>?FHIMSUVX_dghklmq ?vulkan2VkPolygonMode - Control polygon rasterization mode DescriptionThese modes affect only the final rasterization of polygons: in particular, a polygon s vertices are shaded and the polygon is clipped and possibly culled before these modes are applied.See Also7 Avulkan A# specifies that polygons are rendered using polygon rasterization rules, modified to consider a sample within the primitive if the sample location is inside the axis-aligned bounding box of the triangle after projection. Note that the barycentric weights used in attribute interpolation canE extend outside the range [0,1] when these primitives are shaded. Special treatment is given to a sample position on the boundary edge of the bounding box. In such a case, if two rectangles lie on either side of a common edge (with identical endpoints) on which a sample position lies, then exactly one of the triangles mustB produce a fragment that covers that sample during rasterization.Polygons rendered in  A mode mayx be clipped by the frustum or by user clip planes. If clipping is applied, the triangle is culled rather than clipped.4Area calculation and facingness are determined for  A$ mode using the triangle s vertices. Bvulkan B6 specifies that polygon vertices are drawn as points. Cvulkan C: specifies that polygon edges are drawn as line segments. Dvulkan D] specifies that polygons are rendered using the polygon rasterization rules in this section. ? D C B A @ ? D C B A @ D C B ALNone("#%&'-./1789;=>?FHIMSUVX_dghklmq Kvulkan<VkPipelineViewportStateCreateFlags - Reserved for future use Description KQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also7" K L K LMNone("#%&'-./1789;=>?FHIMSUVX_dghklmq Tvulkan?VkPipelineVertexInputStateCreateFlags - Reserved for future use Description TQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also7 T U T UNNone("#%&'-./1789;=>?FHIMSUVX_dghklmq!m ]vulkan@VkPipelineTessellationStateCreateFlags - Reserved for future use Description ]Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also7 ] ^ ] ^None("#%&'-./1789;=>?FHIMSUVX_dghklmqaXvulkan<VkPipelineStageFlagBits - Bitmask specifying pipeline stagesSee Also, W, ,  gvulkan gz specifies the stage of the pipeline where vertex attribute output values are written to the transform feedback buffers. hvulkan h_ specifies the stage of the pipeline where the predicate of conditional rendering is consumed. ivulkan i; specifies the execution of the ray tracing shader stages. jvulkan j specifies the execution of  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structureacceleration structure commands. kvulkan k1 specifies the stage of the pipeline where the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-imageshading rate imageP is read to determine the shading rate for portions of a rasterized primitive. lvulkan l! specifies the task shader stage. mvulkan m! specifies the mesh shader stage. nvulkan nQ specifies the stage of the pipeline where the fragment density map is read to  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapopsgenerate the fragment areas. ovulkan ob specifies the stage of the pipeline where device-side preprocessing for generated commands via  is handled. pvulkan p@ specifies all commands supported on the queue it is used with. qvulkan qb specifies the execution of all graphics pipeline stages, and is equivalent to the logical OR of:  l m ~ } | { z y x w v h g k n rvulkan r specifies a pseudo-stage indicating execution on the host of reads/writes of device memory. This stage is not invoked by any commands recorded in a command buffer. svulkan s is equivalent to  p with   set to 0b when specified in the first synchronization scope, but specifies no stages in the second scope. tvulkan t" specifies the following commands: All  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands, including !" All  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clearsclear commands", with the exception of # uvulkan u. specifies the execution of a compute shader. vvulkan v specifies the stage of the pipeline after blending where the final color values are output from the pipeline. This stage also includes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops!subpass load and store operationsg and multisample resolve operations for framebuffer attachments with a color or depth/stencil format. wvulkan w specifies the stage of the pipeline where late fragment tests (depth and stencil tests after fragment shading) are performed. This stage also includes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-opssubpass store operations: for framebuffer attachments with a depth/stencil format. xvulkan x specifies the stage of the pipeline where early fragment tests (depth and stencil tests before fragment shading) are performed. This stage also includes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-opssubpass load operations: for framebuffer attachments with a depth/stencil format. yvulkan y& specifies the fragment shader stage. zvulkan z& specifies the geometry shader stage. {vulkan {5 specifies the tessellation evaluation shader stage. |vulkan |2 specifies the tessellation control shader stage. }vulkan }# specifies the vertex shader stage. ~vulkan ~R specifies the stage of the pipeline where vertex and index buffers are consumed. vulkan  specifies the stage of the pipeline where Draw/DispatchIndirect data structures are consumed. This stage also includes reading commands written by . vulkan  is equivalent to  p with   set to 0b when specified in the second synchronization scope, but specifies no stages in the first scope.WX  ~ } | { z y x w v u t s r q p o n m l k j i h g f7X  ~ } | { z y x w v u t s r q p o n m l k j i h g f  ~ } | { z y x w v u t s r q p o n m l k j i h gWONone("#%&'-./1789;=>?FHIMSUVX_dghklmqw vulkanaVkPipelineShaderStageCreateFlagBits - Bitmask controlling how a pipeline shader stage is created DescriptionNoteIf   and   are specified and  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroup-sizeminSubgroupSize does not equal  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroup-sizemaxSubgroupSize and no  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-required-subgroup-sizerequired subgroup sizeu is specified, then the only way to guarantee that the 'X' dimension of the local workgroup size is a multiple of  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sgs SubgroupSize is to make it a multiple of maxSubgroupSizeb. Under these conditions, you are guaranteed full subgroups but not any particular subgroup size.See Also vulkan  specifies that the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sgs SubgroupSize may vary in the shader stage. vulkan $ specifies that the subgroup sizes must? be launched with all invocations active in the compute stage.  PNone("#%&'-./1789;=>?FHIMSUVX_dghklmq|2 vulkanAVkPipelineRasterizationStateCreateFlags - Reserved for future use Description Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also7  QNone("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkan?VkPipelineMultisampleStateCreateFlags - Reserved for future use Description Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also7  RNone("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkan5VkPipelineLayoutCreateFlags - Reserved for future use Description Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also9  SNone("#%&'-./1789;=>?FHIMSUVX_dghklmq> vulkanAVkPipelineInputAssemblyStateCreateFlags - Reserved for future use Description Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also7  TNone("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkan;VkPipelineDynamicStateCreateFlags - Reserved for future use Description Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also7  UNone("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkan@VkPipelineDepthStencilStateCreateFlags - Reserved for future use Description Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also7  VNone("#%&'-./1789;=>?FHIMSUVX_dghklmqɃ vulkanHVkPipelineCreateFlagBits - Bitmask controlling how a pipeline is created Description Q specifies that the created pipeline will not be optimized. Using this flag may3 reduce the time taken to create the pipeline.  specifies that the pipeline to be created is allowed to be the parent of a pipeline that will be created in a subsequent pipeline creation call. h specifies that the pipeline to be created will be a child of a previously created parent pipeline. = specifies that any shader input variables decorated as  ViewIndex; will be assigned values as if they were decorated as  DeviceIndex.J$( specifies that a compute pipeline can be used with J%% with a non-zero base workgroup.  specifies that a pipeline is created with all shaders in the deferred state. Before using the pipeline the application must call &L exactly once on each shader in the pipeline before using the pipeline.  specifies that the shader compiler should capture statistics for the executables produced by the compile process which can) later be retrieved by calling '. Enabling this flag must1 not affect the final compiled pipeline but mayJ disable pipeline caching or otherwise affect pipeline creation time.  specifies that the shader compiler should capture the internal representations of executables produced by the compile process which can) later be retrieved by calling (. Enabling this flag must1 not affect the final compiled pipeline but mayJ disable pipeline caching or otherwise affect pipeline creation time. " specifies that the pipeline cannot) be used directly, and instead defines a pipeline library that can1 be combined with other pipelines using the ; structure. This is available in raytracing pipelines. l specifies that an any hit shader will always be present when an any hit shader would be executed. r specifies that a closest hit shader will always be present when a closest hit shader would be executed. d specifies that a miss shader will always be present when a miss shader would be executed. v specifies that an intersection shader will always be present when an intersection shader would be executed. U specifies that triangle primitives will be skipped during traversal using  OpTraceKHR. L specifies that AABB primitives will be skipped during traversal using  OpTraceKHR. G specifies that the pipeline can be used in combination with  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#device-generated-commands. g specifies that pipeline creation will fail if a compile is required for creation of a valid /) object; $*: will be returned by pipeline creation, and the /) will be set to .'When creating multiple pipelines,   specifies that control will be returned to the application on failure of the corresponding pipeline rather than continuing to create additional pipelines.It is valid to set both   and  a. This allows a pipeline to be both a parent and possibly a child in a pipeline hierarchy. See  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivativesPipeline Derivatives for more information.See Also  ' WNone("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkan>VkPipelineColorBlendStateCreateFlags - Reserved for future use Description Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also7  XNone("#%&'-./1789;=>?FHIMSUVX_dghklmqҐ vulkan<VkPipelineCacheHeaderVersion - Encode pipeline cache versionSee Also8+, 8, vulkan . specifies version one of the pipeline cache.  YNone("#%&'-./1789;=>?FHIMSUVX_dghklmqۀ vulkanVVkPipelineCacheCreateFlagBits - Bitmask specifying the behavior of the pipeline cacheSee Also vulkan 7 specifies that all commands that modify the created / will be  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehaviorexternally synchronized . When set, the implementation mays skip any unnecessary processing needed to support simultaneous modification from multiple threads where allowed.  None("#%&'-./1789;=>?FHIMSUVX_dghklmq?VvulkanVVkPipelineBindPoint - Specify the bind point of a pipeline object to a command bufferSee AlsoI, G, H, l, 6-, cP, ., /, 0, 1vulkan. specifies binding as a ray tracing pipeline.vulkan) specifies binding as a compute pipeline.vulkan* specifies binding as a graphics pipeline.VVZNone("#%&'-./1789;=>?FHIMSUVX_dghklmq8 vulkan6VkPhysicalDeviceType - Supported physical device types DescriptionThe physical device type is advertised for informational purposes only, and does not directly affect the operation of the system. However, the device type mayt correlate with other advertised properties or capabilities of the system, such as how many memory heaps there are.See Also 2vulkanG - the device is typically running on the same processors as the host.vulkanK - the device is typically a virtual node in a virtualization environment.vulkanX - the device is typically a separate processor connected to the host via an interlink.vulkanM - the device is typically one embedded in or tightly coupled with the host.vulkan8 - the device does not match any other available types.   None("#%&'-./1789;=>?FHIMSUVX_dghklmqUvulkanBVkObjectType - Specify an enumeration to track object handle types Description' U" ; Vulkan Handle Type & B : Unknown/Undefined Handle  A  /  @  /3  ?  /  >  /4  =  /5  <  /6  ;  /7  :  /8  9  /9  8  /:  7  /;  6  /<  5  /=  4  /  3  />  2  /  1  /  0  /?  /  /)  .  /@  -  /A  ,  /B  +  /C  *  /D  )  /E    CF    CG    pH    pI    pJ     pK  !  pL  '  pM  "  pN  $  p  #  pO  %  pP U and Vulkan Handle RelationshipSee Also, , Q, R*UBA@?>=<;:9876543210/.-,+*)('&%$#"! RUBA@?>=<;:9876543210/.-,+*)('&%$#"! BA@?>=<;:9876543210/.-,+*)('&%$#"! [None("#%&'-./1789;=>?FHIMSUVX_dghklmqD JvulkanKVkMemoryPropertyFlagBits - Bitmask specifying properties for a memory type Description(For any memory allocated with both the Q and the M, host or device accesses also perform automatic memory domain transfer operations, such that writes are always automatically available and visible to both host and device memory domains.NoteDevice coherence is a useful property for certain debugging use cases (e.g. crash analysis, where performing separate coherence actions could mean values are not reported correctly). However, device coherent accesses may be slower than equivalent accesses without device coherence, particularly if they are also device uncached. For device uncached memory in particular, repeated accesses to the same or neighbouring memory locations over a short time period (e.g. within a frame) may be slower than it would be for the equivalent cached memory type. As such, it is generally inadvisable to use device coherent or device uncached memory except when really needed.See AlsoILvulkanL bit specifies that the memory type only allows device access to the memory, and allows protected queue operations to access the memory. Memory types must not have L set and any of R set, or Q set, or P set.MvulkanMv bit specifies that device accesses to allocations of this memory type are automatically made available and visible.NvulkanN bit specifies that memory allocated with this type is not cached on the device. Uncached device memory is always device coherent.OvulkanO[ bit specifies that the memory type only allows device access to the memory. Memory types must not have both O and R1 set. Additionally, the object s backing memory may< be provided by the implementation lazily as specified in  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-lazy_allocationLazily Allocated Memory.PvulkanP bit specifies that memory allocated with this type is cached on the host. Host memory accesses to uncached memory are slower than to cached memory, however uncached memory is always host coherent.QvulkanQ8 bit specifies that the host cache management commands 3S and 3Tm are not needed to flush host writes to the device or make device writes visible to the host, respectively.RvulkanR5 bit specifies that memory allocated with this type can" be mapped for host access using 3.SvulkanS bit specifies that memory allocated with this type is the most efficient for device access. This property will be set if and only if the memory type belongs to a heap with the \U set. IJSRQPONMLKJSRQPONMLKSRQPONMLINone("#%&'-./1789;=>?FHIMSUVX_dghklmqHTvulkan*VkMemoryMapFlags - Reserved for future use DescriptionTQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also3T[T[\None("#%&'-./1789;=>?FHIMSUVX_dghklmqRdvulkanDVkMemoryHeapFlagBits - Bitmask specifying attribute flags for a heapSee Alsocfvulkanf specifies that in a logical device representing more than one physical device, there is a per-physical device instance of the heap memory. By default, an allocation from such a heap will be replicated to each physical device s instance of the heap.gvulkangR specifies that the heap corresponds to device local memory. Device local memory mayI have different performance characteristics than host local memory, and may* support different memory property flags.cdgfedgfegfc]None("#%&'-./1789;=>?FHIMSUVX_dghklmqqnovulkan*VkLogicOp - Framebuffer logical operations DescriptionZThe logical operations supported by Vulkan are summarized in the following table in which is bitwise invert,"' is bitwise and,"( is bitwise or," is bitwise exclusive or,s is the fragment s Rs0, Gs0, Bs0 or As0 component value for the fragment output corresponding to the color attachment being updated, and9d is the color attachment s R, G, B or A component value:# Mode # Operation   # 0   # s "' d  ~ # s "' d  } # s  | # s "' d  { # d  z # s " d  y # s "( d  x # (s "( d)  w # (s " d)  v # d  u # s "( d  t # s  s # s "( d  r # (s "' d)  q # all 1s Logical OperationsThe result of the logical operation is then written to the color attachment as controlled by the component write mask, described in  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blendoperationsBlend Operations.See Also7o~}|{zyxwvutsrqp"o~}|{zyxwvutsrqp~}|{zyxwvutsrq^None("#%&'-./1789;=>?FHIMSUVX_dghklmqvvulkan*VkInternalAllocationType - Allocation typeSee Also-V, -WvulkanF specifies that the allocation is intended for execution by the host.-None("#%&'-./1789;=>?FHIMSUVX_dghklmqkvulkanDPFN_vkVoidFunction - Dummy function pointer type returned by queriesSee Also X,  Yvulkan=PFN_vkFreeFunction - Application-defined memory free function DescriptionpMemory may be NULL, which the callback must handle safely. If pMemory is non-NULL, it must' be a pointer previously allocated by  pfnAllocation or pfnReallocation. The application should free this memory.See AlsovulkanJPFN_vkAllocationFunction - Application-defined memory allocation function DescriptionIf  pfnAllocation0 is unable to allocate the requested memory, it must return NULL'. If the allocation was successful, it mustB return a valid pointer to memory allocation containing at least size8 bytes, and with the pointer value being a multiple of  alignment.NoteCorrect Vulkan operation cannot< be assumed if the application does not follow these rules. For example,  pfnAllocation (or pfnReallocation) could cause termination of running Vulkan instance(s) on a failed allocation for debugging purposes, either directly or indirectly. In these circumstances, it cannot+ be assumed that any part of any affected // objects are going to operate correctly (even  Z), and the application mustJ ensure it cleans up properly via other means (e.g. process termination).If  pfnAllocation returns NULL, and if the implementation is unable to continue correct processing of the current command without the requested allocation, it must. treat this as a runtime error, and generate $[a at the appropriate time for the command in which the condition was detected, as described in  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Return Codes.If the implementation is able to continue correct processing of the current command without the requested allocation, then it may do so, and must not generate $[( as a result of this failed allocation.See AlsovulkanNPFN_vkReallocationFunction - Application-defined memory reallocation function DescriptionpfnReallocation must- return an allocation with enough space for sizei bytes, and the contents of the original allocation from bytes zero to min(original size, new size) - 1 must. be preserved in the returned allocation. If size is larger than the old size, the contents of the additional space are undefined. If satisfying these requirements involves creating a new allocation, then the old allocation should be freed.If  pOriginal is NULL, then pfnReallocation must# behave equivalently to a call to * with the same parameter values (without  pOriginal).If size is zero, then pfnReallocation must# behave equivalently to a call to  with the same  pUserData parameter value, and pMemory equal to  pOriginal.If  pOriginal is non-NULL, the implementation must ensure that  alignment is equal to the  alignment used to originally allocate  pOriginal.If this function fails and  pOriginal is non-NULL the application must not free the old allocation.pfnReallocation must follow the same  &vkAllocationFunction_return_rules.htmlrules for return values as.See AlsovulkanWPFN_vkInternalFreeNotification - Application-defined memory free notification functionSee AlsovulkancPFN_vkInternalAllocationNotification - Application-defined memory allocation notification function Description(This is a purely informational callback.See Also kl kl_None("#%&'-./1789;=>?FHIMSUVX_dghklmqmvulkan/VkInstanceCreateFlags - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also oNone("#%&'-./1789;=>?FHIMSUVX_dghklmqSvulkan*VkIndexType - Type of index buffer indicesSee Also, , , K, m, vulkan( specifies that no indices are provided.vulkan; specifies that indices are 8-bit unsigned integer values.vulkan< specifies that indices are 32-bit unsigned integer values.vulkan< specifies that indices are 16-bit unsigned integer values.S S`None("#%&'-./1789;=>?FHIMSUVX_dghklmq2vulkan"VkImageViewType - Image view types DescriptionThe exact image view type is partially implicit, based on the image s type and sample count, as well as the view creation parameters as described in the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-compatibilityimage view compatibility table for 1\&. This table also shows which SPIR-V  OpTypeImage Dim and Arrayed0 parameters correspond to each image view type.See Also1`,  aNone("#%&'-./1789;=>?FHIMSUVX_dghklmqʏvulkanVVkImageViewCreateFlagBits - Bitmask specifying additional parameters of an image viewSee AlsovulkanI specifies that the fragment density map will be read by device during ]vulkanK specifies that the fragment density map will be read by the host during rF for the primary command buffer that the render pass is recorded intoNone("#%&'-./1789;=>?FHIMSUVX_dghklmq RvulkanDVkImageUsageFlagBits - Bitmask specifying intended usage of an imageSee AlsoQvulkan specifies that the image can be used to create a / suitable for use as a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-imageshading rate image.vulkan specifies that the image can be used to create a / suitable for use as a  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapopsfragment density map image.vulkan specifies that the image can be used to create a / suitable for occupying /C slot of type o^f; be read from a shader as an input attachment; and be used as an input attachment in a framebuffer.vulkanS specifies that the memory bound to this image will have been allocated with the [_ (see  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory for more detail). This bit can be set for any image that can be used to create a /K suitable for use as a color, resolve, depth/stencil, or input attachment.vulkan specifies that the image can be used to create a /P suitable for use as a depth/stencil or depth/stencil resolve attachment in a /D.vulkan specifies that the image can be used to create a /9 suitable for use as a color or resolve attachment in a /D.vulkan specifies that the image can be used to create a / suitable for occupying a /C slot of type o`.vulkan specifies that the image can be used to create a / suitable for occupying a /C slot either of type oa or ob, and be sampled by a shader.vulkan specifies that the image can3 be used as the destination of a transfer command.vulkan specifies that the image can. be used as the source of a transfer command. QRRQ`None("#%&'-./1789;=>?FHIMSUVX_dghklmq$vulkanmVkImageStencilUsageCreateInfo - Specify separate usage flags for the stencil aspect of a depth-stencil image DescriptionIf the pNext chain of 0 includes a $ structure, then that structure includes the usage flags specific to the stencil aspect of the image for an image with a depth-stencil format.This structure specifies image usages which only apply to the stencil aspect of a depth/stencil format image. When this structure is included in the pNext chain of 0#, the stencil aspect of the image must only be used as specified by  stencilUsage-. When this structure is not included in the pNext chain of 0", the stencil aspect of an image must only be used as specified 0::usageE. Use of other aspects of an image are unaffected by this structure.This structure can also be included in the pNext chain of T to query additional capabilities specific to image creation parameter combinations including a separate set of usage flags for the stencil aspect of the image using Tc.. When this structure is not included in the pNext chain of T then the implicit value of  stencilUsage matches that of T::usage. Valid UsageIf  stencilUsage includes d , it must" not include bits other than e or fValid Usage (Implicit)sType must be \ stencilUsage must be a valid combination of g values stencilUsage must not be 0See AlsoQ, vulkan stencilUsage is a bitmask of gC describing the intended usage of the stencil aspect of the image.$~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      u$~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      bNone("#%&'-./1789;=>?FHIMSUVX_dghklmqNone("#%&'-./1789;=>?FHIMSUVX_dghklmqGPvulkan3VkImageType - Specifies the type of an image objectSee Also0, T, T, h,  , ?vulkan% specifies a three-dimensional image.vulkan# specifies a two-dimensional image.vulkan# specifies a one-dimensional image.PPNone("#%&'-./1789;=>?FHIMSUVX_dghklmq+OvulkanDVkImageTiling - Specifies the tiling arrangement of data in an imageSee Also0, T, T, h,  , ?vulkan5 indicates that the image s tiling is defined by a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-drm-format-modifierLinux DRM format modifier5. The modifier is specified at image creation with S or R, and can be queried with i.vulkanu specifies linear tiling (texels are laid out in memory in row-major order, possibly with some padding on each row).vulkan} specifies optimal tiling (texels are laid out in an implementation-dependent arrangement, for more optimal memory access).OONone("#%&'-./1789;=>?FHIMSUVX_dghklmqNvulkan6VkImageLayout - Layout of image and image subresources Description:The type(s) of device access supported by each layout are:The layout of each image subresource is not a state of the image subresource itself, but is rather a property of how the data in memory is organized, and thus for each mechanism of accessing an image in the API the application must specify a parameter or structure member that indicates which image layout the image subresource(s) are considered to be in when the image will be accessed. For transfer commands, this is a parameter to the command (see  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears and  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copiesW). For use as a framebuffer attachment, this is a member in the substructures of the 67 (see  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass Render Pass:). For use in a descriptor set, this is a member in the  j structure (see  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates).See Also6, c, h, 6k, c, h,  j, 0, 5W,  l, !, m, n, , , , "vulkan specifies a layout for depth/stencil format images allowing read and write access to the stencil aspect as a stencil attachment, and read only access to the depth aspect as a depth attachment or in shaders. It is equivalent to  and .vulkan specifies a layout for depth/stencil format images allowing read and write access to the depth aspect as a depth attachment, and read only access to the stencil aspect as a stencil attachment or in shaders. It is equivalent to  and .vulkan specifies a layout for the depth aspect of a depth/stencil format image allowing read and write access as a depth attachment.vulkan specifies a layout for the depth aspect of a depth/stencil format image allowing read-only access as a depth attachment or in shaders.vulkan specifies a layout for the stencil aspect of a depth/stencil format image allowing read and write access as a stencil attachment.vulkan specifies a layout for the stencil aspect of a depth/stencil format image allowing read-only access as a stencil attachment or in shaders.vulkan mustS only be used for presenting a presentable image for display. A swapchain s image must1 be transitioned to this layout before calling o, and must7 be transitioned away from this layout after calling p.vulkan3 is valid only for shared presentable images, and must* be used for any usage the image supports.vulkan must only be used as a read-only  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-imageshading-rate-imageQ. This layout is valid only for image subresources of images created with the q usage bit enabled.vulkan must9 only be used as a fragment density map attachment in a /?Q. This layout is valid only for image subresources of images created with the r usage bit enabled. vulkan . does not support device access. This layout must only be used as the  initialLayout member of 0 or 6 , or as the  oldLayout in an image transition. When transitioning out of this layout, the contents of the memory are preserved. This layout is intended to be used as the initial layout for an image whose contents are written by the host, and hence the data can\ be written to memory immediately, without first executing a layout transition. Currently,   is only useful with  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resourcelinear= images because there is not a standard layout defined for s images. vulkan  must only be used as a destination image of a transfer command. This layout is valid only for image subresources of images created with the t usage bit enabled. vulkan  mustO only be used as a source image of a transfer command (see the definition of  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-transferR). This layout is valid only for image subresources of images created with the u usage bit enabled. vulkan  must7 only be used as a read-only image in a shader (which can be read as a sampled image, combined image/sampler and/or input attachment). This layout is valid only for image subresources of images created with the v or f usage bit enabled. vulkan  specifies a layout for both the depth and stencil aspects of a depth/stencil format image allowing read only access as a depth/stencil attachment or in shaders. It is equivalent to  and .vulkan specifies a layout for both the depth and stencil aspects of a depth/stencil format image allowing read and write access as a depth/stencil attachment. It is equivalent to  and .vulkan must5 only be used as a color or resolve attachment in a /DP. This layout is valid only for image subresources of images created with the w usage bit enabled.vulkan% supports all types of device access.vulkan. does not support device access. This layout must only be used as the  initialLayout member of 0 or 6 , or as the  oldLayout in an image transition. When transitioning out of this layout, the contents of the memory are not guaranteed to be preserved.N     (N          hNone("#%&'-./1789;=>?FHIMSUVX_dghklmq;vulkanVkPhysicalDeviceSeparateDepthStencilLayoutsFeatures - Structure describing whether the implementation can do depth and stencil image barriers separatelyMembersThe members of the ;, structure describe the following features: DescriptionIf the ; structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported. ; can also be included in the pNext chain of   to enable the feature.Valid Usage (Implicit)See Alsoo, <vulkanTVkAttachmentReferenceStencilLayout - Structure specifying an attachment descriptionValid Usage (Implicit)See AlsoN, =vulkanVVkAttachmentDescriptionStencilLayout - Structure specifying an attachment descriptionValid Usage (Implicit)See AlsoN, vulkanstencilInitialLayoutv is the layout the stencil aspect of the attachment image subresource will be in when a render pass instance begins.stencilInitialLayout must not be , , , ,  , , or stencilInitialLayout must be a valid N valuevulkanstencilFinalLayout is the layout the stencil aspect of the attachment image subresource will be transitioned to when a render pass instance ends.stencilFinalLayout must not be , , , ,  , , or stencilFinalLayout must not be  or  stencilFinalLayout must be a valid N valuevulkan stencilLayout is a N\ value specifying the layout the stencil aspect of the attachment uses during the subpass. stencilLayout must not be ,  , , , , ,  , , , or  stencilLayout must be a valid N valuevulkanseparateDepthStencilLayouts2 indicates whether the implementation supports a 5W. for a depth/stencil image with only one of dx or dy set, and whether , , , or  can be used.N     ;<=~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ;<=N          ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      cNone("#%&'-./1789;=>?FHIMSUVX_dghklmqJ456789:;<=>?@AA@?>=<;8765:49None("#%&'-./1789;=>?FHIMSUVX_dghklmq MvulkanMVkImageCreateFlagBits - Bitmask specifying additional parameters of an image DescriptionSee  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseresourcefeaturesSparse Resource Features and  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-physicalfeaturesSparse Physical Device Features for more details.See AlsoLCvulkanCe specifies that two images created with the same creation parameters and aliased to the same memory canm interpret the contents of the memory consistently with each other, subject to the rules described in the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasingMemory Aliasing< section. This flag further specifies that each plane of a disjoint image cang share an in-memory non-linear representation with single-plane images, and that a single-plane image canz share an in-memory non-linear representation with a plane of a multi-planar disjoint image, according to the rules in  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes . If the pNext chain includes a O; or < structure whose  handleTypes member is not 0, it is as if C is set.DvulkanD specifies that the image can' be used with a non-zero value of the splitInstanceBindRegionCount member of a K structure passed into Gze. This flag also has the effect of making the image use the standard sparse image block dimensions.EvulkanE specifies that the image can be used to create a / of type `{ or `|.FvulkanF6 specifies that the image having a compressed format can be used to create a /w with an uncompressed format where each texel in the image view corresponds to a compressed texel block of the image.GvulkanG specifies that the image can be created with usage flags that are not supported for the format the image is created with but are supported for at least one format a / created from the image can have.HvulkanH0 specifies that the image is a protected image.IvulkanI! specifies that an image with a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format must have each plane separately bound to memory, rather than having a single memory binding for the whole image; the presence of this bit distinguishes a disjoint image$ from an image without this bit set.JvulkanJ specifies that the image is a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-images-corner-sampledcorner-sampled image.KvulkanK? specifies that an image with a depth or depth/stencil format canO be used with custom sample locations when used as a depth/stencil attachment.LvulkanL specifies that an image can" be in a subsampled format which may be more optimal when written as an attachment by a render pass that has a fragment density map attachment. Accessing a subsampled image has additional considerations:ZImage data read as an image sampler is undefined if the sampler was not created with flags containing F}l or was not sampled through the use of a combined image sampler with an immutable sampler in  ~.Image data read with an input attachment is undefined if the contents were not written as an attachment in an earlier subpass of the same render pass.wImage data read as an image sampler in the fragment shader will be additionally be read by the device during  if  ~https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subsampledcoarsereconstructionearlyaccess+::subsampledCoarseReconstructionEarlyAccess is .' and the sampler was created with flags containing F.kImage data read with load operations are resampled to the fragment density of the render pass if  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subsampledloads::subsampledLoads is .$, otherwise they are undefined.sImage contents outside of the render area become undefined if the image is stored as a render pass attachment.MvulkanM specifies that the image can be used to create a / of type ` or `.NvulkanN specifies that the image can be used to create a // with a different format from the image. For  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar formats, N specifies that a / can be created of a plane of the image.OvulkanO specifies that the image will be backed using sparse memory binding with memory ranges that might also simultaneously be backing another image (or another portion of the same image). Images created with this flag must also be created with the Q flagPvulkanP specifies that the image canR be partially backed using sparse memory binding. Images created with this flag must also be created with the Q flag.QvulkanQF specifies that the image will be backed using sparse memory binding.LMQPONMLKJIHGFEDCB!MQPONMLKJIHGFEDCBQPONMLKJIHGFEDCLKNone("#%&'-./1789;=>?FHIMSUVX_dghklmqmvulkanYVkBindImageMemoryDeviceGroupInfo - Structure specifying device within a group to bind toMembersIf the pNext list of G includes a u structure, then that structure determines how memory is bound to images across multiple devices in a device group. DescriptionThe  structure is defined as:sType is the type of this structure.pNext is NULL; or a pointer to a structure extending this structure.deviceIndexCount is the number of elements in pDeviceIndices.pDeviceIndices, is a pointer to an array of device indices.splitInstanceBindRegionCount# is the number of elements in pSplitInstanceBindRegions.pSplitInstanceBindRegions" is a pointer to an array of p_ structures describing which regions of the image are attached to each instance of memory.If deviceIndexCount/ is greater than zero, then on device index i imageg is attached to the instance of the memory on the physical device with device index pDeviceIndices[i].CLet N be the number of physical devices in the logical device. If splitInstanceBindRegionCount is greater than zero, then pSplitInstanceBindRegions is an array of N2 rectangles, where the image region specified by the rectangle at element i*N+j in resource instance i is bound to the memory instance j. The blocks of the memory that are bound to each sparse image block region use an offset in memory, relative to  memoryOffset!, computed as if the whole image were being bound to a contiguous range of memory. In other words, horizontally adjacent image blocks use consecutive blocks of memory, vertically adjacent image blocks are separated by the number of bytes per block multiplied by the width in blocks of image<, and the block at (0,0) corresponds to memory starting at  memoryOffset.If splitInstanceBindRegionCount and deviceIndexCount= are zero and the memory comes from a memory heap with the \ bit set, then it is as if pDeviceIndices contains consecutive indices from zero to the number of physical devices in the logical device, minus one. In other words, by default each physical device attaches to its own instance of the memory.If splitInstanceBindRegionCount and deviceIndexCount@ are zero and the memory comes from a memory heap without the \ bit set, then it is as if pDeviceIndicesi contains an array of zeros. In other words, by default each physical device attaches to instance zero. Valid UsageAt least one of deviceIndexCount and splitInstanceBindRegionCount must be zerodeviceIndexCount mustU either be zero or equal to the number of physical devices in the logical deviceAll elements of pDeviceIndices must be valid device indicessplitInstanceBindRegionCount must] either be zero or equal to the number of physical devices in the logical device squared Elements of pSplitInstanceBindRegions7 that correspond to the same instance of an image must not overlapThe offset.x member of any element of pSplitInstanceBindRegions must5 be a multiple of the sparse image block width (?::imageGranularity.width/) of all non-metadata aspects of the imageThe offset.y member of any element of pSplitInstanceBindRegions must6 be a multiple of the sparse image block height (?::imageGranularity.height/) of all non-metadata aspects of the imageThe  extent.width member of any element of pSplitInstanceBindRegions mustr either be a multiple of the sparse image block width of all non-metadata aspects of the image, or else  extent.width + offset.x must. equal the width of the image subresourceThe  extent.height member of any element of pSplitInstanceBindRegions musts either be a multiple of the sparse image block height of all non-metadata aspects of the image, or else  extent.height + offset.y must. equal the width of the image subresourceValid Usage (Implicit)sType must be If deviceIndexCount is not 0, pDeviceIndices must( be a valid pointer to an array of deviceIndexCount uint32_t valuesIf splitInstanceBindRegionCount is not 0, pSplitInstanceBindRegions must( be a valid pointer to an array of splitInstanceBindRegionCount p structuresSee Alsop, vulkanZVkBindBufferMemoryDeviceGroupInfo - Structure specifying device within a group to bind toMembersIf the pNext list of G includes a v structure, then that structure determines how memory is bound to buffers across multiple devices in a device group. DescriptionThe  structure is defined as:sType is the type of this structure.pNext is NULL; or a pointer to a structure extending this structure.deviceIndexCount is the number of elements in pDeviceIndices.pDeviceIndices, is a pointer to an array of device indices.If deviceIndexCountY is greater than zero, then on device index i the buffer is attached to the instance of memory= on the physical device with device index pDeviceIndices[i].If deviceIndexCount is zero and memory% comes from a memory heap with the \ bit set, then it is as if pDeviceIndices contains consecutive indices from zero to the number of physical devices in the logical device, minus one. In other words, by default each physical device attaches to its own instance of memory.If deviceIndexCount is zero and memory( comes from a memory heap without the \ bit set, then it is as if pDeviceIndicesi contains an array of zeros. In other words, by default each physical device attaches to instance zero. Valid UsagedeviceIndexCount mustU either be zero or equal to the number of physical devices in the logical deviceAll elements of pDeviceIndices must be valid device indicesValid Usage (Implicit)sType must be  If deviceIndexCount is not 0, pDeviceIndices must( be a valid pointer to an array of deviceIndexCount uint32_t valuesSee AlsoLMBQPONMLKJIHGFEDCYZ[\]~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      \]YZ[~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      MBQPONMLKJIHGFEDCQPONMLKJIHGFEDCLdNone("#%&'-./1789;=>?FHIMSUVX_dghklmq ivulkan\VkImageAspectFlagBits - Bitmask specifying which aspects of an image are included in a viewSee AlsoX, h, XZkvulkank specifies plane 0 of a  multi-planar image format.lvulkanl specifies plane 1 of a  multi-planar image format.mvulkanm specifies plane 2 of a  multi-planar image format.nvulkann specifies  memory plane 0.ovulkano specifies  memory plane 1.pvulkanp specifies  memory plane 2.qvulkanq specifies  memory plane 3.rvulkanr2 specifies the metadata aspect, used for sparse  Zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememorysparse resource operations.svulkans specifies the stencil aspect.tvulkant specifies the depth aspect.uvulkanu specifies the color aspect.hiutsrqponmlkjiutsrqponmlkjutsrqponmlkhUNone("#%&'-./1789;=>?FHIMSUVX_dghklmq¾ vulkan}VkRenderPassInputAttachmentAspectCreateInfo - Structure specifying, for a given subpass/input attachment pair, which aspect can be read. DescriptionAn application can] access any aspect of an input attachment that does not have a specified aspect mask in the pAspectReferences# array. Otherwise, an application must\ not access aspect(s) of an input attachment other than those in its specified aspect mask.Valid Usage (Implicit)See Also, vulkantVkPipelineTessellationDomainOriginStateCreateInfo - Structure specifying the orientation of the tessellation domain DescriptionIf the  structure is included in the pNext chain of 7e, it controls the origin of the tessellation domain. If this structure is not present, it is as if  domainOrigin were .Valid Usage (Implicit)See Also, vulkanzVkPhysicalDevicePointClippingProperties - Structure describing the point clipping behavior supported by an implementationMembersThe members of the B structure describe the following implementation-dependent limit: DescriptionIf the  structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Also, vulkanqVkInputAttachmentAspectReference - Structure specifying a subpass/input attachment pair and an aspect mask that can be read.Valid Usage (Implicit)See Alsoh,  vulkanHVkImageViewUsageCreateInfo - Specify the intended usage of an image view Description#When this structure is chained to 1` the usage field overrides the implicit usage parameter inherited from image creation time and its value is used instead for the purposes of determining the valid usage conditions of 1`.Valid Usage (Implicit)See AlsoQ, ~vulkan domainOrigin is a @ value controlling the origin of the tessellation domain space. domainOrigin must be a valid  valuevulkanusageD is a bitmask describing the allowed usages of the image view. See g* for a description of the supported bits.usage must be a valid combination of g valuesusage must not be 0vulkanpointClippingBehavior is a O value specifying the point clipping behavior supported by the implementation.vulkanpAspectReferences is a pointer to an array of aspectReferenceCount : structures containing a mask describing which aspect(s) canB be accessed for a given input attachment within a given subpass.pAspectReferences must$ be a valid pointer to an array of aspectReferenceCount valid  structuresvulkansubpass is an index into the  pSubpasses array of the parent 67 structure.vulkaninputAttachmentIndex is an index into the pInputAttachments of the specified subpass.vulkan aspectMask is a mask of which aspect(s) can+ be accessed within the specified subpass. aspectMask must not include d aspectMask must not include &VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT for any index i aspectMask must be a valid combination of d values aspectMask must not be 0LMBQPONMLKJIHGFEDCN     }~ ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!       }~N          ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      MBQPONMLKJIHGFEDCQPONMLKJIHGFEDCLeNone("#%&'-./1789;=>?FHIMSUVX_dghklmqۄNone("#%&'-./1789;=>?FHIMSUVX_dghklmq>Kvulkan8VkFrontFace - Interpret polygon front-facing orientation DescriptionVAny triangle which is not front-facing is back-facing, including zero-area triangles.See Also7, vulkanJ specifies that a triangle with negative area is considered front-facing.vulkanJ specifies that a triangle with positive area is considered front-facing.KKfNone("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanGVkFramebufferCreateFlagBits - Bitmask specifying framebuffer propertiesSee Alsovulkanw specifies that image views are not specified, and only attachment compatibility information will be provided via a gC structure.gNone("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanLVkFormatFeatureFlagBits - Bitmask specifying features supported by a buffer DescriptionThe following bits may be set in linearTilingFeatures, optimalTilingFeatures, and ::drmFormatModifierTilingFeatures1, specifying that the features are supported by  VkImage.htmlimages or  VkImageView.html image views or  VkSamplerYcbcrConversion.html!sampler Y 2CBCR conversion objects created with the queried  ::format:# specifies that an image view can be  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage sampled from.# specifies that an image view can be used as a  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimagestorage images.# specifies that an image view can: be used as storage image that supports atomic operations.# specifies that an image view canK be used as a framebuffer color attachment and as an input attachment.# specifies that an image view canb be used as a framebuffer color attachment that supports blending and as an input attachment.# specifies that an image view canS be used as a framebuffer depth/stencil attachment and as an input attachment. specifies that an image can be used as srcImage for the ! command. specifies that an image can be used as dstImage for the ! command. specifies that if  is also set, an image view can0 be used with a sampler that has either of  magFilter or  minFilter set to , or  mipmapMode set to $ . If / is also set, an image can be used as the srcImage to ! with a filter of  . This bit must= only be exposed for formats that also support the  or .If the format being queried is a depth/stencil format, this bit only specifies that the depth aspect (not the stencil aspect) of an image of this format supports linear filtering, and that linear filtering of the depth aspect is supported whether depth compare is enabled in the sampler or not. If this bit is not present, linear filtering with depth compare disabled is unsupported and linear filtering with depth compare enabled is supported, but may compute the filtered value in an implementation-dependent manner which differs from the normal rules of linear filtering. The resulting value must be in the range [0,1] and should[ be proportional to, or a weighted average of, the number of comparison passes or failures. specifies that an image can) be used as a source image for  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands. specifies that an image can. be used as a destination image for  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands and  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clearsclear commands. specifies /: can8 be used as a sampled image with a min or max . This bit must8 only be exposed for formats that also support the . specifies that /: can0 be used with a sampler that has either of  magFilter or  minFilter set to ., or be the source image for a blit with filter set to . This bit must8 only be exposed for formats that also support the . If the format being queried is a depth/stencil format, this only specifies that the depth aspect is cubic filterable.$ specifies that an application can define a  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversionK using this format as a source, and that an image of this format can be used with a X  xChromaOffset and/or  yChromaOffset of . Otherwise both  xChromaOffset and  yChromaOffset must be . If a format does not incorporate chroma downsampling (it is not a 422  or 420  format) but the implementation supports sampler Y 2CBCR conversion for this format, the implementation must set .$ specifies that an application can define a  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversionK using this format as a source, and that an image of this format can be used with a X  xChromaOffset and/or  yChromaOffset of . Otherwise both  xChromaOffset and  yChromaOffset must be . If neither  nor  is set, the application must not define a  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversion$ using this format as a source. specifies that the format can do linear sampler filtering (min/magFilter) whilst sampler Y 2CBCR conversion is enabled.U specifies that the format can have different chroma, min, and mag filters.F specifies that reconstruction is explicit, as described in  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstructionI. If this bit is not present, reconstruction is implicit by default.$ specifies that reconstruction can0 be forcibly made explicit by setting X::forceExplicitReconstruction to .1. If the format being queried supports  it must also support .* specifies that a multi-planar image can have the 3 set during image creation. An implementation must not set  for single-plane formats.# specifies that an image view can be used as a  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachmentfragment density map attachment.The following bits may be set in bufferFeatures1, specifying that the features are supported by  VkBuffer.htmlbuffers or  VkBufferView.html buffer views created with the queried  ::format: specifies that the format can& be used to create a buffer view that can be bound to a o descriptor. specifies that the format can& be used to create a buffer view that can be bound to a o descriptor.= specifies that atomic operations are supported on o with this format. specifies that the format can1 be used as a vertex attribute format (7::format).See Alsovulkan specifies that an image can! be used as a source image for  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands.vulkan specifies that an image can& be used as a destination image for  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands and  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clearsclear commands.vulkan specifies that an application can define a  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversionB using this format as a source, and that an image of this format can be used with a X  xChromaOffset and/or  yChromaOffset of . Otherwise both  xChromaOffset and  yChromaOffset must be . If a format does not incorporate chroma downsampling (it is not a 422  or 420  format) but the implementation supports sampler Y 2CBCR conversion for this format, the implementation must set .vulkany specifies that the format can do linear sampler filtering (min/magFilter) whilst sampler Y 2CBCR conversion is enabled.vulkanM specifies that the format can have different chroma, min, and mag filters.vulkan> specifies that reconstruction is explicit, as described in  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstructionE. If this bit is not present, reconstruction is implicit by default.vulkan specifies that reconstruction can' be forcibly made explicit by setting X::forceExplicitReconstruction to .). If the format being queried supports  it must also support .vulkan% specifies that a multi-planar image can have the / set during image creation. An implementation must not set  for single-plane formats.vulkan specifies that an application can define a  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversionB using this format as a source, and that an image of this format can be used with a X  xChromaOffset and/or  yChromaOffset of . Otherwise both  xChromaOffset and  yChromaOffset must be . If neither  nor  is set, the application must not define a  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversion using this format as a source.vulkan specifies /: can0 be used as a sampled image with a min or max  . This bit must4 only be exposed for formats that also support the .vulkan specifies that an image view can be used as a  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachmentfragment density map attachment.vulkan specifies that if  is also set, an image view can, be used with a sampler that has either of  magFilter or  minFilter set to , or  mipmapMode set to $. If + is also set, an image can be used as the srcImage to ! with a filter of  . This bit must5 only be exposed for formats that also support the  or .If the format being queried is a depth/stencil format, this bit only specifies that the depth aspect (not the stencil aspect) of an image of this format supports linear filtering, and that linear filtering of the depth aspect is supported whether depth compare is enabled in the sampler or not. If this bit is not present, linear filtering with depth compare disabled is unsupported and linear filtering with depth compare enabled is supported, but may compute the filtered value in an implementation-dependent manner which differs from the normal rules of linear filtering. The resulting value must be in the range [0,1] and should\ be proportional to, or a weighted average of, the number of comparison passes or failures.vulkan specifies that an image can be used as dstImage for the ! command.vulkan specifies that an image can be used as srcImage for the ! command.vulkan specifies that an image view canO be used as a framebuffer depth/stencil attachment and as an input attachment.vulkan specifies that an image view can^ be used as a framebuffer color attachment that supports blending and as an input attachment.vulkan specifies that an image view canG be used as a framebuffer color attachment and as an input attachment.vulkan specifies that the format can) be used as a vertex attribute format (7::format).vulkan5 specifies that atomic operations are supported on o with this format.vulkan specifies that the format can& be used to create a buffer view that can be bound to a o descriptor.vulkan specifies that the format can& be used to create a buffer view that can be bound to a o descriptor.vulkan specifies that an image view can: be used as storage image that supports atomic operations.vulkan specifies that an image view can be used as a  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimagestorage images.vulkan specifies that an image view can be  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage sampled from.7^None("#%&'-./1789;=>?FHIMSUVX_dghklmq̓!vulkanOVkSamplerReductionModeCreateInfo - Structure specifying sampler reduction mode DescriptionIf the pNext chain of =? includes a !l structure, then that structure includes a mode that controls how texture filtering combines texel values."If this structure is not present,  reductionMode is considered to be x.Valid Usage (Implicit)See Alsot, "vulkanVkPhysicalDeviceSamplerFilterMinmaxProperties - Structure describing sampler filter minmax limits that can be supported by an implementationMembersThe members of the "C structure describe the following implementation-dependent limits: DescriptionIf the " structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.If "filterMinmaxSingleComponentFormats is ., the following formats must support the  feature with s, if they support .If the format is a depth/stencil format, this bit only specifies that the depth aspect (not the stencil aspect) of an image of this format supports min/max filtering, and that min/max filtering of the depth aspect is supported when depth compare is disabled in the sampler.If !filterMinmaxImageComponentMapping is .F the component mapping of the image view used with min/max filtering must have been created with the r component set to the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappingsidentity swizzle . Only the rd component of the sampled image value is defined and the other component values are undefined. If !filterMinmaxImageComponentMapping is .N this restriction does not apply and image component mapping works as normal.Valid Usage (Implicit)See Alsoo, vulkan reductionMode is a t@ value controlling how texture filtering combines texel values. reductionMode must be a valid t valuevulkan"filterMinmaxSingleComponentFormatsd is a boolean value indicating whether a minimum set of required formats support min/max filtering.vulkan!filterMinmaxImageComponentMapping is a boolean value indicating whether the implementation supports non-identity component mapping of the image when doing min/max filtering.!"tuxwv~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      "!~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      tuxwvxwvhNone("#%&'-./1789;=>?FHIMSUVX_dghklmq}      None("#%&'-./1789;=>?FHIMSUVX_dghklmqJvulkan"VkFormat - Available image formatsSee Also, , , 6, c, , gC, K, 0, fU, ^, 1`, T, T, @, X, , [, 7, h,  , T, ,  , ?vulkan specifies a four-component, 32-bit format containing a pair of G components, an R component, and a B component, collectively encoding a 21 rectangle of unsigned normalized RGB texel data. One G value is present at each i coordinate, with the B and R values shared across both G values and thus recorded at half the horizontal resolution of the image. This format has an 8-bit G component for the even iY coordinate in byte 0, an 8-bit B component in byte 1, an 8-bit G component for the odd iR coordinate in byte 2, and an 8-bit R component in byte 3. Images in this format must be defined with a width that is a multiple of two. For the purposes of the constraints on copy extents, this format is treated as a compressed format with a 21 compressed texel block.vulkan specifies a four-component, 32-bit format containing a pair of G components, an R component, and a B component, collectively encoding a 21 rectangle of unsigned normalized RGB texel data. One G value is present at each i coordinate, with the B and R values shared across both G values and thus recorded at half the horizontal resolution of the image. This format has an 8-bit B component in byte 0, an 8-bit G component for the even i] coordinate in byte 1, an 8-bit R component in byte 2, and an 8-bit G component for the odd i. coordinate in byte 3. Images in this format must be defined with a width that is a multiple of two. For the purposes of the constraints on copy extents, this format is treated as a compressed format with a 21 compressed texel block.vulkan# specifies an unsigned normalized multi-planar format that has an 8-bit G component in plane 0, an 8-bit B component in plane 1, and an 8-bit R component in plane 2. The horizontal and vertical dimensions of the R and B planes are halved relative to the image dimensions, and each R and B component is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R) and (leftlfloor j_G times 0.5 rightrfloor = j_B = j_R). The location of each plane when this image is in linear layout can be determined via 0 , using d for the G plane, d for the B plane, and d) for the R plane. Images in this format must? be defined with a width and height that is a multiple of two.vulkan# specifies an unsigned normalized multi-planar format that has an 8-bit G component in plane 0, and a two-component, 16-bit BR plane 1 consisting of an 8-bit B component in byte 0 and an 8-bit R component in byte 1. The horizontal and vertical dimensions of the BR plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R) and (leftlfloor j_G times 0.5 rightrfloor = j_B = j_R). The location of each plane when this image is in linear layout can be determined via 0 , using d for the G plane, and d* for the BR plane. Images in this format must? be defined with a width and height that is a multiple of two.vulkan# specifies an unsigned normalized multi-planar format that has an 8-bit G component in plane 0, an 8-bit B component in plane 1, and an 8-bit R component in plane 2. The horizontal dimension of the R and B plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R). The location of each plane when this image is in linear layout can be determined via 0 , using d for the G plane, d for the B plane, and d) for the R plane. Images in this format must4 be defined with a width that is a multiple of two.vulkan# specifies an unsigned normalized multi-planar format that has an 8-bit G component in plane 0, and a two-component, 16-bit BR plane 1 consisting of an 8-bit B component in byte 0 and an 8-bit R component in byte 1. The horizontal dimensions of the BR plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R). The location of each plane when this image is in linear layout can be determined via 0 , using d for the G plane, and d* for the BR plane. Images in this format must4 be defined with a width that is a multiple of two. vulkan # specifies an unsigned normalized multi-planar format+ that has an 8-bit G component in plane 0, an 8-bit B component in plane 1, and an 8-bit R component in plane 2. Each plane has the same dimensions and each R, G and B component contributes to a single texel. The location of each plane when this image is in linear layout can be determined via 0 , using d for the G plane, d for the B plane, and d for the R plane.!vulkan! specifies a one-component, 16-bit unsigned normalized format that has a single 10-bit R component in the top 10 bits of a 16-bit word, with the bottom 6 bits unused."vulkan" specifies a two-component, 32-bit unsigned normalized format that has a 10-bit R component in the top 10 bits of the word in bytes 0..1, and a 10-bit G component in the top 10 bits of the word in bytes 2..3, with the bottom 6 bits of each word unused.#vulkan# specifies a four-component, 64-bit unsigned normalized format that has a 10-bit R component in the top 10 bits of the word in bytes 0..1, a 10-bit G component in the top 10 bits of the word in bytes 2..3, a 10-bit B component in the top 10 bits of the word in bytes 4..5, and a 10-bit A component in the top 10 bits of the word in bytes 6..7, with the bottom 6 bits of each word unused.$vulkan$ specifies a four-component, 64-bit format containing a pair of G components, an R component, and a B component, collectively encoding a 21 rectangle of unsigned normalized RGB texel data. One G value is present at each i coordinate, with the B and R values shared across both G values and thus recorded at half the horizontal resolution of the image. This format has a 10-bit G component for the even i coordinate in the top 10 bits of the word in bytes 0..1, a 10-bit B component in the top 10 bits of the word in bytes 2..3, a 10-bit G component for the odd i coordinate in the top 10 bits of the word in bytes 4..5, and a 10-bit R component in the top 10 bits of the word in bytes 6..7, with the bottom 6 bits of each word unused. Images in this format must be defined with a width that is a multiple of two. For the purposes of the constraints on copy extents, this format is treated as a compressed format with a 21 compressed texel block.%vulkan% specifies a four-component, 64-bit format containing a pair of G components, an R component, and a B component, collectively encoding a 21 rectangle of unsigned normalized RGB texel data. One G value is present at each i coordinate, with the B and R values shared across both G values and thus recorded at half the horizontal resolution of the image. This format has a 10-bit B component in the top 10 bits of the word in bytes 0..1, a 10-bit G component for the even i coordinate in the top 10 bits of the word in bytes 2..3, a 10-bit R component in the top 10 bits of the word in bytes 4..5, and a 10-bit G component for the odd i~ coordinate in the top 10 bits of the word in bytes 6..7, with the bottom 6 bits of each word unused. Images in this format must be defined with a width that is a multiple of two. For the purposes of the constraints on copy extents, this format is treated as a compressed format with a 21 compressed texel block.&vulkan&# specifies an unsigned normalized multi-planar format that has a 10-bit G component in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R component in the top 10 bits of each 16-bit word of plane 2, with the bottom 6 bits of each word unused. The horizontal and vertical dimensions of the R and B planes are halved relative to the image dimensions, and each R and B component is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R) and (leftlfloor j_G times 0.5 rightrfloor = j_B = j_R). The location of each plane when this image is in linear layout can be determined via 0 , using d for the G plane, d for the B plane, and d) for the R plane. Images in this format must? be defined with a width and height that is a multiple of two.'vulkan'# specifies an unsigned normalized multi-planar format that has a 10-bit G component in the top 10 bits of each 16-bit word of plane 0, and a two-component, 32-bit BR plane 1 consisting of a 10-bit B component in the top 10 bits of the word in bytes 0..1, and a 10-bit R component in the top 10 bits of the word in bytes 2..3, the bottom 6 bits of each word unused. The horizontal and vertical dimensions of the BR plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R) and (leftlfloor j_G times 0.5 rightrfloor = j_B = j_R). The location of each plane when this image is in linear layout can be determined via 0 , using d for the G plane, and d* for the BR plane. Images in this format must? be defined with a width and height that is a multiple of two.(vulkan(# specifies an unsigned normalized multi-planar format? that has a 10-bit G component in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R component in the top 10 bits of each 16-bit word of plane 2, with the bottom 6 bits of each word unused. The horizontal dimension of the R and B plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R). The location of each plane when this image is in linear layout can be determined via 0 , using d for the G plane, d for the B plane, and d) for the R plane. Images in this format must4 be defined with a width that is a multiple of two.)vulkan)# specifies an unsigned normalized multi-planar formata that has a 10-bit G component in the top 10 bits of each 16-bit word of plane 0, and a two-component, 32-bit BR plane 1 consisting of a 10-bit B component in the top 10 bits of the word in bytes 0..1, and a 10-bit R component in the top 10 bits of the word in bytes 2..3, the bottom 6 bits of each word unused. The horizontal dimensions of the BR plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R). The location of each plane when this image is in linear layout can be determined via 0 , using d for the G plane, and d* for the BR plane. Images in this format must4 be defined with a width that is a multiple of two.*vulkan*# specifies an unsigned normalized multi-planar format that has a 10-bit G component in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R component in the top 10 bits of each 16-bit word of plane 2, with the bottom 6 bits of each word unused. Each plane has the same dimensions and each R, G and B component contributes to a single texel. The location of each plane when this image is in linear layout can be determined via 0 , using d for the G plane, d for the B plane, and d for the R plane.+vulkan+ specifies a one-component, 16-bit unsigned normalized format that has a single 12-bit R component in the top 12 bits of a 16-bit word, with the bottom 4 bits unused.,vulkan, specifies a two-component, 32-bit unsigned normalized format that has a 12-bit R component in the top 12 bits of the word in bytes 0..1, and a 12-bit G component in the top 12 bits of the word in bytes 2..3, with the bottom 4 bits of each word unused.-vulkan- specifies a four-component, 64-bit unsigned normalized format that has a 12-bit R component in the top 12 bits of the word in bytes 0..1, a 12-bit G component in the top 12 bits of the word in bytes 2..3, a 12-bit B component in the top 12 bits of the word in bytes 4..5, and a 12-bit A component in the top 12 bits of the word in bytes 6..7, with the bottom 4 bits of each word unused..vulkan. specifies a four-component, 64-bit format containing a pair of G components, an R component, and a B component, collectively encoding a 21 rectangle of unsigned normalized RGB texel data. One G value is present at each i coordinate, with the B and R values shared across both G values and thus recorded at half the horizontal resolution of the image. This format has a 12-bit G component for the even i coordinate in the top 12 bits of the word in bytes 0..1, a 12-bit B component in the top 12 bits of the word in bytes 2..3, a 12-bit G component for the odd i coordinate in the top 12 bits of the word in bytes 4..5, and a 12-bit R component in the top 12 bits of the word in bytes 6..7, with the bottom 4 bits of each word unused. Images in this format must be defined with a width that is a multiple of two. For the purposes of the constraints on copy extents, this format is treated as a compressed format with a 21 compressed texel block./vulkan/ specifies a four-component, 64-bit format containing a pair of G components, an R component, and a B component, collectively encoding a 21 rectangle of unsigned normalized RGB texel data. One G value is present at each i coordinate, with the B and R values shared across both G values and thus recorded at half the horizontal resolution of the image. This format has a 12-bit B component in the top 12 bits of the word in bytes 0..1, a 12-bit G component for the even i coordinate in the top 12 bits of the word in bytes 2..3, a 12-bit R component in the top 12 bits of the word in bytes 4..5, and a 12-bit G component for the odd i~ coordinate in the top 12 bits of the word in bytes 6..7, with the bottom 4 bits of each word unused. Images in this format must be defined with a width that is a multiple of two. For the purposes of the constraints on copy extents, this format is treated as a compressed format with a 21 compressed texel block.0vulkan0# specifies an unsigned normalized multi-planar format that has a 12-bit G component in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R component in the top 12 bits of each 16-bit word of plane 2, with the bottom 4 bits of each word unused. The horizontal and vertical dimensions of the R and B planes are halved relative to the image dimensions, and each R and B component is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R) and (leftlfloor j_G times 0.5 rightrfloor = j_B = j_R). The location of each plane when this image is in linear layout can be determined via 0 , using d for the G plane, d for the B plane, and d) for the R plane. Images in this format must? be defined with a width and height that is a multiple of two.1vulkan1# specifies an unsigned normalized multi-planar format that has a 12-bit G component in the top 12 bits of each 16-bit word of plane 0, and a two-component, 32-bit BR plane 1 consisting of a 12-bit B component in the top 12 bits of the word in bytes 0..1, and a 12-bit R component in the top 12 bits of the word in bytes 2..3, the bottom 4 bits of each word unused. The horizontal and vertical dimensions of the BR plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R) and (leftlfloor j_G times 0.5 rightrfloor = j_B = j_R). The location of each plane when this image is in linear layout can be determined via 0 , using d for the G plane, and d* for the BR plane. Images in this format must? be defined with a width and height that is a multiple of two.2vulkan2# specifies an unsigned normalized multi-planar format? that has a 12-bit G component in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R component in the top 12 bits of each 16-bit word of plane 2, with the bottom 4 bits of each word unused. The horizontal dimension of the R and B plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R). The location of each plane when this image is in linear layout can be determined via 0 , using d for the G plane, d for the B plane, and d) for the R plane. Images in this format must4 be defined with a width that is a multiple of two.3vulkan3# specifies an unsigned normalized multi-planar formata that has a 12-bit G component in the top 12 bits of each 16-bit word of plane 0, and a two-component, 32-bit BR plane 1 consisting of a 12-bit B component in the top 12 bits of the word in bytes 0..1, and a 12-bit R component in the top 12 bits of the word in bytes 2..3, the bottom 4 bits of each word unused. The horizontal dimensions of the BR plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R). The location of each plane when this image is in linear layout can be determined via 0 , using d for the G plane, and d* for the BR plane. Images in this format must4 be defined with a width that is a multiple of two.4vulkan4# specifies an unsigned normalized multi-planar format that has a 12-bit G component in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R component in the top 12 bits of each 16-bit word of plane 2, with the bottom 4 bits of each word unused. Each plane has the same dimensions and each R, G and B component contributes to a single texel. The location of each plane when this image is in linear layout can be determined via 0 , using d for the G plane, d for the B plane, and d for the R plane.5vulkan5 specifies a four-component, 64-bit format containing a pair of G components, an R component, and a B component, collectively encoding a 21 rectangle of unsigned normalized RGB texel data. One G value is present at each i coordinate, with the B and R values shared across both G values and thus recorded at half the horizontal resolution of the image. This format has a 16-bit G component for the even iz coordinate in the word in bytes 0..1, a 16-bit B component in the word in bytes 2..3, a 16-bit G component for the odd ir coordinate in the word in bytes 4..5, and a 16-bit R component in the word in bytes 6..7. Images in this format must be defined with a width that is a multiple of two. For the purposes of the constraints on copy extents, this format is treated as a compressed format with a 21 compressed texel block.6vulkan6 specifies a four-component, 64-bit format containing a pair of G components, an R component, and a B component, collectively encoding a 21 rectangle of unsigned normalized RGB texel data. One G value is present at each i coordinate, with the B and R values shared across both G values and thus recorded at half the horizontal resolution of the image. This format has a 16-bit B component in the word in bytes 0..1, a 16-bit G component for the even i~ coordinate in the word in bytes 2..3, a 16-bit R component in the word in bytes 4..5, and a 16-bit G component for the odd i> coordinate in the word in bytes 6..7. Images in this format must be defined with a width that is a multiple of two. For the purposes of the constraints on copy extents, this format is treated as a compressed format with a 21 compressed texel block.7vulkan7# specifies an unsigned normalized multi-planar format% that has a 16-bit G component in each 16-bit word of plane 0, a 16-bit B component in each 16-bit word of plane 1, and a 16-bit R component in each 16-bit word of plane 2. The horizontal and vertical dimensions of the R and B planes are halved relative to the image dimensions, and each R and B component is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R) and (leftlfloor j_G times 0.5 rightrfloor = j_B = j_R). The location of each plane when this image is in linear layout can be determined via 0 , using d for the G plane, d for the B plane, and d) for the R plane. Images in this format must? be defined with a width and height that is a multiple of two.8vulkan8# specifies an unsigned normalized multi-planar formatF that has a 16-bit G component in each 16-bit word of plane 0, and a two-component, 32-bit BR plane 1 consisting of a 16-bit B component in the word in bytes 0..1, and a 16-bit R component in the word in bytes 2..3. The horizontal and vertical dimensions of the BR plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R) and (leftlfloor j_G times 0.5 rightrfloor = j_B = j_R). The location of each plane when this image is in linear layout can be determined via 0 , using d for the G plane, and d* for the BR plane. Images in this format must? be defined with a width and height that is a multiple of two.9vulkan9# specifies an unsigned normalized multi-planar format that has a 16-bit G component in each 16-bit word of plane 0, a 16-bit B component in each 16-bit word of plane 1, and a 16-bit R component in each 16-bit word of plane 2. The horizontal dimension of the R and B plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R). The location of each plane when this image is in linear layout can be determined via 0 , using d for the G plane, d for the B plane, and d) for the R plane. Images in this format must4 be defined with a width that is a multiple of two.:vulkan:# specifies an unsigned normalized multi-planar format that has a 16-bit G component in each 16-bit word of plane 0, and a two-component, 32-bit BR plane 1 consisting of a 16-bit B component in the word in bytes 0..1, and a 16-bit R component in the word in bytes 2..3. The horizontal dimensions of the BR plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which (leftlfloor i_G times 0.5 rightrfloor = i_B = i_R). The location of each plane when this image is in linear layout can be determined via 0 , using d for the G plane, and d* for the BR plane. Images in this format must4 be defined with a width that is a multiple of two.;vulkan;# specifies an unsigned normalized multi-planar formatg that has a 16-bit G component in each 16-bit word of plane 0, a 16-bit B component in each 16-bit word of plane 1, and a 16-bit R component in each 16-bit word of plane 2. Each plane has the same dimensions and each R, G and B component contributes to a single texel. The location of each plane when this image is in linear layout can be determined via 0 , using d for the G plane, d for the B plane, and d for the R plane.<vulkan< specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes an 84 rectangle of unsigned normalized RGBA texel data.=vulkan= specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data.>vulkan> specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes an 84 rectangle of unsigned normalized RGBA texel data.?vulkan? specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data.@vulkan@ specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes an 84 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.AvulkanA specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.BvulkanB specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes an 84 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.CvulkanC specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.DvulkanD specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 44 rectangle of signed floating-point RGBA texel data.EvulkanE specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 54 rectangle of signed floating-point RGBA texel data.FvulkanF specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 55 rectangle of signed floating-point RGBA texel data.GvulkanG specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 65 rectangle of signed floating-point RGBA texel data.HvulkanH specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 66 rectangle of signed floating-point RGBA texel data.IvulkanI specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 85 rectangle of signed floating-point RGBA texel data.JvulkanJ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 86 rectangle of signed floating-point RGBA texel data.KvulkanK specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 88 rectangle of signed floating-point RGBA texel data.LvulkanL specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 105 rectangle of signed floating-point RGBA texel data.MvulkanM specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 106 rectangle of signed floating-point RGBA texel data.NvulkanN specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 108 rectangle of signed floating-point RGBA texel data.OvulkanO specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 1010 rectangle of signed floating-point RGBA texel data.PvulkanP specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 1210 rectangle of signed floating-point RGBA texel data.QvulkanQ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 1212 rectangle of signed floating-point RGBA texel data.RvulkanR specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 1212 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.SvulkanS specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 1212 rectangle of unsigned normalized RGBA texel data.TvulkanT specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 1210 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.UvulkanU specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 1210 rectangle of unsigned normalized RGBA texel data.VvulkanV specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 1010 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.WvulkanW specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 1010 rectangle of unsigned normalized RGBA texel data.XvulkanX specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 108 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.YvulkanY specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 108 rectangle of unsigned normalized RGBA texel data.ZvulkanZ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 106 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.[vulkan[ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 106 rectangle of unsigned normalized RGBA texel data.\vulkan\ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 105 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.]vulkan] specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 105 rectangle of unsigned normalized RGBA texel data.^vulkan^ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes an 88 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components._vulkan_ specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes an 88 rectangle of unsigned normalized RGBA texel data.`vulkan` specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes an 86 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.avulkana specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes an 86 rectangle of unsigned normalized RGBA texel data.bvulkanb specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes an 85 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.cvulkanc specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes an 85 rectangle of unsigned normalized RGBA texel data.dvulkand specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 66 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.evulkane specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 66 rectangle of unsigned normalized RGBA texel data.fvulkanf specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 65 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.gvulkang specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 65 rectangle of unsigned normalized RGBA texel data.hvulkanh specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 55 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.ivulkani specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 55 rectangle of unsigned normalized RGBA texel data.jvulkanj specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 54 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.kvulkank specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 54 rectangle of unsigned normalized RGBA texel data.lvulkanl specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.mvulkanm specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data.nvulkann specifies a two-component, ETC2 compressed format where each 128-bit compressed texel block encodes a 44 rectangle of signed normalized RG texel data with the first 64 bits encoding red values followed by 64 bits encoding green values.ovulkano specifies a two-component, ETC2 compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RG texel data with the first 64 bits encoding red values followed by 64 bits encoding green values.pvulkanp specifies a one-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 44 rectangle of signed normalized red texel data.qvulkanq specifies a one-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized red texel data.rvulkanr specifies a four-component, ETC2 compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values with sRGB nonlinear encoding applied.svulkans specifies a four-component, ETC2 compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values.tvulkant specifies a four-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding, and provides 1 bit of alpha.uvulkanu specifies a four-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGB texel data, and provides 1 bit of alpha.vvulkanv specifies a three-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding. This format has no alpha and is considered opaque.wvulkanw specifies a three-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGB texel data. This format has no alpha and is considered opaque.xvulkanx specifies a four-component, block-compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.yvulkany specifies a four-component, block-compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data.zvulkanz specifies a three-component, block-compressed format where each 128-bit compressed texel block encodes a 44 rectangle of signed floating-point RGB texel data.{vulkan{ specifies a three-component, block-compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned floating-point RGB texel data.|vulkan| specifies a two-component, block-compressed format where each 128-bit compressed texel block encodes a 44 rectangle of signed normalized RG texel data with the first 64 bits encoding red values followed by 64 bits encoding green values.}vulkan} specifies a two-component, block-compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RG texel data with the first 64 bits encoding red values followed by 64 bits encoding green values.~vulkan~ specifies a one-component, block-compressed format where each 64-bit compressed texel block encodes a 44 rectangle of signed normalized red texel data.vulkan specifies a one-component, block-compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized red texel data.vulkan specifies a four-component, block-compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values with sRGB nonlinear encoding.vulkan specifies a four-component, block-compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values.vulkan specifies a four-component, block-compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values with sRGB nonlinear encoding.vulkan specifies a four-component, block-compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values.vulkan specifies a four-component, block-compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding, and provides 1 bit of alpha.vulkan specifies a four-component, block-compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGB texel data, and provides 1 bit of alpha.vulkan specifies a three-component, block-compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding. This format has no alpha and is considered opaque.vulkan specifies a three-component, block-compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGB texel data. This format has no alpha and is considered opaque.vulkan specifies a two-component format that has 32 signed float bits in the depth component and 8 unsigned integer bits in the stencil component. There are optionally: 24-bits that are unused.vulkan specifies a two-component, 32-bit packed format that has 8 unsigned integer bits in the stencil component, and 24 unsigned normalized bits in the depth component.vulkan specifies a two-component, 24-bit format that has 16 unsigned normalized bits in the depth component and 8 unsigned integer bits in the stencil component.vulkand specifies a one-component, 8-bit unsigned integer format that has 8-bits in the stencil component.vulkani specifies a one-component, 32-bit signed floating-point format that has 32-bits in the depth component.vulkan specifies a two-component, 32-bit format that has 24 unsigned normalized bits in the depth component and, optionally:, 8 bits that are unused.vulkanh specifies a one-component, 16-bit unsigned normalized format that has a single 16-bit depth component.vulkan specifies a three-component, 32-bit packed unsigned floating-point format that has a 5-bit shared exponent in bits 27..31, a 9-bit B component mantissa in bits 18..26, a 9-bit G component mantissa in bits 9..17, and a 9-bit R component mantissa in bits 0..8.vulkan specifies a three-component, 32-bit packed unsigned floating-point format that has a 10-bit B component in bits 22..31, an 11-bit G component in bits 11..21, an 11-bit R component in bits 0..10. See  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-fp10 and  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-fp11.vulkan specifies a four-component, 256-bit signed floating-point format that has a 64-bit R component in bytes 0..7, a 64-bit G component in bytes 8..15, a 64-bit B component in bytes 16..23, and a 64-bit A component in bytes 24..31.vulkan specifies a four-component, 256-bit signed integer format that has a 64-bit R component in bytes 0..7, a 64-bit G component in bytes 8..15, a 64-bit B component in bytes 16..23, and a 64-bit A component in bytes 24..31.vulkan specifies a four-component, 256-bit unsigned integer format that has a 64-bit R component in bytes 0..7, a 64-bit G component in bytes 8..15, a 64-bit B component in bytes 16..23, and a 64-bit A component in bytes 24..31.vulkan specifies a three-component, 192-bit signed floating-point format that has a 64-bit R component in bytes 0..7, a 64-bit G component in bytes 8..15, and a 64-bit B component in bytes 16..23.vulkan specifies a three-component, 192-bit signed integer format that has a 64-bit R component in bytes 0..7, a 64-bit G component in bytes 8..15, and a 64-bit B component in bytes 16..23.vulkan specifies a three-component, 192-bit unsigned integer format that has a 64-bit R component in bytes 0..7, a 64-bit G component in bytes 8..15, and a 64-bit B component in bytes 16..23.vulkan specifies a two-component, 128-bit signed floating-point format that has a 64-bit R component in bytes 0..7, and a 64-bit G component in bytes 8..15.vulkan specifies a two-component, 128-bit signed integer format that has a 64-bit R component in bytes 0..7, and a 64-bit G component in bytes 8..15.vulkan specifies a two-component, 128-bit unsigned integer format that has a 64-bit R component in bytes 0..7, and a 64-bit G component in bytes 8..15.vulkanf specifies a one-component, 64-bit signed floating-point format that has a single 64-bit R component.vulkan_ specifies a one-component, 64-bit signed integer format that has a single 64-bit R component.vulkana specifies a one-component, 64-bit unsigned integer format that has a single 64-bit R component.vulkan specifies a four-component, 128-bit signed floating-point format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, and a 32-bit A component in bytes 12..15.vulkan specifies a four-component, 128-bit signed integer format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, and a 32-bit A component in bytes 12..15.vulkan specifies a four-component, 128-bit unsigned integer format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, and a 32-bit A component in bytes 12..15.vulkan specifies a three-component, 96-bit signed floating-point format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 8..11.vulkan specifies a three-component, 96-bit signed integer format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 8..11.vulkan specifies a three-component, 96-bit unsigned integer format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 8..11.vulkan specifies a two-component, 64-bit signed floating-point format that has a 32-bit R component in bytes 0..3, and a 32-bit G component in bytes 4..7.vulkan specifies a two-component, 64-bit signed integer format that has a 32-bit R component in bytes 0..3, and a 32-bit G component in bytes 4..7.vulkan specifies a two-component, 64-bit unsigned integer format that has a 32-bit R component in bytes 0..3, and a 32-bit G component in bytes 4..7.vulkanf specifies a one-component, 32-bit signed floating-point format that has a single 32-bit R component.vulkan_ specifies a one-component, 32-bit signed integer format that has a single 32-bit R component.vulkana specifies a one-component, 32-bit unsigned integer format that has a single 32-bit R component.vulkan specifies a four-component, 64-bit signed floating-point format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7.vulkan specifies a four-component, 64-bit signed integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7.vulkan specifies a four-component, 64-bit unsigned integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7.vulkan specifies a four-component, 64-bit signed scaled integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7.vulkan specifies a four-component, 64-bit unsigned scaled integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7.vulkan specifies a four-component, 64-bit signed normalized format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7.vulkan specifies a four-component, 64-bit unsigned normalized format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7.vulkan specifies a three-component, 48-bit signed floating-point format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5.vulkan specifies a three-component, 48-bit signed integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5.vulkan specifies a three-component, 48-bit unsigned integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5.vulkan specifies a three-component, 48-bit signed scaled integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5.vulkan specifies a three-component, 48-bit unsigned scaled integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5.vulkan specifies a three-component, 48-bit signed normalized format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5.vulkan specifies a three-component, 48-bit unsigned normalized format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5.vulkan specifies a two-component, 32-bit signed floating-point format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3.vulkan specifies a two-component, 32-bit signed integer format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3.vulkan specifies a two-component, 32-bit unsigned integer format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3.vulkan specifies a two-component, 32-bit signed scaled integer format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3.vulkan specifies a two-component, 32-bit unsigned scaled integer format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3.vulkan specifies a two-component, 32-bit signed normalized format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3.vulkan specifies a two-component, 32-bit unsigned normalized format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3.vulkanf specifies a one-component, 16-bit signed floating-point format that has a single 16-bit R component.vulkan_ specifies a one-component, 16-bit signed integer format that has a single 16-bit R component.vulkana specifies a one-component, 16-bit unsigned integer format that has a single 16-bit R component.vulkanf specifies a one-component, 16-bit signed scaled integer format that has a single 16-bit R component.vulkanh specifies a one-component, 16-bit unsigned scaled integer format that has a single 16-bit R component.vulkanb specifies a one-component, 16-bit signed normalized format that has a single 16-bit R component.vulkand specifies a one-component, 16-bit unsigned normalized format that has a single 16-bit R component.vulkan specifies a four-component, 32-bit packed signed integer format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9.vulkan specifies a four-component, 32-bit packed unsigned integer format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9.vulkan specifies a four-component, 32-bit packed signed scaled integer format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9.vulkan specifies a four-component, 32-bit packed unsigned scaled integer format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9.vulkan specifies a four-component, 32-bit packed signed normalized format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9.vulkan specifies a four-component, 32-bit packed unsigned normalized format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9.vulkan specifies a four-component, 32-bit packed signed integer format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9.vulkan specifies a four-component, 32-bit packed unsigned integer format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9.vulkan specifies a four-component, 32-bit packed signed scaled integer format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9.vulkan specifies a four-component, 32-bit packed unsigned scaled integer format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9.vulkan specifies a four-component, 32-bit packed signed normalized format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9.vulkan specifies a four-component, 32-bit packed unsigned normalized format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9.vulkanT specifies a four-component, 32-bit packed unsigned normalized format that has an 8-bit A component in bits 24..31, an 8-bit B component stored with sRGB nonlinear encoding in bits 16..23, an 8-bit G component stored with sRGB nonlinear encoding in bits 8..15, and an 8-bit R component stored with sRGB nonlinear encoding in bits 0..7.vulkan specifies a four-component, 32-bit packed signed integer format that has an 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15, and an 8-bit R component in bits 0..7.vulkan specifies a four-component, 32-bit packed unsigned integer format that has an 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15, and an 8-bit R component in bits 0..7.vulkan specifies a four-component, 32-bit packed signed scaled integer format that has an 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15, and an 8-bit R component in bits 0..7.vulkan specifies a four-component, 32-bit packed unsigned scaled integer format that has an 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15, and an 8-bit R component in bits 0..7.vulkan specifies a four-component, 32-bit packed signed normalized format that has an 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15, and an 8-bit R component in bits 0..7.vulkan specifies a four-component, 32-bit packed unsigned normalized format that has an 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15, and an 8-bit R component in bits 0..7.vulkan; specifies a four-component, 32-bit unsigned normalized format that has an 8-bit B component stored with sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB nonlinear encoding in byte 1, an 8-bit R component stored with sRGB nonlinear encoding in byte 2, and an 8-bit A component in byte 3.vulkan specifies a four-component, 32-bit signed integer format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3.vulkan specifies a four-component, 32-bit unsigned integer format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3.vulkan specifies a four-component, 32-bit signed scaled format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3.vulkan specifies a four-component, 32-bit unsigned scaled format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3.vulkan specifies a four-component, 32-bit signed normalized format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3.vulkan specifies a four-component, 32-bit unsigned normalized format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3.vulkan; specifies a four-component, 32-bit unsigned normalized format that has an 8-bit R component stored with sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB nonlinear encoding in byte 1, an 8-bit B component stored with sRGB nonlinear encoding in byte 2, and an 8-bit A component in byte 3.vulkan specifies a four-component, 32-bit signed integer format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3.vulkan specifies a four-component, 32-bit unsigned integer format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3.vulkan specifies a four-component, 32-bit signed scaled format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3.vulkan specifies a four-component, 32-bit unsigned scaled format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3.vulkan specifies a four-component, 32-bit signed normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3.vulkan specifies a four-component, 32-bit unsigned normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3.vulkan specifies a three-component, 24-bit unsigned normalized format that has an 8-bit B component stored with sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB nonlinear encoding in byte 1, and an 8-bit R component stored with sRGB nonlinear encoding in byte 2.vulkan specifies a three-component, 24-bit signed integer format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2.vulkan specifies a three-component, 24-bit unsigned integer format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2.vulkan specifies a three-component, 24-bit signed scaled format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2.vulkan specifies a three-component, 24-bit unsigned scaled format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2.vulkan specifies a three-component, 24-bit signed normalized format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2.vulkan specifies a three-component, 24-bit unsigned normalized format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2.vulkan specifies a three-component, 24-bit unsigned normalized format that has an 8-bit R component stored with sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB nonlinear encoding in byte 1, and an 8-bit B component stored with sRGB nonlinear encoding in byte 2.vulkan specifies a three-component, 24-bit signed integer format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2.vulkan specifies a three-component, 24-bit unsigned integer format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2.vulkan specifies a three-component, 24-bit signed scaled format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2.vulkan specifies a three-component, 24-bit unsigned scaled format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2.vulkan specifies a three-component, 24-bit signed normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2.vulkan specifies a three-component, 24-bit unsigned normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2.vulkan specifies a two-component, 16-bit unsigned normalized format that has an 8-bit R component stored with sRGB nonlinear encoding in byte 0, and an 8-bit G component stored with sRGB nonlinear encoding in byte 1.vulkan specifies a two-component, 16-bit signed integer format that has an 8-bit R component in byte 0, and an 8-bit G component in byte 1.vulkan specifies a two-component, 16-bit unsigned integer format that has an 8-bit R component in byte 0, and an 8-bit G component in byte 1.vulkan specifies a two-component, 16-bit signed scaled integer format that has an 8-bit R component in byte 0, and an 8-bit G component in byte 1.vulkan specifies a two-component, 16-bit unsigned scaled integer format that has an 8-bit R component in byte 0, and an 8-bit G component in byte 1.vulkan specifies a two-component, 16-bit signed normalized format that has an 8-bit R component in byte 0, and an 8-bit G component in byte 1.vulkan specifies a two-component, 16-bit unsigned normalized format that has an 8-bit R component in byte 0, and an 8-bit G component in byte 1.vulkan specifies a one-component, 8-bit unsigned normalized format that has a single 8-bit R component stored with sRGB nonlinear encoding.vulkan] specifies a one-component, 8-bit signed integer format that has a single 8-bit R component.vulkan_ specifies a one-component, 8-bit unsigned integer format that has a single 8-bit R component.vulkand specifies a one-component, 8-bit signed scaled integer format that has a single 8-bit R component.vulkanf specifies a one-component, 8-bit unsigned scaled integer format that has a single 8-bit R component.vulkan` specifies a one-component, 8-bit signed normalized format that has a single 8-bit R component.vulkanb specifies a one-component, 8-bit unsigned normalized format that has a single 8-bit R component.vulkan specifies a four-component, 16-bit packed unsigned normalized format that has a 1-bit A component in bit 15, a 5-bit R component in bits 10..14, a 5-bit G component in bits 5..9, and a 5-bit B component in bits 0..4.vulkan specifies a four-component, 16-bit packed unsigned normalized format that has a 5-bit B component in bits 11..15, a 5-bit G component in bits 6..10, a 5-bit R component in bits 1..5, and a 1-bit A component in bit 0.vulkan specifies a four-component, 16-bit packed unsigned normalized format that has a 5-bit R component in bits 11..15, a 5-bit G component in bits 6..10, a 5-bit B component in bits 1..5, and a 1-bit A component in bit 0.vulkan specifies a three-component, 16-bit packed unsigned normalized format that has a 5-bit B component in bits 11..15, a 6-bit G component in bits 5..10, and a 5-bit R component in bits 0..4.vulkan specifies a three-component, 16-bit packed unsigned normalized format that has a 5-bit R component in bits 11..15, a 6-bit G component in bits 5..10, and a 5-bit B component in bits 0..4.vulkan specifies a four-component, 16-bit packed unsigned normalized format that has a 4-bit B component in bits 12..15, a 4-bit G component in bits 8..11, a 4-bit R component in bits 4..7, and a 4-bit A component in bits 0..3.vulkan specifies a four-component, 16-bit packed unsigned normalized format that has a 4-bit R component in bits 12..15, a 4-bit G component in bits 8..11, a 4-bit B component in bits 4..7, and a 4-bit A component in bits 0..3. vulkan  specifies a two-component, 8-bit packed unsigned normalized format that has a 4-bit R component in bits 4..7, and a 4-bit G component in bits 0..3. vulkan , specifies that the format is not specified.J  ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! J  ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! None("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanWVkPhysicalDeviceASTCDecodeFeaturesEXT - Structure describing ASTC decode mode featuresMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TK, it is filled with values indicating whether each feature is supported.  can also be included in the pNext chain of   to enable features.Valid Usage (Implicit)See Alsoo, vulkan[VkImageViewASTCDecodeModeEXT - Structure describing the ASTC decode mode for an image view Valid Usage decodeMode must be one of ,  , or  If the  thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-astc-decodeModeSharedExponentdecodeModeSharedExponent feature is not enabled,  decodeMode must not be If  decodeMode is  the image view must3 not include blocks using any of the ASTC HDR modesformat of the image view must be one of the ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#appendix-compressedtex-astcASTC Compressed Image FormatsIf format uses sRGB encoding then the  decodeMode has no effect.Valid Usage (Implicit)sType must be  decodeMode must be a valid J valueSee AlsoJ, vulkandecodeModeSharedExponentU indicates whether the implementation supports decoding ASTC compressed formats to  internal precision.vulkan decodeModeD is the intermediate format used to decode ASTC compressed formats.  fNone("#%&'-./1789;=>?FHIMSUVX_dghklmq6vulkan4VkImageFormatListCreateInfo - Specify that an image can* be used with a particular set of formats DescriptionIf viewFormatCount is zero,  pViewFormats0 is ignored and the image is created as if the 6% structure were not included in the pNext list of 0.Valid Usage (Implicit)sType must be GIf viewFormatCount is not 0,  pViewFormats must( be a valid pointer to an array of viewFormatCount valid J valuesSee AlsoJ, (vulkan pViewFormats. is an array which lists of all formats which can, be used when creating views of this image.6'(~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      u6'(~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      iNone("#%&'-./1789;=>?FHIMSUVX_dghklmqA./012330/2.1None("#%&'-./1789;=>?FHIMSUVX_dghklmq$?Ivulkan3VkFilter - Specify filters used for texture lookups Description*These filters are described in detail in  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-filteringTexel Filtering.See Also=?, X, !6vulkan6 specifies linear filtering.7vulkan7 specifies nearest filtering.I7654I7654765None("#%&'-./1789;=>?FHIMSUVX_dghklmq7(vulkanVVkPhysicalDeviceImageViewImageFormatInfoEXT - Structure for providing image view typeValid Usage (Implicit)See Also, vulkan{VkFilterCubicImageViewImageFormatPropertiesEXT - Structure for querying cubic filtering capabilities of an image view typeValid Usage (Implicit)sType must be   Valid UsageIf the pNext chain of the TV structure includes a  structure, the pNext chain of the T structure must include a  structure with an  imageViewType that is compatible with  imageTypeSee Alsoo, Avulkan filterCubic8 tells if image format, image type and image view type cani be used with cubic filtering. This field is set by the implementation. User-specified value is ignored.BvulkanfilterCubicMinmax8 tells if image format, image type and image view type can~ be used with cubic filtering and minmax filtering. This field is set by the implementation. User-specified value is ignored.Dvulkan imageViewType is a . value specifying the type of the image view. imageViewType must be a valid  value CD@AB>?EFGH HGCD@AB?F>EjNone("#%&'-./1789;=>?FHIMSUVX_dghklmq<XvulkanQVkFenceCreateFlagBits - Bitmask specifying initial state and behavior of a fenceSee AlsoWZvulkanZu specifies that the fence object is created in the signaled state. Otherwise, it is created in the unsignaled state.WXZYXZYZWkNone("#%&'-./1789;=>?FHIMSUVX_dghklmq@bvulkan,VkEventCreateFlags - Reserved for future use DescriptionbQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also*-bcbclNone("#%&'-./1789;=>?FHIMSUVX_dghklmqkvulkanSVkDynamicState - Indicate which dynamic state is taken from dynamic state commandsSee Also7mvulkanm specifies that the pViewportScalings state in $ will be ignored and must be set dynamically with = before any draws are performed with a pipeline state with $ member viewportScalingEnable set to .nvulkann specifies that the pDiscardRectangles state in  will be ignored and must be set dynamically with * before any draw or clear commands. The I and the number of active discard rectangles is still specified by the discardRectangleMode and discardRectangleCount members of .ovulkano specifies that the sampleLocationsInfo state in  will be ignored and must be set dynamically with a before any draw or clear commands. Enabling custom sample locations is still indicated by the sampleLocationsEnable member of .pvulkanp specifies that the pShadingRatePalettes state in  ! will be ignored and must be set dynamically with   before any draw commands.qvulkanq3 specifies that the coarse sample order state in   will be ignored and must be set dynamically with   before any draw commands.rvulkanr specifies that the pExclusiveScissors state in   will be ignored and must be set dynamically with u before any draw commands. The number of exclusive scissor rectangles used by a pipeline is still specified by the exclusiveScissorCount member of  .svulkans specifies that the lineStippleFactor and lineStipplePattern state in  will be ignored and must be set dynamically with = before any draws are performed with a pipeline state with  member stippledLineEnable set to ..tvulkant specifies that the cullMode state in 7 will be ignored and must be set dynamically with  before any draw commands.uvulkanu specifies that the  frontFace state in 7 will be ignored and must be set dynamically with  before any draw commands.vvulkanv specifies that the topology state in 7 only specifies the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class1, and the specific topology order and adjacency must be set dynamically with  before any draw commands.wvulkanw specifies that the  viewportCount and  pViewports state in 7" will be ignored and must be set dynamically with  before any draw call.xvulkanx specifies that the  scissorCount and  pScissors state in 7" will be ignored and must be set dynamically with  before any draw call.yvulkany specifies that the stride state in 7 will be ignored and must be set dynamically with  before any draw call.zvulkanz specifies that the depthTestEnable state in 7 will be ignored and must be set dynamically with  before any draw call.{vulkan{ specifies that the depthWriteEnable state in 7 will be ignored and must be set dynamically with  before any draw call.|vulkan| specifies that the depthCompareOp state in 7 will be ignored and must be set dynamically with  before any draw call.}vulkan} specifies that the depthBoundsTestEnable state in 7 will be ignored and must be set dynamically with  before any draw call.~vulkan~ specifies that the stencilTestEnable state in 7 will be ignored and must be set dynamically with  before any draw call.vulkan specifies that the failOp, passOp,  depthFailOp, and  compareOp states in 7 for both front and back will be ignored and must be set dynamically with o= before any draws are performed with a pipeline state with 7 member stencilTestEnable set to .vulkan specifies that the  reference state in 7 for both front and back will be ignored and must be set dynamically with = before any draws are performed with a pipeline state with 7 member stencilTestEnable set to .vulkan specifies that the  writeMask state in 7 for both front and back will be ignored and must be set dynamically with = before any draws are performed with a pipeline state with 7 member stencilTestEnable set to .vulkan specifies that the  compareMask state in 7 for both front and back will be ignored and must be set dynamically with = before any draws are performed with a pipeline state with 7 member stencilTestEnable set to .vulkan specifies that the minDepthBounds and maxDepthBounds states of 7 will be ignored and must be set dynamically with = before any draws are performed with a pipeline state with 7 member depthBoundsTestEnable set to ..vulkan specifies that the blendConstants state in 7 will be ignored and must be set dynamically with = before any draws are performed with a pipeline state with 7 member  blendEnable set to .> and any of the blend functions using a constant blend color.vulkan specifies that the depthBiasConstantFactor, depthBiasClamp and depthBiasSlopeFactor states in 7 will be ignored and must be set dynamically with & before any draws are performed with depthBiasEnable in 7 set to ..vulkan specifies that the  lineWidth state in 7 will be ignored and must be set dynamically with L before any draw commands that generate line primitives for the rasterizer.vulkan specifies that the  pScissors state in 7" will be ignored and must be set dynamically with k before any draw commands. The number of scissor rectangles used by a pipeline is still specified by the  scissorCount member of 7".vulkan specifies that the  pViewports state in 7" will be ignored and must be set dynamically with b before any draw commands. The number of viewports used by a pipeline is still specified by the  viewportCount member of 7".k~}|{zyxwvutsrqponml:k~}|{zyxwvutsrqponml~}|{zyxwvutsrqponmmNone("#%&'-./1789;=>?FHIMSUVX_dghklmqZvulkanFVkDeviceQueueCreateFlagBits - Bitmask specifying behavior of the queueSee Alsovulkan? specifies that the device queue is a protected-capable queue.nNone("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkan-VkDeviceCreateFlags - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also oNone("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanJVkDescriptorType - Specifies the type of a descriptor in a descriptor set Description specifies a  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-samplersampler descriptor.  specifies a  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesampler!combined image sampler descriptor. specifies a  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimagesampled image descriptor. specifies a  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimagestorage image descriptor. specifies a  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformtexelbufferuniform texel buffer descriptor. specifies a  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbufferstorage texel buffer descriptor. specifies a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferuniform buffer descriptor. specifies a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferstorage buffer descriptor. specifies a  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic!dynamic uniform buffer descriptor. specifies a  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic!dynamic storage buffer descriptor. specifies an  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inputattachmentinput attachment descriptor. specifies an  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inlineuniformblockinline uniform block.2When a descriptor set is updated via elements of  g, members of  pImageInfo,  pBufferInfo and pTexelBufferView are only accessed by the implementation when they correspond to descriptor type being defined - otherwise they are ignored. The members accessed are as follows for each descriptor type:For  , only the sampler% member of each element of  g:: pImageInfo is accessed.For ,  , or  , only the  imageView and  imageLayout! members of each element of  g:: pImageInfo are accessed.For +, all members of each element of  g:: pImageInfo are accessed.For , ,  , or +, all members of each element of  g:: pBufferInfo are accessed.For  or , each element of  g::pTexelBufferView is accessed.!When updating descriptors with a descriptorType of , none of the  pImageInfo,  pBufferInfo, or pTexelBufferViewf members are accessed, instead the source data of the descriptor update operation is taken from the i structure in the pNext chain of  g$. When updating descriptors with a descriptorType of , none of the  pImageInfo,  pBufferInfo, or pTexelBufferViewf members are accessed, instead the source data of the descriptor update operation is taken from the h structure in the pNext chain of  g.See Also ,  ~, I, a,  gpNone("#%&'-./1789;=>?FHIMSUVX_dghklmqKvulkanZVkDescriptorSetLayoutCreateFlagBits - Bitmask specifying descriptor set layout propertiesSee Alsovulkan3 specifies that descriptor sets using this layout must8 be allocated from a descriptor pool created with the q9 bit set. Descriptor set layouts created with this bit set have alternate limits for the maximum number of descriptors per-stage and per-pipeline layout. The non-UpdateAfterBind limits only count descriptors in sets created without this flag. The UpdateAfterBind limits count all descriptors, but the limits may0 be higher than the non-UpdateAfterBind limits.vulkan! specifies that descriptor sets mustM not be allocated using this layout, and descriptors are instead pushed by 1.None("#%&'-./1789;=>?FHIMSUVX_dghklmqHvulkan4VkDescriptorPoolResetFlags - Reserved for future use DescriptionHQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also HHqNone("#%&'-./1789;=>?FHIMSUVX_dghklmqEvulkanfVkDescriptorPoolCreateFlagBits - Bitmask specifying certain supported operations on a descriptor poolSee Alsovulkan: specifies that descriptor sets allocated from this pool can include bindings with the 2\ bit set. It is valid to allocate descriptor sets that have bindings that do not set the 2 bit from a pool that has  set.vulkan! specifies that descriptor sets can? return their individual allocations to the pool, i.e. all of  ,  , and  B are allowed. Otherwise, descriptor sets allocated from the pool must9 not be individually freed back to the pool, i.e. only   and   are allowed.\None("#%&'-./1789;=>?FHIMSUVX_dghklmq4a3vulkanVkPhysicalDeviceDescriptorIndexingProperties - Structure describing descriptor indexing properties that can be supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alsoo, vulkanVkPhysicalDeviceDescriptorIndexingFeatures - Structure describing descriptor indexing features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TK, it is filled with values indicating whether each feature is supported.  can also be included in the pNext chain of   to enable features.Valid Usage (Implicit)See Alsoo, vulkanVkDescriptorSetVariableDescriptorCountLayoutSupport - Structure returning information about whether a descriptor set layout can be supported Description?If the create info includes a variable-sized descriptor, then  supportedR is determined assuming the requested size of the variable-sized descriptor, and maxVariableDescriptorCount5 is set to the maximum size of that descriptor that can be successfully created (which is greater than or equal to the requested size passed in). If the create info does not include a variable-sized descriptor or if the ::(descriptorBindingVariableDescriptorCount feature is not enabled, then maxVariableDescriptorCount` is set to zero. For the purposes of this command, a variable-sized descriptor binding with a descriptorCount of zero is treated as if the descriptorCount is one, and thus the binding is not ignored and the maximum descriptor count will be returned. If the layout is not supported, then the value written to maxVariableDescriptorCount is undefined.Valid Usage (Implicit)See AlsovulkanVkDescriptorSetVariableDescriptorCountAllocateInfo - Structure specifying additional allocation parameters for descriptor sets DescriptionIf descriptorSetCount3 is zero or this structure is not included in the pNextI chain, then the variable lengths are considered to be zero. Otherwise, pDescriptorCounts[i] is the number of descriptors in the variable count descriptor binding in the corresponding descriptor set layout. If the variable count descriptor binding in the corresponding descriptor set layout has a descriptor type of o then pDescriptorCounts4[i] specifies the binding s capacity in bytes. If   :: pSetLayoutsA[i] does not include a variable count descriptor binding, then pDescriptorCounts[i] is ignored. Valid UsageIf descriptorSetCount is not zero, descriptorSetCount must equal   ::descriptorSetCountIf   :: pSetLayouts7[i] has a variable descriptor count binding, then pDescriptorCounts [i] musty be less than or equal to the descriptor count specified for that binding when the descriptor set layout was createdValid Usage (Implicit)sType must be WIf descriptorSetCount is not 0, pDescriptorCounts must( be a valid pointer to an array of descriptorSetCount uint32_t valuesSee AlsovulkanuVkDescriptorSetLayoutBindingFlagsCreateInfo - Structure specifying creation flags for descriptor set layout bindings DescriptionIf  bindingCount6 is zero or if this structure is not included in the pNext chain, the  u for each descriptor set layout binding is considered to be zero. Otherwise, the descriptor set layout binding at   :: pBindings[i] uses the flags in  pBindingFlags[i]. Valid UsageIf  bindingCount is not zero,  bindingCount must equal   :: bindingCountIf   ::flags includes , then all elements of  pBindingFlags must not include  &,  %, or  #If an element of  pBindingFlags includes  #', then all other elements of   :: pBindings must have a smaller value of bindingIf ::-descriptorBindingUniformBufferUpdateAfterBind= is not enabled, all bindings with descriptor type o must not use  &If ::,descriptorBindingSampledImageUpdateAfterBind= is not enabled, all bindings with descriptor type o, ob, or oa must not use  &If ::,descriptorBindingStorageImageUpdateAfterBind= is not enabled, all bindings with descriptor type o` must not use  &If ::-descriptorBindingStorageBufferUpdateAfterBind= is not enabled, all bindings with descriptor type o must not use  &If ::2descriptorBindingUniformTexelBufferUpdateAfterBind= is not enabled, all bindings with descriptor type o must not use  &If ::2descriptorBindingStorageTexelBufferUpdateAfterBind= is not enabled, all bindings with descriptor type o must not use  &If ::2descriptorBindingInlineUniformBlockUpdateAfterBind= is not enabled, all bindings with descriptor type o must not use  &'All bindings with descriptor type o^, o, or o must not use  &If ::)descriptorBindingUpdateUnusedWhilePending& is not enabled, all elements of  pBindingFlags must not include  %If ::descriptorBindingPartiallyBound& is not enabled, all elements of  pBindingFlags must not include  $If ::(descriptorBindingVariableDescriptorCount& is not enabled, all elements of  pBindingFlags must not include  #If an element of  pBindingFlags includes  #, that element s descriptorType must not be o or oValid Usage (Implicit)sType must be TIf  bindingCount is not 0,  pBindingFlags must( be a valid pointer to an array of  bindingCount valid combinations of  ! valuesSee Also , vulkanmaxVariableDescriptorCount indicates the maximum number of descriptors supported in the highest numbered binding of the layout, if that binding is variable-sized. If the highest numbered binding of the layout has a descriptor type of o then maxVariableDescriptorCount_ indicates the maximum byte size supported for the binding, if that binding is variable-sized.vulkanpDescriptorCounts is a pointer to an array of descriptor counts, with each member specifying the number of descriptors in a variable descriptor count binding in the corresponding descriptor set being allocated.vulkan pBindingFlags is a pointer to an array of  8 bitfields, one for each descriptor set layout binding.vulkan'maxUpdateAfterBindDescriptorsInAllPoolsO is the maximum number of descriptors (summed over all descriptor types) that can9 be created across all pools that are created with the  bit set. Pool creation may fail when this limit is exceeded, or when the space this limit represents is unable to satisfy a pool creation due to fragmentation.vulkan0shaderUniformBufferArrayNonUniformIndexingNativeu is a boolean value indicating whether uniform buffer descriptors natively support nonuniform indexing. If this is .k, then a single dynamic instance of an instruction that nonuniformly indexes an array of uniform buffers may@ execute multiple times in order to access all the descriptors.vulkan/shaderSampledImageArrayNonUniformIndexingNativex is a boolean value indicating whether sampler and image descriptors natively support nonuniform indexing. If this is .n, then a single dynamic instance of an instruction that nonuniformly indexes an array of samplers or images may@ execute multiple times in order to access all the descriptors.vulkan0shaderStorageBufferArrayNonUniformIndexingNativeu is a boolean value indicating whether storage buffer descriptors natively support nonuniform indexing. If this is .k, then a single dynamic instance of an instruction that nonuniformly indexes an array of storage buffers may@ execute multiple times in order to access all the descriptors.vulkan/shaderStorageImageArrayNonUniformIndexingNativet is a boolean value indicating whether storage image descriptors natively support nonuniform indexing. If this is .j, then a single dynamic instance of an instruction that nonuniformly indexes an array of storage images may@ execute multiple times in order to access all the descriptors.vulkan2shaderInputAttachmentArrayNonUniformIndexingNativew is a boolean value indicating whether input attachment descriptors natively support nonuniform indexing. If this is .m, then a single dynamic instance of an instruction that nonuniformly indexes an array of input attachments may@ execute multiple times in order to access all the descriptors.vulkan!robustBufferAccessUpdateAfterBind) is a boolean value indicating whether  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobustBufferAccess can- be enabled in a device simultaneously with -descriptorBindingUniformBufferUpdateAfterBind, -descriptorBindingStorageBufferUpdateAfterBind, 2descriptorBindingUniformTexelBufferUpdateAfterBind , and/or 2descriptorBindingStorageTexelBufferUpdateAfterBind. If this is ., then either robustBufferAccess must8 be disabled or all of these update-after-bind features must be disabled.vulkanquadDivergentImplicitLod is a boolean value indicating whether implicit level of detail calculations for image operations have well-defined results when the image and/or sampler objects used for the instruction are not uniform within a quad. See  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-derivative-image-operationsDerivative Image Operations.vulkan,maxPerStageDescriptorUpdateAfterBindSamplers is similar to maxPerStageDescriptorSamplersK but counts descriptors from descriptor sets created with or without the  bit set.vulkan2maxPerStageDescriptorUpdateAfterBindUniformBuffers is similar to #maxPerStageDescriptorUniformBuffersK but counts descriptors from descriptor sets created with or without the  bit set.vulkan2maxPerStageDescriptorUpdateAfterBindStorageBuffers is similar to #maxPerStageDescriptorStorageBuffersK but counts descriptors from descriptor sets created with or without the  bit set.vulkan1maxPerStageDescriptorUpdateAfterBindSampledImages is similar to "maxPerStageDescriptorSampledImagesK but counts descriptors from descriptor sets created with or without the  bit set.vulkan1maxPerStageDescriptorUpdateAfterBindStorageImages is similar to "maxPerStageDescriptorStorageImagesK but counts descriptors from descriptor sets created with or without the  bit set.vulkan4maxPerStageDescriptorUpdateAfterBindInputAttachments is similar to %maxPerStageDescriptorInputAttachmentsK but counts descriptors from descriptor sets created with or without the  bit set.vulkan#maxPerStageUpdateAfterBindResources is similar to maxPerStageResourcesK but counts descriptors from descriptor sets created with or without the  bit set.vulkan'maxDescriptorSetUpdateAfterBindSamplers is similar to maxDescriptorSetSamplersK but counts descriptors from descriptor sets created with or without the  bit set.vulkan-maxDescriptorSetUpdateAfterBindUniformBuffers is similar to maxDescriptorSetUniformBuffersK but counts descriptors from descriptor sets created with or without the  bit set.vulkan4maxDescriptorSetUpdateAfterBindUniformBuffersDynamic is similar to %maxDescriptorSetUniformBuffersDynamicK but counts descriptors from descriptor sets created with or without the  bit set.vulkan-maxDescriptorSetUpdateAfterBindStorageBuffers is similar to maxDescriptorSetStorageBuffersK but counts descriptors from descriptor sets created with or without the  bit set.vulkan4maxDescriptorSetUpdateAfterBindStorageBuffersDynamic is similar to %maxDescriptorSetStorageBuffersDynamicK but counts descriptors from descriptor sets created with or without the  bit set.vulkan,maxDescriptorSetUpdateAfterBindSampledImages is similar to maxDescriptorSetSampledImagesK but counts descriptors from descriptor sets created with or without the  bit set.vulkan,maxDescriptorSetUpdateAfterBindStorageImages is similar to maxDescriptorSetStorageImagesK but counts descriptors from descriptor sets created with or without the  bit set.vulkan/maxDescriptorSetUpdateAfterBindInputAttachments is similar to  maxDescriptorSetInputAttachmentsK but counts descriptors from descriptor sets created with or without the  bit set.vulkan)shaderInputAttachmentArrayDynamicIndexing0 indicates whether arrays of input attachments can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of o^ must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the #InputAttachmentArrayDynamicIndexing capability.vulkan,shaderUniformTexelBufferArrayDynamicIndexing4 indicates whether arrays of uniform texel buffers can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of o must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the &UniformTexelBufferArrayDynamicIndexing capability.vulkan,shaderStorageTexelBufferArrayDynamicIndexing4 indicates whether arrays of storage texel buffers can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of o must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the &StorageTexelBufferArrayDynamicIndexing capability.vulkan*shaderUniformBufferArrayNonUniformIndexing. indicates whether arrays of uniform buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of o or o must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the $UniformBufferArrayNonUniformIndexing capability.vulkan)shaderSampledImageArrayNonUniformIndexing9 indicates whether arrays of samplers or sampled images can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of o, ob, or oa must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the #SampledImageArrayNonUniformIndexing capability.vulkan*shaderStorageBufferArrayNonUniformIndexing. indicates whether arrays of storage buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of o or o must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the $StorageBufferArrayNonUniformIndexing capability.vulkan)shaderStorageImageArrayNonUniformIndexing- indicates whether arrays of storage images can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of o` must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the #StorageImageArrayNonUniformIndexing capability.vulkan,shaderInputAttachmentArrayNonUniformIndexing0 indicates whether arrays of input attachments can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of o^ must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the &InputAttachmentArrayNonUniformIndexing capability.vulkan/shaderUniformTexelBufferArrayNonUniformIndexing4 indicates whether arrays of uniform texel buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of o must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the )UniformTexelBufferArrayNonUniformIndexing capability.vulkan/shaderStorageTexelBufferArrayNonUniformIndexing4 indicates whether arrays of storage texel buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of o must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the )StorageTexelBufferArrayNonUniformIndexing capability.vulkan-descriptorBindingUniformBufferUpdateAfterBind indicates whether the implementation supports updating uniform buffer descriptors after a set is bound. If this feature is not enabled,  & must not be used with o.vulkan,descriptorBindingSampledImageUpdateAfterBind indicates whether the implementation supports updating sampled image descriptors after a set is bound. If this feature is not enabled,  & must not be used with o, ob, or oa.vulkan,descriptorBindingStorageImageUpdateAfterBind indicates whether the implementation supports updating storage image descriptors after a set is bound. If this feature is not enabled,  & must not be used with o`.vulkan-descriptorBindingStorageBufferUpdateAfterBind indicates whether the implementation supports updating storage buffer descriptors after a set is bound. If this feature is not enabled,  & must not be used with o.vulkan2descriptorBindingUniformTexelBufferUpdateAfterBind indicates whether the implementation supports updating uniform texel buffer descriptors after a set is bound. If this feature is not enabled,  & must not be used with o.vulkan2descriptorBindingStorageTexelBufferUpdateAfterBind indicates whether the implementation supports updating storage texel buffer descriptors after a set is bound. If this feature is not enabled,  & must not be used with o.vulkan)descriptorBindingUpdateUnusedWhilePending indicates whether the implementation supports updating descriptors while the set is in use. If this feature is not enabled,  % must not be used.vulkandescriptorBindingPartiallyBound indicates whether the implementation supports statically using a descriptor set binding in which some descriptors are not valid. If this feature is not enabled,  $ must not be used. vulkan(descriptorBindingVariableDescriptorCount indicates whether the implementation supports descriptor sets with a variable-sized last binding. If this feature is not enabled,  # must not be used. vulkanruntimeDescriptorArray; indicates whether the implementation supports the SPIR-V RuntimeDescriptorArray: capability. If this feature is not enabled, descriptors must# not be declared in runtime arrays.,_  ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!       ! " & % $ #  ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      _ ! " & % $ # & % $ # rNone("#%&'-./1789;=>?FHIMSUVX_dghklmqN*+,-./0123456789:;<=>?@@?>=<;:98765210/.-,+4*3None("#%&'-./1789;=>?FHIMSUVX_dghklmq[Gvulkan[VkDependencyFlagBits - Bitmask specifying how execution and memory dependencies are formedSee AlsoFBvulkanB" specifies that dependencies are  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-device-local-dependenciesnon-device-local dependency.CvulkanC specifies that a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-barriers-subpass-self-dependenciessubpass has more than one view.DvulkanD& specifies that dependencies will be  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regionsframebuffer-local.FGDCBA GDCBADCBFWNone("#%&'-./1789;=>?FHIMSUVX_dghklmqL vulkanXVkRenderPassMultiviewCreateInfo - Structure containing multiview info for all subpasses Description*When a subpass uses a non-zero view mask,  multiview| functionality is considered to be enabled. Multiview is all-or-nothing for a render pass - that is, either all subpasses must3 have a non-zero view mask (though some subpasses may have only one view) or all must be zero. Multiview causes all drawing and clear commands in the subpass to behave as if they were broadcast to each view, where a view is represented by one layer of the framebuffer attachments. All draws and clears are broadcast to each  view indexG whose bit is set in the view mask. The view index is provided in the  ViewIndex shader input variable, and color, depth/stencil, and input attachments all read/write the layer of the framebuffer corresponding to the view index.If the view mask is zero for all subpasses, multiview is considered to be disabled and all drawing commands execute normally, without this additional broadcasting.Some implementations may, not support multiview in conjunction with  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiview-gsgeometry shaders or  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiview-tesstessellation shaders. When multiview is enabled, the C bit in a dependency can be used to express a view-local dependency, meaning that each view in the destination subpass depends on a single view in the source subpass. Unlike pipeline barriers, a subpass dependency can potentially have a different view mask in the source subpass and the destination subpass. If the dependency is view-local, then each view (dstView) in the destination subpass depends on the view dstView +  pViewOffsets|[dependency] in the source subpass. If there is not such a view in the source subpass, then this dependency does not affect that view in the destination subpass. If the dependency is not view-local, then all views in the destination subpass depend on all views in the source subpass, and the view offset is ignored. A non-zero view offset is not allowed in a self-dependency.The elements of pCorrelationMasksE are a set of masks of views indicating that views in the same mask mayx exhibit spatial coherency between the views, making it more efficient to render them concurrently. Correlation masks mustI not have a functional effect on the results of the multiview rendering.When multiview is enabled, at the beginning of each subpass all non-render pass state is undefined. In particular, each time  or " is called the graphics pipeline mustA be bound, any relevant descriptor sets or vertex/index buffers must= be bound, and any relevant dynamic state or push constants must be set before they are used.A multiview subpass canp declare that its shaders will write per-view attributes for all views in a single invocation, by setting the A bit in the subpass description. The only supported per-view attributes are position and viewport mask, and per-view position and viewport masks are written to output array variables decorated with PositionPerViewNV and ViewportMaskPerViewNV, respectively. If VK_NV_viewport_array2 is not supported and enabled, ViewportMaskPerViewNV must- not be used. Values written to elements of PositionPerViewNV and ViewportMaskPerViewNV must not depend on the  ViewIndex. The shader must1 also write to an output variable decorated with Position, and the value written to Position must equal the value written to PositionPerViewNV[ ViewIndex]. Similarly, if ViewportMaskPerViewNV is written to then the shader must2 also write to an output variable decorated with ViewportMaskNV, and the value written to ViewportMaskNV must equal the value written to ViewportMaskPerViewNV[ ViewIndex6]. Implementations will either use values taken from Position and ViewportMaskNVJ and invoke the shader once for each view, or will use values taken from PositionPerViewNV and ViewportMaskPerViewNV; and invoke the shader fewer times. The values written to Position and ViewportMaskNV must& not depend on the values written to PositionPerViewNV and ViewportMaskPerViewNVh, or vice versa (to allow compilers to eliminate the unused outputs). All attributes that do not have  *PerViewNV counterparts must not depend on  ViewIndex.|Per-view attributes are all-or-nothing for a subpass. That is, all pipelines compiled against a subpass that includes the A bit must" write per-view attributes to the  *PerViewNV[]8 shader outputs, in addition to the non-per-view (e.g. PositionQ) outputs. Pipelines compiled against a subpass that does not include this bit must not include the  *PerViewNV[] outputs in their interfaces. Valid UsageEach view index must- not be set in more than one element of pCorrelationMasksValid Usage (Implicit)sType must be #If  subpassCount is not 0,  pViewMasks must( be a valid pointer to an array of  subpassCount uint32_t valuesIf dependencyCount is not 0,  pViewOffsets must( be a valid pointer to an array of dependencyCount int32_t valuesIf correlationMaskCount is not 0, pCorrelationMasks must( be a valid pointer to an array of correlationMaskCount uint32_t valuesSee Also vulkanwVkPhysicalDeviceMultiviewProperties - Structure describing multiview limits that can be supported by an implementationMembersThe members of the  C structure describe the following implementation-dependent limits: DescriptionIf the   structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See AlsovulkanwVkPhysicalDeviceMultiviewFeatures - Structure describing multiview features that can be supported by an implementationMembersThe members of the , structure describe the following features: Description multiview specifies whether the implementation supports multiview rendering within a render pass. If this feature is not enabled, the view mask of each subpass must always be zero.multiviewGeometryShaderh specifies whether the implementation supports multiview rendering within a render pass, with  Vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometrygeometry shadersq. If this feature is not enabled, then a pipeline compiled against a subpass with a non-zero view mask must$ not include a geometry shader.multiviewTessellationShaderh specifies whether the implementation supports multiview rendering within a render pass, with  Zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellationtessellation shadersq. If this feature is not enabled, then a pipeline compiled against a subpass with a non-zero view mask must+ not include any tessellation shaders.If the  structure is included in the pNext chain of TK, it is filled with values indicating whether each feature is supported.  can also be included in the pNext chain of   to enable the features. Valid UsageIf multiviewGeometryShader is enabled then  multiview must also be enabledIf multiviewTessellationShader is enabled then  multiview must also be enabledValid Usage (Implicit)sType must be $See Alsoo, Mvulkan pViewMasks is a pointer to an array of  subpassCount view masks, where each mask is a bitfield of view indices describing which views rendering is broadcast to in each subpass, when multiview is enabled. If  subpassCount, is zero, each view mask is treated as zero.Nvulkan pViewOffsets is a pointer to an array of dependencyCount, view offsets, one for each dependency. If dependencyCount is zero, each dependency s view offset is treated as zero. Each view offset controls which views in the source subpass the views in the destination subpass depend on.OvulkanpCorrelationMasks is a pointer to an array of correlationMaskCount+ view masks indicating sets of views that may+ be more efficient to render concurrently.QvulkanmaxMultiviewViewCount2 is one greater than the maximum view index that can be used in a subpass.RvulkanmaxMultiviewInstanceIndex is the maximum valid value of instance index allowed to be generated by a drawing command recorded within a subpass of a multiview render pass instance.FGADCB LMNO PQRSTUV~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      STUV PQR LMNO~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      GADCBDCBFsNone("#%&'-./1789;=>?FHIMSUVX_dghklmq& jklmnopqrst tsrqnmlkpjoNone("#%&'-./1789;=>?FHIMSUVX_dghklmq rEvulkan9VkCullModeFlagBits - Bitmask controlling triangle culling Description[Following culling, fragments are produced for any triangles which have not been discarded.See AlsoDvvulkanv, specifies that all triangles are discarded.wvulkanw3 specifies that back-facing triangles are discardedxvulkanx5 specifies that front-facing triangles are discardedyvulkany* specifies that no triangles are discardedDEyxwvu EyxwvuyxwvDtNone("#%&'-./1789;=>?FHIMSUVX_dghklmq  vulkan8VkComponentSwizzle - Specify how a component is swizzled DescriptionvSetting the identity swizzle on a component is equivalent to setting the identity mapping on that component. That is:# Component # Identity Mapping   components.r     components.g     components.b     components.a   !Component Mappings Equivalent To See Also1vulkanS specifies that the component is set to the value of the A component of the image.vulkanS specifies that the component is set to the value of the B component of the image.vulkanS specifies that the component is set to the value of the G component of the image.vulkanS specifies that the component is set to the value of the R component of the image.vulkan specifies that the component is set to either 1 or 1.0, depending on whether the type of the image view format is integer or floating-point respectively, as determined by the  `https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-definitionFormat Definition section for each .vulkan- specifies that the component is set to zero.vulkan> specifies that the component is set to the identity swizzle. None("#%&'-./1789;=>?FHIMSUVX_dghklmq # Cvulkan)VkCompareOp - Stencil comparison functionSee Also7, =?, 7n, , ovulkan+ specifies that the test evaluates to true.vulkan) specifies that the test evaluates A "e B.vulkan) specifies that the test evaluates A "` B.vulkan) specifies that the test evaluates A > B.vulkan) specifies that the test evaluates A "d B.vulkan) specifies that the test evaluates A = B.vulkan) specifies that the test evaluates A < B.vulkan, specifies that the test evaluates to false. CCNone("#%&'-./1789;=>?FHIMSUVX_dghklmq )@BvulkanRVkCommandPoolResetFlagBits - Bitmask controlling behavior of a command pool resetSee AlsoAvulkanr specifies that resetting a command pool recycles all of the resources from the command pool back to the system.ABBAuNone("#%&'-./1789;=>?FHIMSUVX_dghklmq 8cvulkanSVkCommandPoolCreateFlagBits - Bitmask specifying usage behavior for a command poolSee AlsovulkanW specifies that command buffers allocated from the pool are protected command buffers.vulkanS allows any command buffer allocated from a pool to be individually reset to the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state; either by calling +, or via the implicit reset when calling +. If this flag is not set on a pool, then  must? not be called for any command buffer allocated from that pool.vulkan specifies that command buffers allocated from the pool will be short-lived, meaning that they will be reset or freed in a relatively short timeframe. This flag mayW be used by the implementation to control memory allocation behavior within the pool. vNone("#%&'-./1789;=>?FHIMSUVX_dghklmq CvulkanTVkCommandBufferUsageFlagBits - Bitmask specifying usage behavior for command bufferSee Alsovulkan" specifies that a command buffer cans be resubmitted to a queue while it is in the /pending state/, and recorded into multiple primary command buffers.vulkan specifies that a secondary command buffer is considered to be entirely inside a render pass. If this is a primary command buffer, then this bit is ignored.vulkan specifies that each recording of the command buffer will only be submitted once, and the command buffer will be reset and recorded again between each submission.  None("#%&'-./1789;=>?FHIMSUVX_dghklmq M@vulkanVVkCommandBufferResetFlagBits - Bitmask controlling behavior of a command buffer resetSee Also?vulkanT specifies that most or all memory resources currently owned by the command buffer should\ be returned to the parent command pool. If this flag is not set, then the command buffer mayE hold onto memory resources and reuse them when recording commands.  commandBuffer is moved to the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state.?@@?wNone("#%&'-./1789;=>?FHIMSUVX_dghklmq RvulkanBVkCommandBufferLevel - Enumerant specifying a command buffer levelSee Alsovulkan& specifies a secondary command buffer.vulkan$ specifies a primary command buffer.xNone("#%&'-./1789;=>?FHIMSUVX_dghklmq `Kvulkan_VkColorComponentFlagBits - Bitmask controlling which components are written to the framebuffer DescriptionUThe color write mask operation is applied regardless of whether blending is enabled.See Alsovulkan specifies that the A value is written to the color attachment for the appropriate sample. Otherwise, the value in memory is unmodified.vulkan specifies that the B value is written to the color attachment for the appropriate sample. Otherwise, the value in memory is unmodified.vulkan specifies that the G value is written to the color attachment for the appropriate sample. Otherwise, the value in memory is unmodified.vulkan specifies that the R value is written to the color attachment for the appropriate sample. Otherwise, the value in memory is unmodified. yNone("#%&'-./1789;=>?FHIMSUVX_dghklmq dvulkan1VkBufferViewCreateFlags - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See AlsozNone("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkanDVkBufferUsageFlagBits - Bitmask specifying allowed usage of a bufferSee Alsovulkan specifies that the buffer can3 be used to retrieve a buffer device address via bC and use that address to access the buffer s memory from a shader.vulkand specifies that the buffer is suitable for using for binding as a transform feedback buffer with .vulkanL specifies that the buffer is suitable for using as a counter buffer with  and .vulkan; specifies that the buffer is suitable for passing as the buffer parameter to .vulkan3 specifies that the buffer is suitable for use in  and .vulkan; specifies that the buffer is suitable for passing as the buffer parameter to , , , , or *. It is also suitable for passing as the buffer member of x, or sequencesCountBuffer or sequencesIndexBuffer or preprocessedBuffer member of GvulkanI specifies that the buffer is suitable for passing as an element of the pBuffers array to .vulkan; specifies that the buffer is suitable for passing as the buffer parameter to .vulkan specifies that the buffer can be used in a  v suitable for occupying a /C slot either of type o or o.vulkan specifies that the buffer can be used in a  v suitable for occupying a /C slot either of type o or o.vulkan specifies that the buffer can be used to create a /= suitable for occupying a /C slot of type o.vulkan specifies that the buffer can be used to create a /= suitable for occupying a /C slot of type o.vulkan specifies that the buffer can3 be used as the destination of a transfer command.vulkan specifies that the buffer can be used as the source of a transfer command (see the definition of  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-transfer).{None("#%&'-./1789;=>?FHIMSUVX_dghklmq mvulkanNVkBufferCreateFlagBits - Bitmask specifying additional parameters of a buffer DescriptionSee  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseresourcefeaturesSparse Resource Features and  Vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#featuresPhysical Device FeaturesB for details of the sparse memory features supported on a device.See Alsovulkan2 specifies that the buffer is a protected buffer.vulkan& specifies that the buffer s address canT be saved and reused on a subsequent run (e.g. for trace capture and replay), see b for more detail. vulkan  specifies that the buffer will be backed using sparse memory binding with memory ranges that might also simultaneously be backing another buffer (or another portion of the same buffer). Buffers created with this flag must also be created with the   flag. vulkan  specifies that the buffer canS be partially backed using sparse memory binding. Buffers created with this flag must also be created with the   flag. vulkan G specifies that the buffer will be backed using sparse memory binding.          |None("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkan=VkBorderColor - Specify border color used for texture lookups Description)These colors are described in detail in  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-replacementTexel Replacement.See Also=?vulkan indicates that a @ structure is present in the =?::pNext? chain which contains the color data in floating-point format.vulkan indicates that a @ structure is present in the =?::pNext8 chain which contains the color data in integer format.vulkan3 specifies an opaque, integer format, white color.vulkan: specifies an opaque, floating-point format, white color.vulkan3 specifies an opaque, integer format, black color.vulkan: specifies an opaque, floating-point format, black color.vulkan7 specifies a transparent, integer format, black color.vulkan> specifies a transparent, floating-point format, black color. }None("#%&'-./1789;=>?FHIMSUVX_dghklmq W#vulkan+VkBlendOp - Framebuffer blending operations DescriptionNThe semantics of each basic blend operations is described in the table below: #  RGB Components  Alpha Component  W } R = Rs0 Sr + Rd Dr G = Gs0 Sg + Gd Dg B = Bs0 Sb + Bd Db k A = As0 Sa + Ad Da  V } R = Rs0 Sr - Rd Dr G = Gs0 Sg - Gd Dg B = Bs0 Sb - Bd Db k A = As0 Sa - Ad Da  U } R = Rd Dr - Rs0 Sr G = Gd Dg - Gs0 Sg B = Bd Db - Bs0 Sb k A = Ad Da - As0 Sa  TP > R = min(Rs0,Rd) G = min(Gs0,Gd) B = min(Bs0,Bd) 5 A = min(As0,Ad)  SP > R = max(Rs0,Rd) G = max(Gs0,Gd) B = max(Bs0,Bd) 5 A = max(As0,Ad) Basic Blend Operations2In this table, the following conventions are used:dRs0, Gs0, Bs0 and As0 represent the first source color R, G, B, and A components, respectively.Rd, Gd, Bd and Ad represent the R, G, B, and A components of the destination color. That is, the color currently in the corresponding color attachment for this fragment/sample.aSr, Sg, Sb and Sa represent the source blend factor R, G, B, and A components, respectively.fDr, Dg, Db and Da represent the destination blend factor R, G, B, and A components, respectively.The blending operation produces a new set of values R, G, B and A, which are written to the framebuffer attachment. If blending is not enabled for this attachment, then R, G, B and A are assigned Rs0, Gs0, Bs0 and As0, respectively.LIf the color attachment is fixed-point, the components of the source and destination values and blend factors are each clamped to [0,1] or [-1,1] respectively for an unsigned normalized or signed normalized color attachment prior to evaluating the blend operations. If the color attachment is floating-point, no clamping occurs.See Also75#WVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$h#WVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$WVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%~None("#%&'-./1789;=>?FHIMSUVX_dghklmq!7^vulkan,VkBlendFactor - Framebuffer blending factors DescriptionAThe semantics of each enum value is described in the table below: ^ m RGB Blend Factors (Sr,Sg,Sb) or (Dr,Dg,Db) , Alpha Blend Factor (Sa or Da)  r  (0,0,0)  0  q  (1,1,1)  1  p  (Rs0,Gs0,Bs0)  As0  o  (1-Rs0,1-Gs0,1-Bs0)  1-As0  n  (Rd,Gd,Bd)  Ad  m  (1-Rd,1-Gd,1-Bd)  1-Ad  l  (As0,As0,As0)  As0  k  (1-As0,1-As0,1-As0)  1-As0  j  (Ad,Ad,Ad)  Ad  i  (1-Ad,1-Ad,1-Ad)  1-Ad  h  (Rc,Gc,Bc)  Ac  g  (1-Rc,1-Gc,1-Bc)  1-Ac  f  (Ac,Ac,Ac)  Ac  e  (1-Ac,1-Ac,1-Ac)  1-Ac  d1 + (f,f,f); f = min(As0,1-Ad)  1  c  (Rs1,Gs1,Bs1)  As1  b  (1-Rs1,1-Gs1,1-Bs1)  1-As1  a  (As1,As1,As1)  As1  `  (1-As1,1-As1,1-As1)  1-As1  Blend Factors2In this table, the following conventions are used:Rs0,Gs0,Bs0 and As0 represent the first source color R, G, B, and A components, respectively, for the fragment output location corresponding to the color attachment being blended.Rs1,Gs1,Bs1 and As1 represent the second source color R, G, B, and A components, respectively, used in dual source blending modes, for the fragment output location corresponding to the color attachment being blended.Rd,Gd,Bd and Ad represent the R, G, B, and A components of the destination color. That is, the color currently in the corresponding color attachment for this fragment/sample.ZRc,Gc,Bc and Ac represent the blend constant R, G, B, and A components, respectively.See Also7^rqponmlkjihgfedcba`_(^rqponmlkjihgfedcba`_rqponmlkjihgfedcba`None("#%&'-./1789;=>?FHIMSUVX_dghklmq!>yvulkan`VkAttachmentStoreOp - Specify how contents of an attachment are treated at the end of a subpass DescriptionNote| can cause contents generated during previous render passes to be discarded before reaching memory, even if no write to the attachment occurs during the current render pass.See Also6, c{vulkan{\ specifies that the contents within the render area were not written during rendering, and may not be written to memory. If the attachment was written to during the renderpass, the contents of the attachment will be undefined inside the render area.|vulkan|T specifies the contents within the render area are not needed after rendering, and may be discarded; the contents of the attachment will be undefined inside the render area. For attachments with a depth/stencil format, this uses the access type C. For attachments with a color format, this uses the access type .}vulkan} specifies the contents generated during the render pass and within the render area are written to memory. For attachments with a depth/stencil format, this uses the access type C. For attachments with a color format, this uses the access type .y}|{zy}|{z}|{None("#%&'-./1789;=>?FHIMSUVX_dghklmq!+vulkaneVkAttachmentLoadOp - Specify how contents of an attachment are treated at the beginning of a subpassSee Also6, cvulkan specifies that the previous contents within the area need not be preserved; the contents of the attachment will be undefined inside the render area. For attachments with a depth/stencil format, this uses the access type C. For attachments with a color format, this uses the access type .vulkan specifies that the contents within the render area will be cleared to a uniform value, which is specified when a render pass instance is begun. For attachments with a depth/stencil format, this uses the access type C. For attachments with a color format, this uses the access type .vulkan specifies that the previous contents of the image within the render area will be preserved. For attachments with a depth/stencil format, this uses the access type C. For attachments with a color format, this uses the access type .None("#%&'-./1789;=>?FHIMSUVX_dghklmq!0pvulkan\VkAttachmentDescriptionFlagBits - Bitmask specifying additional properties of an attachmentSee AlsovulkanT specifies that the attachment aliases the same device memory as other attachments.None("#%&'-./1789;=>?FHIMSUVX_dghklmq!XvulkangVkAccessFlagBits - Bitmask specifying memory access types that will participate in a memory dependency DescriptionCertain access types are only performed by a subset of pipeline stages. Any synchronization command that takes both stage masks and access masks uses both to define the  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopesx - only the specified access types performed by the specified stages are included in the access scope. An application must not specify an access flag in a synchronization command if it does not include a pipeline stage in the corresponding stage mask that is able to perform accesses of that type. The following table lists, for each access flag, which pipeline stages can perform that type of access.4 Access flag a Supported pipeline stages                , ,  , , , , , , or     , ,  , , , , , , or     , ,  , , , , , , or               >  , or   =  , or                    a Any   a Any                                  <   , or         ] Supported access typesSee Alsovulkan_ specifies write access to a transform feedback buffer made when transform feedback is active.vulkanS specifies read access to a transform feedback counter buffer which is read when  executes.vulkanW specifies write access to a transform feedback counter buffer which is written when  executes.vulkanH specifies read access to a predicate as part of conditional rendering.vulkan is similar to , but also includes  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advancedadvanced blend operations.vulkanY specifies read access to an acceleration structure as part of a trace or build command.vulkanQ specifies write access to an acceleration structure as part of a build command.vulkan[ specifies read access to a shading rate image as part of a drawing command, as bound by  l.vulkan specifies read access to a  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachmentfragment density map attachment during dynamic chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapopsfragment density map operationsvulkan specifies reads from /9 inputs to .vulkan specifies writes to the /9 preprocess outputs in .vulkant specifies all write accesses. It is always valid in any access mask, and is treated as equivalent to setting all WRITE. access flags that are valid where it is used.vulkanr specifies all read accesses. It is always valid in any access mask, and is treated as equivalent to setting all READ/ access flags that are valid where it is used.vulkan specifies write access by a host operation. Accesses of this type are not performed through a resource, but directly on memory.vulkan specifies read access by a host operation. Accesses of this type are not performed through a resource, but directly on memory.vulkan5 specifies write access to an image or buffer in a  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clearsclear or  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copiescopy operation.vulkan4 specifies read access to an image or buffer in a  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copiescopy operation.vulkan specifies write access to a  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpassdepth/stencil attachment, via  ^https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-ds-statedepth or stencil operations or via certain  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops!subpass load and store operations.vulkan specifies read access to a  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpassdepth/stencil attachment, via  ^https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-ds-statedepth or stencil operations or via certain  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-opssubpass load operations.vulkan specifies write access to a  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass3color, resolve, or depth/stencil resolve attachment during a  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass render pass or via certain  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops!subpass load and store operations.vulkan specifies read access to a  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpasscolor attachment, such as via  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blendingblending,  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-logicoplogic operations, or via certain  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-opssubpass load operations. It does not include  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advancedadvanced blend operations.vulkan specifies write access to a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferstorage buffer,  thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-physical-storage-bufferphysical storage buffer,  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbufferstorage texel buffer, or  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image.vulkan specifies read access to a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferstorage buffer,  thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-physical-storage-bufferphysical storage buffer,  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shader-binding-tableshader binding table,  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformtexelbufferuniform texel buffer,  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbufferstorage texel buffer,  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage sampled image, or  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image.vulkan specifies read access to an  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpassinput attachment/ within a render pass during fragment shading.vulkan specifies read access to a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferuniform buffer.vulkanS specifies read access to a vertex buffer as part of a drawing command, bound by .vulkan\ specifies read access to an index buffer as part of an indexed drawing command, bound by .vulkani specifies read access to indirect command data read as part of an indirect drawing or dispatch command.;None("#%&'-./1789;=>?FHIMSUVX_dghklmq!6?@ABCDEuyxwvFGADCBHI4765J  ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! KLMBQPONMLKJIHGFEDCN     OPQRST[UBA@?>=<;:9876543210/.-,+*)('&%$#"! VWX f  ~ } | { z y x w v u t s r q p o n m l k j i h gY - 8 7 6 5 4 3 2 1 0 / .Z[ $ %\] ^ _`a bc \ l k j i h g f e d c b a ` _ ^ ]de 9 < ; :f|~}g~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!       + , - 1 0 / . D E F G O P Q T S R                 ? @ D C B A K L T U ] ^  IJKSRQPONMLcdegfop~}|{zyxwvutsrqhijutsrqponmlkWXYZbckl~}|{zyxwvutsrqponm   #$WVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%^_rqponmlkjihgfedcba`yz}|{None("#%&'-./1789;=>?FHIMSUVX_dghklmq"vulkan^VkAllocationCallbacks - Structure containing callback function pointers for memory allocation Valid Usage pfnAllocation must1 be a valid pointer to a valid user-defined pfnReallocation must1 be a valid pointer to a valid user-defined pfnFree must1 be a valid pointer to a valid user-defined  If either of pfnInternalAllocation or pfnInternalFree is not NULL, both must be valid callbacksSee Also, , , , , 3, , , , , ,  , 7, , , ,  ,  , I, ,  , , , , *, ,, 6, 7, , , 0, , 1\, ,  , , , 8+, 9, , :, , , 6, c, , =, X, , <, >, , , , , , , , , , , , ,  ,   ,  ,  ,  ,  ,  , I, ,  , *, ,, 6, 0, 1, ,  Z, 7, 8, 9, , :, 6, =, X , !, <", >#, $, %, &, 3', (, )vulkan pUserDatad is a value to be interpreted by the implementation of the callbacks. When any of the callbacks in q are called, the Vulkan implementation will pass this value as the first parameter to the callback. This value can{ vary each time an allocator is passed into a command, even when the same object takes an allocator in multiple commands.vulkan pfnAllocation is a ? pointer to an application-defined memory allocation function.vulkanpfnReallocation is a A pointer to an application-defined memory reallocation function.vulkanpfnFree is a 9 pointer to an application-defined memory free function.vulkanpfnInternalAllocation is a  pointer to an application-defined function that is called by the implementation when the implementation makes internal allocations.vulkanpfnInternalFree is a  pointer to an application-defined function that is called by the implementation when the implementation frees internal allocations.None("#%&'-./1789;=>?FHIMSUVX_dghklmq" vulkan-A class for things which can be created with .vulkan1VK_NULL_HANDLE - Reserved non-valid object handleSee Also!No cross-references are available8o ;o None("#%&'-./1789;=>?FHIMSUVX_dghklmq"$None("#%&'-./1789;=>?FHIMSUVX_dghklmq"7vulkaniVkPhysicalDeviceMemoryBudgetPropertiesEXT - Structure specifying physical device memory budget and usage Description>The values returned in this structure are not invariant. The  heapBudget and  heapUsage values must7 be zero for array elements greater than or equal to  m::memoryHeapCount. The  heapBudget value must+ be non-zero for array elements less than  m::memoryHeapCount. The  heapBudget value must be less than or equal to  y::size for each heap.Valid Usage (Implicit)See Alsom, vulkan heapBudget is an array of  m values in which memory budgets are returned, with one element for each memory heap. A heap s budget is a rough estimate of how much memory the process can- allocate from that heap before allocations mayc fail or cause performance degradation. The budget includes any currently allocated device memory.vulkan heapUsage is an array of  m values in which memory usages are returned, with one element for each memory heap. A heap s usage is an estimate of how much memory the process is currently using in that heap.eNone("#%&'-./1789;=>?FHIMSUVX_dghklmq"K 4vulkanZVkPhysicalDeviceDriverProperties - Structure containing driver identification information DescriptiondriverID mustc be immutable for a given driver across instances, processes, driver versions, and system reboots.Valid Usage (Implicit)See Also5, , 5vulkantVkConformanceVersion - Structure containing the conformance test suite version the implementation is compliant withSee Also4, [vulkandriverID> is a unique identifier for the driver of the physical device.vulkan driverName is an array of  charL containing a null-terminated UTF-8 string which is the name of the driver.vulkan driverInfo is an array of  charZ containing a null-terminated UTF-8 string with additional information about the driver.vulkanconformanceVersionW is the version of the Vulkan conformance test this driver is conformant against (see 5).vulkanmajor; is the major version number of the conformance test suite.vulkanminor; is the minor version number of the conformance test suite.vulkansubminor> is the subminor version number of the conformance test suite.vulkanpatch; is the patch version number of the conformance test suite.45~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      54~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      None("#%&'-./1789;=>?FHIMSUVX_dghklmq"bt%&'()*+,-./0123456789::9876543210/.-,)('&+%*ONone("#%&'-./1789;=>?FHIMSUVX_dghklmq"|IvulkanYVkExternalMemoryImageCreateInfo - Specify that an image may be backed by external memoryMembersNoteA  structure must be included in the creation parameters for an image that will be bound to memory that is either exported or imported.Valid Usage (Implicit)See Also, vulkanZVkExternalMemoryBufferCreateInfo - Specify that a buffer may be backed by external memoryMembersNoteA  structure must be included in the creation parameters for a buffer that will be bound to memory that is either exported or imported.Valid Usage (Implicit)See Also, vulkanXVkExportMemoryAllocateInfo - Specify exportable handle types for a device memory object Valid Usage The bits in  handleTypes must7 be supported and compatible, as reported by P9 or P6Valid Usage (Implicit)sType must be 9 handleTypes must be a valid combination of A* valuesSee Also, <vulkan handleTypes is a bitmask of A*= specifying one or more memory handle types the application can8 export from the resulting allocation. The application can8 request multiple handle types for the same allocation.>vulkan handleTypes is a bitmask of A*6 specifying one or more external memory handle types. handleTypes must be a valid combination of A* values@vulkan handleTypes is a bitmask of A*6 specifying one or more external memory handle types. handleTypes must be a valid combination of A* values handleTypes must not be 0_?@=>;<~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ?@=>;<~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      _None("#%&'-./1789;=>?FHIMSUVX_dghklmq" VWXYZ[\]^_`a a`_^]ZYXW\V[None("#%&'-./1789;=>?FHIMSUVX_dghklmq"vulkanAVkBaseOutStructure - Base structure for a read-only pointer chain Descriptionr can be used to facilitate iterating through a structure pointer chain that returns data back to the application.See Also, vulkan@VkBaseInStructure - Base structure for a read-only pointer chain DescriptionR can be used to facilitate iterating through a read-only structure pointer chain.See Also, mvulkansType? is the structure type of the structure being iterated through.nvulkanpNext is NULL: or a pointer to the next structure in a structure chain.pvulkansType? is the structure type of the structure being iterated through.qvulkanpNext is NULL: or a pointer to the next structure in a structure chain.rvulkanView the head and tail of a  , see sEquivalent to (,)svulkanaA pattern synonym to separate the head of a struct chain from the tail, use in conjunction with r to extract several members. aHead{..} ::& () <- returningNoTail a b c -- Equivalent to Head{..} <- returningNoTail @'[] a b c  AHead{..} ::& Foo{..} :& Bar{..} :& () <- returningWithTail a b c #myFun (Head{..} :&& Foo{..} :& ()) tvulkanFForget which extensions a pointed-to struct has by casting the pointeruvulkan5Add an extension to the beginning of the struct chain{This can be used to optionally extend structs based on some condition (for example, an extension or layer being available)vvulkan Consume a j valuewvulkan,Write the C representation of some extended aN and use the pointer, the pointer must not be returned from the continuation.xvulkan[Given some memory for the head of the chain, allocate and poke the tail and run an action.yvulkanRGiven a pointer to a struct with an unknown chain, peek the struct and its chain.vulkanAThe constraint is so on this instance to encourage type inferencexvulkanJPointer to some memory at least the size of the head of the struct chain.vulkanThe struct to pokevulkan0Computation to run while the poked tail is valid cd bopqlmnehgifjkrstuvwxyopqlmn b cd jkuvwyxtehgifsrr7s6None("#%&'-./1789;=>?FHIMSUVX_dghklmq"vulkan A version of getInstanceProcAddr; which can be called with a null pointer for the instance.    I239:;841DEF NGH]_^\fe`ba[POcdQWXYTUVRSB-0./Z=CljinmkJKLM@? +,)*#$!"'(%&<{}~xy>756Aghuts|vwzoprq              I239:;841DEF NGH]_^\fe`ba[POcdQWXYTUVRSB-0./Z=CljinmkJKLM@? +,)*#$!"'(%&<{}~xy>756Aghuts|vwzoprqNone("#%&'-./1789;=>?FHIMSUVX_dghklmq"ѐvulkanSvkEnumerateInstanceVersion - Query instance-level version before instance creation DescriptionNoteThe intended behaviour of  is that an implementation should- not need to perform memory allocations and should unconditionally return '. The loader, and any enabled layers, may return , in the case of a failed memory allocation. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also!No cross-references are available/None("#%&'-./1789;=>?FHIMSUVX_dghklmq#:uvulkan8VkShaderModule - Opaque handle to a shader module objectSee Also7, >, >#vvulkan1VkSemaphore - Opaque handle to a semaphore objectSee Also, ?, j, k, &, D, E, mF, mG, ;N, p, <, <", m+, ,wvulkan-VkSampler - Opaque handle to a sampler objectSee Also j,  ~, a, =, =xvulkan4VkRenderPass - Opaque handle to a render pass objectSee Also, 6E, 7L, 6, 6, c, , 6, 6yvulkan;An opaque type for representing pointers to VkQueue handleszvulkan)VkQueue - Opaque handle to a queue objectSee Also;-, D., /, 0, ?1, 2, 3, o, 4, ;5, ;6{vulkan2VkQueryPool - Opaque handle to a query pool objectSee Also7, 8, , 9, :, ;, , , , :, :, :, ]<, =|vulkan<VkPipelineLayout - Opaque handle to a pipeline layout objectSee Also7, I, 7L, m, 0, 1, ., >, 1, ?, 9, 9}vulkan:VkPipelineCache - Opaque handle to a pipeline cache objectSee Also7, 7, 8+, , , 8, 8,, 8@~vulkan/VkPipeline - Opaque handle to a pipeline objectSee Also7, G, H, 7L, M,  ,  , , 0, 1, /, 0, &, 7, 7, , , 7, A, B, C, vulkanDAn opaque type for representing pointers to VkPhysicalDevice handlesvulkan<VkPhysicalDevice - Opaque handle to a physical device objectSee AlsoL, L, D,  , , +E, 2F, G,  H, I, J, K, L, M, N, O, P, Q, R, S, T, PU, V, NW, X, h, RY, Z,  [, T\, ],  , T, ,  , Tc, ^,  _, T`, a, , ,  , Tb, c, d,  e, Tf, g, ?, Th, i, j, k, l, m, n, o, p, q, , r, s, t, u, v, w, xvulkan>An opaque type for representing pointers to VkInstance handlesvulkan0VkInstance - Opaque handle to an instance objectSee Also, , , , , , , ,  , , , , , , , , , y,  ,  ,  Z, $, Lz, {,  H,  Y, |vulkan3VkImageView - Opaque handle to an image view objectSee Also j, 6E, a, g5,  l, 1\, 1, }vulkan*VkImage - Opaque handle to an image objectSee AlsoG, , 5W, SX, S[, 1`, Hu, ?~, ?, 4, !, m, n, , , , ", 0, 0, i, 4, ?, 0, vulkan5VkFramebuffer - Opaque handle to a framebuffer objectSee Also, 6, 6, 6vulkan)VkFence - Opaque handle to a fence objectSee Also, ?, @, d, e, p, ,, ,, ,, ?1, ;5, (, ), ,, ,vulkan*VkEvent - Opaque handle to an event objectSee Also, , , *, *, *, *, *vulkan<An opaque type for representing pointers to VkDevice handlesvulkan+VkDevice - Opaque handle to a device objectSee Also, , p, , , ,  , 3, , , 4, G, , 4, Gz, , , &, , , , , , , ,  , 7, ,  ,  , I, ,  , *, ,, 6, 7, 0, 1\, , 8+, 9, , :, , , 6, c, , =, X, , <, >, , , , , , , , , ,  ,   ,  ,  ,  , I, ,  , *, ,, 6, 0, 1, , 7, 8, 9, , :, 6, =, X , !, <", >#, %, &, ;, , 3S, ,  , 3', , , , , , b, , , 4, S, , b, , , , , V, , , J, , , , , 3, b, ,  X, ;-, D., *, , ,, , , i, 4, S, , ?, S, , 0, }, , , , , , , , , , , 8,, (, , ', Q, :, A, B, C, , 6, m+, ,, , , , , , , , , , , , , 3T, 3, 8@, , (, ), , , ,  ,  , *, ,, ]<, =, , , *, , r, R, m, ,  ,  , , 3, I, ,  , ,, m, , vulkan8VkDeviceMemory - Opaque handle to a device memory objectSee Also, G, G, b, 3q, x, y, z, ?{, ?}, d, e, 3, 4, 4, 3', 3, , 3, 3vulkanGVkDescriptorSetLayout - Opaque handle to a descriptor set layout objectSee Also  , I, 9,  ,  vulkan:VkDescriptorSet - Opaque handle to a descriptor set objectSee Also ,  g,  , .,  , I, vulkan<VkDescriptorPool - Opaque handle to a descriptor pool objectSee Also  ,  ,  ,  ,  vulkan6VkCommandPool - Opaque handle to a command pool objectSee Also,  ,   , ,  ,  ,  vulkanCAn opaque type for representing pointers to VkCommandBuffer handlesvulkan:VkCommandBuffer - Opaque handle to a command buffer objectSee Also;N, , , , , 7, 8, , c, , , ., , /, 0,  l, , , , !, , , , #, m, n, , , , , , , , , , , , , , J%, , , , , , , , , , , , , , , , , , , 9, :, , c, , , , , , , , c, , , , >, 1, ?, , ;, ", , ,  , , , , , , , , J, , , , , , , , , , , , , , , , o, , , , ,  , , , , , , , , , , , , r, , vulkan4VkBufferView - Opaque handle to a buffer view objectSee Also g, ,  vulkan+VkBuffer - Opaque handle to a buffer objectSee AlsoG, b, 5, S, , , ,  v, G, I, K, x, Hu, ?, ~, 4, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 4Au+v#w(xyz576{!|)}~*;=<>@?,- $"89:1&'%0243./A>@?;=<89:z576y24310/.-,u+~*|)w('&%$v#"{! x}None("#%&'-./1789;=>?FHIMSUVX_dghklmq#Z;vulkan^VkWin32KeyedMutexAcquireReleaseInfoNV - use Windows keyex mutex mechanism to synchronize workValid Usage (Implicit)sType must be If  acquireCount is not 0,  pAcquireSyncs must( be a valid pointer to an array of  acquireCount valid  handlesIf  acquireCount is not 0,  pAcquireKeys must( be a valid pointer to an array of  acquireCount uint64_t valuesIf  acquireCount is not 0, pAcquireTimeoutMilliseconds must( be a valid pointer to an array of  acquireCount uint32_t valuesIf  releaseCount is not 0,  pReleaseSyncs must( be a valid pointer to an array of  releaseCount valid  handlesIf  releaseCount is not 0,  pReleaseKeys must( be a valid pointer to an array of  releaseCount uint64_t valuesBoth of the elements of  pAcquireSyncs, and the elements of  pReleaseSyncs7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same /See Also, vulkan pAcquireSyncs is a pointer to an array of 9 objects which were imported from Direct3D 11 resources.vulkan pAcquireKeys is a pointer to an array of mutex key values to wait for prior to beginning the submitted work. Entries refer to the keyed mutex associated with the corresponding entries in  pAcquireSyncs.vulkanpAcquireTimeoutMillisecondsc is a pointer to an array of timeout values, in millisecond units, for each acquire specified in  pAcquireKeys.vulkan pReleaseSyncs is a pointer to an array of 9 objects which were imported from Direct3D 11 resources.vulkan pReleaseKeys is a pointer to an array of mutex key values to set when the submitted work has completed. Entries refer to the keyed mutex associated with the corresponding entries in  pReleaseSyncs. ; ; None("#%&'-./1789;=>?FHIMSUVX_dghklmq$ -vulkanDVkCoarseSampleOrderTypeNV - Shading rate image sample ordering typesSee Also0, %.vulkanLVkShadingRatePaletteNV - Structure specifying a single shading rate paletteValid Usage (Implicit)See Also/, , $/vulkan{VkPipelineViewportShadingRateImageStateCreateInfoNV - Structure specifying parameters controlling shading rate image usage Description"If this structure is not present, shadingRateImageEnable is considered to be .8, and the shading rate image and palettes are not used. Valid Usage If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  viewportCount must be 0 or 1 viewportCount must be less than or equal to  l:: maxViewportsIf shadingRateImageEnable is .,  viewportCount must be equal to the  viewportCount member of 7"Valid Usage (Implicit)sType must be  viewportCount must be greater than 0See Alsoo, ., 0vulkanVkPipelineViewportCoarseSampleOrderStateCreateInfoNV - Structure specifying parameters controlling sample order in coarse fragments Description"If this structure is not present, sampleOrderType is considered to be .If sampleOrderType is t, the coverage sample order used for any combination of fragment area and coverage sample count not enumerated in pCustomSampleOrders% will be identical to that used for ."If the pipeline was created with lt, the contents of this structure (if present) are ignored, and the coverage sample order is instead specified by %. Valid UsageIf sampleOrderType is not , customSamplerOrderCount must be 0 The array pCustomSampleOrders mustC not contain two structures with matching values for both the  shadingRate and  sampleCount membersValid Usage (Implicit)sType must be sampleOrderType must be a valid - valueIf customSampleOrderCount is not 0, pCustomSampleOrders must( be a valid pointer to an array of customSampleOrderCount valid 3 structuresSee Also3, -, 1vulkanVkPhysicalDeviceShadingRateImagePropertiesNV - Structure describing shading rate image limits that can be supported by an implementationMembersThe members of the 1X structure describe the following implementation-dependent properties related to the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-imageshading rate image feature: DescriptionIf the 1 structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alsot, 2vulkanVkPhysicalDeviceShadingRateImageFeaturesNV - Structure describing shading rate image features that can be supported by an implementationMembersThe members of the 2, structure describe the following features: DescriptionSee  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-imageShading Rate Image for more information.If the 2 structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported. 2 can also be included in the pNext chain of   to enable features.Valid Usage (Implicit)See Alsoo, 3vulkancVkCoarseSampleOrderCustomNV - Structure specifying parameters controlling shading rate image usage Description-When using a custom sample ordering, element j in pSampleLocations+ specifies a specific pixel location and  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index that corresponds to  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-maskcoverage index j in the multi-pixel fragment. Valid Usage shadingRate mustI be a shading rate that generates fragments with more than one pixel sampleCount must1 correspond to a sample count enumerated in %- whose corresponding bit is set in  l::$framebufferNoAttachmentsSampleCountssampleLocationCount must! be equal to the product of  sampleCount, the fragment width for  shadingRate#, and the fragment height for  shadingRatesampleLocationCount must, be less than or equal to the value of 1::shadingRateMaxCoarseSamples The array pSampleLocations mustJ contain exactly one entry for every combination of valid values for pixelX, pixelY , and sample in the structure 3Valid Usage (Implicit) shadingRate must be a valid  valuepSampleLocations must( be a valid pointer to an array of sampleLocationCount 4 structuressampleLocationCount must be greater than 0See Also4, 0, , %4vulkan`VkCoarseSampleLocationNV - Structure specifying parameters controlling shading rate image usage Valid UsageSee Also3vulkanDVkShadingRatePaletteEntryNV - Shading rate image palette entry types DescriptionThe following table indicates the width and height (in pixels) of each fragment generated using the indicated shading rate, as well as the maximum number of fragment shader invocations launched for each fragment. When processing regions of a primitive that have a shading rate of "1, no fragments will be generated in that region.= Shading Rate  Width  Height  Invocations  "  0  0  0  !  1  1  16     1  1  8    1  1  4    1  1  2    1  1  1    2  1  1    1  2  1    2  2  1    4  2  1    2  4  1    4  4  1 See Also3, .vulkansampleOrderType\ specifies the mechanism used to order coverage samples in fragments larger than one pixel.vulkanpCustomSampleOrders is a pointer to an array of customSampleOrderCount 3 structures, each of which specifies the coverage sample order for a single combination of fragment area and coverage sample count.vulkan shadingRate is a shading rate palette entry that identifies the fragment width and height for the combination of fragment area and per-pixel coverage sample count to control.vulkan sampleCount{ identifies the per-pixel coverage sample count for the combination of fragment area and coverage sample count to control.vulkanpSampleLocations is a pointer to an array of 3K structures specifying the location of each sample in the custom ordering.vulkanpixelX is added to the x coordinate of the upper-leftmost pixel of each fragment to identify the pixel containing the coverage sample.pixelX must3 be less than the width (in pixels) of the fragmentvulkanpixelY is added to the y coordinate of the upper-leftmost pixel of each fragment to identify the pixel containing the coverage sample.pixelY must4 be less than the height (in pixels) of the fragmentvulkansampleB is the number of the coverage sample in the pixel identified by pixelX and pixelY.sample mustU be less than the number of coverage samples in each pixel belonging to the fragmentvulkanshadingRateTexelSizey indicates the width and height of the portion of the framebuffer corresponding to each texel in the shading rate image.vulkanshadingRatePaletteSizeW indicates the maximum number of palette entries supported for the shading rate image.vulkanshadingRateMaxCoarseSamples4 specifies the maximum number of coverage samples supported in a single fragment. If the product of the fragment size derived from the base shading rate and the number of coverage samples per pixel exceeds this limit, the final shading rate will be adjusted so that its product does not exceed the limit. vulkanshadingRateImage indicates that the implementation supports the use of a shading rate image to derive an effective shading rate for fragment processing. It also indicates that the implementation supports the  ShadingRateNV SPIR-V execution mode. vulkanshadingRateCoarseSampleOrder indicates that the implementation supports a user-configurable ordering of coverage samples in fragments larger than one pixel. vulkanshadingRateImageEnableR specifies whether shading rate image and palettes are used during rasterization.vulkanpShadingRatePalettes is a pointer to an array of .{ structures defining the palette for each viewport. If the shading rate palette state is dynamic, this member is ignored.vulkanpShadingRatePaletteEntries is a pointer to an array of 9 enums defining the shading rate for each palette entry.pShadingRatePaletteEntries must$ be a valid pointer to an array of shadingRatePaletteEntryCount valid  valuesvulkanQ specifies that coverage samples will be ordered sequentially, sorted first by  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index4 and then by pixel coordinate (in row-major order).vulkan specifies that coverage samples will be ordered sequentially, sorted first by pixel coordinate (in row-major order) and then by  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index.vulkanu specifies that coverage samples will be ordered according to the array of custom orderings provided in either the pCustomSampleOrders member of 0 or the pCustomSampleOrders member of %.vulkanX specifies that coverage samples will be ordered in an implementation-dependent manner.#vulkanLvkCmdBindShadingRateImageNV - Bind a shading rate image on a command buffer Valid Usage The  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature must be enabledIf  imageView is not  , it must be a valid  handle of type `{ or `|If  imageView is not  , it must have a format of If  imageView is not  , it must have been created with a usage value including qIf  imageView is not ,  imageLayout must match the actual N* of each subresource accessible from  imageView( at the time the subresource is accessedIf  imageView is not ,  imageLayout must be  or Valid Usage (Implicit) commandBuffer must be a valid  handleIf  imageView is not ,  imageView must be a valid  handle imageLayout must be a valid N value commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operationsBoth of  commandBuffer, and  imageView7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also, N, $vulkan[vkCmdSetViewportShadingRatePaletteNV - Set shading rate image palettes on a command buffer Valid Usage The  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature must be enabled firstViewport must be less than  l:: maxViewports The sum of  firstViewport and  viewportCount must be between 1 and  l:: maxViewports, inclusive If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  firstViewport must be 0 If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  viewportCount must be 1Valid Usage (Implicit) commandBuffer must be a valid  handlepShadingRatePalettes must( be a valid pointer to an array of  viewportCount valid . structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations viewportCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also, .%vulkanXvkCmdSetCoarseSampleOrderNV - Set sample order for coarse fragments on a command buffer DescriptionIf sampleOrderType is t, the coverage sample order used for any combination of fragment area and coverage sample count not enumerated in pCustomSampleOrders% will be identical to that used for . Valid UsageIf sampleOrderType is not , customSamplerOrderCount must be 0 The array pCustomSampleOrders mustC not contain two structures with matching values for both the  shadingRate and  sampleCount membersValid Usage (Implicit) commandBuffer must be a valid  handlesampleOrderType must be a valid - valueIf customSampleOrderCount is not 0, pCustomSampleOrders must( be a valid pointer to an array of customSampleOrderCount valid 3 structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also3, -, #vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkan imageView= is an image view handle specifying the shading rate image.  imageView may be set to Q, which is equivalent to specifying a view of an image filled with zero values.vulkan imageLayout< is the layout that the image subresources accessible from  imageView4 will be in when the shading rate image is accessed.$vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkan firstViewportZ is the index of the first viewport whose shading rate palette is updated by the command.vulkanpShadingRatePalettes is a pointer to an array of .4 structures defining the palette for each viewport.%vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkansampleOrderType\ specifies the mechanism used to order coverage samples in fragments larger than one pixel.vulkanpCustomSampleOrders is a pointer to an array of 3 structures, each of which specifies the coverage sample order for a single combination of fragment area and coverage sample count.9-./  012   34"! #$%I#$%./  2   1430"! "! -None("#%&'-./1789;=>?FHIMSUVX_dghklmq$T$vulkan|VkPipelineViewportExclusiveScissorStateCreateInfoNV - Structure specifying parameters controlling exclusive scissor testing DescriptionIf the l/ dynamic state is enabled for a pipeline, the pExclusiveScissors member is ignored.'When this structure is included in the pNext chain of 7Lb, it defines parameters of the exclusive scissor test. If this structure is not included in the pNext> chain, it is equivalent to specifying this structure with a exclusiveScissorCount of 0. Valid Usage If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled, exclusiveScissorCount must be 0 or 1exclusiveScissorCount must be less than or equal to  l:: maxViewportsexclusiveScissorCount must be 0 or identical to the  viewportCount member of 7"Valid Usage (Implicit)sType must be 4See Alsop, %vulkanVkPhysicalDeviceExclusiveScissorFeaturesNV - Structure describing exclusive scissor features that can be supported by an implementationMembersThe members of the %, structure describe the following features: DescriptionSee  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-exclusive-scissorExclusive Scissor Test for more information.If the % structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported. % can also be included in the pNext chain of   to enable the feature.Valid Usage (Implicit)See Alsoo, \vulkanpExclusiveScissors is a pointer to an array of p3 structures defining exclusive scissor rectangles.^vulkanexclusiveScissorH indicates that the implementation supports the exclusive scissor test.avulkan^vkCmdSetExclusiveScissorNV - Set the dynamic exclusive scissor rectangles on a command buffer Description/The scissor rectangles taken from element i of pExclusiveScissors2 replace the current state for the scissor index firstExclusiveScissor + i, for i in [0, exclusiveScissorCount).ZThis command sets the state for a given draw when the graphics pipeline is created with l set in 7::pDynamicStates. Valid Usage The  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissorexclusive scissor feature must be enabledfirstExclusiveScissor must be less than  l:: maxViewports The sum of firstExclusiveScissor and exclusiveScissorCount must be between 1 and  l:: maxViewports, inclusive If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled, firstExclusiveScissor must be 0 If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled, exclusiveScissorCount must be 1The x and y members of offset in each member of pExclusiveScissors must be greater than or equal to 0Evaluation of (offset.x +  extent.width) for each member of pExclusiveScissors must2 not cause a signed integer addition overflowEvaluation of (offset.y +  extent.height) for each member of pExclusiveScissors must2 not cause a signed integer addition overflowValid Usage (Implicit) commandBuffer must be a valid  handlepExclusiveScissors must( be a valid pointer to an array of exclusiveScissorCount p structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operationsexclusiveScissorCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also, pavulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanfirstExclusiveScissor^ is the index of the first exclusive scissor rectangle whose state is updated by the command.vulkanpExclusiveScissors is a pointer to an array of p3 structures defining exclusive scissor rectangles. $[\%]^YZ_`a a%]^$[\Z`Y_None("#%&'-./1789;=>?FHIMSUVX_dghklmq'pvulkanVVkPhysicalDeviceMeshShaderPropertiesNV - Structure describing mesh shading propertiesMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alsovulkan}VkPhysicalDeviceMeshShaderFeaturesNV - Structure describing mesh shading features that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of TK, it is filled with a value indicating whether the feature is supported.  can also be included in pNext chain of   to enable the features.Valid Usage (Implicit)See Alsoo, vulkan[VkDrawMeshTasksIndirectCommandNV - Structure specifying a mesh tasks draw indirect command DescriptionThe members of = have the same meaning as the similarly named parameters of . Valid UsageSee Alsoqvulkan taskCountp is the number of local workgroups to dispatch in the X dimension. Y and Z dimension are implicitly set to one. taskCount must be less than or equal to ::maxDrawMeshTasksCountrvulkan firstTask. is the X component of the first workgroup ID.tvulkanmaxDrawMeshTasksCount1 is the maximum number of local workgroups that can7 be launched by a single draw mesh tasks command. See  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-mesh-shading.uvulkanmaxTaskWorkGroupInvocations is the maximum total number of task shader invocations in a single local workgroup. The product of the X, Y, and Z sizes, as specified by the  LocalSizeE execution mode in shader modules or by the object decorated by the  WorkgroupSize decoration, must& be less than or equal to this limit.vvulkanmaxTaskWorkGroupSize[3] is the maximum size of a local task workgroup. These three values represent the maximum local workgroup size in the X, Y, and Z dimensions, respectively. The x, y, and z sizes, as specified by the  LocalSize3 execution mode or by the object decorated by the  WorkgroupSize decoration in shader modules, must3 be less than or equal to the corresponding limit.wvulkanmaxTaskTotalMemorySizem is the maximum number of bytes that the task shader can use in total for shared and output memory combined.xvulkanmaxTaskOutputCountP is the maximum number of output tasks a single task shader workgroup can emit.yvulkanmaxMeshWorkGroupInvocations is the maximum total number of mesh shader invocations in a single local workgroup. The product of the X, Y, and Z sizes, as specified by the  LocalSizeE execution mode in shader modules or by the object decorated by the  WorkgroupSize decoration, must& be less than or equal to this limit.zvulkanmaxMeshWorkGroupSize[3] is the maximum size of a local mesh workgroup. These three values represent the maximum local workgroup size in the X, Y, and Z dimensions, respectively. The x, y, and z sizes, as specified by the  LocalSize3 execution mode or by the object decorated by the  WorkgroupSize decoration in shader modules, must3 be less than or equal to the corresponding limit.{vulkanmaxMeshTotalMemorySizem is the maximum number of bytes that the mesh shader can use in total for shared and output memory combined.|vulkanmaxMeshOutputVerticesC is the maximum number of vertices a mesh shader output can store.}vulkanmaxMeshOutputPrimitivesE is the maximum number of primitives a mesh shader output can store.~vulkanmaxMeshMultiviewViewCountB is the maximum number of multi-view views a mesh shader can use.vulkanmeshOutputPerVertexGranularity is the granularity with which mesh vertex outputs are allocated. The value can be used to compute the memory size used by the mesh shader, which must be less than or equal to maxMeshTotalMemorySize.vulkan!meshOutputPerPrimitiveGranularity is the granularity with which mesh outputs qualified as per-primitive are allocated. The value can be used to compute the memory size used by the mesh shader, which must be less than or equal to maxMeshTotalMemorySize.vulkan taskShader6 indicates whether the task shader stage is supported.vulkan meshShader6 indicates whether the mesh shader stage is supported.vulkan0vkCmdDrawMeshTasksNV - Draw mesh task work items Description@When the command is executed, a global workgroup consisting of  taskCount local workgroups is assembled. Valid UsageIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain gIf a /b is accessed using atomic operations as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain gIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any / being sampled with " as a result of this command must have a `E and format that supports cubic filtering, as specified by A:: filterCubic returned by TcAny / being sampled with + with a reduction mode of either  or " as a result of this command must have a `i and format that supports cubic filtering together with minmax filtering, as specified by A::filterCubicMinmax returned by TcAny /: created with a 0::flags containing * sampled as a result of this command must only be sampled using a % of % For each set n% that is statically used by the /)N bound to the pipeline bind point used by this command, a descriptor set must have been bound to n3 at the same pipeline bind point, with a /! that is compatible for set n , with the /! used to create the current /), as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the /)S bound to the pipeline bind point used by this command, a push constant value mustB have been set for the same pipeline bind point, with a /6 that is compatible for push constants, with the /! used to create the current /), as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via ., must7 be valid if they are statically used by the /); bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the /)o object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the /)a object bound to the pipeline bind point used by this command, since that pipeline was boundIf the /)S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must% not be used to sample from any /: with a / of the type `, `, `, `| or `, in any shader stageIf the /)S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stageIf the /)S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample*U instructions that includes a LOD bias or any offset values, in any shader stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the /)f object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the /)f object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the /)C object bound to the pipeline bind point used by this command must! not be a protected resourceIf a / is accessed using  OpImageWrite' as a result of this command, then the Type of the Texel operand of that instruction mustB have at least as many components as the image view s format.The current render pass must be  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 7L, structure specified when creating the /) bound to  -The subpass index of the current render pass must be equal to the subpass member of the 7L, structure specified when creating the /) bound to  3Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor setGImage subresources used as attachments in the current render pass mustL not be accessed in any way other than as an attachment by this commandjIf the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to W::maxMultiviewInstanceIndex5If the bound graphics pipeline was created with ::sampleLocationsEnable set to .S and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set?If the bound graphics pipeline state was created with the l . dynamic state enabled, but not the l , dynamic state enabled, then then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the 7":: scissorCount of the pipeline?If the bound graphics pipeline state was created with the l . dynamic state enabled, but not the l , dynamic state enabled, then then  mustY have been called in the current command buffer prior to this draw command, and the  scissorCount parameter of  must match the 7":: viewportCount of the pipelineDIf the bound graphics pipeline state was created with both the l  and l , dynamic states enabled then both  and  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the  scissorCount parameter of ?If the bound graphics pipeline state was created with the l & dynamic state enabled then  mustY have been called in the current command buffer prior to this draw command, and the primitiveTopology parameter of  must be of the same  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class as the pipeline 7::topology state taskCount must be less than or equal to ::maxDrawMeshTasksCountValid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations This command must0 only be called inside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Inside  Graphics  Graphics See AlsovulkanWvkCmdDrawMeshTasksIndirectNV - Issue an indirect mesh tasks draw into a command buffer Description behaves similarly to U except that the parameters are read by the device from a buffer during execution.  drawCount@ draws are executed by the command, with parameters taken from buffer starting at offset and increasing by strideY bytes for each successive draw. The parameters of each draw are encoded in an array of  structures. If  drawCount is less than or equal to one, stride is ignored. Valid UsageIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain g%If a /b is accessed using atomic operations as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain gIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any / being sampled with " as a result of this command must have a `E and format that supports cubic filtering, as specified by A:: filterCubic returned by TcAny / being sampled with + with a reduction mode of either  or " as a result of this command must have a `i and format that supports cubic filtering together with minmax filtering, as specified by A::filterCubicMinmax returned by TcAny /: created with a 0::flags containing * sampled as a result of this command must only be sampled using a % of % For each set n% that is statically used by the /)N bound to the pipeline bind point used by this command, a descriptor set must have been bound to n3 at the same pipeline bind point, with a /! that is compatible for set n , with the /! used to create the current /), as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the /)S bound to the pipeline bind point used by this command, a push constant value mustB have been set for the same pipeline bind point, with a /6 that is compatible for push constants, with the /! used to create the current /), as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via ., must7 be valid if they are statically used by the /); bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the /)o object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the /)a object bound to the pipeline bind point used by this command, since that pipeline was boundIf the /)S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must% not be used to sample from any /: with a / of the type `, `, `, `| or `, in any shader stageIf the /)S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stageIf the /)S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample*U instructions that includes a LOD bias or any offset values, in any shader stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the /)f object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the /)f object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the /)C object bound to the pipeline bind point used by this command must! not be a protected resourceIf a / is accessed using  OpImageWrite' as a result of this command, then the Type of the Texel operand of that instruction mustB have at least as many components as the image view s format.The current render pass must be  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 7L, structure specified when creating the /) bound to  -The subpass index of the current render pass must be equal to the subpass member of the 7L, structure specified when creating the /) bound to  3Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor setGImage subresources used as attachments in the current render pass mustL not be accessed in any way other than as an attachment by this commandjIf the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to W::maxMultiviewInstanceIndex5If the bound graphics pipeline was created with ::sampleLocationsEnable set to .S and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set?If the bound graphics pipeline state was created with the l . dynamic state enabled, but not the l , dynamic state enabled, then then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the 7":: scissorCount of the pipeline?If the bound graphics pipeline state was created with the l . dynamic state enabled, but not the l , dynamic state enabled, then then  mustY have been called in the current command buffer prior to this draw command, and the  scissorCount parameter of  must match the 7":: viewportCount of the pipelineDIf the bound graphics pipeline state was created with both the l  and l , dynamic states enabled then both  and  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the  scissorCount parameter of ?If the bound graphics pipeline state was created with the l & dynamic state enabled then  mustY have been called in the current command buffer prior to this draw command, and the primitiveTopology parameter of  must be of the same  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class as the pipeline 7::topology stateIf buffer is non-sparse then it must7 be bound completely and contiguously to a single /8 objectbuffer must! have been created with the z bit setoffset must be a multiple of 4 commandBuffer must" not be a protected command buffer If the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirectmulti-draw indirect feature is not enabled,  drawCount must be 0 or 1 drawCount must be less than or equal to  l::maxDrawIndirectCountIf  drawCount is greater than 1, stride must be a multiple of 4 and must" be greater than or equal to sizeof()If  drawCount is equal to 1, (offset + sizeof()) must+ be less than or equal to the size of bufferIf  drawCount is greater than 1, (stride ( drawCount - 1) + offset + sizeof()) must+ be less than or equal to the size of bufferValid Usage (Implicit) commandBuffer must be a valid  handlebuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations This command must0 only be called inside of a render pass instanceBoth of buffer, and  commandBuffer must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Inside  Graphics  Graphics See Also, , mvulkanrvkCmdDrawMeshTasksIndirectCountNV - Perform an indirect mesh tasks draw with the draw count sourced from a buffer Description behaves similarly to  except that the draw count is read by the device from a buffer during execution. The command will read an unsigned 32-bit integer from  countBuffer located at countBufferOffset! and use this as the draw count. Valid UsageIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain g(If a /b is accessed using atomic operations as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain gIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any / being sampled with " as a result of this command must have a `E and format that supports cubic filtering, as specified by A:: filterCubic returned by TcAny / being sampled with + with a reduction mode of either  or " as a result of this command must have a `i and format that supports cubic filtering together with minmax filtering, as specified by A::filterCubicMinmax returned by TcAny /: created with a 0::flags containing * sampled as a result of this command must only be sampled using a % of % For each set n% that is statically used by the /)N bound to the pipeline bind point used by this command, a descriptor set must have been bound to n3 at the same pipeline bind point, with a /! that is compatible for set n , with the /! used to create the current /), as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the /)S bound to the pipeline bind point used by this command, a push constant value mustB have been set for the same pipeline bind point, with a /6 that is compatible for push constants, with the /! used to create the current /), as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via ., must7 be valid if they are statically used by the /); bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the /)o object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the /)a object bound to the pipeline bind point used by this command, since that pipeline was boundIf the /)S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must% not be used to sample from any /: with a / of the type `, `, `, `| or `, in any shader stageIf the /)S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stageIf the /)S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample*U instructions that includes a LOD bias or any offset values, in any shader stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the /)f object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the /)f object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the /)C object bound to the pipeline bind point used by this command must! not be a protected resourceIf a / is accessed using  OpImageWrite' as a result of this command, then the Type of the Texel operand of that instruction mustB have at least as many components as the image view s format.The current render pass must be  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 7L, structure specified when creating the /) bound to  -The subpass index of the current render pass must be equal to the subpass member of the 7L, structure specified when creating the /) bound to  3Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor setGImage subresources used as attachments in the current render pass mustL not be accessed in any way other than as an attachment by this commandjIf the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to W::maxMultiviewInstanceIndex5If the bound graphics pipeline was created with ::sampleLocationsEnable set to .S and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set?If the bound graphics pipeline state was created with the l . dynamic state enabled, but not the l , dynamic state enabled, then then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the 7":: scissorCount of the pipeline?If the bound graphics pipeline state was created with the l . dynamic state enabled, but not the l , dynamic state enabled, then then  mustY have been called in the current command buffer prior to this draw command, and the  scissorCount parameter of  must match the 7":: viewportCount of the pipelineDIf the bound graphics pipeline state was created with both the l  and l , dynamic states enabled then both  and  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the  scissorCount parameter of ?If the bound graphics pipeline state was created with the l & dynamic state enabled then  mustY have been called in the current command buffer prior to this draw command, and the primitiveTopology parameter of  must be of the same  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class as the pipeline 7::topology stateIf buffer is non-sparse then it must7 be bound completely and contiguously to a single /8 objectbuffer must! have been created with the z bit setoffset must be a multiple of 4 commandBuffer must" not be a protected command bufferIf  countBuffer is non-sparse then it must7 be bound completely and contiguously to a single /8 object countBuffer must! have been created with the z bit setcountBufferOffset must be a multiple of 4The count stored in  countBuffer must be less than or equal to  l::maxDrawIndirectCountstride must be a multiple of 4 and must" be greater than or equal to sizeof()If  maxDrawCount is greater than or equal to 1, (stride ( maxDrawCount - 1) + offset + sizeof()) must+ be less than or equal to the size of bufferIf the count stored in  countBuffer is equal to 1, (offset + sizeof()) must+ be less than or equal to the size of bufferIf the count stored in  countBuffer is greater than 1, (stride ( drawCount - 1) + offset + sizeof()) must+ be less than or equal to the size of bufferValid Usage (Implicit) commandBuffer must be a valid  handlebuffer must be a valid  handle countBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations This command must0 only be called inside of a render pass instanceEach of buffer,  commandBuffer, and  countBuffer mustD have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Inside  Graphics  Graphics See Also, , mvulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkan taskCountp is the number of local workgroups to dispatch in the X dimension. Y and Z dimension are implicitly set to one.vulkan firstTask. is the X component of the first workgroup ID.vulkan commandBuffer; is the command buffer into which the command is recorded.vulkanbuffer* is the buffer containing draw parameters.vulkanoffset is the byte offset into buffer where parameters begin.vulkan drawCount( is the number of draws to execute, and can be zero.vulkanstride? is the byte stride between successive sets of draw parameters.vulkan commandBuffer; is the command buffer into which the command is recorded.vulkanbuffer* is the buffer containing draw parameters.vulkanoffset is the byte offset into buffer where parameters begin.vulkan countBuffer) is the buffer containing the draw count.vulkancountBufferOffset is the byte offset into  countBuffer where the draw count begins.vulkan maxDrawCount specifies the maximum number of draws that will be executed. The actual number of executed draw calls is the minimum of the count specified in  countBuffer and  maxDrawCount.vulkanstride? is the byte stride between successive sets of draw parameters.stuvwxyz{|}~pqrnostuvwxyz{|}~pqronNone("#%&'-./1789;=>?FHIMSUVX_dghklmq'<vulkan^VkQueueFamilyCheckpointPropertiesNV - return structure for queue family checkpoint info queryValid Usage (Implicit)See AlsoW, vulkanHVkCheckpointDataNV - return structure for command buffer checkpoint data Description(The stages at which a checkpoint marker can- be executed are implementation-defined and can be queried by calling Tf.Valid Usage (Implicit)See AlsoX, , vulkanstageF indicates which pipeline stage the checkpoint marker data refers to.vulkanpCheckpointMarkerN contains the value of the last checkpoint marker executed in the stage that stage refers to.vulkancheckpointExecutionStageMaskb is a mask indicating which pipeline stages the implementation can execute checkpoint markers in.vulkanEvkCmdSetCheckpointNV - insert diagnostic checkpoint in command streamValid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must7 support graphics, compute, or transfer operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type v Primary Secondary j Both g Graphics Compute Transfer  See Alsovulkan@vkGetQueueCheckpointDataNV - retrieve diagnostic checkpoint data DescriptionIf pCheckpointData is NULLB, then the number of checkpoint markers available is returned in pCheckpointDataCount. Otherwise, pCheckpointDataCount mustG point to a variable set by the user to the number of elements in the pCheckpointDataf array, and on return the variable is overwritten with the number of structures actually written to pCheckpointData.If pCheckpointDataCountC is less than the number of checkpoint markers available, at most pCheckpointDataCount structures will be written. Valid UsageThe device that queue belongs to must be in the lost stateValid Usage (Implicit)queue must be a valid z handlepCheckpointDataCount must be a valid pointer to a uint32_t valueIf the value referenced by pCheckpointDataCount is not 0 , and pCheckpointData is not NULL, pCheckpointData must( be a valid pointer to an array of pCheckpointDataCount  structuresSee Also, zvulkan commandBuffer3 is the command buffer that will receive the markervulkanpCheckpointMarkerV is an opaque application-provided value that will be associated with the checkpoint.vulkanqueue is the z> object the caller would like to retrieve checkpoint data for  None("#%&'-./1789;=>?FHIMSUVX_dghklmq'cvulkan[VkDedicatedAllocationMemoryAllocateInfoNV - Specify a dedicated memory allocation resource Valid UsageAt least one of image and buffer must be If image is not , the image must have been created with ::dedicatedAllocation equal to .If buffer is not , the buffer must have been created with ::dedicatedAllocation equal to .If image is not , 3s::allocationSize must equal the 4z::size of the imageIf buffer is not , 3s::allocationSize must equal the 4z::size of the bufferIf image is not  and 3sC defines a memory import operation, the memory being imported must/ also be a dedicated image allocation and image mustC be identical to the image associated with the imported memoryIf buffer is not  and 3sC defines a memory import operation, the memory being imported must0 also be a dedicated buffer allocation and buffer mustD be identical to the buffer associated with the imported memoryValid Usage (Implicit)sType must be If image is not , image must be a valid  handleIf buffer is not , buffer must be a valid  handleBoth of buffer, and image7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same /See Also, , vulkangVkDedicatedAllocationImageCreateInfoNV - Specify that an image is bound to a dedicated memory resource DescriptionNote\Using a dedicated allocation for color and depth/stencil attachments or other large images may% improve performance on some devices. Valid UsageIf dedicatedAllocation is ., 0::flags must not include , , or Valid Usage (Implicit)sType must be See Alsoo, vulkanhVkDedicatedAllocationBufferCreateInfoNV - Specify that a buffer is bound to a dedicated memory resourceValid Usage (Implicit)See Alsoo, vulkanimage is = or a handle of an image which this memory will be bound to.vulkanbuffer is = or a handle of a buffer which this memory will be bound to.vulkandedicatedAllocationL specifies whether the buffer will have a dedicated allocation bound to it.vulkandedicatedAllocationK specifies whether the image will have a dedicated allocation bound to it.None("#%&'-./1789;=>?FHIMSUVX_dghklmq(2vulkannVkPipelineCoverageReductionStateCreateInfoNV - Structure specifying parameters controlling coverage reduction Description^If this structure is not present, the default coverage reduction mode is inferred as follows:If the VK_NV_framebuffer_mixed_samples1 extension is enabled, then it is as if the coverageReductionMode is .If the VK_AMD_mixed_attachment_samples1 extension is enabled, then it is as if the coverageReductionMode is .If both VK_NV_framebuffer_mixed_samples and VK_AMD_mixed_attachment_samplesX are enabled, then the default coverage reduction mode is implementation-dependent.Valid Usage (Implicit)sType must be Yflags must be 0coverageReductionMode must be a valid  valueSee Also, , vulkanVkPhysicalDeviceCoverageReductionModeFeaturesNV - Structure describing the coverage reduction mode features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of   to enable the feature.Valid Usage (Implicit)See Alsoo, vulkancVkFramebufferMixedSamplesCombinationNV - Structure specifying a supported sample count combinationValid Usage (Implicit)See Also, a, `, , vulkan?VkCoverageReductionModeNV - Specify the coverage reduction modeSee Also, vulkanGVkPipelineCoverageReductionStateCreateFlagsNV - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See AlsovulkancoverageReductionMode is a / value specifying the coverage reduction mode.vulkanrasterizationSamplesM specifies the number of rasterization samples in the supported combination.vulkandepthStencilSamples specifies the number of samples in the depth stencil attachment in the supported combination. A value of 0 indicates the combination does not have a depth stencil attachment.vulkan colorSamples specifies the number of color samples in a color attachment in the supported combination. A value of 0 indicates the combination does not have a color attachment.vulkanflags is reserved for future use.vulkancoverageReductionMode is a  value controlling how the color sample mask% is generated from the coverage mask.vulkancoverageReductionModeO indicates whether the implementation supports coverage reduction modes. See  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-coverage-reductionCoverage Reduction.vulkand: In this mode, only the first M coverage samples are associated with the color samples such that  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample indexI i maps to color sample index i, where M is the number of color samples.vulkan: In this mode, there is an implementation-dependent association of each coverage sample to a color sample. The reduced color sample mask is computed such that the bit for each color sample is 1 if any of the associated bits in the fragment s coverage is on, and 0 otherwise.vulkannvkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV - Query supported sample count combinations DescriptionIf  pCombinations is NULL;, then the number of supported combinations for the given physicalDevice is returned in pCombinationCount. Otherwise, pCombinationCount mustG point to a variable set by the user to the number of elements in the  pCombinationsb array, and on return the variable is overwritten with the number of values actually written to  pCombinations. If the value of pCombinationCountC is less than the number of combinations supported for the given physicalDevice , at most pCombinationCount values will be written  pCombinations and  will be returned instead of > to indicate that not all the supported values were returned.Valid Usage (Implicit)physicalDevice must be a valid  handlepCombinationCount must be a valid pointer to a uint32_t valueIf the value referenced by pCombinationCount is not 0 , and  pCombinations is not NULL,  pCombinations must( be a valid pointer to an array of pCombinationCount  structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, vulkanphysicalDeviceE is the physical device from which to query the set of combinations.None("#%&'-./1789;=>?FHIMSUVX_dghklmq( vulkanVkPhysicalDeviceCooperativeMatrixPropertiesNV - Structure describing cooperative matrix properties supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alsob, vulkanVkPhysicalDeviceCooperativeMatrixFeaturesNV - Structure describing cooperative matrix features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of   to enable features.Valid Usage (Implicit)See Alsoo, vulkanUVkCooperativeMatrixPropertiesNV - Structure specifying cooperative matrix properties DescriptionKIf some types are preferred over other types (e.g. for performance), they should+ appear earlier in the list enumerated by 2.At least one entry in the list must& have power of two values for all of MSize, KSize, and NSize.Valid Usage (Implicit)See Also, , , 2vulkanDVkComponentTypeNV - Specify SPIR-V cooperative matrix component typeSee Alsovulkan VkScopeNV - Specify SPIR-V scope Description5All enum values match the corresponding SPIR-V value.See AlsovulkanMSize/ is the number of rows in matrices A, C, and D.vulkanNSize. is the number of columns in matrices B, C, D.vulkanKSize; is the number of columns in matrix A and rows in matrix B.vulkanAType, is the component type of matrix A, of type .AType must be a valid  valuevulkanBType, is the component type of matrix B, of type .BType must be a valid  valuevulkanCType, is the component type of matrix C, of type .CType must be a valid  valuevulkanDType, is the component type of matrix D, of type .DType must be a valid  valuevulkanscope/ is the scope of all the matrix types, of type .scope must be a valid  valuevulkan cooperativeMatrixSupportedStages is a bitfield of &W describing the shader stages that cooperative matrix instructions are supported in.  cooperativeMatrixSupportedStages will have the &: bit set if any of the physical device s queues support H.vulkancooperativeMatrix1 indicates that the implementation supports the CooperativeMatrixNV SPIR-V capability. vulkan#cooperativeMatrixRobustBufferAccessM indicates that the implementation supports robust buffer access for SPIR-V OpCooperativeMatrixLoadNV and OpCooperativeMatrixStoreNV instructions.#vulkan# corresponds to SPIR-V  OpTypeInt 64 0.$vulkan$ corresponds to SPIR-V  OpTypeInt 32 0.%vulkan% corresponds to SPIR-V  OpTypeInt 16 0.&vulkan& corresponds to SPIR-V  OpTypeInt 8 0.'vulkan' corresponds to SPIR-V  OpTypeInt 64 1.(vulkan( corresponds to SPIR-V  OpTypeInt 32 1.)vulkan) corresponds to SPIR-V  OpTypeInt 16 1.*vulkan* corresponds to SPIR-V  OpTypeInt 8 1.+vulkan+ corresponds to SPIR-V  OpTypeFloat 64.,vulkan, corresponds to SPIR-V  OpTypeFloat 32.-vulkan- corresponds to SPIR-V  OpTypeFloat 16..vulkan. corresponds to SPIR-V  QueueFamily scope./vulkan/ corresponds to SPIR-V Subgroup scope.0vulkan0 corresponds to SPIR-V  Workgroup scope.1vulkan1 corresponds to SPIR-V / scope.2vulkan}vkGetPhysicalDeviceCooperativeMatrixPropertiesNV - Returns properties describing what cooperative matrix types are supported DescriptionIf  pProperties is NULLM, then the number of cooperative matrix properties available is returned in pPropertyCount. Otherwise, pPropertyCount mustG point to a variable set by the user to the number of elements in the  pPropertiesf array, and on return the variable is overwritten with the number of structures actually written to  pProperties. If pPropertyCountN is less than the number of cooperative matrix properties available, at most pPropertyCount! structures will be written. If pPropertyCountJ is smaller than the number of cooperative matrix properties available,  will be returned instead of V, to indicate that not all the available cooperative matrix properties were returned.Valid Usage (Implicit)physicalDevice must be a valid  handlepPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount  structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, 2vulkanphysicalDevice is the physical device.)  -,+*)('&%$#10/.!"282 10/.10/.-,+*)('&%$#-,+*)('&%$#" !None("#%&'-./1789;=>?FHIMSUVX_dghklmq(yvulkan6VkViewportWScalingNV - Structure specifying a viewportSee Also, _vulkanVkPipelineViewportWScalingStateCreateInfoNV - Structure specifying parameters of a newly created pipeline viewport W scaling stateValid Usage (Implicit)See Alsoo, , WvulkanviewportWScalingEnable controls whether viewport W scaling is enabled.Xvulkan viewportCount$ is the number of viewports used by W scaling, and must; match the number of viewports in the pipeline if viewport W scaling is enabled. viewportCount must be greater than 0YvulkanpViewportWScalings is a pointer to an array of  structures defining the WF scaling parameters for the corresponding viewports. If the viewport W3 scaling state is dynamic, this member is ignored.[vulkanxcoeff and ycoeff? are the viewport s W scaling factor for x and y respectively._vulkanLvkCmdSetViewportWScalingNV - Set the viewport W scaling on a command buffer Description0The viewport parameters taken from element i of pViewportWScalings3 replace the current state for the viewport index  firstViewport + i, for i in [0,  viewportCount). Valid Usage firstViewport must be less than  l:: maxViewports The sum of  firstViewport and  viewportCount must be between 1 and  l:: maxViewports, inclusiveValid Usage (Implicit) commandBuffer must be a valid  handlepViewportWScalings must( be a valid pointer to an array of  viewportCount  structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations viewportCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also, _vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkan firstViewportQ is the index of the first viewport whose parameters are updated by the command.vulkanpViewportWScalings is a pointer to an array of , structures specifying viewport parameters.Z[\VXYWTU]^__Z[\VXYWU^T]None("#%&'-./1789;=>?FHIMSUVX_dghklmq( vulkanRVkImageViewHandleInfoNVX - Structure specifying the image view for handle queries Valid UsagedescriptorType must be oa, o`, or obsampler must be a valid w if descriptorType is obIf descriptorType is oa or ob, the image that  imageView was created from must& have been created with the v usage bit setIf descriptorType is o`, the image that  imageView was created from must& have been created with the  usage bit setValid Usage (Implicit)sType must be pNext must be NULL imageView must be a valid  handledescriptorType must be a valid  valueIf sampler is not , sampler must be a valid w handleBoth of  imageView, and sampler7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Also, , w, , wvulkanYVkImageViewAddressPropertiesNVX - Structure specifying the image view for handle queriesValid Usage (Implicit)See Alson, m, , xovulkan deviceAddress) is the device address of the image view.pvulkansize6 is the size in bytes of the image view device memory.rvulkan imageView is the image view to query.svulkandescriptorType7 is the type of descriptor for which to query a handle.tvulkansamplerK is the sampler to combine with the image view when generating the handle.wvulkanZvkGetImageViewHandleNVX - Get the handle for an image view for a specific descriptor typeValid Usage (Implicit)See Also, xvulkanBvkGetImageViewAddressNVX - Get the device address of an image view Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , wvulkandevice0 is the logical device that owns the image view.device must be a valid  handlevulkanpInfo6 describes the image view to query and type of handle.pInfo must be a valid pointer to a valid  structurexvulkandevice0 is the logical device that owns the image view.device must be a valid  handlevulkan imageView is a handle to the image view. imageView must be a valid  handle imageView must2 have been created, allocated, or retrieved from deviceqrstnpolmuvwxwxqrstnpomvluNone("#%&'-./1789;=>?FHIMSUVX_dghklmq) avulkancVkWin32KeyedMutexAcquireReleaseInfoKHR - Use the Windows keyed mutex mechanism to synchronize work Valid UsageEach member of  pAcquireSyncs and  pReleaseSyncs must9 be a device memory object imported by setting h:: handleType to A or AValid Usage (Implicit)sType must be If  acquireCount is not 0,  pAcquireSyncs must( be a valid pointer to an array of  acquireCount valid  handlesIf  acquireCount is not 0,  pAcquireKeys must( be a valid pointer to an array of  acquireCount uint64_t valuesIf  acquireCount is not 0, pAcquireTimeouts must( be a valid pointer to an array of  acquireCount uint32_t valuesIf  releaseCount is not 0,  pReleaseSyncs must( be a valid pointer to an array of  releaseCount valid  handlesIf  releaseCount is not 0,  pReleaseKeys must( be a valid pointer to an array of  releaseCount uint64_t valuesBoth of the elements of  pAcquireSyncs, and the elements of  pReleaseSyncs7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same /See Also, vulkan pAcquireSyncs is a pointer to an array of 9 objects which were imported from Direct3D 11 resources.vulkan pAcquireKeys is a pointer to an array of mutex key values to wait for prior to beginning the submitted work. Entries refer to the keyed mutex associated with the corresponding entries in  pAcquireSyncs.vulkan pReleaseSyncs is a pointer to an array of 9 objects which were imported from Direct3D 11 resources.vulkan pReleaseKeys is a pointer to an array of mutex key values to set when the submitted work has completed. Entries refer to the keyed mutex associated with the corresponding entries in  pReleaseSyncs.  None("#%&'-./1789;=>?FHIMSUVX_dghklmq)vulkaniVkPipelineLibraryCreateInfoKHR - Structure specifying pipeline libraries to use when creating a pipeline Valid UsageEach element of  pLibraries must have been created with VValid Usage (Implicit)sType must be pNext must be NULLIf  libraryCount is not 0,  pLibraries must( be a valid pointer to an array of  libraryCount valid ~ handlesSee Also~, 0, vulkan pLibrariesD is an array of pipeline libraries to use when creating a pipeline.None("#%&'-./1789;=>?FHIMSUVX_dghklmq)yvulkan3VkPipelineInfoKHR - Structure describing a pipelineValid Usage (Implicit)See Also~, , zvulkaneVkPipelineExecutableStatisticKHR - Structure describing a compile-time pipeline executable statisticValid Usage (Implicit)See Also, , , {vulkanOVkPipelineExecutablePropertiesKHR - Structure describing a pipeline executable DescriptionThe stages field may be zero or it may contain one or more bits describing the stages principally used to compile this pipeline. Not all implementations have a 1:1 mapping between shader stages and pipeline executables and some implementations may reduce a given shader stage to fixed function hardware programming such that no executable is available. No guarantees are provided about the mapping between shader stages and pipeline executables and stages should< be considered a best effort hint. Because the application cannot rely on the stages) field to provide an exact description, name and  descriptiono provide a human readable name and description which more accurately describes the given pipeline executable.Valid Usage (Implicit)See Alsob, , |vulkanVkPipelineExecutableInternalRepresentationKHR - Structure describing the textual form of a pipeline executable internal representation DescriptionIf pData is NULLO, then the size, in bytes, of the internal representation data is returned in dataSize . Otherwise, dataSize: must be the size of the buffer, in bytes, pointed to by pData and on return dataSizeF is overwritten with the number of bytes of data actually written to pData, including any trailing null character. If dataSizeP is less than the size, in bytes, of the internal representation data, at most dataSize# bytes of data will be written to pData and  will return . If isText is . and pData is not NULL and dataSize' is not zero, the last byte written to pData will be a null character.Valid Usage (Implicit)See Alsoo, , }vulkanVkPipelineExecutableInfoKHR - Structure describing a pipeline executable to query for associated statistics or internal representationsValid Usage (Implicit)See Also~, , , ~vulkanVkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR - Structure describing whether pipeline executable properties are availableMembersThe members of the ~, structure describe the following features: DescriptionIf the ~ structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported. ~ can also be included in the pNext chain of   to enable features.Valid Usage (Implicit)See Alsoo, vulkanYVkPipelineExecutableStatisticFormatKHR - Enum describing a pipeline executable statisticSee Alsozvulkanname is an array of  charr containing a null-terminated UTF-8 string which is a short human readable name for this internal representation.vulkan description is an array of  chart containing a null-terminated UTF-8 string which is a human readable description for this internal representation.vulkanisTextA specifies whether the returned data is text or opaque data. If isText is . then the data returned in pDataA is text and is guaranteed to be a null-terminated UTF-8 string.vulkandataSizeg is an integer related to the size, in bytes, of the internal representation data, as described below.vulkanpData is either NULL} or a pointer to an block of data into which the implementation will write the textual form of the internal representation.vulkanname is an array of  chard containing a null-terminated UTF-8 string which is a short human readable name for this statistic.vulkan description is an array of  charf containing a null-terminated UTF-8 string which is a human readable description for this statistic.vulkanformat is a 3 value specifying the format of the data found in value.vulkanvalue is the value of this statistic.vulkanpipeline is the pipeline to query.pipeline must be a valid ~ handlevulkanexecutableIndex] is the index of the executable to query in the array of executable properties returned by .executableIndex must9 be less than the number of executables associated with pipeline as returned in the pExecutableCount parameter of vulkanstages is a bitmask of &o indicating which shader stages (if any) were principally used as inputs to compile this pipeline executable.vulkanname is an array of  chare containing a null-terminated UTF-8 string which is a short human readable name for this executable.vulkan description is an array of  charg containing a null-terminated UTF-8 string which is a human readable description for this executable.vulkan subgroupSize@ is the subgroup size with which this executable is dispatched.vulkanpipeline is a ~ handle.pipeline must be a valid ~ handlevulkanpipelineExecutableInfo indicates that the implementation supports reporting properties and statistics about the executables associated with a compiled pipeline.vulkanP specifies that the statistic is returned as a 64-bit floating-point value and should be read from the f64 field of .vulkanM specifies that the statistic is returned as an unsigned 64-bit integer and should be read from the u64 field of .vulkanJ specifies that the statistic is returned as a signed 64-bit integer and should be read from the i64 field of .vulkanK specifies that the statistic is returned as a 32-bit boolean value which must be either . or . and should be read from the b32 field of .vulkanVvkGetPipelineExecutablePropertiesKHR - Get the executables associated with a pipeline DescriptionIf  pProperties is NULLN, then the number of executables associated with the pipeline is returned in pExecutableCount. Otherwise, pExecutableCount mustG point to a variable set by the user to the number of elements in the  pPropertiesf array, and on return the variable is overwritten with the number of structures actually written to  pProperties. If pExecutableCountO is less than the number of executables associated with the pipeline, at most pExecutableCount! structures will be written and  will return . Valid Usage mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineExecutableInfopipelineExecutableInfo must be enabledpipeline member of  pPipelineInfo must have been created with deviceValid Usage (Implicit)device must be a valid  handle pPipelineInfo must$ be a valid pointer to a valid y structurepExecutableCount must be a valid pointer to a uint32_t valueIf the value referenced by pExecutableCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pExecutableCount { structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, {, yvulkanivkGetPipelineExecutableStatisticsKHR - Get compile time statistics associated with a pipeline executable DescriptionIf  pStatistics is NULLX, then the number of statistics associated with the pipeline executable is returned in pStatisticCount. Otherwise, pStatisticCount mustG point to a variable set by the user to the number of elements in the  pStatisticsf array, and on return the variable is overwritten with the number of structures actually written to  pStatistics. If pStatisticCountZ is less than the number of statistics associated with the pipeline executable, at most pStatisticCount! structures will be written and  will return . Valid Usage mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineExecutableInfopipelineExecutableInfo must be enabledpipeline member of pExecutableInfo must have been created with devicepipeline member of pExecutableInfo must have been created with V set in the flags field of 7L or 7Valid Usage (Implicit)device must be a valid  handlepExecutableInfo must$ be a valid pointer to a valid } structurepStatisticCount must be a valid pointer to a uint32_t valueIf the value referenced by pStatisticCount is not 0 , and  pStatistics is not NULL,  pStatistics must( be a valid pointer to an array of pStatisticCount z structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, }, zvulkanlvkGetPipelineExecutableInternalRepresentationsKHR - Get internal representations of the pipeline executable DescriptionIf pInternalRepresentations is NULLg, then the number of internal representations associated with the pipeline executable is returned in pInternalRepresentationCount. Otherwise, pInternalRepresentationCount mustG point to a variable set by the user to the number of elements in the pInternalRepresentationsf array, and on return the variable is overwritten with the number of structures actually written to pInternalRepresentations. If pInternalRepresentationCounth is less than the number of internal representations associated with the pipeline executable, at most pInternalRepresentationCount! structures will be written and  will return .gWhile the details of the internal representations remain implementation dependent, the implementation should order the internal representations in the order in which they occur in the compile pipeline with the final shader assembly (if any) last. Valid Usage mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineExecutableInfopipelineExecutableInfo must be enabledpipeline member of pExecutableInfo must have been created with devicepipeline member of pExecutableInfo must have been created with V set in the flags field of 7L or 7Valid Usage (Implicit)device must be a valid  handlepExecutableInfo must$ be a valid pointer to a valid } structurepInternalRepresentationCount must be a valid pointer to a uint32_t valueIf the value referenced by pInternalRepresentationCount is not 0, and pInternalRepresentations is not NULL, pInternalRepresentations must( be a valid pointer to an array of pInternalRepresentationCount | structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, }, |vulkandevice) is the device that created the pipeline.vulkan pPipelineInfo& describes the pipeline being queried.vulkandevice) is the device that created the pipeline.vulkanpExecutableInfo1 describes the pipeline executable being queried.vulkandevice) is the device that created the pipeline.vulkanpExecutableInfo1 describes the pipeline executable being queried.0yz{|}~4~y{}z|None("#%&'-./1789;=>?FHIMSUVX_dghklmq*n6rvulkanpVkQueryPoolPerformanceCreateInfoKHR - Structure specifying parameters of a newly created performance query pool Valid UsagequeueFamilyIndex must1 be a valid queue family index of the device The  |https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-features-performanceCounterQueryPoolsperformanceCounterQueryPools feature must be enabledEach element of pCounterIndices must3 be in the range of counters reported by >( for the queue family specified in queueFamilyIndexValid Usage (Implicit)sType must be pCounterIndices must( be a valid pointer to an array of counterIndexCount uint32_t valuescounterIndexCount must be greater than 0See Also, ?svulkanxVkPhysicalDevicePerformanceQueryPropertiesKHR - Structure describing performance query properties for an implementationMembersThe members of the sG structure describe the following implementation-dependent properties:Valid Usage (Implicit)If the s structure is included in the pNext chain of T=, it is filled with the implementation-dependent properties.See Alsoo, tvulkansVkPhysicalDevicePerformanceQueryFeaturesKHR - Structure describing performance query support for an implementationMembersThe members of the tE structure describe the following implementation-dependent features:Valid Usage (Implicit)BTo query supported performance counter query pool features, call T\ with a t structure included in the pNext chain of its  pFeatures parameter. The t structure can also be included in the pNext chain of a  [ structure, in which case it controls which additional features are enabled in the device.See Alsoo, uvulkanrVkPerformanceQuerySubmitInfoKHR - Structure indicating which counter pass index is active for performance queries DescriptionIf the ;N::pNextX chain does not include this structure, the batch defaults to use counter pass index 0.Valid Usage (Implicit)See AlsovvulkanJVkPerformanceCounterKHR - Structure providing information about a counterValid Usage (Implicit)See Also, , , , >wvulkancVkPerformanceCounterDescriptionKHR - Structure providing more detailed information about a counterValid Usage (Implicit)See Also, , >xvulkan^VkAcquireProfilingLockInfoKHR - Structure specifying parameters to acquire the profiling lockValid Usage (Implicit)If timeout is 0, @C will not block while attempting to acquire the profling lock. If timeout is  UINT64_MAXF, the function will not return until the profiling lock was acquired.See Also, , @vulkan;VkAcquireProfilingLockFlagBitsKHR - Reserved for future useSee Alsovulkan]VkPerformanceCounterDescriptionFlagBitsKHR - Bitmask specifying usage behavior for a counterSee Alsovulkan@VkPerformanceCounterStorageKHR - Supported counter storage typesSee Alsovvulkan:VkPerformanceCounterUnitKHR - Supported counter unit typesSee Alsovvulkan<VkPerformanceCounterScopeKHR - Supported counter scope typesSee AlsovvulkancounterPassIndex. specifies which counter pass index is active.counterPassIndex must be less than the number of counter passes required by any queries within the batch. The required number of counter passes for a performance query is obtained by calling ?vulkanflags is reserved for future use.flags must be 0vulkantimeout` indicates how long the function waits, in nanoseconds, if the profiling lock is not available.vulkanqueueFamilyIndexF is the queue family index to create this performance query pool for.vulkanpCounterIndices# is the array of indices into the >:: pCounters+ to enable in this performance query pool.vulkanflags is a bitmask of 0 indicating the usage behavior for the counter.vulkanname is an array of size P, containing a null-terminated UTF-8 string specifying the name of the counter.vulkancategory is an array of size T, containing a null-terminated UTF-8 string specifying the category of the counter.vulkan description is an array of size W, containing a null-terminated UTF-8 string specifying the description of the counter.vulkanunit is a 8 specifying the unit that the counter data will record.vulkanscope is a 3 specifying the scope that the counter belongs to.vulkanstorage is a ; specifying the storage type that the counter s data uses. vulkanuuid is an array of size r, containing 8-bit values that represent a universally unique identifier for the counter of the physical device."vulkanallowCommandBufferQueryCopies is .> if the performance query pools are allowed to be used with .$vulkanperformanceCounterQueryPools is .B if the physical device supports performance counter query pools.%vulkan$performanceCounterMultipleQueryPools is .` if the physical device supports using multiple performance query pools in a primary command buffer and secondary command buffers executed within it.(vulkan(g specifies that concurrently recording the counter while other submitted command buffers are running may& impact the accuracy of the recording.)vulkan)' specifies that recording the counter may& have a noticeable performance impact.*vulkan*? - the performance counter storage is a 64-bit floating-point.+vulkan+? - the performance counter storage is a 32-bit floating-point.,vulkan,A - the performance counter storage is a 64-bit unsigned integer.-vulkan-A - the performance counter storage is a 32-bit unsigned integer..vulkan.? - the performance counter storage is a 64-bit signed integer./vulkan/? - the performance counter storage is a 32-bit signed integer.0vulkan06 - the performance counter unit is a value of cycles.1vulkan1: - the performance counter unit is a value of hertz (Hz).2vulkan28 - the performance counter unit is a value of amps (A).3vulkan39 - the performance counter unit is a value of volts (V).4vulkan49 - the performance counter unit is a value of watts (W).5vulkan5E - the performance counter unit is a temperature reported in Kelvin.6vulkan67 - the performance counter unit is a value of bytes/s.7vulkan75 - the performance counter unit is a value of bytes.8vulkan8@ - the performance counter unit is a value of nanoseconds (ns).9vulkan95 - the performance counter unit is a percentage (%).:vulkan:9 - the performance counter unit is a generic data point.;vulkan;; - the performance counter scope is zero or more commands.<vulkan< - the performance counter scope is zero or more complete render passes. The performance query containing the performance counter must/ begin and end outside a render pass instance.=vulkan=F - the performance counter scope is a single complete command buffer.>vulkanvkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR - Reports properties of the performance query counters available on a queue family of a device DescriptionIf  pCounters is NULL and pCounterDescriptions is NULL8, then the number of counters available is returned in  pCounterCount. Otherwise,  pCounterCount mustG point to a variable set by the user to the number of elements in the  pCounters, pCounterDescriptionst, or both arrays and on return the variable is overwritten with the number of structures actually written out. If  pCounterCount9 is less than the number of counters available, at most  pCounterCount! structures will be written and  will be returned instead of .Valid Usage (Implicit)physicalDevice must be a valid  handle pCounterCount must be a valid pointer to a uint32_t valueIf the value referenced by  pCounterCount is not 0 , and  pCounters is not NULL,  pCounters must( be a valid pointer to an array of  pCounterCount v structuresIf the value referenced by  pCounterCount is not 0 , and pCounterDescriptions is not NULL, pCounterDescriptions must( be a valid pointer to an array of  pCounterCount w structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Alsow, v, ?vulkanvkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR - Reports the number of passes require for a performance query pool type DescriptionThe pPerformanceQueryCreateInfo member r::queueFamilyIndex must be a queue family of physicalDeviceJ. The number of passes required to capture the counters specified in the pPerformanceQueryCreateInfo member r:: pCounters is returned in  pNumPasses.Valid Usage (Implicit)See Also, r@vulkan7vkAcquireProfilingLockKHR - Acquires the profiling lock DescriptionImplementations may@ allow multiple actors to hold the profiling lock concurrently. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Alsox, Avulkan7vkReleaseProfilingLockKHR - Releases the profiling lock Valid UsageThe profiling lock of device must7 have been held via a previous successful call to @Valid Usage (Implicit)device must be a valid  handleSee Also>vulkanphysicalDeviceo is the handle to the physical device whose queue family performance query counter properties will be queried.vulkanqueueFamilyIndexZ is the index into the queue family of the physical device we want to get properties for.?vulkanphysicalDeviceo is the handle to the physical device whose queue family performance query counter properties will be queried.physicalDevice must be a valid  handlevulkanpPerformanceQueryCreateInfo is a pointer to a r1 of the performance query that is to be created.pPerformanceQueryCreateInfo must be a valid pointer to a valid r structure@vulkandevice" is the logical device to profile.device must be a valid  handlevulkanpInfo is a pointer to a xQ structure which contains information about how the profiling is to be acquired.pInfo must be a valid pointer to a valid x structureAvulkandevice- is the logical device to cease profiling on.Ors!"t#$%uv wx)(/.-,+*:9876543210=<;     &'>?@Ae>?@At#$%s!"v wrxu     =<;=<;:9876543210:9876543210/.-,+*/.-,+*)()('&None("#%&'-./1789;=>?FHIMSUVX_dghklmq*ް `vulkanUVkSemaphoreGetFdInfoKHR - Structure describing a POSIX FD semaphore export operation DescriptionGThe properties of the file descriptor returned depend on the value of  handleType. See  V for a description of the properties of the defined external semaphore handle types. Valid Usage handleType must have been included in Q4:: handleTypes when  semaphore s current payload was created semaphore must` not currently have its payload replaced by an imported payload as described below in  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importingImporting Semaphore PayloadsF unless that imported payload s handle type was included in R=::exportFromImportedHandleTypes for  handleTypeIf  handleTypea refers to a handle type with copy payload transference semantics, as defined below in  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importingImporting Semaphore Payloads , there must be no queue waiting on  semaphoreIf  handleTypeH refers to a handle type with copy payload transference semantics,  semaphore must. be signaled, or have an associated  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operation pending execution handleType must- be defined as a POSIX file descriptor handleIf  handleTypeH refers to a handle type with copy payload transference semantics,  semaphore must have been created with a  of If  handleTypeH refers to a handle type with copy payload transference semantics,  semaphore must have an associated semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) must, have also been submitted for executionValid Usage (Implicit)sType must be pNext must be NULL semaphore must be a valid v handle handleType must be a valid   valueSee Also , v, , avulkanaVkImportSemaphoreFdInfoKHR - Structure specifying POSIX file descriptor to import to a semaphore DescriptionThe handle types supported by  handleType are:h Handle Type  Transference  Permanence Supported  9  Reference  Temporary,Permanent  9  Copy  Temporary Handle Types Supported by a Valid Usage handleType must! be a value included in the  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphore-handletypes-fdHandle Types Supported by tablefd must" obey any requirements listed for  handleType in {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility-external semaphore handle types compatibilityIf  handleType is 9 , the <C::flags field must( match that of the semaphore from which fd was exportedIf  handleType is 9, the m:: semaphoreType field must( match that of the semaphore from which fd was exportedIf flags contains 6, the m:: semaphoreType( field of the semaphore from which fd was exported must not be Valid Usage (Implicit)sType must be pNext must be NULL semaphore must be a valid v handleflags must be a valid combination of 6 values handleType must be a valid   valueHost SynchronizationHost access to  semaphore must be externally synchronizedSee Also , v,  r, , vulkan semaphore4 is the semaphore from which state will be exported.vulkan handleType! is the type of handle requested.vulkan semaphore: is the semaphore into which the payload will be imported.vulkanflags is a bitmask of 6O specifying additional parameters for the semaphore payload import operation.vulkan handleType specifies the type of fd.vulkanfd" is the external handle to import.vulkanHvkGetSemaphoreFdKHR - Get a POSIX file descriptor handle for a semaphore Description Each call to  must} create a new file descriptor and transfer ownership of it to the application. To avoid leaking resources, the application mustG release ownership of the file descriptor when it is no longer needed.NoteOOwnership can be released in many ways. For example, the application can call close|() on the file descriptor, or transfer ownership back to Vulkan by using the file descriptor to import a semaphore payload.<Where supported by the operating system, the implementation must= set the file descriptor to be closed automatically when an execve system call is made.-Exporting a file descriptor from a semaphore mayb have side effects depending on the transference of the specified handle type, as described in  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importingImporting Semaphore State. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, `vulkanHvkImportSemaphoreFdKHR - Import a semaphore from a POSIX file descriptor DescriptionImporting a semaphore payload from a file descriptor transfers ownership of the file descriptor from the application to the Vulkan implementation. The application mustN not perform any operations on the file descriptor after a successful import. Applications can import the same semaphore payload into multiple instances of Vulkan, into the same instance from which it was exported, and multiple times into a given Vulkan instance. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, avulkandeviceB is the logical device that created the semaphore being exported.device must be a valid  handlevulkan pGetFdInfo is a pointer to a `: structure containing parameters of the export operation. pGetFdInfo must be a valid pointer to a valid ` structurevulkandevice2 is the logical device that created the semaphore.device must be a valid  handlevulkanpImportSemaphoreFdInfo is a pointer to a a; structure specifying the semaphore and import parameters.pImportSemaphoreFdInfo must be a valid pointer to a valid a structure`aa`None("#%&'-./1789;=>?FHIMSUVX_dghklmq++ YvulkanRVkMemoryGetFdInfoKHR - Structure describing a POSIX FD semaphore export operation DescriptionGThe properties of the file descriptor exported depend on the value of  handleType. See S for a description of the properties of the defined external memory handle types.NoteThe size of the exported file may' be larger than the size requested by 3s::allocationSize. If  handleType is  , then the application can$ query the file s actual size with  man:lseek(2)lseek(2).Valid Usage (Implicit)See Also, , , ZvulkanHVkMemoryFdPropertiesKHR - Properties of External Memory File DescriptorsValid Usage (Implicit)See Also, [vulkancVkImportMemoryFdInfoKHR - import memory created on the same physical device from a file descriptor DescriptionImporting memory from a file descriptor transfers ownership of the file descriptor from the application to the Vulkan implementation. The application mustN not perform any operations on the file descriptor after a successful import. Applications can import the same underlying memory into multiple instances of Vulkan, into the same instance from which it was exported, and multiple times into a given Vulkan instance. In all cases, each import operation must create a distinct  object. Valid UsageIf  handleType is not 0, it must3 be supported for import, as reported by P9 or P6The memory from which fd was exported mustB have been created on the same underlying physical device as deviceIf  handleType is not 0, it must2 be defined as a POSIX file descriptor handleIf  handleType is not 0, fd must1 be a valid handle of the type specified by  handleTypeThe memory represented by fd mustR have been created from a physical device and driver that is compatible with device and  handleType, as described in xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibilityfd must" obey any requirements listed for  handleType in xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility*external memory handle types compatibilityValid Usage (Implicit)sType must be If  handleType is not 0,  handleType must be a valid  valueSee Also, vulkanmemory= is the memory object from which the handle will be exported.memory must be a valid  handlevulkan handleType! is the type of handle requested. handleType must have been included in O0:: handleTypes when memory was created handleType must- be defined as a POSIX file descriptor handle handleType must be a valid  valuevulkanmemoryTypeBits` is a bitmask containing one bit set for every memory type which the specified file descriptor can be imported as.vulkan handleType specifies the handle type of fd.vulkanfd" is the external handle to import.vulkanBvkGetMemoryFdKHR - Get a POSIX file descriptor for a memory object Description Each call to  must} create a new file descriptor and transfer ownership of it to the application. To avoid leaking resources, the application must5 release ownership of the file descriptor using the close system call when it is no longer needed, or by importing a Vulkan memory object from it. Where supported by the operating system, the implementation must= set the file descriptor to be closed automatically when an execve system call is made. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, YvulkanPvkGetMemoryFdPropertiesKHR - Get Properties of External Memory File Descriptors Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , ZvulkandeviceF is the logical device that created the device memory being exported.device must be a valid  handlevulkan pGetFdInfo is a pointer to a Y: structure containing parameters of the export operation. pGetFdInfo must be a valid pointer to a valid Y structurevulkandevice. is the logical device that will be importing fd.device must be a valid  handlevulkan handleType is the type of the handle fd. handleType must not be  handleType must be a valid  valuevulkanfd& is the handle which will be imported.fd must@ be an external memory handle created outside of the Vulkan APIYZ[[ZYNone("#%&'-./1789;=>?FHIMSUVX_dghklmq+g TvulkanVkImportFenceFdInfoKHR - (None) DescriptionThe handle types supported by  handleType are:` Handle Type  Transference  Permanence Supported  =   Reference  Temporary,Permanent  =!  Copy  Temporary Handle Types Supported by T Valid Usage handleType must! be a value included in the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fence-handletypes-fdHandle Types Supported by tablefd must" obey any requirements listed for  handleType in whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility)external fence handle types compatibilityIf  handleType is =!, the special value -1 for fd is treated like a valid sync file descriptor referring to an object that has already signaled. The import operation will succeed and the \ will have a temporarily imported payload as if a valid file descriptor had been provided.NoteLThis special behavior for importing an invalid sync file descriptor allows easier interoperability with other system APIs which use the convention that an invalid sync file descriptor represents work that has already completed and does not need to be waited for. It is consistent with the option for implementations to return a -1$ file descriptor when exporting a =! from a  which is signaled.Valid Usage (Implicit)sType must be pNext must be NULLfence must be a valid  handleflags must be a valid combination of 8" values handleType must be a valid   valueHost SynchronizationHost access to fence must be externally synchronizedSee Also , ,  , , UvulkanMVkFenceGetFdInfoKHR - Structure describing a POSIX FD fence export operation DescriptionGThe properties of the file descriptor returned depend on the value of  handleType. See  R for a description of the properties of the defined external fence handle types. Valid Usage handleType must have been included in M.:: handleTypes when fence s current payload was createdIf  handleTypeH refers to a handle type with copy payload transference semantics, fence must. be signaled, or have an associated  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signalingfence signal operation pending executionfence must` not currently have its payload replaced by an imported payload as described below in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importingImporting Fence PayloadsF unless that imported payload s handle type was included in N7::exportFromImportedHandleTypes for  handleType handleType must- be defined as a POSIX file descriptor handleValid Usage (Implicit)sType must be pNext must be NULLfence must be a valid  handle handleType must be a valid   valueSee Also , , , vulkanfence0 is the fence from which state will be exported.vulkan handleType! is the type of handle requested.vulkanfence6 is the fence into which the payload will be imported.vulkanflags is a bitmask of 8"J specifying additional parameters for the fence payload import operation.vulkan handleType specifies the type of fd.vulkanfd" is the external handle to import.vulkan@vkGetFenceFdKHR - Get a POSIX file descriptor handle for a fence Description Each call to  must} create a new file descriptor and transfer ownership of it to the application. To avoid leaking resources, the application mustG release ownership of the file descriptor when it is no longer needed.NoteOOwnership can be released in many ways. For example, the application can call closex() on the file descriptor, or transfer ownership back to Vulkan by using the file descriptor to import a fence payload.If pGetFdInfo->handleType is =!( and the fence is signaled at the time  is called, pFd may return the value -1$ instead of a valid file descriptor.<Where supported by the operating system, the implementation must= set the file descriptor to be closed automatically when an execve system call is made.)Exporting a file descriptor from a fence mayb have side effects depending on the transference of the specified handle type, as described in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importingImporting Fence State. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, Uvulkan@vkImportFenceFdKHR - Import a fence from a POSIX file descriptor DescriptionImporting a fence payload from a file descriptor transfers ownership of the file descriptor from the application to the Vulkan implementation. The application mustN not perform any operations on the file descriptor after a successful import. Applications can import the same fence payload into multiple instances of Vulkan, into the same instance from which it was exported, and multiple times into a given Vulkan instance. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, Tvulkandevice= is the logical device that created the fence being exported.device must be a valid  handlevulkan pGetFdInfo is a pointer to a U: structure containing parameters of the export operation. pGetFdInfo must be a valid pointer to a valid U structurevulkandevice. is the logical device that created the fence.device must be a valid  handlevulkanpImportFenceFdInfo is a pointer to a T7 structure specifying the fence and import parameters.pImportFenceFdInfo must be a valid pointer to a valid T structureTUTUNone("#%&'-./1789;=>?FHIMSUVX_dghklmq.'vulkanpVkPipelineRasterizationStateStreamCreateInfoEXT - Structure defining the geometry stream used for rasterization Description"If this structure is not present, rasterizationStream is assumed to be zero.Valid Usage (Implicit)See Also, vulkanVkPhysicalDeviceTransformFeedbackPropertiesEXT - Structure describing transform feedback properties that can be supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of TH, it is filled with the implementation-dependent limits and properties.Valid Usage (Implicit)See Alsoo, m, vulkanVkPhysicalDeviceTransformFeedbackFeaturesEXT - Structure describing transform feedback features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TK, it is filled with values indicating whether each feature is supported.  can also be included in the pNext chain of   to enable features.Valid Usage (Implicit)See Alsoo, vulkanKVkPipelineRasterizationStateStreamCreateFlagsEXT - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Alsovulkanflags is reserved for future use.flags must be 0vulkanrasterizationStream1 is the vertex stream selected for rasterization.rasterizationStream must be less than ::maxTransformFeedbackStreamsrasterizationStream must be zero if ::*transformFeedbackRasterizationStreamSelect is .vulkanmaxTransformFeedbackStreamsf is the maximum number of vertex streams that can be output from geometry shaders declared with the GeometryStreams5 capability. If the implementation does not support ::geometryStreams then maxTransformFeedbackStreams must be set to 1.vulkanmaxTransformFeedbackBuffers is the maximum number of transform feedback buffers that can be bound for capturing shader outputs from the last vertex processing stage.vulkanmaxTransformFeedbackBufferSize] is the maximum size that can be specified when binding a buffer for transform feedback in .vulkan"maxTransformFeedbackStreamDataSize is the maximum amount of data in bytes for each vertex that captured to one or more transform feedback buffers associated with a specific vertex stream.vulkan"maxTransformFeedbackBufferDataSizew is the maximum amount of data in bytes for each vertex that can be captured to a specific transform feedback buffer.vulkan$maxTransformFeedbackBufferDataStrideJ is the maximum stride between each capture of vertex data to the buffer.vulkantransformFeedbackQueries- is true if the implementation supports the ## query type. transformFeedbackQueries# is false if queries of this type cannot be created.vulkan&transformFeedbackStreamsLinesTriangles= is true if the implementation supports the geometry shader OpExecutionMode of OutputLineStrip and OutputTriangleStrip in addition to  OutputPoints1 when more than one vertex stream is output. If &transformFeedbackStreamsLinesTriangles/ is false the implementation only supports an OpExecutionMode of  OutputPointsF when more than one vertex stream is output from the geometry shader.vulkan*transformFeedbackRasterizationStreamSelect- is true if the implementation supports the GeometryStreams0 SPIR-V capability and the application can use [ to modify which vertex stream output is used for rasterization. Otherwise vertex stream 0 must" always be used for rasterization.vulkantransformFeedbackDraw- is true if the implementation supports the  ! function otherwise the function must not be called.vulkantransformFeedbackV indicates whether the implementation supports transform feedback and shader modules can declare the TransformFeedback capability.vulkangeometryStreams4 indicates whether the implementation supports the GeometryStreams SPIR-V capability.vulkan[vkCmdBindTransformFeedbackBuffersEXT - Bind transform feedback buffers to a command buffer Description$The values taken from elements i of pBuffers, pOffsets and pSizes@ replace the current state for the transform feedback binding  firstBinding + i, for i in [0,  bindingCountR). The transform feedback binding is updated to start at the offset indicated by pOffsets"[i] from the start of the buffer pBuffers[i]. Valid Usage::transformFeedback must be enabled  firstBinding must be less than ::maxTransformFeedbackBuffers The sum of  firstBinding and  bindingCount must$ be less than or equal to ::maxTransformFeedbackBuffersAll elements of pOffsets must< be less than the size of the corresponding element in pBuffersAll elements of pOffsets must be a multiple of 4All elements of pBuffers must! have been created with the z$ flagIf the optional pSize% array is specified, each element of pSizes must either be %(, or be less than or equal to ::maxTransformFeedbackBufferSizeAll elements of pSizes mustG be less than or equal to the size of the corresponding buffer in pBuffersAll elements of pOffsets plus pSizes , where the pSizes, element is not %, mustM be less than or equal to the size of the corresponding element in pBuffersEach element of pBuffers that is non-sparse must< be bound completely and contiguously to a single /8 objectTransform feedback must not be active when the  command is recordedValid Usage (Implicit) commandBuffer must be a valid  handlepBuffers must# be a valid pointer to an array of  bindingCount valid  handlespOffsets must# be a valid pointer to an array of  bindingCount m values commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations bindingCount must be greater than 0Both of  commandBuffer, and the elements of pBuffers mustD have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also, , mvulkanVvkCmdBeginTransformFeedbackEXT - Make transform feedback active in the command buffer Description^The active transform feedback buffers will capture primitives emitted from the corresponding  XfbBuffer& in the bound graphics pipeline. Any  XfbBuffer[ emitted that does not output to an active transform feedback buffer will not be captured. Valid Usage::transformFeedback must be enabledTransform feedback must not be activefirstCounterBuffer must be less than ::maxTransformFeedbackBuffers The sum of firstCounterBuffer and counterBufferCount must$ be less than or equal to ::maxTransformFeedbackBuffersIf counterBufferCount is not 0, and pCounterBuffers is not NULL, pCounterBuffers must( be a valid pointer to an array of counterBufferCount ' handles that are either valid or 7For each buffer handle in the array, if it is not  it must` reference a buffer large enough to hold 4 bytes at the corresponding offset from the pCounterBufferOffsets arrayIf pCounterBuffer is NULL, then pCounterBufferOffsets must also be NULLFor each buffer handle in the pCounterBuffers array that is not  it must have been created with a usage value containing z&Transform feedback mustI not be made active in a render pass instance with multiview enabledValid Usage (Implicit) commandBuffer must be a valid  handleIf counterBufferCount is not 0, and pCounterBufferOffsets is not NULL, pCounterBufferOffsets must( be a valid pointer to an array of counterBufferCount m values commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations This command must0 only be called inside of a render pass instanceBoth of  commandBuffer, and the elements of pCounterBuffers7 that are valid handles of non-ignored parameters mustD have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Inside  Graphics  See Also, , mvulkan>This function will call the supplied action between calls to  and  Note that @ is *not* called if an exception is thrown by the inner action.vulkanVvkCmdEndTransformFeedbackEXT - Make transform feedback inactive in the command buffer Valid Usage::transformFeedback must be enabledTransform feedback must be activefirstCounterBuffer must be less than ::maxTransformFeedbackBuffers The sum of firstCounterBuffer and counterBufferCount must$ be less than or equal to ::maxTransformFeedbackBuffersIf counterBufferCount is not 0, and pCounterBuffers is not NULL, pCounterBuffers must( be a valid pointer to an array of counterBufferCount ' handles that are either valid or 7For each buffer handle in the array, if it is not  it must` reference a buffer large enough to hold 4 bytes at the corresponding offset from the pCounterBufferOffsets arrayIf pCounterBuffer is NULL, then pCounterBufferOffsets must also be NULLFor each buffer handle in the pCounterBuffers array that is not  it must have been created with a usage value containing z&Valid Usage (Implicit) commandBuffer must be a valid  handleIf counterBufferCount is not 0, and pCounterBufferOffsets is not NULL, pCounterBufferOffsets must( be a valid pointer to an array of counterBufferCount m values commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations This command must0 only be called inside of a render pass instanceBoth of  commandBuffer, and the elements of pCounterBuffers7 that are valid handles of non-ignored parameters mustD have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Inside  Graphics  See Also, , mvulkan2vkCmdBeginQueryIndexedEXT - Begin an indexed query DescriptionThe # command operates the same as the 7= command, except that it also accepts a query type specific index parameter. Valid Usage queryPool must have been created with a  queryType: that differs from that of any queries that are  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive within  commandBuffer All queries used by the command must be unavailableThe  queryType used to create  queryPool must not be #' If the  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-occlusionQueryPreciseprecise occlusion queries% feature is not enabled, or the  queryType used to create  queryPool was not #(, flags must not contain  %query must' be less than the number of queries in  queryPoolIf the  queryType used to create  queryPool was #( , the /E that  commandBuffer was allocated from must support graphics operationsIf the  queryType used to create  queryPool was #) and any of the pipelineStatistics( indicate graphics operations, the /E that  commandBuffer was allocated from must support graphics operationsIf the  queryType used to create  queryPool was #) and any of the pipelineStatistics' indicate compute operations, the /E that  commandBuffer was allocated from must support compute operations commandBuffer must" not be a protected command buffer4If called within a render pass instance, the sum of queryD and the number of bits set in the current subpass s view mask must8 be less than or equal to the number of queries in  queryPoolIf the  queryType used to create  queryPool was ## the /E that  commandBuffer was allocated from must support graphics operationsIf the  queryType used to create  queryPool was ## the index parameter must be less than ::maxTransformFeedbackStreamsIf the  queryType used to create  queryPool was not ## the index must be zeroIf the  queryType used to create  queryPool was ## then ::transformFeedbackQueries must be supportedIf  queryPool was created with a  queryType of #*, the  \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#profiling-lockprofiling lock must have been held before  was called on  commandBufferIf  queryPool was created with a  queryType of #*- and one of the counters used to create  queryPool was +, the query begin must' be the first recorded command in  commandBufferIf  queryPool was created with a  queryType of #*- and one of the counters used to create  queryPool was ,, the begin command must3 not be recorded within a render pass instanceIf  queryPool was created with a  queryType of #*$ and another query pool with a  queryType #* has been used within  commandBuffer, its parent primary command buffer or secondary command buffer recorded within the same parent primary command buffer as  commandBuffer , the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-features-performanceCounterMultipleQueryPools$performanceCounterMultipleQueryPools feature must be enabledIf  queryPool was created with a  queryType of #*, this command must{ not be recorded in a command buffer that, either directly or through secondary command buffers, also contains a ;& command affecting the same queryValid Usage (Implicit) commandBuffer must be a valid  handle queryPool must be a valid { handleflags must be a valid combination of [ values commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operationsBoth of  commandBuffer, and  queryPool must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics Compute  See Also, Z, { vulkan>This function will call the supplied action between calls to  and   Note that  @ is *not* called if an exception is thrown by the inner action. vulkan&vkCmdEndQueryIndexedEXT - Ends a query DescriptionThe  # command operates the same as the 9= command, except that it also accepts a query type specific index parameter. Valid Usage All queries used by the command must be fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactivequery must' be less than the number of queries in  queryPool commandBuffer must" not be a protected command bufferIf  : is called within a render pass instance, the sum of queryD and the number of bits set in the current subpass s view mask must8 be less than or equal to the number of queries in  queryPoolIf the  queryType used to create  queryPool was ## the index parameter must be less than ::maxTransformFeedbackStreamsIf the  queryType used to create  queryPool was not ## the index must be zeroIf the  queryType used to create  queryPool was ## index must equal the index used to begin the queryValid Usage (Implicit) commandBuffer must be a valid  handle queryPool must be a valid { handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operationsBoth of  commandBuffer, and  queryPool must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics Compute  See Also, { vulkanvkCmdDrawIndirectByteCountEXT - Draw primitives where the vertex count is derived from the counter byte value in the counter buffer DescriptionUWhen the command is executed, primitives are assembled in the same way as done with  except the  vertexCount2 is calculated based on the byte count read from  counterBuffer at offset counterBufferOffset@. The assembled primitives execute the bound graphics pipeline.The effective  vertexCount is calculated as follows: const uint32_t * counterBufferPtr = (const uint8_t *)counterBuffer.address + counterBufferOffset; vertexCount = floor(max(0, (*counterBufferPtr - counterOffset)) / vertexStride);The effective  firstVertex is zero. Valid UsageIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain g$If a /b is accessed using atomic operations as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain gIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any / being sampled with " as a result of this command must have a `E and format that supports cubic filtering, as specified by A:: filterCubic returned by TcAny / being sampled with + with a reduction mode of either  or " as a result of this command must have a `i and format that supports cubic filtering together with minmax filtering, as specified by A::filterCubicMinmax returned by TcAny /: created with a 0::flags containing * sampled as a result of this command must only be sampled using a % of % For each set n% that is statically used by the /)N bound to the pipeline bind point used by this command, a descriptor set must have been bound to n3 at the same pipeline bind point, with a /! that is compatible for set n , with the /! used to create the current /), as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the /)S bound to the pipeline bind point used by this command, a push constant value mustB have been set for the same pipeline bind point, with a /6 that is compatible for push constants, with the /! used to create the current /), as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via ., must7 be valid if they are statically used by the /); bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the /)o object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the /)a object bound to the pipeline bind point used by this command, since that pipeline was boundIf the /)S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must% not be used to sample from any /: with a / of the type `, `, `, `| or `, in any shader stageIf the /)S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stageIf the /)S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample*U instructions that includes a LOD bias or any offset values, in any shader stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the /)f object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the /)f object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the /)C object bound to the pipeline bind point used by this command must! not be a protected resourceIf a / is accessed using  OpImageWrite' as a result of this command, then the Type of the Texel operand of that instruction mustB have at least as many components as the image view s format.The current render pass must be  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 7L, structure specified when creating the /) bound to  -The subpass index of the current render pass must be equal to the subpass member of the 7L, structure specified when creating the /) bound to  3Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor setGImage subresources used as attachments in the current render pass mustL not be accessed in any way other than as an attachment by this commandjIf the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to W::maxMultiviewInstanceIndex5If the bound graphics pipeline was created with ::sampleLocationsEnable set to .S and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set?If the bound graphics pipeline state was created with the l . dynamic state enabled, but not the l , dynamic state enabled, then then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the 7":: scissorCount of the pipeline?If the bound graphics pipeline state was created with the l . dynamic state enabled, but not the l , dynamic state enabled, then then  mustY have been called in the current command buffer prior to this draw command, and the  scissorCount parameter of  must match the 7":: viewportCount of the pipelineDIf the bound graphics pipeline state was created with both the l  and l , dynamic states enabled then both  and  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the  scissorCount parameter of ?If the bound graphics pipeline state was created with the l & dynamic state enabled then  mustY have been called in the current command buffer prior to this draw command, and the primitiveTopology parameter of  must be of the same  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class as the pipeline 7::topology stateyAll vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must have either valid or  buffers bound If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must not be >For a given vertex buffer binding, any attribute data fetched mustf be entirely contained within the corresponding vertex buffer binding, as described in \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input???::transformFeedback must be enabledThe implementation must support ::transformFeedbackDraw vertexStride must2 be greater than 0 and less than or equal to  l::$maxTransformFeedbackBufferDataStride counterBuffer must! have been created with the z bit set commandBuffer must" not be a protected command bufferValid Usage (Implicit) commandBuffer must be a valid  handle counterBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations This command must0 only be called inside of a render pass instanceBoth of  commandBuffer, and  counterBuffer mustD have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Inside  Graphics  Graphics See Also, , mvulkan commandBuffer; is the command buffer into which the command is recorded.vulkan firstBinding] is the index of the first transform feedback binding whose state is updated by the command.vulkanpBuffers, is a pointer to an array of buffer handles.vulkanpOffsets, is a pointer to an array of buffer offsets.vulkanpSizes is an optional array of buffer sizes, specifying the maximum number of bytes to capture to the corresponding transform feedback buffer. If pSizes is NULL, or the value of the pSizes array element is %i, then the maximum bytes captured will be the size of the corresponding buffer minus the buffer offset.vulkan commandBuffer; is the command buffer into which the command is recorded.vulkanfirstCounterBufferG is the index of the first transform feedback buffer corresponding to pCounterBuffers[0] and pCounterBufferOffsets[0].vulkanpCounterBuffers6 is an optional array of buffer handles to the counter buffers which contain a 4 byte integer value representing the byte offset from the start of the corresponding transform feedback buffer from where to start capturing vertex data. If the byte offset stored to the counter buffer location was done using N it can be used to resume transform feedback from the previous location. If pCounterBuffers is NULL, then transform feedback will start capturing vertex data to byte offset zero in all bound transform feedback buffers. For each element of pCounterBuffers that is z, transform feedback will start capturing vertex data to byte zero in the corresponding bound transform feedback buffer.vulkanpCounterBufferOffsets5 is an optional array of offsets within each of the pCounterBuffersi where the counter values were previously written. The location in each counter buffer at these offsets must be large enough to contain 4 bytes of data. This data is the number of bytes captured by the previous transform feedback to this buffer. If pCounterBufferOffsets is NULL+, then it is assumed the offsets are zero.vulkan commandBuffer; is the command buffer into which the command is recorded.vulkanfirstCounterBufferG is the index of the first transform feedback buffer corresponding to pCounterBuffers[0] and pCounterBufferOffsets[0].vulkanpCounterBuffers is an optional array of buffer handles to the counter buffers used to record the current byte positions of each transform feedback buffer where the next vertex output data would be captured. This can be used by a subsequent X call to resume transform feedback capture from this position. It can also be used by  1 to determine the vertex count of the draw call.vulkanpCounterBufferOffsets5 is an optional array of offsets within each of the pCounterBuffers` where the counter values can be written. The location in each counter buffer at these offsets must be large enough to contain 4 bytes of data. The data stored at this location is the byte offset from the start of the transform feedback buffer binding where the next vertex data would be written. If pCounterBufferOffsets is NULL+, then it is assumed the offsets are zero.vulkan commandBufferA is the command buffer into which this command will be recorded.vulkan queryPool= is the query pool that will manage the results of the query.vulkanqueryI is the query index within the query pool that will contain the results.vulkanflags is a bitmask of [6 specifying constraints on the types of queries that can be performed.vulkanindex; is the query type specific index. When the query type is ##) the index represents the vertex stream. vulkan commandBufferA is the command buffer into which this command will be recorded.vulkan queryPool= is the query pool that is managing the results of the query.vulkanqueryF is the query index within the query pool where the result is stored.vulkanindex" is the query type specific index. vulkan commandBuffer; is the command buffer into which the command is recorded.vulkan instanceCount$ is the number of instances to draw.vulkan firstInstance2 is the instance ID of the first instance to draw.vulkan counterBuffer8 is the buffer handle from where the byte count is read.vulkancounterBufferOffset} is the offset into the buffer used to read the byte count, which is used to calculate the vertex count for this draw call.vulkan counterOffset2 is subtracted from the byte count read from the  counterBuffer at the counterBufferOffsetvulkan vertexStride is the stride in bytes between each element of the vertex data that is used to calculate the vertex count from the counter value. This value is typically the same value that was used in the graphics pipeline state when the transform feedback was captured as the  XfbStride."   "   None("#%&'-./1789;=>?FHIMSUVX_dghklmq._vulkanYVkPhysicalDeviceToolPropertiesEXT - Structure providing information about an active toolValid Usage (Implicit)See Also, *, <+vulkanMVkToolPurposeFlagBitsEXT - Bitmask specifying the purposes of an active toolSee Also*.vulkannameD is a null-terminated UTF-8 string containing the name of the tool./vulkanversionG is a null-terminated UTF-8 string containing the version of the tool.0vulkanpurposes is a bitmask of +9 which is populated with purposes supported by the tool.1vulkan descriptionI is a null-terminated UTF-8 string containing a description of the tool.2vulkanlayer is a null-terminated UTF-8 string that contains the name of the layer implementing the tool, if the tool is implemented in a layer - otherwise it may be an empty string.5vulkan5h specifies that the tool reports additional information to the application via callbacks specified by  or 6vulkan6# specifies that the tool consumes  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-debug-markers debug markers or  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-object-debug-annotationobject debug annotation,  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-queue-labels queue labels, or mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-command-buffer-labelscommand buffer labels7vulkan7d specifies that the tool modifies the API features/limits/extensions presented to the application.8vulkan8o specifies that the tool provides additional API features/extensions on top of the underlying implementation.9vulkan9 specifies that the tool is capturing data about the application s API usage, including anything from simple logging to capturing data for later replay.:vulkan:: specifies that the tool provides profiling of API usage.;vulkan;; specifies that the tool provides validation of API usage.<vulkankvkGetPhysicalDeviceToolPropertiesEXT - Reports properties of tools active on the specified physical device DescriptionIf pToolProperties is NULL0, then the number of tools currently active on physicalDevice is returned in  pToolCount. Otherwise,  pToolCount mustG point to a variable set by the user to the number of elements in the pToolPropertiesf array, and on return the variable is overwritten with the number of structures actually written to pToolProperties. If  pToolCount= is less than the number of currently active tools, at most  pToolCount structures will be written.)The count and properties of active tools mayV change in response to events outside the scope of the specification. An application should9 assume these properties might change at any given time.Valid Usage (Implicit)physicalDevice must be a valid  handle pToolCount must be a valid pointer to a uint32_t valueIf the value referenced by  pToolCount is not 0 , and pToolProperties is not NULL, pToolProperties must( be a valid pointer to an array of  pToolCount  structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessSee Also, <vulkanphysicalDeviceA is the handle to the physical device to query for active tools.-.21/0()*+;:98765,34<<-.21/0+;:98765,;:98765*)4(3None("#%&'-./1789;=>?FHIMSUVX_dghklmq/OvulkanVkSubpassSampleLocationsEXT - Structure specifying the sample locations state to use for layout transitions of attachments performed after a given subpass Description[If the image referenced by the depth/stencil attachment used in the subpass identified by  subpassIndex was not created with  B or if the subpass does not use a depth/stencil attachment, and ::variableSampleLocations is . then the values specified in sampleLocationsInfo are ignored.Valid Usage (Implicit)See Also, vulkanJVkSampleLocationsInfoEXT - Structure specifying a set of sample locations DescriptionThis structure can be used either to specify the sample locations to be used for rendering or to specify the set of sample locations an image subresource has been last rendered with for the purposes of layout transitions of depth/stencil images created with  .The sample locations in pSampleLocations specify sampleLocationsPerPixelQ number of sample locations for each pixel in the grid of the size specified in sampleLocationGridSizeT. The sample location for sample i at the pixel grid location (x,y) is taken from pSampleLocations [(x + y sampleLocationGridSize.width) sampleLocationsPerPixel + i].If the render pass has a fragment density map, the implementation will choose the sample locations for the fragment and the contents of pSampleLocations may be ignored. Valid UsagesampleLocationsPerPixel must$ be a bit value that is set in ::sampleLocationSampleCountssampleLocationsCount must equal sampleLocationsPerPixel sampleLocationGridSize.width sampleLocationGridSize.heightValid Usage (Implicit)sType must be If sampleLocationsPerPixel is not 0, sampleLocationsPerPixel must be a valid a valueIf sampleLocationsCount is not 0, pSampleLocations must( be a valid pointer to an array of sampleLocationsCount  structuresSee Also, t, , a, , , , ivulkanPVkSampleLocationEXT - Structure specifying the coordinates of a sample location DescriptiontThe domain space of the sample location coordinates has an upper-left origin within the pixel in framebuffer space.The values specified in a b structure are always clamped to the implementation-dependent sample location coordinate range [sampleLocationCoordinateRange[0],sampleLocationCoordinateRange [1]] that can be queried by adding a  structure to the pNext chain of T.See AlsovulkanVkRenderPassSampleLocationsBeginInfoEXT - Structure specifying sample locations to use for the layout transition of custom sample locations compatible depth/stencil attachmentsValid Usage (Implicit)sType must be If %attachmentInitialSampleLocationsCount is not 0, !pAttachmentInitialSampleLocations must( be a valid pointer to an array of %attachmentInitialSampleLocationsCount valid  structuresIf postSubpassSampleLocationsCount is not 0, pPostSubpassSampleLocations must( be a valid pointer to an array of postSubpassSampleLocationsCount valid  structuresSee Also, , vulkancVkPipelineSampleLocationsStateCreateInfoEXT - Structure specifying sample locations for a pipelineValid Usage (Implicit)See Alsoo, , vulkanVkPhysicalDeviceSampleLocationsPropertiesEXT - Structure describing sample location limits that can be supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alsoo, t, `, vulkanVkMultisamplePropertiesEXT - Structure returning information about sample count specific additional multisampling capabilitiesValid Usage (Implicit)See Alsot, , jvulkanVkAttachmentSampleLocationsEXT - Structure specifying the sample locations state to use in the initial layout transition of attachments Description@If the image referenced by the framebuffer attachment at index attachmentIndex was not created with   then the values specified in sampleLocationsInfo are ignored.Valid Usage (Implicit)See Also, MvulkanmaxSampleLocationGridSizeB is the maximum size of the pixel grid in which sample locations can vary.OvulkansampleLocationSampleCounts is a bitmask of aB indicating the sample counts supporting custom sample locations.PvulkanmaxSampleLocationGridSizeB is the maximum size of the pixel grid in which sample locations can2 vary that is supported for all sample counts in sampleLocationSampleCounts.QvulkansampleLocationCoordinateRange;[2] is the range of supported sample location coordinates.RvulkansampleLocationSubPixelBitsC is the number of bits of subpixel precision for sample locations.SvulkanvariableSampleLocationsx specifies whether the sample locations used by all pipelines that will be bound to a command buffer during a subpass must match. If set to .R, the implementation supports variable sample locations in a subpass. If set to ., then the sample locations must stay constant in each subpass.UvulkansampleLocationsEnable8 controls whether custom sample locations are used. If sampleLocationsEnable is .E, the default sample locations are used and the values specified in sampleLocationsInfo are ignored.VvulkansampleLocationsInfo9 is the sample locations to use during rasterization if sampleLocationsEnable is .1 and the graphics pipeline is not created with l-.sampleLocationsInfo must be a valid  structureXvulkan!pAttachmentInitialSampleLocations is a pointer to an array of %attachmentInitialSampleLocationsCount p structures specifying the attachment indices and their corresponding sample location state. Each element of !pAttachmentInitialSampleLocations can specify the sample location state to use in the automatic layout transition performed to transition a depth/stencil attachment from the initial layout of the attachment to the image layout specified for the attachment in the first subpass using it.YvulkanpPostSubpassSampleLocations is a pointer to an array of postSubpassSampleLocationsCount l structures specifying the subpass indices and their corresponding sample location state. Each element of pPostSubpassSampleLocations can] specify the sample location state to use in the automatic layout transition performed to transition the depth/stencil attachment used by the specified subpass to the image layout specified in a dependent subpass or to the final layout of the attachment in case the specified subpass is the last subpass using that attachment. In addition, if ::variableSampleLocations is ., each element of pPostSubpassSampleLocations must specify the sample location state that matches the sample locations used by all pipelines that will be bound to a command buffer during the specified subpass. If variableSampleLocations is .A, the sample locations used for rasterization do not depend on pPostSubpassSampleLocations.[vulkan subpassIndexO is the index of the subpass for which the sample locations state is provided. subpassIndex must be less than the  subpassCount specified in 67 the render pass specified by 6:: renderPass was created with\vulkansampleLocationsInfo is the sample locations state to use for the layout transition of the depth/stencil attachment away from the image layout the attachment is used with in the subpass specified in  subpassIndex.sampleLocationsInfo must be a valid  structure^vulkanattachmentIndexR is the index of the attachment for which the sample locations state is provided.attachmentIndex must be less than the attachmentCount specified in 67 the render pass specified by 6:: renderPass was created with_vulkansampleLocationsInfo is the sample locations state to use for the layout transition of the given attachment from the initial layout of the attachment to the image layout specified for the attachment in the first subpass using it.sampleLocationsInfo must be a valid  structureavulkansampleLocationsPerPixel is a a6 specifying the number of sample locations per pixel.bvulkansampleLocationGridSizeP is the size of the sample location grid to select custom sample locations for.cvulkanpSampleLocations is a pointer to an array of sampleLocationsCount  structures.evulkanx7 is the horizontal coordinate of the sample s location.fvulkany5 is the vertical coordinate of the sample s location.ivulkanCvkCmdSetSampleLocationsEXT - Set the dynamic sample locations state Valid UsageThe sampleLocationsPerPixel member of pSampleLocationsInfo must equal the rasterizationSamples member of the 7A structure the bound graphics pipeline has been created withIf ::variableSampleLocations is .# then the current render pass must& have been begun by specifying a  structure whose pPostSubpassSampleLocations( member contains an element with a  subpassIndex1 matching the current subpass index and the sampleLocationsInfo member of that element must5 match the sample locations state pointed to by pSampleLocationsInfoValid Usage (Implicit) commandBuffer must be a valid  handlepSampleLocationsInfo must$ be a valid pointer to a valid  structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also, jvulkan{vkGetPhysicalDeviceMultisamplePropertiesEXT - Report sample count specific multisampling capabilities of a physical deviceValid Usage (Implicit)See Also, , aivulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanpSampleLocationsInfo& is the sample locations state to set.jvulkanphysicalDeviceW is the physical device from which to query the additional multisampling capabilities.physicalDevice must be a valid  handlevulkansamples3 is the sample count to query the capabilities for.samples must be a valid a value)Z\[`cabdefWXYTVUNOPQRSLM]_^JKghij)ijdef`cab]_^Z\[WXYTVUNOPQRSLMKhJgNone("#%&'-./1789;=>?FHIMSUVX_dghklmq/vulkanVkPipelineRasterizationLineStateCreateInfoEXT - Structure specifying parameters of a newly created pipeline line rasterization state Valid UsageIf lineRasterizationMode is , then the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rectangularLinesrectangularLines feature must be enabledIf lineRasterizationMode is , then the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bresenhamLinesbresenhamLines feature must be enabledIf lineRasterizationMode is , then the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bresenhamLines smoothLines feature must be enabledIf stippledLineEnable is . and lineRasterizationMode is , then the  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLinesstippledRectangularLines feature must be enabledIf stippledLineEnable is . and lineRasterizationMode is , then the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLinesstippledBresenhamLines feature must be enabledIf stippledLineEnable is . and lineRasterizationMode is , then the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLinesstippledSmoothLines feature must be enabledIf stippledLineEnable is . and lineRasterizationMode is , then the  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLinesstippledRectangularLines feature must be enabled and  l:: strictLines must be .Valid Usage (Implicit)sType must be blineRasterizationMode must be a valid  valueSee Alsoo, , vulkanVkPhysicalDeviceLineRasterizationPropertiesEXT - Structure describing line rasterization properties supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See AlsovulkanVkPhysicalDeviceLineRasterizationFeaturesEXT - Structure describing the line rasterization features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of   to enable the feature.Valid Usage (Implicit)See Alsoo, vulkan5VkLineRasterizationModeEXT - Line rasterization modesSee AlsovulkanlineRasterizationMode is a 2 value selecting the style of line rasterization.vulkanstippledLineEnable enables  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-stipplestippled line rasterization.vulkanlineStippleFactor; is the repeat factor used in stippled line rasterization.vulkanlineStipplePattern9 is the bit pattern used in stippled line rasterization.vulkanlineSubPixelPrecisionBitse is the number of bits of subpixel precision in framebuffer coordinates xf and yf when rasterizing  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines line segments.vulkanrectangularLines0 indicates whether the implementation supports  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-linesrectangular line rasterization.vulkanbresenhamLines0 indicates whether the implementation supports  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-bresenham"Bresenham-style line rasterization.vulkan smoothLines0 indicates whether the implementation supports  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-smoothsmooth line rasterization.vulkanstippledRectangularLines0 indicates whether the implementation supports  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-stipplestippled line rasterization with  lines, or with  lines if  l:: strictLines is ..vulkanstippledBresenhamLines0 indicates whether the implementation supports  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-stipplestippled line rasterization with  lines.vulkanstippledSmoothLines0 indicates whether the implementation supports  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-stipplestippled line rasterization with  lines.vulkanl specifies lines drawn if they were rectangles extruded from the line, with alpha falloff, as defined in  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-smooth Smooth Lines.vulkank specifies lines drawn by determining which pixel diamonds the line intersects and exits, as defined in  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-bresenham$Bresenham Line Segment Rasterization.vulkanI specifies lines drawn as if they were rectangles extruded from the linevulkan is equivalent to  if  l:: strictLines is .$, otherwise lines are drawn as non- strictLines5 parallelograms. Both of these modes are defined in  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-basic Basic Line Segment Rasterization.vulkan9vkCmdSetLineStippleEXT - Set the dynamic line width state Valid UsagelineStippleFactor must be in the range [1,256]Valid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Alsovulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanlineStippleFactor; is the repeat factor used in stippled line rasterization.vulkanlineStipplePattern9 is the bit pattern used in stippled line rasterization. None("#%&'-./1789;=>?FHIMSUVX_dghklmq/vulkanVkPhysicalDeviceExternalMemoryHostPropertiesEXT - Structure describing external memory host pointer limits that can be supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alsom, vulkanNVkMemoryHostPointerPropertiesEXT - Properties of external memory host pointer DescriptionThe value returned by memoryTypeBits mustF only include bits that identify memory types which are host visible.Valid Usage (Implicit)See Also, vulkanDVkImportMemoryHostPointerInfoEXT - import memory from a host pointer DescriptionImporting memory from a host pointer shares ownership of the memory between the host and the Vulkan implementation. The application can continue to access the memory through the host pointer but it is the application s responsibility to synchronize device and non-device access to the underlying memory as defined in  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-hostaccess$Host Access to Device Memory Objects. Applications can import the same underlying memory into multiple instances of Vulkan and multiple times into a given Vulkan instance. However, implementations mayt fail to import the same underlying memory multiple times into a given physical device due to platform constraints.0Importing memory from a particular host pointer may not be possible due to additional platform-specific restrictions beyond the scope of this specification in which case the implementation must8 fail the memory import operation with the error code ..The application mustt ensure that the imported memory range remains valid and accessible for the lifetime of the imported memory object. Valid UsageIf  handleType is not 0, it must3 be supported for import, as reported in P/If  handleType is not 0, it must be   or   pHostPointer must5 be a pointer aligned to an integer multiple of ::minImportedHostPointerAlignmentIf  handleType is  ,  pHostPointer must be a pointer to allocationSize, number of bytes of host memory, where allocationSize is the member of the 3s, structure this structure is chained toIf  handleType is  ,  pHostPointer must be a pointer to allocationSize; number of bytes of host mapped foreign memory, where allocationSize is the member of the 3s, structure this structure is chained toValid Usage (Implicit)sType must be " handleType must be a valid  valueSee Also, vulkanminImportedHostPointerAlignment is the minimum requiredK alignment, in bytes, for the base address and size of host pointers that can( be imported to a Vulkan memory object.vulkanmemoryTypeBits] is a bitmask containing one bit set for every memory type which the specified host pointer can be imported as.vulkan handleType specifies the handle type.vulkan pHostPointer$ is the host pointer to import from.vulkanUvkGetMemoryHostPointerPropertiesEXT - Get properties of external memory host pointer Valid Usage handleType must be   or   pHostPointer must5 be a pointer aligned to an integer multiple of ::minImportedHostPointerAlignmentIf  handleType is  ,  pHostPointer must be a pointer to host memoryIf  handleType is  ,  pHostPointer must+ be a pointer to host mapped foreign memoryValid Usage (Implicit)device must be a valid  handle handleType must be a valid  valuepMemoryHostPointerProperties must be a valid pointer to a  structure Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , vulkandevice. is the logical device that will be importing  pHostPointer.vulkan handleType is the type of the handle  pHostPointer.vulkan pHostPointer$ is the host pointer to import from.None("#%&'-./1789;=>?FHIMSUVX_dghklmq0> vulkanVVkPipelineDiscardRectangleStateCreateInfoEXT - Structure specifying discard rectangle DescriptionIf the l0/ dynamic state is enabled for a pipeline, the pDiscardRectangles member is ignored.'When this structure is included in the pNext chain of 7Lb, it defines parameters of the discard rectangle test. If this structure is not included in the pNext> chain, it is equivalent to specifying this structure with a discardRectangleCount of 0.Valid Usage (Implicit)See Also, , p, vulkanVkPhysicalDeviceDiscardRectanglePropertiesEXT - Structure describing discard rectangle limits that can be supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alsovulkan>VkDiscardRectangleModeEXT - Specify the discard rectangle modeSee AlsovulkanGVkPipelineDiscardRectangleStateCreateFlagsEXT - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Alsovulkanflags is reserved for future use.flags must be 0vulkandiscardRectangleMode is a Q value determining whether the discard rectangle test is inclusive or exclusive.discardRectangleMode must be a valid  valuevulkanpDiscardRectangles is a pointer to an array of p) structures defining discard rectangles.vulkanmaxDiscardRectangles: is the maximum number of active discard rectangles that can be specified.vulkan9 specifies that the discard rectangle test is exclusive.vulkan9 specifies that the discard rectangle test is inclusive.vulkan@vkCmdSetDiscardRectangleEXT - Set discard rectangles dynamically Description.The discard rectangle taken from element i of pDiscardRectangles@ replace the current state for the discard rectangle at index firstDiscardRectangle + i, for i in [0, discardRectangleCount).ZThis command sets the state for a given draw when the graphics pipeline is created with l0 set in 7::pDynamicStates. Valid Usage The sum of firstDiscardRectangle and discardRectangleCount must be less than or equal to ::maxDiscardRectanglesThe x and y member of offset in each p element of pDiscardRectangles must be greater than or equal to 0Evaluation of (offset.x +  extent.width) in each p element of pDiscardRectangles must2 not cause a signed integer addition overflowEvaluation of (offset.y +  extent.height) in each p element of pDiscardRectangles must2 not cause a signed integer addition overflowValid Usage (Implicit) commandBuffer must be a valid  handlepDiscardRectangles must( be a valid pointer to an array of discardRectangleCount p structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operationsdiscardRectangleCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also, pvulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanfirstDiscardRectangleT is the index of the first discard rectangle whose state is updated by the command.vulkanpDiscardRectangles is a pointer to an array of p+ structures specifying discard rectangles.None("#%&'-./1789;=>?FHIMSUVX_dghklmq0πvulkanVkPhysicalDeviceConditionalRenderingFeaturesEXT - Structure describing if a secondary command buffer can be executed if conditional rendering is active in the primary command buffer DescriptionIf the  structure is included in the pNext chain of TO, it is filled with values indicating the implementation-dependent behavior.  can also be included in pNext chain of   to enable the features.Valid Usage (Implicit)See Alsoo, vulkan[VkConditionalRenderingBeginInfoEXT - Structure specifying conditional rendering begin info DescriptionIf the 32-bit value at offset in buffer memory is zero, then the rendering commands are discarded, otherwise they are executed as normal. If the value of the predicate in buffer memory changes while conditional rendering is active, the rendering commands may be discarded in an implementation-dependent way. Some implementations may latch the value of the predicate upon beginning conditional rendering while others may read it before every rendering command. Valid UsageIf buffer is non-sparse then it must7 be bound completely and contiguously to a single /8 objectbuffer must! have been created with the z1 bit setoffset must be less than the size of buffer by at least 32 bitsoffset must be a multiple of 4Valid Usage (Implicit)sType must be pNext must be NULLbuffer must be a valid  handleflags must be a valid combination of  valuesSee Also, , m, , $vulkanmVkCommandBufferInheritanceConditionalRenderingInfoEXT - Structure specifying command buffer inheritance info Description9If this structure is not present, the behavior is as if conditionalRenderingEnable is .. Valid Usage If the  thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedConditionalRenderinginherited conditional rendering feature is not enabled, conditionalRenderingEnable must be .Valid Usage (Implicit)sType must be See Alsoo, vulkanRVkConditionalRenderingFlagBitsEXT - Specify the behavior of conditional renderingSee AlsovulkanconditionalRendering7 specifies whether conditional rendering is supported.vulkaninheritedConditionalRendering/ specifies whether a secondary command buffer canR be executed while conditional rendering is active in the primary command buffer.vulkanconditionalRenderingEnable& specifies whether the command buffer can_ be executed while conditional rendering is active in the primary command buffer. If this is ., then this command buffer canf be executed whether the primary command buffer has active conditional rendering or not. If this is .#, then the primary command buffer must' not have conditional rendering active.vulkanbuffer@ is a buffer containing the predicate for conditional rendering.vulkanoffset is the byte offset into buffer! where the predicate is located. vulkanflags is a bitmask of 3 specifying the behavior of conditional rendering.#vulkan# specifies the condition used to determine whether to discard rendering commands or not. That is, if the 32-bit predicate read from buffer memory at offset_ is zero, the rendering commands are not discarded, and if non zero, then they are discarded.$vulkanZvkCmdBeginConditionalRenderingEXT - Define the beginning of a conditional rendering block Valid UsageConditional rendering must not already be jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-renderingactiveValid Usage (Implicit) commandBuffer must be a valid  handlepConditionalRenderingBegin must$ be a valid pointer to a valid  structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics Compute  See Also, %vulkan>This function will call the supplied action between calls to $ and & Note that &@ is *not* called if an exception is thrown by the inner action.&vulkanRvkCmdEndConditionalRenderingEXT - Define the end of a conditional rendering block Description3Once ended, conditional rendering becomes inactive. Valid UsageConditional rendering must be jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-renderingactive'If conditional rendering was made  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-renderingactive, outside of a render pass instance, it must0 not be ended inside a render pass instance'If conditional rendering was made  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-renderingactive within a subpass it must be ended in the same subpassValid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics Compute  See Also$vulkan commandBufferA is the command buffer into which this command will be recorded.vulkanpConditionalRenderingBegin is a pointer to a ; structure specifying parameters of conditional rendering.&vulkan commandBufferA is the command buffer into which this command will be recorded. #!"$%&$%& ##"!None("#%&'-./1789;=>?FHIMSUVX_dghklmq1 vulkan(VkTimeDomainEXT - Supported time domains Description estruct timespec tv; clock_gettime(CLOCK_MONOTONIC, &tv); return tv.tv_nsec + tv.tv_sec*1000000000ull; istruct timespec tv; clock_gettime(CLOCK_MONOTONIC_RAW, &tv); return tv.tv_nsec + tv.tv_sec*1000000000ull; RLARGE_INTEGER counter; QueryPerformanceCounter(&counter); return counter.QuadPart;See Also, NvulkaniVkCalibratedTimestampInfoEXT - Structure specifying the input parameters of a calibrated timestamp queryValid Usage (Implicit)See Also, , OGvulkan timeDomain is a ` value specifying the time domain from which the calibrated timestamp value should be returned. timeDomain must be one of the  values returned by N timeDomain must be a valid  valueJvulkanJ- specifies the performance counter (QPC) time domain available on Windows. Timestamp values in this time domain are in the same units as those provided by the Windows QueryPerformanceCounter API and are comparable with platform timestamp values captured using that API as computed by this example:KvulkanK specifies the CLOCK_MONOTONIC_RAW time domain available on POSIX platforms. Timestamp values in this time domain are in units of nanoseconds and are comparable with platform timestamp values captured using the POSIX clock_gettime API as computed by this example:LvulkanL specifies the CLOCK_MONOTONIC time domain available on POSIX platforms. Timestamp values in this time domain are in units of nanoseconds and are comparable with platform timestamp values captured using the POSIX clock_gettime API as computed by this example:MvulkanM specifies the device time domain. Timestamp values in this time domain use the same units and are comparable with device timestamp values captured using 7 and are defined to be incrementing according to the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-timestampPeriodtimestampPeriod of the device.NvulkanRvkGetPhysicalDeviceCalibrateableTimeDomainsEXT - Query calibrateable time domains DescriptionIf  pTimeDomains is NULLI, then the number of calibrateable time domains supported for the given physicalDevice is returned in pTimeDomainCount . Otherwise, pTimeDomainCount mustG point to a variable set by the user to the number of elements in the  pTimeDomainsb array, and on return the variable is overwritten with the number of values actually written to  pTimeDomains. If the value of pTimeDomainCountK is less than the number of calibrateable time domains supported, at most pTimeDomainCount values will be written to  pTimeDomains. If pTimeDomainCountS is smaller than the number of calibrateable time domains supported for the given physicalDevice,  will be returned instead of > to indicate that not all the available values were returned.Valid Usage (Implicit)physicalDevice must be a valid  handlepTimeDomainCount must be a valid pointer to a uint32_t valueIf the value referenced by pTimeDomainCount is not 0 , and  pTimeDomains is not NULL,  pTimeDomains must( be a valid pointer to an array of pTimeDomainCount  values Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, Ovulkan:vkGetCalibratedTimestampsEXT - Query calibrated timestamps DescriptionNoteThe maximum deviation may vary between calls to O even for the same set of time domains due to implementation and platform specific reasons. It is the application s responsibility to assess whether the returned maximum deviation makes the timestamp values suitable for any particular purpose and canU choose to re-issue the timestamp calibration call pursuing a lower devation value.Calibrated timestamp values can be extrapolated to estimate future coinciding timestamp values, however, depending on the nature of the time domains and other properties of the platform extrapolating values over a sufficiently long period of time may no longer be accurate enough to fit any particular purpose so applications are expected to re-calibrate the timestamps on a regular basis. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, NvulkanphysicalDeviceS is the physical device from which to query the set of calibrateable time domains.Ovulkandevice1 is the logical device used to perform the query.device must be a valid  handlevulkanpTimestampInfos is a pointer to an array of timestampCount \ structures, describing the time domains the calibrated timestamps should be captured from.pTimestampInfos must$ be a valid pointer to an array of timestampCount valid  structuresMLKJEFGCDHINONOFGMLKJEMLKJDICHNone("#%&'-./1789;=>?FHIMSUVX_dghklmq1svulkanHVkShaderInfoTypeAMD - Enum specifying which type of shader info to querySee Alsosvulkan`VkShaderStatisticsInfoAMD - Statistical information about a particular shader within a pipeline DescriptionkSome implementations may merge multiple logical shader stages together in a single shader. In such cases, shaderStageMask will contain a bitmask of all of the stages that are active within that shader. Consequently, if specifying those stages as input to s, the same output information may0 be returned for all such shader stage queries.)The number of available VGPRs and SGPRs (numAvailableVgprs and numAvailableSgprs respectively) are the shader-addressable subset of physical registers that is given as a limit to the compiler for register assignment. These values mayq further be limited by implementations due to performance optimizations where register pressure is a bottleneck.See Also, bvulkanbVkShaderResourceUsageAMD - Resource usage information about a particular shader within a pipelineSee AlsoavulkanshaderStageMaskL are the combination of logical shader stages contained within this shader.bvulkan resourceUsage is a N structure describing internal physical device resources used by this shader.cvulkannumPhysicalVgprsq is the maximum number of vector instruction general-purpose registers (VGPRs) available to the physical device.dvulkannumPhysicalSgprsq is the maximum number of scalar instruction general-purpose registers (SGPRs) available to the physical device.evulkannumAvailableVgprsF is the maximum limit of VGPRs made available to the shader compiler.fvulkannumAvailableSgprsF is the maximum limit of SGPRs made available to the shader compiler.gvulkancomputeWorkGroupSizeG is the local workgroup size of this shader in { X, Y, Z } dimensions.ivulkan numUsedVgprsT is the number of vector instruction general-purpose registers used by this shader.jvulkan numUsedSgprsT is the number of scalar instruction general-purpose registers used by this shader.kvulkanldsSizePerLocalWorkGroup? is the maximum local data store size per work group in bytes.lvulkanldsUsageSizeInBytes? is the LDS usage size in bytes per work group by this shader.mvulkanscratchMemUsageInBytes6 is the scratch memory usage in bytes by this shader.pvulkanp9 specifies that human-readable dissassembly of a shader.qvulkanqE specifies that implementation-specific information will be queried.rvulkanrC specifies that device resources used by a shader will be queried.svulkanAvkGetShaderInfoAMD - Get information about a shader in a pipeline DescriptionIf pInfo is NULL1, then the maximum size of the information that can: be retrieved about the shader, in bytes, is returned in  pInfoSize . Otherwise,  pInfoSize mustY point to a variable set by the user to the size of the buffer, in bytes, pointed to by pInfoZ, and on return the variable is overwritten with the amount of data actually written to pInfo.If  pInfoSize$ is less than the maximum size that can3 be retrieved by the pipeline cache, then at most  pInfoSize bytes will be written to pInfo, and s will return .Not all information is available for every shader and implementations may not support all kinds of information for any shader. When a certain type of information is unavailable, the function returns .LIf information is successfully and fully queried, the function will return .For infoType r, a 8 structure will be written to the buffer pointed to by pInfo. This structure will be populated with statistics regarding the physical device resources used by that shader along with other miscellaneous information and is described in further detail below.For infoType p, pInfo is a pointer to a UTF-8 null-terminated string containing human-readable disassembly. The exact formatting and contents of the disassembly string are vendor-specific.JThe formatting and contents of all other types of information, including infoType qJ, are left to the vendor and are not further specified by this extension.Valid Usage (Implicit)device must be a valid  handlepipeline must be a valid ~ handle shaderStage must be a valid c valueinfoType must be a valid  value pInfoSize must be a valid pointer to a size_t valueIf the value referenced by  pInfoSize is not 0, and pInfo is not NULL, pInfo must( be a valid pointer to an array of  pInfoSize bytespipeline must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, ~, , csvulkandevice is the device that created pipeline.vulkanpipeline is the target of the query.vulkan shaderStage` identifies the particular shader within the pipeline about which information is being queried.vulkaninfoType5 describes what kind of information is being queried.rqp_`abcdefghijklm]^nosshijklm`abcdefgrqp_rqp^o]nNone("#%&'-./1789;=>?FHIMSUVX_dghklmq1VvulkanVvkCmdWriteBufferMarkerAMD - Execute a pipelined write of a marker value into a buffer DescriptionThe command will write the 32-bit marker value into the buffer only after all preceding commands have finished executing up to at least the specified pipeline stage. This includes the completion of other preceding ~ commands so long as their specified pipeline stages occur either at the same time or earlier than this command s specified  pipelineStage.5While consecutive buffer marker writes with the same  pipelineStage parameter are implicitly complete in submission order, memory and execution dependencies between buffer marker writes and other operations must still be explicitly ordered using synchronization commands. The access scope for buffer marker writes falls under the 2E, and the pipeline stages for identifying the synchronization scope must include both  pipelineStage and  t.Note Similar to X, if an implementation is unable to write a marker at any specific pipeline stage, it may, instead do so at any logically later stage.NoteImplementations may only support a limited number of pipelined marker write operations in flight at a given time, thus excessive number of marker write operations may' degrade command execution performance. Valid Usage pipelineStage must be a  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported valid stageN for the queue family that was used to create the command pool that  commandBuffer was allocated from  If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  pipelineStage must not be  z If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  pipelineStage must not be  | or  { If the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled,  pipelineStage must not be  h If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled,  pipelineStage must not be  n If the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled,  pipelineStage must not be  g If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  pipelineStage must not be  m or  l If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled,  pipelineStage must not be  k dstOffset must& be less than or equal to the size of  dstBuffer minus 4 dstBuffer must have been created with z3 usage flagIf  dstBuffer is non-sparse then it must7 be bound completely and contiguously to a single /8 object dstOffset must be a multiple of 4Valid Usage (Implicit) commandBuffer must be a valid  handle pipelineStage must be a valid X value dstBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must7 support transfer, graphics, or compute operationsBoth of  commandBuffer, and  dstBuffer must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type v Primary Secondary j Both g Transfer Graphics Compute  Transfer See Also, , m, Xvulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkan pipelineStage is one of the XT values, specifying the pipeline stage whose completion triggers the marker write.vulkan dstBuffer3 is the buffer where the marker will be written to.vulkan dstOffsetI is the byte offset into the buffer where the marker will be written to.vulkanmarker# is the 32-bit value of the marker.mNone("#%&'-./1789;=>?FHIMSUVX_dghklmq2{BvulkandVkTimelineSemaphoreSubmitInfo - Structure specifying signal and wait values for timeline semaphores DescriptionIf the semaphore in ;N::pWaitSemaphores or ;N::pSignalSemaphores corresponding to an entry in pWaitSemaphoreValues or pSignalSemaphoreValues' respectively was not created with a j of l, the implementation must ignore the value in the pWaitSemaphoreValues or pSignalSemaphoreValues entry.Valid Usage (Implicit)sType must be mIf waitSemaphoreValueCount is not 0, and pWaitSemaphoreValues is not NULL, pWaitSemaphoreValues must( be a valid pointer to an array of waitSemaphoreValueCount uint64_t valuesIf signalSemaphoreValueCount is not 0 , and pSignalSemaphoreValues is not NULL, pSignalSemaphoreValues must# be a valid pointer to an array of signalSemaphoreValueCount uint64_t valuesSee AlsoCvulkanZVkSemaphoreWaitInfo - Structure containing information about the semaphore wait condition Valid UsageAll of the elements of  pSemaphores must9 reference a semaphore that was created with a j of lValid Usage (Implicit)sType must be npNext must be NULLflags must be a valid combination of   values pSemaphores must( be a valid pointer to an array of semaphoreCount valid v handlespValues must# be a valid pointer to an array of semaphoreCount uint64_t valuessemaphoreCount must be greater than 0See Alsov,  , , , DvulkanWVkSemaphoreTypeCreateInfo - Structure specifying the type of a newly created semaphoreValid Usage (Implicit)sType must be l semaphoreType must be a valid j value Valid Usage If the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-timelineSemaphoretimelineSemaphore feature is not enabled,  semaphoreType must not equal lIf  semaphoreType is m,  initialValue must be zeroIf no D structure is included in the pNext chain of <C3, then the created semaphore will have a default j of m.See Alsoj, Evulkan\VkSemaphoreSignalInfo - Structure containing information about a semaphore signal operationValid Usage (Implicit)See Alsov, , , FvulkanVkPhysicalDeviceTimelineSemaphoreProperties - Structure describing timeline semaphore properties that can be supported by an implementationMembersThe members of the FC structure describe the following implementation-dependent limits:Valid Usage (Implicit)See AlsoGvulkanVkPhysicalDeviceTimelineSemaphoreFeatures - Structure describing timeline semaphore features that can be supported by an implementationMembersThe members of the G, structure describe the following features: DescriptionIf the G structure is included in the pNext chain of TK, it is filled with values indicating whether each feature is supported. G can also be included in the pNext chain of   to enable features.Valid Usage (Implicit)See Alsoo, vulkan semaphore* is the handle of the semaphore to signal. semaphore must have been created with a j of l semaphore must be a valid v handlevulkanvalue is the value to signal.value must> have a value greater than the current value of the semaphorevalue mustC be less than the value of any pending semaphore signal operationsvalue must have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on  semaphore by more than xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference#maxTimelineSemaphoreValueDifferencevulkanflags is a bitmask of  D specifying additional parameters for the semaphore wait operation.vulkan pSemaphores is a pointer to an array of semaphoreCount semaphore handles to wait on.vulkanpValues is a pointer to an array of semaphoreCount timeline semaphore values.vulkanwaitSemaphoreValueCount6 is the number of semaphore wait values specified in pWaitSemaphoreValues.vulkanpWaitSemaphoreValues is an array of length waitSemaphoreValueCount9 containing values for the corresponding semaphores in ;N::pWaitSemaphores to wait for.vulkansignalSemaphoreValueCount8 is the number of semaphore signal values specified in pSignalSemaphoreValues.vulkanpSignalSemaphoreValues is an array of length signalSemaphoreValueCount8 containing values for the corresponding semaphores in ;N::pSignalSemaphores to set when signaled.vulkan semaphoreType is a j- value specifying the type of the semaphore.vulkan initialValue! is the initial payload value if  semaphoreType is l.vulkan#maxTimelineSemaphoreValueDifference indicates the maximum difference allowed by the implementation between the current value of a timeline semaphore and any pending signal or wait operations.vulkantimelineSemaphore. indicates whether semaphores created with a j of l are supported.vulkanMvkGetSemaphoreCounterValue - Query the current state of a timeline semaphore DescriptionNoteIf a  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submissionqueue submissionI command is pending execution, then the value returned by this command may immediately be out of date. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, v2nvulkan'waitSemaphores with selectable safenessvulkan;vkWaitSemaphores - Wait for timeline semaphores on the host Description#If the condition is satisfied when  is called, then E returns immediately. If the condition is not satisfied at the time  is called, then  will block and wait up to timeout4 nanoseconds for the condition to become satisfied.If timeout is zero, then [ does not wait, but simply returns information about the current state of the semaphore. m will be returned in this case if the condition is not satisfied, even though no actual wait was performed.LIf the specified timeout period expires before the condition is satisfied,  returns (. If the condition is satisfied before timeout nanoseconds has expired,  returns .If device loss occurs (see  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device#) before the timeout has expired,  must$ return in finite time with either  or . Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, Cvulkan A variant of  which makes a *safe* FFI callvulkan;vkSignalSemaphore - Signal a timeline semaphore on the host DescriptionWhen B is executed on the host, it defines and immediately executes a  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operation7 which sets the timeline semaphore to the given value.cThe first synchronization scope is defined by the host execution model, but includes execution of 3 on the host and anything that happened-before it.*The second synchronization scope is empty. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, Evulkandevice/ is the logical device that owns the semaphore.device must be a valid  handlevulkan semaphore) is the handle of the semaphore to query. semaphore must have been created with a j of l semaphore must be a valid v handle semaphore must2 have been created, allocated, or retrieved from device2nvulkandevice/ is the logical device that owns the semaphore.device must be a valid  handlevulkan pWaitInfo is a pointer to a C< structure containing information about the wait condition. pWaitInfo must be a valid pointer to a valid C structurevulkantimeout0 is the timeout period in units of nanoseconds. timeoutd is adjusted to the closest value allowed by the implementation-dependent timeout accuracy, which may3 be substantially longer than one nanosecond, and may% be longer than the requested period.vulkandevice/ is the logical device that owns the semaphore.device must be a valid  handlevulkan pWaitInfo is a pointer to a C< structure containing information about the wait condition. pWaitInfo must be a valid pointer to a valid C structurevulkantimeout0 is the timeout period in units of nanoseconds. timeoutd is adjusted to the closest value allowed by the implementation-dependent timeout accuracy, which may3 be substantially longer than one nanosecond, and may% be longer than the requested period.vulkandevice/ is the logical device that owns the semaphore.device must be a valid  handlevulkan pWaitInfo is a pointer to a C< structure containing information about the wait condition. pWaitInfo must be a valid pointer to a valid C structurevulkantimeout0 is the timeout period in units of nanoseconds. timeoutd is adjusted to the closest value allowed by the implementation-dependent timeout accuracy, which may3 be substantially longer than one nanosecond, and may% be longer than the requested period.vulkandevice/ is the logical device that owns the semaphore.device must be a valid  handlevulkan pSignalInfo is a pointer to a E> structure containing information about the signal operation. pSignalInfo must be a valid pointer to a valid E structureBCDEFGjkml~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!          GFDBCE~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      jkmlml   None("#%&'-./1789;=>?FHIMSUVX_dghklmq2qgNone("#%&'-./1789;=>?FHIMSUVX_dghklmq2ƚ 7vulkandVkRenderPassAttachmentBeginInfo - Structure specifying images to be used as framebuffer attachments Valid UsageEach element of  pAttachments must% only specify a single mip levelEach element of  pAttachments must1 have been created with the identity swizzleEach element of  pAttachments must have been created with 1`::viewType not equal to `Valid Usage (Implicit)sType must be cIf attachmentCount is not 0,  pAttachments must( be a valid pointer to an array of attachmentCount valid  handlesSee Also, 8vulkangVkPhysicalDeviceImagelessFramebufferFeatures - Structure indicating support for imageless framebuffersMembersThe members of the 8, structure describe the following features: DescriptionIf the 8 structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported. 8 can also be included in the pNext chain of   to enable this feature.Valid Usage (Implicit)See Alsoo, 9vulkantVkFramebufferAttachmentsCreateInfo - Structure specifying parameters of images that will be used with a framebufferValid Usage (Implicit)sType must be aIf attachmentImageInfoCount is not 0, pAttachmentImageInfos must# be a valid pointer to an array of attachmentImageInfoCount valid : structuresSee Also:, :vulkantVkFramebufferAttachmentImageInfo - Structure specifying parameters of an image that will be used with a framebuffer Description Images that canM be used with the framebuffer when beginning a render pass, as specified by 7, mustH be created with parameters that are identical to those specified here.Valid Usage (Implicit)sType must be bpNext must be NULLflags must be a valid combination of 4 valuesusage must be a valid combination of g valuesusage must not be 0If viewFormatCount is not 0,  pViewFormats must( be a valid pointer to an array of viewFormatCount valid J valuesSee AlsoJ, 9, L, Q, vulkan pAttachments is a pointer to an array of b handles, each of which will be used as the corresponding attachment in the render pass instance.vulkanflags is a bitmask of 4, matching the value of 0::flagsB used to create an image that will be used with this framebuffer.vulkanusage is a bitmask of g, matching the value of 0::usage5 used to create an image used with this framebuffer.vulkanwidth3 is the width of the image view used for rendering.vulkanheight4 is the height of the image view used for rendering.vulkan pViewFormats. is an array which lists of all formats which canC be used when creating views of the image, matching the value of fUC::pViewFormats used to create an image used with this framebuffer.vulkanpAttachmentImageInfos is a pointer to an array of :w instances, each of which describes a number of parameters of the corresponding attachment in a render pass instance.vulkanimagelessFramebufferv indicates that the implementation supports specifying the image view for attachments at render pass begin time via 7.789:~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      89:7~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      None("#%&'-./1789;=>?FHIMSUVX_dghklmq2t            None("#%&'-./1789;=>?FHIMSUVX_dghklmq4vulkan\vkCmdDrawIndirectCount - Perform an indirect draw with the draw count sourced from a buffer Description behaves similarly to  except that the draw count is read by the device from a buffer during execution. The command will read an unsigned 32-bit integer from  countBuffer located at countBufferOffset and use this as the draw count. Valid UsageIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain g,If a /b is accessed using atomic operations as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain gIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any / being sampled with " as a result of this command must have a `E and format that supports cubic filtering, as specified by A:: filterCubic returned by TcAny / being sampled with + with a reduction mode of either  or " as a result of this command must have a `i and format that supports cubic filtering together with minmax filtering, as specified by A::filterCubicMinmax returned by TcAny /: created with a 0::flags containing * sampled as a result of this command must only be sampled using a % of % For each set n% that is statically used by the /)N bound to the pipeline bind point used by this command, a descriptor set must have been bound to n3 at the same pipeline bind point, with a /! that is compatible for set n , with the /! used to create the current /), as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the /)S bound to the pipeline bind point used by this command, a push constant value mustB have been set for the same pipeline bind point, with a /6 that is compatible for push constants, with the /! used to create the current /), as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via ., must7 be valid if they are statically used by the /); bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the /)o object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the /)a object bound to the pipeline bind point used by this command, since that pipeline was boundIf the /)S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must% not be used to sample from any /: with a / of the type `, `, `, `| or `, in any shader stageIf the /)S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stageIf the /)S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample*U instructions that includes a LOD bias or any offset values, in any shader stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the /)f object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the /)f object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the /)C object bound to the pipeline bind point used by this command must! not be a protected resourceIf a / is accessed using  OpImageWrite' as a result of this command, then the Type of the Texel operand of that instruction mustB have at least as many components as the image view s format.The current render pass must be  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 7L, structure specified when creating the /) bound to  -The subpass index of the current render pass must be equal to the subpass member of the 7L, structure specified when creating the /) bound to  3Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor setGImage subresources used as attachments in the current render pass mustL not be accessed in any way other than as an attachment by this commandjIf the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to W::maxMultiviewInstanceIndex5If the bound graphics pipeline was created with ::sampleLocationsEnable set to .S and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set?If the bound graphics pipeline state was created with the l . dynamic state enabled, but not the l , dynamic state enabled, then then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the 7":: scissorCount of the pipeline?If the bound graphics pipeline state was created with the l . dynamic state enabled, but not the l , dynamic state enabled, then then  mustY have been called in the current command buffer prior to this draw command, and the  scissorCount parameter of  must match the 7":: viewportCount of the pipelineDIf the bound graphics pipeline state was created with both the l  and l , dynamic states enabled then both  and  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the  scissorCount parameter of ?If the bound graphics pipeline state was created with the l & dynamic state enabled then  mustY have been called in the current command buffer prior to this draw command, and the primitiveTopology parameter of  must be of the same  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class as the pipeline 7::topology stateyAll vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must have either valid or  buffers bound If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must not be >For a given vertex buffer binding, any attribute data fetched mustf be entirely contained within the corresponding vertex buffer binding, as described in \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input???If buffer is non-sparse then it must7 be bound completely and contiguously to a single /8 objectbuffer must! have been created with the z bit setoffset must be a multiple of 4 commandBuffer must" not be a protected command bufferIf  countBuffer is non-sparse then it must7 be bound completely and contiguously to a single /8 object countBuffer must! have been created with the z bit setcountBufferOffset must be a multiple of 4The count stored in  countBuffer must be less than or equal to  l::maxDrawIndirectCountstride must be a multiple of 4 and must) be greater than or equal to sizeof(55)If  maxDrawCount is greater than or equal to 1, (stride ( maxDrawCount - 1) + offset + sizeof(55)) must+ be less than or equal to the size of bufferIf the count stored in  countBuffer is equal to 1, (offset + sizeof(55)) must+ be less than or equal to the size of bufferIf the count stored in  countBuffer is greater than 1, (stride ( drawCount - 1) + offset + sizeof(55)) must+ be less than or equal to the size of bufferIf  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectCountdrawIndirectCount# is not enabled this function must not be usedValid Usage (Implicit) commandBuffer must be a valid  handlebuffer must be a valid  handle countBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations This command must0 only be called inside of a render pass instanceEach of buffer,  commandBuffer, and  countBuffer mustD have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Inside  Graphics  Graphics See Also, , mvulkankvkCmdDrawIndexedIndirectCount - Perform an indexed indirect draw with the draw count sourced from a buffer Description behaves similarly to  except that the draw count is read by the device from a buffer during execution. The command will read an unsigned 32-bit integer from  countBuffer located at countBufferOffset and use this as the draw count. Valid UsageIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain g+If a /b is accessed using atomic operations as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain gIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any / being sampled with " as a result of this command must have a `E and format that supports cubic filtering, as specified by A:: filterCubic returned by TcAny / being sampled with + with a reduction mode of either  or " as a result of this command must have a `i and format that supports cubic filtering together with minmax filtering, as specified by A::filterCubicMinmax returned by TcAny /: created with a 0::flags containing * sampled as a result of this command must only be sampled using a % of % For each set n% that is statically used by the /)N bound to the pipeline bind point used by this command, a descriptor set must have been bound to n3 at the same pipeline bind point, with a /! that is compatible for set n , with the /! used to create the current /), as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the /)S bound to the pipeline bind point used by this command, a push constant value mustB have been set for the same pipeline bind point, with a /6 that is compatible for push constants, with the /! used to create the current /), as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via ., must7 be valid if they are statically used by the /); bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the /)o object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the /)a object bound to the pipeline bind point used by this command, since that pipeline was boundIf the /)S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must% not be used to sample from any /: with a / of the type `, `, `, `| or `, in any shader stageIf the /)S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stageIf the /)S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample*U instructions that includes a LOD bias or any offset values, in any shader stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the /)f object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the /)f object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the /)C object bound to the pipeline bind point used by this command must! not be a protected resourceIf a / is accessed using  OpImageWrite' as a result of this command, then the Type of the Texel operand of that instruction mustB have at least as many components as the image view s format.The current render pass must be  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 7L, structure specified when creating the /) bound to  -The subpass index of the current render pass must be equal to the subpass member of the 7L, structure specified when creating the /) bound to  3Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor setGImage subresources used as attachments in the current render pass mustL not be accessed in any way other than as an attachment by this commandjIf the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to W::maxMultiviewInstanceIndex5If the bound graphics pipeline was created with ::sampleLocationsEnable set to .S and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set?If the bound graphics pipeline state was created with the l . dynamic state enabled, but not the l , dynamic state enabled, then then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the 7":: scissorCount of the pipeline?If the bound graphics pipeline state was created with the l . dynamic state enabled, but not the l , dynamic state enabled, then then  mustY have been called in the current command buffer prior to this draw command, and the  scissorCount parameter of  must match the 7":: viewportCount of the pipelineDIf the bound graphics pipeline state was created with both the l  and l , dynamic states enabled then both  and  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the  scissorCount parameter of ?If the bound graphics pipeline state was created with the l & dynamic state enabled then  mustY have been called in the current command buffer prior to this draw command, and the primitiveTopology parameter of  must be of the same  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class as the pipeline 7::topology stateyAll vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must have either valid or  buffers bound If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must not be >For a given vertex buffer binding, any attribute data fetched mustf be entirely contained within the corresponding vertex buffer binding, as described in \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input???If buffer is non-sparse then it must7 be bound completely and contiguously to a single /8 objectbuffer must! have been created with the z bit setoffset must be a multiple of 4 commandBuffer must" not be a protected command bufferIf  countBuffer is non-sparse then it must7 be bound completely and contiguously to a single /8 object countBuffer must! have been created with the z bit setcountBufferOffset must be a multiple of 4The count stored in  countBuffer must be less than or equal to  l::maxDrawIndirectCountstride must be a multiple of 4 and must. be greater than or equal to sizeof(56)If  maxDrawCount is greater than or equal to 1, (stride ( maxDrawCount - 1) + offset + sizeof(56)) must& be less than or equal to the size of bufferIf count stored in  countBuffer is equal to 1, (offset + sizeof(56)) must& be less than or equal to the size of bufferIf count stored in  countBuffer is greater than 1, (stride ( drawCount - 1) + offset + sizeof(56)) must& be less than or equal to the size of bufferValid Usage (Implicit) commandBuffer must be a valid  handlebuffer must be a valid  handle countBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations This command must0 only be called inside of a render pass instanceEach of buffer,  commandBuffer, and  countBuffer mustD have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Inside  Graphics  Graphics See Also, , mvulkan commandBuffer; is the command buffer into which the command is recorded.vulkanbuffer* is the buffer containing draw parameters.vulkanoffset is the byte offset into buffer where parameters begin.vulkan countBuffer) is the buffer containing the draw count.vulkancountBufferOffset is the byte offset into  countBuffer where the draw count begins.vulkan maxDrawCount specifies the maximum number of draws that will be executed. The actual number of executed draw calls is the minimum of the count specified in  countBuffer and  maxDrawCount.vulkanstride? is the byte stride between successive sets of draw parameters.vulkan commandBuffer; is the command buffer into which the command is recorded.vulkanbuffer* is the buffer containing draw parameters.vulkanoffset is the byte offset into buffer where parameters begin.vulkan countBuffer) is the buffer containing the draw count.vulkancountBufferOffset is the byte offset into  countBuffer where the draw count begins.vulkan maxDrawCount specifies the maximum number of draws that will be executed. The actual number of executed draw calls is the minimum of the count specified in  countBuffer and  maxDrawCount.vulkanstride? is the byte stride between successive sets of draw parameters.None("#%&'-./1789;=>?FHIMSUVX_dghklmq4UNone("#%&'-./1789;=>?FHIMSUVX_dghklmq4bNone("#%&'-./1789;=>?FHIMSUVX_dghklmq5Q&vulkanVkPhysicalDeviceBufferDeviceAddressFeatures - Structure describing buffer address features that can be supported by an implementationMembersThe members of the &, structure describe the following features: DescriptionNotebufferDeviceAddressMultiDeviceA exists to allow certain legacy platforms to be able to support bufferDeviceAddressZ without needing to support shared GPU virtual addresses for multi-device configurations.See , for more information.If the & structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported. & can also be included in the pNext chain of   to enable features.Valid Usage (Implicit)See Alsoo, 'vulkan^VkMemoryOpaqueCaptureAddressAllocateInfo - Request a specific address for a memory allocation DescriptionIf opaqueCaptureAddress+ is zero, no specific address is requested.If opaqueCaptureAddress is not zero, it should be an address retrieved from -I on an identically created memory allocation on the same implementation.Note.In most cases, it is expected that a non-zero  opaqueAddress is an address retrieved from -Y on an identically created memory allocation. If this is not the case, it likely that  errors will occur.This is, however, not a strict requirement because trace capture/replay tools may need to adjust memory allocation parameters for imported memory..If this structure is not present, it is as if opaqueCaptureAddress is zero.Valid Usage (Implicit)See Also(vulkanhVkDeviceMemoryOpaqueCaptureAddressInfo - Structure specifying the memory object to query an address forValid Usage (Implicit)See Also, , -, )vulkanQVkBufferOpaqueCaptureAddressCreateInfo - Request a specific address for a buffer DescriptionIf opaqueCaptureAddress+ is zero, no specific address is requested.If opaqueCaptureAddress is not zero, then it should be an address retrieved from +? for an identically created buffer on the same implementation..If this structure is not present, it is as if opaqueCaptureAddress is zero.Apps should avoid creating buffers with app-provided addresses and implementation-provided addresses in the same process, to reduce the likelihood of  errors.NoteOThe expected usage for this is that a trace capture/replay tool will add the  flag to all buffers that use , and during capture will save the queried opaque device addresses in the trace. During replay, the buffers will be created specifying the original address so any address values stored in the trace data will remain valid.Implementations are expected to separate such buffers in the GPU address space so normal allocations will avoid using these addresses. Apps/tools should avoid mixing app-provided and implementation-provided addresses for buffers created with /, to avoid address space allocation conflicts.Valid Usage (Implicit)See Also*vulkanTVkBufferDeviceAddressInfo - Structure specifying the buffer to query an address for Valid UsageIf buffer1 is non-sparse and was not created with the  flag, then it must7 be bound completely and contiguously to a single  objectbuffer must have been created with Valid Usage (Implicit)sType must be qpNext must be NULLbuffer must be a valid  handleSee Also, , ,, , , +,  vulkanmemory5 specifies the memory whose address is being queried.memory must have been allocated with  memory must be a valid  handle"vulkanopaqueCaptureAddressD is the opaque capture address requested for the memory allocation.$vulkanopaqueCaptureAddress9 is the opaque capture address requested for the buffer.&vulkanbuffer5 specifies the buffer whose address is being queried.(vulkanbufferDeviceAddress indicates that the implementation supports accessing buffer memory in shaders as storage buffers via an address queried from ,.)vulkan bufferDeviceAddressCaptureReplay indicates that the implementation supports saving and reusing buffer and device addresses, e.g. for trace capture and replay.*vulkanbufferDeviceAddressMultiDevice1 indicates that the implementation supports the bufferDeviceAddress and  rayTracing features for logical devices created with multiple physical devices. If this feature is not supported, buffer and acceleration structure addresses mustP not be queried on a logical device created with more than one physical device.+vulkanNvkGetBufferOpaqueCaptureAddress - Query an opaque capture address of a buffer DescriptionFThe 64-bit return value is an opaque capture address of the start of  pInfo->buffer.4If the buffer was created with a non-zero value of )::opaqueCaptureAddress the return value must be the same address. Valid Usage The  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressbufferDeviceAddress feature must be enabledIf device; was created with multiple physical devices, then the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevicebufferDeviceAddressMultiDevice feature must be enabledValid Usage (Implicit)device must be a valid  handlepInfo must$ be a valid pointer to a valid * structureSee Also*, ,vulkan7vkGetBufferDeviceAddress - Query an address of a buffer Description6The 64-bit return value is an address of the start of  pInfo->bufferV. The address range starting at this value and whose size is the size of the buffer canK be used in a shader to access the memory bound to that buffer, using the SPV_KHR_physical_storage_buffer extension or the equivalent SPV_EXT_physical_storage_buffer extension and the PhysicalStorageBuffer( storage class. For example, this value can0 be stored in a uniform buffer, and the shader can read the value from the uniform buffer and use it to do a dependent read/write to this buffer. A value of zero is reserved as a null  pointer and musth not be returned as a valid buffer device address. All loads, stores, and atomics in a shader through PhysicalStorageBuffer pointers must7 access addresses in the address range of some buffer.4If the buffer was created with a non-zero value of )::opaqueCaptureAddress or :: deviceAddressO the return value will be the same address that was returned at capture time. Valid Usage The  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressbufferDeviceAddress or  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressEXT::bufferDeviceAddress feature must be enabledIf device; was created with multiple physical devices, then the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevicebufferDeviceAddressMultiDevice or  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDeviceEXT ::bufferDeviceAddressMultiDevice feature must be enabledValid Usage (Implicit)device must be a valid  handlepInfo must$ be a valid pointer to a valid * structureSee Also*, -vulkan[vkGetDeviceMemoryOpaqueCaptureAddress - Query an opaque capture address of a memory object DescriptionHThe 64-bit return value is an opaque address representing the start of  pInfo->memory.=If the memory object was allocated with a non-zero value of '::opaqueCaptureAddress, the return value must be the same address.NoteThe expected usage for these opaque addresses is only for trace capture/replay tools to store these addresses in a trace and subsequently specify them during replay. Valid Usage The  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressbufferDeviceAddress feature must be enabledIf device; was created with multiple physical devices, then the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevicebufferDeviceAddressMultiDevice feature must be enabledValid Usage (Implicit)device must be a valid  handlepInfo must$ be a valid pointer to a valid ( structureSee Also, (+vulkandevice6 is the logical device that the buffer was created on.vulkanpInfo is a pointer to a *= structure specifying the buffer to retrieve an address for.,vulkandevice6 is the logical device that the buffer was created on.vulkanpInfo is a pointer to a *= structure specifying the buffer to retrieve an address for.-vulkandevice? is the logical device that the memory object was allocated on.vulkanpInfo is a pointer to a (D structure specifying the memory object to retrieve an address for._&'()*'!"( )#$*%&~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!          +,- +,-&'()**%&)#$'!"( ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      _       None("#%&'-./1789;=>?FHIMSUVX_dghklmq50SQRSTUVWXYZ[\]^_`abcdefcba`_^]\[ZdefWVUTSRYQXNone("#%&'-./1789;=>?FHIMSUVX_dghklmq5U vulkanVkPhysicalDeviceBufferDeviceAddressFeaturesEXT - Structure describing buffer address features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of   to enable features.NoteThe ) structure has the same members as the bv structure, but the functionality indicated by the members is expressed differently. The features indicated by the b structure requires additional flags to be passed at memory allocation time, and the capture and replay mechanism is built around opaque capture addresses for buffer and memory objects.Valid Usage (Implicit)See Alsoo, vulkanMVkBufferDeviceAddressCreateInfoEXT - Request a specific address for a buffer DescriptionIf  deviceAddress+ is zero, no specific address is requested.If  deviceAddress is not zero, then it muste be an address retrieved from an identically created buffer on the same implementation. The buffer must* also be bound to an identically created /8 object..If this structure is not present, it is as if  deviceAddress is zero.Apps should avoid creating buffers with app-provided addresses and implementation-provided addresses in the same process, to reduce the likelihood of s errors.Valid Usage (Implicit)See Alson, lvulkan deviceAddress0 is the device address requested for the buffer.nvulkanbufferDeviceAddress indicates that the implementation supports accessing buffer memory in shaders as storage buffers via an address queried from x.ovulkan bufferDeviceAddressCaptureReplayu indicates that the implementation supports saving and reusing buffer addresses, e.g. for trace capture and replay.pvulkanbufferDeviceAddressMultiDevice1 indicates that the implementation supports the bufferDeviceAddressz feature for logical devices created with multiple physical devices. If this feature is not supported, buffer addresses mustP not be queried on a logical device created with more than one physical device.mnopklghijqrstuvwxwvutsxmnopkljihrgq]None("#%&'-./1789;=>?FHIMSUVX_dghklmq5v vulkaniVkPhysicalDeviceHostQueryResetFeatures - Structure describing whether queries can be reset from the hostMembersThe members of the  , structure describe the following features: DescriptionIf the   structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported.   can also be included in the pNext chain of   to enable features.Valid Usage (Implicit)See Alsoo, vulkanhostQueryResetR indicates that the implementation supports resetting queries from the host with .vulkan0vkResetQueryPool - Reset queries in a query pool Description/This command sets the status of query indices [ firstQuery,  firstQuery +  queryCount - 1] to unavailable.If  queryPool is #*1 this command sets the status of query indices [ firstQuery,  firstQuery +  queryCount# - 1] to unavailable for each pass. Valid Usage The  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-hostQueryResethostQueryReset feature must be enabled firstQuery must, be less than the number of queries in  queryPool The sum of  firstQuery and  queryCount must8 be less than or equal to the number of queries in  queryPool8Submitted commands that refer to the range specified by  firstQuery and  queryCount in  queryPool must have completed execution"The range of queries specified by  firstQuery and  queryCount in  queryPool must not be in use by calls to : or  in other threadsValid Usage (Implicit)device must be a valid  handle queryPool must be a valid { handle queryPool must6 have been created, allocated, or retrieved from deviceSee Also, {vulkandevice0 is the logical device that owns the query pool.vulkan queryPoolC is the handle of the query pool managing the queries being reset.vulkan firstQuery% is the initial query index to reset.vulkan queryCount# is the number of queries to reset. ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      v ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      None("#%&'-./1789;=>?FHIMSUVX_dghklmq5None("#%&'-./1789;=>?FHIMSUVX_dghklmq5Pvulkan'vkTrimCommandPool - Trim a command pool DescriptionTrimming a command pool recycles unused memory from the command pool back to the system. Command buffers allocated from the pool are not affected by the command.NoteqThis command provides applications with some control over the internal memory allocations used by command pools.'Unused memory normally arises from command buffers that have been recorded and later reset, such that they are no longer using the memory. On reset, a command buffer can return memory to its command pool, but the only way to release memory from a command pool to the system requires calling  , which cannot be executed while any command buffers from that pool are still in use. Subsequent recording operations into command buffers will re-use this memory but since total memory requirements fluctuate over time, unused memory can accumulate.+In this situation, trimming a command pool may be useful to return unused memory back to the system, returning the total outstanding memory allocated by the pool back to a more average  value.Implementations utilize many internal allocation strategies that make it impossible to guarantee that all unused memory is released back to the system. For instance, an implementation of a command pool may+ involve allocating memory in bulk from the system and sub-allocating from that memory. In such an implementation any live command buffer that holds a reference to a bulk allocation would prevent that allocation from being freed, even if only a small proportion of the bulk allocation is in use.In most cases trimming will result in a reduction in allocated but unused memory, but it does not guarantee the ideal  behavior. Trimming may be an expensive operation, and should% not be called frequently. Trimming should be treated as a way to relieve memory pressure after application-known points when there exists enough unused memory that the cost of trimming is worth  it.Valid Usage (Implicit)device must be a valid  handle commandPool must be a valid  handleflags must be 0 commandPool must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  commandPool must be externally synchronizedSee Also, , vulkandevice2 is the logical device that owns the command pool.vulkan commandPool is the command pool to trim.vulkanflags is reserved for future use.[LMBQPONMLKJIHGFEDC_ # #_MBQPONMLKJIHGFEDCQPONMLKJIHGFEDCLNone("#%&'-./1789;=>?FHIMSUVX_dghklmq5  PNone("#%&'-./1789;=>?FHIMSUVX_dghklmq6<vulkanWVkPhysicalDeviceIDProperties - Structure specifying IDs related to the physical device Description deviceUUID is an array of  uint8_tI values representing a universally unique identifier for the device. driverUUID is an array of  uint8_td values representing a universally unique identifier for the driver build in use by the device. deviceLUID is an array of  uint8_tE values representing a locally unique identifier for the device.deviceNodeMask is a uint32_t_ bitfield identifying the node within a linked device adapter corresponding to the device.deviceLUIDValid& is a boolean value that will be . if  deviceLUID contains a valid LUID and deviceNodeMask& contains a valid node mask, and . if they do not. deviceUUID mustp be immutable for a given device across instances, processes, driver APIs, driver versions, and system reboots. Applications can compare the  driverUUID4 value across instance and process boundaries, and can make similar queries in external APIs to determine whether they are capable of sharing memory objects and resources using them with the device. deviceUUID and/or  driverUUID must be used to determine whether a particular external object can be shared between driver components, where such a restriction exists as defined in the compatibility table for the particular object type: xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility*External memory handle types compatibility {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility-External semaphore handle types compatibility whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility)External fence handle types compatibilityIf deviceLUIDValid is ., the values of  deviceLUID and deviceNodeMask are undefined. If deviceLUIDValid is .I and Vulkan is running on the Windows operating system, the contents of  deviceLUID can be cast to an LUID object and must1 be equal to the locally unique identifier of a  IDXGIAdapter1 object that corresponds to physicalDevice. If deviceLUIDValid is ., deviceNodeMask mustn contain exactly one bit. If Vulkan is running on an operating system that supports the Direct3D 12 API and physicalDeviceB corresponds to an individual device in a linked device adapter, deviceNodeMask3 identifies the Direct3D 12 node corresponding to physicalDevice. Otherwise, deviceNodeMask must be 1.Note,Although they have identical descriptions, :: deviceUUID may differ from T::pipelineCacheUUID. The former is intended to identify and correlate devices across API and driver boundaries, while the latter is used to identify a compatible device and driver combination to use when serializing and de-serializing pipeline state.Implementations should return  deviceUUID values which are likely to be unique even in the presence of multiple Vulkan implementations (such as a GPU driver and a software renderer; two drivers for different GPUs; or the same Vulkan driver running on two logically different devices).4Khronos' conformance testing can not guarantee that  deviceUUID| values are actually unique, so implementers should make their own best efforts to ensure this. In particular, hard-coded  deviceUUID values, especially all-0 bits, should never be used.qA combination of values unique to the vendor, the driver, and the hardware environment can be used to provide a  deviceUUIDa which is unique to a high degree of certainty. Some possible inputs to such a computation are:Information reported by  PCI device ID (if defined)8PCI bus ID, or similar system configuration information.Driver binary checksums.NoteWhile :: deviceUUID is specified to remain consistent across driver versions and system reboots, it is not intended to be usable as a serializable persistent identifier for a device. It may change when a device is physically added to, removed from, or moved to a different connector in a system while that system is powered down. Further, there is no reasonable way to verify with conformance testing that a given device retains the same UUID in a given system across all driver versions supported in that system. While implementations should make every effort to report consistent device UUIDs across driver versions, applications should avoid relying on the persistence of this value for uses other than identifying compatible devices for external object sharing purposes.Valid Usage (Implicit)sType must be 6See Alsoo, vulkanbVkPhysicalDeviceExternalImageFormatInfo - Structure specifying external image creation parameters DescriptionIf  handleType is 0, Tc will behave as if  was not present, and  will be ignored.If  handleType is not compatible with the format, type, tiling, usage, and flags specified in T , then Tc returns $7.Valid Usage (Implicit)sType must be 2If  handleType is not 0,  handleType must be a valid  valueSee Also, vulkanUVkPhysicalDeviceExternalBufferInfo - Structure specifying buffer creation parametersValid Usage (Implicit)See Also, , , , , Vvulkan[VkExternalMemoryProperties - Structure specifying external memory handle type capabilities DescriptioncompatibleHandleTypes must include at least  handleType!. Inclusion of a handle type in compatibleHandleTypes) does not imply the values returned in TV will be the same when :: handleType is set to that type. The application is responsible for querying the capabilities of all handle types intended for concurrent use in a single image and intersecting them to obtain the compatible set of capabilities.See Also, ,  , vulkan\VkExternalImageFormatProperties - Structure specifying supported external handle propertiesValid Usage (Implicit)See Also, vulkanYVkExternalBufferProperties - Structure specifying supported external handle capabilitiesValid Usage (Implicit)See Also, , , VvulkanexternalMemoryProperties is a  structure specifying various capabilities of the external handle type when used with the specified buffer creation parameters.vulkanflags is a bitmask of {8D describing additional parameters of the buffer, corresponding to ::flags.flags must be a valid combination of {8 valuesvulkanusage is a bitmask of z9A describing the intended usage of the buffer, corresponding to ::usage.usage must be a valid combination of z9 valuesusage must not be 0vulkan handleType is a h value specifying the memory handle type that will be used with the memory associated with the buffer. handleType must be a valid  valuevulkanexternalMemoryProperties is a  structure specifying various capabilities of the external handle type when used with the specified image creation parameters.vulkan handleType is a g value specifying the memory handle type that will be used with the memory associated with the image.vulkanexternalMemoryFeatures is a bitmask of   specifying the features of  handleType.vulkanexportFromImportedHandleTypes is a bitmask of , specifying which types of imported handle  handleType can be exported from.vulkancompatibleHandleTypes is a bitmask of  specifying handle types which can# be specified at the same time as  handleType8 when creating an image compatible with external memory.vulkan_vkGetPhysicalDeviceExternalBufferProperties - Query external handle types supported by buffersValid Usage (Implicit)See Also, , vulkanphysicalDeviceE is the physical device from which to query the buffer capabilities.physicalDevice must be a valid  handlevulkanpExternalBufferInfo is a pointer to a @ structure describing the parameters that would be consumed by .pExternalBufferInfo must be a valid pointer to a valid  structure ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!       ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!       None("#%&'-./1789;=>?FHIMSUVX_dghklmq6TNNone("#%&'-./1789;=>?FHIMSUVX_dghklmq6tvulkanTVkPhysicalDeviceExternalFenceInfo - Structure specifying fence creation parameters. DescriptionNoteHandles of type   generated by the implementation may represent either Linux Sync Files or Android Fences at the implementation s discretion. Applications should only use operations defined for both types of file descriptors, unless they know via means external to Vulkan the type of the file descriptor, or are prepared to deal with the system-defined operation failures resulting from using the wrong type.Valid Usage (Implicit)See Also , , , XvulkanZVkExternalFenceProperties - Structure describing supported external fence handle features DescriptionIf  handleType/ is not supported by the implementation, then ::externalFenceFeatures will be set to zero.Valid Usage (Implicit)See Also ,  , , , XvulkanexportFromImportedHandleTypes is a bitmask of  , indicating which types of imported handle  handleType can be exported from.vulkancompatibleHandleTypes is a bitmask of   specifying handle types which can# be specified at the same time as  handleType when creating a fence.vulkanexternalFenceFeatures is a bitmask of   indicating the features of  handleType.vulkan handleType is a  Z value indicating an external fence handle type for which capabilities will be returned. handleType must be a valid   valuevulkangvkGetPhysicalDeviceExternalFenceProperties - Function for querying external fence handle capabilities.Valid Usage (Implicit)See Also, , vulkanphysicalDeviceD is the physical device from which to query the fence capabilities.physicalDevice must be a valid  handlevulkanpExternalFenceInfo is a pointer to a A structure describing the parameters that would be consumed by ,.pExternalFenceInfo must be a valid pointer to a valid  structure~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!           ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!             None("#%&'-./1789;=>?FHIMSUVX_dghklmq6 !"#"! #LNone("#%&'-./1789;=>?FHIMSUVX_dghklmq6?vulkanXVkPhysicalDeviceGroupProperties - Structure specifying physical device group propertiesValid Usage (Implicit)See Alsoo, /3, , *, {vulkanWVkDeviceGroupDeviceCreateInfo - Create a logical device from multiple physical devices DescriptionThe elements of the pPhysicalDevices^ array are an ordered list of the physical devices that the logical device represents. These must be a subset of a single device group, and need not be in the same order as they were enumerated. The order of the physical devices in the pPhysicalDevices array determines the  device index of each physical device, with element i being assigned a device index of i. Certain commands and structures refer to one or more physical devices by using device indices or  device masks formed using device indices.'A logical device created without using  , or with physicalDeviceCount$ equal to zero, is equivalent to a physicalDeviceCount of one and pPhysicalDevices pointing to the physicalDevice parameter to  C. In particular, the device index of that physical device is zero. Valid UsageEach element of pPhysicalDevices must be uniqueAll elements of pPhysicalDevices must3 be in the same device group as enumerated by *If physicalDeviceCount is not 0, the physicalDevice parameter of   must be an element of pPhysicalDevicesValid Usage (Implicit)sType must be If physicalDeviceCount is not 0, pPhysicalDevices must( be a valid pointer to an array of physicalDeviceCount valid /3 handlesSee Also/3, %vulkanpPhysicalDevicesY is a pointer to an array of physical device handles belonging to the same device group.'vulkanphysicalDeviceCount0 is the number of physical devices in the group.(vulkanphysicalDevices is an array of  /3D handles representing all physical devices in the group. The first physicalDeviceCount& elements of the array will be valid.)vulkansubsetAllocation} specifies whether logical devices created from the group support allocating device memory on a subset of devices, via the  deviceMask member of the Jr. If this is .], then all device memory allocations are made across all physical devices in the group. If physicalDeviceCount is 1, then subsetAllocation must be ..*vulkan{vkEnumeratePhysicalDeviceGroups - Enumerates groups of physical devices that can be used to create a single logical device DescriptionIf pPhysicalDeviceGroupProperties is NULL=, then the number of device groups available is returned in pPhysicalDeviceGroupCount. Otherwise, pPhysicalDeviceGroupCount mustG point to a variable set by the user to the number of elements in the pPhysicalDeviceGroupPropertiesf array, and on return the variable is overwritten with the number of structures actually written to pPhysicalDeviceGroupProperties. If pPhysicalDeviceGroupCount> is less than the number of device groups available, at most pPhysicalDeviceGroupCount! structures will be written. If pPhysicalDeviceGroupCount9 is smaller than the number of device groups available,  will be returned instead of F, to indicate that not all the available device groups were returned.Every physical device must be in exactly one device group.Valid Usage (Implicit)instance must be a valid  handlepPhysicalDeviceGroupCount must be a valid pointer to a uint32_t valueIf the value referenced by pPhysicalDeviceGroupCount is not 0 , and pPhysicalDeviceGroupProperties is not NULL, pPhysicalDeviceGroupProperties must( be a valid pointer to an array of pPhysicalDeviceGroupCount  structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, *vulkaninstance; is a handle to a Vulkan instance previously created with  .&'()$%~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      cdegf**&'()$%~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      degfgfcNone("#%&'-./1789;=>?FHIMSUVX_dghklmq6 6789:;<=>?@ ?>=@<987;6:JNone("#%&'-./1789;=>?FHIMSUVX_dghklmq8)@vulkanaVkMemoryAllocateFlagsInfo - Structure controlling how many instances of memory will be allocated DescriptionIf  D is not set, the number of instances allocated depends on whether \! is set in the memory heap. If \[ is set, then memory is allocated for every physical device in the logical device (as if  deviceMask, has bits set for all device indices). If \D is not set, then a single instance of memory is allocated (as if  deviceMask is set to one).@On some implementations, allocations from a multi-instance heap may5 consume memory on all physical devices even if the  deviceMask excludes some devices. If L::subsetAllocation is .C, then memory is only consumed for the devices in the device mask.NoteIn practice, most allocations on a multi-instance heap will be allocated across all physical devices. Unicast allocation support is an optional optimization for a minority of allocations. Valid UsageIf   is set,  deviceMask must be a valid device maskIf   is set,  deviceMask must not be zeroValid Usage (Implicit)sType must be flags must be a valid combination of   valuesSee Also , vulkanwVkDeviceGroupSubmitInfo - Structure indicating which physical devices execute semaphore operations and command buffers DescriptioniIf this structure is not present, semaphore operations and command buffers execute on device index zero. Valid UsagewaitSemaphoreCount must equal ;N::waitSemaphoreCountcommandBufferCount must equal ;N::commandBufferCountsignalSemaphoreCount must equal ;N::signalSemaphoreCountAll elements of pWaitSemaphoreDeviceIndices and pSignalSemaphoreDeviceIndices must be valid device indicesAll elements of pCommandBufferDeviceMasks must be valid device masksValid Usage (Implicit)sType must be  If waitSemaphoreCount is not 0, pWaitSemaphoreDeviceIndices must# be a valid pointer to an array of waitSemaphoreCount uint32_t valuesIf commandBufferCount is not 0, pCommandBufferDeviceMasks must# be a valid pointer to an array of commandBufferCount uint32_t valuesIf signalSemaphoreCount is not 0, pSignalSemaphoreDeviceIndices must( be a valid pointer to an array of signalSemaphoreCount uint32_t valuesSee AlsovulkankVkDeviceGroupRenderPassBeginInfo - Set the initial device mask and render areas for a render pass instance DescriptionThe  deviceMaskT serves several purposes. It is an upper bound on the set of physical devices that can be used during the render pass instance, and the initial device mask when the render pass instance begins. In addition, commands transitioning to the next subpass in the render pass instance and commands ending the render pass instance, and, accordingly render pass attachment load, store, and resolve operations and subpass dependencies corresponding to the render pass instance, are executed on the physical devices included in the device mask provided here.If deviceRenderAreaCount$ is not zero, then the elements of pDeviceRenderAreas override the value of 6:: renderArean, and provide a render area specific to each physical device. These render areas serve the same purpose as 6:: renderAreaH, including controlling the region of attachments that are cleared by :1 and that are resolved into resolve attachments.ZIf this structure is not present, the render pass instance s device mask is the value of :: deviceMask*. If this structure is not present or if deviceRenderAreaCount is zero, 6:: renderArea# is used for all physical devices. Valid Usage deviceMask must be a valid device mask value deviceMask must not be zero deviceMask must= be a subset of the command buffer s initial device maskdeviceRenderAreaCount mustU either be zero or equal to the number of physical devices in the logical deviceValid Usage (Implicit)sType must be  If deviceRenderAreaCount is not 0, pDeviceRenderAreas must( be a valid pointer to an array of deviceRenderAreaCount p structuresSee Alsop, vulkanWVkDeviceGroupCommandBufferBeginInfo - Set the initial device mask for a command buffer DescriptionPThe initial device mask also acts as an upper bound on the set of devices that can2 ever be in the device mask in the command buffer.If this structure is not present, the initial value of a command buffer s device mask is set to include all physical devices in the logical device when the command buffer begins recording.Valid Usage (Implicit)See AlsovulkanMVkDeviceGroupBindSparseInfo - Structure indicating which instances are bound DescriptionThese device indices apply to all buffer and image memory binds included in the batch pointing to this structure. The semaphore waits and signals for the batch are executed only by the physical device specified by the resourceDeviceIndex."If this structure is not present, resourceDeviceIndex and memoryDeviceIndex are assumed to be zero. Valid UsageresourceDeviceIndex and memoryDeviceIndex must" both be valid device indices+Each memory allocation bound in this batch must% have allocated an instance for memoryDeviceIndexValid Usage (Implicit)sType must be  See AlsoBvulkanresourceDeviceIndexG is a device index indicating which instance of the resource is bound.CvulkanmemoryDeviceIndex^ is a device index indicating which instance of the memory the resource instance is bound to.EvulkanpWaitSemaphoreDeviceIndices is a pointer to an array of waitSemaphoreCounty device indices indicating which physical device executes the semaphore wait operation in the corresponding element of ;N::pWaitSemaphores.FvulkanpCommandBufferDeviceMasks is a pointer to an array of commandBufferCountm device masks indicating which physical devices execute the command buffer in the corresponding element of ;N::pCommandBuffers]. A physical device executes the command buffer if the corresponding bit is set in the mask.GvulkanpSignalSemaphoreDeviceIndices is a pointer to an array of signalSemaphoreCount{ device indices indicating which physical device executes the semaphore signal operation in the corresponding element of ;N::pSignalSemaphores.Ivulkan deviceMask: is the initial value of the command buffer s device mask. deviceMask must be a valid device mask value deviceMask must not be zeroKvulkan deviceMask1 is the device mask for the render pass instance.LvulkanpDeviceRenderAreas is a pointer to an array of p? structures defining the render area for each physical device.Nvulkanflags is a bitmask of   controlling the allocation.Ovulkan deviceMaskN is a mask of physical devices in the logical device, indicating that memory must/ be allocated on each device in the mask, if   is set in flags.QvulkanVvkGetDeviceGroupPeerMemoryFeatures - Query supported peer memory features of a deviceValid Usage (Implicit)See Also, Rvulkan;vkCmdSetDeviceMask - Modify device mask of a command buffer Description deviceMask is used to filter out subsequent commands from executing on all physical devices whose bit indices are not set in the mask, except commands beginning a render pass instance, commands transitioning to the next subpass in the render pass instance, and commands ending a render pass instance, which always execute on the set of physical devices whose bit indices are included in the  deviceMask member of the S structure passed to the command beginning the corresponding render pass instance. Valid Usage deviceMask must be a valid device mask value deviceMask must not be zero deviceMask must4 not include any set bits that were not in the :: deviceMask3 value when the command buffer began recordingIf R/ is called inside a render pass instance,  deviceMask must4 not include any set bits that were not in the :: deviceMask9 value when the render pass instance began recordingValid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must7 support graphics, compute, or transfer operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type v Primary Secondary j Both g Graphics Compute Transfer  See AlsoSvulkan/vkCmdDispatchBase - Dispatch compute work items Description@When the command is executed, a global workgroup consisting of  groupCountX  groupCountY  groupCountZ& local workgroups is assembled, with  WorkgroupId values ranging from [ baseGroup*,  baseGroup* +  groupCount*) in each component.  is equivalent to <vkCmdDispatchBase(0,0,0,groupCountX,groupCountY,groupCountZ). Valid UsageIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain gIf a /b is accessed using atomic operations as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain gIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any / being sampled with " as a result of this command must have a `E and format that supports cubic filtering, as specified by A:: filterCubic returned by TcAny / being sampled with + with a reduction mode of either  or " as a result of this command must have a `i and format that supports cubic filtering together with minmax filtering, as specified by A::filterCubicMinmax returned by TcAny /: created with a 0::flags containing * sampled as a result of this command must only be sampled using a % of % For each set n% that is statically used by the /)N bound to the pipeline bind point used by this command, a descriptor set must have been bound to n3 at the same pipeline bind point, with a /! that is compatible for set n , with the /! used to create the current /), as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the /)S bound to the pipeline bind point used by this command, a push constant value mustB have been set for the same pipeline bind point, with a /6 that is compatible for push constants, with the /! used to create the current /), as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via ., must7 be valid if they are statically used by the /); bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the /)o object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the /)a object bound to the pipeline bind point used by this command, since that pipeline was boundIf the /)S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must% not be used to sample from any /: with a / of the type `, `, `, `| or `, in any shader stageIf the /)S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stageIf the /)S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample*U instructions that includes a LOD bias or any offset values, in any shader stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the /)f object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the /)f object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the /)C object bound to the pipeline bind point used by this command must! not be a protected resourceIf a / is accessed using  OpImageWrite' as a result of this command, then the Type of the Texel operand of that instruction mustB have at least as many components as the image view s format. baseGroupX must be less than  l::maxComputeWorkGroupCount[0] baseGroupX must be less than  l::maxComputeWorkGroupCount[1] baseGroupZ must be less than  l::maxComputeWorkGroupCount[2] groupCountX must be less than or equal to  l::maxComputeWorkGroupCount[0] minus  baseGroupX groupCountY must be less than or equal to  l::maxComputeWorkGroupCount[1] minus  baseGroupY groupCountZ must be less than or equal to  l::maxComputeWorkGroupCount[2] minus  baseGroupZ If any of  baseGroupX,  baseGroupY, or  baseGroupZ4 are not zero, then the bound compute pipeline must! have been created with the P flagValid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Outside  Compute  See AlsoQvulkandevice, is the logical device that owns the memory.device must be a valid  handlevulkan heapIndexE is the index of the memory heap from which the memory is allocated. heapIndex must be less than memoryHeapCountvulkanlocalDeviceIndexM is the device index of the physical device that performs the memory access.localDeviceIndex must be a valid device indexlocalDeviceIndex must not equal remoteDeviceIndexvulkanremoteDeviceIndexN is the device index of the physical device that the memory is allocated for.remoteDeviceIndex must be a valid device indexRvulkan commandBuffer9 is command buffer whose current device mask is modified.vulkan deviceMask- is the new value of the current device mask.Svulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkan baseGroupX+ is the start value for the X component of  WorkgroupId.vulkan baseGroupY+ is the start value for the Y component of  WorkgroupId.vulkan baseGroupZ+ is the start value for the Z component of  WorkgroupId.vulkan groupCountXC is the number of local workgroups to dispatch in the X dimension.vulkan groupCountYC is the number of local workgroups to dispatch in the Y dimension.vulkan groupCountZC is the number of local workgroups to dispatch in the Z dimension.FGADCB }  ~MNODEFGJKLHIABC~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!       PQRSQRSPMNOJKLHIDEFGABC~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!       GADCBDCBF }  ~  ~ HNone("#%&'-./1789;=>?FHIMSUVX_dghklmq8IvulkanuVkMemoryDedicatedRequirements - Structure describing dedicated allocation requirements of buffer and image resources DescriptionWhen the implementation sets requiresDedicatedAllocation to ., it must also set prefersDedicatedAllocation to ..If the  structure is included in the pNext chain of the S~ structure passed as the pMemoryRequirements parameter of a S call, requiresDedicatedAllocation may be .( under one of the following conditions:The pNext chain of  for the call to > used to create the buffer being queried included a O:? structure, and any of the handle types specified in O::: handleTypes9 requires dedicated allocation, as reported by PU in P6::/externalMemoryProperties.externalMemoryFeatures , the requiresDedicatedAllocation field will be set to ..In all other cases, requiresDedicatedAllocation must be set to .# by the implementation whenever a  structure is included in the pNext chain of the S~! structure passed to a call to S.If the  structure is included in the pNext chain of the S~ structure passed as the pMemoryRequirements parameter of a S call and {; was set in ::flags when buffer% was created then the implementation must set both prefersDedicatedAllocation and requiresDedicatedAllocation to ..If the  structure is included in the pNext chain of the S~ structure passed as the pMemoryRequirements parameter of a S call, requiresDedicatedAllocation may be .( under one of the following conditions:The pNext chain of 0 for the call to 0= used to create the image being queried included a O;? structure, and any of the handle types specified in O;:: handleTypes9 requires dedicated allocation, as reported by Tc in P9::/externalMemoryProperties.externalMemoryFeatures , the requiresDedicatedAllocation field will be set to ..In all other cases, requiresDedicatedAllocation must be set to .# by the implementation whenever a  structure is included in the pNext chain of the S~! structure passed to a call to S.If the  structure is included in the pNext chain of the S~ structure passed as the pMemoryRequirements parameter of a S call and  was set in 0::flags when image& was created then the implementation must set both prefersDedicatedAllocation and requiresDedicatedAllocation to ..Valid Usage (Implicit)sType must be See Alsoo, vulkanOVkMemoryDedicatedAllocateInfo - Specify a dedicated memory allocation resource Valid UsageAt least one of image and buffer must be  If image is not F and the memory is not an imported Android Hardware Buffer, 3s::allocationSize must equal the 4z::size of the imageIf image is not , image must have been created without  set in 0::flagsIf buffer is not F and the memory is not an imported Android Hardware Buffer, 3s::allocationSize must equal the 4z::size of the bufferIf buffer is not , buffer must have been created without {; set in ::flagsIf image is not  and 3s> defines a memory import operation with handle type A<, A=, A, A, A>, or A?b, and the external handle was created by the Vulkan API, then the memory being imported must/ also be a dedicated image allocation and imageH must be identical to the image associated with the imported memoryIf buffer is not  and 3s> defines a memory import operation with handle type A<, A=, A, A, A>, or A?b, and the external handle was created by the Vulkan API, then the memory being imported must0 also be a dedicated buffer allocation and buffer mustD be identical to the buffer associated with the imported memoryIf image is not  and 3s> defines a memory import operation with handle type A@!, the memory being imported must/ also be a dedicated image allocation and image mustC be identical to the image associated with the imported memoryIf buffer is not  and 3s> defines a memory import operation with handle type A@!, the memory being imported must0 also be a dedicated buffer allocation and buffer mustD be identical to the buffer associated with the imported memoryIf image is not , image must! not have been created with  set in 0::flagsValid Usage (Implicit)sType must be If image is not , image must be a valid  handleIf buffer is not , buffer must be a valid  handleBoth of buffer, and image7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same /See Also, , tvulkanimage is = or a handle of an image which this memory will be bound to.uvulkanbuffer is = or a handle of a buffer which this memory will be bound to.wvulkanprefersDedicatedAllocation specifies that the implementation would prefer a dedicated allocation for this resource. The application is still free to suballocate the resource but it may; get better performance if a dedicated allocation is used.xvulkanrequiresDedicatedAllocationF specifies that a dedicated allocation is required for this resource.vwxsut~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      zvwxsut~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      None("#%&'-./1789;=>?FHIMSUVX_dghklmq8DNone("#%&'-./1789;=>?FHIMSUVX_dghklmq8 vulkanQVkProtectedSubmitInfo - Structure indicating whether the submission is protected Valid Usage0If the protected memory feature is not enabled, protectedSubmit must not be .If protectedSubmit is . , then each element of the pCommandBuffers array must# be a protected command bufferIf protectedSubmit is . , then each element of the pCommandBuffers array must& be an unprotected command bufferIf the ;N::pNext chain does not include a @ structure, then each element of the command buffer of the pCommandBuffers array must& be an unprotected command bufferValid Usage (Implicit)sType must be 'See Alsoo, vulkanVkPhysicalDeviceProtectedMemoryProperties - Structure describing protected memory properties that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of TO, it is filled with a value indicating the implementation-dependent behavior.Valid Usage (Implicit)See Alsoo, vulkanVkPhysicalDeviceProtectedMemoryFeatures - Structure describing protected memory features that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of TI, it is filled with a value indicating whether the feature is supported.Valid Usage (Implicit)See Alsoo, vulkanXVkDeviceQueueInfo2 - Structure specifying the parameters used for device queue creation DescriptionThe queue returned by  must have the same flagsG value from this structure as that used at device creation time in a   instance. If no matching flags- were specified at device creation time then pQueue will return .Valid Usage (Implicit)See Also, , vulkanflags is a = value indicating the flags used to create the device queue.flags must be a valid combination of  valuesvulkanqueueFamilyIndex> is the index of the queue family to which the queue belongs.queueFamilyIndex must4 be one of the queue family indices specified when device was created, via the   structurevulkan queueIndexA is the index within this queue family of the queue to retrieve. queueIndex mustV be less than the number of queues created for the specified queue family index and  member flags equal to this flags value when device was created, via the  queueCount member of the   structurevulkanprotectedNoFault4 specifies the behavior of the implementation when  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-protected-access-rulesprotected memory access rules are broken. If protectedNoFault is .N, breaking those rules will not result in process termination or device loss.vulkanprotectedMemory1 specifies whether protected memory is supported.vulkanprotectedSubmit/ specifies whether the batch is protected. If protectedSubmit is ., the batch is protected. If protectedSubmit is .$, the batch is unprotected. If the ;N::pNextB chain does not include this structure, the batch is unprotected.vulkan4vkGetDeviceQueue2 - Get a queue handle from a deviceValid Usage (Implicit)See Also, , zvulkandevice+ is the logical device that owns the queue.device must be a valid  handlevulkan pQueueInfo is a pointer to a G structure, describing the parameters used to create the device queue. pQueueInfo must be a valid pointer to a valid  structureLMBQPONMLKJIHGFEDC~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!       IJKSRQPONML   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!       JKSRQPONMLSRQPONMLI      MBQPONMLKJIHGFEDCQPONMLKJIHGFEDCLCNone("#%&'-./1789;=>?FHIMSUVX_dghklmq9_vulkandVkSamplerYcbcrConversion - Opaque handle to a device-specific sampler Y 2CBCR conversion descriptionSee AlsoXB, X, , X , !vulkanKVkDescriptorUpdateTemplate - Opaque handle to a descriptor update templateSee Also?, I, , I, , I, (w(z576|);=<>@?-89:1&'0243/(>@?;=<89:z57624310/-|)w('&pNone("#%&'-./1789;=>?FHIMSUVX_dghklmq9S JvulkanAVkValidationCacheEXT - Opaque handle to a validation cache objectSee AlsoI, , &, , Kvulkan4VkSwapchainKHR - Opaque handle to a swapchain object DescriptionA swapchain is an abstraction for an array of presentable images that are associated with a surface. The presentable images are represented by 4 objects created by the platform. One image (which canh be an array image for multiview/stereoscopic-3D surfaces) is displayed at a time, but multiple images can~ be queued for presentation. An application renders to the image, and then queues the image for presentation to the surface.A native window cannotX be associated with more than one non-retired swapchain at a time. Further, swapchains cannotb be created for native windows that have a non-Vulkan graphics API surface associated with them.Note[The presentation engine is an abstraction for the platform s compositor or display engine.The presentation engine mayW be synchronous or asynchronous with respect to the application and/or logical device.Some implementations may] use the device s graphics queue or dedicated presentation hardware to perform presentation.\The presentable images of a swapchain are owned by the presentation engine. An application can^ acquire use of a presentable image from the presentation engine. Use of a presentable image must- occur only after the image is returned by p!, and before it is presented by oG. This includes transitioning the image layout and rendering commands.An application can* acquire use of a presentable image with pQ. After acquiring a presentable image and before modifying it, the application must~ use a synchronization primitive to ensure that the presentation engine has finished reading from the image. The application can~ then transition the image s layout, queue rendering commands to it, etc. Finally, the application presents the image with o/, which releases the acquisition of the image.pThe presentation engine controls the order in which presentable images are acquired for use by the application.NoteThis allows the platform to handle situations which require out-of-order return of images after presentation. At the same time, it allows the application to generate command buffers referencing all of the images in the swapchain at initialization time, rather than in its main loop.See Also, , ], &, [, , p, , , %, , , , , , , , rLvulkan0VkSurfaceKHR - Opaque handle to a surface object DescriptionThe VK_KHR_surface extension declares the L1 object, and provides a function for destroying LY objects. Separate platform-specific extensions each provide a function for creating a L object for the respective platform. From the application s perspective this is an opaque handle, just like the handles of other Vulkan objects.See Also, [, , , , , , , , , , , , , , , $, , , k, m, o, q, MvulkanBVkPrivateDataSlotEXT - Opaque handle to a private data slot objectSee Also, , Q, RNvulkanOVkPerformanceConfigurationINTEL - Device configuration for performance queriesSee Also, 4, OvulkanQVkIndirectCommandsLayoutNV - Opaque handle to an indirect commands layout objectSee AlsoG, H, , Pvulkan9VkDisplayModeKHR - Opaque handle to a display mode objectSee AlsoA, &, +, , LQvulkan0VkDisplayKHR - Opaque handle to a display objectSee AlsoB, , D, , , I, J, M, w, ), xRvulkan-VkDeferredOperationKHR - A deferred operation DescriptioneThis handle refers to a tracking structure which manages the execution state for a deferred command.See Also, , ,  , , SvulkanDVkDebugUtilsMessengerEXT - Opaque handle to a debug messenger object DescriptionThe debug messenger will provide detailed feedback on the application s use of Vulkan when events of interest occur. When an event of interest does occur, the debug messenger will submit a debug message to the debug callback that was provided during its creation. Additionally, the debug messenger is responsible with filtering out debug messages that the callback is not interested in and will only provide desired debug messages.See Also,  TvulkanKVkDebugReportCallbackEXT - Opaque handle to a debug report callback objectSee Also,  UvulkanOVkAccelerationStructureKHR - Opaque handle to an acceleration structure objectSee Also, , , , , , , h, , , , , , , , , Tu+v#w(xz576{!|)}~*;=<>@?,- $89:1&'0243./JKLMNOPQRSTUTOJUNRMQPLKTS>@?;=<89:z57624310/.-,u+~*|)w('&$v#{! x}None("#%&'-./1789;=>?FHIMSUVX_dghklmq9}]vulkan_VkViSurfaceCreateInfoNN - Structure specifying parameters of a newly created VI surface objectValid Usage (Implicit)See Also, (, /(vulkan2VkViSurfaceCreateFlagsNN - Reserved for future use Description(Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also+vulkanflags is reserved for future use.flags must be 0,vulkanwindow is the nn::vi::NativeWindowHandle for the nn::vi::Layer% with which to associate the surface.window must be a valid nn::vi::NativeWindowHandle/vulkanvkCreateViSurfaceNN - Create a L object for a VI layer Description=During the lifetime of a surface created using a particular nn::vi::NativeWindowHandle, applications must5 not attempt to create another surface for the same nn::vi::Layer$ or attempt to connect to the same nn::vi::Layer$ through other platform mechanisms.7If the native window is created with a specified size,  currentExtentc will reflect that size. In this case, applications should use the same size for the swapchain s  imageExtent. Otherwise, the  currentExtent will have the special value (0xFFFFFFFF, 0xFFFFFFFF), indicating that applications are expected to choose an appropriate size for the swapchain s  imageExtent- (e.g., by matching the result of a call to nn::vi::GetDisplayResolution).Valid Usage (Implicit)instance must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a L handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , L, /vulkaninstance5 is the instance with which to associate the surface.vulkan pCreateInfo is a pointer to a O structure containing parameters affecting the creation of the surface object.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation). L*+,&'()-./ /*+,()'.&-LNone("#%&'-./1789;=>?FHIMSUVX_dghklmq9vulkanfVkMacOSSurfaceCreateInfoMVK - Structure specifying parameters of a newly created macOS surface objectValid Usage (Implicit)See Also?, , F?vulkan6VkMacOSSurfaceCreateFlagsMVK - Reserved for future use Description?Q is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoBvulkanflags is reserved for future use.flags must be 0CvulkanpView is a reference to a NSView/ object which will display this surface. This NSView must be backed by a CALayer instance of type C.pView must be a valid NSView and must be backed by a CALayer instance of type CFvulkanJvkCreateMacOSSurfaceMVK - Create a VkSurfaceKHR object for a macOS NSViewValid Usage (Implicit)instance must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a L handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , LFvulkaninstance5 is the instance with which to associate the surface.vulkan pCreateInfo is a pointer to a O structure containing parameters affecting the creation of the surface object.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation). LABC=>?@DEF FABC?@>E=DLNone("#%&'-./1789;=>?FHIMSUVX_dghklmq9vulkanbVkIOSSurfaceCreateInfoMVK - Structure specifying parameters of a newly created iOS surface objectValid Usage (Implicit)See AlsoV, , ]Vvulkan4VkIOSSurfaceCreateFlagsMVK - Reserved for future use DescriptionVQ is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoYvulkanflags is reserved for future use.flags must be 0ZvulkanpView is a reference to a UIView/ object which will display this surface. This UIView must be backed by a CALayer instance of type C.pView must be a valid UIView and must be backed by a CALayer instance of type C]vulkanFvkCreateIOSSurfaceMVK - Create a VkSurfaceKHR object for an iOS UIViewValid Usage (Implicit)instance must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a L handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , L]vulkaninstance5 is the instance with which to associate the surface.vulkan pCreateInfo is a pointer to a O structure containing parameters affecting the creation of the surface object.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation). LXYZTUVW[\] ]XYZVWU\T[LNone("#%&'-./1789;=>?FHIMSUVX_dghklmq9vulkandVkXlibSurfaceCreateInfoKHR - Structure specifying parameters of a newly created Xlib surface objectValid Usage (Implicit)See Also, n, vnvulkan5VkXlibSurfaceCreateFlagsKHR - Reserved for future use DescriptionnQ is a bitmask type for setting a mask, but is currently reserved for future use.See Alsoqvulkanflags is reserved for future use.flags must be 0rvulkandpy is a pointer to an Xlib  connection to the X server.dpy must point to a valid Xlib svulkanwindow is an Xlib k to associate the surface with.window must be a valid Xlib kvvulkan"vkCreateXlibSurfaceKHR - Create a L> object for an X11 window, using the Xlib client-side libraryValid Usage (Implicit)instance must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a L handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , L, wvulkanpvkGetPhysicalDeviceXlibPresentationSupportKHR - Query physical device for presentation to X11 server using Xlib Description This platform-specific function can( be called prior to creating a surface.Valid Usage (Implicit)See Alsovvulkaninstance/ is the instance to associate the surface with.vulkan pCreateInfo is a pointer to a S structure containing the parameters affecting the creation of the surface object.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).wvulkanphysicalDevice is the physical device.physicalDevice must be a valid  handlevulkanqueueFamilyIndex is the queue family index.queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by  e for the given physicalDevicevulkandpy is a pointer to an Xlib  connection to the server.dpy must be a valid pointer to a  valueLpqrsklmnotuvwvwpqrsnomultkLNone("#%&'-./1789;=>?FHIMSUVX_dghklmq:vulkanbVkXcbSurfaceCreateInfoKHR - Structure specifying parameters of a newly created Xcb surface objectValid Usage (Implicit)See Also, , vulkan4VkXcbSurfaceCreateFlagsKHR - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Alsovulkanflags is reserved for future use.flags must be 0vulkan connection is a pointer to an xcb_connection_t to the X server. connection must point to a valid X11 xcb_connection_tvulkanwindow is the  xcb_window_t3 for the X11 window to associate the surface with.window must be a valid X11  xcb_window_tvulkan!vkCreateXcbSurfaceKHR - Create a L< object for a X11 window, using the XCB client-side libraryValid Usage (Implicit)instance must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a L handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , L, vulkannvkGetPhysicalDeviceXcbPresentationSupportKHR - Query physical device for presentation to X11 server using XCB Description This platform-specific function can( be called prior to creating a surface.Valid Usage (Implicit)See Alsovulkaninstance/ is the instance to associate the surface with.vulkan pCreateInfo is a pointer to a O structure containing parameters affecting the creation of the surface object.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).vulkanphysicalDevice is the physical device.physicalDevice must be a valid  handlevulkanqueueFamilyIndex is the queue family index.queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by  e for the given physicalDevicevulkan connection is a pointer to an xcb_connection_t to the X server. connection must be a valid pointer to an xcb_connection_t valuevulkan visual_id is an X11 visual (xcb_visualid_t).LLNone("#%&'-./1789;=>?FHIMSUVX_dghklmq:+vulkanfVkWin32SurfaceCreateInfoKHR - Structure specifying parameters of a newly created Win32 surface objectValid Usage (Implicit)See Also, , vulkan6VkWin32SurfaceCreateFlagsKHR - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Alsovulkanflags is reserved for future use.flags must be 0vulkan hinstance is the Win32 / for the window to associate the surface with. hinstance must be a valid Win32 vulkanhwnd is the Win32 . for the window to associate the surface with.hwnd must be a valid Win32 vulkan$vkCreateWin32SurfaceKHR - Create a L" object for an Win32 native windowValid Usage (Implicit)instance must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a L handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , L, vulkanpvkGetPhysicalDeviceWin32PresentationSupportKHR - query queue family support for presentation on a Win32 display Description This platform-specific function can( be called prior to creating a surface.Valid Usage (Implicit)See Alsovulkaninstance/ is the instance to associate the surface with.vulkan pCreateInfo is a pointer to a O structure containing parameters affecting the creation of the surface object.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).vulkanphysicalDevice is the physical device.physicalDevice must be a valid  handlevulkanqueueFamilyIndex is the queue family index.queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by  e for the given physicalDeviceLLNone("#%&'-./1789;=>?FHIMSUVX_dghklmq:SvulkanjVkWaylandSurfaceCreateInfoKHR - Structure specifying parameters of a newly created Wayland surface objectValid Usage (Implicit)See Also, , vulkan8VkWaylandSurfaceCreateFlagsKHR - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Alsovulkanflags is reserved for future use.flags must be 0vulkandisplay and surface are pointers to the Wayland  wl_display and  wl_surface to associate the surface with.display must point to a valid Wayland  wl_displayvulkansurface must point to a valid Wayland  wl_surfacevulkan&vkCreateWaylandSurfaceKHR - Create a L object for a Wayland windowValid Usage (Implicit)instance must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a L handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , L, vulkanevkGetPhysicalDeviceWaylandPresentationSupportKHR - Query physical device for presentation to Wayland Description This platform-specific function can( be called prior to creating a surface.Valid Usage (Implicit)See Alsovulkaninstance/ is the instance to associate the surface with.vulkan pCreateInfo is a pointer to a O structure containing parameters affecting the creation of the surface object.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).vulkanphysicalDevice is the physical device.physicalDevice must be a valid  handlevulkanqueueFamilyIndex is the queue family index.queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by  e for the given physicalDevicevulkandisplay is a pointer to the  wl_display' associated with a Wayland compositor.display must be a valid pointer to a  wl_display valueLLNone("#%&'-./1789;=>?FHIMSUVX_dghklmq;ʟ:vulkan<VkPresentModeKHR - presentation mode supported for a surface DescriptionThe supported gA of the presentable images of a swapchain created for a surface may[ differ depending on the presentation mode, and can be determined as per the table below:. Presentation mode } Image usage flags    ::supportedUsageFlagsM    ::supportedUsageFlagsM    ::supportedUsageFlagsM    ::supportedUsageFlagsM    J:: sharedPresentSupportedUsageFlags    J:: sharedPresentSupportedUsageFlags Presentable image usage queriesNote%For reference, the mode indicated by u is equivalent to the behavior of {wgl|glX|egl}SwapBuffers with a swap interval of 1, while the mode indicated by  is equivalent to the behavior of {wgl|glX}SwapBuffers with a swap interval of -1 (from the {WGL|GLX}_EXT_swap_control_tear extensions).See Also[, p, vulkanXVkSurfaceFormatKHR - Structure describing a supported swapchain format-color space pairSee Also, J, V, vulkanJVkSurfaceCapabilitiesKHR - Structure describing capabilities of a surface DescriptionNote9Supported usage flags of a presentable image when using  or % presentation mode are provided by J:: sharedPresentSupportedUsageFlags.NoteFormulas such as min(N,  maxImageCount) are not correct, since  maxImageCount may be zero.See Also, t, Q, T, , , vulkanNVkSurfaceTransformFlagBitsKHR - presentation transforms supported on a deviceSee Also, +, =, S, , , [vulkanLVkCompositeAlphaFlagBitsKHR - alpha compositing modes supported on a device Description&These values are described as follows:See Also, [vulkanBVkColorSpaceKHR - supported color space of the presentation engine DescriptionNoteIn the initial release of the VK_KHR_surface and VK_KHR_swapchain extensions, the token  VK_COLORSPACE_SRGB_NONLINEAR_KHR was used. Starting in the 2016-05-13 updates to the extension branches, matching release 1.0.13 of the core API specification, { is used instead for consistency with Vulkan naming rules. The older enum is still available for backwards compatibility.Note$In older versions of this extension  was misnamed D. This has been updated to indicate that it uses RGB color encoding, not XYZ. The old name is deprecated but is maintained for backwards compatibility.AThe color components of non-linear color space swap chain images musti have had the appropriate transfer function applied. The color space selected for the swap chain image will not affect the processing of data written into the image by the implementation. Vulkan requires that all implementations support the sRGB transfer function by use of an SRGB pixel format. Other transfer functions, such as SMPTE 170M or SMPTE2084, canK be performed by the application shader. This extension defines enums for / that correspond to the following color spaces: Name  Red Primary  Green Primary  Blue Primary  White-point  Transfer function  DCI-P3  1.000, 0.000  0.000, 1.000  0.000, 0.000  0.3333, 0.3333  DCI P3 , Display-P3  0.680, 0.320  0.265, 0.690  0.150, 0.060 ) 0.3127, 0.3290 (D65) & Display-P3 , BT709  0.640, 0.330  0.300, 0.600  0.150, 0.060 ) 0.3127, 0.3290 (D65) & ITU (SMPTE 170M) , sRGB  0.640, 0.330  0.300, 0.600  0.150, 0.060 ) 0.3127, 0.3290 (D65) & sRGB , extended sRGB  0.640, 0.330  0.300, 0.600  0.150, 0.060 ) 0.3127, 0.3290 (D65) & extended sRGB , HDR10_ST2084  0.708, 0.292  0.170, 0.797  0.131, 0.046 ) 0.3127, 0.3290 (D65) & ST2084 PQ , DOLBYVISION  0.708, 0.292  0.170, 0.797  0.131, 0.046 ) 0.3127, 0.3290 (D65) & ST2084 PQ , HDR10_HLG  0.708, 0.292  0.170, 0.797  0.131, 0.046 ) 0.3127, 0.3290 (D65) & HLG , AdobeRGB  0.640, 0.330  0.210, 0.710  0.150, 0.060 ) 0.3127, 0.3290 (D65) & AdobeRGB Color Spaces and AttributesRThe transfer functions are described in the Transfer Functions  chapter of the  Yhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#data-format!Khronos Data Format Specification.!Except Display-P3 OETF, which is:[begin{aligned} E & = begin{cases} 1.055 times L^{1 over 2.4} - 0.055 & text{for} 0.0030186 leq L leq 1 -- 12.92 times L & text{for} 0 leq L < 0.0030186vulkanformat is a J0 that is compatible with the specified surface.vulkan colorSpace is a presentation & that is compatible with the surface.vulkan minImageCount is the minimum number of images the specified device supports for a swapchain created for the surface, and will be at least one.vulkan maxImageCount is the maximum number of images the specified device supports for a swapchain created for the surface, and will be either 0, or greater than or equal to  minImageCountS. A value of 0 means that there is no limit on the number of images, though there mayM be limits related to the total amount of memory used by presentable images.vulkan currentExtent is the current width and height of the surface, or the special value (0xFFFFFFFF, 0xFFFFFFFF) indicating that the surface size will be determined by the extent of a swapchain targeting the surface.vulkanminImageExtent\ contains the smallest valid swapchain extent for the surface on the specified device. The width and heightE of the extent will each be less than or equal to the corresponding width and height of  currentExtent , unless  currentExtent( has the special value described above.vulkanmaxImageExtent[ contains the largest valid swapchain extent for the surface on the specified device. The width and heightH of the extent will each be greater than or equal to the corresponding width and height of minImageExtent. The width and heightH of the extent will each be greater than or equal to the corresponding width and height of  currentExtent , unless  currentExtent( has the special value described above.vulkanmaxImageArrayLayers5 is the maximum number of layers presentable images canU have for a swapchain created for this device and surface, and will be at least one.vulkansupportedTransforms is a bitmask of z indicating the presentation transforms supported for the surface on the specified device. At least one bit will be set.vulkancurrentTransform is n value indicating the surface s current transform relative to the presentation engine s natural orientation.vulkansupportedCompositeAlpha is a bitmask of , representing the alpha compositing modes supported by the presentation engine for the surface on the specified device, and at least one bit will be set. Opaque composition can be achieved in any alpha compositing mode by either using an image format that has no alpha component, or by ensuring that all pixels in the presentable images have an alpha value of 1.0.vulkansupportedUsageFlags is a bitmask of g( representing the ways the application can9 use the presentable images of a swapchain created with  set to , ,  or + for the surface on the specified device. w must, be included in the set but implementations may support additional usages.vulkan specifies that the presentation transform is not specified, and is instead determined by platform-specific considerations and mechanisms outside Vulkan.vulkan] specifies that image content is mirrored horizontally, then rotated 270 degrees clockwise.vulkan] specifies that image content is mirrored horizontally, then rotated 180 degrees clockwise.vulkan\ specifies that image content is mirrored horizontally, then rotated 90 degrees clockwise.vulkan8 specifies that image content is mirrored horizontally.vulkan@ specifies that image content is rotated 270 degrees clockwise.vulkan@ specifies that image content is rotated 180 degrees clockwise.vulkan? specifies that image content is rotated 90 degrees clockwise.vulkanF specifies that image content is presented without being transformed.vulkanu: The way in which the presentation engine treats the alpha channel in the images is unknown to the Vulkan API. Instead, the application is responsible for setting the composite alpha blending mode using native window system commands. If the application does not set the blending mode using native window system commands, then a platform-specific default will be used.vulkanH: The alpha channel, if it exists, of the images is respected in the compositing process. The non-alpha channels of the image are not expected to already be multiplied by the alpha channel by the application; instead, the compositor will multiply the non-alpha channels of the image by the alpha channel during compositing.vulkan: The alpha channel, if it exists, of the images is respected in the compositing process. The non-alpha channels of the image are expected to already be multiplied by the alpha channel by the application.vulkan: The alpha channel, if it exists, of the images is ignored in the compositing process. Instead, the image is treated as if it has a constant alpha of 1.0.vulkanl specifies support for the Display-P3 color space to be displayed using an sRGB-like EOTF (defined below).vulkanZ specifies support for the extended sRGB color space to be displayed using a linear EOTF.vulkanW specifies support for the Display-P3 color space to be displayed using a linear EOTF.vulkan specifies support for the DCI-P3 color space to be displayed using the DCI-P3 EOTF. Note that values in such an image are interpreted as XYZ encoded color data by the presentation engine.vulkanR specifies support for the BT709 color space to be displayed using a linear EOTF.vulkanX specifies support for the BT709 color space to be displayed using the SMPTE 170M EOTF.vulkanS specifies support for the BT2020 color space to be displayed using a linear EOTF.vulkan~ specifies support for the HDR10 (BT2020 color) space to be displayed using the SMPTE ST2084 Perceptual Quantizer (PQ) EOTF.vulkan specifies support for the Dolby Vision (BT2020 color space), proprietary encoding, to be displayed using the SMPTE ST2084 EOTF. vulkan m specifies support for the HDR10 (BT2020 color space) to be displayed using the Hybrid Log Gamma (HLG) EOTF. vulkan U specifies support for the AdobeRGB color space to be displayed using a linear EOTF. vulkan Z specifies support for the AdobeRGB color space to be displayed using the Gamma 2.2 EOTF. vulkan  specifies that color components are used as is . This is intended to allow applications to supply data for color spaces not described here. vulkan Y specifies support for the extended sRGB color space to be displayed using an sRGB EOTF.vulkan specifies support for the display s native color space. This matches the color space expectations of AMD s FreeSync2 standard, for displays supporting it.vulkan- specifies support for the sRGB color space.vulkan~ specifies that the presentation engine and application have concurrent access to a single image, which is referred to as a shared presentable image. The presentation engine is only required to update the current image after a new presentation request is received. Therefore the application must` make a presentation request whenever an update is required. However, the presentation engine may; update the current image at any point, meaning this mode may result in visible tearing.vulkan~ specifies that the presentation engine and application have concurrent access to a single image, which is referred to as a shared presentable image. The presentation engine periodically updates the current image on its regular refresh cycle. The application is only required to make one initial presentation request, after which the presentation engine must` update the current image without any need for further presentation requests. The application can indicate the image contents have been updated by making a presentation request, but this does not guarantee the timing of when it will be updated. This mode mayM result in visible tearing if rendering to the image is not timed correctly.vulkanN specifies that the presentation engine generally waits for the next vertical blanking period to update the current image. If a vertical blanking period has already passed since the last update of the current image then the presentation engine does not wait for another vertical blanking period for the update, meaning this mode may3 result in visible tearing in this case. This mode is useful for reducing visual stutter with an application that will mostly present a new image before the next vertical blanking period, but may occasionally be late, and present a new image just after the next vertical blanking period. An internal queue is used to hold pending presentation requests. New requests are appended to the end of the queue, and one request is removed from the beginning of the queue and processed during or after each vertical blanking period in which the queue is non-empty.vulkan{ specifies that the presentation engine waits for the next vertical blanking period to update the current image. Tearing cannot/ be observed. An internal queue is used to hold pending presentation requests. New requests are appended to the end of the queue, and one request is removed from the beginning of the queue and processed during each vertical blanking period in which the queue is non-empty. This is the only value of  presentMode that is required to be supported.vulkan{ specifies that the presentation engine waits for the next vertical blanking period to update the current image. Tearing cannot be observed. An internal single-entry queue is used to hold pending presentation requests. If the queue is full when a new presentation request is received, the new request replaces the existing entry, and any images associated with the prior entry become available for re-use by the application. One request is removed from the queue and processed during each vertical blanking period in which the queue is non-empty.vulkan specifies that the presentation engine does not wait for a vertical blanking period to update the current image, meaning this mode may~ result in visible tearing. No internal queuing of presentation requests is needed, as the requests are applied immediately.vulkan3vkDestroySurfaceKHR - Destroy a VkSurfaceKHR object Description Destroying a L merely severs the connection between Vulkan and the native surface, and does not imply destroying the native surface, closing a window, or similar behavior. Valid UsageAll pI objects created for surface must) have been destroyed prior to destroying surfaceIf  were provided when surface1 was created, a compatible set of callbacks must be provided hereIf no  were provided when surface was created,  pAllocator must be NULLValid Usage (Implicit)instance must be a valid  handleIf surface is not , surface must be a valid L handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf surface is a valid handle, it must6 have been created, allocated, or retrieved from instanceHost SynchronizationHost access to surface must be externally synchronizedSee Also, , LvulkanJvkGetPhysicalDeviceSurfaceSupportKHR - Query if presentation is supported Valid UsagequeueFamilyIndex must be less than pQueueFamilyPropertyCount returned by  e for the given physicalDeviceValid Usage (Implicit)physicalDevice must be a valid  handlesurface must be a valid L handle pSupported must be a valid pointer to a o valueBoth of physicalDevice, and surface mustD have been created, allocated, or retrieved from the same  Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Alsoo, , LvulkanFvkGetPhysicalDeviceSurfaceCapabilitiesKHR - Query surface capabilitiesValid Usage (Implicit)physicalDevice must be a valid  handlesurface must be a valid L handlepSurfaceCapabilities must be a valid pointer to a  structureBoth of physicalDevice, and surface mustD have been created, allocated, or retrieved from the same  Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , LvulkanPvkGetPhysicalDeviceSurfaceFormatsKHR - Query color formats supported by surface DescriptionIf pSurfaceFormats is NULL;, then the number of format pairs supported for the given surface is returned in pSurfaceFormatCount. Otherwise, pSurfaceFormatCount mustG point to a variable set by the user to the number of elements in the pSurfaceFormatsf array, and on return the variable is overwritten with the number of structures actually written to pSurfaceFormats. If the value of pSurfaceFormatCount= is less than the number of format pairs supported, at most pSurfaceFormatCount! structures will be written. If pSurfaceFormatCountE is smaller than the number of format pairs supported for the given surface,  will be returned instead of > to indicate that not all the available values were returned.%The number of format pairs supported must! be greater than or equal to 1. pSurfaceFormats must' not contain an entry whose value for format is E.If pSurfaceFormats# includes an entry whose value for  colorSpace is  and whose value for formatn is a UNORM (or SRGB) format and the corresponding SRGB (or UNORM) format is a color renderable format for s, then pSurfaceFormats must0 also contain an entry with the same value for  colorSpace and format4 equal to the corresponding SRGB (or UNORM) format. Valid Usagesurface must be supported by physicalDevice, as reported by 2 or an equivalent platform-specific mechanismValid Usage (Implicit)physicalDevice must be a valid  handlesurface must be a valid L handlepSurfaceFormatCount must be a valid pointer to a uint32_t valueIf the value referenced by pSurfaceFormatCount is not 0 , and pSurfaceFormats is not NULL, pSurfaceFormats must( be a valid pointer to an array of pSurfaceFormatCount  structuresBoth of physicalDevice, and surface mustD have been created, allocated, or retrieved from the same  Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , LvulkanOvkGetPhysicalDeviceSurfacePresentModesKHR - Query supported presentation modes DescriptionIf  pPresentModes is NULLA, then the number of presentation modes supported for the given surface is returned in pPresentModeCount. Otherwise, pPresentModeCount mustG point to a variable set by the user to the number of elements in the  pPresentModesb array, and on return the variable is overwritten with the number of values actually written to  pPresentModes. If the value of pPresentModeCountD is less than the number of presentation modes supported, at most pPresentModeCount values will be written. If pPresentModeCountL is smaller than the number of presentation modes supported for the given surface,  will be returned instead of > to indicate that not all the available values were returned.Valid Usage (Implicit)physicalDevice must be a valid  handlesurface must be a valid L handlepPresentModeCount must be a valid pointer to a uint32_t valueIf the value referenced by pPresentModeCount is not 0 , and  pPresentModes is not NULL,  pPresentModes must( be a valid pointer to an array of pPresentModeCount  valuesBoth of physicalDevice, and surface mustD have been created, allocated, or retrieved from the same  Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , Lvulkaninstance, is the instance used to create the surface.vulkansurface is the surface to destroy.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).vulkanphysicalDevice is the physical device.vulkanqueueFamilyIndex is the queue family.vulkansurface is the surface.vulkanphysicalDevicee is the physical device that will be associated with the swapchain to be created, as described for .vulkansurface; is the surface that will be associated with the swapchain.vulkanphysicalDevicee is the physical device that will be associated with the swapchain to be created, as described for .vulkansurface; is the surface that will be associated with the swapchain.vulkanphysicalDevicee is the physical device that will be associated with the swapchain to be created, as described for .vulkansurface; is the surface that will be associated with the swapchain.HL     k          LNone("#%&'-./1789;=>?FHIMSUVX_dghklmq;DvulkaniVkRenderPassTransformBeginInfoQCOM - Structure describing transform parameters of a render pass instance Valid Usage transform must be , , , or The  renderpass must have been created with 67::flags containing GFValid Usage (Implicit)sType must be ySee Also, EvulkanVkCommandBufferInheritanceRenderPassTransformInfoQCOM - Structure describing transformed render pass parameters command buffer DescriptionOWhen the secondary is recorded to execute within a render pass instance using H, the render pass transform parameters of the secondary command buffer mustv be consistent with the render pass transform parameters specified for the render pass instance. In particular, the  transform and  renderArea for command buffer must be identical to the  transform and  renderArea of the render pass instance.Valid Usage (Implicit)See Alsop, , Dvulkan transform is a B value describing the transform to be applied to the render pass. transform must be , , , or Evulkan renderArea; is the render area that is affected by the command buffer.Gvulkan transform is a @ value describing the transform to be applied to rasterization.DFGECDEABHI DFGECDEBIAHNone("#%&'-./1789;=>?FHIMSUVX_dghklmq>"8vulkan^VkDeviceGroupPresentModeFlagBitsKHR - Bitmask specifying supported device group present modesSee Also, vulkan_VkSwapchainCreateInfoKHR - Structure specifying parameters of a newly created swapchain object DescriptionNote%On some platforms, it is normal that maxImageExtent may become (0, 0), for example when the window is minimized. In such a case, it is not possible to create a swapchain due to the Valid Usage requirements. imageArrayLayersr is the number of views in a multiview/stereo surface. For non-stereoscopic-3D applications, this value is 1. imageUsage is a bitmask of gG describing the intended usage of the (acquired) swapchain images.imageSharingModeA is the sharing mode used for the image(s) of the swapchain.queueFamilyIndexCountZ is the number of queue families having access to the image(s) of the swapchain when imageSharingMode is #G.pQueueFamilyIndicesq is a pointer to an array of queue family indices having access to the images(s) of the swapchain when imageSharingMode is #G. preTransform is a  value describing the transform, relative to the presentation engine s natural orientation, applied to the image content prior to presentation. If it does not match the currentTransform value returned by mk, the presentation engine will transform the image content as part of the presentation operation.compositeAlpha is a  value indicating the alpha compositing mode to use when this surface is composited together with other surfaces on certain window systems. presentMode is the presentation mode the swapchain will use. A swapchain s present mode determines how incoming present requests will be processed and queued internally.clipped specifies whether the Vulkan implementation is allowed to discard rendering operations that affect regions of the surface that are not visible. If set to .;, the presentable images associated with the swapchain may not own all of their pixels. Pixels in the presentable images that correspond to regions of the target surface obscured by another window on the desktop, or subject to some other clipping mechanism will have undefined content when read back. Fragment shaders maye not execute for these pixels, and thus any side effects they would have had will not occur. . value does not guarantee any clipping will occur, but allows more optimal presentation methods to be used on some platforms. If set to .c, presentable images associated with the swapchain will own all of the pixels they contain.Note Applications should set this value to . if they do not expect to read back the content of presentable images before presenting them or after reacquiring them, and if their fragment shaders do not have any side effects that require them to run for all pixels in the presentable image. oldSwapchain is G, or the existing non-retired swapchain currently associated with surface. Providing a valid  oldSwapchain may aid in the resource reuse, and also allows the application to still present any images that are already acquired from it. Upon calling  with an  oldSwapchain that is not ,  oldSwapchain is retired  even if creation of the new swapchain fails. The new swapchain is created in the non-retired state whether or not  oldSwapchain is . Upon calling  with an  oldSwapchain that is not , any images from  oldSwapchain+ that are not acquired by the application may( be freed by the implementation, which mayE occur even if creation of the new swapchain fails. The application can destroy  oldSwapchain% to free all memory associated with  oldSwapchain.NoteMultiple retired swapchains can be associated with the same L through multiple uses of  oldSwapchain that outnumber calls to .After  oldSwapchain is retired, the application can pass to * any images it had already acquired from  oldSwapchain. E.g., an application may present an image from the old swapchain before an image from the new swapchain is ready to be presented. As usual,  may fail if  oldSwapchain# has entered a state that causes  to be returned.The application can; continue to use a shared presentable image obtained from  oldSwapchain until a presentable image is acquired from the new swapchain, as long as it has not entered a state that causes it to return . Valid Usagesurface mustL be a surface that is supported by the device as determined using  minImageCount must9 be less than or equal to the value returned in the  maxImageCount member of the ! structure returned by m& for the surface if the returned  maxImageCount is not zeroIf  presentMode is not  nor  , then  minImageCount must< be greater than or equal to the value returned in the  minImageCount member of the ! structure returned by m for the surface minImageCount must be 1 if  presentMode is either  or  imageFormat and imageColorSpace must match the format and  colorSpace+ members, respectively, of one of the " structures returned by o for the surface imageExtent must be between minImageExtent and maxImageExtent, inclusive, where minImageExtent and maxImageExtent are members of the ! structure returned by m for the surface imageExtent members width and height must both be non-zeroimageArrayLayers must be greater than 0$ and less than or equal to the maxImageArrayLayers member of the ! structure returned by m for the surfaceIf  presentMode is , ,  or ,  imageUsage must> be a subset of the supported usage flags present in the supportedUsageFlags member of the ! structure returned by m for surfaceIf  presentMode is  or ,  imageUsage must> be a subset of the supported usage flags present in the  sharedPresentSupportedUsageFlags member of the J! structure returned by l for surfaceIf imageSharingMode is #G, pQueueFamilyIndices must( be a valid pointer to an array of queueFamilyIndexCount uint32_t valuesIf imageSharingMode is #G, queueFamilyIndexCount must be greater than 1If imageSharingMode is #G, each element of pQueueFamilyIndices must be unique and must be less than pQueueFamilyPropertyCount returned by either  e or Tf for the physicalDevice that was used to create device preTransform must( be one of the bits present in the supportedTransforms member of the ! structure returned by m for the surfacecompositeAlpha must( be one of the bits present in the supportedCompositeAlpha member of the ! structure returned by m for the surface presentMode must be one of the  values returned by q for the surface,If the logical device was created with L::physicalDeviceCount equal to 1, flags must not contain If  oldSwapchain is not ,  oldSwapchain mustN be a non-retired swapchain associated with native window referred to by surface The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#swapchain-wsi-image-create-info!implied image creation parameters of the swapchain must" be supported as reported by  If flags contains  then the pNext chain must include a 6 structure with a viewFormatCount greater than zero and  pViewFormats must have an element equal to  imageFormat If a 6$ structure was included in the pNext chain and 6::viewFormatCount2 is not zero then all of the formats in 6:: pViewFormats must be compatible with the format as described in the chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibilitycompatibility tableIf flags dose not contain  and the pNext chain include a 6 structure then 6::viewFormatCount must be 0 or 1If flags contains  , then Y::supportsProtected must be . in the Y! structure returned by l for surfaceIf the pNext chain includes a  structure with its fullScreenExclusive member set to s , and surface was created using  , a  structure must be included in the pNext chainValid Usage (Implicit)sType must be uEach pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , 6, , , , or WThe sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of Y valuessurface must be a valid L handle imageFormat must be a valid J valueimageColorSpace must be a valid  value imageUsage must be a valid combination of g values imageUsage must not be 0imageSharingMode must be a valid  value preTransform must be a valid  valuecompositeAlpha must be a valid  value presentMode must be a valid  valueIf  oldSwapchain is not ,  oldSwapchain must be a valid K handleIf  oldSwapchain is a valid handle, it must6 have been created, allocated, or retrieved from surfaceBoth of  oldSwapchain, and surface7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same /See Alsoo, , , t, J, Q, , , , L, , X, K, , vulkanKVkPresentInfoKHR - Structure describing parameters of a queue presentation DescriptionBefore an application can& present an image, the image s layout must be transitioned to the H1 layout, or for a shared presentable image the I layout.Note!When transitioning the image to I or H^, there is no need to delay subsequent processing, or perform any visibility operations (as B performs automatic visibility operations). To achieve this, the  dstAccessMask member of the 5W should be set to 0 , and the  dstStageMask parameter should be set to J. Valid UsageEach element of  pImageIndices musty be the index of a presentable image acquired from the swapchain specified by the corresponding element of the  pSwapchains1 array, and the presented image subresource must be in the H or I= layout at the time the operation is executed on a All elements of the pWaitSemaphores must have a  of Valid Usage (Implicit)sType must be vEach pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , S, ', p , or .The sType value of each struct in the pNext chain must be uniqueIf waitSemaphoreCount is not 0, pWaitSemaphores must( be a valid pointer to an array of waitSemaphoreCount valid v handles pSwapchains must( be a valid pointer to an array of swapchainCount valid K handles pImageIndices must( be a valid pointer to an array of swapchainCount uint32_t valuesIf pResults is not NULL, pResults must( be a valid pointer to an array of swapchainCount _ valuesswapchainCount must be greater than 0Both of the elements of  pSwapchains, and the elements of pWaitSemaphores7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same /See Also_, v, , K, vulkanXVkImageSwapchainCreateInfoKHR - Specify that an image will be bound to swapchain memory Valid UsageIf  swapchain is not , the fields of 0 must match the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#swapchain-wsi-image-create-info!implied image creation parameters of the swapchainValid Usage (Implicit)sType must be If  swapchain is not ,  swapchain must be a valid K handleSee Also, KvulkanjVkDeviceGroupSwapchainCreateInfoKHR - Structure specifying parameters of a newly created swapchain object Description"If this structure is not present, modes is considered to be .Valid Usage (Implicit)See Also, vulkaneVkDeviceGroupPresentInfoKHR - Mode and mask controlling which physical devices' images are presented DescriptionIf mode is , then each element of  pDeviceMasksN selects which instance of the swapchain image is presented. Each element of  pDeviceMasks mustB have exactly one bit set, and the corresponding physical device must, have a presentation engine as reported by .If mode is , then each element of  pDeviceMasksN selects which instance of the swapchain image is presented. Each element of  pDeviceMasks mustK have exactly one bit set, and some physical device in the logical device must include that bit in its :: presentMask.If mode is , then each element of  pDeviceMasks selects which instances of the swapchain image are component-wise summed and the sum of those images is presented. If the sum in any component is outside the representable range, the value of that component is undefined. Each element of  pDeviceMasks mustI have a value for which all set bits are set in one of the elements of :: presentMask.If mode is , then each element of  pDeviceMasksh selects which instance(s) of the swapchain images are presented. For each bit set in each element of  pDeviceMasks$, the corresponding physical device must, have a presentation engine as reported by .If  is not provided or swapchainCount. is zero then the masks are considered to be 1. If  is not provided, mode is considered to be . Valid UsageswapchainCount must equal 0 or ::swapchainCountIf mode is , then each element of  pDeviceMasks mustF have exactly one bit set, and the corresponding element of :: presentMask must be non-zeroIf mode is , then each element of  pDeviceMasks mustO have exactly one bit set, and some physical device in the logical device must include that bit in its :: presentMaskIf mode is , then each element of  pDeviceMasks mustQ have a value for which all set bits are set in one of the elements of :: presentMaskIf mode is 0, then for each bit set in each element of  pDeviceMasks), the corresponding element of :: presentMask must be non-zeroThe value of each element of  pDeviceMasks must, be equal to the device mask passed in :: deviceMask, when the image index was last acquiredmode must( have exactly one bit set, and that bit must have been included in ::modesValid Usage (Implicit)sType must be If swapchainCount is not 0,  pDeviceMasks must( be a valid pointer to an array of swapchainCount uint32_t valuesmode must be a valid  valueSee Also, vulkanWVkDeviceGroupPresentCapabilitiesKHR - Present capabilities from other physical devices Descriptionmodes always has  set.CThe present mode flags are also used when presenting an image, in ::mode.?If a device group only includes a single physical device, then modes must equal .Valid Usage (Implicit)See Also, , vulkan[VkBindImageMemorySwapchainInfoKHR - Structure specifying swapchain image memory to bind to DescriptionIf  swapchain is not NULL, the  swapchain and  imageIndexJ are used to determine the memory that the image is bound to, instead of memory and  memoryOffset.Memory can% be bound to a swapchain and use the pDeviceIndices or pSplitInstanceBindRegions members of K. Valid Usage imageIndex must& be less than the number of images in  swapchainValid Usage (Implicit)sType must be  swapchain must be a valid K handleHost SynchronizationHost access to  swapchain must be externally synchronizedSee Also, KvulkanKVkAcquireNextImageInfoKHR - Structure specifying parameters of the acquire DescriptionIf _ is used, the device mask is considered to include all physical devices in the logical device.Note} signals at most one semaphore, even if the application requests waiting for multiple physical devices to be ready via the  deviceMask). However, only a single physical device cand wait on that semaphore, since the semaphore becomes unsignaled when the wait succeeds. For other physical devices to wait for the image to be ready, it is necessary for the application to submit semaphore signal operation(s) to that first physical device to signal additional semaphore(s) after the wait succeeds, which the other physical device(s) can wait upon. Valid Usage swapchain must not be in the retired stateIf  semaphore is not  it must be unsignaledIf  semaphore is not  it must; not have any uncompleted signal or wait operations pendingIf fence is not  it must be unsignaled and mustg not be associated with any other queue command that has not yet completed execution on that queue semaphore and fence must not both be equal to  deviceMask must be a valid device mask deviceMask must not be zero semaphore must have a  of Valid Usage (Implicit)sType must be pNext must be NULL swapchain must be a valid K handleIf  semaphore is not ,  semaphore must be a valid v handleIf fence is not , fence must be a valid  handleEach of fence,  semaphore, and  swapchain7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  swapchain must be externally synchronizedHost access to  semaphore must be externally synchronizedHost access to fence must be externally synchronizedSee Also, v, , K, YvulkanEVkSwapchainCreateFlagBitsKHR - Bitmask controlling swapchain creationSee AlsoX]vulkanmodes+ is a bitfield of modes that the swapchain can be used with.modes must be a valid combination of  valuesmodes must not be 0_vulkan pDeviceMasksD is a pointer to an array of device masks, one for each element of ::pSwapchains.`vulkanmodeF is the device group present mode that will be used for this present.bvulkan swapchain< is a non-retired swapchain from which an image is acquired.cvulkantimeoutR specifies how long the function waits, in nanoseconds, if no image is available.dvulkan semaphore is  or a semaphore to signal.evulkanfence is  or a fence to signal.fvulkan deviceMask{ is a mask of physical devices for which the swapchain image will be ready to use when the semaphore or fence is signaled.hvulkan swapchain is  or a swapchain handle.ivulkan imageIndex is an image index within  swapchain.kvulkan swapchain is = or a handle of a swapchain that the image will be bound to.mvulkan presentMask is an array of  uint32_t masks, where the mask at element i is non-zero if physical device i has a presentation engine, and where bit j is set in element i if physical device i canX present swapchain images from physical device j. If element i is non-zero, then bit i must be set.nvulkanmodes is a bitmask of A indicating which device group presentation modes are supported.pvulkanpNext is NULL6 or a pointer to a structure extending this structure.qvulkanpWaitSemaphores is NULL or a pointer to an array of v objects with waitSemaphoreCountX entries, and specifies the semaphores to wait for before issuing the present request.rvulkan pSwapchains is a pointer to an array of K objects with swapchainCount entries. A given swapchain must) not appear in this list more than once.svulkan pImageIndicesb is a pointer to an array of indices into the array of each swapchain s presentable images, with swapchainCountg entries. Each entry in this array identifies the image to present on the corresponding entry in the  pSwapchains array.tvulkanpResults is a pointer to an array of _ typed elements with swapchainCount? entries. Applications that do not need per-swapchain results can use NULL for pResults . If non-NULL, each entry in pResults will be set to the _B for presenting the swapchain corresponding to the same index in  pSwapchains.vvulkanpNext is NULL6 or a pointer to a structure extending this structure.wvulkanflags is a bitmask of Y2 indicating parameters of the swapchain creation.xvulkansurface is the surface onto which the swapchain will present images. If the creation succeeds, the swapchain becomes associated with surface.yvulkan minImageCount is the minimum number of presentable images that the application needs. The implementation will either create the swapchain with at least that many images, or it will fail to create the swapchain.zvulkan imageFormat is a JJ value specifying the format the swapchain image(s) will be created with.{vulkanimageColorSpace is a ? value specifying the way the swapchain interprets image data.|vulkan imageExtent is the size (in pixels) of the swapchain image(s). The behavior is platform-dependent if the image extent does not match the surface s  currentExtent as returned by m.vulkanH specifies that images created from the swapchain are protected images.vulkanB specifies that images created from the swapchain (i.e. with the  swapchain member of ! set to this swapchain s handle) must use K.vulkan- specifies that the images of the swapchain can be used to create a / with a different format than what the swapchain was created with. The list of allowed image view formats are specified by adding a 6 structure to the pNext chain of <. In addition, this flag also specifies that the swapchain can be created with usage flags that are not supported for the format the swapchain is created with but are supported for at least one of the allowed image view formats.vulkanF specifies that multiple physical devices with a presentation engine can* each present their own swapchain images.vulkan@ specifies that any physical device with a presentation engine canG present the sum of swapchain images from any physical devices in its  presentMask.vulkan@ specifies that any physical device with a presentation engine can; present swapchain images from any physical device in its  presentMask.vulkan@ specifies that any physical device with a presentation engine can# present its own swapchain images.vulkan)vkCreateSwapchainKHR - Create a swapchain DescriptionIf the  oldSwapchain parameter of  pCreateInfo^ is a valid swapchain, which has exclusive full-screen access, that access is released from  oldSwapchain. If the command succeeds in this case, the newly created swapchain will automatically acquire exclusive full-screen access from  oldSwapchain.NoteThis implicit transfer is intended to avoid exiting and entering full-screen exclusive mode, which may otherwise cause unwanted visual updates to the display."In some cases, swapchain creation may fail if exclusive full-screen mode is requested for application control, but for some implementation-specific reason exclusive full-screen access is unavailable for the particular combination of parameters provided. If this occurs,  will be returned.Note#In particular, it will fail if the  imageExtent member of  pCreateInfo does not match the extents of the monitor. Other reasons for failure may include the app not being set as high-dpi aware, or if the physical device and monitor are not compatible in this mode.Valid Usage (Implicit)device must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pSwapchain must be a valid pointer to a K handleHost SynchronizationHost access to pCreateInfo->surface must be externally synchronizedHost access to pCreateInfo->oldSwapchain must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , Kvulkan=A convenience wrapper to make a compatible pair of calls to  and To ensure that  is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.vulkan2vkDestroySwapchainKHR - Destroy a swapchain object DescriptionThe application must not destroy a swapchain until after completion of all outstanding operations on images that were acquired from the swapchain.  swapchain and all associated  handles are destroyed, and mustJ not be acquired or used any more by the application. The memory of each  will only be freed after that image is no longer used by the presentation engine. For example, if one image of the swapchain is being displayed in a window, the memory for that image may not be freed until the window is destroyed, or another swapchain is created for the window. Destroying the swapchain does not invalidate the parent L, and a new swapchain can be created with it.When a swapchain associated with a display surface is destroyed, if the image most recently presented to the display surface is from the swapchain being destroyed, then either any display resources modified by presenting images from any swapchain associated with the display surface must be reverted by the implementation to their state prior to the first present performed on one of these swapchains, or such resources must be left in their current state.If  swapchainU has exclusive full-screen access, it is released before the swapchain is destroyed. Valid Usage-All uses of presentable images acquired from  swapchain must have completed executionIf  were provided when  swapchain1 was created, a compatible set of callbacks must be provided hereIf no  were provided when  swapchain was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid  handleIf  swapchain is not ,  swapchain must be a valid K handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureBoth of device, and  swapchain7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  swapchain must be externally synchronizedSee Also, , Kvulkan]vkGetSwapchainImagesKHR - Obtain the array of presentable images associated with a swapchain DescriptionIf pSwapchainImages is NULL-, then the number of presentable images for  swapchain is returned in pSwapchainImageCount. Otherwise, pSwapchainImageCount mustG point to a variable set by the user to the number of elements in the pSwapchainImagesf array, and on return the variable is overwritten with the number of structures actually written to pSwapchainImages. If the value of pSwapchainImageCount4 is less than the number of presentable images for  swapchain , at most pSwapchainImageCount! structures will be written. If pSwapchainImageCount7 is smaller than the number of presentable images for  swapchain,  will be returned instead of > to indicate that not all the available values were returned.Valid Usage (Implicit)device must be a valid  handle swapchain must be a valid K handlepSwapchainImageCount must be a valid pointer to a uint32_t valueIf the value referenced by pSwapchainImageCount is not 0 , and pSwapchainImages is not NULL, pSwapchainImages must( be a valid pointer to an array of pSwapchainImageCount  handlesBoth of device, and  swapchain mustD have been created, allocated, or retrieved from the same / Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , K2ovulkan,acquireNextImageKHR with selectable safenessvulkanSvkAcquireNextImageKHR - Retrieve the index of the next available presentable image Valid Usage swapchain must not be in the retired stateIf  semaphore is not  it must be unsignaledIf  semaphore is not  it must; not have any uncompleted signal or wait operations pendingIf fence is not  it must be unsignaled and mustg not be associated with any other queue command that has not yet completed execution on that queue semaphore and fence must not both be equal to oIf the number of currently acquired images is greater than the difference between the number of images in  swapchain and the value of :: minImageCount$ as returned by a call to l with the surface used to create  swapchain, timeout must not be  UINT64_MAX semaphore must have a  of Valid Usage (Implicit)device must be a valid  handle swapchain must be a valid K handleIf  semaphore is not ,  semaphore must be a valid v handleIf fence is not , fence must be a valid  handle pImageIndex must be a valid pointer to a uint32_t valueIf  semaphore is a valid handle, it must6 have been created, allocated, or retrieved from deviceIf fence is a valid handle, it must6 have been created, allocated, or retrieved from deviceBoth of device, and  swapchain7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  swapchain must be externally synchronizedHost access to  semaphore must be externally synchronizedHost access to fence must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , v, Kvulkan A variant of  which makes a *safe* FFI callvulkan3vkQueuePresentKHR - Queue an image for presentation DescriptionNoteThere is no requirement for an application to present images in the same order that they were acquired - applications can arbitrarily present any image that is currently acquired. Valid UsageEach element of  pSwapchains member of  pPresentInfo musta be a swapchain that is created for a surface for which presentation is supported from queue$ as determined using a call to If more than one member of  pSwapchainsn was created from a display surface, all display surfaces referenced that refer to the same display must use the same display modedWhen a semaphore wait operation referring to a binary semaphore defined by the elements of the pWaitSemaphores member of  pPresentInfo executes on queue, there must6 be no other queues waiting on the same semaphoreAll elements of the pWaitSemaphores member of  pPresentInfo must/ be semaphores that are signaled, or have  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operations( previously submitted for executionAll elements of the pWaitSemaphores member of  pPresentInfo must be created with a  of All elements of the pWaitSemaphores member of  pPresentInfo must reference a semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) must' have also been submitted for execution;Any writes to memory backing the images referenced by the  pImageIndices and  pSwapchains members of  pPresentInfo, that are available before  is executed, are automatically made visible to the read access performed by the presentation engine. This automatic visibility operation for an image happens-after the semaphore signal operation, and happens-before the presentation engine accesses the image.4Queueing an image for presentation defines a set of queue operations, including waiting on the semaphores and submitting a presentation request to the presentation engine. However, the scope of this set of queue operations does not include the actual processing of the image by the presentation engine.NoteThe origin of the native orientation of the surface coordinate system is not specified in the Vulkan specification; it depends on the platform. For most platforms the origin is by default upper-left, meaning the pixel of the presented ` at coordinates (0,0) would appear at the upper left pixel of the platform surface (assuming ., and the display standing the right way up).If A fails to enqueue the corresponding set of queue operations, it may return  or ". If it does, the implementation must ensure that the state and contents of any resources or synchronization primitives referenced is unaffected by the call or its failure.If c fails in such a way that the implementation is unable to make that guarantee, the implementation must return .[However, if the presentation request is rejected by the presentation engine with an error , , or w, the set of queue operations are still considered to be enqueued and thus any semaphore wait operation specified in B will execute when the corresponding queue operation is complete.If any  swapchain member of  pPresentInfo was created with s,  will be returned if that swapchain does not have exclusive full-screen access, possibly for implementation-specific reasons outside of the application s control.Valid Usage (Implicit)queue must be a valid z handle pPresentInfo must be a valid pointer to a valid  structureHost SynchronizationHost access to queue must be externally synchronizedHost access to pPresentInfo->pWaitSemaphores[] must be externally synchronizedHost access to pPresentInfo->pSwapchains[] must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type | - x - w Any  -  Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, zvulkan`vkGetDeviceGroupPresentCapabilitiesKHR - Query present capabilities from other physical devices Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, vulkanRvkGetDeviceGroupSurfacePresentModesKHR - Query present capabilities for a surface Description:The modes returned by this command are not invariant, and mayT change in response to the surface being moved, resized, or occluded. These modes must' be a subset of the modes returned by .Valid Usage (Implicit)device must be a valid  handlesurface must be a valid L handlepModes must be a valid pointer to a  valueBoth of device, and surface must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to surface must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , L2pvulkan-acquireNextImage2KHR with selectable safenessvulkanTvkAcquireNextImage2KHR - Retrieve the index of the next available presentable image Valid UsagesIf the number of currently acquired images is greater than the difference between the number of images in the  swapchain member of  pAcquireInfo and the value of :: minImageCount$ as returned by a call to l with the surface used to create  swapchain, the timeout member of  pAcquireInfo must not be  UINT64_MAXValid Usage (Implicit)device must be a valid  handle pAcquireInfo must$ be a valid pointer to a valid  structure pImageIndex must be a valid pointer to a uint32_t value Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, vulkan A variant of  which makes a *safe* FFI callvulkanfvkGetPhysicalDevicePresentRectanglesKHR - Query present rectangles for a surface on a physical device DescriptionIf pRects is NULL@, then the number of rectangles used when presenting the given surface is returned in  pRectCount. Otherwise,  pRectCount mustG point to a variable set by the user to the number of elements in the pRectse array, and on return the variable is overwritten with the number of structures actually written to pRects. If the value of  pRectCount1 is less than the number of rectangles, at most  pRectCount structures will be written. If  pRectCount> is smaller than the number of rectangles used for the given surface,  will be returned instead of > to indicate that not all the available values were returned.;The values returned by this command are not invariant, and mayF change in response to the surface being moved, resized, or occluded.(The rectangles returned by this command must not overlap.Valid Usage (Implicit)physicalDevice must be a valid  handlesurface must be a valid L handle pRectCount must be a valid pointer to a uint32_t valueIf the value referenced by  pRectCount is not 0, and pRects is not NULL, pRects must( be a valid pointer to an array of  pRectCount p structuresBoth of physicalDevice, and surface mustD have been created, allocated, or retrieved from the same /Host SynchronizationHost access to surface must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, p, L vulkandevice+ is the device to create the swapchain for.vulkan pCreateInfo is a pointer to a ? structure specifying the parameters of the created swapchain.vulkan pAllocator is the allocator used for host memory allocated for the swapchain object when there is no more specific allocator available (see  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).vulkandevice is the  associated with  swapchain.vulkan swapchain is the swapchain to destroy.vulkan pAllocator is the allocator used for host memory allocated for the swapchain object when there is no more specific allocator available (see  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).vulkandevice is the device associated with  swapchain.vulkan swapchain is the swapchain to query.2ovulkandevice is the device associated with  swapchain.vulkan swapchainE is the non-retired swapchain from which an image is being acquired.vulkantimeoutR specifies how long the function waits, in nanoseconds, if no image is available.vulkan semaphore is  or a semaphore to signal.vulkanfence is  or a fence to signal.vulkandevice is the device associated with  swapchain.vulkan swapchainE is the non-retired swapchain from which an image is being acquired.vulkantimeoutR specifies how long the function waits, in nanoseconds, if no image is available.vulkan semaphore is  or a semaphore to signal.vulkanfence is  or a fence to signal.vulkandevice is the device associated with  swapchain.vulkan swapchainE is the non-retired swapchain from which an image is being acquired.vulkantimeoutR specifies how long the function waits, in nanoseconds, if no image is available.vulkan semaphore is  or a semaphore to signal.vulkanfence is  or a fence to signal.vulkanqueuez is a queue that is capable of presentation to the target surface s platform on the same device as the image s swapchain.vulkan pPresentInfo is a pointer to a 6 structure specifying parameters of the presentation.vulkandevice is the logical device.device must be a valid  handlevulkandevice is the logical device.vulkansurface is the surface.2pvulkandevice is the device associated with  swapchain.vulkan pAcquireInfo is a pointer to a 1 structure containing parameters of the acquire.vulkandevice is the device associated with  swapchain.vulkan pAcquireInfo is a pointer to a 1 structure containing parameters of the acquire.vulkandevice is the device associated with  swapchain.vulkan pAcquireInfo is a pointer to a 1 structure containing parameters of the acquire.vulkanphysicalDevice is the physical device.vulkansurface is the surface.KL[uwvxyz{|}~oqprstjk\]^_`lmnghiacfdeb     VWXYZuwvxyz{|}~oqprstlmnjkghiacfdeb^_`\][YZXWVLK          None("#%&'-./1789;=>?FHIMSUVX_dghklmq>@ XYZ YZXNone("#%&'-./1789;=>?FHIMSUVX_dghklmq>     '          None("#%&'-./1789;=>?FHIMSUVX_dghklmq>vulkanoVkSharedPresentSurfaceCapabilitiesKHR - structure describing capabilities of a surface for shared presentationValid Usage (Implicit)See AlsoQ, vulkan sharedPresentSupportedUsageFlags is a bitmask of g( representing the ways the application canA use the shared presentable image from a swapchain created with  set to  or , for the surface on the specified device. w must, be included in the set but implementations may support additional usages.vulkan2vkGetSwapchainStatusKHR - Get a swapchain s statusValid Usage (Implicit)device must be a valid  handle swapchain must be a valid K handleBoth of device, and  swapchain mustD have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  swapchain must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, Kvulkandevice is the device associated with  swapchain.vulkan swapchain is the swapchain to query.KKNone("#%&'-./1789;=>?FHIMSUVX_dghklmq? 3 lvulkanNVkSurfaceFormat2KHR - Structure describing a supported swapchain format tupleValid Usage (Implicit)See Also, ,  mvulkanKVkSurfaceCapabilities2KHR - Structure describing capabilities of a surfaceValid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of X, , , or The sType value of each struct in the pNext chain must be uniqueSee Also, , nvulkankVkPhysicalDeviceSurfaceInfo2KHR - Structure specifying a surface and related swapchain creation parameters DescriptionThe members of n" correspond to the arguments to m, with sType and pNext added for extensibility.%Additional capabilities of a surface may be available to swapchains created with different full-screen exclusive settings - particularly if exclusive full-screen access is application controlled. These additional capabilities can be queried by adding a  structure to the pNext chain of this structure when used to query surface properties. Additionally, for Win32 surfaces with application controlled exclusive full-screen access, chaining a  structure may also report additional surface capabilities. These additional capabilities only apply to swapchains created with the same parameters included in the pNext chain of [. Valid UsageIf the pNext chain includes a  structure with its fullScreenExclusive member set to s , and surface was created using  , a  structure must be included in the pNext chainValid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of  or The sType value of each struct in the pNext chain must be uniquesurface must be a valid L handleSee Also, L, , ,  , pvulkan surfaceFormat is a ` structure describing a format-color space pair that is compatible with the specified surface.vulkanpNext is NULL6 or a pointer to a structure extending this structure.vulkansurfaceCapabilities is a A structure describing the capabilities of the specified surface.vulkanpNext is NULL6 or a pointer to a structure extending this structure.vulkansurface; is the surface that will be associated with the swapchain.vulkandvkGetPhysicalDeviceSurfaceCapabilities2KHR - Reports capabilities of a surface on a physical device Description behaves similarly to m, with the ability to specify extended inputs via chained input structures, and to return extended information via chained output structures. Valid Usage If a # structure is included in the pNext chain of pSurfaceCapabilities , a  structure must be included in the pNext chain of  pSurfaceInfoValid Usage (Implicit)physicalDevice must be a valid  handle pSurfaceInfo must$ be a valid pointer to a valid n structurepSurfaceCapabilities must be a valid pointer to a m structure Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, n, m vulkanQvkGetPhysicalDeviceSurfaceFormats2KHR - Query color formats supported by surface Description  behaves similarly to o', with the ability to be extended via pNext chains.If pSurfaceFormats is NULL<, then the number of format tuples supported for the given surface is returned in pSurfaceFormatCount. Otherwise, pSurfaceFormatCount mustG point to a variable set by the user to the number of elements in the pSurfaceFormatsf array, and on return the variable is overwritten with the number of structures actually written to pSurfaceFormats. If the value of pSurfaceFormatCount> is less than the number of format tuples supported, at most pSurfaceFormatCount! structures will be written. If pSurfaceFormatCount` is smaller than the number of format tuples supported for the surface parameters described in  pSurfaceInfo,  will be returned instead of > to indicate that not all the available values were returned. Valid UsagepSurfaceInfo->surface must be supported by physicalDevice, as reported by 2 or an equivalent platform-specific mechanismValid Usage (Implicit)physicalDevice must be a valid  handle pSurfaceInfo must$ be a valid pointer to a valid n structurepSurfaceFormatCount must be a valid pointer to a uint32_t valueIf the value referenced by pSurfaceFormatCount is not 0 , and pSurfaceFormats is not NULL, pSurfaceFormats must( be a valid pointer to an array of pSurfaceFormatCount l structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, n, lvulkanphysicalDevicee is the physical device that will be associated with the swapchain to be created, as described for .vulkan pSurfaceInfo is a pointer to a nY structure describing the surface and other fixed parameters that would be consumed by . vulkanphysicalDevicee is the physical device that will be associated with the swapchain to be created, as described for .vulkan pSurfaceInfo is a pointer to a nY structure describing the surface and other fixed parameters that would be consumed by .HLlmn      e nmlL          None("#%&'-./1789;=>?FHIMSUVX_dghklmq?PSvulkanaVkDisplayPresentInfoKHR - Structure describing parameters of a queue presentation to a swapchain DescriptionIf the extent of the srcRect and dstRectA are not equal, the presented pixels will be scaled accordingly. Valid UsagesrcRect mustP specify a rectangular region that is a subset of the image being presenteddstRect must; specify a rectangular region that is a subset of the  visibleRegionF parameter of the display mode the swapchain being presented usesIf the persistentContent member of the ! structure returned by T9 for the display the present operation targets then  persistent must be .Valid Usage (Implicit)sType must be ySee Alsoo, p,  vulkansrcRect2 is a rectangular region of pixels to present. It must/ be a subset of the image being presented. If ST is not specified, this region will be assumed to be the entire presentable image. vulkandstRectX is a rectangular region within the visible region of the swapchain s display mode. If S5 is not specified, this region will be assumed to be the entire visible region of the visible region of the swapchain s mode. If the specified rectangle is a subset of the display mode s visible region, content from display planes below the swapchain s plane will be visible outside the rectangle. If there are no planes below the swapchain s, the area outside the specified rectangle will be black. If portions of the specified rectangle are outside of the display s visible region, pixels mapping only to those portions of the rectangle will be discarded. vulkan persistent : If this is .$, the display engine will enable buffered mode on displays that support it. This allows the display engine to stop sending content to the display until a new image is presented. The display will instead maintain a copy of the last presented image. This allows less power to be used, but may# increase presentation latency. If S5 is not specified, persistent mode will not be used. vulkanWvkCreateSharedSwapchainsKHR - Create multiple swapchains that share presentable images Description  is similar to %, except that it takes an array of 8 structures, and returns an array of swapchain objects._The swapchain creation parameters that affect the properties and number of presentable images must match between all the swapchains. If the displays used by any of the swapchains do not use the same presentable image layout or are incompatible in a way that prevents sharing images, swapchain creation will fail with the result code `. If any error occurs, no swapchains will be created. Images presented to multiple swapchains mustB be re-acquired from all of them before transitioning away from Hh. After destroying one or more of the swapchains, the remaining swapchains and the presentable images can continue to be used.Valid Usage (Implicit)device must be a valid  handle pCreateInfos must( be a valid pointer to an array of swapchainCount valid  structuresIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pSwapchains must( be a valid pointer to an array of swapchainCount K handlesswapchainCount must be greater than 0Host SynchronizationHost access to  pCreateInfos [].surface must be externally synchronizedHost access to  pCreateInfos[].oldSwapchain must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , K vulkandevice, is the device to create the swapchains for.vulkan pCreateInfos is a pointer to an array of A structures specifying the parameters of the created swapchains.vulkan pAllocator is the allocator used for host memory allocated for the swapchain objects when there is no more specific allocator available (see  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).SKLS    uwvxyz{|}~     XYZ     y S        LKuwvxyz{|}~          YZXNone("#%&'-./1789;=>?FHIMSUVX_dghklmq@2LvulkanpVkDisplaySurfaceCreateInfoKHR - Structure specifying parameters of a newly created display plane surface object DescriptionNoteCreating a display surface must] not modify the state of the displays, planes, or other resources it names. For example, it must not apply the specified mode to be set on the associated display. Application of display configuration occurs as a side effect of presenting to a display surface. Valid Usage planeIndex mustf be less than the number of display planes supported by the device as determined by calling  WIf the planeReorderPossible member of the M structure returned by  V' for the display corresponding to  displayMode is . then planeStackIndex mustf be less than the number of display planes supported by the device as determined by calling  W; otherwise planeStackIndex must equal the currentStackIndex member of N returned by  W- for the display plane corresponding to  displayModeIf  alphaMode is  T then  globalAlpha must be between 0 and 1 , inclusive alphaMode must be 0( or one of the bits present in the supportedAlpha member of O returned by  [- for the display plane corresponding to  displayModeThe width and height members of  imageExtent must be less than the maxImageDimensions2D member of  lValid Usage (Implicit)sType must be xpNext must be NULLflags must be 0 displayMode must be a valid P handle transform must be a valid  value alphaMode must be a valid  # valueSee AlsoP,  #,  %, t, , ,  \MvulkanJVkDisplayPropertiesKHR - Structure describing an available display device DescriptionNoteIFor devices which have no natural value to return here, implementations should) return the maximum resolution supported.NotePersistent presents may have higher latency, and may use less power when the screen content is updated infrequently, or when only a portion of the screen needs to be updated in most frames.See Alsoo, Q, *, t, ,  VNvulkanLVkDisplayPlanePropertiesKHR - Structure describing display plane propertiesSee AlsoQ, ',  WOvulkanbVkDisplayPlaneCapabilitiesKHR - Structure describing capabilities of a mode and plane combination DescriptionThe minimum and maximum position and extent fields describe the implementation limits, if any, as they apply to the specified display mode and plane. Vendors may support displaying a subset of a swapchain s presentable images on the specified display plane. This is expressed by returning minSrcPosition, maxSrcPosition,  minSrcExtent, and  maxSrcExtent? values that indicate a range of possible positions and sizes may be used to specify the region within the presentable images that source pixels will be read from when creating a swapchain on the specified display mode and plane.Vendors may also support mapping the presentable images  content to a subset or superset of the visible region in the specified display mode. This is expressed by returning minDstPosition, maxDstPosition,  minDstExtent and  maxDstExtent? values that indicate a range of possible positions and sizes mayb be used to describe the region within the display mode that the source pixels will be mapped to.Other vendors maya support only a 1-1 mapping between pixels in the presentable images and the display mode. This may& be indicated by returning (0,0) for minSrcPosition, maxSrcPosition, minDstPosition, and maxDstPosition5, and (display mode width, display mode height) for  minSrcExtent,  maxSrcExtent,  minDstExtent, and  maxDstExtent.These values indicate the limits of the implementation s individual fields. Not all combinations of values within the offset and extent ranges returned in O] are guaranteed to be supported. Presentation requests specifying unsupported combinations may fail.See Also ", %, t, r,  [PvulkanJVkDisplayModePropertiesKHR - Structure describing display mode propertiesSee AlsoP, Q, #,  YQvulkandVkDisplayModeParametersKHR - Structure describing display parameters associated with a display mode DescriptionNote0For example, a 60Hz display mode would report a  refreshRate of 60,000. Valid UsageThe width member of  visibleRegion must be greater than 0The height member of  visibleRegion must be greater than 0 refreshRate must be greater than 0See AlsoR, P, tRvulkandVkDisplayModeCreateInfoKHR - Structure specifying parameters of a newly created display mode objectValid Usage (Implicit)See Also ', Q, ,  Z #vulkan4VkDisplayPlaneAlphaFlagBitsKHR - Alpha blending typeSee Also ", L %vulkan8VkDisplaySurfaceCreateFlagsKHR - Reserved for future use Description %Q is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoL 'vulkan5VkDisplayModeCreateFlagsKHR - Reserved for future use Description 'Q is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoR *vulkanflags! is reserved for future use, and must be zero. +vulkan displayMode is a PA handle specifying the mode to use when displaying this surface. ,vulkan planeIndex, is the plane on which this surface appears. -vulkanplaneStackIndex is the z-order of the plane. .vulkan transform is a [ value specifying the transformation to apply to images as part of the scanout operation. /vulkan globalAlpha6 is the global alpha value. This value is ignored if  alphaMode is not  T. 0vulkan alphaMode is a  #5 value specifying the type of alpha blending to use. 1vulkan imageExtent= The size of the presentable images to use with the surface. 3vulkansupportedAlpha is a bitmask of  #0 describing the supported alpha blending modes. 4vulkanminSrcPositionZ is the minimum source rectangle offset supported by this plane using the specified mode. 5vulkanmaxSrcPosition_ is the maximum source rectangle offset supported by this plane using the specified mode. The x and y components of maxSrcPosition must& each be greater than or equal to the x and y components of minSrcPosition, respectively. 6vulkan minSrcExtentX is the minimum source rectangle size supported by this plane using the specified mode. 7vulkan maxSrcExtentX is the maximum source rectangle size supported by this plane using the specified mode. 8vulkanminDstPosition, maxDstPosition,  minDstExtent,  maxDstExtent4 all have similar semantics to their corresponding *Src* equivalents, but apply to the output region within the mode rather than the input region within the source image. Unlike the *Src* offsets, minDstPosition and maxDstPosition may contain negative values. =vulkanflags! is reserved for future use, and must be zero.flags must be 0 >vulkan parameters is a Q structure describing the display parameters to use in creating the new mode. If the parameters are not compatible with the specified display, the implementation must return . parameters must be a valid Q structure @vulkan displayMode is a handle to the display mode described in this structure. This handle will be valid for the lifetime of the Vulkan instance. Avulkan parameters is a Q> structure describing the display parameters associated with  displayMode. Cvulkan visibleRegion) is the 2D extents of the visible region. Dvulkan refreshRate is a uint32_tV that is the number of times the display is refreshed each second multiplied by 1000. FvulkancurrentDisplay is the handle of the display the plane is currently associated with. If the plane is not currently attached to any displays, this will be . GvulkancurrentStackIndexY is the current z-order of the plane. This will be between 0 and the value returned by  W in pPropertyCount. Ivulkandisplay is a handle that is used to refer to the display described here. This handle will be valid for the lifetime of the Vulkan instance. Jvulkan displayName is a pointer to a null-terminated UTF-8 string containing the name of the display. Generally, this will be the name provided by the display s EDID. It can be NULL+ if no suitable name is available. If not NULL, the memory it points to must remain accessible as long as display is valid. KvulkanphysicalDimensions` describes the physical width and height of the visible portion of the display, in millimeters. LvulkanphysicalResolutionI describes the physical, native, or preferred resolution of the display. MvulkansupportedTransforms is a bitmask of < describing which transforms are supported by this display. NvulkanplaneReorderPossible* tells whether the planes on this display can* have their z order changed. If this is ., the application canL re-arrange the planes on this display in any order relative to each other. OvulkanpersistentContentg tells whether the display supports self-refresh/internal buffering. If this is true, the application canS submit persistent present operations on swapchains created against this display. Rvulkan R is equivalent to  Sp, except the source alpha values are assumed to be premultiplied into the source image s other color channels. Svulkan S specifies that the alpha value will be determined by the alpha channel of the source image s pixels. If the source format contains no alpha values, no blending will be applied. The source alpha values are not premultiplied into the source image s other color channels. Tvulkan T& specifies that a global alpha value mustF be specified that will be applied to all pixels in the source image. Uvulkan U< specifies that the source image will be treated as opaque. VvulkanYvkGetPhysicalDeviceDisplayPropertiesKHR - Query information about the available displays DescriptionIf  pProperties is NULL4, then the number of display devices available for physicalDevice is returned in pPropertyCount. Otherwise, pPropertyCount mustG point to a variable set by the user to the number of elements in the  pPropertiesf array, and on return the variable is overwritten with the number of structures actually written to  pProperties. If the value of pPropertyCount1 is less than the number of display devices for physicalDevice , at most pPropertyCount! structures will be written. If pPropertyCount> is smaller than the number of display devices available for physicalDevice,  will be returned instead of > to indicate that not all the available values were returned.Valid Usage (Implicit)physicalDevice must be a valid  handlepPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount M structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee AlsoM,  WvulkanJvkGetPhysicalDeviceDisplayPlanePropertiesKHR - Query the plane properties DescriptionIf  pProperties is NULL3, then the number of display planes available for physicalDevice is returned in pPropertyCount. Otherwise, pPropertyCount mustG point to a variable set by the user to the number of elements in the  pPropertiesf array, and on return the variable is overwritten with the number of structures actually written to  pProperties. If the value of pPropertyCount0 is less than the number of display planes for physicalDevice , at most pPropertyCount structures will be written.Valid Usage (Implicit)physicalDevice must be a valid  handlepPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount N structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee AlsoN,  XvulkanTvkGetDisplayPlaneSupportedDisplaysKHR - Query the list of displays a plane supports DescriptionIf  pDisplays is NULL9, then the number of displays usable with the specified  planeIndex for physicalDevice is returned in  pDisplayCount . Otherwise,  pDisplayCount mustG point to a variable set by the user to the number of elements in the  pDisplaysc array, and on return the variable is overwritten with the number of handles actually written to  pDisplays. If the value of  pDisplayCount0 is less than the number of display planes for physicalDevice , at most  pDisplayCount handles will be written. If  pDisplayCountC is smaller than the number of displays usable with the specified  planeIndex for physicalDevice,  will be returned instead of > to indicate that not all the available values were returned. Valid Usage planeIndex mustf be less than the number of display planes supported by the device as determined by calling  WValid Usage (Implicit)physicalDevice must be a valid  handle pDisplayCount must be a valid pointer to a uint32_t valueIf the value referenced by  pDisplayCount is not 0 , and  pDisplays is not NULL,  pDisplays must( be a valid pointer to an array of  pDisplayCount Q handles Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee AlsoQ,  YvulkanZvkGetDisplayModePropertiesKHR - Query the set of mode properties supported by the display DescriptionIf  pProperties is NULL?, then the number of display modes available on the specified display for physicalDevice is returned in pPropertyCount . Otherwise, pPropertyCount mustG point to a variable set by the user to the number of elements in the  pPropertiesf array, and on return the variable is overwritten with the number of structures actually written to  pProperties. If the value of pPropertyCount/ is less than the number of display modes for physicalDevice , at most pPropertyCount structures will be written. If pPropertyCountJ is smaller than the number of display modes available on the specified display for physicalDevice,  will be returned instead of > to indicate that not all the available values were returned.Valid Usage (Implicit)physicalDevice must be a valid  handledisplay must be a valid Q handlepPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount P structuresdisplay must6 have been created, allocated, or retrieved from physicalDevice Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee AlsoQ, P,  Zvulkan.vkCreateDisplayModeKHR - Create a display modeValid Usage (Implicit)physicalDevice must be a valid  handledisplay must be a valid Q handle pCreateInfo must$ be a valid pointer to a valid R structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepMode must be a valid pointer to a P handledisplay must6 have been created, allocated, or retrieved from physicalDeviceHost SynchronizationHost access to display must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, Q, R, P,  [vulkanVvkGetDisplayPlaneCapabilitiesKHR - Query capabilities of a mode and plane combinationValid Usage (Implicit)physicalDevice must be a valid  handlemode must be a valid P handle pCapabilities must be a valid pointer to a O structureHost SynchronizationHost access to mode must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee AlsoP, O,  \vulkan+vkCreateDisplayPlaneSurfaceKHR - Create a L1 structure representing a display plane and modeValid Usage (Implicit)instance must be a valid  handle pCreateInfo must$ be a valid pointer to a valid L structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a L handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, L, , L VvulkanphysicalDevice is a physical device. WvulkanphysicalDevice is a physical device. XvulkanphysicalDevice is a physical device.vulkan planeIndex8 is the plane which the application wishes to use, and must6 be in the range [0, physical device plane count - 1]. YvulkanphysicalDevice( is the physical device associated with display.vulkandisplay is the display to query. ZvulkanphysicalDevice( is the physical device associated with display.vulkandisplay1 is the display to create an additional mode for.vulkan pCreateInfo is a R. structure describing the new mode to create.vulkan pAllocator is the allocator used for host memory allocated for the display mode object when there is no more specific allocator available (see  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation). [vulkanphysicalDevice( is the physical device associated with displayvulkanmode is the display mode the application intends to program when using the specified plane. Note this parameter also implicitly specifies a display.vulkan planeIndex is the plane which the application intends to use with the display, and is less than the number of display planes supported by the device. \vulkaninstanceR is the instance corresponding to the physical device the targeted display is on.vulkan pCreateInfo is a pointer to a L[ structure specifying which mode, plane, and other parameters to use, as described below.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).VLPQL ) . * , 1 + - / 0M H I M J K L N ON E F GO 2 3 4 5 6 7 8 9 : ;P ? @ AQ B C DR < = > ! " # U T S R $ % & ' ( P Q V W X Y Z [ \c V W X Y Z [ \M H I M J K L N ON E F GQ B C DP ? @ AR < = >O 2 3 4 5 6 7 8 9 : ;L ) . * , 1 + - / 0 ' ( % & # U T S R $ U T S R " ! Q PQPLNone("#%&'-./1789;=>?FHIMSUVX_dghklmq@MfvulkanKVkDisplayProperties2KHR - Structure describing an available display deviceValid Usage (Implicit)See AlsoM, ,  gvulkanOVkDisplayPlaneProperties2KHR - Structure describing an available display planeValid Usage (Implicit)See AlsoN, ,  hvulkanZVkDisplayPlaneInfo2KHR - Structure defining the intended configuration of a display plane DescriptionNote3This parameter also implicitly specifies a display. planeIndexI is the plane which the application intends to use with the display.The members of h! correspond to the arguments to L, with sType and pNext added for extensibility.Valid Usage (Implicit)sType must be pNext must be NULLmode must be a valid P handleHost SynchronizationHost access to mode must be externally synchronizedSee AlsoP, ,  ivulkangVkDisplayPlaneCapabilities2KHR - Structure describing the capabilities of a mode and plane combinationValid Usage (Implicit)See AlsoO, ,  jvulkanMVkDisplayModeProperties2KHR - Structure describing an available display modeValid Usage (Implicit)See AlsoP, ,  vulkan capabilities is a O structure. vulkanmodeX is the display mode the application intends to program when using the specified plane. vulkandisplayModeProperties is a P structure. vulkandisplayPlaneProperties is a N structure. vulkandisplayProperties is a M structure. vulkanZvkGetPhysicalDeviceDisplayProperties2KHR - Query information about the available displays Description  behaves similarly to TR, with the ability to return extended information via chained output structures.Valid Usage (Implicit)physicalDevice must be a valid  handlepPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount f structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Alsof,  vulkanfvkGetPhysicalDeviceDisplayPlaneProperties2KHR - Query information about the available display planes. Description  behaves similarly to RR, with the ability to return extended information via chained output structures.Valid Usage (Implicit)physicalDevice must be a valid  handlepPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount g structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Alsog,  vulkanVvkGetDisplayModeProperties2KHR - Query information about the available display modes. Description  behaves similarly to JQ, with the ability to return extended information via chained output structures.Valid Usage (Implicit)physicalDevice must be a valid  handledisplay must be a valid Q handlepPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount j structuresdisplay must6 have been created, allocated, or retrieved from physicalDevice Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee AlsoQ, j,  vulkanWvkGetDisplayPlaneCapabilities2KHR - Query capabilities of a mode and plane combination Description  behaves similarly to L, with the ability to specify extended inputs via chained input structures, and to return extended information via chained output structures. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Alsoi, h,  vulkanphysicalDevice is a physical device. vulkanphysicalDevice is a physical device. vulkanphysicalDevice( is the physical device associated with display.vulkandisplay is the display to query. vulkanphysicalDevice) is the physical device associated with pDisplayPlaneInfo.physicalDevice must be a valid  handlevulkanpDisplayPlaneInfo is a pointer to a h* structure describing the plane and mode.pDisplayPlaneInfo must be a valid pointer to a valid h structureOPQM H I M J K L N ON E F GO 2 3 4 5 6 7 8 9 : ;P ? @ AQ B C Df g h i j  " # $ U T S R \ f g j h i QPM H I M J K L N ON E F GQ B C DP ? @ AO 2 3 4 5 6 7 8 9 : ; # $ U T S R U T S R "None("#%&'-./1789;=>?FHIMSUVX_dghklmq@oQKL[jk\]^_`lmnghiacfdebXYZ X LKlmnjkghiacfdeb^_`\][YZXNone("#%&'-./1789;=>?FHIMSUVX_dghklmqA<Kvulkan7VkDeferredOperationInfoKHR - Deferred operation request DescriptionThe application can{ request deferral of an operation by adding this structure to the argument list of a command or by providing this in the pNext chain of a relevant structure for an operation when the corresponding command is invoked. If this structure is not present, no deferral is requested. If operationHandle is >, no deferral is requested and the command proceeds as if no K structure was provided.HWhen an application requests an operation deferral, the implementation mayr defer the operation. When deferral is requested and the implementation defers any operation, the implementation must return ] as the success code if no errors occurred. When deferral is requested, the implementation should defer the operation when the workload is significant, however if the implementation chooses not to defer any of the requested operations and instead executes all of them immediately, the implementation must return , as the success code if no errors occurred. A deferred operation is created complete" with an initial result value of ". The deferred operation becomes pending= when an operation has been successfully deferred with that operationHandle.yA deferred operation is considered pending until the deferred operation completes. A pending deferred operation becomes completez when it has been fully executed by one or more threads. Pending deferred operations will never complete until they are joined" by an application thread, using  . Applications cany join multiple threads to the same deferred operation, enabling concurrent execution of subtasks within that operation.The application can query the status of a R using the   or   commands.nFrom the perspective of other commands - parameters to the original command that are externally synchronized must not be accessed before the deferred operation completes, and the result of the deferred operation (e.g. object creation) are not considered complete until the deferred operation completes.oIf the deferred operation is one which creates an object (for example, a pipeline object), the implementation mustm allocate that object as it normally would, and return a valid handle to the application. This object is a pending object, and must not be used by the application until the deferred operation is completed (unless otherwise specified by the deferral extension). When the deferred operation is complete, the application should call  , to obtain the result of the operation. If  % indicates failure, the application must destroy the pending object using an appropriate command, so that the implementation has an opportunity to recover the handle. The application must not perform this destruction until the deferred operation is complete. Construction of the pending object uses the same allocator which would have been used if the operation had not been deferred. Valid Usage>Any previous deferred operation that was associated with operationHandle must be completeValid Usage (Implicit)sType must be fSee AlsoR,  vulkanoperationHandleL is a handle to a tracking object to associate with the deferred operation. vulkanAvkCreateDeferredOperationKHR - Create a deferred operation handleValid Usage (Implicit)device must be a valid  handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepDeferredOperation must be a valid pointer to a R handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, R,  vulkan=A convenience wrapper to make a compatible pair of calls to   and  To ensure that   is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument. vulkanCvkDestroyDeferredOperationKHR - Destroy a deferred operation handle Valid UsageIf  were provided when  operation1 was created, a compatible set of callbacks must be provided hereIf no  were provided when  operation was created,  pAllocator must be NULL operation must be completedValid Usage (Implicit)device must be a valid  handleIf  operation is not ,  operation must be a valid R handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf  operation is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  operation must be externally synchronizedSee Also, R,  vulkan`vkGetDeferredOperationMaxConcurrencyKHR - Query the maximum concurrency on a deferred operation Description*The returned value is the maximum number of threads that can usefully execute a deferred operation concurrently, reported for the state of the deferred operation at the point this command is called. This value is intended to be used to better schedule work onto available threads. Applications cant join any number of threads to the deferred operation and expect it to eventually complete, though excessive joins may return ) immediately, performing no useful work.If  operation is complete,   returns zero.If  operationI is currently joined to any threads, the value returned by this command may immediately be out of date.If  operation is pending, implementations mustD not return zero unless at least one thread is currently executing   on  operation0. If there are such threads, the implementation shouldX return an estimate of the number of additional threads which it could profitably use.Implementations mayr return 232-1 to indicate that the maximum concurrency is unknown and cannot be easily derived. Implementations mays return values larger than the maximum concurrency available on the host CPU. In these situations, an application shouldA clamp the return value rather than oversubscribing the machine.NoteThe recommended usage pattern for applications is to query this value once, after deferral, and schedule no more than the specified number of threads to join the operation. Each time a joined thread receives q, the application should schedule an additional join at some point in the future, but is not required to do so.Valid Usage (Implicit)See AlsoR,  vulkanKvkGetDeferredOperationResultKHR - Query the result of a deferred operation Description&If the deferred operation is pending,   returns .#If no command has been deferred on  operation,   returns .QOtherwise, it returns the result of the previous deferred operation. This value must be one of the _h values which could have been returned by the original command if the operation had not been deferred. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessSee AlsoR,  vulkanDvkDeferredOperationJoinKHR - Assign a thread to a deferred operation DescriptionThe  Q command will execute a portion of the deferred operation on the calling thread..The return value will be one of the following:A return value of  indicates that  operation is complete. The application should use   to retrieve the result of  operation.A return value of  indicates that the deferred operation is not complete, but there is no work remaining to assign to threads. Future calls to  I are not necessary and will simply harm performance. This situation may) occur when other threads executing   are about to complete  operationN, and the implementation is unable to partition the workload any further.A return value of  indicates that the deferred operation is not complete, and there is no work for the thread to do at the time of the call. This situation may` occur if the operation encounters a temporary reduction in parallelism. By returning , the implementation is signaling that it expects that more opportunities for parallelism will emerge as execution progresses, and that future calls to   can6 be beneficial. In the meantime, the application can* perform other work on the calling thread.Implementations mustC guarantee forward progress by enforcing the following invariants: If only one thread has invoked  ( on a given operation, that thread must5 execute the operation to completion and return .3If multiple threads have concurrently invoked  7 on the same operation, then at least one of them must( complete the operation and return .Valid Usage (Implicit)device must be a valid  handle operation must be a valid R handle operation must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee AlsoR,  vulkandevice is the device which owns  operation.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter. vulkandevice is the device which owns  operation.vulkan operation, is the completed operation to be destroyed.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter. vulkandevice is the device which owns  operation.device must be a valid  handlevulkan operation) is the deferred operation to be queried. operation must be a valid R handle operation must2 have been created, allocated, or retrieved from device vulkandevice is the device which owns  operation.device must be a valid  handlevulkan operation9 is the operation whose deferred result is being queried. operation must be a valid R handle operation must2 have been created, allocated, or retrieved from device vulkandevice is the device which owns  operation.vulkan operationC is the deferred operation that the calling thread should work on.RK  K RNone("#%&'-./1789;=>?FHIMSUVX_dghklmqA JvulkanjVkAndroidSurfaceCreateInfoKHR - Structure specifying parameters of a newly created Android surface objectValid Usage (Implicit)See Also , , ! vulkan8VkAndroidSurfaceCreateFlagsKHR - Reserved for future use Description Q is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoJ!vulkanflags is reserved for future use.flags must be 0!vulkanwindow is a pointer to the   to associate the surface with.window must point to a valid Android  !vulkan&vkCreateAndroidSurfaceKHR - Create a L% object for an Android native window Description=During the lifetime of a surface created using a particular  = handle any attempts to create another surface for the same  * and any attempts to connect to the same  - through other platform mechanisms will fail.NoteIn particular, only one L canA exist at a time for a given window. Similarly, a native window cannot be used by both a L and  EGLSurface simultaneously.If successful, ! increments the   s reference count, and $ will decrement it.On Android, when a swapchain s  imageExtent does not match the surface s  currentExtentZ, the presentable images will be scaled to the surface s dimensions during presentation. minImageExtent is (1,1), and maxImageExtentR is the maximum image size supported by the consumer. For the system compositor,  currentExtent: is the window size (i.e. the consumer s preferred size).Valid Usage (Implicit)instance must be a valid  handle pCreateInfo must$ be a valid pointer to a valid J structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a L handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, J, , L!vulkaninstance/ is the instance to associate the surface with.vulkan pCreateInfo is a pointer to a JO structure containing parameters affecting the creation of the surface object.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).LJ !! !!!!J !! ! ! LNone("#%&'-./1789;=>?FHIMSUVX_dghklmqB$Avulkan@VkPerformanceParameterTypeINTEL - Parameters that can be queriedSee Also!LBvulkanuVkQueryPoolPerformanceQueryCreateInfoINTEL - Structure specifying parameters to create a pool of performance queriesMembers5To create a pool for Intel performance queries, set :+:: queryType to #N and add a B structure to the pNext chain of the :+ structure.Valid Usage (Implicit)See Also!, CvulkanZVkPerformanceValueINTEL - Container for value and types of parameters that can be queriedValid Usage (Implicit)type must be a valid ! valueIf type is !8 , the  valueString member of data must' be a null-terminated UTF-8 stringSee Also!, !, !LDvulkanUVkPerformanceStreamMarkerInfoINTEL - Structure specifying stream performance markers Valid Usage*The value written by the application into marker must. only used the valid bits as reported by !L with the !=Valid Usage (Implicit)sType must be <pNext must be NULLSee Also, !GEvulkan:VkPerformanceOverrideInfoINTEL - Performance override infoValid Usage (Implicit)See Alsoo, !, , !HFvulkanGVkPerformanceMarkerInfoINTEL - Structure specifying performance markersValid Usage (Implicit)See Also, !FGvulkanaVkPerformanceConfigurationAcquireInfoINTEL - Acquire a configuration to capture performance dataValid Usage (Implicit)See Also!, , !IHvulkanbVkInitializePerformanceApiInfoINTEL - Structure specifying parameters of initialize of the deviceValid Usage (Implicit)See Also, !D!vulkanHVkPerformanceValueTypeINTEL - Type of the parameters that can be queriedSee AlsoC!vulkan:VkPerformanceOverrideTypeINTEL - Performance override typeSee AlsoE!vulkanZVkQueryPoolSamplingModeINTEL - Enum specifying how performance queries should be capturedSee AlsoB!vulkanGVkPerformanceConfigurationTypeINTEL - Type of performance configurationSee AlsoG!&vulkantype is one of the !: type of performance configuration that will be acquired.type must be a valid ! value!(vulkantype is the particular ! to set.type must be a valid ! value!)vulkanenable) defines whether the override is enabled.!*vulkan parameter4 is a potential required parameter for the override.!,vulkanmarkera is the marker value that will be recorded into the reports consumed by an external application.!.vulkanmarkerJ is the marker value that will be recorded into the opaque query results.!0vulkanperformanceCountersSampling6 describe how performance queries should be captured.performanceCountersSampling must be a valid ! value!2vulkan pUserData# is a pointer for application data.!4vulkantype is a !1 value specifying the type of the returned data.!5vulkandata is a !2 union specifying the value of the returned data.!=vulkan!=R has a 32 bits integer result which tells how many bits can be written into the C value.!>vulkan!>M has a boolean result which tells whether hardware counters can be captured.!?vulkan!? stalls the stream of commands until all previously emitted commands have completed and all caches been flushed and invalidated.!@vulkan!@+ turns all rendering operations into noop.!Avulkan!A5 is the default mode in which the application calls 7 and 9 to record performance data.!DvulkanNvkInitializePerformanceApiINTEL - Initialize a device for performance queries Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, H!EvulkanRvkUninitializePerformanceApiINTEL - Uninitialize a device for performance queriesValid Usage (Implicit)See Also!Fvulkan(vkCmdSetPerformanceMarkerINTEL - Markers ParametersfThe last marker set onto a command buffer before the end of a query will be part of the query result.Valid Usage (Implicit) commandBuffer must be a valid  handle pMarkerInfo must$ be a valid pointer to a valid F structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must7 support graphics, compute, or transfer operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type v Primary Secondary j Both g Graphics Compute Transfer   Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, F!Gvulkan.vkCmdSetPerformanceStreamMarkerINTEL - MarkersValid Usage (Implicit) commandBuffer must be a valid  handle pMarkerInfo must$ be a valid pointer to a valid D structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must7 support graphics, compute, or transfer operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type v Primary Secondary j Both g Graphics Compute Transfer   Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, D!Hvulkan@vkCmdSetPerformanceOverrideINTEL - Performance override settings Valid Usage pOverrideInfo must not be used with a !( that is not reported available by !LValid Usage (Implicit) commandBuffer must be a valid  handle pOverrideInfo must$ be a valid pointer to a valid E structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must7 support graphics, compute, or transfer operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type v Primary Secondary j Both g Graphics Compute Transfer   Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, E!IvulkanRvkAcquirePerformanceConfigurationINTEL - Acquire the performance query capability Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, G, N!Jvulkan]vkReleasePerformanceConfigurationINTEL - Release a configuration to capture performance data Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, N!KvulkanAvkQueueSetPerformanceConfigurationINTEL - Set a performance queryValid Usage (Implicit)queue must be a valid z handle configuration must be a valid N handleBoth of  configuration, and queue must? have been created, allocated, or retrieved from the same Command Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type | - x - w Any  -  Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee AlsoN, z!LvulkanNvkGetPerformanceParameterINTEL - Query performance capabilities of the device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, A, C!Dvulkandevice, is the logical device used for the queries.device must be a valid  handlevulkanpInitializeInfo is a pointer to a H1 structure specifying initialization parameters.pInitializeInfo must be a valid pointer to a valid H structure!Evulkandevice, is the logical device used for the queries.device must be a valid  handle!Hvulkan commandBuffer6 is the command buffer where the override takes place.vulkan pOverrideInfo is a pointer to a E0 structure selecting the parameter to override.!IvulkandeviceQ is the logical device that the performance query commands will be submitted to.device must be a valid  handlevulkan pAcquireInfo is a pointer to a GA structure, specifying the performance configuration to acquire. pAcquireInfo must be a valid pointer to a valid G structure!JvulkandeviceB is the device associated to the configuration object to release.device must be a valid  handlevulkan configuration( is the configuration object to release. configuration must_ not be released before all command buffers submitted while the configuration was set are in fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state configuration must be a valid N handle configuration must2 have been created, allocated, or retrieved from device!Kvulkanqueue6 is the queue on which the configuration will be used.vulkan configuration is the configuration to use.!Lvulkandevice is the logical device to query.device must be a valid  handlevulkan parameter is the parameter to query. parameter must be a valid A valueENA!>!=!B!/!0C!3!5!4D!+!,E!'!*!(!)F!-!.G!%!&H!1!2!!!!!<!;!:!9!8!!!@!?!!!A!!!B!!! !!!"!#!$!6!7!C!D!E!F!G!H!I!J!K!L!MP!D!E!F!G!H!I!J!K!L!CC!3!5!4H!1!2B!/!0F!-!.D!+!,E!'!*!(!)G!%!&!! !!!"!#!$!M!!B!!B!!A!!A!!@!?!!@!?A!>!=!!>!=!!<!;!:!9!8!!<!;!:!9!8!!!7!!6NNone("#%&'-./1789;=>?FHIMSUVX_dghklmqC1-vulkanQVkRefreshCycleDurationGOOGLE - Structure containing the RC duration of a displaySee Also!.vulkanLVkPresentTimesInfoGOOGLE - The earliest time each image should be presented Valid UsageswapchainCount must be the same value as &::swapchainCount , where & is included in the pNext chain of this . structureValid Usage (Implicit)sType must be If pTimes is not NULL, pTimes must( be a valid pointer to an array of swapchainCount / structuresswapchainCount must be greater than 0See Also/, /vulkanAVkPresentTimeGOOGLE - The earliest time image should be presentedSee Also.0vulkanlVkPastPresentationTimingGOOGLE - Structure containing timing information about a previously-presented image DescriptionThe results for a given  swapchain and  presentID are only returned once from !.The application can use the 0< values to occasionally adjust its timing. For example, if actualPresentTime# is later than expected (e.g. one refreshDurationM late), the application may increase its target IPD to a higher multiple of refreshDuration7 (e.g. decrease its frame rate from 60Hz to 30Hz). If actualPresentTime and earliestPresentTime% are consistently different, and if  presentMargine is consistently large enough, the application may decrease its target IPD to a smaller multiple of refreshDuration7 (e.g. increase its frame rate from 30Hz to 60Hz). If actualPresentTime and earliestPresentTime are same, and if  presentMarginX is consistently high, the application may delay the start of its input-render-present loop in order to decrease the latency between user input and the corresponding present (always leaving some margin in case a new image takes longer to render than the previous image). An application that desires its target IPD to always be the same as refreshDuration", can also adjust features until actualPresentTime is never late and  presentMargin is satisfactory.See Also!!vulkan presentID7 is an application-provided identification value, that can be used with the results of !], in order to uniquely identify this present. In order to be useful to the application, it shouldM be unique within some period of time that is meaningful to the application.!vulkandesiredPresentTime specifies that the image given should; not be displayed to the user any earlier than this time. desiredPresentTimeP is a time in nanoseconds, relative to a monotonically-increasing clock (e.g. CLOCK_MONOTONICg (see clock_gettime(2)) on Android and Linux). A value of zero specifies that the presentation engine mayY display the image at any time. This is useful when the application desires to provide  presentID, but does not need a specific desiredPresentTime.!vulkanswapchainCountA is the number of swapchains being presented to by this command.!vulkanpTimes is NULL or a pointer to an array of / elements with swapchainCount entries. If not NULL, each element of pTimesU contains the earliest time to present the image corresponding to the entry in the &:: pImageIndices array.!vulkan presentID@ is an application-provided value that was given to a previous o command via /:: presentID (see below). It can< be used to uniquely identify a previous present with the o command.!vulkandesiredPresentTime@ is an application-provided value that was given to a previous o command via /::desiredPresentTimek. If non-zero, it was used by the application to indicate that an image not be presented any sooner than desiredPresentTime.!vulkanactualPresentTime# is the time when the image of the  swapchain was actually displayed.!vulkanearliestPresentTime# is the time when the image of the  swapchain" could have been displayed. This may differ from actualPresentTimeK if the application requested that the image be presented no sooner than /::desiredPresentTime.!vulkan presentMargin$ is an indication of how early the oc command was processed compared to how soon it needed to be processed, and still be presented at earliestPresentTime.!vulkanrefreshDurationO is the number of nanoseconds from the start of one refresh cycle to the next.!vulkanMvkGetRefreshCycleDurationGOOGLE - Obtain the RC duration of the PE s displayValid Usage (Implicit)device must be a valid  handle swapchain must be a valid K handlepDisplayTimingProperties must be a valid pointer to a - structureBoth of device, and  swapchain mustD have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  swapchain must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, -, K!vulkanRvkGetPastPresentationTimingGOOGLE - Obtain timing of a previously-presented image DescriptionIf pPresentationTimings is NULLC, then the number of newly-available timing records for the given  swapchain is returned in pPresentationTimingCount . Otherwise, pPresentationTimingCount mustH point to a variable set by the user to the number of elements in the pPresentationTimingsf array, and on return the variable is overwritten with the number of structures actually written to pPresentationTimings. If the value of pPresentationTimingCountF is less than the number of newly-available timing records, at most pPresentationTimingCount! structures will be written. If pPresentationTimingCountM is smaller than the number of newly-available timing records for the given  swapchain,  will be returned instead of > to indicate that not all the available values were returned.Valid Usage (Implicit)device must be a valid  handle swapchain must be a valid K handlepPresentationTimingCount must be a valid pointer to a uint32_t valueIf the value referenced by pPresentationTimingCount is not 0 , and pPresentationTimings is not NULL, pPresentationTimings must# be a valid pointer to an array of pPresentationTimingCount 0 structuresBoth of device, and  swapchain mustD have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  swapchain must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, 0, K!vulkandevice is the device associated with  swapchain.vulkan swapchain5 is the swapchain to obtain the refresh duration for.!vulkandevice is the device associated with  swapchain.vulkan swapchainJ is the swapchain to obtain presentation timing information duration for.K-!!.!!!/!!!0!!!!!!!!!!!!!!-!!0!!!!!!.!!!/!!!!!!!KNone("#%&'-./1789;=>?FHIMSUVX_dghklmqCN(vulkanVkStreamDescriptorSurfaceCreateInfoGGP - Structure specifying parameters of a newly created Google Games Platform stream surface objectValid Usage (Implicit)See Also!, , !!vulkanAVkStreamDescriptorSurfaceCreateFlagsGGP - Reserved for future use Description!Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also(!vulkanflags is reserved for future use.flags must be 0!vulkanstreamDescriptor is a !G referring to the GGP stream descriptor to associate with the surface.streamDescriptor must be a valid !!vulkan/vkCreateStreamDescriptorSurfaceGGP - Create a L+ object for a Google Games Platform streamValid Usage (Implicit)instance must be a valid  handle pCreateInfo must$ be a valid pointer to a valid ( structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a L handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , (, L!vulkaninstance/ is the instance to associate with the surface.vulkan pCreateInfo is a pointer to a (R structure containing parameters that affect the creation of the surface object.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).L(!!!!!!!!!!!!(!!!!!!!!!!LNone("#%&'-./1789;=>?FHIMSUVX_dghklmqCj&vulkanrVkImagePipeSurfaceCreateInfoFUCHSIA - Structure specifying parameters of a newly created ImagePipe surface objectValid Usage (Implicit)See Also!, , !!vulkan>VkImagePipeSurfaceCreateFlagsFUCHSIA - Reserved for future use Description!Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also&!vulkanflags is reserved for future use.flags must be 0!vulkanimagePipeHandle is a  zx_handle_t; referring to the ImagePipe to associate with the surface.imagePipeHandle must be a valid  zx_handle_t!vulkan,vkCreateImagePipeSurfaceFUCHSIA - Create a L object for a Fuchsia ImagePipeValid Usage (Implicit)instance must be a valid  handle pCreateInfo must$ be a valid pointer to a valid & structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a L handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, &, , L!vulkaninstance/ is the instance to associate with the surface.vulkan pCreateInfo is a pointer to a &P structure containing parameters affecting the creation of the surface object.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).L&!!!!!!!!!!!!&!!!!!!!!!!LNone("#%&'-./1789;=>?FHIMSUVX_dghklmqDvulkaneVkValidationCacheCreateInfoEXT - Structure specifying parameters of a newly created validation cache Valid UsageIf initialDataSize is not 0, it must be equal to the size of  pInitialData, as returned by " when  pInitialData was originally retrievedIf initialDataSize is not 0,  pInitialData must2 have been retrieved from a previous call to "Valid Usage (Implicit)sType must be pNext must be NULLflags must be 0If initialDataSize is not 0,  pInitialData must( be a valid pointer to an array of initialDataSize bytesSee Also, ", " vulkankVkShaderModuleValidationCacheCreateInfoEXT - Specify validation cache to use during shader module creationValid Usage (Implicit)See Also, J!vulkanCVkValidationCacheHeaderVersionEXT - Encode validation cache versionSee Also" , ""vulkan9VkValidationCacheCreateFlagsEXT - Reserved for future use Description"Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also"vulkanvalidationCache is the validation cache object from which the results of prior validation attempts will be written, and to which new validation results for this />+ will be written (if not already present).validationCache must be a valid J handle"vulkanflags is reserved for future use."vulkaninitialDataSize is the number of bytes in  pInitialData. If initialDataSize7 is zero, the validation cache will initially be empty."vulkan pInitialData is a pointer to previously retrieved validation cache data. If the validation cache data is incompatible (as defined below) with the device, the validation cache will be initially empty. If initialDataSize is zero,  pInitialData is ignored." vulkan" 0 specifies version one of the validation cache." vulkan;vkCreateValidationCacheEXT - Creates a new validation cache DescriptionNote Applications canU track and manage the total host memory size of a validation cache object using the  pAllocator. Applications canH limit the amount of data retrieved from a validation cache object in ". Implementations shouldy not internally limit the total number of entries added to a validation cache object or the total host memory consumed.!Once created, a validation cache can be passed to the >' command by adding this object to the >H structure s pNext chain. If a  object is included in the >H::pNext chain, and its validationCache field is not , the implementation will query it for possible reuse opportunities and update it with new content. The use of the validation cache object in these commands is internally synchronized, and the same validation cache object can- be used in multiple threads simultaneously.NoteImplementations should make every effort to limit any critical sections to the actual accesses to the cache, which is expected to be significantly shorter than the duration of the > command.Valid Usage (Implicit)device must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepValidationCache must be a valid pointer to a J handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , J" vulkan=A convenience wrapper to make a compatible pair of calls to "  and "To ensure that " is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument."vulkan?vkDestroyValidationCacheEXT - Destroy a validation cache object Valid UsageIf  were provided when validationCache1 was created, a compatible set of callbacks must be provided hereIf no  were provided when validationCache was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid  handleIf validationCache is not , validationCache must be a valid J handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf validationCache is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to validationCache must be externally synchronizedSee Also, , J"vulkanHvkGetValidationCacheDataEXT - Get the data store from a validation cache DescriptionIf pData is NULL), then the maximum size of the data that canD be retrieved from the validation cache, in bytes, is returned in  pDataSize . Otherwise,  pDataSize mustY point to a variable set by the user to the size of the buffer, in bytes, pointed to by pDataZ, and on return the variable is overwritten with the amount of data actually written to pData.If  pDataSize$ is less than the maximum size that can0 be retrieved by the validation cache, at most  pDataSize bytes will be written to pData, and " will return . Any data written to pData is valid and can be provided as the  pInitialData member of the  structure passed to " . Two calls to " with the same parameters mustj retrieve the same data unless a command that modifies the contents of the cache is called between them. Applications can store the data retrieved from the validation cache, and use these data, possibly in a future run of the application, to populate new validation cache objects. The results of validation, however, may depend on the vendor ID, device ID, driver version, and other details of the device. To enable applications to detect when previously retrieved data is incompatible with the device, the initial bytes written to pData must2 be a header consisting of the following members: Offset ( Size 2 Meaning  0 z 4  length in bytes of the entire validation cache header written as a stream of bytes, with the least significant byte first  4 z 4  a !t value written as a stream of bytes, with the least significant byte first # 8  O|  a layer commit ID expressed as a UUID, which uniquely identifies the version of the validation layers used to generate these validation results ,Layout for validation cache header version " The first four bytes encode the length of the entire validation cache header, in bytes. This value includes all fields in the header including the validation cache version field and the size of the length field.KThe next four bytes encode the validation cache version, as described for !&. A consumer of the validation cache shouldG use the cache version to interpret the remainder of the cache header.If  pDataSizeR is less than what is necessary to store this header, nothing will be written to pData and zero will be written to  pDataSize.Valid Usage (Implicit)device must be a valid  handlevalidationCache must be a valid J handle pDataSize must be a valid pointer to a size_t valueIf the value referenced by  pDataSize is not 0, and pData is not NULL, pData must( be a valid pointer to an array of  pDataSize bytesvalidationCache must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, J"vulkanJvkMergeValidationCachesEXT - Combine the data stores of validation caches DescriptionNoteVThe details of the merge operation are implementation dependent, but implementations shouldT merge the contents of the specified validation caches and prune duplicate entries. Valid UsagedstCache must( not appear in the list of source cachesValid Usage (Implicit)device must be a valid  handledstCache must be a valid J handle pSrcCaches must( be a valid pointer to an array of  srcCacheCount valid J handles srcCacheCount must be greater than 0dstCache must6 have been created, allocated, or retrieved from deviceEach element of  pSrcCaches must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to dstCache must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, J" vulkandevice@ is the logical device that creates the validation cache object.vulkan pCreateInfo is a pointer to a N structure containing the initial parameters for the validation cache object.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter."vulkandeviceB is the logical device that destroys the validation cache object.vulkanvalidationCache2 is the handle of the validation cache to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter."vulkandevice6 is the logical device that owns the validation cache.vulkanvalidationCache/ is the validation cache to retrieve data from."vulkandevice> is the logical device that owns the validation cache objects.vulkandstCache= is the handle of the validation cache to merge results into.vulkan pSrcCachesR is a pointer to an array of validation cache handles, which will be merged into dstCache. The previous contents of dstCache are included after the merge.J""""""!!!" """" " " " """" " """""""""""!" "" !" !" JNone("#%&'-./1789;=>?FHIMSUVX_dghklmqDpo vulkangVkPrivateDataSlotCreateInfoEXT - Structure specifying the parameters of private data slot constructionValid Usage (Implicit)See Also"-, , "8vulkanVVkPhysicalDevicePrivateDataFeaturesEXT - Structure specifying physical device supportMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported.  can also be used in the pNext chain of   to enable the features.Valid Usage (Implicit)See Alsoo, vulkan=VkDevicePrivateDataCreateInfoEXT - Reserve private data slotsValid Usage (Implicit)See Also".vulkanmVkPrivateDataSlotCreateFlagBitsEXT - Bitmask specifying additional parameters for private data slot creationSee Also"-"1vulkan privateDataC indicates whether the implementation supports private data. See  Zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#private-data Private Data."3vulkanflags is a bitmask of "-? specifying additional parameters of the new private data slotflags must be 0"5vulkanprivateDataSlotRequestCount# is the amount of slots to reserve."8vulkanCvkCreatePrivateDataSlotEXT - Create a slot for private data storageValid Usage (Implicit)device must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepPrivateDataSlot must be a valid pointer to a M handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , M"9vulkan=A convenience wrapper to make a compatible pair of calls to "8 and ":To ensure that ": is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.":vulkan9vkDestroyPrivateDataSlotEXT - Destroy a private data slot Valid UsageIf  were provided when privateDataSlot1 was created, a compatible set of callbacks must be provided hereIf no  were provided when privateDataSlot was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid  handleIf privateDataSlot is not , privateDataSlot must be a valid M handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf privateDataSlot is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to privateDataSlot must be externally synchronizedSee Also, , M";vulkan9vkSetPrivateDataEXT - Associate data with a Vulkan object Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, U, M"<vulkanCvkGetPrivateDataEXT - Retrieve data associated with a Vulkan object DescriptionNoteZDue to platform details on Android, implementations might not be able to reliably return 0 from calls to "< for pI objects on which ";i has not previously been called. This erratum is exclusive to the Android platform and objects of type pI.Valid Usage (Implicit)See Also, U, M"8vulkandeviced is the logical device associated with the creation of the object(s) holding the private data slot.vulkan pCreateInfo is a pointer to a vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.":vulkandeviced is the logical device associated with the creation of the object(s) holding the private data slot.vulkanprivateDataSlot% is the private data slot to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.";vulkandevice' is the device that created the object.device must be a valid  handlevulkan objectType is a U7 specifying the type of object to associate data with. objectType must be a valid U valuevulkan objectHandle2 is a handle to the object to associate data with. objectHandle must be device or a child of device objectHandle must) be a valid handle to an object of type  objectTypevulkanprivateDataSlot is a handle to a M. specifying location of private data storage.privateDataSlot must be a valid M handleprivateDataSlot must2 have been created, allocated, or retrieved from devicevulkandataQ is user defined data to associate the object with. This data will be stored at privateDataSlot."<vulkandevice& is the device that created the objectdevice must be a valid  handlevulkan objectType is a U8 specifying the type of object data is associated with. objectType must be $ or an object type whose parent is  objectType must be a valid U valuevulkan objectHandle3 is a handle to the object data is associated with.vulkanprivateDataSlot is a handle to a M6 specifying location of private data pointer storage.privateDataSlot must be a valid M handleprivateDataSlot must2 have been created, allocated, or retrieved from deviceM"2"3"0"1"4"5"+","-"."/"6"7"8"9":";"<"8"9":";"<"4"5"2"3"0"1"."/"-","7"+"6MNone("#%&'-./1789;=>?FHIMSUVX_dghklmqDZvulkanfVkMetalSurfaceCreateInfoEXT - Structure specifying parameters of a newly created Metal surface objectValid Usage (Implicit)See Also"\, , "c"\vulkan6VkMetalSurfaceCreateFlagsEXT - Reserved for future use Description"\Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also"_vulkanflags is reserved for future use.flags must be 0"`vulkanpLayer is a reference to a "Y+ object representing a renderable surface."cvulkanGvkCreateMetalSurfaceEXT - Create a VkSurfaceKHR object for CAMetalLayerValid Usage (Implicit)instance must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a L handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , L"cvulkaninstance5 is the instance with which to associate the surface.vulkan pCreateInfo is a pointer to a O structure specifying parameters affecting the creation of the surface object.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).L"^"_"`"Y"Z"["\"]"a"b"c"c"^"_"`"\"]"["b"Z"a"YLNone("#%&'-./1789;=>?FHIMSUVX_dghklmqDvulkanlVkHeadlessSurfaceCreateInfoEXT - Structure specifying parameters of a newly created headless surface objectValid Usage (Implicit)See Also"t, , "z"tvulkan9VkHeadlessSurfaceCreateFlagsEXT - Reserved for future use Description"tQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also"wvulkanflags is reserved for future use.flags must be 0"zvulkan0vkCreateHeadlessSurfaceEXT - Create a headless L objectValid Usage (Implicit)instance must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a L handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , L"zvulkaninstance/ is the instance to associate the surface with.vulkan pCreateInfo is a pointer to a O structure containing parameters affecting the creation of the surface object.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation). L"v"w"r"s"t"u"x"y"z "z"v"w"t"u"s"y"r"xLNone("#%&'-./1789;=>?FHIMSUVX_dghklmqD vulkan@VkXYColorEXT - structure to specify X,Y chromaticity coordinatesSee Alsovulkan4VkHdrMetadataEXT - structure to specify Hdr metadataValid Usage (Implicit)NoteAThe validity and use of this data is outside the scope of Vulkan.See Also, , ""vulkandisplayPrimaryRedD is the mastering display s red primary in chromaticity coordinates"vulkandisplayPrimaryGreenF is the mastering display s green primary in chromaticity coordinates"vulkandisplayPrimaryBlueE is the mastering display s blue primary in chromaticity coordinates"vulkan whitePointD is the mastering display s white-point in chromaticity coordinates"vulkan maxLuminance: is the maximum luminance of the mastering display in nits"vulkan minLuminance: is the minimum luminance of the mastering display in nits"vulkanmaxContentLightLevel' is content s maximum luminance in nits"vulkanmaxFrameAverageLightLevel2 is the maximum frame average light level in nits"vulkan2vkSetHdrMetadataEXT - function to set Hdr metadataValid Usage (Implicit)device must be a valid  handle pSwapchains must( be a valid pointer to an array of swapchainCount valid K handles pMetadata must( be a valid pointer to an array of swapchainCount valid  structuresswapchainCount must be greater than 0Both of device, and the elements of  pSwapchains mustD have been created, allocated, or retrieved from the same /See Also, , K"vulkandevice; is the logical device where the swapchain(s) were created.vulkan pSwapchains is a pointer to an array of swapchainCount K handles.vulkan pMetadata is a pointer to an array of swapchainCount  structures.K""""""""""""""""""""""""""""""""""KNone("#%&'-./1789;=>?FHIMSUVX_dghklmqE,vulkanVkSurfaceFullScreenExclusiveWin32InfoEXT - Structure specifying additional creation parameters specific to Win32 fullscreen exclusive mode DescriptionNoteIf hmonitor is invalidated (e.g. the monitor is unplugged) during the lifetime of a swapchain created with this structure, operations on that swapchain will return .NoteIt is the responsibility of the application to change the display settings of the targeted Win32 display using the appropriate platform APIs. Such changes mayB alter the surface capabilities reported for the created surface.Valid Usage (Implicit)See AlsovulkaniVkSurfaceFullScreenExclusiveInfoEXT - Structure specifying the preferred full-screen transition behavior Description"If this structure is not present, fullScreenExclusive is considered to be ".Valid Usage (Implicit)See Also", vulkansVkSurfaceCapabilitiesFullScreenExclusiveEXT - Structure describing full screen exclusive capabilities of a surface DescriptionThis structure can be included in the pNext chain of T= to determine support for exclusive full-screen access. If fullScreenExclusiveSupported is .U, it indicates that exclusive full-screen access is not obtainable for this surface. Applications must( not attempt to create swapchains with " set if fullScreenExclusiveSupported is ..Valid Usage (Implicit)See Alsoo, "vulkanlVkFullScreenExclusiveEXT - Hint values an application can specify affecting full-screen transition behaviorSee Also"vulkanhmonitor is the Win32 "< handle identifying the display to create the surface with.hmonitor must be a valid ""vulkanfullScreenExclusive is a "A value specifying the preferred full-screen transition behavior.fullScreenExclusive must be a valid " value"vulkan"Q indicates the application will manage full-screen exclusive mode by using the " and " commands."vulkan" indicates the implementation shouldJ avoid using full-screen mechanisms which rely on disruptive transitions."vulkan" indicates the implementation mayH use full-screen exclusive mechanisms when available. Such mechanisms mayc result in better performance and/or the availability of different presentation capabilities, but mayo require a more disruptive transition during swapchain initialization, first presentation and/or destruction."vulkan" indicates the implementation shouldV determine the appropriate full-screen method by whatever means it deems appropriate."vulkanPvkGetPhysicalDeviceSurfacePresentModes2EXT - Query supported presentation modes Description" behaves similarly to qM, with the ability to specify extended inputs via chained input structures.Valid Usage (Implicit)physicalDevice must be a valid  handle pSurfaceInfo must$ be a valid pointer to a valid n structurepPresentModeCount must be a valid pointer to a uint32_t valueIf the value referenced by pPresentModeCount is not 0 , and  pPresentModes is not NULL,  pPresentModes must( be a valid pointer to an array of pPresentModeCount  values Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, n, "vulkan`vkGetDeviceGroupSurfacePresentModes2EXT - Query device group present capabilities for a surface Description" behaves similarly to M, with the ability to specify extended inputs via chained input structures. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , n"vulkanYvkAcquireFullScreenExclusiveModeEXT - Acquire full-screen exclusive mode for a swapchain Valid Usage swapchain must not be in the retired state swapchain must$ be a swapchain created with a  structure, with fullScreenExclusive set to " swapchain must0 not currently have exclusive full-screen accessA return value of  indicates that the  swapchain successfully acquired exclusive full-screen access. The swapchain will retain this exclusivity until either the application releases exclusive full-screen access with "G, destroys the swapchain, or if any of the swapchain commands return I indicating that the mode was lost because of platform-specific changes.ZIf the swapchain was unable to acquire exclusive full-screen access to the display then  is returned. An application canr attempt to acquire exclusive full-screen access again for the same swapchain even if this command fails, or if + has been returned by a swapchain command.Valid Usage (Implicit)device must be a valid  handle swapchain must be a valid K handleBoth of device, and  swapchain mustD have been created, allocated, or retrieved from the same / Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, K"vulkanZvkReleaseFullScreenExclusiveModeEXT - Release full-screen exclusive mode from a swapchain DescriptionNote,Applications will not be able to present to  swapchain after this call until exclusive full-screen access is reacquired. This is usually useful to handle when an application is minimised or otherwise intends to stop presenting for a time. Valid UsageSee Also, K"vulkanphysicalDevicee is the physical device that will be associated with the swapchain to be created, as described for .vulkan pSurfaceInfo is a pointer to a nY structure describing the surface and other fixed parameters that would be consumed by ."vulkandevice is the logical device.device must be a valid  handlevulkan pSurfaceInfo is a pointer to a nY structure describing the surface and other fixed parameters that would be consumed by . pSurfaceInfo must be a valid pointer to a valid n structure"vulkandevice is the device associated with  swapchain.vulkan swapchain? is the swapchain to acquire exclusive full-screen access for."vulkandevice is the device associated with  swapchain.vulkan swapchain@ is the swapchain to release exclusive full-screen access from. swapchain must not be in the retired state swapchain must be a swapchain created with a  structure, with fullScreenExclusive set to "/KL""""""n["""""""""""""""="""""""""""""""""""""""""LKn[None("#%&'-./1789;=>?FHIMSUVX_dghklmqELvulkan<VkSurfaceCounterFlagBitsEXT - Surface-relative counter typesSee Also, vulkanKVkSurfaceCapabilities2EXT - Structure describing capabilities of a surfaceMembersAll members of 1 are identical to the corresponding members of . where one exists. The remaining members are:Valid Usage (Implicit)See Also, t, Q, , , , , ""vulkansupportedSurfaceCounters is a bitmask of 1 indicating the supported surface counter types.supportedSurfaceCounters must not include "" unless the surface queried is a bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#wsi-display-surfacesdisplay surface"vulkan" specifies a counter incrementing once every time a vertical blanking period occurs on the display associated with the surface."vulkanGvkGetPhysicalDeviceSurfaceCapabilities2EXT - Query surface capabilities Description" behaves similarly to mZ, with the ability to return extended information by adding extending structures to the pNext chain of its pSurfaceCapabilities parameter.Valid Usage (Implicit)physicalDevice must be a valid  handlesurface must be a valid L handlepSurfaceCapabilities must be a valid pointer to a  structureBoth of physicalDevice, and surface mustD have been created, allocated, or retrieved from the same / Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , L"vulkanphysicalDevicee is the physical device that will be associated with the swapchain to be created, as described for .vulkansurface; is the surface that will be associated with the swapchain.,L"""""""""""""""""""":"""""""""""""""""""""LNone("#%&'-./1789;=>?FHIMSUVX_dghklmqEvulkanFVkSwapchainCounterCreateInfoEXT - Specify the surface counters desired Valid Usage The bits in surfaceCounters must be supported by [::surface, as reported by kValid Usage (Implicit)sType must be surfaceCounters must be a valid combination of  valuesSee Also, vulkan=VkDisplayPowerInfoEXT - Describe the power state of a displayValid Usage (Implicit)See Also", , # vulkan:VkDisplayEventInfoEXT - Describe a display event to createValid Usage (Implicit)See Also", , #vulkan8VkDeviceEventInfoEXT - Describe a device event to createValid Usage (Implicit)See Also", , #"vulkanAVkDisplayEventTypeEXT - Events that can occur on a display objectSee Also"vulkan?VkDeviceEventTypeEXT - Events that can occur on a device objectSee Also"vulkan<VkDisplayPowerStateEXT - Possible power states for a displaySee Also"vulkansurfaceCounters is a bitmask of : specifying surface counters to enable for the swapchain.#vulkan displayEvent is a "- specifying when the fence will be signaled. displayEvent must be a valid " value#vulkan deviceEvent must be a valid " value#vulkan powerState is a "6 value specifying the new power state of the display. powerState must be a valid " value#vulkan# specifies that the fence is signaled when the first pixel of the next display refresh cycle leaves the display engine for the display.# vulkan# | specifies that the fence is signaled when a display is plugged into or unplugged from the specified device. Applications cang use this notification to determine when they need to re-enumerate the available displays on a device.# vulkan# * specifies that the display is powered on.# vulkan# I specifies that the display is put into a low power mode, from which it may be able to transition back to # " more quickly than if it were in #  . This state may be the same as # .# vulkan# - specifies that the display is powered down.# vulkan;vkDisplayPowerControlEXT - Set the power state of a displayValid Usage (Implicit)device must be a valid  handledisplay must be a valid Q handlepDisplayPowerInfo must$ be a valid pointer to a valid  structureBoth of device, and display must? have been created, allocated, or retrieved from the same /3 Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, Q, #vulkanDvkRegisterDeviceEventEXT - Signal a fence when a device event occursValid Usage (Implicit)device must be a valid  handlepDeviceEventInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepFence must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , #vulkanFvkRegisterDisplayEventEXT - Signal a fence when a display event occursValid Usage (Implicit)device must be a valid  handledisplay must be a valid Q handlepDisplayEventInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepFence must be a valid pointer to a  handleBoth of device, and display must? have been created, allocated, or retrieved from the same /3 Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , Q, #vulkanGvkGetSwapchainCounterEXT - Query the current value of a surface counter DescriptionXIf a counter is not available because the swapchain is out of date, the implementation may return . Valid Usage One or more present commands on  swapchain must4 have been processed by the presentation engineValid Usage (Implicit)device must be a valid  handle swapchain must be a valid K handlecounter must be a valid  value pCounterValue must be a valid pointer to a uint64_t valueBoth of device, and  swapchain mustD have been created, allocated, or retrieved from the same / Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , K# vulkandevice% is a logical device associated with display.vulkandisplay. is the display whose power state is modified.vulkanpDisplayPowerInfo is a . structure specifying the new power state of display.#vulkandevice( is a logical device on which the event may occur.vulkanpDeviceEventInfo is a pointer to a @ structure describing the event of interest to the application.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.#vulkandevice% is a logical device associated with displayvulkandisplay# is the display on which the event may occur.vulkanpDisplayEventInfo is a pointer to a @ structure describing the event of interest to the application.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.#vulkandevice is the  associated with  swapchain.vulkan swapchain8 is the swapchain from which to query the counter value.vulkancounter is the counter to query.'KQ""######"""""#""# ""# # # "### ###-# #########"""# # # "# # # "# "# "#"#"#"#QK"""None("#%&'-./1789;=>?FHIMSUVX_dghklmqEװvulkanlVkDirectFBSurfaceCreateInfoEXT - Structure specifying parameters of a newly created DirectFB surface objectValid Usage (Implicit)See Also#B, , #J#Bvulkan9VkDirectFBSurfaceCreateFlagsEXT - Reserved for future use Description#BQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also#Evulkanflags is reserved for future use.flags must be 0#Fvulkandfb is a pointer to the  main interface of DirectFB.dfb must point to a valid DirectFB #Gvulkansurface is a pointer to a #? surface interface.surface must point to a valid DirectFB #?#Jvulkan'vkCreateDirectFBSurfaceEXT - Create a L object for a DirectFB surfaceValid Usage (Implicit)instance must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a L handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , L#KvulkanivkGetPhysicalDeviceDirectFBPresentationSupportEXT - Query physical device for presentation with DirectFB Description This platform-specific function can( be called prior to creating a surface.Valid Usage (Implicit)See Also#Jvulkaninstance/ is the instance to associate the surface with.vulkan pCreateInfo is a pointer to a O structure containing parameters affecting the creation of the surface object.vulkan pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation).#KvulkanphysicalDevice is the physical device.physicalDevice must be a valid  handlevulkanqueueFamilyIndex is the queue family index.queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by  e for the given physicalDevicevulkandfb is a pointer to the  main interface of DirectFB.dfb must be a valid pointer to an  valueL#D#E#F#G#?#@#A#B#C#H#I#J#K#J#K#D#E#F#G#B#C#A#I#@#H#?LNone("#%&'-./1789;=>?FHIMSUVX_dghklmqE#^vulkan@vkReleaseDisplayEXT - Release access to an acquired VkDisplayKHR Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessSee AlsoQ, #^vulkanphysicalDevice' The physical device the display is on.physicalDevice must be a valid  handlevulkandisplay# The display to release control of.display must be a valid Q handledisplay must2 have been created, allocated, or retrieved from physicalDeviceQ#Z#[#\#]#^#^#[#]#Z#\QNone("#%&'-./1789;=>?FHIMSUVX_dghklmqG%4vulkanoVkDebugUtilsMessageTypeFlagBitsEXT - Bitmask specifying which types of events cause a debug messenger callbackSee AlsovulkanxVkDebugUtilsMessageSeverityFlagBitsEXT - Bitmask specifying which severities of events cause a debug messenger callbackSee Also, #vulkanRVkDebugUtilsObjectTagInfoEXT - Specify parameters of a tag to attach to an object DescriptionThe tagName parameter gives a name or identifier to the type of data being tagged. This can be used by debugging layers to easily filter for only data that can be used by that implementation.Valid Usage (Implicit)See AlsoU, , #vulkanRVkDebugUtilsObjectNameInfoEXT - Specify parameters of a name to give to an object Description Applications may> change the name associated with an object simply by calling # again with a new string. If  pObjectName is either NULL> or an empty string, then any previously set name is removed. Valid UsageIf  objectType is P,  objectHandle must not be If  objectType is not P,  objectHandle must be ; or a valid Vulkan handle of the type associated with  objectType as defined in the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-object-typesand Vulkan Handle Relationship tableValid Usage (Implicit)sType must be pNext must be NULL objectType must be a valid U valueIf  pObjectName is not NULL,  pObjectName must' be a null-terminated UTF-8 stringSee Also, U, , #vulkanhVkDebugUtilsMessengerCreateInfoEXT - Structure specifying parameters of a newly created debug messenger Description For each S that is created the ::messageSeverity and :: messageType determine when that ::pfnUserCallback4 is called. The process to determine if the user s pfnUserCallback2 is triggered when an event occurs is as follows: BThe implementation will perform a bitwise AND of the event s  with the messageSeverity+ provided during creation of the S object. *If the value is 0, the message is skipped.@The implementation will perform bitwise AND of the event s  with the  messageType/ provided during the creation of the S object. *If the value is 0, the message is skipped.?The callback will trigger a debug message for the current eventThe callback will come directly from the component that detected the event, unless some other layer intercepts the calls for its own purposes (filter them in a different way, log to a system error log, etc.).An application can) receive multiple callbacks if multiple Sm objects are created. A callback will always be executed in the same thread as the originating Vulkan call. A callback cans be called from multiple threads simultaneously (if the application is making Vulkan calls from multiple threads).Valid Usage (Implicit)See Also#a, , , #g, , #vulkan`VkDebugUtilsMessengerCallbackDataEXT - Structure specifying parameters returned to the callback DescriptionNote^This structure should only be considered valid during the lifetime of the triggered callback.oSince adding queue and command buffer labels behaves like pushing and popping onto a stack, the order of both  pQueueLabels and  pCmdBufLabels^ is based on the order the labels were defined. The result is that the first label in either  pQueueLabels or  pCmdBufLabelsq will be the first defined (and therefore the oldest) while the last label in each list will be the most recent.Note pQueueLabels will only be non-NULL if one of the objects in pObjects' can be related directly to a defined z6 which has had one or more labels associated with it. Likewise,  pCmdBufLabels will only be non-NULL if one of the objects in pObjects' can be related directly to a defined  which has had one or more labels associated with it. Additionally, while command buffer labels allow for beginning and ending across different command buffers, the debug messaging framework cannot guarantee that labels in  pCmdBufLables will contain those defined outside of the associated command buffer. This is partially due to the fact that the association of one command buffer with another may not have been defined at the time the debug message is triggered.Valid Usage (Implicit)sType must be pNext must be NULLflags must be 0If pMessageIdName is not NULL, pMessageIdName must' be a null-terminated UTF-8 stringpMessage must" be a null-terminated UTF-8 stringIf queueLabelCount is not 0,  pQueueLabels must( be a valid pointer to an array of queueLabelCount valid  structuresIf cmdBufLabelCount is not 0,  pCmdBufLabels must( be a valid pointer to an array of cmdBufLabelCount valid  structuresIf  objectCount is not 0, pObjects must( be a valid pointer to an array of  objectCount valid  structuresSee Also, #e, , , #vulkan;VkDebugUtilsLabelEXT - Specify parameters of a label regionValid Usage (Implicit)See Also, , #, #, #, ##avulkan]PFN_vkDebugUtilsMessengerCallbackEXT - Application-defined debug messenger callback function Description The callback must not call #.The callback returns a oE, which is interpreted in a layer-specified manner. The application should always return .. The .1 value is reserved for use in layer development.See Also#evulkanCVkDebugUtilsMessengerCallbackDataFlagsEXT - Reserved for future use Description#eQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also#gvulkan=VkDebugUtilsMessengerCreateFlagsEXT - Reserved for future use Description#gQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also#jvulkanflags is 0 and is reserved for future use.#kvulkanpMessageIdName is a null-terminated string that identifies the particular message ID that is associated with the provided message. If the message corresponds to a validation layer message, then this string may contain the portion of the Vulkan specification that is believed to have been violated.#lvulkanmessageIdNumber is the ID number of the triggering message. If the message corresponds to a validation layer message, then this number is related to the internal number associated with the message being triggered.#mvulkanpMessage> is a null-terminated string detailing the trigger conditions.#nvulkan pQueueLabels is NULL or a pointer to an array of  active in the current z4 at the time the callback was triggered. Refer to  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-queue-labels Queue Labels for more information.#ovulkan pCmdBufLabels is NULL or a pointer to an array of  active in the current 4 at the time the callback was triggered. Refer to  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-command-buffer-labelsCommand Buffer Labels for more information.#pvulkanpObjects is a pointer to an array of  objects related to the detected issue. The array is roughly in order or importance, but the 0th element is always guaranteed to be the most important object for this message.#rvulkanflags is 0 and is reserved for future use.flags must be 0#svulkanmessageSeverity is a bitmask of O specifying which severity of event(s) will cause this callback to be called.messageSeverity must be a valid combination of  valuesmessageSeverity must not be 0#tvulkan messageType is a bitmask of J specifying which type of event(s) will cause this callback to be called. messageType must be a valid combination of  values messageType must not be 0#uvulkanpfnUserCallback. is the application callback function to call.pfnUserCallback must be a valid #apfnUserCallback must be a valid #a value#vvulkan pUserData+ is user data to be passed to the callback.#xvulkan pLabelNameR is a pointer to a null-terminated UTF-8 string containing the name of the label. pLabelName must" be a null-terminated UTF-8 string#yvulkancolore is an optional RGBA color value that can be associated with the label. A particular implementation may{ choose to ignore this color value. The values contain RGBA values in order, in the range 0.0 to 1.0. If all elements in color# are set to 0.0 then it is ignored.#{vulkan objectType is a U0 specifying the type of the object to be named. objectType must not be P objectType must be a valid U value#|vulkan objectHandle is the object to be tagged. objectHandle must7 be a valid Vulkan handle of the type associated with  objectType as defined in the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-object-typesand Vulkan Handle Relationship table#}vulkantagName& is a numerical identifier of the tag.#~vulkantagSize8 is the number of bytes of data to attach to the object.tagSize must be greater than 0#vulkanpTag is a pointer to an array of tagSize= bytes containing the data to be associated with the object.pTag must# be a valid pointer to an array of tagSize bytes#vulkan objectType is a U0 specifying the type of the object to be named.#vulkan objectHandle is the object to be named.#vulkan pObjectName is either NULLD or a null-terminated UTF-8 string specifying the name to apply to  objectHandle.#vulkan#A specifies a potentially non-optimal use of Vulkan, e.g. using m when setting 6::loadOp to : would have worked.#vulkan# specifies that something has occurred during validation against the Vulkan specification that may indicate invalid behavior.#vulkan#p specifies that some general event has occurred. This is typically a non-specification, non-performance event.#vulkan#[ specifies that the application has violated a valid usage condition of the specification.#vulkan# specifies use of Vulkan that may expose an app bug. Such cases may not be immediately harmful, such as a fragment shader outputting to a location with no attachment. Other cases may point to behavior that is almost certainly bad when unintended such as using an image whose memory has not been filled. In general if you see a warning but you know that the behavior is intended/desired, then simply ignore the warning.#vulkan#o specifies an informational message such as resource details that may be handy when debugging an application.#vulkan# specifies the most verbose output indicating all diagnostic messages from the Vulkan loader, layers, and drivers should be captured.#vulkanEvkSetDebugUtilsObjectNameEXT - Give a user-friendly name to an object Valid UsagepNameInfo->objectType must not be PpNameInfo->objectHandle must not be Valid Usage (Implicit)device must be a valid  handle pNameInfo must$ be a valid pointer to a valid  structureHost SynchronizationHost access to pNameInfo->objectHandle must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, #vulkan@vkSetDebugUtilsObjectTagEXT - Attach arbitrary data to an objectValid Usage (Implicit)device must be a valid  handlepTagInfo must$ be a valid pointer to a valid  structureHost SynchronizationHost access to pTagInfo->objectHandle must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, #vulkan@vkQueueBeginDebugUtilsLabelEXT - Open a queue debug label regionCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type | - x - w Any  - See Also, z#vulkan?vkQueueEndDebugUtilsLabelEXT - Close a queue debug label region Description The calls to # and # must be matched and balanced. Valid UsageThere must be an outstanding # command prior to the # on the queueValid Usage (Implicit)queue must be a valid z handleCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type | - x - w Any  - See Alsoz#vulkan=vkQueueInsertDebugUtilsLabelEXT - Insert a label into a queueCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type | - x - w Any  - See Also, z#vulkanGvkCmdBeginDebugUtilsLabelEXT - Open a command buffer debug label regionValid Usage (Implicit) commandBuffer must be a valid  handle pLabelInfo must$ be a valid pointer to a valid  structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics Compute  See Also, #vulkan>This function will call the supplied action between calls to # and # Note that #@ is *not* called if an exception is thrown by the inner action.#vulkan@vkCmdEndDebugUtilsLabelEXT - Close a command buffer label region DescriptionAn application may open a debug label region in one command buffer and close it in another, or otherwise split debug label regions across multiple command buffers or multiple queue submissions. When viewed from the linear series of submissions to a single queue, the calls to # and # must be matched and balanced. Valid UsageThere must be an outstanding # command prior to the # on the queue that  commandBuffer is submitted toIf  commandBuffer& is a secondary command buffer, there must be an outstanding # command recorded to  commandBuffer6 that has not previously been ended by a call to #Valid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics Compute  See Also#vulkanDvkCmdInsertDebugUtilsLabelEXT - Insert a label into a command bufferValid Usage (Implicit) commandBuffer must be a valid  handle pLabelInfo must$ be a valid pointer to a valid  structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics Compute  See Also, #vulkan@vkCreateDebugUtilsMessengerEXT - Create a debug messenger objectValid Usage (Implicit)instance must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pMessenger must be a valid pointer to a S handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureThe application must ensure that #P is not executed in parallel with any Vulkan command that is also called with instance or child of instance as the dispatchable argument.See Also, , S, #vulkan=A convenience wrapper to make a compatible pair of calls to # and #To ensure that # is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.#vulkanBvkDestroyDebugUtilsMessengerEXT - Destroy a debug messenger object Valid UsageIf  were provided when  messenger1 was created, a compatible set of callbacks must be provided hereIf no  were provided when  messenger was created,  pAllocator must be NULLValid Usage (Implicit)instance must be a valid  handleIf  messenger is not ,  messenger must be a valid S handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf  messenger is a valid handle, it must6 have been created, allocated, or retrieved from instanceHost SynchronizationHost access to  messenger must be externally synchronizedThe application must ensure that #P is not executed in parallel with any Vulkan command that is also called with instance or child of instance as the dispatchable argument.See Also, S, #vulkanCvkSubmitDebugUtilsMessageEXT - Inject a message into a debug stream DescriptionThe call will propagate through the layers and generate callback(s) as indicated by the message s flags. The parameters are passed on to the callback in addition to the  pUserDataB value that was defined at the time the messenger was registered. Valid UsageThe  objectType member of each element of pCallbackData->pObjects must not be PValid Usage (Implicit)instance must be a valid  handlemessageSeverity must be a valid  value messageTypes must be a valid combination of  values messageTypes must not be 0 pCallbackData must$ be a valid pointer to a valid  structureSee Also, , ,  #vulkandevice' is the device that created the object.vulkan pNameInfo is a pointer to a C structure specifying parameters of the name to set on the object.#vulkandevice' is the device that created the object.vulkanpTagInfo is a pointer to a E structure specifying parameters of the tag to attach to the object.#vulkanqueue5 is the queue in which to start a debug label region.queue must be a valid z handlevulkan pLabelInfo is a pointer to a > structure specifying parameters of the label region to open. pLabelInfo must be a valid pointer to a valid  structure#vulkanqueue= is the queue in which a debug label region should be closed.#vulkanqueue8 is the queue into which a debug label will be inserted.queue must be a valid z handlevulkan pLabelInfo is a pointer to a 9 structure specifying parameters of the label to insert. pLabelInfo must be a valid pointer to a valid  structure#vulkan commandBuffer; is the command buffer into which the command is recorded.vulkan pLabelInfo is a pointer to a > structure specifying parameters of the label region to open.#vulkan commandBuffer; is the command buffer into which the command is recorded.#vulkan commandBuffer; is the command buffer into which the command is recorded.#vulkaninstance1 is the instance the messenger will be used with.vulkan pCreateInfo is a pointer to a  structure containing the callback pointer, as well as defining conditions under which this messenger will trigger the callback.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.#vulkaninstance0 is the instance where the callback was created.vulkan messenger is the S object to destroy.  messenger+ is an externally synchronized object and mustA not be used on more than one thread at a time. This means that # must* not be called when a callback is active.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.#vulkaninstance is the debug stream s .vulkanmessageSeverity is the ! severity of this event/message.vulkan messageTypes is a bitmask of B specifying which type of event(s) to identify with this message.vulkan pCallbackData0 contains all the callback related data in the  structure.FS####c#####d#z#|##{#}#~#####q#r#v#s#t#u#i#m#j#k#l#n#o#p#w#x#y#_#`#a#b#e#f#g#h###############M##################z#|##{#}#~#w#x#y#q#r#v#s#t#u#i#m#j#k#l#n#o#p#g#h#e#f#####d########c####a#b#`##_#SNone("#%&'-./1789;=>?FHIMSUVX_dghklmqH0nvulkanAVkDebugReportObjectTypeEXT - Specify the type of an object handle Description'  4 Vulkan Handle Type  # 3 Unknown/Undefined Handle  #    #  /3  #  /  #  /4  #  /5  #  /6  #  /7  #  /8  #  /9  #  /:  #  /;  #  /<  #  /=  #  /  #  />  #  /  #  /  #  /?  #  /)  #  /@  #  /A  #  /B  #  /C  #  /D  #  /E  #  pH  #  pI  #  T  #  pJ  #  pK  #  CG  and Vulkan Handle RelationshipNoteThe primary expected use of  is for validation layer testing. It is not expected that an application would see this error code during normal use of the validation layers.See Also, , $ vulkanYVkDebugReportFlagBitsEXT - Bitmask specifying events which cause a debug report callbackSee AlsovulkannVkDebugReportCallbackCreateInfoEXT - Structure specifying parameters of a newly created debug report callback Description For each T that is created the ::flags determine when that :: pfnCallback] is called. When an event happens, the implementation will do a bitwise AND of the event s  flags to each T) object s flags. For each non-zero result the corresponding callback will be called. The callback will come directly from the component that detected the event, unless some other layer intercepts the calls for its own purposes (filter them in a different way, log to a system error log, etc.).An application may) receive multiple callbacks if multiple Tn objects were created. A callback will always be executed in the same thread as the originating Vulkan call.A callback may be called from multiple threads simultaneously (if the application is making Vulkan calls from multiple threads).Valid Usage (Implicit)See Also#, , , $#vulkanRPFN_vkDebugReportCallbackEXT - Application-defined debug report callback function Description The callback must not call $.The callback returns a oE, which is interpreted in a layer-specified manner. The application should always return .. The .1 value is reserved for use in layer development.object must be a Vulkan object or . If  objectType is not # and object is not , object must? be a Vulkan object of the corresponding type associated with  objectType as defined in  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debug-report-object-types.See Also#vulkanflags is a bitmask of B specifying which event(s) will cause this callback to be called.flags must be a valid combination of  values#vulkan pfnCallback. is the application callback function to call. pfnCallback must be a valid # value#vulkan pUserData+ is user data to be passed to the callback.$vulkan$F specifies diagnostic information from the implementation and layers.$vulkan$[ specifies that the application has violated a valid usage condition of the specification.$vulkan$A specifies a potentially non-optimal use of Vulkan, e.g. using m when setting 6::loadOp to : would have worked.$vulkan$ specifies use of Vulkan that may expose an app bug. Such cases may not be immediately harmful, such as a fragment shader outputting to a location with no attachment. Other cases may point to behavior that is almost certainly bad when unintended such as using an image whose memory has not been filled. In general if you see a warning but you know that the behavior is intended/desired, then simply ignore the warning.$vulkan$o specifies an informational message such as resource details that may be handy when debugging an application.$vulkanFvkCreateDebugReportCallbackEXT - Create a debug report callback objectValid Usage (Implicit)instance must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pCallback must be a valid pointer to a T handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , T, $vulkan=A convenience wrapper to make a compatible pair of calls to $ and $To ensure that $ is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.$vulkanHvkDestroyDebugReportCallbackEXT - Destroy a debug report callback object Valid UsageIf  were provided when callback1 was created, a compatible set of callbacks must be provided hereIf no  were provided when callback was created,  pAllocator must be NULLValid Usage (Implicit)instance must be a valid  handleIf callback is not , callback must be a valid T handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf callback is a valid handle, it must6 have been created, allocated, or retrieved from instanceHost SynchronizationHost access to callback must be externally synchronizedSee Also, T, $ vulkan>vkDebugReportMessageEXT - Inject a message into a debug stream DescriptionThe call will propagate through the layers and generate callback(s) as indicated by the message s flags. The parameters are passed on to the callback in addition to the  pUserDataA value that was defined at the time the callback was registered. Valid Usageobject must be a Vulkan object or If  objectType is not # and object is not , object mustC be a Vulkan object of the corresponding type associated with  objectType as defined in ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debug-report-object-typesValid Usage (Implicit)instance must be a valid  handleflags must be a valid combination of  valuesflags must not be 0 objectType must be a valid  value pLayerPrefix must" be a null-terminated UTF-8 stringpMessage must" be a null-terminated UTF-8 stringSee Also, , $vulkaninstance0 is the instance the callback will be logged on.vulkan pCreateInfo is a pointer to a N structure defining the conditions under which this callback will be called.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.$vulkaninstance0 is the instance where the callback was created.vulkancallback is the T object to destroy. callback+ is an externally synchronized object and mustA not be used on more than one thread at a time. This means that $ must* not be called when a callback is active.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.$ vulkaninstance is the debug stream s .vulkanflags specifies the ' classification of this event/message.vulkan objectType is a Z specifying the type of object being used or created at the time the event was triggered.vulkanobject- is the object where the issue was detected. object can be 2 if there is no object associated with the event.vulkanlocation! is an application defined value.vulkan messageCode! is an application defined value.vulkan pLayerPrefixA is the abbreviation of the component making this event/message.vulkanpMessage> is a null-terminated string detailing the trigger conditions.?T####################################$$$$$###########$$$$$ g$$$$ $####$$$$$#$$$$$#############################################################################TNone("#%&'-./1789;=>?FHIMSUVX_dghklmqHtvulkanSVkDebugMarkerObjectTagInfoEXT - Specify parameters of a tag to attach to an object DescriptionThe tagName parameter gives a name or identifier to the type of data being tagged. This can be used by debugging layers to easily filter for only data that can be used by that implementation.Valid Usage (Implicit)See Also, , $/vulkanSVkDebugMarkerObjectNameInfoEXT - Specify parameters of a name to give to an object Description Applications may> change the name associated with an object simply by calling $.< again with a new string. To remove a previously set name,  pObjectName should be set to an empty string.Valid Usage (Implicit)See Also, , $.vulkanRVkDebugMarkerMarkerInfoEXT - Specify parameters of a command buffer marker regionValid Usage (Implicit)See Also, $0, $2$ vulkan pMarkerNameS is a pointer to a null-terminated UTF-8 string containing the name of the marker. pMarkerName must" be a null-terminated UTF-8 string$!vulkancolor is an optionalW RGBA color value that can be associated with the marker. A particular implementation may{ choose to ignore this color value. The values contain RGBA values in order, in the range 0.0 to 1.0. If all elements in color# are set to 0.0 then it is ignored.$#vulkan objectType is a 0 specifying the type of the object to be named. objectType must not be # objectType must be a valid  value$$vulkanobject is the object to be tagged.object must not be object must1 be a Vulkan object of the type associated with  objectType as defined in ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debug-report-object-types$%vulkantagName& is a numerical identifier of the tag.$&vulkantagSize8 is the number of bytes of data to attach to the object.tagSize must be greater than 0$'vulkanpTag is a pointer to an array of tagSize= bytes containing the data to be associated with the object.pTag must# be a valid pointer to an array of tagSize bytes$)vulkan objectType is a 0 specifying the type of the object to be named. objectType must not be # objectType must be a valid  value$*vulkanobject is the object to be named.object must not be object must1 be a Vulkan object of the type associated with  objectType as defined in ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debug-report-object-types$+vulkan pObjectNameD is a null-terminated UTF-8 string specifying the name to apply to object. pObjectName must" be a null-terminated UTF-8 string$.vulkanFvkDebugMarkerSetObjectNameEXT - Give a user-friendly name to an objectValid Usage (Implicit)device must be a valid  handle pNameInfo must$ be a valid pointer to a valid  structureHost SynchronizationHost access to pNameInfo->object must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, $/vulkanAvkDebugMarkerSetObjectTagEXT - Attach arbitrary data to an objectValid Usage (Implicit)device must be a valid  handlepTagInfo must$ be a valid pointer to a valid  structureHost SynchronizationHost access to pTagInfo->object must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, $0vulkan>vkCmdDebugMarkerBeginEXT - Open a command buffer marker regionValid Usage (Implicit) commandBuffer must be a valid  handle pMarkerInfo must$ be a valid pointer to a valid  structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics Compute  See Also, $1vulkan=vkCmdDebugMarkerEndEXT - Close a command buffer marker region DescriptionAn application may open a marker region in one command buffer and close it in another, or otherwise split marker regions across multiple command buffers or multiple queue submissions. When viewed from the linear series of submissions to a single queue, the calls to $0 and $1 must be matched and balanced. Valid UsageThere must be an outstanding $0 command prior to the $1 on the queue that  commandBuffer is submitted toIf  commandBuffer& is a secondary command buffer, there must be an outstanding $0 command recorded to  commandBuffer6 that has not previously been ended by a call to $1Valid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics Compute  See Also$2vulkanGvkCmdDebugMarkerInsertEXT - Insert a marker label into a command bufferValid Usage (Implicit) commandBuffer must be a valid  handle pMarkerInfo must$ be a valid pointer to a valid  structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics Compute  See Also, $.vulkandevice' is the device that created the object.vulkan pNameInfo is a pointer to a G structure specifying the parameters of the name to set on the object.$/vulkandevice' is the device that created the object.vulkanpTagInfo is a pointer to a I structure specifying the parameters of the tag to attach to the object.$0vulkan commandBuffer; is the command buffer into which the command is recorded.vulkan pMarkerInfo is a pointer to a C structure specifying the parameters of the marker region to open.$1vulkan commandBuffer; is the command buffer into which the command is recorded.$2vulkan commandBuffer; is the command buffer into which the command is recorded.vulkan pMarkerInfo is a pointer to a > structure specifying the parameters of the marker to insert.>$"$$$'$#$%$&$($+$*$)$$!$ ####################################$$$,$-$.$/$0$1$2a$.$/$0$1$2$($+$*$)$"$$$'$#$%$&$$!$ $$-$$,#######################################################################None("#%&'-./1789;=>?FHIMSUVX_dghklmqI$GvulkanEvkAcquireXlibDisplayEXT - Acquire access to a VkDisplayKHR using Xlib DescriptioneAll permissions necessary to control the display are granted to the Vulkan instance associated with physicalDeviceC until the display is released or the X11 connection specified by dpy2 is terminated. Permission to access the display mayt be temporarily revoked during periods when the X11 server from which control was acquired itself loses access to displayG. During such periods, operations which require access to the display mustH fail with an approriate error code. If the X11 server associated with dpy does not own displayX, or if permission to access it has already been acquired by another entity, the call must return the error code .NotepOne example of when an X11 server loses access to a display is when it loses ownership of its virtual terminal. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee AlsoQ, $HvulkanYvkGetRandROutputDisplayEXT - Query the VkDisplayKHR corresponding to an X11 RandR Output DescriptionIf there is no Q corresponding to rrOutput on physicalDevice,  must be returned in pDisplay. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee AlsoQ, $GvulkanphysicalDevice' The physical device the display is on.physicalDevice must be a valid  handlevulkandpy4 A connection to the X11 server that currently owns display.dpy must be a valid pointer to a  valuevulkandisplay4 The display the caller wishes to control in Vulkan.display must be a valid Q handledisplay must2 have been created, allocated, or retrieved from physicalDevice$HvulkanphysicalDevice4 The physical device to query the display handle on.physicalDevice must be a valid  handlevulkandpy+ A connection to the X11 server from which rrOutput was queried.dpy must be a valid pointer to a  valuevulkanrrOutput An X11 RandR output ID. Q$C$D$E$F$G$H $G$H$D$F$C$EQrNone("#%&'-./1789;=>?FHIMSUVX_dghklmqI0 WvulkanVkSwapchainDisplayNativeHdrCreateInfoAMD - Structure specifying display native HDR parameters of a newly created swapchain object DescriptionIf the pNext chain of [9 does not include this structure, the default value for localDimmingEnable is @, meaning local dimming is initially enabled for the swapchain.Valid Usage (Implicit)sType must be A Valid UsageIt is only valid to set localDimmingEnable to  if X::localDimmingSupport is supportedSee Alsoo, XvulkanvVkDisplayNativeHdrSurfaceCapabilitiesAMD - Structure describing display native HDR specific capabilities of a surfaceValid Usage (Implicit)See Alsoo, $LvulkanlocalDimmingEnable? specifies whether local dimming is enabled for the swapchain.$NvulkanlocalDimmingSupportC specifies whether the surface supports local dimming. If this is , W canq be used to explicitly enable or disable local dimming for the surface. Local dimming may also be overriden by $Q' during the lifetime of the swapchain.$Qvulkan(vkSetLocalDimmingAMD - Set Local DimmingValid Usage (Implicit)device must be a valid  handle swapChain must be a valid K handleBoth of device, and  swapChain mustD have been created, allocated, or retrieved from the same / Valid UsageIt is only valid to call $Q if X::localDimmingSupport is supportedSee Alsoo, , K$Qvulkandevice is the device associated with  swapChain.vulkan swapChain handle to enable local dimming.vulkanlocalDimmingEnable? specifies whether local dimming is enabled for the swapchain.KW$K$LX$M$N     $I$J$O$P$Q/$QX$M$NW$K$L$J$P$I$OK          INone("#%&'-./1789;=>?FHIMSUVX_dghklmqIvulkaniVkDescriptorUpdateTemplateEntry - Describes a single descriptor update of the descriptor update template Valid Usage dstBinding must be a valid binding in the descriptor set layout implicitly specified when using a descriptor update template to update descriptorsdstArrayElement and descriptorCount must be less than or equal to the number of array elements in the descriptor set binding implicitly specified when using a descriptor update template to update descriptors, and all applicable consecutive bindings, as described by phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutiveIf  descriptor type is o, dstArrayElement must be an integer multiple of 4If  descriptor type is o, descriptorCount must be an integer multiple of 4Valid Usage (Implicit)descriptorType must be a valid  valueSee Also, vulkanuVkDescriptorUpdateTemplateCreateInfo - Structure specifying parameters of a newly created descriptor update template Valid UsageIf  templateType is , descriptorSetLayout must be a valid  handleIf  templateType is , pipelineBindPoint must be a valid V valueIf  templateType is , pipelineLayout must be a valid | handleIf  templateType is , set musts be the unique set number in the pipeline layout that uses a descriptor set layout that was created with pQValid Usage (Implicit)sType must be 1pNext must be NULLflags must be 0pDescriptorUpdateEntries must( be a valid pointer to an array of descriptorUpdateEntryCount valid  structures templateType must be a valid  valuedescriptorUpdateEntryCount must be greater than 0Both of descriptorSetLayout, and pipelineLayout7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Also,  , , , V, |, , $o, $avulkanflags is reserved for future use.$bvulkanpDescriptorUpdateEntries is a pointer to an array of X structures describing the descriptors to be updated by the descriptor update template.$cvulkan templateTypeC Specifies the type of the descriptor update template. If set to  it can6 only be used to update descriptor sets with a fixed descriptorSetLayout . If set to  it can: only be used to push descriptor sets using the provided pipelineBindPoint, pipelineLayout, and set number.$dvulkandescriptorSetLayout is the descriptor set layout the parameter update template will be used with. All descriptor sets which are going to be updated through the newly created descriptor update template must be created with this layout. descriptorSetLayout is the descriptor set layout used to build the descriptor update template. All descriptor sets which are going to be updated through the newly created descriptor update template must be created with a layout that matches (is the same as, or defined identically to) this layout. This parameter is ignored if  templateType is not .$evulkanpipelineBindPoint is a V| indicating whether the descriptors will be used by graphics pipelines or compute pipelines. This parameter is ignored if  templateType is not $fvulkanpipelineLayout is a |D object used to program the bindings. This parameter is ignored if  templateType is not $gvulkansett is the set number of the descriptor set in the pipeline layout that will be updated. This parameter is ignored if  templateType is not $ivulkan dstBindingQ is the descriptor binding to update when using this descriptor update template.$jvulkandstArrayElement4 is the starting element in the array belonging to  dstBinding*. If the descriptor binding identified by  srcBinding has a descriptor type of o then dstArrayElement. specifies the starting byte offset to update.$kvulkandescriptorCount- is the number of descriptors to update. If descriptorCount is greater than the number of remaining array elements in the destination binding, those affect consecutive bindings in a manner similar to  g1 above. If the descriptor binding identified by  dstBinding has a descriptor type of o then descriptorCount specifies the number of bytes to update and the remaining array elements in the destination binding refer to the remaining number of bytes in it.$lvulkandescriptorType is a ( specifying the type of the descriptor.$mvulkanoffsetH is the offset in bytes of the first binding in the raw data structure.$nvulkanstride is the stride in bytes between two consecutive array elements of the descriptor update informations in the raw data structure. The actual pointer ptr for each array element j of update entry i is computed using the following formula: w const char *ptr = (const char *)pData + pDescriptorUpdateEntries[i].offset + j * pDescriptorUpdateEntries[i].stride[The stride is useful in case the bindings are stored in structs along with other data. If descriptorType is o then the value of stride- is ignored and the stride is assumed to be 1], i.e. the descriptor update information for them is always specified as a contiguous range.$ovulkanKvkCreateDescriptorUpdateTemplate - Create a new descriptor update templateValid Usage (Implicit)device must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepDescriptorUpdateTemplate must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , $pvulkan=A convenience wrapper to make a compatible pair of calls to $o and $qTo ensure that $q is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.$qvulkanPvkDestroyDescriptorUpdateTemplate - Destroy a descriptor update template object Valid UsageIf  were provided when descriptorSetLayout1 was created, a compatible set of callbacks must be provided hereIf no  were provided when descriptorSetLayout was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid  handleIf descriptorUpdateTemplate is not , descriptorUpdateTemplate must be a valid  handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf descriptorUpdateTemplate is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to descriptorUpdateTemplate must be externally synchronizedSee Also, , $rvulkanlvkUpdateDescriptorSetWithTemplate - Update the contents of a descriptor set object using an update template Valid UsagepData mustT be a valid pointer to a memory containing one or more valid instances of  j,  v , or /= in a layout defined by descriptorUpdateTemplate when it was created with $oValid Usage (Implicit)device must be a valid  handle descriptorSet must be a valid  handledescriptorUpdateTemplate must be a valid  handledescriptorUpdateTemplate must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  descriptorSet must be externally synchronized API example.  ustruct AppBufferView { VkBufferView bufferView; uint32_t applicationRelatedInformation; }; struct AppDataStructure { VkDescriptorImageInfo imageInfo; // a single image info VkDescriptorBufferInfo bufferInfoArray[3]; // 3 buffer infos in an array AppBufferView bufferView[2]; // An application defined structure containing a bufferView // ... some more application related data }; const VkDescriptorUpdateTemplateEntry descriptorUpdateTemplateEntries[] = { // binding to a single image descriptor { 0, // binding 0, // dstArrayElement 1, // descriptorCount VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, // descriptorType offsetof(AppDataStructure, imageInfo), // offset 0 // stride is not required if descriptorCount is 1 }, // binding to an array of buffer descriptors { 1, // binding 0, // dstArrayElement 3, // descriptorCount VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, // descriptorType offsetof(AppDataStructure, bufferInfoArray), // offset sizeof(VkDescriptorBufferInfo) // stride, descriptor buffer infos are compact }, // binding to an array of buffer views { 2, // binding 0, // dstArrayElement 2, // descriptorCount VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, // descriptorType offsetof(AppDataStructure, bufferView) + offsetof(AppBufferView, bufferView), // offset sizeof(AppBufferView) // stride, bufferViews do not have to be compact }, }; // create a descriptor update template for descriptor set updates const VkDescriptorUpdateTemplateCreateInfo createInfo = { VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, // sType NULL, // pNext 0, // flags 3, // descriptorUpdateEntryCount descriptorUpdateTemplateEntries, // pDescriptorUpdateEntries VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, // templateType myLayout, // descriptorSetLayout 0, // pipelineBindPoint, ignored by given templateType 0, // pipelineLayout, ignored by given templateType 0, // set, ignored by given templateType }; VkDescriptorUpdateTemplate myDescriptorUpdateTemplate; myResult = vkCreateDescriptorUpdateTemplate( myDevice, &createInfo, NULL, &myDescriptorUpdateTemplate); } AppDataStructure appData; // fill appData here or cache it in your engine vkUpdateDescriptorSetWithTemplate(myDevice, myDescriptorSet, myDescriptorUpdateTemplate, &appData);See Also, , $ovulkandeviceD is the logical device that creates the descriptor update template.vulkan pCreateInfo is a pointer to a P structure specifying the set of descriptors to update with a single call to ? or $r.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.$qvulkandeviceS is the logical device that has been used to create the descriptor update templatevulkandescriptorUpdateTemplate. is the descriptor update template to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.$rvulkandevice8 is the logical device that updates the descriptor sets.vulkan descriptorSet is the descriptor set to updatevulkandescriptorUpdateTemplate is a / object specifying the update mapping between pData" and the descriptor set to update.vulkanpData0 is a pointer to memory containing one or more  j,  v, or /= structures or pO or R( handles used to write the descriptors.UBA@?>=<;:9876543210/.-,+*)('&%$#"! $h$m$n$l$i$j$k$`$g$a$b$c$d$e$f~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!        $o$p$q$r$o$p$q$r$h$m$n$l$i$j$k$`$g$a$b$c$d$e$f  ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      UBA@?>=<;:9876543210/.-,+*)('&%$#"! BA@?>=<;:9876543210/.-,+*)('&%$#"! 9None("#%&'-./1789;=>?FHIMSUVX_dghklmqJ vulkan@VkPushConstantRange - Structure specifying a push constant rangeValid Usage (Implicit)See Also, bvulkankVkPipelineLayoutCreateInfo - Structure specifying the parameters of a newly created pipeline layout object Valid UsagesetLayoutCount must be less than or equal to  l::maxBoundDescriptorSets$XThe total number of descriptors in descriptor set layouts created without the p bit set with a descriptorType of o and obG accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to  l::maxPerStageDescriptorSamplersXThe total number of descriptors in descriptor set layouts created without the p bit set with a descriptorType of o and oG accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to  l::#maxPerStageDescriptorUniformBuffersXThe total number of descriptors in descriptor set layouts created without the p bit set with a descriptorType of o and oG accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to  l::#maxPerStageDescriptorStorageBuffersXThe total number of descriptors in descriptor set layouts created without the p bit set with a descriptorType of ob, oa, and oG accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to  l::"maxPerStageDescriptorSampledImagesXThe total number of descriptors in descriptor set layouts created without the p bit set with a descriptorType of o`, and oG accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to  l::"maxPerStageDescriptorStorageImagesXThe total number of descriptors in descriptor set layouts created without the p bit set with a descriptorType of o^G accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to  l::%maxPerStageDescriptorInputAttachmentsUThe total number of bindings in descriptor set layouts created without the p bit set with a descriptorType of oG accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to ::(maxPerStageDescriptorInlineUniformBlocks'The total number of descriptors with a descriptorType of o and obG accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to \::,maxPerStageDescriptorUpdateAfterBindSamplers'The total number of descriptors with a descriptorType of o and oG accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to \::2maxPerStageDescriptorUpdateAfterBindUniformBuffers'The total number of descriptors with a descriptorType of o and oG accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to \::2maxPerStageDescriptorUpdateAfterBindStorageBuffers'The total number of descriptors with a descriptorType of ob, oa, and oG accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to \::1maxPerStageDescriptorUpdateAfterBindSampledImages'The total number of descriptors with a descriptorType of o`, and oG accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to \::1maxPerStageDescriptorUpdateAfterBindStorageImages'The total number of descriptors with a descriptorType of o^G accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to \::4maxPerStageDescriptorUpdateAfterBindInputAttachments$The total number of bindings with a descriptorType of oG accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to ::7maxPerStageDescriptorUpdateAfterBindInlineUniformBlocksXThe total number of descriptors in descriptor set layouts created without the p bit set with a descriptorType of o and obJ accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to  l::maxDescriptorSetSamplersXThe total number of descriptors in descriptor set layouts created without the p bit set with a descriptorType of oJ accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to  l::maxDescriptorSetUniformBuffersXThe total number of descriptors in descriptor set layouts created without the p bit set with a descriptorType of oJ accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to  l::%maxDescriptorSetUniformBuffersDynamicXThe total number of descriptors in descriptor set layouts created without the p bit set with a descriptorType of oJ accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to  l::maxDescriptorSetStorageBuffersXThe total number of descriptors in descriptor set layouts created without the p bit set with a descriptorType of oJ accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to  l::%maxDescriptorSetStorageBuffersDynamicXThe total number of descriptors in descriptor set layouts created without the p bit set with a descriptorType of ob, oa, and oJ accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to  l::maxDescriptorSetSampledImagesXThe total number of descriptors in descriptor set layouts created without the p bit set with a descriptorType of o`, and oJ accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to  l::maxDescriptorSetStorageImagesXThe total number of descriptors in descriptor set layouts created without the p bit set with a descriptorType of o^J accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to  l:: maxDescriptorSetInputAttachmentsUThe total number of bindings in descriptor set layouts created without the p bit set with a descriptorType of oJ accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to ::#maxDescriptorSetInlineUniformBlocks1The total number of descriptors of the type o and obJ accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to \::'maxDescriptorSetUpdateAfterBindSamplers1The total number of descriptors of the type oJ accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to \::-maxDescriptorSetUpdateAfterBindUniformBuffers1The total number of descriptors of the type oJ accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to \::4maxDescriptorSetUpdateAfterBindUniformBuffersDynamic1The total number of descriptors of the type oJ accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to \::-maxDescriptorSetUpdateAfterBindStorageBuffers1The total number of descriptors of the type oJ accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to \::4maxDescriptorSetUpdateAfterBindStorageBuffersDynamic1The total number of descriptors of the type ob, oa, and oJ accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to \::,maxDescriptorSetUpdateAfterBindSampledImages1The total number of descriptors of the type o`, and oJ accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to \::,maxDescriptorSetUpdateAfterBindStorageImages1The total number of descriptors of the type o^J accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to \::/maxDescriptorSetUpdateAfterBindInputAttachments$The total number of bindings with a descriptorType of oJ accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to ::2maxDescriptorSetUpdateAfterBindInlineUniformBlocksAny two elements of pPushConstantRanges must$ not include the same stage in  stageFlags pSetLayouts mustQ not contain more than one descriptor set layout that was created with pQ set$The total number of bindings with a descriptorType of oSJ accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to ::&maxDescriptorSetAccelerationStructuresThe total number of pImmutableSamplers created with flags containing F} or F: across all shader stages and across all elements of  pSetLayouts must be less than or equal to whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxdescriptorsetsubsampledsamplers$::maxDescriptorSetSubsampledSamplersValid Usage (Implicit)sType must be pNext must be NULLflags must be 0If setLayoutCount is not 0,  pSetLayouts must( be a valid pointer to an array of setLayoutCount valid  handlesIf pushConstantRangeCount is not 0, pPushConstantRanges must( be a valid pointer to an array of pushConstantRangeCount valid  structuresSee Also,  , , , $$vulkanflags is reserved for future use.$vulkan pSetLayouts is a pointer to an array of  objects.$vulkanpPushConstantRanges is a pointer to an array of  structures defining a set of push constant ranges for use in a single pipeline layout. In addition to descriptor set layouts, a pipeline layout also describes how many push constants can, be accessed by each stage of the pipeline.NotePush constants represent a high speed path to modify constant data in pipelines that is expected to outperform memory-backed resource updates.$vulkan stageFlags is a set of stage flags describing the shader stages that will access a range of push constants. If a particular stage is not included in the range, then accessing members of that range of push constants from the corresponding shader stage will return undefined values. stageFlags must be a valid combination of & values stageFlags must not be 0$vulkanoffset and sizeK are the start offset and size, respectively, consumed by the range. Both offset and size are in units of bytes and must[ be a multiple of 4. The layout of the push constant variables is specified in the shader.offset must be less than  l::maxPushConstantsSizeoffset must be a multiple of 4$vulkansize must be greater than 0size must be a multiple of 4size must be less than or equal to  l::maxPushConstantsSize minus offset$vulkan=vkCreatePipelineLayout - Creates a new pipeline layout objectValid Usage (Implicit)device must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepPipelineLayout must be a valid pointer to a | handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , |, $vulkan=A convenience wrapper to make a compatible pair of calls to $ and $To ensure that $ is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.$vulkan:vkDestroyPipelineLayout - Destroy a pipeline layout object Valid UsageIf  were provided when pipelineLayout1 was created, a compatible set of callbacks must be provided hereIf no  were provided when pipelineLayout was created,  pAllocator must be NULLpipelineLayout must not have been passed to any vkCmd*A command for any command buffers that are still in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state when $ is calledValid Usage (Implicit)device must be a valid  handleIf pipelineLayout is not , pipelineLayout must be a valid | handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf pipelineLayout is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to pipelineLayout must be externally synchronizedSee Also, , |$vulkandevice8 is the logical device that creates the pipeline layout.vulkan pCreateInfo is a pointer to a ? structure specifying the state of the pipeline layout object.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.$vulkandevice9 is the logical device that destroys the pipeline layout.vulkanpipelineLayout# is the pipeline layout to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.|)$$$$$$$$$$$$$$$$$$$$$$|)8None("#%&'-./1789;=>?FHIMSUVX_dghklmqK vulkan^VkPipelineCacheCreateInfo - Structure specifying parameters of a newly created pipeline cache Valid UsageIf initialDataSize is not 0, it must be equal to the size of  pInitialData, as returned by $ when  pInitialData was originally retrievedIf initialDataSize is not 0,  pInitialData must2 have been retrieved from a previous call to $ If the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControlpipelineCreationCacheControl feature is not enabled, flags must not include  Valid Usage (Implicit)sType must be pNext must be NULLflags must be a valid combination of   valuesIf initialDataSize is not 0,  pInitialData must( be a valid pointer to an array of initialDataSize bytesSee Also , , $$vulkanflags is a bitmask of  0 specifying the behavior of the pipeline cache.$vulkaninitialDataSize is the number of bytes in  pInitialData. If initialDataSize5 is zero, the pipeline cache will initially be empty.$vulkan pInitialData is a pointer to previously retrieved pipeline cache data. If the pipeline cache data is incompatible (as defined below) with the device, the pipeline cache will be initially empty. If initialDataSize is zero,  pInitialData is ignored.$vulkan4vkCreatePipelineCache - Creates a new pipeline cache DescriptionNote Applications canS track and manage the total host memory size of a pipeline cache object using the  pAllocator. Applications canF limit the amount of data retrieved from a pipeline cache object in $. Implementations shouldw not internally limit the total number of entries added to a pipeline cache object or the total host memory consumed.Once created, a pipeline cache can be passed to the 7 , , and 7E commands. If the pipeline cache passed into these commands is not , the implementation will query it for possible reuse opportunities and update it with new content. The use of the pipeline cache object in these commands is internally synchronized, and the same pipeline cache object can- be used in multiple threads simultaneously.If flags of  pCreateInfo includes  ?, all commands that modify the returned pipeline cache object must be  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehaviorexternally synchronized.NoteImplementations should make every effort to limit any critical sections to the actual accesses to the cache, which is expected to be significantly shorter than the duration of the vkCreate*Pipelines commands.Valid Usage (Implicit)device must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepPipelineCache must be a valid pointer to a } handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , }, $vulkan=A convenience wrapper to make a compatible pair of calls to $ and $To ensure that $ is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.$vulkan8vkDestroyPipelineCache - Destroy a pipeline cache object Valid UsageIf  were provided when  pipelineCache1 was created, a compatible set of callbacks must be provided hereIf no  were provided when  pipelineCache was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid  handleIf  pipelineCache is not ,  pipelineCache must be a valid } handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf  pipelineCache is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  pipelineCache must be externally synchronizedSee Also, , }$vulkanAvkGetPipelineCacheData - Get the data store from a pipeline cache DescriptionIf pData is NULL), then the maximum size of the data that canA be retrieved from the pipeline cache, in bytes, is returned in  pDataSize. Otherwise,  pDataSize mustY point to a variable set by the user to the size of the buffer, in bytes, pointed to by pDataZ, and on return the variable is overwritten with the amount of data actually written to pData.If  pDataSize$ is less than the maximum size that can. be retrieved by the pipeline cache, at most  pDataSize bytes will be written to pData, and $ will return . Any data written to pData is valid and can be provided as the  pInitialData member of the  structure passed to $. Two calls to $ with the same parameters mustj retrieve the same data unless a command that modifies the contents of the cache is called between them. Applications can store the data retrieved from the pipeline cache, and use these data, possibly in a future run of the application, to populate new pipeline cache objects. The results of pipeline compiles, however, may depend on the vendor ID, device ID, driver version, and other details of the device. To enable applications to detect when previously retrieved data is incompatible with the device, the initial bytes written to pData must2 be a header consisting of the following members: Offset ( Size T Meaning  0 Q 4  length in bytes of the entire pipeline cache header written as a stream of bytes, with the least significant byte first  4 Q 4  a XT[ value written as a stream of bytes, with the least significant byte first  8 z 4 V a vendor ID equal to  2::vendorID_ written as a stream of bytes, with the least significant byte first  12 z 4 V a device ID equal to  2::deviceID_ written as a stream of bytes, with the least significant byte first  16  O* V a pipeline cache ID equal to  2::pipelineCacheUUID *Layout for pipeline cache header version XUThe first four bytes encode the length of the entire pipeline cache header, in bytes. This value includes all fields in the header including the pipeline cache version field and the size of the length field.IThe next four bytes encode the pipeline cache version, as described for XT$. A consumer of the pipeline cache shouldG use the cache version to interpret the remainder of the cache header.If  pDataSizeR is less than what is necessary to store this header, nothing will be written to pData and zero will be written to  pDataSize.Valid Usage (Implicit)device must be a valid  handle pipelineCache must be a valid } handle pDataSize must be a valid pointer to a size_t valueIf the value referenced by  pDataSize is not 0, and pData is not NULL, pData must( be a valid pointer to an array of  pDataSize bytes pipelineCache must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, }$vulkanBvkMergePipelineCaches - Combine the data stores of pipeline caches DescriptionNoteVThe details of the merge operation are implementation dependent, but implementations shouldL merge the contents of the specified pipelines and prune duplicate entries. Valid UsagedstCache must( not appear in the list of source cachesValid Usage (Implicit)device must be a valid  handledstCache must be a valid } handle pSrcCaches must( be a valid pointer to an array of  srcCacheCount valid } handles srcCacheCount must be greater than 0dstCache must6 have been created, allocated, or retrieved from deviceEach element of  pSrcCaches must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to dstCache must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, }$vulkandevice> is the logical device that creates the pipeline cache object.vulkan pCreateInfo is a pointer to a H structure containing initial parameters for the pipeline cache object.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.$vulkandevice? is the logical device that destroys the pipeline cache object.vulkan pipelineCache0 is the handle of the pipeline cache to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.$vulkandevice4 is the logical device that owns the pipeline cache.vulkan pipelineCache- is the pipeline cache to retrieve data from.$vulkandevice< is the logical device that owns the pipeline cache objects.vulkandstCache; is the handle of the pipeline cache to merge results into.vulkan pSrcCachesP is a pointer to an array of pipeline cache handles, which will be merged into dstCache. The previous contents of dstCache are included after the merge.}$$$$ $$$$$$$$$$$$$$} 4None("#%&'-./1789;=>?FHIMSUVX_dghklmqLE1vulkan?VkMemoryRequirements - Structure specifying memory requirementsSee Alsom, S~, $, $$vulkansize1 is the size, in bytes, of the memory allocation required for the resource.$vulkan alignmentB is the alignment, in bytes, of the offset within the allocation required for the resource.$vulkanmemoryTypeBits^ is a bitmask and contains one bit set for every supported memory type for the resource. Bit i( is set if and only if the memory type i in the  mB structure for the physical device is supported for the resource.$vulkan\vkGetBufferMemoryRequirements - Returns the memory requirements for specified Vulkan object Valid UsageIf buffer was created with the A( external memory handle type, then buffer must be bound to memoryValid Usage (Implicit)device must be a valid  handlebuffer must be a valid  handlepMemoryRequirements must be a valid pointer to a  structurebuffer must6 have been created, allocated, or retrieved from deviceSee Also, , $vulkan:vkBindBufferMemory - Bind device memory to a buffer object Description$7 is equivalent to passing the same parameters through G to G. Valid Usagebuffer must) not already be backed by a memory objectbuffer must@ not have been created with any sparse memory binding flags memoryOffset must be less than the size of memorymemory mustG have been allocated using one of the memory types allowed in the memoryTypeBits member of the ( structure returned from a call to $ with buffer memoryOffset must be an integer multiple of the  alignment member of the ( structure returned from a call to $ with bufferThe size member of the ( structure returned from a call to $ with buffer must+ be less than or equal to the size of memory minus  memoryOffsetIf buffer5 requires a dedicated allocation(as reported by S in Hv'::requiresDedicatedAllocation for buffer), memory must have been created with Hu::buffer equal to bufferIf the 3s provided when memory was allocated included a Hu structure in its pNext chain, and Hu::buffer was not , then buffer must equal Hu::buffer , and  memoryOffset must be zero$If buffer was created with the {V bit set, the buffer mustQ be bound to a memory object allocated with a memory type that reports [W$If buffer was created with the {V bit not set, the buffer mustS not be bound to a memory object created with a memory type that reports [WIf buffer was created with ::dedicatedAllocation equal to ., memory must" have been created with ::bufferR equal to a buffer handle created with identical creation parameters to buffer and  memoryOffset must be zeroIf the value of O0:: handleTypes used to allocate memory is not 0, it must6 include at least one of the handles set in O::: handleTypes when buffer was createdIf memory< was created by a memory import operation, that is not c with a non-NULL buffer= value, the external handle type of the imported memory must also have been set in O::: handleTypes when buffer was createdIf memory was created with the c) memory import operation with a non-NULL buffer value, A must also have been set in O::: handleTypes when buffer was created If the b::bufferDeviceAddress feature is enabled and buffer was created with the z bit set, memory must# have been allocated with the 7X bit setValid Usage (Implicit)device must be a valid  handlebuffer must be a valid  handlememory must be a valid  handlebuffer must6 have been created, allocated, or retrieved from devicememory must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to buffer must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureYSee Also, , , m$vulkan[vkGetImageMemoryRequirements - Returns the memory requirements for specified Vulkan object Valid Usageimage must% not have been created with the  flag setIf image was created with the A( external memory handle type, then image must be bound to memoryValid Usage (Implicit)device must be a valid  handleimage must be a valid  handlepMemoryRequirements must be a valid pointer to a  structureimage must6 have been created, allocated, or retrieved from deviceSee Also, , $vulkan9vkBindImageMemory - Bind device memory to an image object Description$7 is equivalent to passing the same parameters through G to Gz. Valid Usageimage must% not have been created with the  setimage must) not already be backed by a memory objectimage must@ not have been created with any sparse memory binding flags memoryOffset must be less than the size of memorymemory mustG have been allocated using one of the memory types allowed in the memoryTypeBits member of the ( structure returned from a call to $ with image memoryOffset must be an integer multiple of the  alignment member of the ( structure returned from a call to $ with imageThe difference of the size of memory and  memoryOffset must& be greater than or equal to the size member of the ( structure returned from a call to $ with the same imageIf image6 requires a dedicated allocation (as reported by S in Hv'::requiresDedicatedAllocation for image), memory must have been created with Hu::image equal to image If the  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dedicatedAllocationImageAliasing#dedicated allocation image aliasing+ feature is not enabled, and the 3s provided when memory$ was allocated included a Hu structure in its pNext chain, and Hu::image was not , then image must equal Hu::image and  memoryOffset must be zero If the  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dedicatedAllocationImageAliasing#dedicated allocation image aliasing' feature is enabled, and the 3s provided when memory$ was allocated included a Hu structure in its pNext chain, and Hu::image was not  , then  memoryOffset must be zero, and image must be either equal to Hu::imageE or an image that was created using the same parameters in 0, with the exception that extent and  arrayLayers mayK differ subject to the following restrictions: every dimension in the extent) parameter of the image being bound mustc be equal to or smaller than the original image for which the allocation was created; and the  arrayLayers) parameter of the image being bound mustY be equal to or smaller than the original image for which the allocation was created#If image was created with the Z bit set, the image mustQ be bound to a memory object allocated with a memory type that reports [W#If image was created with the Z bit not set, the image mustS not be bound to a memory object created with a memory type that reports [WIf image was created with ::dedicatedAllocation equal to ., memory must" have been created with ::imageR equal to an image handle created with identical creation parameters to image and  memoryOffset must be zeroIf the value of O0:: handleTypes used to allocate memory is not 0, it must6 include at least one of the handles set in O;:: handleTypes when image was createdIf memory< was created by a memory import operation, that is not c with a non-NULL buffer= value, the external handle type of the imported memory must also have been set in O;:: handleTypes when image was createdIf memory was created with the c) memory import operation with a non-NULL buffer value, A must also have been set in O;:: handleTypes when image was createdValid Usage (Implicit)device must be a valid  handleimage must be a valid  handlememory must be a valid  handleimage must6 have been created, allocated, or retrieved from devicememory must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to image must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , m, $vulkandevice, is the logical device that owns the buffer.vulkanbuffer is the buffer to query.$vulkandevice7 is the logical device that owns the buffer and memory.vulkanbuffer( is the buffer to be attached to memory.vulkanmemory is a 0 object describing the device memory to attach.vulkan memoryOffset& is the start offset of the region of memoryK which is to be bound to the buffer. The number of bytes returned in the ::size member in memory, starting from  memoryOffset. bytes, will be bound to the specified buffer.$vulkandevice+ is the logical device that owns the image.vulkanimage is the image to query.$vulkandevice6 is the logical device that owns the image and memory.vulkanimage is the image.vulkanmemory is the 0 object describing the device memory to attach.vulkan memoryOffset& is the start offset of the region of memoryJ which is to be bound to the image. The number of bytes returned in the ::size member in memory, starting from  memoryOffset- bytes, will be bound to the specified image. 1$$$$$$$$ $$$$$$$$12None("#%&'-./1789;=>?FHIMSUVX_dghklmqLtvulkan9VkLayerProperties - Structure specifying layer propertiesSee Also$, $$vulkan layerName is an array of  charb containing a null-terminated UTF-8 string which is the name of the layer. Use this name in the ppEnabledLayerNames array passed in the  o1 structure to enable this layer for an instance.$vulkan specVersionK is the Vulkan version the layer was written to, encoded as described in  yhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-coreversions-versionnumbers.$vulkanimplementationVersion^ is the version of this layer. It is an integer, increasing with backward compatible changes.$vulkan description is an array of  charT containing a null-terminated UTF-8 string which provides additional details that can2 be used by the application to identify the layer.$vulkan_vkEnumerateInstanceLayerProperties - Returns up to requested number of global layer properties DescriptionIf  pProperties is NULL@, then the number of layer properties available is returned in pPropertyCount . Otherwise, pPropertyCount mustG point to a variable set by the user to the number of elements in the  pPropertiese array, and on return the variable is overwritten with the number of structures actually written to  pProperties. If pPropertyCountA is less than the number of layer properties available, at most pPropertyCount structures will be written. If pPropertyCount3 is smaller than the number of layers available,  will be returned instead of I, to indicate that not all the available layer properties were returned.{The list of available layers may change at any time due to actions outside of the Vulkan implementation, so two calls to $ with the same parameters may2 return different results, or retrieve different pPropertyCount values or  pProperties contents. Once an instance has been created, the layers enabled for that instance will continue to be enabled and valid for the lifetime of that instance, even if some of them become unavailable for future instances.Valid Usage (Implicit)pPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount  structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also$vulkanZvkEnumerateDeviceLayerProperties - Returns properties of available physical device layers DescriptionIf  pProperties is NULL@, then the number of layer properties available is returned in pPropertyCount . Otherwise, pPropertyCount mustG point to a variable set by the user to the number of elements in the  pPropertiese array, and on return the variable is overwritten with the number of structures actually written to  pProperties. If pPropertyCountA is less than the number of layer properties available, at most pPropertyCount structures will be written. If pPropertyCount3 is smaller than the number of layers available,  will be returned instead of I, to indicate that not all the available layer properties were returned.!The list of layers enumerated by $ mustN be exactly the sequence of layers enabled for the instance. The members of  for each enumerated layer mustB be the same as the properties when the layer was enumerated by $.Valid Usage (Implicit)physicalDevice must be a valid  handlepPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount  structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, $$$$$$$$$$$$$$+None("#%&'-./1789;=>?FHIMSUVX_dghklmqLPivulkanDVkExtensionProperties - Structure specifying an extension propertiesSee Also$, $$vulkan extensionName is an array of  charO containing a null-terminated UTF-8 string which is the name of the extension.$vulkan specVersionc is the version of this extension. It is an integer, incremented with backward compatible changes.$vulkangvkEnumerateInstanceExtensionProperties - Returns up to requested number of global extension properties DescriptionWhen  pLayerName parameter is NULLm, only extensions provided by the Vulkan implementation or by implicitly enabled layers are returned. When  pLayerNameV is the name of a layer, the instance extensions provided by that layer are returned.If  pProperties is NULLE, then the number of extensions properties available is returned in pPropertyCount . Otherwise, pPropertyCount mustG point to a variable set by the user to the number of elements in the  pPropertiese array, and on return the variable is overwritten with the number of structures actually written to  pProperties. If pPropertyCountE is less than the number of extension properties available, at most pPropertyCount! structures will be written. If pPropertyCount6 is smaller than the number of extensions available,  will be returned instead of C, to indicate that not all the available properties were returned.MBecause the list of available layers may change externally between calls to $1, two calls may retrieve different results if a  pLayerName is available in one call but not in another. The extensions supported by a layer may also change between two calls, e.g. if the layer implementation is replaced by a different version between those calls.Implementations must not advertise any pair of extensions that cannot be enabled together due to behavioral differences, or any extension that cannot be enabled against the advertised version.Valid Usage (Implicit)If  pLayerName is not NULL,  pLayerName must' be a null-terminated UTF-8 stringpPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount i structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Alsoi$vulkanbvkEnumerateDeviceExtensionProperties - Returns properties of available physical device extensions DescriptionWhen  pLayerName parameter is NULLm, only extensions provided by the Vulkan implementation or by implicitly enabled layers are returned. When  pLayerNameT is the name of a layer, the device extensions provided by that layer are returned.Implementations must not advertise any pair of extensions that cannot be enabled together due to behavioral differences, or any extension that cannot be enabled against the advertised version.Valid Usage (Implicit)physicalDevice must be a valid  handleIf  pLayerName is not NULL,  pLayerName must' be a null-terminated UTF-8 stringpPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount i structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Alsoi, $vulkan pLayerName is either NULL^ or a pointer to a null-terminated UTF-8 string naming the layer to retrieve extensions from.$vulkanphysicalDevice- is the physical device that will be queried.vulkan pLayerName is either NULL^ or a pointer to a null-terminated UTF-8 string naming the layer to retrieve extensions from.i$$$$$$$i$$$*None("#%&'-./1789;=>?FHIMSUVX_dghklmqM,JhvulkanMVkEventCreateInfo - Structure specifying parameters of a newly created eventValid Usage (Implicit)See Alsob, , $$vulkanflags is reserved for future use.flags must be 0$vulkan)vkCreateEvent - Create a new event object Description:When created, the event object is in the unsignaled state.Valid Usage (Implicit)device must be a valid  handle pCreateInfo must be a valid pointer to a valid h structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepEvent must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , h$vulkan=A convenience wrapper to make a compatible pair of calls to $ and $To ensure that $ is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.$vulkan(vkDestroyEvent - Destroy an event object Valid Usage%All submitted commands that refer to event must have completed executionIf  were provided when event1 was created, a compatible set of callbacks must be provided hereIf no  were provided when event was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid  handleIf event is not , event must be a valid  handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf event is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to event must be externally synchronizedSee Also, , $vulkan9vkGetEventStatus - Retrieve the status of an event object DescriptionUpon success, $H returns the state of the event object with the following return codes:* Status # Meaning  .  The event specified by event( is signaled.  ,  The event specified by event( is unsignaled. Event Object Status CodesIf a  or 1 command is in a command buffer that is in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state+, then the value returned by this command may immediately be out of date.The state of an event cana be updated by the host. The state of the event is immediately changed, and subsequent calls to $~ will return the new state. If an event is already in the requested state, then updating it to the same state has no effect. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, $vulkan+vkSetEvent - Set an event to signaled state DescriptionWhen $m is executed on the host, it defines an /event signal operation/ which sets the event to the signaled state.If event' is already in the signaled state when $ is executed, then $5 has no effect, and no event signal operation occurs.Valid Usage (Implicit)device must be a valid  handleevent must be a valid  handleevent must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to event must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, $vulkan3vkResetEvent - Reset an event to non-signaled state DescriptionWhen $s is executed on the host, it defines an /event unsignal operation/ which resets the event to the unsignaled state.If event) is already in the unsignaled state when $ is executed, then $8 has no effect, and no event unsignal operation occurs. Valid Usageevent must not be waited on by a ) command that is currently executingValid Usage (Implicit)device must be a valid  handleevent must be a valid  handleevent must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to event must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, $vulkandevice. is the logical device that creates the event.vulkan pCreateInfo is a pointer to a hH structure containing information about how the event is to be created.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.$vulkandevice/ is the logical device that destroys the event.vulkanevent' is the handle of the event to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.$vulkandevice+ is the logical device that owns the event.device must be a valid  handlevulkanevent% is the handle of the event to query.event must be a valid  handleevent must1 have been created, allocated, or retrieved from device$vulkandevice+ is the logical device that owns the event.vulkanevent is the event to set.$vulkandevice+ is the logical device that owns the event.vulkanevent is the event to reset. h$$"bc$$$$$$ $$$$$$h$$"bc None("#%&'-./1789;=>?FHIMSUVX_dghklmqM'vulkanZVkCommandPoolCreateInfo - Structure specifying parameters of a newly created command pool Valid Usage9If the protected memory feature is not enabled, the  bit of flags must not be setValid Usage (Implicit)sType must be pNext must be NULLflags must be a valid combination of  valuesSee Also, , $$vulkanflags is a bitmask of P indicating usage behavior for the pool and command buffers allocated from it.$vulkanqueueFamilyIndex4 designates a queue family as described in section  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-queuepropsQueue Family Properties8. All command buffers allocated from this command pool must4 be submitted on queues from the same queue family.$vulkan6vkCreateCommandPool - Create a new command pool object Valid UsagepCreateInfo->queueFamilyIndex mustE be the index of a queue family available in the logical device deviceValid Usage (Implicit)device must be a valid  handle pCreateInfo must$ be a valid pointer to a valid ' structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pCommandPool must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , ', $vulkan=A convenience wrapper to make a compatible pair of calls to $ and $To ensure that $ is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.$vulkan4vkDestroyCommandPool - Destroy a command pool object DescriptionKWhen a pool is destroyed, all command buffers allocated from the pool are  vkFreeCommandBuffers.htmlfreed.3Any primary command buffer allocated from another  that is in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording or executable state4 and has a secondary command buffer allocated from  commandPool recorded into it, becomes  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleinvalid. Valid UsageAll /6 objects allocated from  commandPool must not be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending stateIf  were provided when  commandPool1 was created, a compatible set of callbacks must be provided hereIf no  were provided when  commandPool was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid  handleIf  commandPool is not ,  commandPool must be a valid  handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf  commandPool is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  commandPool must be externally synchronizedSee Also, , $vulkan)vkResetCommandPool - Reset a command pool DescriptionResetting a command pool recycles all of the resources from all of the command buffers allocated from the command pool back to the command pool. All command buffers that have been allocated from the command pool are put in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state.3Any primary command buffer allocated from another  that is in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording or executable state4 and has a secondary command buffer allocated from  commandPool recorded into it, becomes  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleinvalid. Valid UsageAll /6 objects allocated from  commandPool must not be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending stateValid Usage (Implicit)device must be a valid  handle commandPool must be a valid  handleflags must be a valid combination of B values commandPool must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  commandPool must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, A, $vulkandevice5 is the logical device that creates the command pool.vulkan pCreateInfo is a pointer to a '< structure specifying the state of the command pool object.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.$vulkandevice6 is the logical device that destroys the command pool.vulkan commandPool. is the handle of the command pool to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.$vulkandevice2 is the logical device that owns the command pool.vulkan commandPool is the command pool to reset.vulkanflags is a bitmask of B" controlling the reset operation.'$$$AB0$$$$$$$$'$$$0BANone("#%&'-./1789;=>?FHIMSUVX_dghklmqM vulkanXVkBufferViewCreateInfo - Structure specifying parameters of a newly created buffer view Valid Usageoffset must be less than the size of buffer If range is not equal to %, range must be greater than 0If range is not equal to %, range must8 be an integer multiple of the texel block size of formatIf range is not equal to %6, the number of texel buffer elements given by (# range~ / (texel block size)# (texels per block)) where texel block size and texels per block are as defined in the  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibilityCompatible Formats table for format, must be less than or equal to  l::maxTexelBufferElementsIf range is not equal to %, the sum of offset and range must+ be less than or equal to the size of bufferIf range is equal to %>, the number of texel buffer elements given by (# (size - offsetR) / (texel block size)# (texels per block)) where size is the size of bufferL, and texel block size and texels per block are as defined in the  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibilityCompatible Formats table for format, must be less than or equal to  l::maxTexelBufferElementsbuffer must have been created with a usage, value containing at least one of z[ or z\If buffer was created with usage containing z[, format mustG be supported for uniform texel buffers, as specified by the g] flag in  ^::bufferFeatures returned by  If buffer was created with usage containing z\, format mustG be supported for storage texel buffers, as specified by the g_ flag in  ^::bufferFeatures returned by  If buffer is non-sparse then it must7 be bound completely and contiguously to a single /8 object If the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignmenttexelBufferAlignment feature is not enabled, offset must be a multiple of  l::minTexelBufferOffsetAlignment If the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignmenttexelBufferAlignment feature is enabled and if buffer was created with usage containing z\, offset must% be a multiple of the lesser of ::&storageTexelBufferOffsetAlignmentBytes or, if ::,storageTexelBufferOffsetSingleTexelAlignment is .,, the size of a texel of the requested formatc. If the size of a texel is a multiple of three bytes, then the size of a single component of format is used instead If the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignmenttexelBufferAlignment feature is enabled and if buffer was created with usage containing z[, offset must% be a multiple of the lesser of ::&uniformTexelBufferOffsetAlignmentBytes or, if ::,uniformTexelBufferOffsetSingleTexelAlignment is .,, the size of a texel of the requested formatc. If the size of a texel is a multiple of three bytes, then the size of a single component of format is used insteadValid Usage (Implicit)sType must be pNext must be NULLflags must be 0buffer must be a valid  handleformat must be a valid J valueSee Also, , m, J, , $$vulkanflags is reserved for future use.$vulkanbuffer is a $ on which the view will be created.$vulkanformat is a J; describing the format of the data elements in the buffer.$vulkanoffset is an offset in bytes from the base address of the buffer. Accesses to the buffer view from shaders use addressing that is relative to this starting offset.$vulkanrange+ is a size in bytes of the buffer view. If range is equal to %, the range from offset' to the end of the buffer is used. If %I is used and the remaining size of the buffer is not a multiple of the  ^https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#texel-block-sizetexel block size of format', the nearest smaller multiple is used.$vulkan4vkCreateBufferView - Create a new buffer view objectValid Usage (Implicit)device must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepView must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , $vulkan=A convenience wrapper to make a compatible pair of calls to $ and $To ensure that $ is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.$vulkan2vkDestroyBufferView - Destroy a buffer view object Valid Usage%All submitted commands that refer to  bufferView must have completed executionIf  were provided when  bufferView1 was created, a compatible set of callbacks must be provided hereIf no  were provided when  bufferView was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid  handleIf  bufferView is not ,  bufferView must be a valid  handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf  bufferView is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  bufferView must be externally synchronizedSee Also, , $vulkandevice4 is the logical device that creates the buffer view.vulkan pCreateInfo is a pointer to a B structure containing parameters to be used to create the buffer.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.$vulkandevice5 is the logical device that destroys the buffer view.vulkan bufferView is the buffer view to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.$$$$$$.$$$$$$$$$$$$.RNone("#%&'-./1789;=>?FHIMSUVX_dghklmqNzvulkan\VkPhysicalDeviceExternalSemaphoreInfo - Structure specifying semaphore creation parameters.Valid Usage (Implicit)sType must be >pNext must be NULL* or a pointer to a valid instance of DThe sType value of each struct in the pNext chain must be unique handleType must be a valid   valueSee Also , , %, ZvulkanbVkExternalSemaphoreProperties - Structure describing supported external semaphore handle features DescriptionIf  handleType/ is not supported by the implementation, then ::externalSemaphoreFeatures will be set to zero.Valid Usage (Implicit)See Also ,  , , %, Z$vulkanexportFromImportedHandleTypes is a bitmask of  , specifying which types of imported handle  handleType can be exported from.$vulkancompatibleHandleTypes is a bitmask of   specifying handle types which can# be specified at the same time as  handleType when creating a semaphore.$vulkanexternalSemaphoreFeatures is a bitmask of   describing the features of  handleType.$vulkanpNext is NULL6 or a pointer to a structure extending this structure.$vulkan handleType is a  _ value specifying the external semaphore handle type for which capabilities will be returned.%vulkanovkGetPhysicalDeviceExternalSemaphoreProperties - Function for querying external semaphore handle capabilities.Valid Usage (Implicit)See Also, , %vulkanphysicalDeviceH is the physical device from which to query the semaphore capabilities.physicalDevice must be a valid  handlevulkanpExternalSemaphoreInfo is a pointer to a A structure describing the parameters that would be consumed by <.pExternalSemaphoreInfo must be a valid pointer to a valid  structure$$$$$$$~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!       %%$$$$$$$~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!       None("#%&'-./1789;=>?FHIMSUVX_dghklmqN+|%%%%%%%%%%%%%%%%%%% %!% %%%%%%%%%!%%%%%%%%%%GNone("#%&'-./1789;=>?FHIMSUVX_dghklmqN vulkanLVkBindImageMemoryInfo - Structure specifying how to bind an image to memory Valid Usageimage must) not already be backed by a memory objectimage must@ not have been created with any sparse memory binding flags memoryOffset must be less than the size of memoryIf the pNext chain does not include a  structure, memory mustG have been allocated using one of the memory types allowed in the memoryTypeBits member of the 4z- structure returned from a call to S with imageIf the pNext chain does not include a  structure,  memoryOffset must$ be an integer multiple of the  alignment member of the 4z- structure returned from a call to S with imageIf the pNext chain does not include a / structure, the difference of the size of memory and  memoryOffset must! be greater than or equal to the size member of the 4z- structure returned from a call to S with the same imageIf the pNext chain includes a  structure, image must! have been created with the I bit setIf the pNext chain includes a  structure, memory mustG have been allocated using one of the memory types allowed in the memoryTypeBits member of the 4z- structure returned from a call to S with image and where :: planeAspect corresponds to the XZ:: planeAspect in the SX structure s pNext chainIf the pNext chain includes a  structure,  memoryOffset must$ be an integer multiple of the  alignment member of the 4z- structure returned from a call to S with image and where :: planeAspect corresponds to the XZ:: planeAspect in the SX structure s pNext chainIf the pNext chain includes a / structure, the difference of the size of memory and  memoryOffset must! be greater than or equal to the size member of the 4z- structure returned from a call to S with the same image and where :: planeAspect corresponds to the XZ:: planeAspect in the SX structure s pNext chainIf image6 requires a dedicated allocation (as reported by S in Hv'::requiresDedicatedAllocation for image), memory must have been created with Hu::image equal to image and  memoryOffset must be zero If the  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dedicatedAllocationImageAliasing#dedicated allocation image aliasing+ feature is not enabled, and the 3s provided when memory$ was allocated included a Hu structure in its pNext chain, and Hu::image was not , then image must equal Hu::image and  memoryOffset must be zero If the  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dedicatedAllocationImageAliasing#dedicated allocation image aliasing' feature is enabled, and the 3s provided when memory$ was allocated included a Hu structure in its pNext chain, and Hu::image was not  , then  memoryOffset must be zero, and image must be either equal to Hu::imageE or an image that was created using the same parameters in 0, with the exception that extent and  arrayLayers mayK differ subject to the following restrictions: every dimension in the extent) parameter of the image being bound mustc be equal to or smaller than the original image for which the allocation was created; and the  arrayLayers) parameter of the image being bound mustY be equal to or smaller than the original image for which the allocation was createdIf image was created with ::dedicatedAllocation equal to ., memory must" have been created with ::image equal to image and  memoryOffset must be zeroIf the pNext chain includes a " structure, all instances of memory specified by ::pDeviceIndices must have been allocatedIf the pNext chain includes a  structure, and ::splitInstanceBindRegionCount is not zero, then image must! have been created with the D bit setIf the pNext chain includes a & structure, all elements of ::pSplitInstanceBindRegions must= be valid rectangles contained within the dimensions of imageIf the pNext chain includes a @ structure, the union of the areas of all elements of ::pSplitInstanceBindRegions. that correspond to the same instance of image must cover the entire imageIf image3 was created with a valid swapchain handle in ]:: swapchain, then the pNext chain must include a 4 structure containing the same swapchain handleIf the pNext chain includes a  structure, memory must be If the pNext chain does not include a  structure, memory must be a valid  handleIf the value of O0:: handleTypes used to allocate memory is not 0, it must6 include at least one of the handles set in O;:: handleTypes when image was createdIf memory< was created by a memory import operation, that is not c with a non-NULL buffer= value, the external handle type of the imported memory must also have been set in O;:: handleTypes when image was createdIf memory was created with the c) memory import operation with a non-NULL buffer value, A must also have been set in O;:: handleTypes when image was createdValid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , , or The sType value of each struct in the pNext chain must be uniqueimage must be a valid  handleBoth of image, and memory7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Also, m, , , %-, vulkanMVkBindBufferMemoryInfo - Structure specifying how to bind a buffer to memory Valid Usagebuffer must) not already be backed by a memory object buffer must@ not have been created with any sparse memory binding flags memoryOffset must be less than the size of memorymemory mustG have been allocated using one of the memory types allowed in the memoryTypeBits member of the 4z- structure returned from a call to 4 with buffer memoryOffset must be an integer multiple of the  alignment member of the 4z- structure returned from a call to 4 with bufferThe size member of the 4z- structure returned from a call to 4 with buffer must& be less than or equal to the size of memory minus  memoryOffsetIf buffer5 requires a dedicated allocation(as reported by S in Hv'::requiresDedicatedAllocation for buffer), memory must have been created with Hu::buffer equal to buffer and  memoryOffset must be zeroIf the 3s provided when memory was allocated included a Hu structure in its pNext chain, and Hu::buffer was not , then buffer must equal Hu::buffer and  memoryOffset must be zeroIf buffer was created with ::dedicatedAllocation equal to ., memory must" have been created with ::buffer equal to buffer and  memoryOffset must be zeroIf the pNext chain includes a " structure, all instances of memory specified by ::pDeviceIndices must have been allocatedIf the value of O0:: handleTypes used to allocate memory is not 0, it must6 include at least one of the handles set in O::: handleTypes when buffer was createdIf memory< was created by a memory import operation, that is not c with a non-NULL buffer= value, the external handle type of the imported memory must also have been set in O::: handleTypes when buffer was createdIf memory was created with the c) memory import operation with a non-NULL buffer value, A must also have been set in O::: handleTypes when buffer was created If the `::bufferDeviceAddress feature is enabled and buffer was created with the a bit set, memory must# have been allocated with the b bit setValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniquebuffer must be a valid  handlememory must be a valid  handleBoth of buffer, and memory must? have been created, allocated, or retrieved from the same See Also, , m, , %,, %#vulkanpNext is NULL6 or a pointer to a structure extending this structure.%$vulkanimage' is the image to be attached to memory.%%vulkanmemory is a 0 object describing the device memory to attach.%&vulkan memoryOffset& is the start offset of the region of memoryJ which is to be bound to the image. The number of bytes returned in the 4z::size member in memory, starting from  memoryOffset. bytes, will be bound to the specified image.%(vulkanpNext is NULL6 or a pointer to a structure extending this structure.%)vulkanbuffer( is the buffer to be attached to memory.%*vulkanmemory is a 0 object describing the device memory to attach.%+vulkan memoryOffset& is the start offset of the region of memoryK which is to be bound to the buffer. The number of bytes returned in the 4z::size member in memory, starting from  memoryOffset/ bytes, will be bound to the specified buffer.%,vulkan:vkBindBufferMemory2 - Bind device memory to buffer objects DescriptionOn some implementations, it mayC be more efficient to batch memory bindings into a single command. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureYSee Also, %-vulkan8vkBindImageMemory2 - Bind device memory to image objects DescriptionOn some implementations, it mayC be more efficient to batch memory bindings into a single command. Valid UsageIf any ::image was created with I then all planes of ::image must( be bound individually in separate  pBindInfos pBindInfos must< not refer to the same image subresource more than onceValid Usage (Implicit)device must be a valid  handle pBindInfos must( be a valid pointer to an array of  bindInfoCount valid  structures bindInfoCount must be greater than 0 Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, %,vulkandevice8 is the logical device that owns the buffers and memory.device must be a valid  handlevulkan pBindInfos is a pointer to an array of  bindInfoCount 2 structures describing buffers and memory to bind. pBindInfos must# be a valid pointer to an array of  bindInfoCount valid  structures%-vulkandevice7 is the logical device that owns the images and memory.vulkan pBindInfos is a pointer to an array of 3 structures, describing images and memory to bind.LMBQPONMLKJIHGFEDC%"%%%#%&%$%'%*%(%+%)~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      %,%-%,%-%'%*%(%+%)%"%%%#%&%$~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      MBQPONMLKJIHGFEDCQPONMLKJIHGFEDCLNone("#%&'-./1789;=>?FHIMSUVX_dghklmqOx %:%;%<%=%>%?%@%A%B%C%D %B%A%@%C%D%=%<%;%?%:%>?None("#%&'-./1789;=>?FHIMSUVX_dghklmqPl-vulkanHVkSparseMemoryBind - Structure specifying a sparse memory bind operation DescriptionThe  binding range [resourceOffset, resourceOffset + size&) has different constraints based on flags. If flags contains  G, the binding range must[ be within the mip tail region of the metadata aspect. This metadata region is defined by:metadataRegion = [base, base + imageMipTailSize)base = imageMipTailOffset + imageMipTailStride nand imageMipTailOffset, imageMipTailSize, and imageMipTailStride values are from the g corresponding to the metadata aspect of the image, and n is a valid array layer index for the image,imageMipTailStride- is considered to be zero for aspects where ::formatProperties.flags contains  T.If flags does not contain  G, the binding range must be within the range [0,4z::size). Valid UsageIf memory is not , memory and  memoryOffset mustR match the memory requirements of the resource, as described in section chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-associationIf memory is not , memory mustA not have been created with a memory type that reports [_ bit setsize must be greater than 0resourceOffset must& be less than the size of the resourcesize must> be less than or equal to the size of the resource minus resourceOffset memoryOffset must be less than the size of memorysize must& be less than or equal to the size of memory minus  memoryOffsetIf memory was created with O0:: handleTypes not equal to 0(, at least one handle type it contained must! also have been set in O::: handleTypes or O;:: handleTypes# when the resource was createdIf memory` was created by a memory import operation, the external handle type of the imported memory must also have been set in O::: handleTypes or O;:: handleTypes# when the resource was createdValid Usage (Implicit)If memory is not , memory must be a valid  handleflags must be a valid combination of  E valuesSee Also, m, , ,  Dvulkan^VkSparseImageOpaqueMemoryBindInfo - Structure specifying sparse image opaque memory bind info Valid UsageIf the flags member of any element of pBinds contains  G!, the binding range defined must> be within the mip tail region of the metadata aspect of imageValid Usage (Implicit)image must be a valid  handlepBinds must# be a valid pointer to an array of  bindCount valid  structures bindCount must be greater than 0See Also, , vulkanXVkSparseImageMemoryRequirements - Structure specifying sparse image memory requirementsSee Alsom, , SL, %pvulkanQVkSparseImageMemoryBindInfo - Structure specifying sparse image memory bind info Valid UsageThe subresource.mipLevel member of each element of pBinds must be less than the  mipLevels specified in 0 when image was createdThe subresource.arrayLayer member of each element of pBinds must be less than the  arrayLayers specified in 0 when image was createdimage must have been created with  setValid Usage (Implicit)image must be a valid  handlepBinds must# be a valid pointer to an array of  bindCount valid  structures bindCount must be greater than 0See Also, , vulkanGVkSparseImageMemoryBind - Structure specifying sparse image memory bind Valid Usage If the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyAliasedsparse aliased residencyU feature is not enabled, and if any other resources are bound to ranges of memory, the range of memory being bound must) not overlap with those bound ranges memory and  memoryOffset must= match the memory requirements of the calling command s image, as described in section chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-association subresource must" be a valid image subresource for image (see  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views)offset.x must5 be a multiple of the sparse image block width (::imageGranularity.width) of the image extent.width mustR either be a multiple of the sparse image block width of the image, or else ( extent.width + offset.x) must. equal the width of the image subresourceoffset.y must6 be a multiple of the sparse image block height (::imageGranularity.height) of the image extent.height mustS either be a multiple of the sparse image block height of the image, or else ( extent.height + offset.y) must* equal the height of the image subresourceoffset.z must5 be a multiple of the sparse image block depth (::imageGranularity.depth) of the image extent.depth mustR either be a multiple of the sparse image block depth of the image, or else ( extent.depth + offset.z) must. equal the depth of the image subresourceIf memory was created with O0:: handleTypes not equal to 0(, at least one handle type it contained must! also have been set in O;:: handleTypes when the image was createdIf memory` was created by a memory import operation, the external handle type of the imported memory must also have been set in O;:: handleTypes when image was createdValid Usage (Implicit) subresource must be a valid  structureIf memory is not , memory must be a valid  handleflags must be a valid combination of  E valuesSee Also, m, s, , q, ,  DvulkanTVkSparseImageFormatProperties - Structure specifying sparse image format propertiesSee Alsos, h,  O, TK, , %qvulkanZVkSparseBufferMemoryBindInfo - Structure specifying a sparse buffer memory bind operationValid Usage (Implicit)See Also, , vulkan>VkImageSubresource - Structure specifying an image subresourceValid Usage (Implicit)See Alsoh, , 0vulkanBVkBindSparseInfo - Structure specifying a sparse binding operation Valid UsageIf any element of pWaitSemaphores or pSignalSemaphores was created with a  of  then the pNext chain must include a B structureIf the pNext) chain of this structure includes a B# structure and any element of pWaitSemaphores was created with a  of  then its waitSemaphoreValueCount member must equal waitSemaphoreCountIf the pNext) chain of this structure includes a B# structure and any element of pSignalSemaphores was created with a  of  then its signalSemaphoreValueCount member must equal signalSemaphoreCountFor each element of pSignalSemaphores created with a  of ( the corresponding element of B::pSignalSemaphoreValues mustQ have a value greater than the current value of the semaphore when the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operation is executedFor each element of pWaitSemaphores created with a  of ( the corresponding element of B::pWaitSemaphoreValues must have a value which does not differ from the current value of the semaphore or from the value of any outstanding semaphore wait or signal operation on that semaphore by more than xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference#maxTimelineSemaphoreValueDifferenceFor each element of pSignalSemaphores created with a  of ( the corresponding element of B::pSignalSemaphoreValues must have a value which does not differ from the current value of the semaphore or from the value of any outstanding semaphore wait or signal operation on that semaphore by more than xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference#maxTimelineSemaphoreValueDifferenceValid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of  or BThe sType value of each struct in the pNext chain must be uniqueIf waitSemaphoreCount is not 0, pWaitSemaphores must( be a valid pointer to an array of waitSemaphoreCount valid v handlesIf bufferBindCount is not 0,  pBufferBinds must( be a valid pointer to an array of bufferBindCount valid  structuresIf imageOpaqueBindCount is not 0, pImageOpaqueBinds must( be a valid pointer to an array of imageOpaqueBindCount valid  structuresIf imageBindCount is not 0,  pImageBinds must( be a valid pointer to an array of imageBindCount valid  structuresIf signalSemaphoreCount is not 0, pSignalSemaphores must( be a valid pointer to an array of signalSemaphoreCount valid v handlesBoth of the elements of pSignalSemaphores, and the elements of pWaitSemaphores7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Alsov, , , , , %r%FvulkanpNext is NULL6 or a pointer to a structure extending this structure.%GvulkanpWaitSemaphores is a pointer to an array of semaphores upon which to wait on before the sparse binding operations for this batch begin execution. If semaphores to wait on are provided, they define a  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-waitingsemaphore wait operation.%Hvulkan pBufferBinds is a pointer to an array of  structures.%IvulkanpImageOpaqueBinds is a pointer to an array of A structures, indicating opaque sparse image bindings to perform.%Jvulkan pImageBinds is a pointer to an array of : structures, indicating sparse image bindings to perform.%KvulkanpSignalSemaphores is a pointer to an array of semaphores which will be signaled when the sparse binding operations for this batch have completed execution. If semaphores to be signaled are provided, they define a  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operation.%Mvulkanimage is the  object to be bound%NvulkanpBinds is a pointer to an array of  structures%Pvulkanimage is the  object to be bound.%QvulkanpBinds is a pointer to an array of  structures.%Svulkanbuffer is the  object to be bound.buffer must be a valid  handle%TvulkanpBinds is a pointer to array of  structures.pBinds must# be a valid pointer to an array of  bindCount valid  structures%Vvulkan subresource is the image aspect% and region of interest in the image.%WvulkanoffsetN are the coordinates of the first texel within the image subresource to bind.%XvulkanextentW is the size in texels of the region within the image subresource to bind. The extent must be a multiple of the sparse image block dimensions, except when binding sparse image blocks along the edge of an image subresource it can) instead be such that any coordinate of offset + extent? equals the corresponding dimensions of the image subresource.%Yvulkanmemory is the D object that the sparse image blocks of the image are bound to. If memory is ', the sparse image blocks are unbound.%Zvulkan memoryOffset is an offset into  object. If memory is , this value is ignored.%[vulkanflags! are sparse memory binding flags.%]vulkanresourceOffset! is the offset into the resource.%^vulkansize. is the size of the memory region to be bound.%_vulkanmemory is the 8 object that the range of the resource is bound to. If memory is , the range is unbound.%`vulkan memoryOffset is the offset into the + object to bind the resource range to. If memory is , this value is ignored.%avulkanflags is a bitmask of  E, specifying usage of the binding operation.%cvulkan aspectMask is a h selecting the image aspect. aspectMask must be a valid combination of i values aspectMask must not be 0%dvulkanmipLevel selects the mipmap level.%evulkan arrayLayer selects the array layer.%hvulkanimageMipTailFirstLodY is the first mip level at which image subresources are included in the mip tail region.%ivulkanimageMipTailSize; is the memory size (in bytes) of the mip tail region. If formatProperties.flags contains  T, this is the size of the whole mip tail, otherwise this is the size of the mip tail of a single array layer. This value is guaranteed to be a multiple of the sparse block size in bytes.%jvulkanimageMipTailOffset( is the opaque memory offset used with  to bind the mip tail region(s).%kvulkanimageMipTailStride? is the offset stride between each array-layer s mip tail, if formatProperties.flags does not contain  T% (otherwise the value is undefined).%mvulkan aspectMask is a bitmask i@ specifying which aspects of the image the properties apply to.%nvulkanimageGranularitya is the width, height, and depth of the sparse image block in texels or compressed texel blocks.%ovulkanflags is a bitmask of  P> specifying additional information about the sparse resource.%pvulkanVvkGetImageSparseMemoryRequirements - Query the memory requirements for a sparse image DescriptionIf pSparseMemoryRequirements is NULLK, then the number of sparse memory requirements available is returned in pSparseMemoryRequirementCount. Otherwise, pSparseMemoryRequirementCount mustG point to a variable set by the user to the number of elements in the pSparseMemoryRequirementsf array, and on return the variable is overwritten with the number of structures actually written to pSparseMemoryRequirements. If pSparseMemoryRequirementCountK is less than the number of sparse memory requirements available, at most pSparseMemoryRequirementCount structures will be written.#If the image was not created with  then pSparseMemoryRequirementCount will be set to zero and pSparseMemoryRequirements will not be written to.Note?It is legal for an implementation to report a larger value in 4z::sizeB than would be obtained by adding together memory sizes for all  returned by %p. This mayf occur when the implementation requires unused padding in the address range describing the resource.Valid Usage (Implicit)device must be a valid  handleimage must be a valid  handlepSparseMemoryRequirementCount must be a valid pointer to a uint32_t valueIf the value referenced by pSparseMemoryRequirementCount is not 0, and pSparseMemoryRequirements is not NULL, pSparseMemoryRequirements must( be a valid pointer to an array of pSparseMemoryRequirementCount  structuresimage must6 have been created, allocated, or retrieved from deviceSee Also, , %qvulkanqvkGetPhysicalDeviceSparseImageFormatProperties - Retrieve properties of an image format applied to sparse images DescriptionIf  pProperties is NULLH, then the number of sparse format properties available is returned in pPropertyCount . Otherwise, pPropertyCount mustG point to a variable set by the user to the number of elements in the  pPropertiese array, and on return the variable is overwritten with the number of structures actually written to  pProperties. If pPropertyCountI is less than the number of sparse format properties available, at most pPropertyCount structures will be written.If , is not supported for the given arguments, pPropertyCountB will be set to zero upon return, and no data will be written to  pProperties.Multiple aspects are returned for depth/stencil images that are implemented as separate planes by the implementation. The depth and stencil data planes each have unique  data.gDepth/stencil images with depth and stencil data interleaved into a single plane will return a single  structure with the  aspectMask set to t | s. Valid Usagesamples must$ be a bit value that is set in  w:: sampleCounts returned by   with format, type, tiling, and usage) equal to those in this command and flags( equal to the value that is set in 0::flags when the image is createdValid Usage (Implicit)physicalDevice must be a valid  handleformat must be a valid J valuetype must be a valid P valuesamples must be a valid a valueusage must be a valid combination of R valuesusage must not be 0tiling must be a valid O valuepPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount  structuresSee AlsoJ, O, P, Q, , a, %rvulkanBvkQueueBindSparse - Bind device memory to a sparse resource object Description%r is a  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submissionqueue submission command,, with each batch defined by an element of  pBindInfo as a A structure. Batches begin execution in the order they appear in  pBindInfo, but may complete out of order.,Within a batch, a given range of a resource must not be bound more than once. Across batches, if a range is to be bound to one allocation and offset and then to another allocation and offset, then the application must guarantee (usually using semaphores) that the binding operations are executed in the correct order, as well as to order binding operations against the execution of command buffer submissions.As no operation to %r causes any pipeline stage to access memory, synchronization primitives used in this command effectively only define execution dependencies.MAdditional information about fence and semaphore operation is described in  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronizationthe synchronization chapter. Valid UsageIf fence is not , fence must be unsignaledIf fence is not , fence mustg not be associated with any other queue command that has not yet completed execution on that queueEach element of the pSignalSemaphores member of each element of  pBindInfo must\ be unsignaled when the semaphore signal operation it defines is executed on the devicecWhen a semaphore wait operation referring to a binary semaphore defined by any element of the pWaitSemaphores member of any element of  pBindInfo executes on queue, there must6 be no other queues waiting on the same semaphoreAll elements of the pWaitSemaphores member of all elements of  pBindInfo( member referring to a binary semaphore must4 be semaphores that are signaled, or have  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operations( previously submitted for executionAll elements of the pWaitSemaphores member of all elements of  pBindInfo created with a  of  must reference a semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) must' have also been submitted for executionValid Usage (Implicit)queue must be a valid z handleIf  bindInfoCount is not 0,  pBindInfo must( be a valid pointer to an array of  bindInfoCount valid  structuresIf fence is not , fence must be a valid  handleThe queue must" support sparse binding operationsBoth of fence, and queue7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same Host SynchronizationHost access to queue must be externally synchronizedHost access to  pBindInfo[].pBufferBinds[].buffer must be externally synchronizedHost access to  pBindInfo[].pImageOpaqueBinds[].image must be externally synchronizedHost access to  pBindInfo[].pImageBinds[].image must be externally synchronizedHost access to fence must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type | - x - w SPARSE_BINDING  -  Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , z%pvulkandevice+ is the logical device that owns the image.vulkanimage is the , object to get the memory requirements for.%qvulkanphysicalDeviceK is the physical device from which to query the sparse image capabilities.vulkanformat is the image format.vulkantype is the dimensionality of image.vulkansamples3 is the number of samples per texel as defined in a.vulkanusage9 is a bitmask describing the intended usage of the image.vulkantiling9 is the tiling arrangement of the texel blocks in memory.%rvulkanqueueG is the queue that the sparse binding operations will be submitted to.vulkan pBindInfo is a pointer to an array of @ structures, each specifying a sparse binding submission batch.vulkanfence is an optional& handle to a fence to be signaled. If fence is not , it defines a  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signalingfence signal operation.O%\%_%^%a%`%]%O%P%Q%f%g%h%i%j%k%L%M%N%U%Y%W%X%[%Z%V%l%o%m%n%R%S%T%b%c%d%e%E%G%F%H%I%J%K D E F G O P Q T S Rhijutsrqponmlk%p%q%r^%p%q%r%l%o%m%n%f%g%h%i%j%k%b%c%d%e%\%_%^%a%`%]%U%Y%W%X%[%Z%V%R%S%T%O%P%Q%L%M%N%E%G%F%H%I%J%Kijutsrqponmlkutsrqponmlkh P Q T S R T S R O E F G G DSNone("#%&'-./1789;=>?FHIMSUVX_dghklmqPvulkan)VkSparseImageMemoryRequirements2 - (None)Valid Usage (Implicit)See Also, , %, vulkan@VkMemoryRequirements2 - Structure specifying memory requirementsValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueSee Also, , , %, , , %, vulkan-VkImageSparseMemoryRequirementsInfo2 - (None)Valid Usage (Implicit)See Also, , %, vulkan'VkImageMemoryRequirementsInfo2 - (None) Valid UsageIf image was created with a  multi-planar format and the  flag, there must be a  included in the pNext chain of the  structureIf image was created with  and with c, then there must be a  included in the pNext chain of the  structureIf image was not created with the  flag, there must not be a  included in the pNext chain of the  structureIf image: was created with a single-plane format and with any tiling other than c, then there must not be a  included in the pNext chain of the  structureIf image was created with the A( external memory handle type, then image must be bound to memoryValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueimage must be a valid  handleSee Also, , %, vulkan(VkBufferMemoryRequirementsInfo2 - (None) Valid UsageIf buffer was created with the A( external memory handle type, then buffer must be bound to memoryValid Usage (Implicit)sType must be pNext must be NULLbuffer must be a valid  handleSee Also, , %, %vulkanmemoryRequirements is a C structure describing the memory requirements of the sparse image.%vulkanpNext is NULL6 or a pointer to a structure extending this structure.%vulkanmemoryRequirements is a ? structure describing the memory requirements of the resource.%vulkanimage is the image to query.image must be a valid  handle%vulkanpNext is NULL6 or a pointer to a structure extending this structure.%vulkanimage is the image to query.%vulkanbuffer is the buffer to query.%vulkan]vkGetBufferMemoryRequirements2 - Returns the memory requirements for specified Vulkan objectValid Usage (Implicit)See Also, , %vulkan\vkGetImageMemoryRequirements2 - Returns the memory requirements for specified Vulkan objectValid Usage (Implicit)See Also, , %vulkanWvkGetImageSparseMemoryRequirements2 - Query the memory requirements for a sparse imageValid Usage (Implicit)device must be a valid  handlepInfo must$ be a valid pointer to a valid  structurepSparseMemoryRequirementCount must be a valid pointer to a uint32_t valueIf the value referenced by pSparseMemoryRequirementCount is not 0, and pSparseMemoryRequirements is not NULL, pSparseMemoryRequirements must( be a valid pointer to an array of pSparseMemoryRequirementCount  structuresSee Also, , %vulkandevice, is the logical device that owns the buffer.device must be a valid  handlevulkanpInfo is a pointer to a M structure containing parameters required for the memory requirements query.pInfo must be a valid pointer to a valid  structure%vulkandevice+ is the logical device that owns the image.device must be a valid  handlevulkanpInfo is a pointer to a M structure containing parameters required for the memory requirements query.pInfo must be a valid pointer to a valid  structure%vulkandevice+ is the logical device that owns the image.vulkanpInfo is a pointer to a M structure containing parameters required for the memory requirements query.%%%%%%%%%%%%~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      %%%%%%%%%%%%%%%%%%~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      None("#%&'-./1789;=>?FHIMSUVX_dghklmqPsk%%%%%%%%%%%%%%%%%%%%%%%%%%%k%%%%%>None("#%&'-./1789;=>?FHIMSUVX_dghklmqQ)vulkan\VkShaderModuleCreateInfo - Structure specifying parameters of a newly created shader module Valid UsagecodeSize must be greater than 0If pCode is a pointer to SPIR-V code, codeSize must be a multiple of 4pCode mustW point to either valid SPIR-V code, formatted and packed as described by the  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirv-specKhronos SPIR-V Specification or valid GLSL code which must be written to the GL_KHR_vulkan_glsl extension specificationIf pCode( is a pointer to SPIR-V code, that code must; adhere to the validation rules described by the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-module-validation Validation Rules within a Module section of the  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilitiesSPIR-V Environment appendixIf pCode is a pointer to GLSL code, it must( be valid GLSL code written to the GL_KHR_vulkan_glsl GLSL extension specificationpCode must declare the Shader capability for SPIR-V codepCode must\ not declare any capability that is not supported by the API, as described by the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-module-validation Capabilities section of the  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilitiesSPIR-V Environment appendixIf pCode5 declares any of the capabilities listed in the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-tableSPIR-V Environment6 appendix, one of the corresponding requirements must be satisfiedValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueflags must be 0pCode must( be a valid pointer to an array of \textrm{codeSize} \over 4 uint32_t valuesSee Also , , %%vulkanpNext is NULL6 or a pointer to a structure extending this structure.%vulkanflags is reserved for future use.%vulkanpCode is a pointer to code that is used to create the shader module. The type and format of the code is determined from the content of the memory addressed by pCode.%vulkan9vkCreateShaderModule - Creates a new shader module object DescriptionEOnce a shader module has been created, any entry points it contains can4 be used in pipeline shader stages as described in  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-computeCompute Pipelines and  `https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-graphicsGraphics Pipelines.&If the shader stage fails to compile U will be generated and the compile log will be reported back to the application by VK_EXT_debug_report if enabled.Valid Usage (Implicit)device must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pShaderModule must be a valid pointer to a u handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , u, %vulkan=A convenience wrapper to make a compatible pair of calls to % and %To ensure that % is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.%vulkan/vkDestroyShaderModule - Destroy a shader module DescriptionA shader module canJ be destroyed while pipelines created using its shaders are still in use. Valid UsageIf  were provided when  shaderModule1 was created, a compatible set of callbacks must be provided hereIf no  were provided when  shaderModule was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid  handleIf  shaderModule is not ,  shaderModule must be a valid u handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf  shaderModule is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  shaderModule must be externally synchronizedSee Also, , u%vulkandevice6 is the logical device that creates the shader module.vulkan pCreateInfo is a pointer to a  structure.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.%vulkandevice7 is the logical device that destroys the shader module.vulkan shaderModule/ is the handle of the shader module to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter. u+%%%% %%% %%%%%%%u+ =None("#%&'-./1789;=>?FHIMSUVX_dghklmqQvulkanQVkSamplerCreateInfo - Structure specifying parameters of a newly created sampler Description(Mapping of OpenGL to Vulkan filter modes magFilter values of 7 and 6 directly correspond to  GL_NEAREST and  GL_LINEAR magnification filters.  minFilter and  mipmapModeM combine to correspond to the similarly named OpenGL minification filter of GL_minFilter_MIPMAP_mipmapMode (e.g.  minFilter of 6 and  mipmapMode of  correspond to GL_LINEAR_MIPMAP_NEAREST).]There are no Vulkan filter modes that directly correspond to OpenGL minification filters of  GL_LINEAR or  GL_NEAREST , but they can be emulated using , minLod = 0, and maxLod = 0.25, and using  minFilter = 6 or  minFilter = 7, respectively.Note that using a maxLod of zero would cause  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-filtering magnification" to always be performed, and the  magFilter to always be used. This is valid, just not an exact match for OpenGL behavior. Clamping the maximum LOD to 0.25 allows the  value to be non-zero and minification to be performed, while still always rounding down to the base level. If the  minFilter and  magFilter are equal, then using a maxLod of zero also works.,The maximum number of sampler objects which canZ be simultaneously created on a device is implementation-dependent and specified by the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxSamplerAllocationCountmaxSamplerAllocationCount member of the  l structure. If maxSamplerAllocationCount is exceeded, & will return .Since w5 is a non-dispatchable handle type, implementations may return the same handle for sampler state vectors that are identical. In such cases, all such objects would only count once against the maxSamplerAllocationCount limit. Valid UsageThe absolute value of  mipLodBias must be less than or equal to  l::maxSamplerLodBiasmaxLod must be greater than or equal to minLod If the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-samplerAnisotropyanisotropic sampling feature is not enabled, anisotropyEnable must be .If anisotropyEnable is .,  maxAnisotropy must be between 1.0 and  l::maxSamplerAnisotropy, inclusiveIf  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversion is enabled and the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features; of the sampler Y 2CBCR conversion do not support gd,  minFilter and  magFilter must2 be equal to the sampler Y 2CBCR conversion s  chromaFilterIf unnormalizedCoordinates is .,  minFilter and  magFilter must be equalIf unnormalizedCoordinates is .,  mipmapMode must be If unnormalizedCoordinates is ., minLod and maxLod must be zeroIf unnormalizedCoordinates is .,  addressModeU and  addressModeV must each be either  or If unnormalizedCoordinates is ., anisotropyEnable must be .If unnormalizedCoordinates is .,  compareEnable must be . If any of  addressModeU,  addressModeV or  addressModeW are ,  borderColor must be a valid  valueIf  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversion is enabled,  addressModeU,  addressModeV, and  addressModeW must be , anisotropyEnable must be . , and unnormalizedCoordinates must be .The sampler reduction mode must be set to e if  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversion is enabledIf  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-samplerMirrorClampToEdgesamplerMirrorClampToEdge! is not enabled, and if the #VK_KHR_sampler_mirror_clamp_to_edge extension is not enabled,  addressModeU,  addressModeV and  addressModeW must not be If  compareEnable is .,  compareOp must be a valid C value If either  magFilter or  minFilter is , anisotropyEnable must be .If  compareEnable is . , the  reductionMode member of ! must be eIf flags includes   , then  minFilter and  magFilter must be equalIf flags includes   , then  mipmapMode must be If flags includes   , then minLod and maxLod must be zeroIf flags includes   , then  addressModeU and  addressModeV must each be either  or If flags includes   , then anisotropyEnable must be .If flags includes   , then  compareEnable must be .If flags includes   , then unnormalizedCoordinates must be .If  borderColor is set to one of  or , then a  must be present in the pNext chain If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-customBorderColorscustomBorderColors feature is not enabled,  borderColor must not be set to  or ?The maximum number of samplers with custom border colors which cang be simultaneously created on a device is implementation-dependent and specified by the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxCustomBorderColorSamplersmaxCustomBorderColorSamplers member of the  structureValid Usage (Implicit)sType must be  Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , !, or The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of   values magFilter must be a valid I value minFilter must be a valid I value mipmapMode must be a valid  value addressModeU must be a valid  value addressModeV must be a valid  value addressModeW must be a valid  valueSee Alsoo, , C, I, ,  , , , &%vulkanpNext is NULL6 or a pointer to a structure extending this structure.%vulkanflags is a bitmask of  2 describing additional parameters of the sampler.%vulkan magFilter is a I@ value specifying the magnification filter to apply to lookups.%vulkan minFilter is a I? value specifying the minification filter to apply to lookups.%vulkan mipmapMode is a 9 value specifying the mipmap filter to apply to lookups.%vulkan addressModeU is a R value specifying the addressing mode for outside [0..1] range for U coordinate.%vulkan addressModeV is a R value specifying the addressing mode for outside [0..1] range for V coordinate.%vulkan addressModeW is a R value specifying the addressing mode for outside [0..1] range for W coordinate.%vulkan mipLodBias is the bias to be added to mipmap LOD (level-of-detail) calculation and bias provided by image sampling functions in SPIR-V, as described in the  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-level-of-detail-operationLevel-of-Detail Operation section.%vulkananisotropyEnable is .8 to enable anisotropic filtering, as described in the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-anisotropic-filteringTexel Anisotropic Filtering section, or . otherwise.%vulkan maxAnisotropy9 is the anisotropy value clamp used by the sampler when anisotropyEnable is .. If anisotropyEnable is .,  maxAnisotropy is ignored.%vulkan compareEnable is .E to enable comparison against a reference value during lookups, or . otherwise.[Note: Some implementations will default to shader state if this member does not match.%vulkan compareOp is a Ck value specifying the comparison function to apply to fetched data before filtering as described in the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operationDepth Compare Operation section.%vulkanminLod and maxLodL are the values used to clamp the computed LOD value, as described in the  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-level-of-detail-operationLevel-of-Detail Operation section.&vulkan borderColor is a 6 value specifying the predefined border color to use.&vulkanunnormalizedCoordinatest controls whether to use unnormalized or normalized texel coordinates to address texels of the image. When set to ., the range of the image coordinates used to lookup the texel is in the range of zero to the image dimensions for x, y and z. When set to .0 the range of image coordinates is zero to one.When unnormalizedCoordinates is .R, images the sampler is used with in the shader have the following requirements:The viewType must be either `f or `{.The image view must, have a single layer and a single mip level.When unnormalizedCoordinates is .`, image built-in functions in the shader that use the sampler have the following requirements:The functions must not use projection.The functions must not use offsets.&vulkan-vkCreateSampler - Create a new sampler object Valid UsageThere must be less than  l::maxSamplerAllocationCount8 VkSampler objects currently created on the device.Valid Usage (Implicit)device must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSampler must be a valid pointer to a w handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , w, &vulkan=A convenience wrapper to make a compatible pair of calls to & and &To ensure that & is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.&vulkan+vkDestroySampler - Destroy a sampler object Valid Usage%All submitted commands that refer to sampler must have completed executionIf  were provided when sampler1 was created, a compatible set of callbacks must be provided hereIf no  were provided when sampler was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid  handleIf sampler is not , sampler must be a valid w handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf sampler is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to sampler must be externally synchronizedSee Also, , w&vulkandevice0 is the logical device that creates the sampler.vulkan pCreateInfo is a pointer to a 7 structure specifying the state of the sampler object.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.&vulkandevice1 is the logical device that destroys the sampler.vulkansampler is the sampler to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.7I4765w(%%%%%%%%%%%%%%%%&& &&&K&&&%%%%%%%%%%%%%%%%&&w(I4765765 <None("#%&'-./1789;=>?FHIMSUVX_dghklmqRtvulkanUVkSemaphoreCreateInfo - Structure specifying parameters of a newly created semaphoreValid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , d, or DThe sType value of each struct in the pNext chain must be uniqueflags must be 0See Also , , && vulkanpNext is NULL6 or a pointer to a structure extending this structure.& vulkanflags is reserved for future use.&vulkan7vkCreateSemaphore - Create a new queue semaphore objectValid Usage (Implicit)device must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pSemaphore must be a valid pointer to a v handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , v, &vulkan=A convenience wrapper to make a compatible pair of calls to & and &To ensure that & is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.&vulkan/vkDestroySemaphore - Destroy a semaphore object Valid Usage$All submitted batches that refer to  semaphore must have completed executionIf  were provided when  semaphore1 was created, a compatible set of callbacks must be provided hereIf no  were provided when  semaphore was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid  handleIf  semaphore is not ,  semaphore must be a valid v handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf  semaphore is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  semaphore must be externally synchronizedSee Also, , v&vulkandevice2 is the logical device that creates the semaphore.vulkan pCreateInfo is a pointer to a L structure containing information about how the semaphore is to be created.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.&vulkandevice3 is the logical device that destroys the semaphore.vulkan semaphore+ is the handle of the semaphore to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter. v#& & & &&& &&&& & & v# ;None("#%&'-./1789;=>?FHIMSUVX_dghklmqSN_vulkan<VkSubmitInfo - Structure specifying a queue submit operation Description)The order that command buffers appear in pCommandBuffers is used to determine  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order, and thus all the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-implicitimplicit ordering guaranteesJ that respect it. Other than these implicit ordering guarantees and any  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization#explicit synchronization primitives, these command buffers may+ overlap or otherwise execute out of order. Valid UsageEach element of pCommandBuffers must( not have been allocated with wg  If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders. feature is not enabled, each element of pWaitDstStageMask must not contain  z If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders. feature is not enabled, each element of pWaitDstStageMask must not contain  | or  {Each element of pWaitDstStageMask must not include  rIf any element of pWaitSemaphores or pSignalSemaphores was created with a  of , then the pNext chain must include a B structureIf the pNext) chain of this structure includes a B# structure and any element of pWaitSemaphores was created with a  of , then its waitSemaphoreValueCount member must equal waitSemaphoreCountIf the pNext) chain of this structure includes a B# structure and any element of pSignalSemaphores was created with a  of , then its signalSemaphoreValueCount member must equal signalSemaphoreCountFor each element of pSignalSemaphores created with a  of ( the corresponding element of B::pSignalSemaphoreValues mustQ have a value greater than the current value of the semaphore when the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operation is executedFor each element of pWaitSemaphores created with a  of ( the corresponding element of B::pWaitSemaphoreValues must have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on that semaphore by more than xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference#maxTimelineSemaphoreValueDifferenceFor each element of pSignalSemaphores created with a  of ( the corresponding element of B::pSignalSemaphoreValues must have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on that semaphore by more than xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference#maxTimelineSemaphoreValueDifference If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders. feature is not enabled, each element of pWaitDstStageMask must not contain  m If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders. feature is not enabled, each element of pWaitDstStageMask must not contain  lValid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of e, , u, , B, , or ;The sType value of each struct in the pNext chain must be uniqueIf waitSemaphoreCount is not 0, pWaitSemaphores must( be a valid pointer to an array of waitSemaphoreCount valid v handlesIf waitSemaphoreCount is not 0, pWaitDstStageMask must( be a valid pointer to an array of waitSemaphoreCount valid combinations of X valuesEach element of pWaitDstStageMask must not be 0If commandBufferCount is not 0, pCommandBuffers must( be a valid pointer to an array of commandBufferCount valid /6 handlesIf signalSemaphoreCount is not 0, pSignalSemaphores must( be a valid pointer to an array of signalSemaphoreCount valid v handlesEach of the elements of pCommandBuffers, the elements of pSignalSemaphores, and the elements of pWaitSemaphores7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Also/6, W, v, , &&vulkanpNext is NULL6 or a pointer to a structure extending this structure.&vulkanpWaitSemaphores is a pointer to an array of v handles upon which to wait before the command buffers for this batch begin execution. If semaphores to wait on are provided, they define a  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-waitingsemaphore wait operation.&vulkanpWaitDstStageMaskd is a pointer to an array of pipeline stages at which each corresponding semaphore wait will occur.&vulkanpCommandBuffers is a pointer to an array of /6! handles to execute in the batch.&vulkanpSignalSemaphores is a pointer to an array of v handles which will be signaled when the command buffers for this batch have completed execution. If semaphores to be signaled are provided, they define a  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operation.&vulkan3vkGetDeviceQueue - Get a queue handle from a device Description& must8 only be used to get queues that were created with the flags parameter of  ? set to zero. To get queues that were created with a non-zero flags parameter use D.. Valid UsagequeueFamilyIndex must8 be one of the queue family indices specified when device was created, via the   structure queueIndex mustZ be less than the number of queues created for the specified queue family index when device was created, via the  queueCount member of the   structure ::flags must! have been set to zero when device was createdValid Usage (Implicit)device must be a valid  handlepQueue must be a valid pointer to a z handleSee Also, z&vulkanOvkQueueSubmit - Submits a sequence of semaphores or command buffers to a queue Description& is a  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submissionqueue submission command,, with each batch defined by an element of pSubmits7. Batches begin execution in the order they appear in pSubmits, but may complete out of order..Fence and semaphore operations submitted with & have additional ordering constraints compared to other submission commands, with dependencies involving previous and subsequent queue operations. Information about these additional constraints can be found in the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores semaphore and  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fencesfence sections of  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronizationthe synchronization chapter.Details on the interaction of pWaitDstStageMask- with synchronization are described in the  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-waitingsemaphore wait operation section of  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronizationthe synchronization chapter.!The order that batches appear in pSubmits is used to determine  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order, and thus all the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-implicitimplicit ordering guaranteesJ that respect it. Other than these implicit ordering guarantees and any  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization#explicit synchronization primitives, these batches may+ overlap or otherwise execute out of order.9If any command buffer submitted to this queue is in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleexecutable state, it is moved to the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending stateW. Once execution of all submissions of a command buffer complete, it moves from the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state, back to the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleexecutable state.. If a command buffer was recorded with the vh! flag, it instead moves to the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle invalid state.If & fails, it may return  or ". If it does, the implementation must ensure that the state and contents of any resources or synchronization primitives referenced by the submitted command buffers and any semaphores referenced by pSubmits/ is unaffected by the call or its failure. If &d fails in such a way that the implementation is unable to make that guarantee, the implementation must return . See  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device. Valid UsageIf fence is not , fence must be unsignaledIf fence is not , fence mustg not be associated with any other queue command that has not yet completed execution on that queue Any calls to ,  or R that have been recorded into any of the command buffer elements of the pCommandBuffers member of any element of pSubmits, must not reference any /; that is referenced by any of those commands in a command buffer that has been submitted to another queue and is still in the  pending state.Any stage flag included in any element of the pWaitDstStageMask member of any element of pSubmits mustB be a pipeline stage supported by one of the capabilities of queue, as specified in the whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported"table of supported pipeline stagesEach element of the pSignalSemaphores member of any element of pSubmits must\ be unsignaled when the semaphore signal operation it defines is executed on the devicecWhen a semaphore wait operation referring to a binary semaphore defined by any element of the pWaitSemaphores member of any element of pSubmits executes on queue, there must6 be no other queues waiting on the same semaphoreAll elements of the pWaitSemaphores member of all elements of pSubmits created with a  of  must reference a semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) must' have also been submitted for executionEach element of the pCommandBuffers member of each element of pSubmits must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclepending or executable stateIf any element of the pCommandBuffers member of any element of pSubmits was not recorded with the vi , it must not be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state Any  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-secondary"secondary command buffers recorded into any element of the pCommandBuffers member of any element of pSubmits must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclepending or executable state If any  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-secondary"secondary command buffers recorded into any element of the pCommandBuffers member of any element of pSubmits was not recorded with the vi , it must not be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending stateEach element of the pCommandBuffers member of each element of pSubmits must! have been allocated from a /E1 that was created for the same queue family queue belongs toIf any element of pSubmits->pCommandBuffers includes a  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquire'Queue Family Transfer Acquire Operation , there must# exist a previously submitted  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-release'Queue Family Transfer Release Operation on a queue in the queue family identified by the acquire operation, with parameters matching the acquire operation as defined in the definition of such  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquireacquire operations5, and which happens-before the acquire operation*If a command recorded into any element of pCommandBuffers was a 7 whose  queryPool was created with a  queryType of #*, the  \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#profiling-lockprofiling lock must) have been held continuously on the  that queueG was retrieved from, throughout recording of those command buffersAny resource created with #j0 that is read by an operation specified by pSubmits must@ not be owned by any queue family other than the one which queue, belongs to, at the time it is executedValid Usage (Implicit)queue must be a valid z handleIf  submitCount is not 0, pSubmits must( be a valid pointer to an array of  submitCount valid  structuresIf fence is not , fence must be a valid  handleBoth of fence, and queue7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same Host SynchronizationHost access to queue must be externally synchronizedHost access to fence must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type | - x - w Any  -  Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, z, 2qvulkan&queueWaitIdle with selectable safeness&vulkan1vkQueueWaitIdle - Wait for a queue to become idle Description&o is equivalent to submitting a fence to a queue and waiting with an infinite timeout for that fence to signal.Valid Usage (Implicit)queue must be a valid z handleHost SynchronizationHost access to queue must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type | - x - w Any  -  Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Alsoz& vulkan A variant of & which makes a *safe* FFI call2rvulkan'deviceWaitIdle with selectable safeness&!vulkan3vkDeviceWaitIdle - Wait for a device to become idle Description&! is equivalent to calling & for all queues owned by device.Valid Usage (Implicit)device must be a valid  handleHost SynchronizationHost access to all z objects created from device must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also&"vulkan A variant of &! which makes a *safe* FFI call&vulkandevice+ is the logical device that owns the queue.vulkanqueueFamilyIndex> is the index of the queue family to which the queue belongs.vulkan queueIndexA is the index within this queue family of the queue to retrieve.&vulkanqueue< is the queue that the command buffers will be submitted to.vulkanpSubmits is a pointer to an array of @ structures, each specifying a command buffer submission batch.vulkanfence is an optionalc handle to a fence to be signaled once all submitted command buffers have completed execution. If fence is not , it defines a  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signalingfence signal operation.2qvulkanqueue is the queue on which to wait.&vulkanqueue is the queue on which to wait.& vulkanqueue is the queue on which to wait.2rvulkandevice is the logical device to idle.&!vulkandevice is the logical device to idle.&"vulkandevice is the logical device to idle..WX f  ~ } | { z y x w v u t s r q p o n m l k j i h gz576&&&&&&&&&& &!&"H&&&& &!&"&&&&&&z576X f  ~ } | { z y x w v u t s r q p o n m l k j i h g  ~ } | { z y x w v u t s r q p o n m l k j i h gW:None("#%&'-./1789;=>?FHIMSUVX_dghklmqS vulkanVVkQueryPoolCreateInfo - Structure specifying parameters of a newly created query pool DescriptionpipelineStatistics is ignored if  queryType is not  . Valid Usage If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineStatisticsQuerypipeline statistics queries feature is not enabled,  queryType must not be  If  queryType is  , pipelineStatistics must be a valid combination of   valuesIf  queryType is   , the pNext chain must" include a structure of type r queryCount must be greater than 0Valid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of r or BThe sType value of each struct in the pNext chain must be uniqueflags must be 0 queryType must be a valid ^ valueSee Also ,  , ^, , &/&*vulkanpNext is NULL6 or a pointer to a structure extending this structure.&+vulkanflags is reserved for future use.&,vulkan queryType is a ^; value specifying the type of queries managed by the pool.&-vulkan queryCount. is the number of queries managed by the pool.&.vulkanpipelineStatistics is a bitmask of  a specifying which counters will be returned in queries on the new pool, as described below in  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats.&/vulkan2vkCreateQueryPool - Create a new query pool objectValid Usage (Implicit)device must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pQueryPool must be a valid pointer to a { handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , {, &0vulkan=A convenience wrapper to make a compatible pair of calls to &/ and &1To ensure that &1 is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.&1vulkan0vkDestroyQueryPool - Destroy a query pool object Valid Usage%All submitted commands that refer to  queryPool must have completed executionIf  were provided when  queryPool1 was created, a compatible set of callbacks must be provided hereIf no  were provided when  queryPool was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid  handleIf  queryPool is not ,  queryPool must be a valid { handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf  queryPool is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  queryPool must be externally synchronizedSee Also, , {&2vulkanXvkGetQueryPoolResults - Copy results of queries in a query pool to a host memory region Description)The range of queries read is defined by [ firstQuery,  firstQuery +  queryCount - 1]. For pipeline statistics queries, each query index in the pool contains one integer value for each bit that is enabled in ::pipelineStatistics when the pool is created.If no bits are set in flags, and all requested queries are in the available state, results are written as an array of 32-bit unsigned integer values. The behavior when not all queries are available, is described  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-wait-bit-not-setbelow.If  @ is not set and the result overflows a 32-bit value, the value may* either wrap or saturate. Similarly, if  < is set and the result overflows a 64-bit value, the value may either wrap or saturate.If   is set, Vulkan will wait for each query to be in the available state before retrieving the numerical results for that query. In this case, &2& is guaranteed to succeed and return  if the queries become available in a finite time (i.e. if they have been issued and not reset). If queries will never finish (e.g. due to being reset but not issued), then &2 may not return in finite time.If   and  8 are both not set then no result values are written to pDataN for queries that are in the unavailable state at the time of the call, and &2 returns 3. However, availability state is still written to pData for those queries if   is set.Note Applications must& take care to ensure that use of the   bit has the desired effect.]For example, if a query has been used previously and a command buffer records the commands ;, 7, and 9K for that query, then the query will remain in the available state until ]< is called or the ;, command executes on a queue. Applications can use fences or events to ensure that a query has already been reset before checking for its results or availability status. Otherwise, a stale value could be returned from a previous use of the query.The above also applies when   is used in combination with  2. In this case, the returned availability status may< reflect the result of a previous use of the query unless ]< is called or the ;< command has been executed since the last use of the query.Note Applications canz double-buffer query pool usage, with a pool per frame, and reset queries at the end of the frame in which they are read.If   is set,   is not set, and the query s status is unavailable, an intermediate result value between zero and the final result value is written to pData for that query.If   is set, the final integer value written for each query is non-zero if the query s status was available or zero if the status was unavailable. When   is used, implementations mustY guarantee that if they return a non-zero availability value then the numerical results mustG be valid, assuming the results are not reset by a subsequent command.NoteSatisfying this guarantee mayp require careful ordering by the application, e.g. to read the availability status before reading the results. Valid Usage firstQuery must, be less than the number of queries in  queryPool If   is not set in flags, then pData and stride must be multiples of 4If   is not set in flags and the  queryType used to create  queryPool was not   , then pData and stride must be multiples of 4If   is set in flags then pData and stride must be multiples of 8If the  queryType used to create  queryPool was   , then pData and stride must" be multiples of the size of k The sum of  firstQuery and  queryCount must8 be less than or equal to the number of queries in  queryPooldataSize mustM be large enough to contain the result of each query, as described lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-memorylayouthereIf the  queryType used to create  queryPool was  , flags must not contain  If the  queryType used to create  queryPool was  , flags must not contain  ,   or  If the  queryType used to create  queryPool was   , the  queryPool mustL have been recorded once for each pass as retrieved via a call to dValid Usage (Implicit)device must be a valid  handle queryPool must be a valid { handlepData must# be a valid pointer to an array of dataSize bytesflags must be a valid combination of ] valuesdataSize must be greater than 0 queryPool must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, m, {, \&/vulkandevice3 is the logical device that creates the query pool.vulkan pCreateInfo is a pointer to a P structure containing the number and type of queries to be managed by the pool.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.&1vulkandevice4 is the logical device that destroys the query pool.vulkan queryPool is the query pool to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.&2vulkandevice0 is the logical device that owns the query pool.vulkan queryPoolH is the query pool managing the queries containing the desired results.vulkan firstQuery is the initial query index.vulkan queryCount" is the number of queries to read.vulkandataSize2 is the size in bytes of the buffer pointed to by pData.vulkanpDataK is a pointer to a user-allocated buffer where the results will be writtenvulkanstrideG is the stride in bytes between results for individual queries within pData.vulkanflags is a bitmask of ]/ specifying how and when results are returned..\] ^ {!&)&+&*&-&,&.                &/&0&1&2E&/&0&1&2&)&+&*&-&,&.{!  ^ ] \                         7None("#%&'-./1789;=>?FHIMSUVX_dghklmqXvulkan,VkViewport - Structure specifying a viewport Description!The framebuffer depth coordinate zf mayx be represented using either a fixed-point or floating-point representation. However, a floating-point representation must be used if the depth/stencil attachment has a floating-point depth component. If an m-bit fixed-point representation is used, we assume that it represents each value \frac{k}{2^m - 1}b, where k " { 0, 1, & , 2m-1 }, as k (e.g. 1.0 is represented in binary as a string of all ones).TThe viewport parameters shown in the above equations are found from these values asox = x + width / 2oy = y + height / 2oz = minDepthpx = widthpy = heightpz = maxDepth - minDepth.If a render pass transform is enabled, the values (px,py) and (ox, oy) defining the viewport are transformed as described in  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transformrender pass transform1 before participating in the viewport transform.The application can specify a negative term for height{, which has the effect of negating the y coordinate in clip space before performing the transform. When using a negative height, the application should also adjust the yo value to point to the lower left corner of the viewport instead of the upper left corner. Using the negative heightK allows the application to avoid having to negate the y component of the Position_ output from the last vertex processing stage in shaders that also target other graphics APIs.The width and height of the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxViewportDimensions4implementation-dependent maximum viewport dimensions mustN be greater than or equal to the width and height of the largest image which can* be created and attached to a framebuffer.<The floating-point viewport bounds are represented with an  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-viewportSubPixelBits"implementation-dependent precision. Valid Usagewidth must be greater than 0.0 width must be less than or equal to  l::maxViewportDimensions[0]The absolute value of height must be less than or equal to  l::maxViewportDimensions[1]x must be greater than or equal to viewportBoundsRange[0](x + width) must be less than or equal to viewportBoundsRange[1]y must be greater than or equal to viewportBoundsRange[0]y must be less than or equal to viewportBoundsRange[1](y + height) must" be greater than or equal to viewportBoundsRange[0](y + height) must be less than or equal to viewportBoundsRange[1]Unless VK_EXT_depth_range_unrestricted extension is enabled minDepth must be between 0.0 and 1.0 , inclusiveUnless VK_EXT_depth_range_unrestricted extension is enabled maxDepth must be between 0.0 and 1.0 , inclusiveSee Also, , vulkanXVkVertexInputBindingDescription - Structure specifying vertex input binding descriptionValid Usage (Implicit)See Also, vulkan\VkVertexInputAttributeDescription - Structure specifying vertex input attribute descriptionValid Usage (Implicit)See AlsoJ, vulkan?VkStencilOpState - Structure specifying stencil operation stateValid Usage (Implicit)See AlsoC, , fvulkanKVkSpecializationMapEntry - Structure specifying a specialization map entry DescriptionIf a  constantID| value is not a specialization constant ID used in the shader, that map entry does not affect the behavior of the pipeline. Valid UsageFor a  constantID4 specialization constant declared in a shader, size must match the byte size of the  constantID1. If the specialization constant is of type boolean, size must be the byte size of oSee Alsovulkan?VkSpecializationInfo - Structure specifying specialization info Description pMapEntries is a pointer to a  structure. Valid UsageThe offset member of each element of  pMapEntries must be less than dataSizeThe size member of each element of  pMapEntries must be less than or equal to dataSize minus offsetValid Usage (Implicit)If  mapEntryCount is not 0,  pMapEntries must( be a valid pointer to an array of  mapEntryCount valid  structuresIf dataSize is not 0, pData must( be a valid pointer to an array of dataSize bytesSee Also, vulkanoVkPipelineViewportStateCreateInfo - Structure specifying parameters of a newly created pipeline viewport state Valid Usage If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  viewportCount must be 1 If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  scissorCount must be 1 viewportCount must be between 1 and  l:: maxViewports, inclusive scissorCount must be between 1 and  l:: maxViewports, inclusive scissorCount and  viewportCount must be identicalThe x and y members of offset member of any element of  pScissors must be greater than or equal to 0Evaluation of (offset.x +  extent.width) mustF not cause a signed integer addition overflow for any element of  pScissorsEvaluation of (offset.y +  extent.height) mustF not cause a signed integer addition overflow for any element of  pScissorsIf the viewportWScalingEnable member of a  structure included in the pNext chain is ., the  viewportCount member of the  structure must be equal to  viewportCountValid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of 0, $, /, :, or The sType value of each struct in the pNext chain must be uniqueflags must be 0 viewportCount must be greater than 0 scissorCount must be greater than 0See Also,  K, p, , vulkanvVkPipelineVertexInputStateCreateInfo - Structure specifying parameters of a newly created pipeline vertex input state Valid UsagevertexBindingDescriptionCount must be less than or equal to  l::maxVertexInputBindingsvertexAttributeDescriptionCount must be less than or equal to  l::maxVertexInputAttributes For every binding# specified by each element of pVertexAttributeDescriptions, a  must exist in pVertexBindingDescriptions with the same value of bindingAll elements of pVertexBindingDescriptions must' describe distinct binding numbersAll elements of pVertexAttributeDescriptions must+ describe distinct attribute locationsValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of "The sType value of each struct in the pNext chain must be uniqueflags must be 0If vertexBindingDescriptionCount is not 0, pVertexBindingDescriptions must( be a valid pointer to an array of vertexBindingDescriptionCount valid  structuresIf vertexAttributeDescriptionCount is not 0, pVertexAttributeDescriptions must( be a valid pointer to an array of vertexAttributeDescriptionCount valid  structuresSee Also, N,  T, , , vulkanwVkPipelineTessellationStateCreateInfo - Structure specifying parameters of a newly created pipeline tessellation state Valid UsagepatchControlPoints must: be greater than zero and less than or equal to  l::maxTessellationPatchSizeValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueflags must be 0See Also, N,  ], vulkankVkPipelineShaderStageCreateInfo - Structure specifying parameters of a newly created pipeline shader stage Valid Usage If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled, stage must not be  i If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled, stage must not be  k or  j If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shader feature is not enabled, stage must not be  d If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shader feature is not enabled, stage must not be  cstage must not be  f , or  epName must be the name of an  OpEntryPoint in module+ with an execution model that matches stagedIf the identified entry point includes any variable in its interface that is declared with the  ClipDistance BuiltIn decoration, that variable must* not have an array size greater than  l::maxClipDistancesdIf the identified entry point includes any variable in its interface that is declared with the  CullDistance BuiltIn decoration, that variable must* not have an array size greater than  l::maxCullDistancesfIf the identified entry point includes any variables in its interface that are declared with the  ClipDistance or  CullDistance BuiltIn decoration, those variables must7 not have array sizes which sum to more than  l::maxCombinedClipAndCullDistancesiIf the identified entry point includes any variable in its interface that is declared with the  BuiltIn decoration, that variable must* not have an array size greater than  l::maxSampleMaskWordsIf stage is  l", the identified entry point mustM not include any input variable in its interface that is decorated with  CullDistanceIf stage is  k or  j-, and the identified entry point has an OpExecutionMode3 instruction that specifies a patch size with OutputVertices, the patch size must be greater than 0 and less than or equal to  l::maxTessellationPatchSizeIf stage is  i", the identified entry point must have an OpExecutionModeY instruction that specifies a maximum output vertex count that is greater than 0 and less than or equal to  l::maxGeometryOutputVerticesIf stage is  i", the identified entry point must have an OpExecutionModeO instruction that specifies an invocation count that is greater than 0 and less than or equal to  l::maxGeometryShaderInvocationsIf stageM is a vertex processing stage, and the identified entry point writes to Layer for any primitive, it must write the same value to Layer& for all vertices of a given primitiveIf stageM is a vertex processing stage, and the identified entry point writes to  ViewportIndex for any primitive, it must write the same value to  ViewportIndex+ for all vertices of a given primitiveIf stage is  h", the identified entry point mustG not include any output variables in its interface decorated with  CullDistanceIf stage is  h0, and the identified entry point writes to  FragDepth in any execution path, it must write to  FragDepth in all execution pathsIf stage is  h0, and the identified entry point writes to FragStencilRefEXT in any execution path, it must write to FragStencilRefEXT in all execution pathsIf stage is  d", the identified entry point must have an OpExecutionModeE instruction that specifies a maximum output vertex count, OutputVertices, that is greater than 0 and less than or equal to ::maxMeshOutputVerticesIf stage is  d", the identified entry point must have an OpExecutionModeH instruction that specifies a maximum output primitive count, OutputPrimitivesNV, that is greater than 0% and less than or equal to ::maxMeshOutputPrimitivesIf flags has the   flag set, the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroupSizeControlsubgroupSizeControl feature must be enabledIf flags has the   flag set, the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-computeFullSubgroupscomputeFullSubgroups feature must be enabled If a # structure is included in the pNext chain, flags must not have the   flag set If a # structure is included in the pNext chain, the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroupSizeControlsubgroupSizeControl feature must be enabled, and stage must' be a valid bit specified in rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-required-subgroup-size-stagesrequiredSubgroupSizeStages If a # structure is included in the pNext chain and stage is  g., the local workgroup size of the shader must3 be less than or equal to the product of ::requiredSubgroupSize and phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroups-per-workgroupmaxComputeWorkgroupSubgroups If a # structure is included in the pNext chain, and flags has the  Q flag set, the local workgroup size in the X dimension of the pipeline must be a multiple of ::requiredSubgroupSizeIf flags has both the   and  R flags set, the local workgroup size in the X dimension of the pipeline must be a multiple of fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroup-sizemaxSubgroupSizeIf flags has the   flag set and flags does not have the   flag set and no # structure is included in the pNextI chain, the local workgroup size in the X dimension of the pipeline must be a multiple of bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subgroup-size subgroupSizeValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of   valuesstage must be a valid c valuemodule must be a valid u handlepName must" be a null-terminated UTF-8 stringIf pSpecializationInfo is not NULL, pSpecializationInfo must$ be a valid pointer to a valid  structureSee Also, , N,  , 0, 1, u, c, , vulkanyVkPipelineRasterizationStateCreateInfo - Structure specifying parameters of a newly created pipeline rasterization state DescriptionThe application can also add a o structure to the pNext chain of a  structure. This structure enables selecting the rasterization order to use when rendering with the corresponding graphics pipeline as described in  \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primrast-orderRasterization Order. Valid Usage If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampdepth clamping feature is not enabled, depthClampEnable must be . If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fillModeNonSolidnon-solid fill modes feature is not enabled,  polygonMode must be  D or  AIf the VK_NV_fill_rectangle extension is not enabled,  polygonMode must not be  AValid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , , , o, or The sType value of each struct in the pNext chain must be uniqueflags must be 0 polygonMode must be a valid  ? valuecullMode must be a valid combination of E values frontFace must be a valid K valueSee Alsoo, D, K, ,  ,  ?, vulkanuVkPipelineMultisampleStateCreateInfo - Structure specifying parameters of a newly created pipeline multisample state Description9Each bit in the sample mask is associated with a unique  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index as defined for the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask coverage maskg. Each bit b for mask word w in the sample mask corresponds to sample index i, where i = 32 w + b.  pSampleMask has a length equal to # rasterizationSamples / 32 # words.If  pSampleMask is NULL4, it is treated as if the mask has all bits set to 1. Valid Usage If the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sampleRateShadingsample rate shading feature is not enabled, sampleShadingEnable must be . If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alpha to one feature is not enabled, alphaToOneEnable must be .minSampleShading must be in the range [0,1]If the VK_NV_framebuffer_mixed_samplesM extension is enabled, and if the subpass has any color attachments and rasterizationSamples= is greater than the number of color samples, then sampleShadingEnable must be .Valid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , , , or The sType value of each struct in the pNext chain must be uniqueflags must be 0rasterizationSamples must be a valid a valueIf  pSampleMask is not NULL,  pSampleMask must- be a valid pointer to an array of 4\lceil{\mathit{rasterizationSamples} \over 32}\rceil  valuesSee Alsoo, ,  , a, , vulkanzVkPipelineInputAssemblyStateCreateInfo - Structure specifying parameters of a newly created pipeline input assembly state Description}Restarting the assembly of primitives discards the most recent index values if those elements formed an incomplete primitive, and restarts the primitive assembly using the subsequent indices, but only assembling the immediately following element through the end of the originally specified elements. The primitive restart index value comparison is performed before adding the  vertexOffset value to the index value. Valid UsageIf topology is  8,  7,  5,  2,  0 or  ., primitiveRestartEnable must be . If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled, topology must not be any of  2,  1,  0 or  / If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled, topology must not be  .Valid Usage (Implicit)sType must be pNext must be NULLflags must be 0topology must be a valid Y valueSee Alsoo, ,  , Y, vulkanmVkPipelineDynamicStateCreateInfo - Structure specifying parameters of a newly created pipeline dynamic state Valid UsageEach element of pDynamicStates must be uniqueValid Usage (Implicit)sType must be pNext must be NULLflags must be 0If dynamicStateCount is not 0, pDynamicStates must( be a valid pointer to an array of dynamicStateCount valid k valuesSee Alsok, ,  , vulkanxVkPipelineDepthStencilStateCreateInfo - Structure specifying parameters of a newly created pipeline depth stencil state Valid Usage If the  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBoundsdepth bounds testing feature is not enabled, depthBoundsTestEnable must be .Valid Usage (Implicit)sType must be pNext must be NULLflags must be 0depthCompareOp must be a valid C valuefront must be a valid  structureback must be a valid  structureSee Alsoo, C, ,  , , vulkantVkPipelineColorBlendStateCreateInfo - Structure specifying parameters of a newly created pipeline color blend state DescriptionEach element of the  pAttachments array is a _ structure specifying per-target blending state for each individual color attachment. If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-independentBlendindependent blending- feature is not enabled on the device, all  elements in the  pAttachments array must be identical. Valid Usage If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-independentBlendindependent blending. feature is not enabled, all elements of  pAttachments must be identical If the  ^https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOplogic operations feature is not enabled,  logicOpEnable must be .If  logicOpEnable is ., logicOp must be a valid o valueValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueflags must be 0If attachmentCount is not 0,  pAttachments must( be a valid pointer to an array of attachmentCount valid  structuresSee Alsoo, , o, ,  , vulkancVkPipelineColorBlendAttachmentState - Structure specifying a pipeline color blend attachment state Valid Usage If the  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dualSrcBlenddual source blending feature is not enabled, srcColorBlendFactor must not be c, b, a , or ` If the  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dualSrcBlenddual source blending feature is not enabled, dstColorBlendFactor must not be c, b, a , or ` If the  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dualSrcBlenddual source blending feature is not enabled, srcAlphaBlendFactor must not be c, b, a , or ` If the  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dualSrcBlenddual source blending feature is not enabled, dstAlphaBlendFactor must not be c, b, a , or ` If either of  colorBlendOp or  alphaBlendOp is an  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advancedadvanced blend operation , then  colorBlendOp must equal  alphaBlendOpIf ::advancedBlendIndependentBlend is . and  colorBlendOp is an  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advancedadvanced blend operation , then  colorBlendOp must be the same for all attachmentsIf ::advancedBlendIndependentBlend is . and  alphaBlendOp is an  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advancedadvanced blend operation , then  alphaBlendOp must be the same for all attachmentsIf ::advancedBlendAllOperations is ., then  colorBlendOp must not be %, &, ', (, ), *, +, ,, -, ., /, 0, <, =, >, ?, @, A, B, C, H, I, J, K, L, M, N, O, P, Q , or RIf  colorBlendOp or  alphaBlendOp is an  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advancedadvanced blend operation , then 6-::colorAttachmentCount7 of the subpass this pipeline is compiled against must$ be less than or equal to "::advancedBlendMaxColorAttachmentsValid Usage (Implicit)srcColorBlendFactor must be a valid ^ valuedstColorBlendFactor must be a valid ^ value colorBlendOp must be a valid # valuesrcAlphaBlendFactor must be a valid ^ valuedstAlphaBlendFactor must be a valid ^ value alphaBlendOp must be a valid # valuecolorWriteMask must be a valid combination of  valuesSee Also^, #, o, , vulkandVkGraphicsPipelineCreateInfo - Structure specifying parameters of a newly created graphics pipeline DescriptionThe parameters basePipelineHandle and basePipelineIndex# are described in more detail in  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivativesPipeline Derivatives.fIf any shader stage fails to compile, the compile log will be reported back to the application, and  will be generated. Valid UsageIf flags contains the   flag, and basePipelineIndex is -1, basePipelineHandle must& be a valid handle to a graphics ~PIf flags contains the   flag, and basePipelineHandle is , basePipelineIndex must2 be a valid index into the calling command s  pCreateInfos parameterIf flags contains the   flag, and basePipelineIndex is not -1, basePipelineHandle must be If flags contains the   flag, and basePipelineHandle is not , basePipelineIndex must be -1The stage member of each element of pStages must be unique(The geometric shader stages provided in pStages must0 be either from the mesh shading pipeline (stage is  c or  d/) or from the primitive shading pipeline (stage is  l,  k,  j, or  i)The stage member of one element of pStages must be either  l or  dThe stage member of each element of pStages must not be  gIf pStages2 includes a tessellation control shader stage, it must4 include a tessellation evaluation shader stageIf pStages: includes a tessellation evaluation shader stage, it must, include a tessellation control shader stageIf pStages_ includes a tessellation control shader stage and a tessellation evaluation shader stage, pTessellationState must$ be a valid pointer to a valid  structureIf pStagesQ includes tessellation shader stages, the shader code of at least one stage must contain an OpExecutionModeH instruction that specifies the type of subdivision in the pipelineIf pStagesY includes tessellation shader stages, and the shader code of both stages contain an OpExecutionModeO instruction that specifies the type of subdivision in the pipeline, they must, both specify the same subdivision modeIf pStagesQ includes tessellation shader stages, the shader code of at least one stage must contain an OpExecutionModeF instruction that specifies the output patch size in the pipelineIf pStagesR includes tessellation shader stages, and the shader code of both contain an OpExecutionModeJ instruction that specifies the out patch size in the pipeline, they must& both specify the same patch sizeIf pStages* includes tessellation shader stages, the topology member of pInputAssembly must be  .If the topology member of pInputAssembly is  ., pStages must# include tessellation shader stagesIf pStagesm includes a geometry shader stage, and does not include any tessellation shader stages, its shader code must contain an OpExecutionModeF instruction that specifies an input primitive type that is  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-geometry-execution compatible/ with the primitive topology specified in pInputAssemblyIf pStagesf includes a geometry shader stage, and also includes tessellation shader stages, its shader code must contain an OpExecutionModeF instruction that specifies an input primitive type that is  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-geometry-execution compatibleP with the primitive topology that is output by the tessellation stagesIf pStages includes a fragment shader stage and a geometry shader stage, and the fragment shader code reads from an input variable that is decorated with  PrimitiveID%, then the geometry shader code must: write to a matching output variable, decorated with  PrimitiveID, in all execution pathsIf pStages8 includes a fragment shader stage, its shader code must< not read from any input attachment that is defined as l in subpass3The shader code for the entry points identified by pStages>, and the rest of the state identified by this structure mustA adhere to the pipeline linking rules described in the  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfacesShader Interfaces chapter%If rasterization is not disabled and subpass) uses a depth/stencil attachment in  renderPass that has a layout of m or n in the 6k defined by subpass, the depthWriteEnable member of pDepthStencilState must be .%If rasterization is not disabled and subpass) uses a depth/stencil attachment in  renderPass that has a layout of m or o in the 6k defined by subpass, the failOp, passOp and  depthFailOp members of each of the front and back members of pDepthStencilState must be If rasterization is not disabled and the subpass uses color attachments, then for each color attachment in the subpass the  blendEnable1 member of the corresponding element of the  pAttachment member of pColorBlendState must be . if the attached image s  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features does not contain gpRIf rasterization is not disabled and the subpass uses color attachments, the attachmentCount member of pColorBlendState must be equal to the colorAttachmentCount used to create subpassIf no element of the pDynamicStates member of  pDynamicState is  , the  pViewports member of pViewportState must( be a valid pointer to an array of pViewportState->viewportCount valid  structuresIf no element of the pDynamicStates member of  pDynamicState is  , the  pScissors member of pViewportState must( be a valid pointer to an array of pViewportState->scissorCount p structuresEIf the wide lines feature is not enabled, and no element of the pDynamicStates member of  pDynamicState is  , the  lineWidth member of pRasterizationState must be 1.0If the rasterizerDiscardEnable member of pRasterizationState is ., pViewportState must$ be a valid pointer to a valid  structureIf the rasterizerDiscardEnable member of pRasterizationState is ., pMultisampleState must$ be a valid pointer to a valid  structureIf the rasterizerDiscardEnable member of pRasterizationState is ., and subpass' uses a depth/stencil attachment, pDepthStencilState must$ be a valid pointer to a valid  structureIf the rasterizerDiscardEnable member of pRasterizationState is ., and subpass uses color attachments, pColorBlendState must$ be a valid pointer to a valid  structureJIf the depth bias clamping feature is not enabled, no element of the pDynamicStates member of  pDynamicState is , and the depthBiasEnable member of pRasterizationState is ., the depthBiasClamp member of pRasterizationState must be 0.0If the VK_EXT_depth_range_unrestricted5 extension is not enabled and no element of the pDynamicStates member of  pDynamicState is , and the depthBoundsTestEnable member of pDepthStencilState is ., the minDepthBounds and maxDepthBounds members of pDepthStencilState must be between 0.0 and 1.0 , inclusiveIf no element of the pDynamicStates member of  pDynamicState is o, and the sampleLocationsEnable member of a  structure included in the pNext chain of pMultisampleState is ., 0sampleLocationsInfo.sampleLocationGridSize.width must evenly divide ::sampleLocationGridSize.width as returned by  with a samples parameter equaling rasterizationSamplesIf no element of the pDynamicStates member of  pDynamicState is o, and the sampleLocationsEnable member of a  structure included in the pNext chain of pMultisampleState is ., 1sampleLocationsInfo.sampleLocationGridSize.height must evenly divide ::sampleLocationGridSize.height as returned by  with a samples parameter equaling rasterizationSamplesIf no element of the pDynamicStates member of  pDynamicState is o, and the sampleLocationsEnable member of a  structure included in the pNext chain of pMultisampleState is ., +sampleLocationsInfo.sampleLocationsPerPixel must equal rasterizationSamplesIf the sampleLocationsEnable member of a  structure included in the pNext chain of pMultisampleState is . , the fragment shader code must2 not statically use the extended instruction InterpolateAtSamplelayout must be  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent$ with all shaders specified in pStagesIf neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples% extensions are enabled, and if subpass< uses color and/or depth/stencil attachments, then the rasterizationSamples member of pMultisampleState mustC be the same as the sample count for those subpass attachmentsIf the VK_AMD_mixed_attachment_samples# extension is enabled, and if subpass< uses color and/or depth/stencil attachments, then the rasterizationSamples member of pMultisampleState mustI equal the maximum of the sample counts of those subpass attachmentsIf the VK_NV_framebuffer_mixed_samples# extension is enabled, and if subpasss has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled, then the rasterizationSamples member of pMultisampleState mustE be the same as the sample count of the depth/stencil attachmentIf the VK_NV_framebuffer_mixed_samples# extension is enabled, and if subpass* has any color attachments, then the rasterizationSamples member of pMultisampleState mustU be greater than or equal to the sample count for those subpass attachmentsIf the VK_NV_coverage_reduction_modeJ extension is enabled, the coverage reduction mode specified by ::coverageReductionMode , the rasterizationSamples member of pMultisampleStateg and the sample counts for the color and depth/stencil attachments (if the subpass has them) must) be a valid combination returned by jIf subpassH does not use any color and/or depth/stencil attachments, then the rasterizationSamples member of pMultisampleState must follow the rules for a fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachmentszero-attachment subpasssubpass must be a valid subpass within  renderPassIf the  renderPass has multiview enabled and subpass5 has more than one bit set in the view mask and multiviewTessellationShader is not enabled, then pStages must& not include tessellation shadersIf the  renderPass has multiview enabled and subpass5 has more than one bit set in the view mask and multiviewGeometryShader is not enabled, then pStages must not include a geometry shaderIf the  renderPass has multiview enabled and subpassJ has more than one bit set in the view mask, shaders in the pipeline must not write to the Layer built-in outputIf the  renderPass) has multiview enabled, then all shaders must/ not include variables decorated with the Layer- built-in decoration in their interfacesflags must not contain the J$ flagIf pStagesT includes a fragment shader stage and an input attachment was referenced by an  aspectMask at  renderPass% creation time, its shader code mustN only read from the aspects that were specified for that input attachmentThe number of resources in layoutC accessible to each shader stage that is used by the pipeline must be less than or equal to  l::maxPerStageResourcesIf no element of the pDynamicStates member of  pDynamicState is m, and the viewportWScalingEnable member of a ! structure, included in the pNext chain of pViewportState , is ., the pViewportWScalings member of the  must" be a pointer to an array of :: viewportCount valid q structuresIf no element of the pDynamicStates member of  pDynamicState is r, and if pViewportState->pNext chain includes a $ structure, and if its exclusiveScissorCount member is not 0, then its pExclusiveScissors member must( be a valid pointer to an array of exclusiveScissorCount p structuresIf no element of the pDynamicStates member of  pDynamicState is p, and if pViewportState->pNext chain includes a / structure, then its pShadingRatePalettes member must( be a valid pointer to an array of  viewportCount valid  r structuresIf no element of the pDynamicStates member of  pDynamicState is n, and if pNext chain includes a  structure, and if its discardRectangleCount member is not 0, then its pDiscardRectangles member must( be a valid pointer to an array of discardRectangleCount p structuresIf pStages! includes a vertex shader stage, pVertexInputState must$ be a valid pointer to a valid  structureIf pStages! includes a vertex shader stage, pInputAssemblyState must$ be a valid pointer to a valid  structureThe Xfb execution mode can/ be specified by only one shader stage in pStagesIf any shader stage in pStages specifies Xfb execution mode it must$ be the last vertex processing stage If a ::rasterizationStream value other than zero is specified, all variables in the output interface of the entry point being compiled decorated with Position,  PointSize,  ClipDistance, or  CullDistance must& all be decorated with identical Stream values that match the rasterizationStreamIf ::rasterizationStream} is zero, or not specified, all variables in the output interface of the entry point being compiled decorated with Position,  PointSize,  ClipDistance, or  CullDistance must all be decorated with a Stream value of zero, or must not specify the Stream decorationaIf the last vertex processing stage is a geometry shader, and that geometry shader uses the GeometryStreams capability, then ::geometryStreams feature must be enabled:If there are any mesh shader stages in the pipeline there must5 not be any shader stage in the pipeline with a Xfb execution modeIf the lineRasterizationMode member of a  structure included in the pNext chain of pRasterizationState is s or t0 and if rasterization is enabled, then the alphaToCoverageEnable, alphaToOneEnable, and sampleShadingEnable members of pMultisampleState must all be .If the stippledLineEnable member of  is . and no element of the pDynamicStates member of  pDynamicState is s, then the lineStippleFactor member of  must be in the range [1,256]flags must not include  flags must not include  flags must not include  flags must not include  flags must not include  flags must not include  flags must not include   If the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState$ feature is not enabled, there must be no element of the pDynamicStates member of  pDynamicState set to t, u, v, w, x, y, z, {, |, }, ~ , or If w is included in the pDynamicStates array then  viewportCount must be zeroIf x is included in the pDynamicStates array then  scissorCount must be zeroIf flags includes  , then the  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-device-generated-commands::deviceGeneratedCommands feature must be enabledIf flags includes  , then all stages must not specify Xfb execution mode If the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControlpipelineCreationCacheControl feature is not enabled, flags must not include   or  Valid Usage (Implicit)sType must be  Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , n, , , or The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of   valuespStages must# be a valid pointer to an array of  stageCount valid  structurespRasterizationState must$ be a valid pointer to a valid  structureIf  pDynamicState is not NULL,  pDynamicState must$ be a valid pointer to a valid  structurelayout must be a valid | handle renderPass must be a valid x handle stageCount must be greater than 0Each of basePipelineHandle, layout, and  renderPass7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Also~, ,  , , , , |, , , , , , , x, , &vulkanbVkComputePipelineCreateInfo - Structure specifying parameters of a newly created compute pipeline DescriptionThe parameters basePipelineHandle and basePipelineIndex# are described in more detail in  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivativesPipeline Derivatives. Valid UsageIf flags contains the   flag, and basePipelineIndex is -1, basePipelineHandle must% be a valid handle to a compute ~If flags contains the   flag, and basePipelineHandle is , basePipelineIndex must2 be a valid index into the calling command s  pCreateInfos parameterIf flags contains the   flag, and basePipelineIndex is not -1, basePipelineHandle must be If flags contains the   flag, and basePipelineHandle is not , basePipelineIndex must be -1The stage member of stage must be  g2The shader code for the entry point identified by stage= and the rest of the state identified by this structure mustA adhere to the pipeline linking rules described in the  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfacesShader Interfaces chapterlayout must be  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent9 with the layout of the compute shader specified in stageThe number of resources in layout- accessible to the compute shader stage must be less than or equal to  l::maxPerStageResourcesflags must not include  flags must not include  flags must not include  flags must not include  flags must not include  flags must not include  flags must not include  flags must not include   If the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControlpipelineCreationCacheControl feature is not enabled, flags must not include   or  Valid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of n or The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of   valuesstage must be a valid  structurelayout must be a valid | handleBoth of basePipelineHandle, and layout7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Also~,  , |, , , &&:vulkanpNext is NULL6 or a pointer to a structure extending this structure.&;vulkanflags is a bitmask of  0 specifying how the pipeline will be generated.&<vulkanpStages is a pointer to an array of  stageCount ] structures describing the set of the shader stages to be included in the graphics pipeline.&=vulkanpVertexInputState is a pointer to a H structure. It is ignored if the pipeline includes a mesh shader stage.&>vulkanpInputAssemblyState is a pointer to a G structure which determines input assembly behavior, as described in  Uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawingDrawing Commands>. It is ignored if the pipeline includes a mesh shader stage.&?vulkanpTessellationState is a pointer to a  structure, and is ignored if the pipeline does not include a tessellation control shader stage and tessellation evaluation shader stage.&@vulkanpViewportState is a pointer to a G structure, and is ignored if the pipeline has rasterization disabled.&AvulkanpRasterizationState is a pointer to a  structure.&BvulkanpMultisampleState is a pointer to a G structure, and is ignored if the pipeline has rasterization disabled.&CvulkanpDepthStencilState is a pointer to a  structure, and is ignored if the pipeline has rasterization disabled or if the subpass of the render pass the pipeline is created against does not use a depth/stencil attachment.&DvulkanpColorBlendState is a pointer to a  structure, and is ignored if the pipeline has rasterization disabled or if the subpass of the render pass the pipeline is created against does not use any color attachments.&Evulkan pDynamicState is a pointer to a d structure, and is used to indicate which properties of the pipeline state object are dynamic and can7 be changed independently of the pipeline state. This can be NULL>, which means no state in the pipeline is considered dynamic.&Fvulkanlayouto is the description of binding locations used by both the pipeline and descriptor sets used with the pipeline.&Gvulkan renderPassr is a handle to a render pass object describing the environment in which the pipeline will be used; the pipeline must[ only be used with an instance of any render pass compatible with the one provided. See  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibilityRender Pass Compatibility for more information.&HvulkansubpassR is the index of the subpass in the render pass where this pipeline will be used.&IvulkanbasePipelineHandle is a pipeline to derive from.&JvulkanbasePipelineIndex is an index into the  pCreateInfos0 parameter to use as a pipeline to derive from.&Lvulkanflags is reserved for future use.&MvulkandepthTestEnable controls whether  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth depth testing is enabled.&NvulkandepthWriteEnable controls whether  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes are enabled when depthTestEnable is .). Depth writes are always disabled when depthTestEnable is ..&OvulkandepthCompareOp) is the comparison operator used in the  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth depth test.&PvulkandepthBoundsTestEnable controls whether  Yhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-dbtdepth bounds testing is enabled.&QvulkanstencilTestEnable controls whether  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencilstencil testing is enabled.&Rvulkanfront and back control the parameters of the  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil stencil test.&TvulkanminDepthBounds) is the minimum depth bound used in the  Yhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-dbtdepth bounds test.&UvulkanmaxDepthBounds) is the maximum depth bound used in the  Yhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-dbtdepth bounds test.&WvulkanfailOp is a fN value specifying the action performed on samples that fail the stencil test.failOp must be a valid f value&XvulkanpassOp is a f_ value specifying the action performed on samples that pass both the depth and stencil tests.passOp must be a valid f value&Yvulkan depthFailOp is a fg value specifying the action performed on samples that pass the stencil test and fail the depth test. depthFailOp must be a valid f value&Zvulkan compareOp is a CD value specifying the comparison operator used in the stencil test. compareOp must be a valid C value&[vulkan compareMask\ selects the bits of the unsigned integer stencil values participating in the stencil test.&\vulkan writeMask| selects the bits of the unsigned integer stencil values updated by the stencil test in the stencil framebuffer attachment.&]vulkan referenceP is an integer reference value that is used in the unsigned stencil comparison.&_vulkanflags is reserved for future use.&`vulkanpDynamicStates is a pointer to an array of k values specifying which pieces of pipeline state will use the values from dynamic state commands rather than from pipeline state creation info.&bvulkanpNext is NULL6 or a pointer to a structure extending this structure.&cvulkanflags is reserved for future use.&dvulkan logicOpEnable controls whether to apply  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-logicopLogical Operations.&evulkanlogicOp* selects which logical operation to apply.&fvulkan pAttachments<: is a pointer to an array of per target attachment states.&gvulkanblendConstants is a pointer to an array of four values used as the R, G, B, and A components of the blend constant that are used in blending, depending on the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blendfactors blend factor.&ivulkan blendEnable controls whether blending is enabled for the corresponding color attachment. If blending is not enabled, the source fragment s color for that attachment is passed through unmodified.&jvulkansrcColorBlendFactorP selects which blend factor is used to determine the source factors (Sr,Sg,Sb).&kvulkandstColorBlendFactorU selects which blend factor is used to determine the destination factors (Dr,Dg,Db).&lvulkan colorBlendOpe selects which blend operation is used to calculate the RGB values to write to the color attachment.&mvulkansrcAlphaBlendFactorG selects which blend factor is used to determine the source factor Sa.&nvulkandstAlphaBlendFactorL selects which blend factor is used to determine the destination factor Da.&ovulkan alphaBlendOpf selects which blend operation is use to calculate the alpha values to write to the color attachment.&pvulkancolorWriteMask is a bitmask of g specifying which of the R, G, B, and/or A components are enabled for writing, as described for the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-color-write-maskColor Write Mask.&rvulkanpNext is NULL6 or a pointer to a structure extending this structure.&svulkanflags is reserved for future use.&tvulkanrasterizationSamples is a a9 specifying the number of samples used in rasterization.&uvulkansampleShadingEnable can be used to enable  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshadingSample Shading.&vvulkanminSampleShading4 specifies a minimum fraction of sample shading if sampleShadingEnable is set to ..&wvulkan pSampleMask is an array of  values used in the  `https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-samplemasksample mask test.&xvulkanalphaToCoverageEnable controls whether a temporary coverage value is generated based on the alpha component of the fragment s first color output as specified in the  Zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-covgMultisample Coverage section.&yvulkanalphaToOneEnabler controls whether the alpha component of the fragment s first color output is replaced with one as described in  Zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-covgMultisample Coverage.&{vulkanpNext is NULL6 or a pointer to a structure extending this structure.&|vulkanflags is reserved for future use.&}vulkandepthClampEnableI controls whether to clamp the fragment s depth values as described in  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth Depth Test(. If the pipeline is not created with | present then enabling depth clamp will also disable clipping primitives to the z planes of the frustrum as described in  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-clippingPrimitive Clipping?. Otherwise depth clipping is controlled by the state set in .&~vulkanrasterizerDiscardEnableW controls whether primitives are discarded immediately before the rasterization stage.&vulkan polygonMode& is the triangle rendering mode. See  ?.&vulkancullModeC is the triangle facing direction used for primitive culling. See E.&vulkan frontFace is a KP value specifying the front-facing triangle orientation to be used for culling.&vulkandepthBiasEnable0 controls whether to bias fragment depth values.&vulkandepthBiasConstantFactorQ is a scalar factor controlling the constant depth value added to each fragment.&vulkandepthBiasClamp6 is the maximum (or minimum) depth bias of a fragment.&vulkandepthBiasSlopeFactorN is a scalar factor applied to a fragment s slope in depth bias calculations.&vulkan lineWidth* is the width of rasterized line segments.&vulkanpNext is NULL6 or a pointer to a structure extending this structure.&vulkanflags is reserved for future use.&vulkan viewportCount1 is the number of viewports used by the pipeline.&vulkan pViewports is a pointer to an array of j structures, defining the viewport transforms. If the viewport state is dynamic, this member is ignored.&vulkan scissorCount is the number of  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-scissorscissors and must match the number of viewports.&vulkan pScissors is a pointer to an array of p structures defining the rectangular bounds of the scissor for the corresponding viewport. If the scissor state is dynamic, this member is ignored.&vulkanpNext is NULL6 or a pointer to a structure extending this structure.&vulkanflags is reserved for future use.&vulkanpatchControlPoints$ number of control points per patch.&vulkanflags is reserved for future use.&vulkantopology is a Y6 defining the primitive topology, as described below.&vulkanprimitiveRestartEnable controls whether a special vertex index value is treated as restarting the assembly of primitives. This enable only applies to indexed draws ( and >), and the special index value is either 0xFFFFFFFF when the  indexType parameter of  is equal to u , 0xFF when  indexType is equal to , or 0xFFFF when  indexType is equal to v:. Primitive restart is not allowed for list  topologies.&vulkanpNext is NULL6 or a pointer to a structure extending this structure.&vulkanflags is reserved for future use.&vulkanpVertexBindingDescriptions is a pointer to an array of  structures.&vulkanpVertexAttributeDescriptions is a pointer to an array of  structures.&vulkanlocation: is the shader binding location number for this attribute.location must be less than  l::maxVertexInputAttributes&vulkanbindingA is the binding number which this attribute takes its data from.binding must be less than  l::maxVertexInputBindings&vulkanformat3 is the size and type of the vertex attribute data.format must= be allowed as a vertex buffer format, as specified by the gw flag in  ^::bufferFeatures returned by  format must be a valid J value&vulkanoffsete is a byte offset of this attribute relative to the start of an element in the vertex input binding.offset must be less than or equal to  l::maxVertexInputAttributeOffset&vulkanbinding5 is the binding number that this structure describes.binding must be less than  l::maxVertexInputBindings&vulkanstrideN is the distance in bytes between two consecutive elements within the buffer.stride must be less than or equal to  l::maxVertexInputBindingStride&vulkan inputRate is a s value specifying whether vertex attribute addressing is a function of the vertex index or of the instance index. inputRate must be a valid  value&vulkanpNext is NULL6 or a pointer to a structure extending this structure.&vulkanflags is a bitmask of  0 specifying how the pipeline will be generated.&vulkanstage is a * structure describing the compute shader.&vulkanlayouto is the description of binding locations used by both the pipeline and descriptor sets used with the pipeline.&vulkanbasePipelineHandle is a pipeline to derive from&vulkanbasePipelineIndex is an index into the  pCreateInfos/ parameter to use as a pipeline to derive from&vulkanpNext is NULL6 or a pointer to a structure extending this structure.&vulkanflags is a bitmask of  = specifying how the pipeline shader stage will be generated.&vulkanstage is a c+ value specifying a single pipeline stage.&vulkanmodule is a u. object containing the shader for this stage.&vulkanpNamen is a pointer to a null-terminated UTF-8 string specifying the entry point name of the shader for this stage.&vulkanpSpecializationInfo is a pointer to a  structure, as described in  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-specialization-constantsSpecialization Constants, or NULL.&vulkan pMapEntries is a pointer to an array of 2 structures which map constant IDs to offsets in pData.&vulkandataSize is the byte size of the pData buffer.&vulkanpData8 contains the actual constant values to specialize with.&vulkan constantID4 is the ID of the specialization constant in SPIR-V.&vulkanoffsetZ is the byte offset of the specialization constant value within the supplied data buffer.&vulkansizeX is the byte size of the specialization constant value within the supplied data buffer.&vulkanx and y, are the viewport s upper left corner (x,y).&vulkanwidth and height3 are the viewport s width and height, respectively.&vulkanminDepth and maxDepth8 are the depth range for the viewport. It is valid for minDepth to be greater than or equal to maxDepth.&vulkan5vkCreateGraphicsPipelines - Create graphics pipelines DescriptionThe  structure includes an array of shader create info structures containing all the desired active shader stages, as well as creation info to define all relevant fixed-function stages, and a pipeline layout. Valid UsageIf the flags member of any element of  pCreateInfos contains the   flag, and the basePipelineIndex) member of that same element is not -1, basePipelineIndex must" be less than the index into  pCreateInfos! that corresponds to that elementIf the flags member of any element of  pCreateInfos contains the   flag, the base pipeline must! have been created with the   flag setIf  pipelineCache was created with Y, host access to  pipelineCache must be lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehaviorexternally synchronizedNotepAn implicit cache may be provided by the implementation or a layer. For this reason, it is still valid to set   on flags for any element of  pCreateInfos while passing  for  pipelineCache.Valid Usage (Implicit)device must be a valid  handleIf  pipelineCache is not ,  pipelineCache must be a valid } handle pCreateInfos must( be a valid pointer to an array of createInfoCount valid  structuresIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pPipelines must( be a valid pointer to an array of createInfoCount ~ handlescreateInfoCount must be greater than 0If  pipelineCache is a valid handle, it must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , ~, }&vulkan=A convenience wrapper to make a compatible pair of calls to & and &To ensure that & is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.&vulkan@vkCreateComputePipelines - Creates a new compute pipeline object Valid UsageIf the flags member of any element of  pCreateInfos contains the   flag, and the basePipelineIndex) member of that same element is not -1, basePipelineIndex must" be less than the index into  pCreateInfos! that corresponds to that elementIf the flags member of any element of  pCreateInfos contains the   flag, the base pipeline must! have been created with the   flag setIf  pipelineCache was created with Y, host access to  pipelineCache must be lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehaviorexternally synchronizedValid Usage (Implicit)device must be a valid  handleIf  pipelineCache is not ,  pipelineCache must be a valid } handle pCreateInfos must( be a valid pointer to an array of createInfoCount valid  structuresIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pPipelines must( be a valid pointer to an array of createInfoCount ~ handlescreateInfoCount must be greater than 0If  pipelineCache is a valid handle, it must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , ~, }&vulkan=A convenience wrapper to make a compatible pair of calls to & and &To ensure that & is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.&vulkan-vkDestroyPipeline - Destroy a pipeline object Valid Usage%All submitted commands that refer to pipeline must have completed executionIf  were provided when pipeline1 was created, a compatible set of callbacks must be provided hereIf no  were provided when pipeline was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid  handleIf pipeline is not , pipeline must be a valid ~ handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf pipeline is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to pipeline must be externally synchronizedSee Also, , ~&vulkandevice; is the logical device that creates the graphics pipelines.vulkan pipelineCache is either K, indicating that pipeline caching is disabled; or the handle of a valid  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-cachepipeline cacheV object, in which case use of that cache is enabled for the duration of the command.vulkan pCreateInfos is a pointer to an array of  structures.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.&vulkandevice: is the logical device that creates the compute pipelines.vulkan pipelineCache is either K, indicating that pipeline caching is disabled; or the handle of a valid  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-cachepipeline cacheV object, in which case use of that cache is enabled for the duration of the command.vulkan pCreateInfos is a pointer to an array of  structures.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.&vulkandevice2 is the logical device that destroys the pipeline.vulkanpipeline* is the handle of the pipeline to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.CDEuyxwvKY - 8 7 6 5 4 3 2 1 0 / .bc \ l k j i h g f e d c b a ` _ ^ ]f|~}~*&&&&&&&&&&&&&&&&&V&W&[&X&Y&]&\&Z&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&z&|&{&&&&&}&~&&&&&q&s&r&t&u&v&w&x&y&&&&&^&_&`&K&L&O&T&U&P&M&N&Q&R&S&a&c&b&g&f&d&e&h&i&j&k&l&m&n&o&p&9&;&H&:&<&F&I&J&=&>&?&@&A&B&C&D&E&G&&&&&&& ? @ D C B A K L T U ] ^ op~}|{zyxwvutsrqkl~}|{zyxwvutsrqponm#$WVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%^_rqponmlkjihgfedcba`&&&&&\&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&z&|&{&&&&&}&~&&&&&q&s&r&t&u&v&w&x&y&h&i&j&k&l&m&n&o&p&a&c&b&g&f&d&e&^&_&`&V&W&[&X&Y&]&\&Z&K&L&O&T&U&P&M&N&Q&R&S&9&;&H&:&<&F&I&J&=&>&?&@&A&B&C&D&E&G~* K L ] ^ T UY - 8 7 6 5 4 3 2 1 0 / . 8 7 6 5 4 3 2 1 0 / .C ? @ D C B A D C B AEuyxwvyxwvDK^_rqponmlkjihgfedcba`rqponmlkjihgfedcba`#$WVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%WVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%f|~}~}op~}|{zyxwvutsrq~}|{zyxwvutsrqkl~}|{zyxwvutsrqponm~}|{zyxwvutsrqponmc \ l k j i h g f e d c b a ` _ ^ ] l k j i h g f e d c b a ` _ ^ ]b None("#%&'-./1789;=>?FHIMSUVX_dghklmqZ>OvulkaniVkSetStateFlagsIndirectCommandNV - Structure specifying input data for a single state flag command tokenSee Also!No cross-references are availablevulkanVkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV - Structure describing push descriptor limits that can be supported by an implementationValid Usage (Implicit)See AlsovulkanVkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV - Structure describing the device-generated commands features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported.  can also be used in the pNext chain of   to enable the features.Valid Usage (Implicit)See Alsoo, vulkan]VkIndirectCommandsStreamNV - Structure specifying input streams for generated command tokens Valid UsageThe buffer s usage flag must have the z bit setThe offset must be aligned to ::(minIndirectCommandsBufferOffsetAlignmentIf buffer is non-sparse then it must7 be bound completely and contiguously to a single /8 objectValid Usage (Implicit)buffer must be a valid  handleSee Also, m, vulkandVkIndirectCommandsLayoutTokenNV - Struct specifying the details of an indirect command layout token Valid Usagestream must be smaller than :: streamCount offset must be less than or equal to ::maxIndirectCommandsTokenOffsetIf  tokenType is ', vertexBindingUnit mustF stay within device supported limits for the appropriate commandsIf  tokenType is ', pushconstantPipelineLayout must be validIf  tokenType is ', pushconstantOffset must be a multiple of 4If  tokenType is ', pushconstantSize must be a multiple of 4If  tokenType is ', pushconstantOffset must be less than  l::maxPushConstantsSizeIf  tokenType is ', pushconstantSize must be less than or equal to  l::maxPushConstantsSize minus pushconstantOffsetIf  tokenType is '/, for each byte in the range specified by pushconstantOffset and pushconstantSize# and for each shader stage in pushconstantShaderStageFlags, there must" be a push constant range in pushconstantPipelineLayout, that includes that byte and that stageIf  tokenType is '/, for each byte in the range specified by pushconstantOffset and pushconstantSize@ and for each push constant range that overlaps that byte, pushconstantShaderStageFlags must< include all stages in that push constant range s 9x::pushconstantShaderStageFlagsIf  tokenType is ', indirectStateFlags must not be 0Valid Usage (Implicit)sType must be qpNext must be NULL tokenType must be a valid '> valueIf pushconstantPipelineLayout is not , pushconstantPipelineLayout must be a valid | handlepushconstantShaderStageFlags must be a valid combination of & valuesindirectStateFlags must be a valid combination of 'A valuesIf indexTypeCount is not 0,  pIndexTypes must( be a valid pointer to an array of indexTypeCount valid S valuesIf indexTypeCount is not 0, pIndexTypeValues must( be a valid pointer to an array of indexTypeCount uint32_t valuesSee Alsoo, S, , '>, '@, |, b, vulkan~VkIndirectCommandsLayoutCreateInfoNV - Structure specifying the parameters of a newly created indirect commands layout object Description1The following code illustrates some of the flags: void cmdProcessAllSequences(cmd, pipeline, indirectCommandsLayout, pIndirectCommandsTokens, sequencesCount, indexbuffer, indexbufferOffset) { for (s = 0; s < sequencesCount; s++) { sUsed = s; if (indirectCommandsLayout.flags & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV) { sUsed = indexbuffer.load_uint32( sUsed * sizeof(uint32_t) + indexbufferOffset); } if (indirectCommandsLayout.flags & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV) { sUsed = incoherent_implementation_dependent_permutation[ sUsed ]; } cmdProcessSequence( cmd, pipeline, indirectCommandsLayout, pIndirectCommandsTokens, sUsed ); } } Valid UsageThe pipelineBindPoint must be  tokenCount must be greater than 0 and less than or equal to ::maxIndirectCommandsTokenCountIf pTokens contains an entry of ' it must2 be the first element of the array and there must1 be only a single element of such token typeIf pTokens contains an entry of ' there must1 be only a single element of such token typeAll state tokens in pTokens must) occur prior work provoking tokens (', ', ')The content of pTokens mustJ include one single work provoking token that is compatible with the pipelineBindPoint streamCount must be greater than 0 and less or equal to ::maxIndirectCommandsStreamCounteach element of pStreamStrides must8 be greater than `0`and less than or equal to ::maxIndirectCommandsStreamStride5. Furthermore the alignment of each token input must be ensuredValid Usage (Implicit)sType must be rpNext must be NULLflags must be a valid combination of 'D valuesflags must not be 0pipelineBindPoint must be a valid V valuepTokens must# be a valid pointer to an array of  tokenCount valid  structurespStreamStrides must( be a valid pointer to an array of  streamCount uint32_t values tokenCount must be greater than 0 streamCount must be greater than 0See Also, 'C, V, , 'vulkancVkGraphicsShaderGroupCreateInfoNV - Structure specifying override parameters for each shader group Valid UsageFor  stageCount#, the same restrictions as in 7L:: stageCount applyFor pStages#, the same restrictions as in 7L::pStages applyFor pVertexInputState#, the same restrictions as in 7L::pVertexInputState applyFor pTessellationState#, the same restrictions as in 7L::pTessellationState applyValid Usage (Implicit)sType must be opNext must be NULLpStages must# be a valid pointer to an array of  stageCount valid  structures stageCount must be greater than 0See Also, , , , vulkan|VkGraphicsPipelineShaderGroupsCreateInfoNV - Structure specifying parameters of a newly created multi shader group pipeline DescriptionWhen referencing shader groups by index, groups defined in the referenced pipelines are treated as if they were defined as additional entries in pGroups5. They are appended in the order they appear in the  pPipelines array and in the pGroups* array when those pipelines were defined.The application mustf maintain the lifetime of all such referenced pipelines based on the pipelines that make use of them. Valid Usage groupCount must be at least 1 and as maximum ::maxGraphicsShaderGroupCount The sum of  groupCount3 including those groups added from referenced  pPipelines must also be as maximum ::maxGraphicsShaderGroupCount"The state of the first element of pGroups must4 match its equivalent within the parent s 7LEach element of pGroups mustZ in combination with the rest of the pipeline state yield a valid state configurationAll elements of pGroups must use the same shader stage combinations unless any mesh shader stage is used, then either combination of task and mesh or just mesh shader is validFMesh and regular primitive shading stages cannot be mixed across pGroupsEach element of the  pPipelines member of  libraries must have been created with identical state to the pipeline currently created except the state that can be overriden by  The  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-device-generated-commands::deviceGeneratedCommands feature must be enabledValid Usage (Implicit)sType must be ppGroups must# be a valid pointer to an array of  groupCount valid  structuresIf  pipelineCount is not 0,  pPipelines must( be a valid pointer to an array of  pipelineCount valid ~ handles groupCount must be greater than 0See Also, ~, vulkan}VkGeneratedCommandsMemoryRequirementsInfoNV - Structure specifying parameters for the reservation of preprocess buffer space Valid UsagemaxSequencesCount must be less or equal to ::maxIndirectSequenceCountValid Usage (Implicit)sType must be tpNext must be NULLpipelineBindPoint must be a valid V valuepipeline must be a valid ~ handleindirectCommandsLayout must be a valid O handleBoth of indirectCommandsLayout, and pipeline mustD have been created, allocated, or retrieved from the same See AlsoO, ~, V, , 'vulkan[VkGeneratedCommandsInfoNV - Structure specifying parameters for the generation of commands Valid Usage The provided pipeline must0 match the pipeline bound at execution timeIf the indirectCommandsLayout uses a token of ' , then the pipeline must. have been created with multiple shader groupsIf the indirectCommandsLayout uses a token of ' , then the pipeline must have been created with Vy set in 7L::flagsIf the indirectCommandsLayout uses a token of ', then the pipeline`s | must match the ::pushconstantPipelineLayout streamCount must match the indirectCommandsLayout s  streamCountsequencesCount must be less or equal to ::maxIndirectSequenceCount and ::maxSequencesCount% that was used to determine the preprocessSizepreprocessBuffer must have the z bit set in its usage flagpreprocessOffset must be aligned to ::(minIndirectCommandsBufferOffsetAlignmentIf preprocessBuffer is non-sparse then it must< be bound completely and contiguously to a single /8 objectpreprocessSize mustJ be at least equal to the memory requirement`s size returned by '! using the matching inputs (indirectCommandsLayout, & ) as within this structuresequencesCountBuffer cann be set if the actual used count of sequences is sourced from the provided buffer. In that case the sequencesCount serves as upper boundIf sequencesCountBuffer is not , its usage flag must have the z bit setIf sequencesCountBuffer is not , sequencesCountOffset must be aligned to ::&minSequencesCountBufferOffsetAlignmentIf sequencesCountBuffer is not  and is non-sparse then it must7 be bound completely and contiguously to a single /8 objectIf indirectCommandsLayout s ' is set, sequencesIndexBuffer must be set otherwise it must be If sequencesIndexBuffer is not , its usage flag must have the z bit setIf sequencesIndexBuffer is not , sequencesIndexOffset must be aligned to ::&minSequencesIndexBufferOffsetAlignmentIf sequencesIndexBuffer is not  and is non-sparse then it must7 be bound completely and contiguously to a single /8 objectValid Usage (Implicit)sType must be s pNext must be NULLpipelineBindPoint must be a valid V valuepipeline must be a valid ~ handleindirectCommandsLayout must be a valid O handlepStreams must# be a valid pointer to an array of  streamCount valid  structurespreprocessBuffer must be a valid  handleIf sequencesCountBuffer is not , sequencesCountBuffer must be a valid  handleIf sequencesIndexBuffer is not , sequencesIndexBuffer must be a valid  handle streamCount must be greater than 0Each of indirectCommandsLayout, pipeline, preprocessBuffer, sequencesCountBuffer, and sequencesIndexBuffer7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Also, m, O, , ~, V, , ', 'vulkanoVkBindVertexBufferIndirectCommandNV - Structure specifying input data for a single vertex buffer command token Valid Usage<The buffer s usage flag from which the address was acquired must have the zz bit set[Each element of the buffer from which the address was acquired and that is non-sparse must7 be bound completely and contiguously to a single /8 objectSee AlsonvulkanmVkBindShaderGroupIndirectCommandNV - Structure specifying input data for a single shader group command token Valid UsageUThe current bound graphics pipeline, as well as the pipelines it may reference, must have been created with VyThe index mustg be within range of the accessible shader groups of the current bound graphics pipeline. See ' for further detailsSee Also!No cross-references are availablevulkanmVkBindIndexBufferIndirectCommandNV - Structure specifying input data for a single index buffer command token Valid Usage<The buffer s usage flag from which the address was acquired must have the z{ bit setThe  bufferAddress must be aligned to the  indexType used[Each element of the buffer from which the address was acquired and that is non-sparse must7 be bound completely and contiguously to a single /8 objectValid Usage (Implicit) indexType must be a valid S valueSee Alson, S'>vulkan>VkIndirectCommandsTokenTypeNV - Enum specifying token commands Description'1 Token type B Equivalent command  '  '#  ' B -  '    '    '  >  '    '    '   !Supported indirect command tokensSee Also'AvulkanXVkIndirectStateFlagBitsNV - Bitmask specifiying state that can be altered on the deviceSee Also'@'DvulkanjVkIndirectCommandsLayoutUsageFlagBitsNV - Bitmask specifying allowed usage of an indirect commands layoutSee Also'C'GvulkanpipelineBindPoint is the V of the pipelineK that this buffer memory is intended to be used with during the execution.'Hvulkanpipeline is the ~K that this buffer memory is intended to be used with during the execution.'IvulkanindirectCommandsLayout is the O6 that this buffer memory is intended to be used with.'JvulkanmaxSequencesCountj is the maximum number of sequences that this buffer memory in combination with the other state provided can be used with.'LvulkanpipelineBindPoint is the V used for the pipeline.'Mvulkanpipeline is the ~/ used in the generation and execution process.'NvulkanindirectCommandsLayout is the O1 that provides the command sequence to generate.'OvulkanpStreams provides an array of 5 that provide the input data for the tokens used in indirectCommandsLayout.'PvulkansequencesCount4 is the maximum number of sequences to reserve. If sequencesCountBuffer is 9, this is also the actual number of sequences generated.'QvulkanpreprocessBuffer is the _ that is used for preprocessing the input data for execution. If this structure is used with ' with its isPreprocessed set to Q, then the preprocessing step is skipped and data is only read from this buffer.'RvulkanpreprocessOffset is the byte offset into preprocessBuffer( where the preprocessed data is stored.'SvulkanpreprocessSize% is the maximum byte size within the preprocessBuffer after the preprocessOffset% that is available for preprocessing.'TvulkansequencesCountBuffer is a @ in which the actual number of sequences is provided as single uint32_t value.'UvulkansequencesCountOffset is the byte offset into sequencesCountBuffer" where the count value is stored.'VvulkansequencesIndexBuffer is a , that encodes the used sequence indices as uint32_t array.'WvulkansequencesIndexOffset is the byte offset into sequencesIndexBuffer where the index values start.'Yvulkanflags is a bitmask of 'D( specifying usage hints of this layout.'ZvulkanpipelineBindPoint is the V that this layout targets.'[vulkanpTokens; is an array describing each command token in detail. See '> and  below for details.'\vulkanpStreamStrides= is an array defining the byte stride for each input stream.'^vulkan tokenType" specifies the token command type.'_vulkanstreamI is the index of the input stream that contains the token argument data.'`vulkanoffset[ is a relative starting offset within the input stream memory for the token argument data.'avulkanvertexBindingUnit/ is used for the vertex buffer binding command.'bvulkanvertexDynamicStride} sets if the vertex buffer stride is provided by the binding command rather than the current bound graphics pipeline state.'cvulkanpushconstantPipelineLayout is the |% used for the push constant command.'dvulkanpushconstantShaderStageFlags@ are the shader stage flags used for the push constant command.'evulkanpushconstantOffset2 is the offset used for the push constant command.'fvulkanpushconstantSize0 is the size used for the push constant command.'gvulkanindirectStateFlags2 are the active states for the state flag command.'hvulkan pIndexTypes is the used S for the corresponding uint32_t value entry in pIndexTypeValues.'kvulkanbuffer specifies the F storing the functional arguments for each sequence. These arguments can be written by the device.'lvulkanoffset specified an offset into buffer where the arguments start.'nvulkandata/ encodes packed state that this command alters.Bit 0: If set represents |, otherwise }'pvulkan bufferAddress& specifies a physical address of the  used as vertex input binding.'qvulkansizeY is the byte size range which is available for this operation from the provided address.'rvulkanstride> is the byte size stride for this vertex input binding as in 7::stride. It is only used if ::vertexDynamicStrideW was set, otherwise the stride is inherited from the current bound graphics pipeline.'tvulkan bufferAddress& specifies a physical address of the  used as index buffer.'uvulkansizeY is the byte size range which is available for this operation from the provided address.'vvulkan indexType is a SY value specifying how indices are treated. Instead of the Vulkan enum values, a custom uint32_t value can be mapped to an S by specifying the :: pIndexTypes and ::pIndexTypeValues arrays.'zvulkanpGroups is an array of 1 values specifying which state of the original 7L each shader group overrides.'{vulkan pPipelines is an array of graphics ~X, which are referenced within the created pipeline, including all their shader groups.'}vulkanpStages is an array of size  stageCount structures of type N describing the set of the shader stages to be included in this shader group.'~vulkanpVertexInputState% is a pointer to an instance of the  structure.'vulkanpTessellationState% is a pointer to an instance of the  structure, and is ignored if the shader group does not include a tessellation control shader stage and tessellation evaluation shader stage.'vulkanmaxGraphicsShaderGroupCount, is the maximum number of shader groups in .'vulkanmaxIndirectSequenceCount( is the maximum number of sequences in  and in .'vulkanmaxIndirectCommandsStreamCount& is the maximum number of streams in .'vulkanmaxIndirectCommandsTokenOffset is the maximum offset in .'vulkanmaxIndirectCommandsStreamStride" is the maximum stream stride in .'vulkan(minIndirectCommandsBufferOffsetAlignment8 is the minimum alignment for memory addresses used in  and as preprocess buffer in .'vulkandeviceGeneratedCommandsg indicates whether the implementation supports functionality to generate commands on the device. See  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#device-generated-commandsDevice-Generated Commands.'vulkan' allows to toggle the ~5 rasterization state for subsequent draw operations.'vulkan'- specifies that the processing of sequences canr happen at an implementation-dependent order, which is not: guaranteed to be coherent using the same input data.'vulkan'w specifies that the input data for the sequences is not implicitly indexed from 0..sequencesUsed but a user provided ! encoding the index is provided.'vulkan'_ specifies that the layout is always used with the manual preprocessing step through calling ' and executed by ' with isPreprocessed set to .'vulkanbvkCmdExecuteGeneratedCommandsNV - Performs the generation and execution of commands on the device Valid UsageIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain g$If a /b is accessed using atomic operations as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain gIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any / being sampled with " as a result of this command must have a `E and format that supports cubic filtering, as specified by A:: filterCubic returned by TcAny / being sampled with + with a reduction mode of either  or " as a result of this command must have a `i and format that supports cubic filtering together with minmax filtering, as specified by A::filterCubicMinmax returned by TcAny /: created with a 0::flags containing * sampled as a result of this command must only be sampled using a % of % For each set n% that is statically used by the ~N bound to the pipeline bind point used by this command, a descriptor set must have been bound to n3 at the same pipeline bind point, with a |! that is compatible for set n , with the |! used to create the current ~, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the ~S bound to the pipeline bind point used by this command, a push constant value mustB have been set for the same pipeline bind point, with a |6 that is compatible for push constants, with the |! used to create the current ~, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via ., must7 be valid if they are statically used by the ~; bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the ~o object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the ~a object bound to the pipeline bind point used by this command, since that pipeline was boundIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must% not be used to sample from any /: with a / of the type `, `, `, `| or `, in any shader stageIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stageIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample*U instructions that includes a LOD bias or any offset values, in any shader stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the ~f object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the ~f object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the ~C object bound to the pipeline bind point used by this command must! not be a protected resourceIf a / is accessed using  OpImageWrite' as a result of this command, then the Type of the Texel operand of that instruction mustB have at least as many components as the image view s format.The current render pass must be  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 7L, structure specified when creating the ~ bound to -The subpass index of the current render pass must be equal to the subpass member of the 7L, structure specified when creating the ~ bound to 3Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor setGImage subresources used as attachments in the current render pass mustL not be accessed in any way other than as an attachment by this commandjIf the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to W::maxMultiviewInstanceIndex5If the bound graphics pipeline was created with ::sampleLocationsEnable set to S and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set?If the bound graphics pipeline state was created with the l . dynamic state enabled, but not the l , dynamic state enabled, then then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the 7":: scissorCount of the pipeline?If the bound graphics pipeline state was created with the l . dynamic state enabled, but not the l , dynamic state enabled, then then  mustY have been called in the current command buffer prior to this draw command, and the  scissorCount parameter of  must match the 7":: viewportCount of the pipelineDIf the bound graphics pipeline state was created with both the l  and l , dynamic states enabled then both  and  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the  scissorCount parameter of ?If the bound graphics pipeline state was created with the l & dynamic state enabled then  mustY have been called in the current command buffer prior to this draw command, and the primitiveTopology parameter of  must be of the same  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class as the pipeline 7::topology stateyAll vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must have either valid or  buffers bound If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must not be >For a given vertex buffer binding, any attribute data fetched mustf be entirely contained within the corresponding vertex buffer binding, as described in \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input??? commandBuffer must" not be a protected command bufferIf isPreprocessed is  then ' must? have already been executed on the device, using the same pGeneratedCommandsInfoY content as well as the content of the input buffers it references (all except ::preprocessBuffer). Furthermore pGeneratedCommandsInfo`s indirectCommandsLayout must& have been created with the ' bit set::pipeline must* match the current bound pipeline at ::pipelineBindPointTransform feedback must not be active The  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-device-generated-commands::deviceGeneratedCommands feature must be enabledValid Usage (Implicit) commandBuffer must be a valid  handlepGeneratedCommandsInfo must$ be a valid pointer to a valid  structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operations This command must0 only be called inside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Inside  Graphics Compute  See Alsoo, , 'vulkanSvkCmdPreprocessGeneratedCommandsNV - Performs preprocessing for generated commands Valid Usage commandBuffer must" not be a protected command bufferpGeneratedCommandsInfo`s indirectCommandsLayout must& have been created with the ' bit set The  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-device-generated-commands::deviceGeneratedCommands feature must be enabledValid Usage (Implicit) commandBuffer must be a valid  handlepGeneratedCommandsInfo must$ be a valid pointer to a valid  structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operations This command must1 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Outside  Graphics Compute  See Also, 'vulkan7vkCmdBindPipelineShaderGroupNV - Bind a pipeline object Valid Usage groupIndex must be 0! or less than the effective :: groupCount( including the referenced pipelinesThe pipelineBindPoint must be The same restrictions as /Z apply as if the bound pipeline was created only with the Shader Group from the  groupIndex information The  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-device-generated-commands::deviceGeneratedCommands feature must be enabledValid Usage (Implicit) commandBuffer must be a valid  handlepipelineBindPoint must be a valid V valuepipeline must be a valid ~ handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operationsBoth of  commandBuffer, and pipeline must? have been created, allocated, or retrieved from the same Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics Compute  See Also, ~, V'vulkanpvkGetGeneratedCommandsMemoryRequirementsNV - Retrieve the buffer allocation requirements for generated commands Valid Usage The  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-device-generated-commands::deviceGeneratedCommands feature must be enabledValid Usage (Implicit)device must be a valid  handlepInfo must$ be a valid pointer to a valid  structurepMemoryRequirements must be a valid pointer to a  structureSee Also, , 'vulkanLvkCreateIndirectCommandsLayoutNV - Create an indirect command layout object Valid Usage The  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-device-generated-commands::deviceGeneratedCommands feature must be enabledValid Usage (Implicit)device must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepIndirectCommandsLayout must be a valid pointer to a O handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , O'vulkan=A convenience wrapper to make a compatible pair of calls to ' and 'To ensure that ' is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.'vulkanGvkDestroyIndirectCommandsLayoutNV - Destroy an indirect commands layout Valid Usage%All submitted commands that refer to indirectCommandsLayout must have completed executionIf  were provided when indirectCommandsLayout1 was created, a compatible set of callbacks must be provided hereIf no  were provided when indirectCommandsLayout was created,  pAllocator must be NULL The  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-device-generated-commands::deviceGeneratedCommands feature must be enabledValid Usage (Implicit)device must be a valid  handleIf indirectCommandsLayout is not , indirectCommandsLayout must be a valid O handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf indirectCommandsLayout is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to indirectCommandsLayout must be externally synchronizedSee Also, , O'vulkan commandBuffer; is the command buffer into which the command is recorded.vulkanisPreprocessed[ represents whether the input data has already been preprocessed on the device. If it is M this command will implicitly trigger the preprocessing step, otherwise not.vulkanpGeneratedCommandsInfo% is a pointer to an instance of the G structure containing parameters affecting the generation of commands.'vulkan commandBuffer4 is the command buffer which does the preprocessing.vulkanpGeneratedCommandsInfo% is a pointer to an instance of the C structure containing parameters affecting the preprocessing step.'vulkan commandBuffer; is the command buffer that the pipeline will be bound to.vulkanpipelineBindPoint is a V= value specifying to which bind point the pipeline is bound.vulkanpipeline is the pipeline to be bound.vulkan groupIndex! is the shader group to be bound.'vulkandevice, is the logical device that owns the buffer.vulkanpInfo% is a pointer to an instance of the M structure containing parameters required for the memory requirements query.'vulkandevice@ is the logical device that creates the indirect command layout.vulkan pCreateInfo% is a pointer to an instance of the T structure containing parameters affecting creation of the indirect command layout.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.'vulkandevice0 is the logical device that destroys the layout.vulkanindirectCommandsLayout is the layout to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.tO'm'n'''''''''''''j'l'k']'_'`'^'a'b'c'd'e'f'g'h'i'X'Y'Z'['\'|'}'~''y'{'z'F'H'G'I'J'K'M'L'N'O'P'Q'R'S'T'U'V'W'o'q'r'p'w'x's'u't'v'<'='>'''''''''?'@'A''B'C'D''''E'''''''''''''''''''''''''''''|'}'~''y'{'z'w'x's'u't'v'o'q'r'p'm'n'j'l'k']'_'`'^'a'b'c'd'e'f'g'h'i'X'Y'Z'['\'K'M'L'N'O'P'Q'R'S'T'U'V'W'F'H'G'I'J'D''''E''''C'A''B''@'>'''''''''?'''''''''=''<'ONone("#%&'-./1789;=>?FHIMSUVX_dghklmqbLvulkanbVkAccelerationStructureMemoryRequirementsTypeKHR - Acceleration structure memory requirement typeSee Alsovulkan3VkRayTracingShaderGroupTypeKHR - Shader group types DescriptionNoteFor current group types, the hit group type could be inferred from the presence or absence of the intersection shader, but we provide the type explicitly for future hit groups that do not have that property.See Also, 4vulkanFVkGeometryTypeKHR - Enum specifying which type of geometry is providedSee Also, , Jvulkan?VkAccelerationStructureTypeKHR - Type of acceleration structureSee Also, vulkanuVkBuildAccelerationStructureFlagBitsKHR - Bitmask specifying additional parameters for acceleration structure builds DescriptionNote( and ( may8 take more time and memory than a normal build, and so should. only be used when those features are needed.See Alsovulkan2VkGeometryInstanceFlagBitsKHR - Instance flag bits Description( and ( must not be used in the same flag.See AlsovulkanPVkGeometryFlagBitsKHR - Bitmask specifying additional parameters for a geometrySee AlsovulkanEVkCopyAccelerationStructureModeKHR - Acceleration structure copy modeSee Also, , , vulkankVkWriteDescriptorSetAccelerationStructureKHR - Structure specifying acceleration structure descriptor info Valid UsageaccelerationStructureCount must be equal to descriptorCount in the extended structureEach acceleration structure in pAccelerationStructures must have been created with (Valid Usage (Implicit)sType must be pAccelerationStructures must( be a valid pointer to an array of accelerationStructureCount valid U handlesaccelerationStructureCount must be greater than 0See AlsoU, vulkanOVkTransformMatrixKHR - Structure specifying a 3x4 affine transformation matrixSee AlsovulkaneVkTraceRaysIndirectCommandKHR - Structure specifying the parameters of an indirect trace ray command DescriptionThe members of = have the same meaning as the similarly named parameters of (. Valid UsageSee Also!No cross-references are availablevulkanUVkStridedBufferRegionKHR - Structure specifying a region of a VkBuffer with a stride Valid UsageIf buffer is not , size plus offset must& be less than or equal to the size of bufferIf buffer is not , stride must be less than the size of bufferValid Usage (Implicit)If buffer is not , buffer must be a valid  handleSee Also, m, (, (vulkanVVkRayTracingShaderGroupCreateInfoKHR - Structure specifying shaders in a shader group Valid UsageIf type is ( then  generalShader must be a valid index into ::pStages$ referring to a shader of &, &, or &If type is ( then closestHitShader,  anyHitShader, and intersectionShader must be If type is ( then intersectionShader must be a valid index into ::pStages$ referring to a shader of &If type is ( then intersectionShader must be closestHitShader must be either  or a valid index into ::pStages$ referring to a shader of & anyHitShader must be either  or a valid index into ::pStages$ referring to a shader of &If ::-rayTracingShaderGroupHandleCaptureReplayMixed is  then pShaderGroupCaptureReplayHandle mustj not be provided if it has not been provided on a previous call to ray tracing pipeline creationIf ::-rayTracingShaderGroupHandleCaptureReplayMixed is  then the caller mustI guarantee that no ray tracing pipeline creation commands with pShaderGroupCaptureReplayHandle_ provided execute simultaneously with ray tracing pipeline creation commands without pShaderGroupCaptureReplayHandle providedValid Usage (Implicit)sType must be pNext must be NULLtype must be a valid  valueSee Also, , vulkanxVkRayTracingPipelineInterfaceCreateInfoKHR - Structure specifying additional interface information when using libraries DescriptionmaxPayloadSizeQ is calculated as the maximum number of bytes used by any block declared in the  RayPayloadKHR or IncomingRayPayloadKHR storage classes. maxAttributeSizeQ is calculated as the maximum number of bytes used by any block declared in the HitAttributeKHR storage class. maxCallableSizeP is calculated as the maximum number of bytes used by any block declred in the CallableDataKHR or IncomingCallableDataKHR. As variables in these storage classes do not have explicit offsets, the size should be calculated as if each variable has a  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-alignment-requirementsscalar alignmentF equal to the largest scalar alignment of any of the block s members.Valid Usage (Implicit)See Also, vulkanlVkRayTracingPipelineCreateInfoKHR - Structure specifying parameters of a newly created ray tracing pipeline DescriptionThe parameters basePipelineHandle and basePipelineIndex# are described in more detail in  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivativesPipeline Derivatives.When V( is specified, this pipeline defines a pipeline library which cannotz be bound as a ray tracing pipeline directly. Instead, pipeline libraries define common shaders and shader groups which can* be included in future pipeline creation.&If pipeline libraries are included in  librariesd, shaders defined in those libraries are treated as if they were defined as additional entries in pStages,, appended in the order they appear in the  pLibraries array and in the pStages* array when those libraries were defined.When referencing shader groups in order to obtain a shader group handle, groups defined in those libraries are treated as if they were defined as additional entries in pGroups,, appended in the order they appear in the  pLibraries array and in the pGroups array when those libraries were defined. The shaders these groups reference are set when the pipeline library is created, referencing those specified in the pipeline library, not in the pipeline that includes it.If the K structure is included in the pNext chain of ., the operation of this pipeline creation is deferred, as defined in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operationsDeferred Host Operations chapter. Valid UsageIf flags contains the V flag, and basePipelineIndex is -1, basePipelineHandle must) be a valid handle to a ray tracing ~If flags contains the V flag, and basePipelineHandle is , basePipelineIndex must2 be a valid index into the calling command s  pCreateInfos parameterIf flags contains the V flag, and basePipelineIndex is not -1, basePipelineHandle must be If flags contains the V flag, and basePipelineHandle is not , basePipelineIndex must be -1The stage# member of at least one element of pStages must be &3The shader code for the entry points identified by pStages>, and the rest of the state identified by this structure mustA adhere to the pipeline linking rules described in the  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfacesShader Interfaces chapterlayout must be  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent$ with all shaders specified in pStagesThe number of resources in layoutC accessible to each shader stage that is used by the pipeline must be less than or equal to  l::maxPerStageResourcesflags must not include Vy If the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControlpipelineCreationCacheControl feature is not enabled, flags must not include V or VmaxRecursionDepth must be less than or equal to ::maxRecursionDepthIf flags includes V, pLibraryInterface must not be NULLIf the  libraryCount member of  libraries is greater than 0, pLibraryInterface must not be NULLEach element of the  pLibraries member of  libraries must* have been created with the value of maxRecursionDepth$ equal to that in this pipelineEach element of the  pLibraries member of  libraries must have been created with a layout that is compatible with the layout in this pipelineEach element of the  pLibraries member of  libraries must+ have been created with values of the maxPayloadSize, maxAttributeSize, and maxCallableSize members of pLibraryInterface equal to those in this pipelineIf flags includes V, for any element of pGroups with a type of ( or ( , the  anyHitShader of that element must not be If flags includes V, for any element of pGroups with a type of ( or ( , the closestHitShader of that element must not be  If the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPrimitiveCullingrayTracingPrimitiveCulling feature is not enabled, flags must not include V If the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPrimitiveCullingrayTracingPrimitiveCulling feature is not enabled, flags must not include VIf libraries.libraryCount is zero, then  stageCount must not be zeroIf libraries.libraryCount is zero, then  groupCount must not be zeroValid Usage (Implicit)sType must be  Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of K or The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of V valuesIf  stageCount is not 0, pStages must( be a valid pointer to an array of  stageCount valid  structuresIf  groupCount is not 0, pGroups must( be a valid pointer to an array of  groupCount valid  structures libraries must be a valid  structureIf pLibraryInterface is not NULL, pLibraryInterface must) be a valid pointer to a valid  structurelayout must be a valid | handleBoth of basePipelineHandle, and layout7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Also~,  , |, , , , , , (vulkan\VkPhysicalDeviceRayTracingPropertiesKHR - Properties of the physical device for ray tracing DescriptionIf the  structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.#Limits specified by this structure must/ match those specified with the same name in .Valid Usage (Implicit)See AlsovulkanVkPhysicalDeviceRayTracingFeaturesKHR - Structure describing the ray tracing features that can be supported by an implementationMembersThe members of the , structure describe the following features: Description rayTracingX indicates whether the implementation supports ray tracing functionality. See  Yhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing Ray Tracing.(rayTracingShaderGroupHandleCaptureReplay indicates whether the implementation supports saving and reusing shader group handles, e.g. for trace capture and replay.-rayTracingShaderGroupHandleCaptureReplayMixed indicates whether the implementation supports reuse of shader group handles being arbitrarily mixed with creation of non-reused shader group handles. If this is ', all reused shader group handles must1 be specified before any non-reused handles may be created.,rayTracingAccelerationStructureCaptureReplay indicates whether the implementation supports saving and reusing acceleration structure device addresses, e.g. for trace capture and replay.rayTracingIndirectTraceRays[ indicates whether the implementation supports indirect trace ray commands, e.g. (.,rayTracingIndirectAccelerationStructureBuildn indicates whether the implementation supports indirect acceleration structure build commands, e.g. (.+rayTracingHostAccelerationStructureCommandsi indicates whether the implementation supports host side acceleration structure commands, e.g. (, (, (, (, (.rayQuery? indicates whether the implementation supports ray query (OpRayQueryProceedKHR) functionality.rayTracingPrimitiveCulling9 indicates whether the implementation supports  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-traversal-culling-primitive&primitive culling during ray traversal.If the  structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported.  can also be used in the pNext chain of   to enable the features. Valid UsageIf -rayTracingShaderGroupHandleCaptureReplayMixed is ., (rayTracingShaderGroupHandleCaptureReplay must also be .Valid Usage (Implicit)sType must be See Alsoo, vulkandVkCopyMemoryToAccelerationStructureInfoKHR - Parameters for deserializing an acceleration structure Valid Usagemode must be ( The data in  pInfo->src mustX have a format compatible with the destination physical device as returned by (Valid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of KThe sType value of each struct in the pNext chain must be uniquesrc must be a valid ( uniondst must be a valid U handlemode must be a valid  valueSee AlsoU, , (, , (, (vulkanbVkCopyAccelerationStructureToMemoryInfoKHR - Parameters for serializing an acceleration structure Valid UsageThe memory pointed to by dst must8 be at least as large as the serialization size of src, as reported by  mode must be (Valid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of KThe sType value of each struct in the pNext chain must be uniquesrc must be a valid U handledst must be a valid ( unionmode must be a valid  valueSee AlsoU, , (, , (, (vulkanVVkCopyAccelerationStructureInfoKHR - Parameters for copying an acceleration structure Valid Usagemode must be ( or (src must have been built with ( if mode is (Valid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of KThe sType value of each struct in the pNext chain must be uniquesrc must be a valid U handledst must be a valid U handlemode must be a valid  valueBoth of dst, and src must? have been created, allocated, or retrieved from the same See AlsoU, , , (, (vulkanfVkBindAccelerationStructureMemoryInfoKHR - Structure specifying acceleration structure memory binding Valid UsageaccelerationStructure must. not already be backed by a memory object memoryOffset must be less than the size of memorymemory mustG have been allocated using one of the memory types allowed in the memoryTypeBits member of the 4z- structure returned from a call to ( with accelerationStructure and type of ( memoryOffset must be an integer multiple of the  alignment member of the 4z- structure returned from a call to ( with accelerationStructure and type of (The size member of the 4z- structure returned from a call to ( with accelerationStructure and type of ( must+ be less than or equal to the size of memory minus  memoryOffsetValid Usage (Implicit)sType must be pNext must be NULLaccelerationStructure must be a valid U handlememory must be a valid  handleIf deviceIndexCount is not 0, pDeviceIndices must( be a valid pointer to an array of deviceIndexCount uint32_t valuesBoth of accelerationStructure, and memory mustD have been created, allocated, or retrieved from the same See AlsoU, , m, , (, vulkanOVkAccelerationStructureVersionKHR - Acceleration structure version informationValid Usage (Implicit)See Also, (vulkanvVkAccelerationStructureMemoryRequirementsInfoKHR - Structure specifying acceleration to query for memory requirementsValid Usage (Implicit)See Also( , U, , , (vulkanVkAccelerationStructureInstanceKHR - Structure specifying a single acceleration structure instance for building into an acceleration structure geometry DescriptionThe C language spec does not define the ordering of bit-fields, but in practice, this struct produces the correct layout with existing compilers. The intended bit pattern is for the following:KIf a compiler produces code that diverges from that pattern, applications mustK employ another method to set values according to the correct bit pattern.Valid Usage (Implicit)See Also, vulkanVkAccelerationStructureGeometryTrianglesDataKHR - Structure specifying a triangle geometry in a bottom-level acceleration structureValid Usage (Implicit)sType must be pNext must be NULL vertexFormat must be a valid J value vertexData must be a valid ( union indexType must be a valid S valueIf  indexData is not 0,  indexData must be a valid ( unionIf  transformData is not 0,  transformData must be a valid ( unionSee Also(, (, m, J, S, vulkanpVkAccelerationStructureGeometryKHR - Structure specifying geometries to be built into an acceleration structure Valid UsageIf  geometryType is (, the aabbs member of geometry must be a valid  structureIf  geometryType is (, the  triangles member of geometry must be a valid  structureIf  geometryType is (, the  instances member of geometry must be a valid  structureValid Usage (Implicit)sType must be pNext must be NULL geometryType must be a valid  valueIf  geometryType is (, the  triangles member of geometry must be a valid  structureIf  geometryType is (, the aabbs member of geometry must be a valid  structureIf  geometryType is (, the  instances member of geometry must be a valid  structureflags must be a valid combination of  valuesSee Also, (, , , vulkanVkAccelerationStructureGeometryInstancesDataKHR - Structure specifying a geometry consisting of instances of other acceleration structures Valid Usagedata must be aligned to 16 bytesIf arrayOfPointers is true, each pointer must be aligned to 16 bytesValid Usage (Implicit)sType must be pNext must be NULLdata must be a valid ( unionSee Also(, o, (, vulkanVkAccelerationStructureGeometryAabbsDataKHR - Structure specifying axis-aligned bounding box geometry in a bottom-level acceleration structureValid Usage (Implicit)See Also(, (, m, vulkanvVkAccelerationStructureDeviceAddressInfoKHR - Structure specifying the acceleration structure to query an address forValid Usage (Implicit)See AlsoU, , (vulkan|VkAccelerationStructureCreateInfoKHR - Structure specifying the parameters of a newly created acceleration structure object DescriptionIf  deviceAddress+ is zero, no specific address is requested.If  deviceAddress is not zero,  deviceAddress must be an address retrieved from an identically created acceleration structure on the same implementation. The acceleration structure must* also be bound to an identically created  object.Apps should avoid creating acceleration structures with app-provided addresses and implementation-provided addresses in the same process, to reduce the likelihood of Y errors. Valid UsageIf  compactedSize is not 0 then maxGeometryCount must be 0 If  compactedSize is 0 then maxGeometryCount must not be 0If type is ( then maxGeometryCount must be less than or equal to ::maxGeometryCountIf type is ( then the maxPrimitiveCount member of each element of the pGeometryInfos array must be less than or equal to ::maxInstanceCount0The total number of triangles in all geometries must$ be less than or equal to ::maxPrimitiveCount,The total number of AABBs in all geometries must$ be less than or equal to ::maxPrimitiveCountIf type is ( and  compactedSize is 0, maxGeometryCount must be 1If type is ( and  compactedSize is 0, the  geometryType member of elements of pGeometryInfos must be (If type is ( and  compactedSize is 0, the  geometryType member of elements of pGeometryInfos must not be (If type is ( then the  geometryType member of each geometry in pGeometryInfos must be the sameIf flags has the ( bit set, then it must not have the ( bit setIf  deviceAddress is not 0, ::,rayTracingAccelerationStructureCaptureReplay must be .Valid Usage (Implicit)sType must be pNext must be NULLtype must be a valid  valueflags must be a valid combination of  valuesIf maxGeometryCount is not 0, pGeometryInfos must( be a valid pointer to an array of maxGeometryCount valid  structuresSee Also, , , n, m, , (vulkanVkAccelerationStructureCreateGeometryTypeInfoKHR - Structure specifying the shape of geometries that will be built into an acceleration structure DescriptionWhen  geometryType is (:if  indexType is 8, then this structure describes a set of triangles.if  indexType is not @, then this structure describes a set of indexed triangles. Valid UsageIf  geometryType is (,  vertexFormat must support the g in  ^::bufferFeatures as returned by TIf  geometryType is (,  indexType must be v, u , or Valid Usage (Implicit)sType must be pNext must be NULL geometryType must be a valid  value indexType must be a valid S valueIf  vertexFormat is not 0,  vertexFormat must be a valid J valueSee Also, o, J, , S, vulkan|VkAccelerationStructureBuildOffsetInfoKHR - Structure specifying build offsets and counts for acceleration structure builds DescriptionWThe primitive count and primitive offset are interpreted differently depending on the  used:For geometries of type (, primitiveCount[ is the number of triangles to be built, where each triangle is treated as 3 vertices.If the geometry uses indices, primitiveCount' 3 indices are consumed from :: indexData, starting at an offset of primitiveOffset. The value of  firstVertex; is added to the index values before fetching vertices.&If the geometry does not use indices, primitiveCount( 3 vertices are consumed from :: vertexData, starting at an offset of primitiveOffset + :: vertexStride  firstVertex. A single  structure is consumed from :: transformData, at an offset of transformOffset:. This transformation matrix is used by all triangles.For geometries of type (, primitiveCount4 is the number of axis-aligned bounding boxes. primitiveCount # structures are consumed from ::data , starting at an offset of primitiveOffset.For geometries of type (, primitiveCount0 is the number of acceleration structures. primitiveCount ( structures are consumed from ::data , starting at an offset of primitiveOffset. Valid UsageFor geometries of type (0, if the geometry uses indices, the offset primitiveOffset from :: indexData must0 be a multiple of the element size of :: indexTypeFor geometries of type (7, if the geometry doesn t use indices, the offset primitiveOffset from :: vertexData must2 be a multiple of the component size of :: vertexFormatFor geometries of type (, the offset transformOffset from :: transformData must be a multiple of 16For geometries of type (, the offset primitiveOffset from ::data must be a multiple of 8For geometries of type (, the offset primitiveOffset from ::data mustH be a multiple of 16 // TODO - Almost certainly should be more hereSee Also(, (vulkan}VkAccelerationStructureBuildGeometryInfoKHR - Structure specifying the geometry data used to build an acceleration structure DescriptionNote Elements of  ppGeometries$ are accessed as follows, based on geometryArrayOfPointers: aif (geometryArrayOfPointers) { use *(ppGeometries[i]); } else { use (*ppGeometries)[i]; } Valid UsageIf update is ., srcAccelerationStructure must not be If update is ., srcAccelerationStructure must" have been built before with ( set in ::flags scratchData must have been created with z usage flagIf update is . , the srcAccelerationStructure and dstAccelerationStructure objects must0 either be the same object or not have any ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasingmemory aliasingValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of KThe sType value of each struct in the pNext chain must be uniquetype must be a valid  valueflags must be a valid combination of  valuesIf srcAccelerationStructure is not , srcAccelerationStructure must be a valid U handledstAccelerationStructure must be a valid U handle scratchData must be a valid ( unionBoth of dstAccelerationStructure, and srcAccelerationStructure7 that are valid handles of non-ignored parameters mustD have been created, allocated, or retrieved from the same See Also, U, , o, , (, , (, (, (vulkan_VkAabbPositionsKHR - Structure specifying two opposing corners of an axis-aligned bounding box Valid UsageSee Also!No cross-references are available( vulkanGVkAccelerationStructureBuildTypeKHR - Acceleration structure build typeSee Also(vulkanmaxPayloadSizeJ is the maximum payload size in bytes used by any shader in the pipeline.(vulkanmaxAttributeSizeV is the maximum attribute structure size in bytes used by any shader in the pipeline.(vulkanmaxCallableSizeP is the maximum callable data size in bytes used by any shader in the pipeline.("vulkansrcR is the device or host address to memory containing the source data for the copy.(#vulkandst3 is the target acceleration structure for the copy.($vulkanmode is a H value that specifies additional operations to perform during the copy.('vulkansrc2 is the source acceleration structure for the copy((vulkandstJ is the device or host address to memory which is the target for the copy()vulkanmode is a H value that specifies additional operations to perform during the copy.(,vulkansrc3 is the source acceleration structure for the copy.(-vulkandst3 is the target acceleration structure for the copy.(.vulkanmode is a H value that specifies additional operations to perform during the copy.(0vulkan versionData3 is a pointer to the version header as defined in  versionData must# be a valid pointer to an array of 2*VK_UUID_SIZE uint8_t values(2vulkanaccelerationStructureF specifies the acceleration structure whose address is being queried.accelerationStructure must be a valid U handle(4vulkan transform is a T structure describing a transformation to be applied to the acceleration structure.(5vulkaninstanceCustomIndexG a 24-bit user-specified index value accessible to ray shaders in the InstanceCustomIndexKHR built-in.instanceCustomIndex and mask( occupy the same memory as if a single int32_t was specified in their placeinstanceCustomIndex; occupies the 24 least significant bits of that memorymask4 occupies the 8 most significant bits of that memory(6vulkanmask< is an 8-bit visibility mask for the geometry. The instance may only be hit if rayMask & instance.mask != 0(7vulkan&instanceShaderBindingTableRecordOffsetL is a 24-bit offset used in calculating the hit shader binding table index.&instanceShaderBindingTableRecordOffset and flags( occupy the same memory as if a single int32_t was specified in their place&instanceShaderBindingTableRecordOffset; occupies the 24 least significant bits of that memoryflags4 occupies the 8 most significant bits of that memory(8vulkanflags is an 8-bit mask of # values to apply to this instance.flags must be a valid combination of  values(9vulkanaccelerationStructureReference is either:9a device address containing the value obtained from ( or R (used by device operations which reference acceleration structures) or,a UO object (used by host operations which reference acceleration structures).(;vulkanmatrix1 is a 3x4 row-major affine transformation matrix.(=vulkanminX< is the x position of one opposing corner of a bounding box.minX must be less than or equal to maxX(>vulkanminY< is the y position of one opposing corner of a bounding box.minY must be less than or equal to maxY(?vulkanminZ< is the z position of one opposing corner of a bounding box.minZ must be less than or equal to maxZ(@vulkanmaxXB is the x position of the other opposing corner of a bounding box.(AvulkanmaxYB is the y position of the other opposing corner of a bounding box.(BvulkanmaxZB is the z position of the other opposing corner of a bounding box.(Dvulkan compactedSize! is the size from the result of (P if this acceleration structure is going to be the target of a compacting copy.(Evulkantype is a K value specifying the type of acceleration structure that will be created.(Fvulkanflags is a bitmask of A specifying additional parameters of the acceleration structure.(GvulkanpGeometryInfos is an array of maxGeometryCount y structures, which describe the maximum size and format of the data that will be built into the acceleration structure.(Hvulkan deviceAddressI is the device address requested for the acceleration structure if the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing-ascapturereplay,rayTracingAccelerationStructureCaptureReplay feature is being used.(Jvulkan geometryType is a @ that describes the type of an acceleration structure geometry.(KvulkanmaxPrimitiveCount2 describes the maximum number of primitives that can2 be built into an acceleration structure geometry.(Lvulkan indexType is a SA that describes the index type used to build this geometry when  geometryType is (.(MvulkanmaxVertexCount) describes the maximum vertex count that can; be used to build an acceleration structure geometry when  geometryType is (.(Nvulkan vertexFormat is a JD that describes the vertex format used to build this geometry when  geometryType is (.(OvulkanallowsTransforms" indicates whether transform data can6 be used by this acceleration structure or not, when  geometryType is (.(QvulkanprimitiveCountW defines the number of primitives for a corresponding acceleration structure geometry.(RvulkanprimitiveOffsetM defines an offset in bytes into the memory where primitive data is defined.(Svulkan firstVertexG is the index of the first vertex to build from for triangle geometry.(TvulkantransformOffsetQ defines an offset in bytes into the memory where a transform matrix is defined.(VvulkanpNext is NULL6 or a pointer to a structure extending this structure.(Wvulkantype is a B value specifying the type of acceleration structure being built.(Xvulkanflags is a bitmask of A specifying additional parameters of the acceleration structure.(Yvulkanupdate specifies whether to update dstAccelerationStructure with the data in srcAccelerationStructure or not.(ZvulkansrcAccelerationStructureP points to an existing acceleration structure that is to be used to update the dst acceleration structure when update is ..([vulkandstAccelerationStructure< points to the target acceleration structure for the build.(\vulkan ppGeometries1 is either a pointer to an array of pointers to  structures if geometryArrayOfPointers is .,, or a pointer to a pointer to an array of  structures if it is d. Each element of the array describes the data used to build each acceleration structure geometry.(]vulkan scratchData\ is the device or host address to memory that will be used as scratch memory for the build.(_vulkan geometryType( describes which type of geometry this  refers to.(`vulkangeometry is a (D union describing the geometry data for the relevant geometry type.(avulkanflags is a bitmask of N values describing additional properties of how the geometry should be built.(cvulkanarrayOfPointers specifies whether data4 is used as an array of addresses or just an array.(dvulkandataW is either the address of an array of device or host addresses referencing individual  structures if arrayOfPointers is .!, or the address of an array of  structures.(fvulkandata3 is a device or host address to memory containing Y structures containing position data for each axis-aligned bounding box in the geometry.data must be aligned to 8 bytesdata must be a valid ( union(gvulkanstride. is the stride in bytes between each entry in data.stride must be a multiple of 8(ivulkan vertexFormat is the J of each vertex element.(jvulkan vertexDataQ is a device or host address to memory containing vertex data for this geometry.(kvulkan vertexStride, is the stride in bytes between each vertex.(lvulkan indexType is the S of each index element.(mvulkan indexDataR is the device or host address to memory containing index data for this geometry.(nvulkan transformDataN is a device or host address to memory containing an optional reference to a Z structure defining a transformation that should be applied to vertices in this geometry.(pvulkanwidth0 is the width of the ray trace query dimensions.width must be less than or equal to  l::maxComputeWorkGroupCount[0](qvulkanheight- is height of the ray trace query dimensions.height must be less than or equal to  l::maxComputeWorkGroupCount[1](rvulkandepth, is depth of the ray trace query dimensions.depth must be less than or equal to  l::maxComputeWorkGroupCount[2](tvulkanbuffer& is the buffer containing this region.(uvulkanoffset is the byte offset in buffer at which the region starts.(vvulkanstride1 is the byte stride between consecutive elements.(wvulkansize0 is the size in bytes of the region starting at offset.(yvulkanshaderGroupHandleSize$ size in bytes of the shader header.(zvulkanmaxRecursionDepthJ is the maximum number of levels of recursion allowed in a trace command.({vulkanmaxShaderGroupStrideJ is the maximum stride in bytes allowed between shader groups in the SBT.(|vulkanshaderGroupBaseAlignment> is the required alignment in bytes for the base of the SBTs.(}vulkanmaxGeometryCountQ is the maximum number of geometries in the bottom level acceleration structure.(~vulkanmaxInstanceCountM is the maximum number of instances in the top level acceleration structure.(vulkanmaxPrimitiveCountk is the maximum number of triangles or AABBs in all geometries in the bottom level acceleration structure.(vulkan&maxDescriptorSetAccelerationStructuresc is the maximum number of acceleration structure descriptors that are allowed in a descriptor set.(vulkan"shaderGroupHandleCaptureReplaySizeh is the number of bytes for the information required to do capture and replay for shader group handles.(vulkantype8 selects the type of memory requirement being queried. (: returns the memory requirements for the object itself. (O returns the memory requirements for the scratch memory when doing a build. (O returns the memory requirements for the scratch memory when doing an update.type must be a valid  value(vulkan buildTypeF selects the build types whose memory requirements are being queried. buildType must be a valid (  value(vulkanaccelerationStructureF is the acceleration structure to be queried for memory requirements.accelerationStructure must be a valid U handle(vulkanpAccelerationStructures+ are the acceleration structures to update.(vulkanaccelerationStructure9 is the acceleration structure to be attached to memory.(vulkanmemory is a 0 object describing the device memory to attach.(vulkan memoryOffset is the start offset of the region of memory that is to be bound to the acceleration structure. The number of bytes returned in the 4z::size member in memory, starting from  memoryOffset? bytes, will be bound to the specified acceleration structure.(vulkanpDeviceIndices, is a pointer to an array of device indices.(vulkanpNext is NULL6 or a pointer to a structure extending this structure.(vulkanflags is a bitmask of V0 specifying how the pipeline will be generated.(vulkanpStages is a pointer to an array of  stageCount a structures describing the set of the shader stages to be included in the ray tracing pipeline.(vulkanpGroups is a pointer to an array of  groupCount v structures describing the set of the shader stages to be included in each shader group in the ray tracing pipeline.(vulkanmaxRecursionDepth is the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depthmaximum recursion depth' of shaders executed by this pipeline.(vulkan libraries is a 3 structure defining pipeline libraries to include.(vulkanpLibraryInterface is a pointer to a J structure defining additional information when using pipeline libraries.(vulkanlayouto is the description of binding locations used by both the pipeline and descriptor sets used with the pipeline.(vulkanbasePipelineHandle is a pipeline to derive from.(vulkanbasePipelineIndex is an index into the  pCreateInfos0 parameter to use as a pipeline to derive from.(vulkantype6 is the type of hit group specified in this structure.(vulkan generalShaderD is the index of the ray generation, miss, or callable shader from ::pStages' in the group if the shader group has type of (, and  otherwise.(vulkanclosestHitShader7 is the optional index of the closest hit shader from ::pStages' in the group if the shader group has type of ( or (, and  otherwise.(vulkan anyHitShader3 is the optional index of the any-hit shader from ::pStages' in the group if the shader group has type of ( or (, and  otherwise.(vulkanintersectionShader/ is the index of the intersection shader from ::pStages' in the group if the shader group has type of (, and  otherwise.(vulkanpShaderGroupCaptureReplayHandleR is an optional pointer to replay information for this shader group. Ignored if ::(rayTracingShaderGroupHandleCaptureReplay is .(vulkan(I specifies a shader group that only intersects with custom geometry and must% contain an intersection shader and may* contain closest hit and any-hit shaders.(vulkan(8 specifies a shader group that only hits triangles and mustK not contain an intersection shader, only closest hit and any-hit shaders.(vulkan(* indicates a shader group with a single &, &, or & shader in it.(vulkan(^ requests the memory requirement for operations performed by either the host, or the device.(vulkan(I requests the memory requirement for operations performed by the device.(vulkan(G requests the memory requirement for operations performed by the host.(vulkan(E requests the memory requirement for scratch space during an update.(vulkan(N requests the memory requirement for scratch space during the initial build.(vulkan(+ requests the memory requirement for the U backing store.(vulkan(K specifies a geometry type consisting of acceleration structure instances.(vulkan(F specifies a geometry type consisting of axis-aligned bounding boxes.(vulkan(4 specifies a geometry type consisting of triangles.(vulkan(_ is a bottom-level acceleration structure containing the AABBs or geometry to be intersected.(vulkan(t is a top-level acceleration structure containing instance data referring to bottom-level acceleration structures.(vulkan(a deserializes the semi-opaque serialization format in the buffer to the acceleration structure.(vulkan(v serializes the acceleration structure to a semi-opaque format which can be reloaded on a compatible implementation.(vulkan(> creates a more compact version of an acceleration structure src into dst. The acceleration structure dst must have been created with a  compactedSize( corresponding to the one returned by (= after the build of the acceleration structure specified by src.(vulkan(C creates a direct copy of the acceleration structure specified in src into the one specified by dst. The dst acceleration structure must0 have been created with the same parameters as src.(vulkan(- indicates that this acceleration structure should minimize the size of the scratch memory and the final result build, potentially at the expense of build time or trace performance.(vulkan(8 indicates that the given acceleration structure build should/ prioritize build time over trace performance.(vulkan(8 indicates that the given acceleration structure build should/ prioritize trace performance over build time.(vulkan(6 indicates that the specified acceleration structure canC act as the source for a copy acceleration structure command with mode of (0 to produce a compacted acceleration structure.(vulkan(6 indicates that the specified acceleration structure can be updated with update of . in ( or  .(vulkan($ indicates that the implementation must{ only call the any-hit shader a single time for each primitive in this geometry. If this bit is absent an implementation may< invoke the any-hit shader more than once for this geometry.(vulkan(b indicates that this geometry does not invoke the any-hit shaders even if present in a hit group.(vulkan(( causes this instance to act as though (R were not specified on all geometries referenced by this instance. This behavior can be overridden by the SPIR-V  OpaqueKHR ray flag.(vulkan(( causes this instance to act as though (N were specified on all geometries referenced by this instance. This behavior can be overridden by the SPIR-V  NoOpaqueKHR ray flag.(vulkan($ indicates that the front face of the triangle for culling purposes is the face that is counter clockwise in object space relative to the ray origin. Because the facing is determined in object space, an instance transform matrix does not change the winding, but a geometry transform does.(vulkan(* disables face culling for this instance.(vulkanMvkDestroyAccelerationStructureKHR - Destroy an acceleration structure object Valid Usage%All submitted commands that refer to accelerationStructure must have completed executionIf  were provided when accelerationStructure1 was created, a compatible set of callbacks must be provided hereIf no  were provided when accelerationStructure was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid  handleIf accelerationStructure is not , accelerationStructure must be a valid U handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf accelerationStructure is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to accelerationStructure must be externally synchronizedSee AlsoU, , (vulkanavkGetAccelerationStructureMemoryRequirementsKHR - Get acceleration structure memory requirementsValid Usage (Implicit)See Also, , (vulkanJvkBindAccelerationStructureMemoryKHR - Bind acceleration structure memory Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, (vulkanBvkCmdCopyAccelerationStructureKHR - Copy an acceleration structure Valid UsageAll U) objects referenced by this command must be bound to device memory The K structure must not be included in the pNext chain of the  structureValid Usage (Implicit) commandBuffer must be a valid  handlepInfo must$ be a valid pointer to a valid  structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Outside  Compute  See Also, (vulkanLvkCopyAccelerationStructureKHR - Copy an acceleration structure on the host Parameters'This command fulfills the same task as ( but executed by the host. Descriptiondevice6 is the device which owns the acceleration structures.pInfo is a pointer to a , structure defining the copy operation.If the K structure is included in the pNext chain of the . structure, the operation of this command is deferred, as defined in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operationsDeferred Host Operations chapter. Valid UsageAll U) objects referenced by this command must be bound to host-visible memory the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-raytracing-hostascmds-::rayTracingHostAccelerationStructureCommands feature must be enabledValid Usage (Implicit)device must be a valid  handlepInfo must$ be a valid pointer to a valid  structure Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, (vulkan\vkCmdCopyAccelerationStructureToMemoryKHR - Copy an acceleration structure to device memory Parameters+This command produces the same results as (n, but writes its result to a device address, and is executed on the device rather than the host. The output mayQ not necessarily be bit-for-bit identical, but it can be equally used by either ( or (. Description commandBufferD is the command buffer into which the command will be recorded.pInfo is an a pointer to a , structure defining the copy operation.AThe defined header structure for the serialized data consists of: bytes of data matching P:: driverUUIDL bytes of data identifying the compatibility for comparison using (IA 64-bit integer of the total size matching the value queried using  BA 64-bit integer of the deserialized size to be passed in to :: compactedSizeA 64-bit integer of the count of the number of acceleration structure handles following. This will be zero for a bottom-level acceleration structure.;The corresponding handles matching the values returned by ( or  are tightly packed in the buffer following the count. The application is expected to store a mapping between those handles and the original application-generated bottom-level acceleration structures to provide when deserializing. Valid UsageAll ( referenced by this command musts contain valid device addresses for a buffer bound to device memory. If the buffer is non-sparse then it mustL be bound completely and contiguously to a single VkDeviceMemory objectAll U) objects referenced by this command must be bound to device memory The K structure must not be included in the pNext chain of the  structuremode must be (Valid Usage (Implicit) commandBuffer must be a valid  handlepInfo must$ be a valid pointer to a valid  structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Outside  Compute  See Also, (vulkanYvkCopyAccelerationStructureToMemoryKHR - Serialize an acceleration structure on the host Parameters(This command fulfills the same task as ( but executed by the host. Description+This command produces the same results as (u, but writes its result directly to a host pointer, and is executed on the host rather than the device. The output mayR not necessarily be bit-for-bit identical, but it can be equally used by either ( or (.device is the device which owns  pInfo->src.pInfo is a pointer to a , structure defining the copy operation.If the K structure is included in the pNext chain of the . structure, the operation of this command is deferred, as defined in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations chapter. Valid UsageAll U) objects referenced by this command must be bound to host-visible memoryAll ( referenced by this command must! contain valid host pointers the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-raytracing-hostascmds-::rayTracingHostAccelerationStructureCommands feature must be enabledValid Usage (Implicit)device must be a valid  handlepInfo must$ be a valid pointer to a valid  structure Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, (vulkan\vkCmdCopyMemoryToAccelerationStructureKHR - Copy device memory to an acceleration structure ParametersDThis command can accept acceleration structures produced by either ( or (. Description commandBufferD is the command buffer into which the command will be recorded.pInfo is a pointer to a , structure defining the copy operation.CThe structure provided as input to deserialize is as described in (, with any acceleration structure handles filled in with the newly-queried handles to bottom level acceleration structures created before deserialization. These do not need to be built at deserialize time, but must be created. Valid UsageAll ( referenced by this command musts contain valid device addresses for a buffer bound to device memory. If the buffer is non-sparse then it mustL be bound completely and contiguously to a single VkDeviceMemory objectAll U) objects referenced by this command must be bound to device memory The K structure must not be included in the pNext chain of the  structuremode must be ( The data in  pInfo->src mustX have a format compatible with the destination physical device as returned by (Valid Usage (Implicit) commandBuffer must be a valid  handlepInfo must$ be a valid pointer to a valid  structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Outside  Compute  See Also, (vulkan[vkCopyMemoryToAccelerationStructureKHR - Deserialize an acceleration structure on the host Parameters(This command fulfills the same task as ( but is executed by the host. DescriptionDThis command can accept acceleration structures produced by either ( or (.device is the device which owns  pInfo->dst.pInfo is a pointer to a , structure defining the copy operation.If the K structure is included in the pNext chain of the . structure, the operation of this command is deferred, as defined in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operationsDeferred Host Operations chapter. Valid UsageAll U) objects referenced by this command must be bound to host-visible memoryAll ( referenced by this command must! contain valid host pointers the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-raytracing-hostascmds-::rayTracingHostAccelerationStructureCommands feature must be enabledValid Usage (Implicit)device must be a valid  handlepInfo must$ be a valid pointer to a valid  structure Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, (vulkanqvkCmdWriteAccelerationStructuresPropertiesKHR - Write acceleration structure result parameters to query results. Valid Usage queryPool must have been created with a  queryType matching  queryTypeThe queries identified by  queryPool and  firstQuery must be  unavailableAll acceleration structures in accelerationStructures must have been built with ( if  queryType is   queryType must be   or  Valid Usage (Implicit) commandBuffer must be a valid  handlepAccelerationStructures must( be a valid pointer to an array of accelerationStructureCount valid U handles queryType must be a valid ^ value queryPool must be a valid { handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceaccelerationStructureCount must be greater than 0Each of  commandBuffer,  queryPool, and the elements of pAccelerationStructures must? have been created, allocated, or retrieved from the same Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Outside  Compute  See AlsoU, , {, ^(vulkan`vkWriteAccelerationStructuresPropertiesKHR - Query acceleration structure meta-data on the host Parameters(This command fulfills the same task as ( but executed by the host. Descriptiondevice> is the device which owns the acceleration structures in pAccelerationStructures.accelerationStructureCountN is the count of acceleration structures for which to query the property.pAccelerationStructuresN points to an array of existing previously built acceleration structures. queryType is a ^2 value specifying the property to be queried.dataSize2 is the size in bytes of the buffer pointed to by pData.pDataP is a pointer to a user-allocated buffer where the results will be written.strideK is the stride in bytes between results for individual queries within pData. Valid UsageIf  queryType is   , then stride must# be a multiple of the size of mIf  queryType is   , then data must point to a mIf  queryType is   , then stride must# be a multiple of the size of mIf  queryType is   , then data must point to a mdataSize must" be greater than or equal to accelerationStructureCount*stride*The acceleration structures referenced by pAccelerationStructures must be bound to host-visible memoryAll acceleration structures in accelerationStructures must have been built with ( if  queryType is   queryType must be   or   the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-raytracing-hostascmds-::rayTracingHostAccelerationStructureCommands feature must be enabledValid Usage (Implicit)device must be a valid  handlepAccelerationStructures must( be a valid pointer to an array of accelerationStructureCount valid U handles queryType must be a valid ^ valuepData must# be a valid pointer to an array of dataSize bytesaccelerationStructureCount must be greater than 0dataSize must be greater than 0Each element of pAccelerationStructures must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee AlsoU, , ^(vulkan5vkCmdTraceRaysKHR - Initialize a ray tracing dispatch Description8When the command is executed, a ray generation group of width height depth rays is assembled. Valid UsageIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain g7If a /b is accessed using atomic operations as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain gIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any / being sampled with " as a result of this command must have a `E and format that supports cubic filtering, as specified by A:: filterCubic returned by TcAny / being sampled with + with a reduction mode of either  or " as a result of this command must have a `i and format that supports cubic filtering together with minmax filtering, as specified by A::filterCubicMinmax returned by TcAny /: created with a 0::flags containing * sampled as a result of this command must only be sampled using a % of % For each set n% that is statically used by the ~N bound to the pipeline bind point used by this command, a descriptor set must have been bound to n3 at the same pipeline bind point, with a |! that is compatible for set n , with the |! used to create the current ~, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the ~S bound to the pipeline bind point used by this command, a push constant value mustB have been set for the same pipeline bind point, with a |6 that is compatible for push constants, with the |! used to create the current ~, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via ., must7 be valid if they are statically used by the ~; bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the ~o object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the ~a object bound to the pipeline bind point used by this command, since that pipeline was boundIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must% not be used to sample from any /: with a / of the type `, `, `, `| or `, in any shader stageIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stageIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample*U instructions that includes a LOD bias or any offset values, in any shader stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the ~f object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the ~f object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the ~C object bound to the pipeline bind point used by this command must! not be a protected resourceIf a / is accessed using  OpImageWrite' as a result of this command, then the Type of the Texel operand of that instruction mustB have at least as many components as the image view s format.0Any shader group handle referenced by this call mustL have been queried from the currently bound ray tracing shader pipeline This command must^ not cause a shader call instruction to be executed from a shader invocation with a  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depthrecursion depth greater than the value of maxRecursionDepth3 used to create the bound ray tracing pipelineIf !pRayGenShaderBindingTable->buffer is non-sparse then it must< be bound completely and contiguously to a single  objectThe offset member of pRayGenShaderBindingTable must# be less than the size of the !pRayGenShaderBindingTable->buffer!pRayGenShaderBindingTable->offset must be a multiple of ::shaderGroupBaseAlignment!pRayGenShaderBindingTable->offset + pRayGenShaderBindingTable->size must+ be less than or equal to the size of !pRayGenShaderBindingTable->bufferThe size member of pRayGenShaderBindingTable must be equal to its stride memberIf pMissShaderBindingTable->buffer is non-sparse then it must< be bound completely and contiguously to a single  objectThe offset member of pMissShaderBindingTable must be less than the size of pMissShaderBindingTable->bufferThe offset member of pMissShaderBindingTable must be a multiple of ::shaderGroupBaseAlignmentpMissShaderBindingTable->offset + pMissShaderBindingTable->size must+ be less than or equal to the size of pMissShaderBindingTable->bufferThe stride member of pMissShaderBindingTable must be a multiple of ::shaderGroupHandleSizeThe stride member of pMissShaderBindingTable must$ be less than or equal to ::maxShaderGroupStrideIf pHitShaderBindingTable->buffer is non-sparse then it must< be bound completely and contiguously to a single  objectThe offset member of pHitShaderBindingTable must be less than the size of pHitShaderBindingTable->bufferThe offset member of pHitShaderBindingTable must be a multiple of ::shaderGroupBaseAlignmentpHitShaderBindingTable->offset + pHitShaderBindingTable->size must+ be less than or equal to the size of pHitShaderBindingTable->bufferThe stride member of pHitShaderBindingTable must be a multiple of ::shaderGroupHandleSizeThe stride member of pHitShaderBindingTable must$ be less than or equal to ::maxShaderGroupStrideIf #pCallableShaderBindingTable->buffer is non-sparse then it must7 be bound completely and contiguously to a single  objectThe offset member of pCallableShaderBindingTable must be less than the size of #pCallableShaderBindingTable->bufferThe offset member of pCallableShaderBindingTable must be a multiple of ::shaderGroupBaseAlignment#pCallableShaderBindingTable->offset + !pCallableShaderBindingTable->size must+ be less than or equal to the size of #pCallableShaderBindingTable->bufferThe stride member of pCallableShaderBindingTable must be a multiple of ::shaderGroupHandleSizeThe stride member of pCallableShaderBindingTable must$ be less than or equal to ::maxShaderGroupStride=If the currently bound ray tracing pipeline was created with flags that included V , the buffer member of pHitShaderBindingTable must not be =If the currently bound ray tracing pipeline was created with flags that included V , the buffer member of pHitShaderBindingTable must not be =If the currently bound ray tracing pipeline was created with flags that included V , the buffer member of pHitShaderBindingTable must not be =If the currently bound ray tracing pipeline was created with flags that included V-, the shader group handle identified by pMissShaderBindingTable must contain a valid miss shader=If the currently bound ray tracing pipeline was created with flags that included V, entries in pHitShaderBindingTableQ accessed as a result of this command in order to execute an any hit shader must not be set to zero=If the currently bound ray tracing pipeline was created with flags that included V, entries in pHitShaderBindingTableT accessed as a result of this command in order to execute a closest hit shader must not be set to zero=If the currently bound ray tracing pipeline was created with flags that included V, entries in pHitShaderBindingTableV accessed as a result of this command in order to execute an intersection shader must not be set to zeroIf  commandBufferD is a protected command buffer, any resource written to by the ~C object bound to the pipeline bind point used by this command must$ not be an unprotected resourceIf  commandBufferu is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the ~. object bound to the pipeline bind point must not write to any resourcewidth must be less than or equal to  l::maxComputeWorkGroupCount[0]height must be less than or equal to  l::maxComputeWorkGroupCount[1]depth must be less than or equal to  l::maxComputeWorkGroupCount[2]Valid Usage (Implicit) commandBuffer must be a valid  handlepRaygenShaderBindingTable must$ be a valid pointer to a valid  structurepMissShaderBindingTable must$ be a valid pointer to a valid  structurepHitShaderBindingTable must$ be a valid pointer to a valid  structurepCallableShaderBindingTable must$ be a valid pointer to a valid  structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Outside  Compute  See Also, (vulkanWvkGetRayTracingShaderGroupHandlesKHR - Query ray tracing pipeline shader group handles Valid Usage firstGroup must2 be less than the number of shader groups in pipeline The sum of  firstGroup and  groupCount must> be less than or equal to the number of shader groups in pipelinedataSize must be at least ::shaderGroupHandleSize  groupCountpipeline must! have not been created with VValid Usage (Implicit)device must be a valid  handlepipeline must be a valid ~ handlepData must# be a valid pointer to an array of dataSize bytesdataSize must be greater than 0pipeline must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, ~(vulkansvkGetRayTracingCaptureReplayShaderGroupHandlesKHR - Query ray tracing capture replay pipeline shader group handles Valid Usage firstGroup must2 be less than the number of shader groups in pipeline The sum of  firstGroup and  groupCount must> be less than or equal to the number of shader groups in pipelinedataSize must be at least ::"shaderGroupHandleCaptureReplaySize  groupCount::(rayTracingShaderGroupHandleCaptureReplay must! be enabled to call this functionValid Usage (Implicit)device must be a valid  handlepipeline must be a valid ~ handlepData must# be a valid pointer to an array of dataSize bytesdataSize must be greater than 0pipeline must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, ~(vulkanKvkCreateRayTracingPipelinesKHR - Creates a new ray tracing pipeline object DescriptionThe e error is returned if the implementation is unable to re-use the shader group handles provided in ::pShaderGroupCaptureReplayHandle when ::(rayTracingShaderGroupHandleCaptureReplay is enabled. Valid UsageIf the flags member of any element of  pCreateInfos contains the V flag, and the basePipelineIndex) member of that same element is not -1, basePipelineIndex must" be less than the index into  pCreateInfos! that corresponds to that elementIf the flags member of any element of  pCreateInfos contains the V flag, the base pipeline must! have been created with the V flag setIf  pipelineCache was created with Y, host access to  pipelineCache must be lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehaviorexternally synchronized The  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing rayTracing feature must be enabledValid Usage (Implicit)device must be a valid  handleIf  pipelineCache is not ,  pipelineCache must be a valid } handle pCreateInfos must( be a valid pointer to an array of createInfoCount valid  structuresIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pPipelines must( be a valid pointer to an array of createInfoCount ~ handlescreateInfoCount must be greater than 0If  pipelineCache is a valid handle, it must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , ~, }, (vulkanGvkCmdTraceRaysIndirectKHR - Initialize an indirect ray tracing dispatch Description( behaves similarly to (I except that the ray trace query dimensions are read by the device from bufferD during execution. The parameters of trace ray are encoded in the  structure located at offset bytes in buffer. Valid UsageIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain g8If a /b is accessed using atomic operations as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain gIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any / being sampled with " as a result of this command must have a `E and format that supports cubic filtering, as specified by A:: filterCubic returned by TcAny / being sampled with + with a reduction mode of either  or " as a result of this command must have a `i and format that supports cubic filtering together with minmax filtering, as specified by A::filterCubicMinmax returned by TcAny /: created with a 0::flags containing * sampled as a result of this command must only be sampled using a % of % For each set n% that is statically used by the ~N bound to the pipeline bind point used by this command, a descriptor set must have been bound to n3 at the same pipeline bind point, with a |! that is compatible for set n , with the |! used to create the current ~, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the ~S bound to the pipeline bind point used by this command, a push constant value mustB have been set for the same pipeline bind point, with a |6 that is compatible for push constants, with the |! used to create the current ~, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via ., must7 be valid if they are statically used by the ~; bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the ~o object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the ~a object bound to the pipeline bind point used by this command, since that pipeline was boundIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must% not be used to sample from any /: with a / of the type `, `, `, `| or `, in any shader stageIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stageIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample*U instructions that includes a LOD bias or any offset values, in any shader stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the ~f object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the ~f object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the ~C object bound to the pipeline bind point used by this command must! not be a protected resourceIf a / is accessed using  OpImageWrite' as a result of this command, then the Type of the Texel operand of that instruction mustB have at least as many components as the image view s format.0Any shader group handle referenced by this call mustL have been queried from the currently bound ray tracing shader pipeline This command must^ not cause a shader call instruction to be executed from a shader invocation with a  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depthrecursion depth greater than the value of maxRecursionDepth3 used to create the bound ray tracing pipelineIf !pRayGenShaderBindingTable->buffer is non-sparse then it must< be bound completely and contiguously to a single  objectThe offset member of pRayGenShaderBindingTable must# be less than the size of the !pRayGenShaderBindingTable->buffer!pRayGenShaderBindingTable->offset must be a multiple of ::shaderGroupBaseAlignment!pRayGenShaderBindingTable->offset + pRayGenShaderBindingTable->size must+ be less than or equal to the size of !pRayGenShaderBindingTable->bufferThe size member of pRayGenShaderBindingTable must be equal to its stride memberIf pMissShaderBindingTable->buffer is non-sparse then it must< be bound completely and contiguously to a single  objectThe offset member of pMissShaderBindingTable must be less than the size of pMissShaderBindingTable->bufferThe offset member of pMissShaderBindingTable must be a multiple of ::shaderGroupBaseAlignmentpMissShaderBindingTable->offset + pMissShaderBindingTable->size must+ be less than or equal to the size of pMissShaderBindingTable->bufferThe stride member of pMissShaderBindingTable must be a multiple of ::shaderGroupHandleSizeThe stride member of pMissShaderBindingTable must$ be less than or equal to ::maxShaderGroupStrideIf pHitShaderBindingTable->buffer is non-sparse then it must< be bound completely and contiguously to a single  objectThe offset member of pHitShaderBindingTable must be less than the size of pHitShaderBindingTable->bufferThe offset member of pHitShaderBindingTable must be a multiple of ::shaderGroupBaseAlignmentpHitShaderBindingTable->offset + pHitShaderBindingTable->size must+ be less than or equal to the size of pHitShaderBindingTable->bufferThe stride member of pHitShaderBindingTable must be a multiple of ::shaderGroupHandleSizeThe stride member of pHitShaderBindingTable must$ be less than or equal to ::maxShaderGroupStrideIf #pCallableShaderBindingTable->buffer is non-sparse then it must7 be bound completely and contiguously to a single  objectThe offset member of pCallableShaderBindingTable must be less than the size of #pCallableShaderBindingTable->bufferThe offset member of pCallableShaderBindingTable must be a multiple of ::shaderGroupBaseAlignment#pCallableShaderBindingTable->offset + !pCallableShaderBindingTable->size must+ be less than or equal to the size of #pCallableShaderBindingTable->bufferThe stride member of pCallableShaderBindingTable must be a multiple of ::shaderGroupHandleSizeThe stride member of pCallableShaderBindingTable must$ be less than or equal to ::maxShaderGroupStride=If the currently bound ray tracing pipeline was created with flags that included V , the buffer member of pHitShaderBindingTable must not be =If the currently bound ray tracing pipeline was created with flags that included V , the buffer member of pHitShaderBindingTable must not be =If the currently bound ray tracing pipeline was created with flags that included V , the buffer member of pHitShaderBindingTable must not be =If the currently bound ray tracing pipeline was created with flags that included V-, the shader group handle identified by pMissShaderBindingTable must contain a valid miss shader=If the currently bound ray tracing pipeline was created with flags that included V, entries in pHitShaderBindingTableQ accessed as a result of this command in order to execute an any hit shader must not be set to zero=If the currently bound ray tracing pipeline was created with flags that included V, entries in pHitShaderBindingTableT accessed as a result of this command in order to execute a closest hit shader must not be set to zero=If the currently bound ray tracing pipeline was created with flags that included V, entries in pHitShaderBindingTableV accessed as a result of this command in order to execute an intersection shader must not be set to zeroIf buffer is non-sparse then it must7 be bound completely and contiguously to a single  objectbuffer must! have been created with the z bit setoffset must be a multiple of 4 commandBuffer must" not be a protected command buffer(offset + sizeof()) must+ be less than or equal to the size of buffer the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing-indirecttraceray::rayTracingIndirectTraceRays feature must be enabledValid Usage (Implicit) commandBuffer must be a valid  handle pRaygenShaderBindingTable must$ be a valid pointer to a valid  structurepMissShaderBindingTable must$ be a valid pointer to a valid  structurepHitShaderBindingTable must$ be a valid pointer to a valid  structurepCallableShaderBindingTable must$ be a valid pointer to a valid  structurebuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceBoth of buffer, and  commandBuffer must? have been created, allocated, or retrieved from the same Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Outside  Compute  See Also, , m, (vulkanvkGetDeviceAccelerationStructureCompatibilityKHR - Check if a serialized acceleration structure is compatible with the current device Description!This possible return values for ( are:? is returned if an acceleration structure serialized with version4 as the version information is compatible with device.? is returned if an acceleration structure serialized with version8 as the version information is not compatible with device. Valid Usage The  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing rayTracing or  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQueryrayQuery feature must be enabledValid Usage (Implicit)device must be a valid  handleversion must$ be a valid pointer to a valid  structure Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, (vulkanNvkCreateAccelerationStructureKHR - Create a new acceleration structure object DescriptionSimilar to other objects in Vulkan, the acceleration structure creation merely creates an object with a specific shape . The type and quantity of geometry that can be built into an acceleration structure is determined by the parameters of .ePopulating the data in the object after allocating and binding memory is done with commands such as (, (, (, and (.The input buffers passed to acceleration structure build commands will be referenced by the implementation for the duration of the command. After the command completes, the acceleration structure may hold a reference to any acceleration structure specified by an active instance contained therein. Apart from this referencing, acceleration structures must* be fully self-contained. The application may re-use or free any memory which was used by the command as an input or as scratch without affecting the results of ray traversal. Valid Usage The  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing rayTracing or  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQueryrayQuery feature must be enabledIf :: deviceAddress is not zero, the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing-ascapturereplay,rayTracingAccelerationStructureCaptureReplay feature must be enabledIf device; was created with multiple physical devices, then the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevicebufferDeviceAddressMultiDevice feature must be enabledValid Usage (Implicit)device must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepAccelerationStructure must be a valid pointer to a U handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureYSee Also, U, , (vulkan=A convenience wrapper to make a compatible pair of calls to ( and (To ensure that ( is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.(vulkanDvkCmdBuildAccelerationStructureKHR - Build an acceleration structure DescriptionThe ( command provides the ability to initiate multiple acceleration structures builds, however there is no ordering or synchronization implied between any of the individual acceleration structure builds.NoteThis means that an application cannot7 build a top-level acceleration structure in the same (g call as the associated bottom-level or instance acceleration structures are being built. There also cannotz be any memory aliasing between any acceleration structure memories or scratch memories being used by any of the builds. Valid UsageEach element of  ppOffsetInfos[i] must( be a valid pointer to an array of pInfos[i]. geometryCount  structuresEach pInfos[i].srcAccelerationStructure must? not refer to the same acceleration structure as any pInfos[i].dstAccelerationStructureU that is provided to the same build command unless it is identical for an update For each pInfos[i], dstAccelerationStructure must( have been created with compatible  where ::type and ::flags are identical to ::type and ::flags respectively, :: geometryCount for dstAccelerationStructureM are greater than or equal to the build size, and each geometry in :: ppGeometries for dstAccelerationStructureT has greater than or equal to the number of vertices, indices, and AABBs, :: transformDataG is both 0 or both non-zero, and all other parameters are the same For each pInfos[i], if update is .P, then objects that were previously active for that acceleration structure must' not be made inactive as per shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims??? For each pInfos[i], if update is .R, then objects that were previously inactive for that acceleration structure must% not be made active as per shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims???PAny acceleration structure instance in any top level build in this command mustQ not reference any bottom level acceleration structure built by this commandThere must not be any  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasingmemory aliasingE between the scratch memories that are provided in all the pInfos[i]. scratchData4 memories for the acceleration structure buildsThere must not be any  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasingmemory aliasing{ between memory bound to any top level, bottom level, or instance acceleration structure accessed by this commandIf update is , all addresses between pInfos[i]. scratchData and pInfos[i]. scratchData + N1 mustX be in the buffer device address range of the same buffer, where N is given by the size member of the 4z- structure returned from a call to ( with ::accelerationStructure set to pInfos[i].dstAccelerationStructure and ::type set to (If update is ., all addresses between pInfos[i]. scratchData and pInfos[i]. scratchData + N1 mustX be in the buffer device address range of the same buffer, where N is given by the size member of the 4z- structure returned from a call to ( with ::accelerationStructure set to pInfos[i].dstAccelerationStructure and ::type set to (5The buffer from which the buffer device address pInfos[i]. scratchData is queried must have been created with z usage flagAll ( or (! referenced by this command musts contain valid device addresses for a buffer bound to device memory. If the buffer is non-sparse then it mustL be bound completely and contiguously to a single VkDeviceMemory objectAll U) objects referenced by this command must be bound to device memory The K structure must not be included in the pNext# chain of any of the provided  structuresValid Usage (Implicit) commandBuffer must be a valid  handlepInfos must# be a valid pointer to an array of  infoCount valid  structures ppOffsetInfos must# be a valid pointer to an array of  infoCount  structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instance infoCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Outside  Compute  See Also, , (vulkanyvkCmdBuildAccelerationStructureIndirectKHR - Build an acceleration structure with some parameters provided on the device Valid UsageAll ( or (! referenced by this command musts contain valid device addresses for a buffer bound to device memory. If the buffer is non-sparse then it mustL be bound completely and contiguously to a single VkDeviceMemory objectAll U) objects referenced by this command must be bound to device memory The  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing-indirectasbuild.::rayTracingIndirectAccelerationStructureBuild feature must be enabled The K structure must not be included in the pNext# chain of any of the provided  structuresValid Usage (Implicit) commandBuffer must be a valid  handlepInfo must$ be a valid pointer to a valid  structureindirectBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceBoth of  commandBuffer, and indirectBuffer mustD have been created, allocated, or retrieved from the same Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Outside  Compute  See Also, , , m(vulkanNvkBuildAccelerationStructureKHR - Build an acceleration structure on the host Parameters(This command fulfills the same task as ( but executed by the host. Descriptiondevice is the < for which the acceleration structures are being built. infoCountX is the number of acceleration structures to build. It specifies the number of the pInfos structures and  ppOffsetInfos pointers that must be provided.pInfos is a pointer to an array of  infoCount Q structures defining the geometry used to build each acceleration structure. ppOffsetInfos is an array of  infoCount pointers to arrays of  structures. Each  ppOffsetInfos[i] is an array of pInfos[i]. geometryCount m structures defining dynamic offsets to the addresses where geometry data is stored, as defined by pInfos[i].The ( command provides the ability to initiate multiple acceleration structures builds, however there is no ordering or synchronization implied between any of the individual acceleration structure builds.NoteThis means that an application cannot7 build a top-level acceleration structure in the same (g call as the associated bottom-level or instance acceleration structures are being built. There also cannotz be any memory aliasing between any acceleration structure memories or scratch memories being used by any of the builds.If the K structure is included in the pNext chain of any . structure, the operation of this command is deferred, as defined in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operationsDeferred Host Operations chapter. Valid UsageEach element of  ppOffsetInfos[i] must( be a valid pointer to an array of pInfos[i]. geometryCount  structures Each pInfos[i].srcAccelerationStructure must? not refer to the same acceleration structure as any pInfos[i].dstAccelerationStructureU that is provided to the same build command unless it is identical for an update For each pInfos[i], dstAccelerationStructure must( have been created with compatible  where ::type and ::flags are identical to ::type and ::flags respectively, :: geometryCount for dstAccelerationStructureM are greater than or equal to the build size, and each geometry in :: ppGeometries for dstAccelerationStructureT has greater than or equal to the number of vertices, indices, and AABBs, :: transformDataG is both 0 or both non-zero, and all other parameters are the same For each pInfos[i], if update is .P, then objects that were previously active for that acceleration structure must' not be made inactive as per shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims??? For each pInfos[i], if update is .R, then objects that were previously inactive for that acceleration structure must% not be made active as per shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims???PAny acceleration structure instance in any top level build in this command mustQ not reference any bottom level acceleration structure built by this commandThere must not be any  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasingmemory aliasingE between the scratch memories that are provided in all the pInfos[i]. scratchData4 memories for the acceleration structure buildsThere must not be any  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasingmemory aliasing{ between memory bound to any top level, bottom level, or instance acceleration structure accessed by this commandAll ( or (! referenced by this command must contain valid host addressesAll U) objects referenced by this command must be bound to host-visible memory The  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-raytracing-hostascmds-::rayTracingHostAccelerationStructureCommands feature must be enabledValid Usage (Implicit)device must be a valid  handlepInfos must# be a valid pointer to an array of  infoCount valid  structures ppOffsetInfos must# be a valid pointer to an array of  infoCount  structures infoCount must be greater than 0 Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , (vulkanZvkGetAccelerationStructureDeviceAddressKHR - Query an address of a acceleration structure DescriptionThe 64-bit return value is an address of the acceleration structure, which can be used for device and shader operations that involve acceleration structures, such as ray traversal and acceleration structure building.DIf the acceleration structure was created with a non-zero value of :: deviceAddress, the return value will be the same address. Valid UsageIf device; was created with multiple physical devices, then the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevicebufferDeviceAddressMultiDevice feature must be enabledValid Usage (Implicit)device must be a valid  handlepInfo must$ be a valid pointer to a valid  structureSee Also, (vulkandevice0 is the logical device that destroys the buffer.vulkanaccelerationStructure* is the acceleration structure to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.(vulkandeviceH is the logical device on which the acceleration structure was created.device must be a valid  handlevulkanpInfoF specifies the acceleration structure to get memory requirements for.pInfo must be a valid pointer to a valid  structure(vulkandeviceI is the logical device that owns the acceleration structures and memory.device must be a valid  handlevulkan pBindInfos is a pointer to an array of C structures describing acceleration structures and memory to bind. pBindInfos must# be a valid pointer to an array of  bindInfoCount valid  structures(vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanpInfo is a pointer to a ( structure defining the copy operation.(vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanpAccelerationStructuresP is a pointer to an array of existing previously built acceleration structures.vulkan queryType is a ^; value specifying the type of queries managed by the pool.vulkan queryPool= is the query pool that will manage the results of the query.vulkan firstQueryG is the first query index within the query pool that will contain the accelerationStructureCount number of results.(vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanpRaygenShaderBindingTable is a O that holds the shader binding table data for the ray generation shader stage.vulkanpMissShaderBindingTable is a E that holds the shader binding table data for the miss shader stage.vulkanpHitShaderBindingTable is a D that holds the shader binding table data for the hit shader stage.vulkanpCallableShaderBindingTable is a I that holds the shader binding table data for the callable shader stage.vulkanwidth0 is the width of the ray trace query dimensions.vulkanheight- is height of the ray trace query dimensions.vulkandepth, is depth of the ray trace query dimensions.(vulkandevice; is the logical device containing the ray tracing pipeline.vulkanpipeline; is the ray tracing pipeline object containing the shaders.vulkan firstGroupD is the index of the first group to retrieve a handle for from the ::pGroups or 1::pGroups array.vulkan groupCount- is the number of shader handles to retrieve.vulkandataSize2 is the size in bytes of the buffer pointed to by pData.vulkanpDataL is a pointer to a user-allocated buffer where the results will be written.(vulkandevice; is the logical device containing the ray tracing pipeline.vulkanpipeline; is the ray tracing pipeline object containing the shaders.vulkan firstGroupD is the index of the first group to retrieve a handle for from the ::pGroups array.vulkan groupCount- is the number of shader handles to retrieve.vulkandataSize2 is the size in bytes of the buffer pointed to by pData.vulkanpDataL is a pointer to a user-allocated buffer where the results will be written.(vulkandevice> is the logical device that creates the ray tracing pipelines.vulkan pipelineCache is either K, indicating that pipeline caching is disabled, or the handle of a valid  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-cachepipeline cacheV object, in which case use of that cache is enabled for the duration of the command.vulkan pCreateInfos is a pointer to an array of  structures.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.(vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanpRaygenShaderBindingTable is a O that holds the shader binding table data for the ray generation shader stage.vulkanpMissShaderBindingTable is a E that holds the shader binding table data for the miss shader stage.vulkanpHitShaderBindingTable is a D that holds the shader binding table data for the hit shader stage.vulkanpCallableShaderBindingTable is a I that holds the shader binding table data for the callable shader stage.vulkanbuffer3 is the buffer containing the trace ray parameters.vulkanoffset is the byte offset into buffer where parameters begin.(vulkandevice, is the device to check the version against.vulkanversion points to the 2 version information to check against the device.(vulkandevice6 is the logical device that creates the buffer object.vulkan pCreateInfo is a pointer to a T structure containing parameters affecting creation of the acceleration structure.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.(vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanpInfos is an array of  infoCount M structures defining the geometry used to build each acceleration structure.vulkan ppOffsetInfos is an array of  infoCount pointers to arrays of  structures. Each  ppOffsetInfos[i] is an array of pInfos[i]. geometryCount e structures defining dynamic offsets to the addresses where geometry data is stored, as defined by pInfos[i].(vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanpInfo is a pointer to a L structure defining the geometry used to build the acceleration structure.vulkanindirectBuffer is the  containing pInfo->geometryCount e structures defining dynamic offsets to the addresses where geometry data is stored, as defined by pInfo.vulkanindirectOffset is the byte offset into indirectBuffer where offset parameters begin.(vulkandeviceF is the logical device that the accelerationStructure was created on.vulkanpInfo is a pointer to a N structure specifying the acceleration structure to retrieve an address for.*U####################################(((( (((((((( ((( ((((((((((((((((((((((:(;(o(p(q(r(s(w(u(v(t(((((((((((((((((((((((x(z(y({(|(}(~(((((((((((((( ("(#(!($(%('(((&()(*(,(-(+(.((((((/(0(((((3(6(4(8(5(7(9(h(k(l(i(j(m(n(^(a(_(`(b(d(c(e(f(g(1(2(C(F(H(E(D(G(I(L(K(N(J(M(O(P(S(Q(R(T(U(Y(X(V(W(Z([(\(](<(=(>(?(@(A(B((( (((( (((((((((((((((((((((((((((((((((((j(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((x(z(y({(|(}(~((((s(w(u(v(t(o(p(q(r(h(k(l(i(j(m(n(e(f(g(b(d(c(^(a(_(`(U(Y(X(V(W(Z([(\(](P(S(Q(R(T(I(L(K(N(J(M(O(C(F(H(E(D(G(<(=(>(?(@(A(B(:(;(3(6(4(8(5(7(9(1(2(/(0(*(,(-(+(.(%('(((&()( ("(#(!($((((((((((((((((((((((((((((((((((((((((((((((((((( (((((( ((((((( (((( (((( ((((((((((((((U#######################################################################None("#%&'-./1789;=>?FHIMSUVX_dghklmqdCvulkanUVkRayTracingShaderGroupCreateInfoNV - Structure specifying shaders in a shader group Valid UsageIf type is * then  generalShader must be a valid index into ::pStages referring to a shader of */, *, , or **If type is * then closestHitShader,  anyHitShader, and intersectionShader must be If type is * then intersectionShader must be a valid index into ::pStages referring to a shader of *+If type is * then intersectionShader must be closestHitShader must be either  or a valid index into ::pStages referring to a shader of *- anyHitShader must be either  or a valid index into ::pStages referring to a shader of *.Valid Usage (Implicit)sType must be pNext must be NULLtype must be a valid  valueSee Also, , vulkankVkRayTracingPipelineCreateInfoNV - Structure specifying parameters of a newly created ray tracing pipeline DescriptionThe parameters basePipelineHandle and basePipelineIndex# are described in more detail in  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivativesPipeline Derivatives. Valid UsageIf flags contains the V flag, and basePipelineIndex is -1, basePipelineHandle must) be a valid handle to a ray tracing ~If flags contains the V flag, and basePipelineHandle is , basePipelineIndex must2 be a valid index into the calling command s  pCreateInfos parameterIf flags contains the V flag, and basePipelineIndex is not -1, basePipelineHandle must be If flags contains the V flag, and basePipelineHandle is not , basePipelineIndex must be -1The stage# member of at least one element of pStages must be  ]3The shader code for the entry points identified by pStages>, and the rest of the state identified by this structure mustA adhere to the pipeline linking rules described in the  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfacesShader Interfaces chapterlayout must be  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent$ with all shaders specified in pStagesThe number of resources in layoutC accessible to each shader stage that is used by the pipeline must be less than or equal to  l::maxPerStageResourcesflags must not include Vy If the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControlpipelineCreationCacheControl feature is not enabled, flags must not include V or Vflags must not include VmaxRecursionDepth must be less than or equal to ::maxRecursionDepthflags must not include Vflags must not include Vflags must not include Vflags must not include Vflags must not include Vflags must not include Vflags must not include both V and V at the same timeValid Usage (Implicit)sType must be  pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of V valuespStages must# be a valid pointer to an array of  stageCount valid  structurespGroups must# be a valid pointer to an array of  groupCount valid  structureslayout must be a valid | handle stageCount must be greater than 0 groupCount must be greater than 0Both of basePipelineHandle, and layout7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Also~,  , |, , , , *9vulkan[VkPhysicalDeviceRayTracingPropertiesNV - Properties of the physical device for ray tracing DescriptionIf the  structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.#Limits specified by this structure must/ match those specified with the same name in .Valid Usage (Implicit)See AlsovulkanjVkGeometryTrianglesNV - Structure specifying a triangle geometry in a bottom-level acceleration structure DescriptionIf  indexType is *B, then this structure describes a set of triangles determined by  vertexCountP. Otherwise, this structure describes a set of indexed triangles determined by  indexCount. Valid Usage vertexOffset must be less than the size of  vertexData  vertexOffset must- be a multiple of the component size of  vertexFormat vertexFormat must be one of , , , ,  , or  indexOffset must be less than the size of  indexData indexOffset must+ be a multiple of the element size of  indexType indexType must be v, u , or * indexData must be  if  indexType is * indexData must be a valid  handle if  indexType is not * indexCount must be 0 if  indexType is *transformOffset must be less than the size of  transformDatatransformOffset must be a multiple of 16Valid Usage (Implicit)sType must be pNext must be NULLIf  vertexData is not ,  vertexData must be a valid  handle vertexFormat must be a valid J valueIf  indexData is not ,  indexData must be a valid  handle indexType must be a valid S valueIf  transformData is not ,  transformData must be a valid  handleEach of  indexData,  transformData, and  vertexData7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Also, m, J, , S, vulkanXVkGeometryNV - Structure specifying a geometry in a bottom-level acceleration structureValid Usage (Implicit)See Also, , , , vulkanZVkGeometryDataNV - Structure specifying geometry in a bottom-level acceleration structureValid Usage (Implicit)See Also, , vulkantVkGeometryAABBNV - Structure specifying axis-aligned bounding box geometry in a bottom-level acceleration structure DescriptionThe AABB data in memory is six 32-bit floats consisting of the minimum x, y, and z values followed by the maximum x, y, and z values. Valid Usageoffset must be less than the size of aabbDataoffset must be a multiple of 8stride must be a multiple of 8Valid Usage (Implicit)sType must be pNext must be NULLIf aabbData is not , aabbData must be a valid  handleSee Also, m, , vulkanuVkAccelerationStructureMemoryRequirementsInfoNV - Structure specifying acceleration to query for memory requirementsValid Usage (Implicit)See Also), , , *4vulkaneVkAccelerationStructureInfoNV - Structure specifying the parameters of acceleration structure object DescriptionR contains information that is used both for acceleration structure creation with *3^ and in combination with the actual geometric data to build the acceleration structure with *6. Valid Usage geometryCount must be less than or equal to ::maxGeometryCount instanceCount must be less than or equal to ::maxInstanceCount0The total number of triangles in all geometries must$ be less than or equal to ::maxTriangleCountIf type is * then  geometryCount must be 0If type is * then  instanceCount must be 0If type is * then the  geometryType member of each geometry in  pGeometries must be the sameIf flags has the * bit set, then it must not have the * bit setscratch must have been created with *' usage flagIf  instanceData is not ,  instanceData must have been created with *' usage flagValid Usage (Implicit)sType must be pNext must be NULLtype must be a valid ) valueflags must be a valid combination of ) valuesIf  geometryCount is not 0,  pGeometries must( be a valid pointer to an array of  geometryCount valid  structuresSee Also, ), ), , , *6vulkan{VkAccelerationStructureCreateInfoNV - Structure specifying the parameters of a newly created acceleration structure object Valid UsageIf  compactedSize is not 0 then both info.geometryCount and info.instanceCount must be 0Valid Usage (Implicit)sType must be pNext must be NULLinfo must be a valid  structureSee Also, m, , *3)vulkanshaderGroupHandleSize$ size in bytes of the shader header.)vulkanmaxRecursionDepthJ is the maximum number of levels of recursion allowed in a trace command.)vulkanmaxShaderGroupStrideJ is the maximum stride in bytes allowed between shader groups in the SBT.)vulkanshaderGroupBaseAlignment> is the required alignment in bytes for the base of the SBTs.)vulkanmaxGeometryCountQ is the maximum number of geometries in the bottom level acceleration structure.)vulkanmaxInstanceCountM is the maximum number of instances in the top level acceleration structure.)vulkanmaxTriangleCountb is the maximum number of triangles in all geometries in the bottom level acceleration structure.)vulkan&maxDescriptorSetAccelerationStructuresc is the maximum number of acceleration structure descriptors that are allowed in a descriptor set.)vulkantype8 selects the type of memory requirement being queried. * : returns the memory requirements for the object itself. * O returns the memory requirements for the scratch memory when doing a build. *O returns the memory requirements for the scratch memory when doing an update.type must be a valid ) value)vulkanaccelerationStructureF is the acceleration structure to be queried for memory requirements.accelerationStructure must be a valid  handle)vulkan compactedSize! is the size from the result of *<P if this acceleration structure is going to be the target of a compacting copy.)vulkaninfo is the P structure specifying further parameters of the created acceleration structure.)vulkantype is a )K value specifying the type of acceleration structure that will be created.)vulkanflags is a bitmask of )A specifying additional parameters of the acceleration structure.)vulkan instanceCountS specifies the number of instances that will be in the new acceleration structure.)vulkan pGeometries is a pointer to an array of  geometryCount U structures containing the scene data being passed into the acceleration structure.)vulkan geometryType specifies the  which this geometry refers to. geometryType must be * or * geometryType must be a valid  value)vulkangeometry, contains the geometry data as described in .geometry must be a valid  structure)vulkanflags has ' describing options for this geometry.flags must be a valid combination of  values)vulkan triangles contains triangle data if :: geometryType is *. triangles must be a valid  structure)vulkanaabbs- contains axis-aligned bounding box data if :: geometryType is *.aabbs must be a valid  structure)vulkanaabbData9 is the buffer containing axis-aligned bounding box data.)vulkannumAABBs) is the number of AABBs in this geometry.)vulkanstride) is the stride in bytes between AABBs in aabbData.)vulkanoffset- is the offset in bytes of the first AABB in aabbData.)vulkan vertexData8 is the buffer containing vertex data for this geometry.)vulkan vertexOffset is the offset in bytes within  vertexData+ containing vertex data for this geometry.)vulkan vertexCount! is the number of valid vertices.)vulkan vertexStride, is the stride in bytes between each vertex.)vulkan vertexFormat is a J/ describing the format of each vertex element.)vulkan indexData7 is the buffer containing index data for this geometry.)vulkan indexOffset is the offset in bytes within  indexData* containing index data for this geometry.)vulkan indexCount6 is the number of indices to include in this geometry.)vulkan indexType is a S& describing the format of each index.)vulkan transformData% is an optional buffer containing an )E structure defining a transformation to be applied to this geometry.)vulkantransformOffset is the offset in bytes in  transformData/ of the transform information described above.)vulkanpNext is NULL6 or a pointer to a structure extending this structure.)vulkanflags is a bitmask of V0 specifying how the pipeline will be generated.)vulkanpStages is an array of size  stageCount structures of type U describing the set of the shader stages to be included in the ray tracing pipeline.)vulkanpGroups is an array of size  groupCount structures of type j describing the set of the shader stages to be included in each shader group in the ray tracing pipeline.)vulkanmaxRecursionDepth is the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depthmaximum recursion depth' of shaders executed by this pipeline.)vulkanlayouto is the description of binding locations used by both the pipeline and descriptor sets used with the pipeline.)vulkanbasePipelineHandle is a pipeline to derive from.)vulkanbasePipelineIndex is an index into the  pCreateInfos0 parameter to use as a pipeline to derive from.*vulkantype6 is the type of hit group specified in this structure.*vulkan generalShaderD is the index of the ray generation, miss, or callable shader from ::pStages' in the group if the shader group has type of *, and  otherwise.*vulkanclosestHitShader7 is the optional index of the closest hit shader from ::pStages' in the group if the shader group has type of * or *, and  otherwise.*vulkan anyHitShader3 is the optional index of the any-hit shader from ::pStages' in the group if the shader group has type of * or *, and  otherwise.*vulkanintersectionShader/ is the index of the intersection shader from ::pStages' in the group if the shader group has type of *, and  otherwise.*2vulkan5vkCompileDeferredNV - Deferred compilation of shaders Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, ~*3vulkanMvkCreateAccelerationStructureNV - Create a new acceleration structure object DescriptionSimilar to other objects in Vulkan, the acceleration structure creation merely creates an object with a specific shape  as specified by the information in  and  compactedSize in  pCreateInfoV. Populating the data in the object after allocating and binding memory is done with *6 and *5.Acceleration structure creation uses the count and type information from the geometries, but does not use the data references in the structures.Valid Usage (Implicit)device must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepAccelerationStructure must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , *4vulkan`vkGetAccelerationStructureMemoryRequirementsNV - Get acceleration structure memory requirementsValid Usage (Implicit)See Also, , k*5vulkanAvkCmdCopyAccelerationStructureNV - Copy an acceleration structure Valid Usagemode must be ( or (src must have been built with ( if mode is (Valid Usage (Implicit) commandBuffer must be a valid  handledst must be a valid U handlesrc must be a valid U handlemode must be a valid  value commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceEach of  commandBuffer, dst, and src must? have been created, allocated, or retrieved from the same Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Outside  Compute  See AlsoU, , *6vulkanCvkCmdBuildAccelerationStructureNV - Build an acceleration structure Valid Usage geometryCount must be less than or equal to ::maxGeometryCount dst must( have been created with compatible  where ::type and ::flags are identical, :: instanceCount and :: geometryCount for dstL are greater than or equal to the build size and each geometry in :: pGeometries for dstM has greater than or equal to the number of vertices, indices, and AABBsIf update is , src must not be If update is , src must' have been built before with * set in ::flagsIf update is , the size member of the 4z- structure returned from a call to *4 with ::accelerationStructure set to dst and ::type set to *  must& be less than or equal to the size of scratch minus  scratchOffsetIf update is , the size member of the 4z- structure returned from a call to *4 with ::accelerationStructure set to dst and ::type set to * must& be less than or equal to the size of scratch minus  scratchOffsetscratch must have been created with *' usage flagIf  instanceData is not ,  instanceData must have been created with *' usage flagIf update is 0, then objects that were previously active must" not be made inactive as per shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-primsIf update is 2, then objects that were previously inactive must not be made active as per shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-primsIf update is , the src and dst objects must0 either be the same object or not have any ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasingmemory aliasingValid Usage (Implicit) commandBuffer must be a valid  handle pInfo must$ be a valid pointer to a valid  structureIf  instanceData is not ,  instanceData must be a valid  handledst must be a valid U handleIf src is not , src must be a valid U handlescratch must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceEach of  commandBuffer, dst,  instanceData, scratch, and src7 that are valid handles of non-ignored parameters mustD have been created, allocated, or retrieved from the same Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Outside  Compute  See Also, U, o, , , m*7vulkan4vkCmdTraceRaysNV - Initialize a ray tracing dispatch Description8When the command is executed, a ray generation group of width height depth rays is assembled. Valid UsageIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain g+If a /b is accessed using atomic operations as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain gIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any / being sampled with " as a result of this command must have a `E and format that supports cubic filtering, as specified by A:: filterCubic returned by TcAny / being sampled with + with a reduction mode of either  or " as a result of this command must have a `i and format that supports cubic filtering together with minmax filtering, as specified by A::filterCubicMinmax returned by TcAny /: created with a 0::flags containing * sampled as a result of this command must only be sampled using a % of % For each set n% that is statically used by the ~N bound to the pipeline bind point used by this command, a descriptor set must have been bound to n3 at the same pipeline bind point, with a |! that is compatible for set n , with the |! used to create the current ~, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the ~S bound to the pipeline bind point used by this command, a push constant value mustB have been set for the same pipeline bind point, with a |6 that is compatible for push constants, with the |! used to create the current ~, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via ., must7 be valid if they are statically used by the ~; bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the ~o object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the ~a object bound to the pipeline bind point used by this command, since that pipeline was boundIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must% not be used to sample from any /: with a / of the type `, `, `, `| or `, in any shader stageIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stageIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample*U instructions that includes a LOD bias or any offset values, in any shader stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the ~f object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the ~f object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the ~C object bound to the pipeline bind point used by this command must! not be a protected resourceIf a / is accessed using  OpImageWrite' as a result of this command, then the Type of the Texel operand of that instruction mustB have at least as many components as the image view s format.0Any shader group handle referenced by this call mustL have been queried from the currently bound ray tracing shader pipeline This command must^ not cause a shader call instruction to be executed from a shader invocation with a  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depthrecursion depth greater than the value of maxRecursionDepth3 used to create the bound ray tracing pipelineIf  commandBufferD is a protected command buffer, any resource written to by the ~C object bound to the pipeline bind point used by this command must$ not be an unprotected resourceIf  commandBufferu is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the ~. object bound to the pipeline bind point must not write to any resourceIf raygenShaderBindingTableBuffer is non-sparse then it must< be bound completely and contiguously to a single /8 objectraygenShaderBindingOffset must be less than the size of raygenShaderBindingTableBufferraygenShaderBindingOffset must be a multiple of ::shaderGroupBaseAlignmentIf missShaderBindingTableBuffer is non-sparse then it must< be bound completely and contiguously to a single /8 objectmissShaderBindingOffset must be less than the size of missShaderBindingTableBuffermissShaderBindingOffset must be a multiple of ::shaderGroupBaseAlignmentIf hitShaderBindingTableBuffer is non-sparse then it must< be bound completely and contiguously to a single /8 objecthitShaderBindingOffset must be less than the size of hitShaderBindingTableBufferhitShaderBindingOffset must be a multiple of ::shaderGroupBaseAlignmentIf  callableShaderBindingTableBuffer is non-sparse then it must< be bound completely and contiguously to a single /8 objectcallableShaderBindingOffset must be less than the size of  callableShaderBindingTableBuffercallableShaderBindingOffset must be a multiple of ::shaderGroupBaseAlignmentmissShaderBindingStride must be a multiple of ::shaderGroupHandleSizehitShaderBindingStride must be a multiple of ::shaderGroupHandleSizecallableShaderBindingStride must be a multiple of ::shaderGroupHandleSizemissShaderBindingStride must be less than or equal to ::maxShaderGroupStridehitShaderBindingStride must be less than or equal to ::maxShaderGroupStridecallableShaderBindingStride must be less than or equal to ::maxShaderGroupStridewidth must be less than or equal to  l::maxComputeWorkGroupCount[0]height must be less than or equal to  l::maxComputeWorkGroupCount[1]depth must be less than or equal to  l::maxComputeWorkGroupCount[2]Valid Usage (Implicit) commandBuffer must be a valid  handleraygenShaderBindingTableBuffer must be a valid  handleIf missShaderBindingTableBuffer is not , missShaderBindingTableBuffer must be a valid  handleIf hitShaderBindingTableBuffer is not , hitShaderBindingTableBuffer must be a valid  handleIf  callableShaderBindingTableBuffer is not ,  callableShaderBindingTableBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceEach of  callableShaderBindingTableBuffer,  commandBuffer, hitShaderBindingTableBuffer, missShaderBindingTableBuffer , and raygenShaderBindingTableBuffer7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Outside  Compute  See Also, , m*8vulkanNvkGetAccelerationStructureHandleNV - Get opaque acceleration structure handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee AlsoU, *9vulkanJvkCreateRayTracingPipelinesNV - Creates a new ray tracing pipeline object Valid UsageIf the flags member of any element of  pCreateInfos contains the V flag, and the basePipelineIndex) member of that same element is not -1, basePipelineIndex must" be less than the index into  pCreateInfos! that corresponds to that elementIf the flags member of any element of  pCreateInfos contains the V flag, the base pipeline must! have been created with the V flag setIf  pipelineCache was created with Y, host access to  pipelineCache must be lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehaviorexternally synchronizedValid Usage (Implicit)device must be a valid  handleIf  pipelineCache is not ,  pipelineCache must be a valid } handle pCreateInfos must( be a valid pointer to an array of createInfoCount valid  structuresIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pPipelines must( be a valid pointer to an array of createInfoCount ~ handlescreateInfoCount must be greater than 0If  pipelineCache is a valid handle, it must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , ~, }, *2vulkandevice; is the logical device containing the ray tracing pipeline.device must be a valid  handlevulkanpipeline; is the ray tracing pipeline object containing the shaders.pipeline must have been created with Vpipeline must be a valid ~ handlepipeline must2 have been created, allocated, or retrieved from devicevulkanshader' is the index of the shader to compile.shader must2 not have been called as a deferred compile before*3vulkandevice6 is the logical device that creates the buffer object.vulkan pCreateInfo is a pointer to a T structure containing parameters affecting creation of the acceleration structure.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.*4vulkandeviceH is the logical device on which the acceleration structure was created.device must be a valid  handlevulkanpInfoF specifies the acceleration structure to get memory requirements for.pInfo must be a valid pointer to a valid  structure*5vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkandst@ is a pointer to the target acceleration structure for the copy.vulkansrc@ is a pointer to the source acceleration structure for the copy.vulkanmode is a D value specifying additional operations to perform during the copy.*6 vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanpInfoM contains the shared information for the acceleration structure s structure.vulkan instanceData' is the buffer containing an array of > structures defining acceleration structures. This parameter must be NULL* for bottom level acceleration structures.vulkaninstanceOffset3 is the offset in bytes (relative to the start of  instanceData() at which the instance data is located.vulkanupdate! specifies whether to update the dst* acceleration structure with the data in src.vulkandstA is a pointer to the target acceleration structure for the build.vulkansrcV is a pointer to an existing acceleration structure that is to be used to update the dst acceleration structure.vulkanscratch is the 4 that will be used as scratch memory for the build.vulkan scratchOffset2 is the offset in bytes relative to the start of scratch' that will be used as a scratch memory.*7vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanraygenShaderBindingTableBufferd is the buffer object that holds the shader binding table data for the ray generation shader stage.vulkanraygenShaderBindingOffset& is the offset in bytes (relative to raygenShaderBindingTableBuffer9) of the ray generation shader being used for the trace.vulkanmissShaderBindingTableBufferZ is the buffer object that holds the shader binding table data for the miss shader stage.vulkanmissShaderBindingOffset& is the offset in bytes (relative to missShaderBindingTableBuffer/) of the miss shader being used for the trace.vulkanmissShaderBindingStride> is the size in bytes of each shader binding table record in missShaderBindingTableBuffer.vulkanhitShaderBindingTableBufferZ is the buffer object that holds the shader binding table data for the hit shader stages.vulkanhitShaderBindingOffset& is the offset in bytes (relative to hitShaderBindingTableBuffer4) of the hit shader group being used for the trace.vulkanhitShaderBindingStride> is the size in bytes of each shader binding table record in hitShaderBindingTableBuffer. vulkan callableShaderBindingTableBuffer^ is the buffer object that holds the shader binding table data for the callable shader stage. vulkancallableShaderBindingOffset& is the offset in bytes (relative to  callableShaderBindingTableBuffer3) of the callable shader being used for the trace. vulkancallableShaderBindingStride> is the size in bytes of each shader binding table record in  callableShaderBindingTableBuffer. vulkanwidth0 is the width of the ray trace query dimensions. vulkanheight- is height of the ray trace query dimensions.vulkandepth, is depth of the ray trace query dimensions.*8vulkandevice= is the logical device that owns the acceleration structures.device must be a valid  handlevulkanaccelerationStructure is the acceleration structure.accelerationStructure must3 be bound completely and contiguously to a single /8 object via (accelerationStructure must be a valid U handleaccelerationStructure must2 have been created, allocated, or retrieved from devicevulkandataSize2 is the size in bytes of the buffer pointed to by pData.dataSize mustH be large enough to contain the result of the query, as described abovedataSize must be greater than 0vulkanpDataL is a pointer to a user-allocated buffer where the results will be written.pData must# be a valid pointer to an array of dataSize bytes*9vulkandevice> is the logical device that creates the ray tracing pipelines.vulkan pipelineCache is either K, indicating that pipeline caching is disabled, or the handle of a valid  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-cachepipeline cacheV object, in which case use of that cache is enabled for the duration of the command.vulkan pCreateInfos is a pointer to an array of  structures.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.U####################################k( (((((((( (((( ((((((((((((((((((((((((:(;((((((3(6(4(8(5(7(9(<(=(>(?(@(A(B)*****)))))))))))))))))))))))))))))))))))))))))))))))))))))(((())))))))))))))))))***** * * * * ******************* *!*"*#*$*%*&*'*(*)***+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=E*2*3*4*5*6*7*8*9*1*0*/*.*-*,*+***)*(*'*&*%*$*#*"*!* ******************* * * * * **:*;*<*=*)*****))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))*)*U((((((((<(=(>(?(@(A(B(:(;(3(6(4(8(5(7(9((((#######################################################################((((((((((((((((((((((((((((((((((( ((((( ((((((( (((((((((((((kNone("#%&'-./1789;=>?FHIMSUVX_dghklmqg7vulkanoVkPhysicalDeviceExtendedDynamicStateFeaturesEXT - Structure describing what extended dynamic state can be usedMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported.  can also be used in the pNext chain of   to enable features.Valid Usage (Implicit)See Alsoo, *~vulkanextendedDynamicStateJ indicates that the implementation supports the following dynamic states: lll l l lllllll*vulkan0vkCmdSetCullModeEXT - Set the cull mode property Valid Usage The  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit) commandBuffer must be a valid  handlecullMode must be a valid combination of E values commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also, D*vulkan2vkCmdSetFrontFaceEXT - Set the front face property Valid Usage The  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit) commandBuffer must be a valid  handle frontFace must be a valid K value commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also, K*vulkan?vkCmdSetPrimitiveTopologyEXT - Set the primitive topology state Valid Usage The  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit) commandBuffer must be a valid  handleprimitiveTopology must be a valid Y value commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also, Y*vulkanCvkCmdSetViewportWithCountEXT - Set the viewport count and viewports Valid Usage The  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabled viewportCount must be between 1 and  l:: maxViewports, inclusive If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  viewportCount must be 1Valid Usage (Implicit) commandBuffer must be a valid  handle pViewports must( be a valid pointer to an array of  viewportCount valid  structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations viewportCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also, *vulkan@vkCmdSetScissorWithCountEXT - Set the scissor count and scissors Valid Usage The  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabled scissorCount must be between 1 and  l:: maxViewports, inclusive If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  scissorCount must be 1The x and y members of offset member of any element of  pScissors must be greater than or equal to 0Evaluation of (offset.x +  extent.width) mustF not cause a signed integer addition overflow for any element of  pScissorsEvaluation of (offset.y +  extent.height) mustF not cause a signed integer addition overflow for any element of  pScissorsValid Usage (Implicit) commandBuffer must be a valid  handle pScissors must# be a valid pointer to an array of  scissorCount p structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations scissorCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also, p*vulkanDvkCmdBindVertexBuffers2EXT - Bind vertex buffers to a command buffer Description$The values taken from elements i of pBuffers and pOffsets9 replace the current state for the vertex input binding  firstBinding + i, for i in [0,  bindingCountL). The vertex input binding is updated to start at the offset indicated by pOffsets"[i] from the start of the buffer pBuffers[i] If pSizes is not NULL then pSizes[i] specifies the bound size of the corresponding vertex buffer. All vertex input attributes that use each of these bindings will use these updated addresses in their address calculations for subsequent draw commands.9If the bound pipeline state object was created with the l dynamic state enabled then pStridesz[i] specifies the distance in bytes between two consecutive elements within the corresponding buffer. In this case the 7::stride2 state from the pipeline state object is ignored. Valid Usage firstBinding must be less than  l::maxVertexInputBindings  The sum of  firstBinding and  bindingCount must$ be less than or equal to  l::maxVertexInputBindingsAll elements of pOffsets must< be less than the size of the corresponding element in pBuffersIf pSizes is not NULL, all elements of pOffsets plus pSizes mustH be less than or equal to the size of the corresponding element in pBuffersAll elements of pBuffers must! have been created with the zz flagEach element of pBuffers that is non-sparse must< be bound completely and contiguously to a single /8 object If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor. feature is not enabled, all elements of pBuffers must not be If an element of pBuffers is ), then the corresponding element of pOffsets must be zero=If the bound pipeline state object was created with the l! dynamic state enabled then pStrides must not be NULL, otherwise pStrides must be NULLIf pStrides is not NULL each element of pStrides must$ be less than or equal to  l::maxVertexInputBindingStrideIf pStrides is not NULL each element of pStrides must be greater than or equal to the maximum extent of of all vertex input attributes fetched from the corresponding binding, where the extent is calculated as the VkVertexInputAttributeDescription::offset plus VkVertexInputAttributeDescription::format sizeValid Usage (Implicit) commandBuffer must be a valid  handlepBuffers must# be a valid pointer to an array of  bindingCount valid  handlespOffsets must# be a valid pointer to an array of  bindingCount m valuesIf pSizes is not NULL, pSizes must( be a valid pointer to an array of  bindingCount m valuesIf pStrides is not NULL, pStrides must( be a valid pointer to an array of  bindingCount m values commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations If any of pSizes, or pStrides are not NULL,  bindingCount must be greater than 0Both of  commandBuffer, and the elements of pBuffers mustD have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also, , m*vulkanLvkCmdSetDepthTestEnableEXT - Set the depth test enable for a command buffer DescriptionZThis command sets the state for a given draw when the graphics pipeline is created with l set in 7::pDynamicStates. Valid Usage The  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Alsoo, *vulkanPvkCmdSetDepthWriteEnableEXT - Set the depth write enable for the command buffer DescriptionZThis command sets the state for a given draw when the graphics pipeline is created with l set in 7::pDynamicStates. Valid Usage The  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Alsoo, *vulkanUvkCmdSetDepthCompareOpEXT - Set the depth comparison operator for the command buffer DescriptionZThis command sets the state for a given draw when the graphics pipeline is created with l set in 7::pDynamicStates. Valid Usage The  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit) commandBuffer must be a valid  handledepthCompareOp must be a valid C value commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also, C*vulkanYvkCmdSetDepthBoundsTestEnableEXT - Set the depth bounds test enable for a command buffer DescriptionZThis command sets the state for a given draw when the graphics pipeline is created with l set in 7::pDynamicStates. Valid Usage The  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Alsoo, *vulkanRvkCmdSetStencilTestEnableEXT - Set the stencil test enable for the command buffer DescriptionZThis command sets the state for a given draw when the graphics pipeline is created with l set in 7::pDynamicStates. Valid Usage The  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Alsoo, *vulkanGvkCmdSetStencilOpEXT - Set the stencil operation for the command buffer DescriptionZThis command sets the state for a given draw when the graphics pipeline is created with l set in 7::pDynamicStates. Valid Usage The  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit) commandBuffer must be a valid  handlefaceMask must be a valid combination of e valuesfaceMask must not be 0failOp must be a valid f valuepassOp must be a valid f value depthFailOp must be a valid f value compareOp must be a valid C value commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also, C, d, f *vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkancullMode5 specifies the cull mode property to use for drawing.*vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkan frontFace6 specifies the front face property to use for drawing.*vulkan commandBuffer@ is the command buffer into which the command will be recorded.*vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkan pViewports, specifies the viewports to use for drawing.*vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkan pScissors+ specifies the scissors to use for drawing.*vulkan commandBuffer; is the command buffer into which the command is recorded.vulkan firstBindingW is the index of the first vertex input binding whose state is updated by the command.vulkanpBuffers, is a pointer to an array of buffer handles.vulkanpOffsets, is a pointer to an array of buffer offsets.vulkanpSizes is optional, and when not NULL+ is a pointer to an array of buffer sizes.vulkanpStrides is optional, and when not NULL- is a pointer to an array of buffer strides.*vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkandepthTestEnable( specifies if the depth test is enabled.*vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkandepthWriteEnable' specifies if depth writes are enabled.*vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkandepthCompareOp) specifies the depth comparison operator.*vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkandepthBoundsTestEnable/ specifies if the depth bounds test is enabled.*vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanstencilTestEnable* specifies if the stencil test is enabled.*vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanfaceMaskv is a bitmask of VkStencilFaceFlagBits specifying the set of stencil state for which to update the stencil operation.vulkanfailOp is a fN value specifying the action performed on samples that fail the stencil test.vulkanpassOp is a f_ value specifying the action performed on samples that pass both the depth and stencil tests.vulkan depthFailOp is a fg value specifying the action performed on samples that pass the stencil test and fail the depth test.vulkan compareOp is a CD value specifying the comparison operator used in the stencil test.*}*~*{*|***************************}*~*|**{*6None("#%&'-./1789;=>?FHIMSUVX_dghklmqjk0vulkanAVkSubpassDescription - Structure specifying a subpass description DescriptionEach element of the pInputAttachments array corresponds to an input attachment index in a fragment shader, i.e. if a shader declares an image variable decorated with a InputAttachmentIndex value of X+, then it uses the attachment provided in pInputAttachments[X]. Input attachments must< also be bound to the pipeline in a descriptor set. If the  attachment member of any element of pInputAttachments is l, the application mustL not read from the corresponding input attachment index. Fragment shaders can use subpass input variables to access the contents of an input attachment at the fragment s (x, y, layer) framebuffer coordinates. Input attachments mustA not be used by any subpasses within a renderpass that enables  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transformrender pass transform.Each element of the pColorAttachmentsz array corresponds to an output location in the shader, i.e. if the shader declares an output variable decorated with a Location value of X+, then it uses the attachment provided in pColorAttachments[X ]. If the  attachment member of any element of pColorAttachments is lD, writes to the corresponding location by a fragment are discarded.If flags does not include  1 , and if pResolveAttachments is not NULLJ, each of its elements corresponds to a color attachment (the element in pColorAttachmentsj at the same index), and a multisample resolve operation is defined for each attachment. At the end of each subpass, multisample resolve operations read the subpass s color attachments, and resolve the samples for each pixel within the render area to the same pixel location in the corresponding resolve attachments, unless the resolve attachment index is l.Similarly, if flags does not include  1, and dQ::pDepthStencilResolveAttachment is not NULL and does not have the value l5, it corresponds to the depth/stencil attachment in pDepthStencilAttachmentL, and multisample resolve operations for depth and stencil are defined by dQ::depthResolveMode and dQ::stencilResolveMode, respectively. At the end of each subpass, multisample resolve operations read the subpass s depth/stencil attachment, and resolve the samples for each pixel to the same pixel location in the corresponding resolve attachment. If dQ::depthResolveMode is 1x, then the depth component of the resolve attachment is not written to and its contents are preserved. Similarly, if dQ::stencilResolveMode is 1l, then the stencil component of the resolve attachment is not written to and its contents are preserved. dQ::depthResolveMode is ignored if the J of the pDepthStencilResolveAttachment/ does not have a depth component. Similarly, dQ::stencilResolveMode is ignored if the J of the pDepthStencilResolveAttachment# does not have a stencil component.\If the image subresource range referenced by the depth/stencil attachment is created with  \, then the multisample resolve operation uses the sample locations state specified in the sampleLocationsInfo member of the element of the <::pPostSubpassSampleLocations for the subpass.If pDepthStencilAttachment is NULL!, or if its attachment index is lM, it indicates that no depth/stencil attachment will be used in the subpass.aThe contents of an attachment within the render area become undefined at the start of a subpass S. if all of the following conditions are true:oThe attachment is used as a color, depth/stencil, or resolve attachment in any subpass in the render pass.There is a subpass S1K that uses or preserves the attachment, and a subpass dependency from S1 to S.3The attachment is not used or preserved in subpass S.nIn addition, the contents of an attachment within the render area become undefined at the start of a subpass S. if all of the following conditions are true: 1 is set.BThe attachment is used as a color or depth/stencil in the subpass.?Once the contents of an attachment become undefined in subpass S[, they remain undefined for subpasses in subpass dependency chains starting with subpass S until they are written again. However, they remain valid for subpasses in other subpass dependency chains starting with subpass S13 if those subpasses use or preserve the attachment. Valid UsagepipelineBindPoint must be colorAttachmentCount must be less than or equal to  l::maxColorAttachmentsIf the first use of an attachment in this render pass is as an input attachment, and the attachment is not also used as a color or depth/stencil attachment in the same subpass, then loadOp must not be If pResolveAttachments is not NULL/, for each resolve attachment that is not l*, the corresponding color attachment must not be lIf pResolveAttachments is not NULL/, for each resolve attachment that is not l*, the corresponding color attachment must! not have a sample count of %If pResolveAttachments is not NULL+, each resolve attachment that is not l must" have a sample count of %If pResolveAttachments is not NULL+, each resolve attachment that is not l must have the same J+ as its corresponding color attachmentAll attachments in pColorAttachments that are not l must have the same sample countAll attachments in pInputAttachments that are not l must$ have image formats whose  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features contain at least g or gAll attachments in pColorAttachments that are not l must$ have image formats whose  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features contain gAll attachments in pResolveAttachments that are not l must$ have image formats whose  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features contain gIf pDepthStencilAttachment is not NULL and the attachment is not l then it must% have a image format whose  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features contain gIf the VK_AMD_mixed_attachment_samples3 extension is enabled, and all attachments in pColorAttachments that are not l mustT have a sample count that is smaller than or equal to the sample count of pDepthStencilAttachment if it is not lIf neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples% extensions are enabled, and if pDepthStencilAttachment is not l and any attachments in pColorAttachments are not l, they must have the same sample countThe  attachment member of each element of pPreserveAttachments must not be lEach element of pPreserveAttachments mustK not also be an element of any other member of the subpass description+If any attachment is used by more than one  member, then each use must use the same layoutIf flags includes  / , it must also include  .If flags includes  1, and if pResolveAttachments is not NULL$, then each resolve attachment must be lIf flags includes  1, and if !pDepthStencilResolveAttachmentKHR is not NULL1, then the depth/stencil resolve attachment must be lIf flags includes  1, then the subpass must7 be the last subpass in a subpass dependency chainIf flags includes  06, then the sample count of the input attachments must equal rasterizationSamplesIf flags includes  0, and if sampleShadingEnable1 is enabled (explicitly or implicitly) then minSampleShading must equal 0.0(If the render pass is created with   each of the elements of pInputAttachments must be lValid Usage (Implicit)flags must be a valid combination of  , valuespipelineBindPoint must be a valid V valueIf inputAttachmentCount is not 0, pInputAttachments must( be a valid pointer to an array of inputAttachmentCount valid  structuresIf colorAttachmentCount is not 0, pColorAttachments must( be a valid pointer to an array of colorAttachmentCount valid  structuresIf colorAttachmentCount is not 0, and pResolveAttachments is not NULL, pResolveAttachments must( be a valid pointer to an array of colorAttachmentCount valid  structuresIf pDepthStencilAttachment is not NULL, pDepthStencilAttachment must$ be a valid pointer to a valid  structureIf preserveAttachmentCount is not 0, pPreserveAttachments must# be a valid pointer to an array of preserveAttachmentCount uint32_t valuesSee Also, V, ,  +vulkan?VkSubpassDependency - Structure specifying a subpass dependency DescriptionIf  srcSubpass is equal to  dstSubpass then the  describes a  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-barriers-subpass-self-dependenciessubpass self-dependency, and only constrains the pipeline barriers allowed within a subpass instance. Otherwise, when a render pass instance which includes a subpass dependency is submitted to a queue, it defines a memory dependency between the subpasses identified by  srcSubpass and  dstSubpass.If  srcSubpass is equal to  , the first  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope+ includes commands that occur earlier in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order than the  used to begin the render pass instance. Otherwise, the first set of commands includes all commands submitted as part of the subpass instance identified by  srcSubpassO and any load, store or multisample resolve operations on attachments used in  srcSubpassw. In either case, the first synchronization scope is limited to operations on the pipeline stages determined by the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-maskssource stage mask specified by  srcStageMask.If  dstSubpass is equal to , the second  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope) includes commands that occur later in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order than the  used to end the render pass instance. Otherwise, the second set of commands includes all commands submitted as part of the subpass instance identified by  dstSubpassO and any load, store or multisample resolve operations on attachments used in  dstSubpassx. In either case, the second synchronization scope is limited to operations on the pipeline stages determined by the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masksdestination stage mask specified by  dstStageMask. The first  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopeA is limited to access in the pipeline stages determined by the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-maskssource stage mask specified by  srcStageMask-. It is also limited to access types in the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-maskssource access mask specified by  srcAccessMask. The second  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopeA is limited to access in the pipeline stages determined by the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masksdestination stage mask specified by  dstStageMask-. It is also limited to access types in the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masksdestination access mask specified by  dstAccessMask.The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible&availability and visibility operations; defined by a subpass dependency affect the execution of  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-layout-transitionsimage layout transitions within the render pass.NotewFor non-attachment resources, the memory dependency expressed by subpass dependency is nearly identical to that of a 5t (with matching  srcAccessMask and  dstAccessMask' parameters) submitted as a part of a  (with matching  srcStageMask and  dstStageMask parameters). The only difference being that its scopes are limited to the identified subpasses rather than potentially affecting everything before and after.@For attachments however, subpass dependencies work more like a 5W defined similarly to the 5t) above, the queue family indices set to , and layouts as follows:The equivalent to  oldLayoutJ is the attachment s layout according to the subpass description for  srcSubpass.The equivalent to  newLayoutJ is the attachment s layout according to the subpass description for  dstSubpass. Valid Usage If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  srcStageMask must not contain  If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  dstStageMask must not contain  If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  srcStageMask must not contain  or  If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  dstStageMask must not contain  or  srcSubpass must be less than or equal to  dstSubpass, unless one of them is F, to avoid cyclic dependencies and ensure a valid execution order srcSubpass and  dstSubpass must not both be equal to If  srcSubpass is equal to  dstSubpass# and not all of the stages in  srcStageMask and  dstStageMask are  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regionsframebuffer-space stages, the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically latest pipeline stage in  srcStageMask must be  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically earlier than or equal to the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically earliest pipeline stage in  dstStageMaskAny access flag included in  srcAccessMask must4 be supported by one of the pipeline stages in  srcStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesAny access flag included in  dstAccessMask must4 be supported by one of the pipeline stages in  dstStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesIf  srcSubpass equals  dstSubpass, and  srcStageMask and  dstStageMask both include a  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regionsframebuffer-space stage , then dependencyFlags must include DIf dependencyFlags includes C,  srcSubpass must not be equal to If dependencyFlags includes C,  dstSubpass must not be equal to If  srcSubpass equals  dstSubpassH and that subpass has more than one bit set in the view mask, then dependencyFlags must include C If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  srcStageMask must not contain  If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  srcStageMask must not contain  If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  dstStageMask must not contain  If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  dstStageMask must not contain Valid Usage (Implicit) srcStageMask must be a valid combination of  values srcStageMask must not be 0 dstStageMask must be a valid combination of  values dstStageMask must not be 0 srcAccessMask must be a valid combination of  values dstAccessMask must be a valid combination of  valuesdependencyFlags must be a valid combination of G valuesSee Also, F, W, vulkanXVkRenderPassCreateInfo - Structure specifying parameters of a newly created render pass DescriptionNoteCare should be taken to avoid a data race here; if any subpasses access attachments with overlapping memory locations, and one of those accesses is a write, a subpass dependency needs to be included between them. Valid UsageIf the  attachment member of any element of pInputAttachments, pColorAttachments, pResolveAttachments or pDepthStencilAttachment, or any element of pPreserveAttachments in any element of  pSubpasses is not l, it must be less than attachmentCountFor any member of  pAttachments with a loadOp equal to (, the first use of that attachment must not specify a layout equal to  or mFor any member of  pAttachments with a  stencilLoadOp equal to (, the first use of that attachment must not specify a layout equal to  or mFor any member of  pAttachments with a loadOp equal to (, the first use of that attachment must not specify a layout equal to nFor any member of  pAttachments with a  stencilLoadOp equal to (, the first use of that attachment must not specify a layout equal to oIf the pNext chain includes a  structure, the subpass$ member of each element of its pAspectReferences member must be less than  subpassCountIf the pNext chain includes a  structure, the inputAttachmentIndex$ member of each element of its pAspectReferences member must be less than the value of inputAttachmentCount in the member of  pSubpasses identified by its subpass memberIf the pNext chain includes a ( structure, for any element of the pInputAttachments member of any element of  pSubpasses where the  attachment member is not l, the  aspectMask2 member of the corresponding element of ::pAspectReferences must` only include aspects that are present in images of the format specified by the element of  pAttachments at  attachmentIf the pNext chain includes a   structure, and its  subpassCount& member is not zero, that member must be equal to the value of  subpassCountIf the pNext chain includes a   structure, if its dependencyCount member is not zero, it must be equal to dependencyCountIf the pNext chain includes a  . structure, for each non-zero element of  pViewOffsets , the  srcSubpass and  dstSubpass members of  pDependencies at the same index must not be equalIf the pNext chain includes a  $ structure, for any element of  pDependencies with a dependencyFlags# member that does not include C(, the corresponding element of the  pViewOffsets member of that   instance must be 0If the pNext chain includes a  ! structure, elements of its  pViewMasks member must either all be 0, or all not be 0If the pNext chain includes a  ) structure, and each element of its  pViewMasks member is 0 , the dependencyFlags member of each element of  pDependencies must not include CIf the pNext chain includes a  ) structure, and each element of its  pViewMasks member is 0, correlatedViewMaskCount must be 0If the pNext chain includes a  % structure, each element of its  pViewMask member mustC not have a bit set at an index greater than or equal to  l::maxFramebufferLayersFor any element of  pDependencies , if the  srcSubpass is not ', all stage flags included in the  srcStageMask member of that dependency must0 be a pipeline stage supported by the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-typespipeline identified by the pipelineBindPoint member of the source subpassFor any element of  pDependencies , if the  dstSubpass is not ', all stage flags included in the  dstStageMask member of that dependency must0 be a pipeline stage supported by the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-typespipeline identified by the pipelineBindPoint' member of the destination subpassThe  srcSubpass member of each element of  pDependencies must be less than  subpassCountThe  dstSubpass member of each element of  pDependencies must be less than  subpassCountValid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , , or  The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of   valuesIf attachmentCount is not 0,  pAttachments must( be a valid pointer to an array of attachmentCount valid  structures pSubpasses must# be a valid pointer to an array of  subpassCount valid  structuresIf dependencyCount is not 0,  pDependencies must( be a valid pointer to an array of dependencyCount valid  structures subpassCount must be greater than 0See Also,  , , , , *vulkanYVkFramebufferCreateInfo - Structure specifying parameters of a newly created framebuffer Description Applications must ensure that all accesses to memory that backs image subresources used as attachments in a given renderpass instance either happen-before the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-opsload operations. for those attachments, or happen-after the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-opsstore operations for those attachments.+For depth/stencil attachments, each aspect can be used separately as attachments and non-attachments as long as the non-attachment accesses are also via an image subresource in either the n layout or the oo layout, and the attachment resource uses whichever of those two layouts the image accesses do not. Use of non-attachment aspects in this case is only well defined if the attachment is used in the subpass where the non-attachment access is being made, or the layout of the image subresource is constant throughout the entire render pass instance, including the  initialLayout and  finalLayout.NoteThese restrictions mean that the render pass has full knowledge of all uses of all of the attachments, so that the implementation is able to make correct decisions about when and how to perform layout transitions, when to overlap execution of subpasses, etc.It is legal for a subpass to use no color or depth/stencil attachments, either because it has no attachment references or because all of them are l. This kind of subpass can use shader side effects such as image stores and atomics to produce an output. In this case, the subpass continues to use the width, height, and layersM of the framebuffer to define the dimensions of the rendering area, and the rasterizationSamples from each pipeline s 7F to define the number of samples used in rasterization; however, if  ::variableMultisampleRate is .3, then all pipelines to be bound with the subpass must have the same value for 7::rasterizationSamples. Valid UsageattachmentCount must4 be equal to the attachment count specified in  renderPass(If flags does not include  , and attachmentCount is not 0,  pAttachments must( be a valid pointer to an array of attachmentCount valid  handlesIf flags does not include , each element of  pAttachmentsB that is used as a color attachment or resolve attachment by  renderPass must have been created with a usage value including wIf flags does not include , each element of  pAttachments4 that is used as a depth/stencil attachment by  renderPass must have been created with a usage value including eIf flags does not include , each element of  pAttachments< that is used as a depth/stencil resolve attachment by  renderPass must have been created with a usage value including eIf flags does not include , each element of  pAttachments- that is used as an input attachment by  renderPass must have been created with a usage value including fEach element of  pAttachments; that is used as a fragment density map attachment by  renderPass must# not have been created with a flags value including If  renderPass0 has a fragment density map attachment and  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nonsubsampledimagesnon-subsample image feature& is not enabled, each element of  pAttachments must have been created with a flags value including @ unless that element is the fragment density map attachmentIf flags does not include , each element of  pAttachments must have been created with a J value that matches the J% specified by the corresponding  in  renderPassIf flags does not include , each element of  pAttachments must have been created with a samples value that matches the samples+ value specified by the corresponding  in  renderPassIf flags does not include , each element of  pAttachments must have dimensions at least as large as the corresponding framebuffer dimension except for any element that is referenced by fragmentDensityMapAttachmentIf  renderPass> was specified with non-zero view masks, each element of  pAttachments that is not referenced by fragmentDensityMapAttachment must have a  layerCount\ greater than the index of the most significant bit set in any of those view masksIf  renderPass> was specified with non-zero view masks, each element of  pAttachments that is referenced by fragmentDensityMapAttachment must have a  layerCount equal to 1Z or greater than the index of the most significant bit set in any of those view masksIf  renderPassB was not specified with non-zero view masks, each element of  pAttachments that is referenced by fragmentDensityMapAttachment must have a  layerCount equal to 1If flags does not include , an element of  pAttachments that is referenced by fragmentDensityMapAttachment must- have a width at least as large as J\left\lceil{\frac{width}{maxFragmentDensityTexelSize_{width}}}\right\rceilIf flags does not include , an element of  pAttachments that is referenced by fragmentDensityMapAttachment must. have a height at least as large as L\left\lceil{\frac{height}{maxFragmentDensityTexelSize_{height}}}\right\rceilIf flags does not include , each element of  pAttachments must% only specify a single mip levelIf flags does not include , each element of  pAttachments must1 have been created with the identity swizzlewidth must be greater than 0width must be less than or equal to  l::maxFramebufferWidthheight must be greater than 0height must be less than or equal to  l::maxFramebufferHeightlayers must be greater than 0layers must be less than or equal to  l::maxFramebufferLayersIf  renderPass) was specified with non-zero view masks, layers must be 1If flags does not include , each element of  pAttachments@ that is a 2D or 2D array image view taken from a 3D image must not be a depth/stencil format If the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-imagelessFramebufferimageless framebuffer feature is not enabled, flags must not include If flags includes  , the pNext chain must include a 9 structureIf flags includes  , the attachmentImageInfoCount member of a 9 structure included in the pNext chain must! be equal to either zero or attachmentCountIf flags includes  , the width member of any element of the pAttachmentImageInfos member of a 9 structure included in the pNext chain must" be greater than or equal to width4, except for any element that is referenced by ::fragmentDensityMapAttachment in  renderPassIf flags includes  , the height member of any element of the pAttachmentImageInfos member of a 9 structure included in the pNext chain must" be greater than or equal to height4, except for any element that is referenced by ::fragmentDensityMapAttachment in  renderPassIf flags includes  , the width member of any element of the pAttachmentImageInfos member of a 9 structure included in the pNext" chain that is referenced by ::fragmentDensityMapAttachment in  renderPass must" be greater than or equal to J\left\lceil{\frac{width}{maxFragmentDensityTexelSize_{width}}}\right\rceilIf flags includes  , the height member of any element of the pAttachmentImageInfos member of a 9 structure included in the pNext" chain that is referenced by ::fragmentDensityMapAttachment in  renderPass must" be greater than or equal to L\left\lceil{\frac{height}{maxFragmentDensityTexelSize_{height}}}\right\rceilIf multiview is enabled for  renderPass, and flags includes  , the  layerCount# member of any element of the pAttachmentImageInfos member of a 9 structure included in the pNext chain mustn be greater than the maximum bit index set in the view mask in the subpasses in which it is used in  renderPass If multiview is not enabled for  renderPass, and flags includes  , the  layerCount# member of any element of the pAttachmentImageInfos member of a 9 structure included in the pNext chain must" be greater than or equal to layersIf flags includes  , the usage member of any element of the pAttachmentImageInfos member of a 9 structure included in the pNext] chain that refers to an attachment used as a color attachment or resolve attachment by  renderPass must include wIf flags includes  , the usage member of any element of the pAttachmentImageInfos member of a 9 structure included in the pNextO chain that refers to an attachment used as a depth/stencil attachment by  renderPass must include eIf flags includes  , the usage member of any element of the pAttachmentImageInfos member of a 9 structure included in the pNextW chain that refers to an attachment used as a depth/stencil resolve attachment by  renderPass must include eIf flags includes  , the usage member of any element of the pAttachmentImageInfos member of a 9 structure included in the pNextH chain that refers to an attachment used as an input attachment by  renderPass must include fIf flags includes #, at least one element of the  pViewFormats# member of any element of the pAttachmentImageInfos member of a 9 structure included in the pNext chain must- be equal to the corresponding value of ::format used to create  renderPassIf flags does not include , each element of  pAttachments must have been created with 1`::viewType not equal to `Valid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of 9The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of  values renderPass must be a valid x handleBoth of  renderPass, and the elements of  pAttachments7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Also, , x, , *vulkanDVkAttachmentReference - Structure specifying an attachment reference Valid UsageIf  attachment is not l, layout must not be p, q, H, c, c, c, or cValid Usage (Implicit)layout must be a valid N valueSee AlsoN, , vulkanHVkAttachmentDescription - Structure specifying an attachment description Description,If the attachment uses a color format, then loadOp and storeOp are used, and  stencilLoadOp and stencilStoreOpB are ignored. If the format has depth and/or stencil components, loadOp and storeOp& apply only to the depth data, while  stencilLoadOp and stencilStoreOp* define how the stencil data is handled. loadOp and  stencilLoadOp define the load operationsF that execute as part of the first subpass that uses the attachment. storeOp and stencilStoreOp define the store operationsD that execute as part of the last subpass that uses the attachment.The load operation for each sample in an attachment happens-before any recorded command which accesses the sample in the first subpass where the attachment is used. Load operations for attachments with a depth/stencil format execute in the W pipeline stage. Load operations for attachments with a color format execute in the  pipeline stage.The store operation for each sample in an attachment happens-after any recorded command which accesses the sample in the last subpass where the attachment is used. Store operations for attachments with a depth/stencil format execute in the X pipeline stage. Store operations for attachments with a color format execute in the  pipeline stage.2If an attachment is not used by any subpass, then loadOp, storeOp, stencilStoreOp, and  stencilLoadOpq are ignored, and the attachment s memory contents will not be modified by execution of a render pass instance.aThe load and store operations apply on the first and last use of each view in the render pass, respectively. If a view index of an attachment is not included in the view mask in any subpass that uses it, then the load and store operations are ignored, and the attachment s memory contents will not be modified by execution of a render pass instance.{During a render pass instance, input/color attachments with color formats that have a component size of 8, 16, or 32 bits must be represented in the attachment s format throughout the instance. Attachments with other floating- or fixed-point color formats, or with depth components mayU be represented in a format with a precision higher than the attachment format, but mustN be represented with the same range. When such a component is loaded via the loadOpj, it will be converted into an implementation-dependent format used by the render pass. Such components must be converted from the render pass format, to the format of the attachment, before they are resolved or stored at the end of a render pass instance via storeOp&. Conversions occur as described in  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-numerics&Numeric Representation and Computation and  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-fixedconvFixed-Point Data Conversions.If flags includes , then the attachment is treated as if it shares physical memory with another attachment in the same render pass. This information limits the ability of the implementation to reorder certain operations (like layout transitions and the loadOp) such that it is not improperly reordered against other uses of the same physical memory via a different attachment. This is described in more detail below.aIf a render pass uses multiple attachments that alias the same device memory, those attachments must each include the k bit in their attachment description flags. Attachments aliasing the same memory occurs in multiple ways:]Multiple attachments being assigned the same image view as part of framebuffer creation.fAttachments using distinct image views that correspond to the same image subresource of an image.iAttachments using views of distinct image subresources which are bound to overlapping memory ranges.NoteRender passes must include subpass dependencies (either directly or via a subpass dependency chain) between any two subpasses that operate on the same attachment or aliasing attachments and those subpass dependencies must include execution and memory dependencies separating uses of the aliases, if at least one of those subpasses writes to one of the aliases. These dependencies must not include the DS if the aliases are views of distinct image subresources which overlap in memory.0Multiple attachments that alias the same memory must< not be used in a single subpass. A given attachment index must_ not be used multiple times in a single subpass, with one exception: two subpass attachments can use the same attachment index if at least one use is as an input attachment and neither use is as a resolve or preserve attachment. In other words, the same view canP be used simultaneously as an input and color or depth/stencil attachment, but must not be used as multiple color or depth/stencil attachments nor as resolve or preserve attachments. The precise set of valid scenarios is described in more detail  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloopbelow.cIf a set of attachments alias each other, then all except the first to be used in the render pass must use an  initialLayout of p, since the earlier uses of the other aliases make their contents undefined. Once an alias has been used and a different alias has been used after it, the first alias must> not be used in any later subpasses. However, an application can assign the same image view to multiple aliasing attachment indices, which allows that image view to be used multiple times even if other aliases are used in between.NoteOnce an attachment needs the  bit, there should^ be no additional cost of introducing additional aliases, and using these additional aliases mayI allow more efficient clearing of the attachments on multiple uses via . Valid Usage finalLayout must not be p or qIf format is a color format,  initialLayout must not be , m, o, or nIf format is a depth/stencil format,  initialLayout must not be If format is a color format,  finalLayout must not be , m, o, or nIf format is a depth/stencil format,  finalLayout must not be  If the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts feature is not enabled,  initialLayout must not be , , , or  If the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts feature is not enabled,  finalLayout must not be , , , or If format is a color format,  initialLayout must not be , , , or If format is a color format,  finalLayout must not be , , , or If formatO is a depth/stencil format which includes both depth and stencil aspects,  initialLayout must not be , , , or If formatO is a depth/stencil format which includes both depth and stencil aspects,  finalLayout must not be , , , or If formatF is a depth/stencil format which includes only the depth aspect,  initialLayout must not be  or If formatF is a depth/stencil format which includes only the depth aspect,  finalLayout must not be  or If formatH is a depth/stencil format which includes only the stencil aspect,  initialLayout must not be  or If formatH is a depth/stencil format which includes only the stencil aspect,  finalLayout must not be  or Valid Usage (Implicit)flags must be a valid combination of  valuesformat must be a valid J valuesamples must be a valid a valueloadOp must be a valid  valuestoreOp must be a valid y value stencilLoadOp must be a valid  valuestencilStoreOp must be a valid y value initialLayout must be a valid N value finalLayout must be a valid N valueSee Also, , y, J, N, , a*vulkanpNext is NULL6 or a pointer to a structure extending this structure.*vulkanflags is a bitmask of *vulkan renderPass] is a render pass defining what render passes the framebuffer will be compatible with. See  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibilityRender Pass Compatibility for details.*vulkan pAttachments is a pointer to an array of d handles, each of which will be used as the corresponding attachment in a render pass instance. If flags includes , this parameter is ignored.*vulkanwidth, height and layersT define the dimensions of the framebuffer. If the render pass uses multiview, then layers must be one and each attachment requires a number of layers that is greater than the maximum bit index set in the view mask in the subpasses in which it is used.*vulkanpNext is NULL6 or a pointer to a structure extending this structure.*vulkanflags is a bitmask of  *vulkan pAttachments is a pointer to an array of attachmentCount @ structures describing the attachments used by the render pass.*vulkan pSubpasses is a pointer to an array of  subpassCount $ structures describing each subpass.*vulkan pDependencies is a pointer to an array of dependencyCount @ structures describing dependencies between pairs of subpasses.*vulkan srcSubpassB is the subpass index of the first subpass in the dependency, or .*vulkan dstSubpassC is the subpass index of the second subpass in the dependency, or .*vulkan srcStageMask is a bitmask of  specifying the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-maskssource stage mask.*vulkan dstStageMask is a bitmask of  specifying the shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masksdestination stage mask*vulkan srcAccessMask is a bitmask of  specifying a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-maskssource access mask.*vulkan dstAccessMask is a bitmask of  specifying a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masksdestination access mask.*vulkandependencyFlags is a bitmask of G.*vulkanflags is a bitmask of  ," specifying usage of the subpass.*vulkanpipelineBindPoint is a V@ value specifying the pipeline type supported for this subpass.*vulkanpInputAttachments is a pointer to an array of P structures defining the input attachments for this subpass and their layouts.*vulkanpColorAttachments is a pointer to an array of P structures defining the color attachments for this subpass and their layouts.*vulkanpResolveAttachments is an optional array of colorAttachmentCount Q structures defining the resolve attachments for this subpass and their layouts.*vulkanpDepthStencilAttachment is a pointer to a U structure specifying the depth/stencil attachment for this subpass and its layout.*vulkanpPreserveAttachments is a pointer to an array of preserveAttachmentCounto render pass attachment indices identifying attachments that are not used by this subpass, but whose contents must& be preserved throughout the subpass.*vulkan attachmentU is either an integer value identifying an attachment at the corresponding index in :: pAttachments, or l. to signify that this attachment is not used.*vulkanlayout is a NE value specifying the layout the attachment uses during the subpass.*vulkanflags is a bitmask of 5 specifying additional properties of the attachment.*vulkanformat is a JU value specifying the format of the image view that will be used for the attachment.*vulkansamples6 is the number of samples of the image as defined in a.*vulkanloadOp is a  value specifying how the contents of color and depth components of the attachment are treated at the beginning of the subpass where it is first used.*vulkanstoreOp is a y value specifying how the contents of color and depth components of the attachment are treated at the end of the subpass where it is last used.*vulkan stencilLoadOp is a  value specifying how the contents of stencil components of the attachment are treated at the beginning of the subpass where it is first used.*vulkanstencilStoreOp is a y value specifying how the contents of stencil components of the attachment are treated at the end of the last subpass where it is used.*vulkan initialLayout_ is the layout the attachment image subresource will be in when a render pass instance begins.*vulkan finalLayoutj is the layout the attachment image subresource will be transitioned to when a render pass instance ends.*vulkan5vkCreateFramebuffer - Create a new framebuffer object Valid UsageIf pCreateInfo->flags does not include  , and attachmentCount is not 0, each element of pCreateInfo->pAttachments must have been created on deviceValid Usage (Implicit)device must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pFramebuffer must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , *vulkan=A convenience wrapper to make a compatible pair of calls to * and *To ensure that * is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.*vulkan3vkDestroyFramebuffer - Destroy a framebuffer object Valid Usage%All submitted commands that refer to  framebuffer must have completed executionIf  were provided when  framebuffer1 was created, a compatible set of callbacks must be provided hereIf no  were provided when  framebuffer was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid  handleIf  framebuffer is not ,  framebuffer must be a valid  handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf  framebuffer is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  framebuffer must be externally synchronizedSee Also, , *vulkan4vkCreateRenderPass - Create a new render pass objectValid Usage (Implicit)device must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pRenderPass must be a valid pointer to a x handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , x, *vulkan=A convenience wrapper to make a compatible pair of calls to * and *To ensure that * is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.*vulkan2vkDestroyRenderPass - Destroy a render pass object Valid Usage%All submitted commands that refer to  renderPass must have completed executionIf  were provided when  renderPass1 was created, a compatible set of callbacks must be provided hereIf no  were provided when  renderPass was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid  handleIf  renderPass is not ,  renderPass must be a valid x handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf  renderPass is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  renderPass must be externally synchronizedSee Also, , x*vulkanMvkGetRenderAreaGranularity - Returns the granularity for optimal render area Description%The conditions leading to an optimal  renderArea are:the offset.x member in  renderArea is a multiple of the width member of the returned t# (the horizontal granularity).the offset.y member in  renderArea is a multiple of the height of the returned t! (the vertical granularity). either the  offset.width member in  renderArea5 is a multiple of the horizontal granularity or offset.x+ offset.width is equal to the width of the  framebuffer in the 6. either the  offset.height member in  renderArea3 is a multiple of the vertical granularity or offset.y+ offset.height is equal to the height of the  framebuffer in the 6.Subpass dependencies are not affected by the render area, and apply to the entire image subresources attached to the framebuffer as specified in the description of  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-layout-transitionsautomatic layout transitions`. Similarly, pipeline barriers are valid even if their effect extends outside the render area.Valid Usage (Implicit)device must be a valid  handle renderPass must be a valid x handle pGranularity must be a valid pointer to a t structure renderPass must6 have been created, allocated, or retrieved from deviceSee Also, t, x*vulkandevice4 is the logical device that creates the framebuffer.vulkan pCreateInfo is a pointer to a I structure describing additional information about framebuffer creation.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.*vulkandevice5 is the logical device that destroys the framebuffer.vulkan framebuffer- is the handle of the framebuffer to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.*vulkandevice4 is the logical device that creates the render pass.vulkan pCreateInfo is a pointer to a 9 structure describing the parameters of the render pass.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.*vulkandevice5 is the logical device that destroys the render pass.vulkan renderPass- is the handle of the render pass to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.*vulkandevice1 is the logical device that owns the render pass.vulkan renderPass is a handle to a render pass.FGADCBVx ******************************************* + , - 1 0 / . yz}|{*******Ų************************************************** xyz}|{}|{V GADCBDCBF , - 1 0 / . 1 0 / . +None("#%&'-./1789;=>?FHIMSUVX_dghklmqj vulkansVkRenderPassFragmentDensityMapCreateInfoEXT - Structure containing fragment density map attachment for render pass DescriptionThe fragment density map is read at an implementation-dependent time with the following constraints determined by the attachment s image view flags:aZ specifies that the fragment density map will be read by the device during ]aS specifies that the fragment density map will be read by the host during rI of the primary command buffer that the render pass is recorded intoHOtherwise the fragment density map will be read by the host during The fragment density map may, additionally be read by the device during ] for any mode./If this structure is not present, it is as if fragmentDensityMapAttachment was given as l. Valid UsageIf fragmentDensityMapAttachment is not l, fragmentDensityMapAttachment must be less than 67::attachmentCountIf fragmentDensityMapAttachment is not l, fragmentDensityMapAttachment must not be an element of 6-::pInputAttachments, 6-::pColorAttachments, 6-::pResolveAttachments, 6-::pDepthStencilAttachment , or 6-::pPreserveAttachments for any subpassIf fragmentDensityMapAttachment is not l, layout must be equal to  , or If fragmentDensityMapAttachment is not l, fragmentDensityMapAttachment must% reference an attachment with a loadOp equal to  or If fragmentDensityMapAttachment is not l, fragmentDensityMapAttachment must% reference an attachment with a storeOp equal to Valid Usage (Implicit)sType must be FfragmentDensityMapAttachment must be a valid  structureSee Also, vulkanVkPhysicalDeviceFragmentDensityMapPropertiesEXT - Structure describing fragment density map properties that can be supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits:Valid Usage (Implicit)If the  structure is included in the pNext chain of TH, it is filled with the implementation-dependent limits and properties.See Alsoo, t, vulkanVkPhysicalDeviceFragmentDensityMapFeaturesEXT - Structure describing fragment density map features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TK, it is filled with values indicating whether each feature is supported.  can also be included in pNext chain of   to enable the features.Valid Usage (Implicit)See Alsoo, *vulkanfragmentDensityMapAttachment9 is the fragment density map to use for the render pass.*vulkanminFragmentDensityTexelSize is the minimum  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-fragment-density-texel-sizefragment density texel size.*vulkanmaxFragmentDensityTexelSize- is the maximum fragment density texel size.*vulkanfragmentDensityInvocations& specifies whether the implementation mayH invoke additional fragment shader invocations for each covered sample.*vulkanfragmentDensityMap specifies whether the implementation supports render passes with a fragment density map attachment. If this feature is not enabled and the pNext chain of 67 includes a  structure, fragmentDensityMapAttachment must be l.*vulkanfragmentDensityMapDynamic| specifies whether the implementation supports dynamic fragment density map image views. If this feature is not enabled, a must not be included in 1`::flags.*vulkan%fragmentDensityMapNonSubsampledImages specifies whether the implementation supports regular non-subsampled image attachments with fragment density map render passes. If this feature is not enabled, render passes with a  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachmentfragment density map attachment must only have  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-subsamplesamplersubsampled attachments bound.****************************3None("#%&'-./1789;=>?FHIMSUVX_dghklmqlvulkanNVkMemoryAllocateInfo - Structure containing parameters of a memory allocation DescriptionA 5 structure defines a memory import operation if its pNext0 chain includes one of the following structures:^ with non-zero  handleType value[ with a non-zero  handleType value with a non-zero  handleType value with a non-NULL buffer valueImporting memory must8 not modify the content of the memory. Implementations must ensure that importing memory does not enable the importing Vulkan instance to access any memory or resources in other Vulkan instances other than that corresponding to the memory object imported. Implementations must also ensure accessing imported memory which has not been initialized does not allow the importing Vulkan instance to obtain data from the exporting Vulkan instance or vice-versa.NoteHow exported and imported memory is isolated is left to the implementation, but applications should be aware that such isolation may prevent implementations from placing multiple exportable memory objects in the same physical or virtual page. Hence, applications shouldF avoid creating many small external memory objects whenever possible.When performing a memory import operation, it is the responsibility of the application to ensure the external handles meet all valid usage requirements. However, implementations mustn perform sufficient validation of external handles to ensure that the operation results in a valid memory object which will not cause program termination, device loss, queue stalls, or corruption of other resources when used as allowed according to its allocation parameters. If the external handle provided does not meet these requirements, the implementation must8 fail the memory import operation with the error code . Valid UsageIf the pNext chain includes a ? structure, and any of the handle types specified in :: handleTypes: require a dedicated allocation, as reported by Tc in P9::/externalMemoryProperties.externalMemoryFeatures or P6::/externalMemoryProperties.externalMemoryFeatures , the pNext chain must include a  or  structure with either its image or buffer' member set to a value other than .If the pNext chain includes a  structure, it must not include a  or  structureIf the pNext chain includes a ^ structure, it must not include a  structureIf the parameters define an import operation, the external handle specified was created by the Vulkan API, and the external handle type is , then the values of allocationSize and memoryTypeIndex mustR match those specified when the memory object being imported was createdIf the parameters define an import operation and the external handle specified was created by the Vulkan API, the device mask specified by  mustN match that specified when the memory object being imported was allocatedIf the parameters define an import operation and the external handle specified was created by the Vulkan API, the list of physical devices that comprise the logical device passed to + mustv match the list of physical devices that comprise the logical device on which the memory was originally allocatedIf the parameters define an import operation and the external handle is an NT handle or a global share handle created outside of the Vulkan API, the value of memoryTypeIndex must' be one of those returned by If the parameters define an import operation, the external handle was created by the Vulkan API, and the external handle type is  or , then the values of allocationSize and memoryTypeIndex mustR match those specified when the memory object being imported was createdWIf the parameters define an import operation and the external handle type is A, A, or A?, allocationSize must@ match the size reported in the memory requirements of the image or buffer member of the  structure included in the pNext chainWIf the parameters define an import operation and the external handle type is A>, allocationSize mustn match the size specified when creating the Direct3D 12 heap from which the external handle was extractedIf the parameters define an import operation and the external handle is a POSIX file descriptor created outside of the Vulkan API, the value of memoryTypeIndex must" be one of those returned by 9If the protected memory feature is not enabled, the ::memoryTypeIndex must3 not indicate a memory type that reports [WjIf the parameters define an import operation and the external handle is a host pointer, the value of memoryTypeIndex must' be one of those returned by ]If the parameters define an import operation and the external handle is a host pointer, allocationSize must be an integer multiple of ::minImportedHostPointerAlignmentaIf the parameters define an import operation and the external handle is a host pointer, the pNext chain must not include a  structure with either its image or buffer& field set to a value other than aIf the parameters define an import operation and the external handle is a host pointer, the pNext chain must not include a  structure with either its image or buffer& field set to a value other than WIf the parameters define an import operation and the external handle type is A, allocationSize must be the size returned by % for the Android hardware bufferWIf the parameters define an import operation and the external handle type is A, and the pNext chain does not include a  structure or ::image is #, the Android hardware buffer must have a AHardwareBuffer_Desc::format of AHARDWAREBUFFER_FORMAT_BLOB and a AHardwareBuffer_Desc::usage that includes %AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFERWIf the parameters define an import operation and the external handle type is A, memoryTypeIndex must" be one of those returned by % for the Android hardware buffer=If the parameters do not define an import operation, and the pNext chain includes a  structure with A included in its  handleTypes member, and the pNext chain includes a  structure with image not equal to , then allocationSize must be 0 , otherwise allocationSize must be greater than 0nIf the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext chain includes a  with image that is not *, the Android hardware buffer s ::usage must include at least one of %AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER or 'AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGEnIf the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext chain includes a  with image that is not , the format of image must be E% or the format returned by  in ::format% for the Android hardware buffernIf the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext chain includes a  structure with image that is not 8, the width, height, and array layer dimensions of image( and the Android hardware buffer s AHardwareBuffer_Desc must be identicalnIf the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext chain includes a  structure with image that is not ., and the Android hardware buffer s ::usage includes )AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE, the image must have a complete mipmap chainnIf the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext chain includes a  structure with image that is not ., and the Android hardware buffer s ::usage does not include )AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE , the image must have exactly one mipmap levelnIf the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext chain includes a  structure with image that is not $, each bit set in the usage of image must be listed in  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-usage!AHardwareBuffer Usage Equivalence', and if there is a corresponding AHARDWAREBUFFER_USAGE bit listed that bit must3 be included in the Android hardware buffer s AHardwareBuffer_Desc::usageIf '::opaqueCaptureAddress is not zero, ::flags must include 7If ::flags includes 7, the  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressCaptureReplay bufferDeviceAddressCaptureReplay feature must be enabledIf ::flags includes 7X, the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressbufferDeviceAddress feature must be enabledIf the pNext chain includes a  structure, '::opaqueCaptureAddress must be zero3If the parameters define an import operation, '::opaqueCaptureAddress must be zeroValid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , , , _, , , [, , ^, , , , ', or The sType value of each struct in the pNext chain must be uniqueSee Alsom, , +vulkan@VkMappedMemoryRange - Structure specifying a mapped memory range Valid Usagememory must be currently host mappedIf size is not equal to %, offset and size mustE specify a range contained within the currently mapped range of memoryIf size is equal to %, offset must) be within the currently mapped range of memoryIf size is equal to %), the end of the current mapping of memory must be a multiple of  l::nonCoherentAtomSize3 bytes from the beginning of the memory objectoffset must be a multiple of  l::nonCoherentAtomSizeIf size is not equal to %, size must either be a multiple of  l::nonCoherentAtomSize , or offset plus size must equal the size of memoryValid Usage (Implicit)sType must be pNext must be NULLmemory must be a valid  handleSee Also, m, , +, ++ vulkanmemory2 is the memory object to which this range belongs.+ vulkanoffsetH is the zero-based byte offset from the beginning of the memory object.+vulkansize" is either the size of range, or % to affect the range from offset5 to the end of the current mapping of the allocation.+vulkanpNext is NULL6 or a pointer to a structure extending this structure.+vulkanallocationSize' is the size of the allocation in bytes+vulkanmemoryTypeIndex1 is an index identifying a memory type from the  memoryTypes array of the  m structure+vulkan)vkAllocateMemory - Allocate device memory DescriptionAllocations returned by +% are guaranteed to meet any alignment requirement of the implementation. For example, if an implementation requires 128 byte alignment for images and 64 byte alignment for buffers, the device memory returned through this mechanism would be 128-byte aligned. This ensures that applications can correctly suballocate objects of different types (with potentially different alignment requirements) in the same memory object.TWhen memory is allocated, its contents are undefined with the following constraint:#The contents of unprotected memory mustr not be a function of data protected memory objects, even if those memory objects were previously freed.Note4The contents of memory allocated by one application should not be a function of data from protected memory objects of another application, even if those memory objects were previously freed.4The maximum number of valid memory allocations that can exist simultaneously within a  mayO be restricted by implementation- or platform-dependent limits. If a call to +` would cause the total number of allocations to exceed these limits, such a call will fail and must return . The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxMemoryAllocationCountmaxMemoryAllocationCount3 feature describes the number of allocations that canA exist simultaneously before encountering these internal limits.Some platforms mayX have a limit on the maximum size of a single allocation. For example, certain systems may fail to create allocations with a size greater than or equal to 4GB. Such a limit is implementation-dependent, and if such a failure occurs then the error  must, be returned. This limit is advertised in V::maxMemoryAllocationSize./The cumulative memory size allocated to a heap can be limited by the size of the specified heap. In such cases, allocated memory is tracked on a per-device and per-heap basis. Some platforms allow overallocation into other heaps. The overallocation behavior can be specified through the %VK_AMD_memory_overallocation_behavior extension. Valid UsagepAllocateInfo->allocationSize must be less than or equal to  m:: memoryHeapsemindex].size where memindex =  m:: memoryTypesD[pAllocateInfo->memoryTypeIndex].heapIndex as returned by  _ for the /3 that device was created frompAllocateInfo->memoryTypeIndex must be less than  m::memoryTypeCount as returned by  _ for the /3 that device was created from If the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceCoherentMemorydeviceCoherentMemory feature is not enabled, pAllocateInfo->memoryTypeIndex must1 not identify a memory type supporting [There must be less than  l::maxMemoryAllocationCountB device memory allocations currently allocated on the device.Valid Usage (Implicit)device must be a valid  handle pAllocateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepMemory must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureYSee Also, , , +vulkan=A convenience wrapper to make a compatible pair of calls to + and +To ensure that + is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.+vulkan!vkFreeMemory - Free device memory Description/Before freeing a memory object, an application muste ensure the memory object is no longer in use by the device  for example by command buffers in the  pending state . Memory can@ be freed whilst still bound to resources, but those resources mustU not be used afterwards. If there are still any bound images or buffers, the memory may9 not be immediately released by the implementation, but must be released by the time all bound images and buffers have been destroyed. Once memory is released, it is returned to the heap from which it was allocated.SHow memory objects are bound to Images and Buffers is described in detail in the  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-associationResource Memory Association section.QIf a memory object is mapped at the time it is freed, it is implicitly unmapped.NoteAs described  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-unmap-does-not-flushbelowf, host writes are not implicitly flushed when the memory object is unmapped, but the implementation mustR guarantee that writes that have not been flushed do not affect any other memory. Valid Usage%All submitted commands that refer to memory (via images or buffers) must have completed executionValid Usage (Implicit)device must be a valid  handleIf memory is not , memory must be a valid  handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf memory is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to memory must be externally synchronizedSee Also, , +vulkan@vkMapMemory - Map a memory object into application address space DescriptionAfter a successful call to + the memory object memory is considered to be currently  host mapped.Note#It is an application error to call +% on a memory object that is already  host mapped.Note+ will fail if the implementation is unable to allocate an appropriately sized contiguous virtual address range, e.g. due to virtual address space fragmentation or platform limits. In such cases, + must return . The application canu improve the likelihood of success by reducing the size of the mapped range and/or removing unneeded mappings using +.+} does not check whether the device memory is currently in use before returning the host-accessible pointer. The application must guarantee that any previously submitted command that writes to this range has completed before the host reads from or writes to that range, and that any previously submitted command that reads from that range has completed before the host writes to that region (see  thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-host-writeshere` for details on fulfilling such a guarantee). If the device memory was allocated without the [ set, these guarantees must1 be made for an extended range: the application must@ round down the start of the range to the nearest multiple of  l::nonCoherentAtomSizeA, and round the end of the range up to the nearest multiple of  l::nonCoherentAtomSize.While a range of device memory is host mapped, the application is responsible for synchronizing both device and host access to that memory range.NoteIt is important for the application developer to become meticulously familiar with all of the mechanisms described in the chapter on  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization!Synchronization and Cache Control< as they are crucial to maintaining memory access ordering. Valid Usagememory must not be currently host mappedoffset must be less than the size of memoryIf size is not equal to %, size must be greater than 0If size is not equal to %, size must* be less than or equal to the size of the memory minus offsetmemory must8 have been created with a memory type that reports [memory must0 not have been allocated with multiple instancesValid Usage (Implicit)device must be a valid  handlememory must be a valid  handleflags must be 0ppData must& be a valid pointer to a pointer valuememory must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to memory must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , m, T+vulkan<A convenience wrapper to make a compatible pair of calls to + and +To ensure that + is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.+vulkan7vkUnmapMemory - Unmap a previously mapped memory object Valid Usagememory must be currently host mappedValid Usage (Implicit)device must be a valid  handlememory must be a valid  handlememory must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to memory must be externally synchronizedSee Also, +vulkan6vkFlushMappedMemoryRanges - Flush mapped memory ranges Description+@ guarantees that host writes to the memory ranges described by  pMemoryRanges? are made available to the host memory domain, such that they can5 be made available to the device memory domain via  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-available-and-visiblememory domain operations using the   jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type.Within each range described by  pMemoryRanges, each set of nonCoherentAtomSize bytes in that range is flushed if any byte in that set has been written by the host since it was first host mapped, or the last time it was flushed. If  pMemoryRanges includes sets of nonCoherentAtomSizeB bytes where no bytes have been written by the host, those bytes must not be flushed.|Unmapping non-coherent memory does not implicitly flush the host mapped memory, and host writes that have not been flushed may> not ever be visible to the device. However, implementations must[ ensure that writes that have not been flushed do not become visible to any other memory.NoteThe above guarantee avoids a potential memory corruption in scenarios where host writes to a mapped memory object have not been flushed before the memory is unmapped (or freed), and the virtual address range is subsequently reused for a different mapping (or memory allocation). Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, +vulkanLvkInvalidateMappedMemoryRanges - Invalidate ranges of mapped memory objects Description+B guarantees that device writes to the memory ranges described by  pMemoryRangesG, which have been made available to the host memory domain using the  and   jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access types, are made visible to the host. If a range of non-coherent memory is written by the host and then invalidated without first being flushed, its contents are undefined.Within each range described by  pMemoryRanges, each set of nonCoherentAtomSize bytes in that range is invalidated if any byte in that set has been written by the device since it was first host mapped, or the last time it was invalidated.NoteGMapping non-coherent memory does not implicitly invalidate that memory. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, +vulkanPvkGetDeviceMemoryCommitment - Query the current commitment for a VkDeviceMemory DescriptionThe implementation mayJ update the commitment at any time, and the value returned by this query may be out of date.IThe implementation guarantees to allocate any committed memory from the  heapIndexG indicated by the memory type that the memory object was created with.Valid Usage (Implicit)See Also, , m+vulkandevice, is the logical device that owns the memory.vulkan pAllocateInfo is a pointer to a W structure describing parameters of the allocation. A successful returned allocation mustT use the requested parameters  no substitution is permitted by the implementation.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.+vulkandevice, is the logical device that owns the memory.vulkanmemory is the  object to be freed.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.+vulkandevice, is the logical device that owns the memory.vulkanmemory is the  object to be mapped.vulkanoffsetF is a zero-based byte offset from the beginning of the memory object.vulkansize- is the size of the memory range to map, or % to map from offset to the end of the allocation.vulkanflags is reserved for future use.+vulkandevice, is the logical device that owns the memory.vulkanmemory% is the memory object to be unmapped.+vulkandevice3 is the logical device that owns the memory ranges.device must be a valid  handlevulkan pMemoryRanges is a pointer to an array of 3 structures describing the memory ranges to flush. pMemoryRanges must$ be a valid pointer to an array of memoryRangeCount valid  structures+vulkandevice3 is the logical device that owns the memory ranges.device must be a valid  handlevulkan pMemoryRanges is a pointer to an array of 8 structures describing the memory ranges to invalidate. pMemoryRanges must$ be a valid pointer to an array of memoryRangeCount valid  structures+vulkandevice, is the logical device that owns the memory.device must be a valid  handlevulkanmemory$ is the memory object being queried.memory must4 have been created with a memory type that reports [_memory must be a valid  handlememory must1 have been created, allocated, or retrieved from deviceT[+++++ + ++ +++++++++++++++++++++++ + ++ T[1None("#%&'-./1789;=>?FHIMSUVX_dghklmqnvulkanVVkImageViewCreateInfo - Structure specifying parameters of a newly created image view Description Some of the imaget creation parameters are inherited by the view. In particular, image view creation inherits the implicit parameter usagej specifying the allowed usages of the image view that, by default, takes the value of the corresponding usage parameter specified in 0^ at image creation time. If the image was has a depth-stencil format and was created with a `\ structure included in the pNext chain of 0(, the usage is calculated based on the subresource.aspectMask provided:If  aspectMask includes only dy, the implicit usage is equal to `\:: stencilUsage.If  aspectMask includes only dx, the implicit usage is equal to 0::usage. If both aspects are included in  aspectMask, the implicit usage+ is equal to the intersection of 0::usage and `\:: stencilUsage. The implicit usage can be overriden by adding a   structure to the pNext chain.If image was created with the  flag, and if the format of the image is not  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar, format can. be different from the image s format, but if image was created without the # flag and they are not equal they must be  compatible1. Image format compatibility is defined in the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classesFormat Compatibility Classes section. Views of compatible formats will have the same mapping between texel coordinates and memory locations irrespective of the format<, with only the interpretation of the bit pattern changing.Note0Values intended to be used with one view format may not be exactly preserved when written or read through a different format. For example, an integer value that happens to have the bit pattern of a floating point denorm or NaN may be flushed or canonicalized when written or read through a view with a floating point format. Similarly, a value written through a signed normalized format that has a bit pattern exactly equal to -2b may( be changed to -2b + 1 as described in  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-fixedfpconv8Conversion from Normalized Fixed-Point to Floating-Point.If image was created with the  flag, format must be  compatible1 with the image s format as described above, or must- be an uncompressed format in which case it must be size-compatible* with the image s format, as defined for  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-images-format-size-compatibilitycopying data between images In this case the resulting image view s texel dimensions equal the dimensions of the selected mip level divided by the compressed texel block size and rounded up.The   components member describes a remapping from components of the image to components of the vector returned by shader image instructions. This remapping musty be the identity swizzle for storage image descriptors, input attachment descriptors, framebuffer attachments, and any 3 used with a combined image sampler that enables  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y CBCR conversion.?If the image view is to be used with a sampler which supports  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversion, an identically defined object of type CF% to that used to create the sampler must be passed to +< in a  included in the pNext chain of . Conversely, if a CF object is passed to +<, an identically defined CF object must" be used when sampling the image.If the image has a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format and subresourceRange.aspectMask is d, format must be identical to the image format2, and the sampler to be used with the image view must enable  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversion.If image was created with the  and the image has a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format , and if subresourceRange.aspectMask is d, d, or d, format must be  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes compatible] with the corresponding plane of the image, and the sampler to be used with the image view must not enable  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversion. The width and height of the single-plane image view mustQ be derived from the multi-planar image s dimensions in the manner listed for  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planesplane compatibility for the plane.Any view of an image plane will have the same mapping between texel coordinates and memory locations as used by the channels of the color aspect, subject to the formulae relating texel coordinates to lower-resolution planes as described in  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstructionChroma Reconstruction. That is, if an R or B plane has a reduced resolution relative to the G plane of the multi-planar image, the image view operates using the (uplane, vplane}) unnormalized coordinates of the reduced-resolution plane, and these coordinates access the same memory locations as the (ucolor, vcolorp) unnormalized coordinates of the color aspect for which chroma reconstruction operations operate on the same (uplane, vplane) or (iplane, jplane) coordinates. Dim, Arrayed, MS  Image parameters  View parameters W   imageType = ci. imageType5 width = ci. extent.width6 height = ci. extent.height4 depth = ci. extent.depth6  arrayLayers = ci. arrayLayers1 samples = ci.samples9 flags = ci.flagsM where ci is the 0 used to create image.  baseArrayLayer,  layerCount, and  levelCount are members of the subresourceRange member. A __1D, 0, 0__   imageType =  widthJ "e 1 heightI = 1 depthJ = 1  arrayLayersD "e 1 samplesF = 1  viewType7 =  baseArrayLayer1 "e 0  layerCount = 1 A __1D, 1, 0__   imageType =  widthJ "e 1 heightI = 1 depthJ = 1  arrayLayersD "e 1 samplesF = 1  viewType7 =  baseArrayLayer1 "e 0  layerCount "e 1 A __2D, 0, 0__   imageType =  widthJ "e 1 heightI "e 1 depthJ = 1  arrayLayersD "e 1 samplesF = 1  viewType7 =  baseArrayLayer1 "e 0  layerCount = 1 A __2D, 1, 0__   imageType =  widthJ "e 1 heightI "e 1 depthJ = 1  arrayLayersD "e 1 samplesF = 1  viewType7 =  baseArrayLayer1 "e 0  layerCount "e 1 A __2D, 0, 1__   imageType =  widthJ "e 1 heightI "e 1 depthJ = 1  arrayLayersD "e 1 samplesF > 1  viewType7 =  baseArrayLayer1 "e 0  layerCount = 1 A __2D, 1, 1__   imageType =  widthJ "e 1 heightI "e 1 depthJ = 1  arrayLayersD "e 1 samplesF > 1  viewType7 =  baseArrayLayer1 "e 0  layerCount "e 1 W __CUBE, 0, 0__   imageType =  widthJ "e 1 height = width? depthJ = 1  arrayLayersD "e 6 samplesH = 1 flagsJ includes   viewType7 =  baseArrayLayer1 "e 0  layerCount7 = 6 b __CUBE, 1, 0__   imageType =  widthJ "e 1 heightI = width depthJ = 1 NN "e 1  arrayLayers "e 6 N: samplesH = 1 flagsJ includes   viewType7 =  baseArrayLayer1 "e 0  layerCount = 6 N, Ni "e 1 A __3D, 0, 0__   imageType =  widthJ "e 1 heightI "e 1 depthJ "e 1  arrayLayersD = 1 samplesF = 1  viewType7 =  baseArrayLayer1 = 0  layerCount = 1  __3D, 0, 0__   imageType =  widthJ "e 1 heightI "e 1 depthJ "e 1  arrayLayersD = 1 samplesH = 1 flagsJ includes  flagsJ does not include ,  , and   viewType7 =   levelCount5 = 1 baseArrayLayer1 "e 0  layerCount = 1  __3D, 0, 0__   imageType =  widthJ "e 1 heightI "e 1 depthJ "e 1  arrayLayersD = 1 samplesH = 1 flagsJ includes  flagsJ does not include ,  , and   viewType7 =   levelCount5 = 1 baseArrayLayer1 "e 0  layerCount "e 1 9Image and image view parameter compatibility requirements Valid UsageIf image was not created with  then viewType must not be  or , If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-imageCubeArrayimage cubemap arrays feature is not enabled, viewType must not be If image was created with  but without  set then viewType must not be  or image must have been created with a usage, value containing at least one of v, , w, e, f, q, or r The  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features" of the resultant image view must contain at least one bitIf usage contains v, then the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features" of the resultant image view must contain gIf usage contains ", then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain gIf usage contains w", then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain gIf usage contains e", then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain gIf usage contains f", then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain at least one of g or gsubresourceRange.baseMipLevel must be less than the  mipLevels specified in 0 when image was createdIf subresourceRange.levelCount is not , subresourceRange.baseMipLevel + subresourceRange.levelCount must be less than or equal to the  mipLevels specified in 0 when image was createdIf image was created with usage containing r, subresourceRange.levelCount must be 1If image% is not a 3D image created with  set, or viewType is not  or , subresourceRange.baseArrayLayer must be less than the  arrayLayers specified in 0 when image was createdIf subresourceRange.layerCount is not , image* is not a 3D image created with  set, or viewType is not  or , subresourceRange.layerCount must be non-zero and subresourceRange.baseArrayLayer + subresourceRange.layerCount must be less than or equal to the  arrayLayers specified in 0 when image was createdIf image! is a 3D image created with  set, and viewType is  or , subresourceRange.baseArrayLayer must+ be less than the depth computed from  baseMipLevel and  extent.depth specified in 0 when image< was created, according to the formula defined in mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-miplevel-sizingImage Miplevel SizingIf subresourceRange.layerCount is not , image& is a 3D image created with  set, and viewType is  or , subresourceRange.layerCount must be non-zero and subresourceRange.baseArrayLayer + subresourceRange.layerCount must7 be less than or equal to the depth computed from  baseMipLevel and  extent.depth specified in 0 when image< was created, according to the formula defined in mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-miplevel-sizingImage Miplevel SizingIf image was created with the ! flag, but without the  flag, and if the format of the image is not a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format, format must be compatible with the format used to create image, as defined in khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classesFormat Compatibility ClassesIf image was created with the  flag, format must be compatible with, or mustB be an uncompressed format that is size-compatible with, the format used to create imageIf image was created with the  flag, the  levelCount and  layerCount members of subresourceRange must both be 1 If a fU$ structure was included in the pNext chain of the 0# structure used when creating image and fU::viewFormatCount is not zero then format must be one of the formats in fU:: pViewFormats If a fU$ structure was included in the pNext chain of the 0# structure used when creating image and fU::viewFormatCount2 is not zero then all of the formats in fU:: pViewFormats must be compatible with the format as described in the chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibilitycompatibility tableIf flags dose not contain  and the pNext chain include a fU structure then fU::viewFormatCount must be 0 or 1If image was created with the  flag, if the format of the image is a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format, and if subresourceRange.aspectMask is one of d, d, or d , then format must be compatible with the J for the plane of the image format indicated by subresourceRange.aspectMask, as defined in ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planesIf image was not created with the  flag, or if the format of the image is a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format and if subresourceRange.aspectMask is d, format must be identical to the format used to create imageIf the pNext chain includes a  structure with a  conversion value other than , all members of  components must have the uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappingsidentity swizzleIf image is non-sparse then it must7 be bound completely and contiguously to a single /8 objectsubresourceRange and viewType must= be compatible with the image, as described in the qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-compatibilitycompatibility tableIf image has an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formatsexternal format, format must be EIf image has an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formatsexternal format , the pNext chain must include a  structure with a  conversion6 object created with the same external format as imageIf image has an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formatsexternal format, all members of  components must be the uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappingsidentity swizzleIf image was created with usage containing q, viewType must be  or If image was created with usage containing q, format must be If  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentdensitymapdynamicdynamic fragment density map feature is not enabled, flags must not contain If  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentdensitymapdeferreddeferred fragment density map feature is not enabled, flags must not contain If flags contains , flags must not contain If image was created with flags containing  and usage containing v, subresourceRange.layerCount must be less than or equal to mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxsubsampledarraylayers::maxSubsampledArrayLayersIf flags does not contain  and image was created with usage containing r , its flags must not contain any of Z, , , or If the pNext chain includes a   structure, and image was not created with a `\ structure included in the pNext chain of 0, its usage member must4 not include any bits that were not set in the usage member of the 0 structure used to create imageIf the pNext chain includes a   structure, image was created with a `\ structure included in the pNext chain of 0 , and subResourceRange.aspectMask includes dy , the usage member of the   instance must4 not include any bits that were not set in the usage member of the `\ structure used to create imageIf the pNext chain includes a   structure, image was created with a `\ structure included in the pNext chain of 0 , and subResourceRange.aspectMask includes bits other than dy , the usage member of the   structure must4 not include any bits that were not set in the usage member of the 0 structure used to create imageIf viewType is  and subresourceRange.layerCount is not , subresourceRange.layerCount must be 6If viewType is  and subresourceRange.layerCount is not , subresourceRange.layerCount must be a multiple of 6If viewType is  and subresourceRange.layerCount is &, the remaining number of layers must be 6If viewType is  and subresourceRange.layerCount is &, the remaining number of layers must be a multiple of 6Valid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of ,  , or The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of  valuesimage must be a valid  handleviewType must be a valid  valueformat must be a valid J value components must be a valid  structuresubresourceRange must be a valid  structureSee Also, J, , , , , , +<vulkanJVkImageSubresourceRange - Structure specifying an image subresource range Description-The number of mipmap levels and array layers must be a subset of the image subresources in the image. If an application wants to use all mip levels or layers in an image after the  baseMipLevel or baseArrayLayer, it can set  levelCount and  layerCount to the special values  and ; without knowing the exact number of mip levels or layers.OFor cube and cube array image views, the layers of the image view starting at baseArrayLayer correspond to faces in the order +X, -X, +Y, -Y, +Z, -Z. For cube arrays, each set of six sequential layers is a single cube, so the number of cube maps in a cube map array view is  layerCount / 6, and image array layer (baseArrayLayer' + i) is face index (i mod 6) of cube i / 6B. If the number of layers in the view, whether set explicitly in  layerCount or implied by :, is not a multiple of 6, the last cube map in the array must not be accessed. aspectMask must be only d, dx or dy if formatI is a color, depth-only or stencil-only format, respectively, except if format is a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar formatL. If using a depth/stencil format with both depth and stencil components,  aspectMask must include at least one of dx and dy, and can include both. When the  structure is used to select a subset of the slices of a 3D image s mip level in order to create a 2D or 2D array image view of a 3D image created with , baseArrayLayer and  layerCounts specify the first slice index and the number of slices to include in the created image view. Such an image view canB be used as a framebuffer attachment that refers only to the specified range of slices of the selected mip level. However, any layout transitions performed on such an attachment view during a render pass instance still apply to the entire subresource referenced which includes all the slices of the selected mip level.When using an image view of a depth/stencil image to populate a descriptor set (e.g. for sampling in the shader, or for use as an input attachment), the  aspectMask must^ only include one bit and selects whether the image view is used for depth reads (i.e. using a floating-point sampler or input attachment in the shader) or stencil reads (i.e. using an unsigned integer sampler or input attachment in the shader). When an image view of a depth/stencil image is used as a depth/stencil framebuffer attachment, the  aspectMaskD is ignored and both depth and stencil image subresources are used.When creating a , if  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversion! is enabled in the sampler, the  aspectMask of a subresourceRange used by the  must be d.When creating a L, if sampler Y 2CBCR conversion is not enabled in the sampler and the image format is  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar , the image must have been created with  , and the  aspectMask of the  s subresourceRange must be d, d or d. Valid UsageIf  levelCount is not , it must be greater than 0If  layerCount is not , it must be greater than 0If  aspectMask includes d, then it must not include any of d, d, or d aspectMask must not include &VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT for any index iValid Usage (Implicit) aspectMask must be a valid combination of d values aspectMask must not be 0See Alsoh, 5W, , m, nvulkanCVkComponentMapping - Structure specifying a color component mappingValid Usage (Implicit)See Also, , , X+*vulkanpNext is NULL6 or a pointer to a structure extending this structure.++vulkanflags is a bitmask of 5 describing additional parameters of the image view.+,vulkanimage is a $ on which the view will be created.+-vulkanviewType is a . value specifying the type of the image view.+.vulkanformat is a JM describing the format and type used to interpret texel blocks in the image.+/vulkan components is a  specifies a remapping of color components (or of depth or stencil components after they have been converted into color components).+0vulkansubresourceRange is a S selecting the set of mipmap levels and array layers to be accessible to the view.+2vulkan aspectMask is a bitmask of dC specifying which aspect(s) of the image are included in the view.+3vulkan baseMipLevel2 is the first mipmap level accessible to the view.+4vulkan levelCount0 is the number of mipmap levels (starting from  baseMipLevel) accessible to the view.+5vulkanbaseArrayLayer1 is the first array layer accessible to the view.+6vulkan layerCount/ is the number of array layers (starting from baseArrayLayer) accessible to the view.+8vulkanr is a Q specifying the component value placed in the R component of the output vector.r must be a valid  value+9vulkang is a Q specifying the component value placed in the G component of the output vector.g must be a valid  value+:vulkanb is a Q specifying the component value placed in the B component of the output vector.b must be a valid  value+;vulkana is a Q specifying the component value placed in the A component of the output vector.a must be a valid  value+<vulkan?vkCreateImageView - Create an image view from an existing imageValid Usage (Implicit)device must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepView must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , +=vulkan=A convenience wrapper to make a compatible pair of calls to +< and +>To ensure that +> is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.+>vulkan1vkDestroyImageView - Destroy an image view object Valid Usage%All submitted commands that refer to  imageView must have completed executionIf  were provided when  imageView1 was created, a compatible set of callbacks must be provided hereIf no  were provided when  imageView was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid  handleIf  imageView is not ,  imageView must be a valid  handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf  imageView is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  imageView must be externally synchronizedSee Also, , +<vulkandevice3 is the logical device that creates the image view.vulkan pCreateInfo is a pointer to a F structure containing parameters to be used to create the image view.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.+>vulkandevice4 is the logical device that destroys the image view.vulkan imageView is the image view to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.2,+)+++*+,+.+-+/+0+1+2+6+3+4+5+7+;+:+9+8+<+=+>B+<+=+>+7+;+:+9+8+1+2+6+3+4+5+)+++*+,+.+-+/+0,None("#%&'-./1789;=>?FHIMSUVX_dghklmqovulkanvVkMemoryGetAndroidHardwareBufferInfoANDROID - Structure describing an Android hardware buffer memory export operation Valid UsageA must have been included in O0:: handleTypes when memory was createdIf the pNext chain of the 3s used to allocate memory included a Hu with non-NULL image member, then that image must already be bound to memoryValid Usage (Implicit)sType must be pNext must be NULLmemory must be a valid  handleSee Also, , +mvulkanYVkImportAndroidHardwareBufferInfoANDROID - Import memory from an Android hardware buffer DescriptionIf the 3' command succeeds, the implementation must@ acquire a reference to the imported hardware buffer, which it must[ release when the device memory object is freed. If the command fails, the implementation must not retain a reference. Valid UsageIf buffer is not NULL, Android hardware buffers must3 be supported for import, as reported by P9 or P6If buffer is not NULL, it must5 be a valid Android hardware buffer object with AHardwareBuffer_Desc::usage2 compatible with Vulkan as described in uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-bufferAndroid Hardware BuffersValid Usage (Implicit)sType must be buffer must be a valid pointer to an  valueSee AlsovulkanZVkExternalFormatANDROID - Structure containing an Android hardware buffer external format DescriptionIf externalFormat# is zero, the effect is as if the , structure was not present. Otherwise, the image) will have the specified external format.Valid Usage (Implicit)See Alsovulkan\VkAndroidHardwareBufferUsageANDROID - Struct containing Android hardware buffer usage flags DescriptionThe androidHardwareBufferUsage field must= include Android hardware buffer usage flags listed in the  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-usage!AHardwareBuffer Usage Equivalence_ table when the corresponding Vulkan image usage or image creation flags are included in the usage or flags fields of T. It must' include at least one GPU usage flag (AHARDWAREBUFFER_USAGE_GPU_L*), even if none of the corresponding Vulkan usages or flags are requested.Note&Requiring at least one GPU usage flag ensures that Android hardware buffer memory will be allocated in a memory pool accessible to the Vulkan implementation, and that specializing the memory layout based on usage flags does not prevent it from being compatible with Vulkan. Implementations may avoid unnecessary restrictions caused by this requirement by using vendor usage flags to indicate that only the Vulkan uses indicated in TV are required.Valid Usage (Implicit)See AlsovulkanbVkAndroidHardwareBufferPropertiesANDROID - Properties of External Memory Android Hardware BuffersValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueSee Alsom, , +lvulkanVkAndroidHardwareBufferFormatPropertiesANDROID - Structure describing the image format properties of an Android hardware buffer DescriptionEIf the Android hardware buffer has one of the formats listed in the  }https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-formatsFormat Equivalence table, then format mustD have the equivalent Vulkan format listed in the table. Otherwise, format may be E*, indicating the Android hardware buffer can& only be used with an external format.The formatFeatures member must include g and at least one of g or g, and should include g and g.NoteThe formatFeatures> member only indicates the features available when using an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formatsexternal-format imagel created from the Android hardware buffer. Images from Android hardware buffers with a format other than E8 are subject to the format capabilities obtained from T, and Tc& with appropriate parameters. These sets of features are independent of each other, e.g. the external format will support sampler Y 2CBCR conversion even if the non-external format does not, and writing to non-external format images is possible but writing to external format images is not.7Android hardware buffers with the same external format must have the same support for g, g, g, g, gd, and g. in formatFeatures. Other format features mayy differ between Android hardware buffers that have the same external format. This allows applications to use the same CF} object (and samplers and pipelines created from them) for any Android hardware buffers that have the same external format.If format is not E, then the value of  samplerYcbcrConversionComponents must be valid when used as the  components member of X with that format. If format is E, all members of  samplerYcbcrConversionComponents must be the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappingsidentity swizzle.Implementations may not always be able to determine the color model, numerical range, or chroma offsets of the image contents, so the values in % are only suggestions. Applications should treat these values as sensible defaults to use in the absence of more reliable information obtained through some other means. If the underlying physical device is also usable via OpenGL ES with the  Qhttps://www.khronos.org/registry/OpenGL/extensions/OES/OES_EGL_image_external.txtGL_OES_EGL_image_external extension, the implementation shouldx suggest values that will produce similar sampled values as would be obtained by sampling the same external image via samplerExternalOES3 in OpenGL ES using equivalent sampler parameters.NoteSince  Qhttps://www.khronos.org/registry/OpenGL/extensions/OES/OES_EGL_image_external.txtGL_OES_EGL_image_external{ does not require the same sampling and conversion calculations as Vulkan does, achieving identical results between APIs may* not be possible on some implementations.Valid Usage (Implicit)See Also, , J, , , , +VvulkanexternalFormatA is an implementation-defined identifier for the external formatexternalFormat must be 0 or a value returned in the externalFormat member of  by an earlier call to +l+XvulkanformatQ is the Vulkan format corresponding to the Android hardware buffer s format, or E. if there is not an equivalent Vulkan format.+YvulkanexternalFormatG is an implementation-defined external format identifier for use with . It must not be zero.+ZvulkanformatFeaturesk describes the capabilities of this external format when used with an image bound to memory imported from buffer.+[vulkan samplerYcbcrConversionComponents is the component swizzle that should be used in X.+\vulkansuggestedYcbcrModel+ is a suggested color model to use in the X.+]vulkansuggestedYcbcrRange1 is a suggested numerical value range to use in X.+^vulkansuggestedXChromaOffset+ is a suggested X chroma offset to use in X.+_vulkansuggestedYChromaOffset+ is a suggested Y chroma offset to use in X.+avulkanmemoryO is the memory object from which the Android hardware buffer will be exported.+cvulkanpNext is NULL6 or a pointer to a structure extending this structure.+dvulkanallocationSize# is the size of the external memory+evulkanmemoryTypeBitsh is a bitmask containing one bit set for every memory type which the specified Android hardware buffer can be imported as.+gvulkanandroidHardwareBufferUsage2 returns the Android hardware buffer usage flags.+ivulkanbuffer* is the Android hardware buffer to import.+lvulkanivkGetAndroidHardwareBufferPropertiesANDROID - Get Properties of External Memory Android Hardware Buffers Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure.See Also, +mvulkan]vkGetMemoryAndroidHardwareBufferANDROID - Get an Android hardware buffer for a memory object Description Each call to +m mustl return an Android hardware buffer with a new reference acquired in addition to the reference held by the /. To avoid leaking resources, the application must# release the reference by calling AHardwareBuffer_releaseD when it is no longer needed. When called with the same handle in ::memory, +m must} return the same Android hardware buffer object. If the device memory was created by importing an Android hardware buffer, +m must2 return that same Android hardware buffer object. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, +lvulkandevice. is the logical device that will be importing buffer.device must be a valid  handlevulkanbuffer7 is the Android hardware buffer which will be imported.buffer mustE be a valid Android hardware buffer object with at least one of the AHARDWAREBUFFER_USAGE_GPU_* flags in its AHardwareBuffer_Desc::usagebuffer must be a valid pointer to a valid  value+mvulkandeviceF is the logical device that created the device memory being exported.device must be a valid  handlevulkanpInfo is a pointer to a : structure containing parameters of the export operation.pInfo must be a valid pointer to a valid  structure"+`+a+h+i+U+V+f+g+b+c+e+d+W+X+Y+Z+[+\+]+^+_+S+T+j+k+l+m"+l+m+h+i+f+g+b+c+e+d+`+a+W+X+Y+Z+[+\+]+^+_+U+V+T+k+S+jXNone("#%&'-./1789;=>?FHIMSUVX_dghklmqpYvulkanaVkSamplerYcbcrConversionInfo - Structure specifying Y 2CBCR conversion to a sampler or image viewValid Usage (Implicit)See Also, vulkanVkSamplerYcbcrConversionImageFormatProperties - Structure specifying combined image sampler descriptor count for multi-planar imagesValid Usage (Implicit)See AlsovulkaniVkSamplerYcbcrConversionCreateInfo - Structure specifying the parameters of the newly created conversion DescriptionNoteSetting forceExplicitReconstruction to . mayt have a performance penalty on implementations where explicit reconstruction is not the default mode of operation.If format supports  the forceExplicitReconstruction$ value behaves as if it was set to ..If the pNext chain includes a  structure with non-zero externalFormat= member, the sampler Y 2CBCR conversion object represents an external format conversion, and format must be  . Such conversions must5 only be used to sample image views with a matching  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formatsexternal format=. When creating an external format conversion, the value of  components is ignored. Valid Usage3If an external format conversion is being created, format must be   7If an external format conversion is not being created, format mustF represent unsigned normalized values (i.e. the format must be a UNORM format) The  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features' of the sampler Y 2CBCR conversion must support  or  If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features; of the sampler Y 2CBCR conversion do not support ,  xChromaOffset and  yChromaOffset must not be  If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features; of the sampler Y 2CBCR conversion do not support ,  xChromaOffset and  yChromaOffset must not be If the format has a _422 or _420 suffix, then  components.g must be the uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappingsidentity swizzleIf the format has a _422 or _420 suffix, then  components.a must be the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappingsidentity swizzle, t , or tIf the format has a _422 or _420 suffix, then  components.r must be the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappingsidentity swizzle or tIf the format has a _422 or _420 suffix, then  components.b must be the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappingsidentity swizzle or tIf the format has a _422 or _420 suffix, and if either  components.r or  components.b is the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappingsidentity swizzle, both values must be the identity swizzleIf  ycbcrModel is not  , then  components.r,  components.g, and  components.b must$ correspond to channels of the format ; that is,  components.r,  components.g, and  components.b must not be t or t , and mustV not correspond to a channel which contains zero or one as a consequence of ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-conversion-to-rgbaconversion to RGBAIf  ycbcrRange is < then the R, G and B channels obtained by applying the  component swizzle to format must6 each have a bit-depth greater than or equal to 8 If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features; of the sampler Y 2CBCR conversion do not support  forceExplicitReconstruction must be . If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features; of the sampler Y 2CBCR conversion do not support ,  chromaFilter must not be Valid Usage (Implicit)sType must be + pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueformat must be a valid J value ycbcrModel must be a valid  value ycbcrRange must be a valid  value components must be a valid  structure xChromaOffset must be a valid  value yChromaOffset must be a valid  value chromaFilter must be a valid I valueIf  chromaFilter is , chroma samples are reconstructed to luma channel resolution using nearest-neighbour sampling. Otherwise, chroma samples are reconstructed using interpolation. More details can be found in  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion,the description of sampler Y 2CBCR conversion in the  Vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#texturesImage Operations chapter.See Alsoo, , , I, J, , , , +, vulkanVkPhysicalDeviceSamplerYcbcrConversionFeatures - Structure describing Y CbCr conversion features that can be supported by an implementationMembersThe members of the + structure describe the following feature:Valid Usage (Implicit)See Alsoo, vulkan^VkImagePlaneMemoryRequirementsInfo - Structure specifying image plane for memory requirements Valid UsageIf the image s tiling is  or s , then  planeAspect must be a single valid  format plane4 for the image (that is, for a two-plane image  planeAspect must be k or l#, and for a three-plane image  planeAspect must be k, l or m)If the image s tiling is c , then  planeAspect must be a single valid  memory plane for the image (that is,  aspectMask must7 specify a plane index that is less than the ::drmFormatModifierPlaneCount" associated with the image s format and T::drmFormatModifier)Valid Usage (Implicit)sType must be . planeAspect must be a valid i valueSee Alsoi, vulkanWVkBindImagePlaneMemoryInfo - Structure specifying how to bind an image plane to memory Valid UsageIf the image s tiling is  or s , then  planeAspect must be a single valid  format plane4 for the image (that is, for a two-plane image  planeAspect must be k or l#, and for a three-plane image  planeAspect must be k, l or m)If the image s tiling is c , then  planeAspect must be a single valid  memory plane for the image (that is,  aspectMask must7 specify a plane index that is less than the ::drmFormatModifierPlaneCount" associated with the image s format and T::drmFormatModifier)Valid Usage (Implicit)sType must be - planeAspect must be a valid i valueSee Alsoi, +vulkan#combinedImageSamplerDescriptorCounth is the number of combined image sampler descriptors that the implementation uses to access the format.+vulkansamplerYcbcrConversion0 specifies whether the implementation supports  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversion. If samplerYcbcrConversion is .], sampler Y 2CBCR conversion is not supported, and samplers using sampler Y 2CBCR conversion must not be used.+vulkan planeAspect9 is the aspect corresponding to the image plane to query.+vulkan planeAspect3 is the aspect of the disjoint image plane to bind.+vulkanpNext is NULL6 or a pointer to a structure extending this structure.+vulkanformatL is the format of the image from which color information will be retrieved.+vulkan ycbcrModelA describes the color matrix for conversion between color models.+vulkan ycbcrRangez describes whether the encoded values have headroom and foot room, or whether the encoding uses the full numerical range.+vulkan components applies a swizzle based on t< enums prior to range expansion and color model conversion.+vulkan xChromaOffset describes the  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstructionsample locationC associated with downsampled chroma channels in the x dimension.  xChromaOffseta has no effect for formats in which chroma channels are the same resolution as the luma channel.+vulkan yChromaOffset describes the  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstructionsample locationC associated with downsampled chroma channels in the y dimension.  yChromaOffsetX has no effect for formats in which the chroma channels are not downsampled vertically.+vulkan chromaFilter) is the filter for chroma reconstruction.+vulkanforceExplicitReconstruction canI be used to ensure that reconstruction is done explicitly, if supported.+vulkan conversion is a  handle created with +. conversion must be a valid  handle+vulkan?vkCreateSamplerYcbcrConversion - Create a new Y 2CBCR conversion Description`The interpretation of the configured sampler Y 2CBCR conversion is described in more detail in  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion,the description of sampler Y 2CBCR conversion in the  Vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#texturesImage Operations chapter. Valid Usage The  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sampler-YCbCr-conversion!sampler Y 2CBCR conversion feature must be enabledValid Usage (Implicit)device must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepYcbcrConversion must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , +vulkan=A convenience wrapper to make a compatible pair of calls to + and +To ensure that + is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.+vulkanEvkDestroySamplerYcbcrConversion - Destroy a created Y 2CBCR conversionValid Usage (Implicit)device must be a valid  handleIf ycbcrConversion is not , ycbcrConversion must be a valid  handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf ycbcrConversion is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to ycbcrConversion must be externally synchronizedSee Also, , +vulkandeviceC is the logical device that creates the sampler Y 2CBCR conversion.vulkan pCreateInfo is a pointer to a ? structure specifying the requested sampler Y 2CBCR conversion.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.+vulkandevice; is the logical device that destroys the Y 2CBCR conversion.vulkanycbcrConversion is the conversion to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.BJ  ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! LMBQPONMLKJIHGFEDCUBA@?>=<;:9876543210/.-,+*)('&%$#"! ++++++++++++++++++++~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      hijutsrqponmlk+++P+++++++++++++++++++++++J  ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      UBA@?>=<;:9876543210/.-,+*)('&%$#"! BA@?>=<;:9876543210/.-,+*)('&%$#"! MBQPONMLKJIHGFEDCQPONMLKJIHGFEDCLijutsrqponmlkutsrqponmlkhNone("#%&'-./1789;=>?FHIMSUVX_dghklmqps####################################+++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,, , , , , ,,,,,,,,,,,,,,,,,,, ,!,", ,,,,,,,,,,,,,,,,,,, , , , , ,,,,,,,,,+++++++++++++++++++++++++++++,!,"++++++++++++++#######################################################################5None("#%&'-./1789;=>?FHIMSUVX_dghklmqr X$vulkan>VkMemoryBarrier - Structure specifying a global memory barrier Description The first  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope% is limited to access types in the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-maskssource access mask specified by  srcAccessMask. The second  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope% is limited to access types in the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masksdestination access mask specified by  dstAccessMask.Valid Usage (Implicit)See Also, , , vulkanVVkImageMemoryBarrier - Structure specifying the parameters of an image memory barrier Description The first  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopej is limited to access to memory through the specified image subresource range, via access types in the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-maskssource access mask specified by  srcAccessMask. If  srcAccessMask includes , memory writes performed by that access type are also made visible, as that access type is not performed through a resource. The second  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopej is limited to access to memory through the specified image subresource range, via access types in the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masksdestination access mask specified by  dstAccessMask. If  dstAccessMask includes  or , available memory writes are also made visible to accesses of those types, as those access types are not performed through a resource.If srcQueueFamilyIndex is not equal to dstQueueFamilyIndex, and srcQueueFamilyIndexK is equal to the current queue family, then the memory barrier defines a  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-releasequeue family release operationd for the specified image subresource range, and the second access scope includes no access, as if  dstAccessMask was 0.If dstQueueFamilyIndex is not equal to srcQueueFamilyIndex, and dstQueueFamilyIndexK is equal to the current queue family, then the memory barrier defines a  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquirequeue family acquire operationc for the specified image subresource range, and the first access scope includes no access, as if  srcAccessMask was 0. oldLayout and  newLayout define an  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition, for the specified image subresource range.If image, has a multi-planar format and the image is disjoint, then including d in the  aspectMask member of subresourceRange is equivalent to including d, d', and (for three-plane formats only) d. Valid UsagesubresourceRange.baseMipLevel must be less than the  mipLevels specified in 0 when image was createdIf subresourceRange.levelCount is not , subresourceRange.baseMipLevel + subresourceRange.levelCount must be less than or equal to the  mipLevels specified in 0 when image was createdsubresourceRange.baseArrayLayer must be less than the  arrayLayers specified in 0 when image was createdIf subresourceRange.layerCount is not , subresourceRange.baseArrayLayer + subresourceRange.layerCount must be less than or equal to the  arrayLayers specified in 0 when image was createdIf image is non-sparse then it must7 be bound completely and contiguously to a single /8 objectIf srcQueueFamilyIndex and dstQueueFamilyIndex define a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define a  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with w setIf srcQueueFamilyIndex and dstQueueFamilyIndex define a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define a  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with e setIf srcQueueFamilyIndex and dstQueueFamilyIndex define a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define a  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is m then image must have been created with e setIf srcQueueFamilyIndex and dstQueueFamilyIndex define a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define a  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with v or f setIf srcQueueFamilyIndex and dstQueueFamilyIndex define a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define a  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with u setIf srcQueueFamilyIndex and dstQueueFamilyIndex define a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define a  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with t setIf srcQueueFamilyIndex and dstQueueFamilyIndex define a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define a  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition,  oldLayout must be pM or the current layout of the image subresources affected by the barrierIf srcQueueFamilyIndex and dstQueueFamilyIndex define a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define a  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition,  newLayout must not be p or qIf srcQueueFamilyIndex and dstQueueFamilyIndex define a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define a  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is n then image must have been created with e setIf srcQueueFamilyIndex and dstQueueFamilyIndex define a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define a  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is o then image must have been created with e setIf srcQueueFamilyIndex and dstQueueFamilyIndex define a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define a  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is c then image must- have been created with at least one of e, v , or f setIf srcQueueFamilyIndex and dstQueueFamilyIndex define a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define a  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is c then image must have been created with e setIf srcQueueFamilyIndex and dstQueueFamilyIndex define a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define a  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is c then image must- have been created with at least one of e, v , or f setIf srcQueueFamilyIndex and dstQueueFamilyIndex define a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define a  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is c then image must have been created with e setIf srcQueueFamilyIndex and dstQueueFamilyIndex define a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer or  oldLayout and  newLayout define a  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is  then image must have been created with q setIf image+ has a single-plane color format or is not disjoint, then the  aspectMask member of subresourceRange must be dIf image, has a multi-planar format and the image is disjoint, then the  aspectMask member of subresourceRange must* include either at least one of d, d, and d ; or must include dIf image? has a multi-planar format with only two planes, then the  aspectMask member of subresourceRange must not include dIf imageJ has a depth/stencil format with both depth and stencil and the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts# feature is enabled, then the  aspectMask member of subresourceRange must include either or both dx and dyIf imageJ has a depth/stencil format with both depth and stencil and the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts' feature is not enabled, then the  aspectMask member of subresourceRange must include both dx and dyIf srcQueueFamilyIndex is not equal to dstQueueFamilyIndex, at least one mustk not be a special queue family reserved for external memory ownership transfers, as described in mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers???If image) was created with a sharing mode of #G, srcQueueFamilyIndex and dstQueueFamilyIndex are not equal, and one of srcQueueFamilyIndex and dstQueueFamilyIndex^ is a special queue family values reserved for external memory transfers, the other must be If image) was created with a sharing mode of #j , and srcQueueFamilyIndex and dstQueueFamilyIndex are not equal, srcQueueFamilyIndex and dstQueueFamilyIndex must both be valid queue families, or one of the special queue family values reserved for external memory transfers, as described in mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers???If image) was created with a sharing mode of #G, at least one of srcQueueFamilyIndex and dstQueueFamilyIndex must be Valid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be unique oldLayout must be a valid N value newLayout must be a valid N valueimage must be a valid  handlesubresourceRange must be a valid  structureSee Also, , N, , , , vulkanDVkDrawIndirectCommand - Structure specifying a draw indirect command DescriptionThe members of > have the same meaning as the similarly named parameters of . Valid Usage>For a given vertex buffer binding, any attribute data fetched mustf be entirely contained within the corresponding vertex buffer binding, as described in \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input If the  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectFirstInstancedrawIndirectFirstInstance feature is not enabled,  firstInstance must be 0See AlsovulkanTVkDrawIndexedIndirectCommand - Structure specifying a draw indexed indirect command DescriptionThe members of > have the same meaning as the similarly named parameters of . Valid Usage>For a given vertex buffer binding, any attribute data fetched mustf be entirely contained within the corresponding vertex buffer binding, as described in \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input( indexSize ( firstIndex +  indexCount) + offset) mustM be less than or equal to the size of the bound index buffer, with  indexSize& being based on the type specified by  indexType, where the index buffer,  indexType, and offset are specified via  If the  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectFirstInstancedrawIndirectFirstInstance feature is not enabled,  firstInstance must be 0See AlsovulkanMVkDispatchIndirectCommand - Structure specifying a dispatch indirect command DescriptionThe members of < have the same meaning as the corresponding parameters of . Valid UsageSee AlsovulkanDVkBufferMemoryBarrier - Structure specifying a buffer memory barrier Description The first  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope_ is limited to access to memory through the specified buffer range, via access types in the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-maskssource access mask specified by  srcAccessMask. If  srcAccessMask includes , memory writes performed by that access type are also made visible, as that access type is not performed through a resource. The second  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope_ is limited to access to memory through the specified buffer range, via access types in the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masksdestination access mask specified by  dstAccessMask. If  dstAccessMask includes  or , available memory writes are also made visible to accesses of those types, as those access types are not performed through a resource.If srcQueueFamilyIndex is not equal to dstQueueFamilyIndex, and srcQueueFamilyIndexK is equal to the current queue family, then the memory barrier defines a  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-releasequeue family release operationY for the specified buffer range, and the second access scope includes no access, as if  dstAccessMask was 0.If dstQueueFamilyIndex is not equal to srcQueueFamilyIndex, and dstQueueFamilyIndexK is equal to the current queue family, then the memory barrier defines a  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquirequeue family acquire operationX for the specified buffer range, and the first access scope includes no access, as if  srcAccessMask was 0. Valid Usageoffset must be less than the size of bufferIf size is not equal to %, size must be greater than 0If size is not equal to %, size must+ be less than or equal to than the size of buffer minus offsetIf buffer is non-sparse then it must7 be bound completely and contiguously to a single /8 objectIf srcQueueFamilyIndex is not equal to dstQueueFamilyIndex, at least one mustk not be a special queue family reserved for external memory ownership transfers, as described in mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers???If buffer) was created with a sharing mode of #G, srcQueueFamilyIndex and dstQueueFamilyIndex are not equal, and one of srcQueueFamilyIndex and dstQueueFamilyIndex^ is a special queue family values reserved for external memory transfers, the other must be If buffer) was created with a sharing mode of #j , and srcQueueFamilyIndex and dstQueueFamilyIndex are not equal, srcQueueFamilyIndex and dstQueueFamilyIndex must both be valid queue families, or one of the special queue family values reserved for external memory transfers, as described in mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers???If buffer) was created with a sharing mode of #G, at least one of srcQueueFamilyIndex and dstQueueFamilyIndex must be Valid Usage (Implicit)sType must be pNext must be NULLbuffer must be a valid  handleSee Also, , m, , , ,$vulkanxB is the number of local workgroups to dispatch in the X dimension.x must be less than or equal to  l::maxComputeWorkGroupCount[0],%vulkanyB is the number of local workgroups to dispatch in the Y dimension.y must be less than or equal to  l::maxComputeWorkGroupCount[1],&vulkanzB is the number of local workgroups to dispatch in the Z dimension.z must be less than or equal to  l::maxComputeWorkGroupCount[2],(vulkan indexCount# is the number of vertices to draw.,)vulkan instanceCount$ is the number of instances to draw.,*vulkan firstIndex+ is the base index within the index buffer.,+vulkan vertexOffsetP is the value added to the vertex index before indexing into the vertex buffer.,,vulkan firstInstance2 is the instance ID of the first instance to draw.,.vulkan vertexCount# is the number of vertices to draw.,/vulkan instanceCount$ is the number of instances to draw.,0vulkan firstVertex* is the index of the first vertex to draw.,1vulkan firstInstance2 is the instance ID of the first instance to draw.,3vulkanpNext is NULL6 or a pointer to a structure extending this structure.,4vulkan srcAccessMask is a bitmask of  specifying a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-maskssource access mask.,5vulkan dstAccessMask is a bitmask of  specifying a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masksdestination access mask.,6vulkan oldLayout is the old layout in an  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition.,7vulkan newLayout is the new layout in an  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition.,8vulkansrcQueueFamilyIndex# is the source queue family for a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer.,9vulkandstQueueFamilyIndex( is the destination queue family for a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer.,:vulkanimage3 is a handle to the image affected by this barrier.,;vulkansubresourceRange describes the  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-viewsimage subresource range within image" that is affected by this barrier.,=vulkan srcAccessMask is a bitmask of  specifying a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-maskssource access mask.,>vulkan dstAccessMask is a bitmask of  specifying a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masksdestination access mask.,?vulkansrcQueueFamilyIndex# is the source queue family for a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer.,@vulkandstQueueFamilyIndex( is the destination queue family for a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer.,AvulkanbufferL is a handle to the buffer whose backing memory is affected by the barrier.,Bvulkanoffset3 is an offset in bytes into the backing memory for bufferD; this is relative to the base offset as bound to the buffer (see 4).,Cvulkansize@ is a size in bytes of the affected area of backing memory for buffer, or % to use the range from offset to the end of the buffer.,Evulkan srcAccessMask is a bitmask of  specifying a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-maskssource access mask. srcAccessMask must be a valid combination of  values,Fvulkan dstAccessMask is a bitmask of  specifying a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masksdestination access mask. dstAccessMask must be a valid combination of  valuescopqlmnUBA@?>=<;:9876543210/.-,+*)('&%$#"! ,D,E,F,2,3,:,4,5,;,8,9,6,7,-,.,/,0,1,',),,,(,*,+,#,$,%,&,<,C,B,A,=,>,?,@ߐ,D,E,F,<,C,B,A,=,>,?,@,2,3,:,4,5,;,8,9,6,7,-,.,/,0,1,',),,,(,*,+,#,$,%,&opqlmnUBA@?>=<;:9876543210/.-,+*)('&%$#"! BA@?>=<;:9876543210/.-,+*)('&%$#"! 0None("#%&'-./1789;=>?FHIMSUVX_dghklmqt@vulkan=VkSubresourceLayout - Structure specifying subresource layout DescriptionIf the image is  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resourcelinear, then rowPitch,  arrayPitch and  depthPitch\ describe the layout of the image subresource in linear memory. For uncompressed formats, rowPitchs is the number of bytes between texels with the same x coordinate in adjacent rows (y coordinates differ by one).  arrayPitch is the number of bytes between texels with the same x and y coordinate in adjacent array layers of the image (array layer values differ by one).  depthPitch is the number of bytes between texels with the same x and y coordinate in adjacent slices of a 3D image (z coordinates differ by one). Expressed as an addressing formula, the starting byte of a texel in the image subresource has address: // (x,y,z,layer) are in texel coordinates address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*elementSize + offsetFor compressed formats, the rowPitchK is the number of bytes between compressed texel blocks in adjacent rows.  arrayPitchT is the number of bytes between compressed texel blocks in adjacent array layers.  depthPitchZ is the number of bytes between compressed texel blocks in adjacent slices of a 3D image. // (x,y,z,layer) are in compressed texel block coordinates address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*compressedTexelBlockByteSize + offset; The value of  arrayPitch; is undefined for images that were not created as arrays.  depthPitch is defined only for 3D images.If the image has a  single-plane! color format and its tiling is  , then the  aspectMask member of  must be d.;If the image has a depth/stencil format and its tiling is  , then  aspectMask must be either dx or dy. On implementations that store depth and stencil aspects separately, querying each of these image subresource layouts will return a different offset and size representing the region of memory used for that aspect. On implementations that store depth and stencil aspects interleaved, the same offset and size? are returned and represent the interleaved memory allocation.If the image has a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format and its tiling is  , then the  aspectMask member of  must be d, d", or (for 3-plane formats only) dM. Querying each of these image subresource layouts will return a different offset and sizeI representing the region of memory used for that plane. If the image is disjoint , then the offset@ is relative to the base address of the plane. If the image is  non-disjoint , then the offset. is relative to the base address of the image.If the image s tiling is c , then the  aspectMask member of  must be one of &VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT), where the maximum allowed plane index i is defined by the ::drmFormatModifierPlaneCount associated with the image s ::format and  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-drm-format-modifiermodifier<. The memory range used by the subresource is described by offset and size. If the image is disjoint , then the offset) is relative to the base address of the  memory plane. If the image is  non-disjoint , then the offsetA is relative to the base address of the image. If the image is  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resource non-linear, then rowPitch,  arrayPitch, and  depthPitch+ have an implementation-dependent meaning.See Alsom, , ,vulkanXVkImageCreateInfo - Structure specifying the parameters of a newly created image object DescriptionImages created with tiling equal to ^ have further restrictions on their limits and capabilities compared to images created with tiling equal to s". Creation of images with tiling  mayG not be supported unless other parameters meet all of the constraints: imageType is format is not a depth/stencil format mipLevels is 1 arrayLayers is 1samples is %usage only includes u and/or tImages created with a format from one of those listed in  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion have further restrictions on their limits and capabilities compared to images created with other formats. Creation of images with a format requiring  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionY 2CBCR conversion mayG not be supported unless other parameters meet all of the constraints: imageType is  mipLevels is 1 arrayLayers is 1samples is %Implementations mayG support additional limits and capabilities beyond those listed above.To determine the set of valid usage bits for a given format, call  .0If the size of the resultant image would exceed maxResourceSize, then , must fail and return . This failure mayW occur even when all image creation parameters satisfy their valid usage requirements.NoteFor images created without  a usageK bit is valid if it is supported for the format the image is created with.For images created with  a usageD bit is valid if it is supported for at least one of the formats a / created from the image can have (see  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views Image Views for more detail).Valid values for some image creation parameters are limited by a numerical upper bound or by inclusion in a bitset. For example, :: arrayLayers is limited by imageCreateMaxArrayLayers, defined below; and ::samples is limited by imageCreateSampleCounts, also defined below.Several limiting values are defined below, as well as assisting values from which the limiting values are derived. The limiting values are referenced by the relevant valid usage statements of .Let (uint64_t imageCreateDrmFormatModifiers[] be the set of  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-drm-format-modifierLinux DRM format modifiers that the resultant image may have.If tiling is not c , then imageCreateDrmFormatModifiers is empty.If ::pNext contains  , then imageCreateDrmFormatModifiers( contains exactly one modifier, ::drmFormatModifier.If ::pNext contains  , then imageCreateDrmFormatModifiers contains the entire array ::pDrmFormatModifiers.Let VkBool32 imageCreateMaybeLinear2 indicate if the resultant image may be  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resourcelinear.If tiling is  , then imageCreateMaybeLinear is true.If tiling is s , then imageCreateMaybeLinear is false.If tiling is c , then imageCreateMaybeLinear_ is true if and only if imageCreateDrmFormatModifiers contains DRM_FORMAT_MOD_LINEAR.Let .VkFormatFeatureFlags imageCreateFormatFeatures be the set of valid format features! available during image creation.If tiling is  , then imageCreateFormatFeatures is the value of  ^::linearTilingFeatures found by calling   with parameter format equal to ::format.If tiling is s, and if the pNext chain includes no  structure with non-zero externalFormat , then imageCreateFormatFeatures is value of  ^::optimalTilingFeatures found by calling   with parameter format equal to ::format.If tiling is s, and if the pNext chain includes a  structure with non-zero externalFormat , then imageCreateFormatFeatures is the value of ::formatFeatures obtained by  with a matching externalFormat value.If tiling is c, then the value of imageCreateFormatFeatures is found by calling T with  w::format equal to ::format and with , chained into TV:; by collecting all members of the returned array ,::pDrmFormatModifierProperties whose drmFormatModifier belongs to imageCreateDrmFormatModifiersW; and by taking the bitwise intersection, over the collected array members, of drmFormatModifierTilingFeatures. (The resultant imageCreateFormatFeatures may be empty). Let ?VkImageFormatProperties2 imageCreateImageFormatPropertiesList[] be defined as follows.If ::pNext contains no  structure with non-zero externalFormat , then $imageCreateImageFormatPropertiesList7 is the list of structures obtained by calling Tc*, possibly multiple times, as follows:The parameters T::format,  imageType, tiling, usage, and flags must be equal to those in .If ::pNext contains a  structure whose  handleTypes is not 0 , then T::pNext must contain a P structure whose  handleType is not 0 ; and Tc must' be called for each handle type in :: handleTypes, successively setting P:: handleType on each call.If ::pNext contains no . structure, or contains a structure whose  handleTypes is 0 , then T::pNext must either contain no P- structure, or contain a structure whose  handleType is 0.If tiling is c, then T::pNext must contain a  structure where  sharingMode is equal to :: sharingMode ; and, if  sharingMode is #G , then queueFamilyIndexCount and pQueueFamilyIndices must be equal to those in ; and, if flags contains , then the 6 structure included in the pNext chain of T must* be equivalent to the one included in the pNext chain of  ; and Tc must$ be called for each modifier in imageCreateDrmFormatModifiers, successively setting ::drmFormatModifier on each call.If tiling is not c, then T::pNext must contain no  structure.If any call to Tc returns an error, then $imageCreateImageFormatPropertiesList% is defined to be the empty list.If ::pNext contains a  structure with non-zero externalFormat , then $imageCreateImageFormatPropertiesList% contains a single element where: w:: maxMipLevels is # log2(max( extent.width,  extent.height,  extent.depth))# + 1. w::maxArrayLayers is  l::maxImageArrayLayers.Each component of  w:: maxExtent is  l::maxImageDimension2D. w:: sampleCounts contains exactly %.Let  uint32_t imageCreateMaxMipLevels be the minimum value of  w:: maxMipLevels in $imageCreateImageFormatPropertiesList!. The value is undefined if $imageCreateImageFormatPropertiesList is empty.Let "uint32_t imageCreateMaxArrayLayers be the minimum value of  w::maxArrayLayers in $imageCreateImageFormatPropertiesList!. The value is undefined if $imageCreateImageFormatPropertiesList is empty.Let VkExtent3D imageCreateMaxExtent2 be the component-wise minimum over all  w:: maxExtent values in $imageCreateImageFormatPropertiesList!. The value is undefined if $imageCreateImageFormatPropertiesList is empty.Let *VkSampleCountFlags imageCreateSampleCounts' be the intersection of each  w:: sampleCounts in $imageCreateImageFormatPropertiesList!. The value is undefined if $imageCreateImageFormatPropertiesList is empty. Valid Usage3Each of the following values (as described in  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits) must not be undefined imageCreateMaxMipLevels, imageCreateMaxArrayLayers, imageCreateMaxExtent , and imageCreateSampleCountsXIf  sharingMode is #G, pQueueFamilyIndices must( be a valid pointer to an array of queueFamilyIndexCount uint32_t valuesIf  sharingMode is #G, queueFamilyIndexCount must be greater than 1If  sharingMode is #G, each element of pQueueFamilyIndices must be unique and must be less than pQueueFamilyPropertyCount returned by either  e or Tf for the physicalDevice that was used to create deviceIf the pNext chain includes a  structure, and its externalFormat member is non-zero the format must be EIf the pNext chain does not include a ! structure, or does and its externalFormat member is 0 , the format must not be E extent.width must be greater than 0 extent.height must be greater than 0 extent.depth must be greater than 0 mipLevels must be greater than 0 arrayLayers must be greater than 0If flags contains ,  imageType must be If flags contains r,  imageType must be If flags contains ,  imageType must be  extent.width must be less than or equal to imageCreateMaxExtent.width (as defined in  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits) extent.height must be less than or equal to imageCreateMaxExtent.height (as defined in  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits) extent.depth must be less than or equal to imageCreateMaxExtent.depth (as defined in  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits)If  imageType is  and flags contains ,  extent.width and  extent.height must be equal and  arrayLayers must be greater than or equal to 6If  imageType is  , both  extent.height and  extent.depth must be 1If  imageType is ,  extent.depth must be 1 mipLevels mustZ be less than or equal to the number of levels in the complete mipmap chain based on  extent.width,  extent.height , and  extent.depth mipLevels must be less than or equal to imageCreateMaxMipLevels (as defined in  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits) arrayLayers must be less than or equal to imageCreateMaxArrayLayers (as defined in  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits)If  imageType is ,  arrayLayers must be 1If samples is not % , then  imageType must be , flags must not contain ,  mipLevels must be equal to 1, and imageCreateMaybeLinear (as defined in  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits) must be false,If samples is not %, usage must not contain rIf usage includes d!, then bits other than w, e, and f must not be setIf usage includes w, e, d, or f,  extent.width must be less than or equal to  l::maxFramebufferWidthIf usage includes w, e, d, or f,  extent.height must be less than or equal to  l::maxFramebufferHeightIf usage includes r,  extent.width must be less than or equal to X\left\lceil{\frac{maxFramebufferWidth}{minFragmentDensityTexelSize_{width}}}\right\rceilIf usage includes r,  extent.height must be less than or equal to Z\left\lceil{\frac{maxFramebufferHeight}{minFragmentDensityTexelSize_{height}}}\right\rceilIf usage includes d, usage must# also contain at least one of w, e, or fsamples must$ be a bit value that is set in imageCreateSampleCounts (as defined in  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits) If the  thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderStorageImageMultisamplemultisampled storage images" feature is not enabled, and usage contains , samples must be % If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseBindingsparse bindings feature is not enabled, flags must not contain  If the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyAliasedsparse aliased residency feature is not enabled, flags must not contain If  imageType is , flags must not contain  If the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyImage2Dsparse residency for 2D images" feature is not enabled, and  imageType is , flags must not contain  If the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyImage3Dsparse residency for 3D images" feature is not enabled, and  imageType is , flags must not contain  If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidency2Samples*sparse residency for images with 2 samples feature is not enabled,  imageType is , and samples is %, flags must not contain  If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidency4Samples*sparse residency for images with 4 samples feature is not enabled,  imageType is , and samples is %, flags must not contain  If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidency8Samples*sparse residency for images with 8 samples feature is not enabled,  imageType is , and samples is %, flags must not contain  If the  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidency16Samples+sparse residency for images with 16 samples feature is not enabled,  imageType is , and samples is %, flags must not contain If flags contains  or  , it must also contain If any of the bits , , or  are set, d must not also be set0If the protected memory feature is not enabled, flags must not contain ZIf any of the bits , , or  are set, Z must not also be setIf the pNext chain includes a  structure, it must not contain a  structureIf the pNext chain includes a  structure, its  handleTypes member must. only contain bits that are also in P9::.externalMemoryProperties.compatibleHandleTypes, as returned by Tc with format,  imageType, tiling, usage, and flags8 equal to those in this structure, and with a P structure included in the pNext chain, with a  handleType= equal to any one of the handle types specified in :: handleTypesIf the pNext chain includes a  structure, its  handleTypes member must. only contain bits that are also in ::.externalMemoryProperties.compatibleHandleTypes, as returned by h with format,  imageType, tiling, usage, and flags1 equal to those in this structure, and with externalHandleType= equal to any one of the handle types specified in :: handleTypes,If the logical device was created with L::physicalDeviceCount equal to 1, flags must not contain KIf flags contains K , then  mipLevels must be one,  arrayLayers must be one,  imageType must be  . and imageCreateMaybeLinear (as defined in  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits) must be falseIf flags contains  , then format must be a  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#appendix-compressedtex-bcblock-compressed image format, an  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#appendix-compressedtex-etc2ETC compressed image format, or an ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#appendix-compressedtex-astcASTC compressed image formatIf flags contains  , then flags must also contain  initialLayout must be  or  If the pNext chain includes a  or  structure whose  handleTypes member is not 0,  initialLayout must be  If the image format is one of those listed in  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion , then  mipLevels must be 1 If the image format is one of those listed in  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion, samples must be % If the image format is one of those listed in  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion,  imageType must be  If the image format is one of those listed in  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion, and the ycbcrImageArrays feature is not enabled,  arrayLayers must be 1If format is a  multi-planar format, and if imageCreateFormatFeatures (as defined in  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits) does not contain g , then flags must not contain If format is not a  multi-planar format, and flags does not include , flags must not contain If tiling is c, then the pNext chain must include exactly one of  or  structuresIf the pNext chain includes a  or  structure, then tiling must be cIf tiling is c and flags contains , then the pNext chain must include a 6 structure with non-zero viewFormatCountIf flags contains   format must# be a depth or depth/stencil formatIf the pNext chain includes a  structure whose  handleTypes member includes A,  imageType must be If the pNext chain includes a  structure whose  handleTypes member includes A,  mipLevels must either be 1M or equal to the number of levels in the complete mipmap chain based on  extent.width,  extent.height , and  extent.depthIf the pNext chain includes a  structure whose externalFormat member is not 0, flags must not include If the pNext chain includes a  structure whose externalFormat member is not 0, usage must) not include any usages except vIf the pNext chain includes a  structure whose externalFormat member is not 0, tiling must be sIf format is a depth-stencil format, usage includes e, and the pNext chain includes a $ structure, then its $:: stencilUsage member must also include eIf format is a depth-stencil format, usage does not include e, and the pNext chain includes a $ structure, then its $:: stencilUsage member must also not include eIf format is a depth-stencil format, usage includes d, and the pNext chain includes a $ structure, then its $:: stencilUsage member must also include dIf format is a depth-stencil format, usage does not include d, and the pNext chain includes a $ structure, then its $:: stencilUsage member must also not include dIf J( is a depth-stencil format and the pNext chain includes a $ structure with its  stencilUsage member including f,  extent.width must be less than or equal to  l::maxFramebufferWidthIf format# is a depth-stencil format and the pNext chain includes a $ structure with its  stencilUsage member including f,  extent.height must be less than or equal to  l::maxFramebufferHeight If the  thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderStorageImageMultisamplemultisampled storage images feature is not enabled, format( is a depth-stencil format and the pNext chain includes a $ structure with its  stencilUsage including , samples must be %If flags contains ,  imageType must be  or If flags contains  , it must not contain  and the format must not be a depth/stencil formatIf flags contains  and  imageType is ,  extent.width and  extent.height must be greater than 1If flags contains  and  imageType is ,  extent.width,  extent.height, and  extent.depth must be greater than 1If usage includes q,  imageType must be If usage includes q, samples must be %If usage includes q, tiling must be sIf flags contains , tiling must be sIf flags contains ,  imageType must be If flags contains , flags must not contain If flags contains ,  mipLevels must be 1Valid Usage (Implicit)sType must be  Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , , , , , , 6, $ , or The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of 4 values imageType must be a valid P valueformat must be a valid J valuesamples must be a valid a valuetiling must be a valid O valueusage must be a valid combination of g valuesusage must not be 0 sharingMode must be a valid  value initialLayout must be a valid N value</section> = See Alsos, J, L, N, O, P, Q, a, , , ,,qvulkanoffseta is the byte offset from the start of the image or the plane where the image subresource begins.,rvulkansize0 is the size in bytes of the image subresource. size6 includes any extra memory that is required based on rowPitch.,svulkanrowPitchG describes the number of bytes between each row of texels in an image.,tvulkan arrayPitchE describes the number of bytes between each array layer of an image.,uvulkan depthPitch? describes the number of bytes between each slice of 3D image.,wvulkanpNext is NULL6 or a pointer to a structure extending this structure.,xvulkanflags is a bitmask of 40 describing additional parameters of the image.,yvulkan imageType is a P value specifying the basic dimensionality of the image. Layers in array textures do not count as a dimension for the purposes of the image type.,zvulkanformat is a JY describing the format and type of the texel blocks that will be contained in the image.,{vulkanextent is a sM describing the number of data elements in each dimension of the base level.,|vulkan mipLevelsX describes the number of levels of detail available for minified sampling of the image.,}vulkan arrayLayers& is the number of layers in the image.,~vulkansamples is a a specifying the number of  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisamplingsamples per texel.,vulkantiling is a OH value specifying the tiling arrangement of the texel blocks in memory.,vulkanusage is a bitmask of g- describing the intended usage of the image.,vulkan sharingMode is a f value specifying the sharing mode of the image when it will be accessed by multiple queue families.,vulkanpQueueFamilyIndicesF is a list of queue families that will access this image (ignored if  sharingMode is not #G).,vulkan initialLayout is a N value specifying the initial N/ of all image subresources of the image. See  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-layouts Image Layouts.,vulkan)vkCreateImage - Create a new image object Valid UsageIf the flags member of  pCreateInfo includes , creating this  must| not cause the total required sparse memory for all currently valid sparse resources on the device to exceed  l::sparseAddressSpaceSizeValid Usage (Implicit)device must be a valid  handle pCreateInfo must be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepImage must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , ,vulkan=A convenience wrapper to make a compatible pair of calls to , and ,To ensure that , is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.,vulkan(vkDestroyImage - Destroy an image object Valid Usage%All submitted commands that refer to image , either directly or via a /, must have completed executionIf  were provided when image1 was created, a compatible set of callbacks must be provided hereIf no  were provided when image was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid  handleIf image is not , image must be a valid  handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf image is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to image must be externally synchronizedSee Also, , ,vulkanNvkGetImageSubresourceLayout - Retrieve information about an image subresource DescriptionIf the image is  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resourcelinear*, then the returned layout is valid for  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-hostaccess host access.If the image s tiling is  and its format is a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format, then , describes one  format plane* of the image. If the image s tiling is c, then , describes one  memory plane* of the image. If the image s tiling is c and the image is  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resource non-lineara, then the returned layout has an implementation-dependent meaning; the vendor of the image s  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-drm-format-modifierDRM format modifier mayK provide documentation that explains how to interpret the returned layout., is invariant for the lifetime of a single image. However, the subresource layout of images in Android hardware buffer external memory is not known until the image has been bound to memory, so applications must not call ,- for such an image before it has been bound. Valid Usageimage must have been created with tiling equal to  or cThe  aspectMask member of  pSubresource must only have a single bit setThe mipLevel member of  pSubresource must be less than the  mipLevels specified in  when image was createdThe  arrayLayer member of  pSubresource must be less than the  arrayLayers specified in  when image was createdIf the tiling of the image is  and its format is a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format with two planes, the  aspectMask member of  pSubresource must be d or dIf the tiling of the image is  and its format is a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format with three planes, the  aspectMask member of  pSubresource must be d, d or dIf image was created with the A( external memory handle type, then image must be bound to memoryIf the tiling of the image is c, then the  aspectMask member of  pSubresource must be &VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT and the index i must be less than the ::drmFormatModifierPlaneCount" associated with the image s format and T::drmFormatModifierValid Usage (Implicit)device must be a valid  handleimage must be a valid  handle pSubresource must$ be a valid pointer to a valid  structurepLayout must be a valid pointer to a  structureimage must6 have been created, allocated, or retrieved from deviceSee Also, , , ,vulkandevice. is the logical device that creates the image.vulkan pCreateInfo is a pointer to a A structure containing parameters to be used to create the image.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.,vulkandevice/ is the logical device that destroys the image.vulkanimage is the image to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.,vulkandevice+ is the logical device that owns the image.vulkanimage, is the image whose layout is being queried.vulkan pSubresource is a pointer to a A structure selecting a specific image for the image subresource.1N     -,p,r,q,s,t,u,v,{,x,,w,~,z,,,,y,|,},,,,,D,,,,,v,{,x,,w,~,z,,,,y,|,},,p,r,q,s,t,u-N          None("#%&'-./1789;=>?FHIMSUVX_dghklmqt/vulkanwVkPhysicalDeviceImageDrmFormatModifierInfoEXT - Structure specifying a DRM format modifier as image creation parameter DescriptionIf the drmFormatModifier4 is incompatible with the parameters specified in T and its pNext chain, then Tc returns . The implementation must support the query of any drmFormatModifier1, including unknown and invalid modifier values. Valid UsageIf  sharingMode is #G , then pQueueFamilyIndices must( be a valid pointer to an array of queueFamilyIndexCount uint32_t valuesIf  sharingMode is #G , then queueFamilyIndexCount must be greater than 1If  sharingMode is #G, each element of pQueueFamilyIndices must be unique and must be less than the pQueueFamilyPropertyCount returned by Tf for the physicalDevice that was used to create deviceValid Usage (Implicit)sType must be   sharingMode must be a valid  valueSee Also, vulkan[VkImageDrmFormatModifierPropertiesEXT - Properties of an image s Linux DRM format modifier DescriptionIf the image was created with , then the returned drmFormatModifier mustI belong to the list of modifiers provided at time of image creation in ::pDrmFormatModifiers . If the image was created with , then the returned drmFormatModifier must9 be the modifier provided at time of image creation in ::drmFormatModifier.Valid Usage (Implicit)See Also, ,vulkanVkImageDrmFormatModifierListCreateInfoEXT - Specify that an image must be created with a DRM format modifier from the provided list Valid UsageEach modifier in pDrmFormatModifiers must+ be compatible with the parameters in 0 and its pNext' chain, as determined by querying T extended with Valid Usage (Implicit)sType must be  pDrmFormatModifiers must( be a valid pointer to an array of drmFormatModifierCount uint64_t valuesdrmFormatModifierCount must be greater than 0See AlsovulkanVkImageDrmFormatModifierExplicitCreateInfoEXT - Specify that an image be created with the provided DRM format modifier and explicit memory layout DescriptionThe i th member of  pPlaneLayouts& describes the layout of the image s ith  memory plane (that is, &VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT). In each element of  pPlaneLayouts, the implementation must ignore sizeP. The implementation calculates the size of each plane, which the application can query with 0.When creating an image with p, it is the application s responsibility to satisfy all valid usage requirements. However, the implementation must validate that the provided  pPlaneLayouts#, when combined with the provided drmFormatModifier# and other creation parameters in 0 and its pNext chain, produce a valid image. (This validation is necessarily implementation-dependent and outside the scope of Vulkan, and therefore not described by valid usage requirements). If this validation fails, then 0 returns . Valid UsagedrmFormatModifier must+ be compatible with the parameters in 0 and its pNext, chain, as determined by querying T extended with drmFormatModifierPlaneCount must be equal to the ::drmFormatModifierPlaneCount associated with 0::format and drmFormatModifier, as found by querying For each element of  pPlaneLayouts, size must be 0For each element of  pPlaneLayouts,  arrayPitch must be 0 if 0:: arrayLayers is 1For each element of  pPlaneLayouts,  depthPitch must be 0 if 0:: extent.depth is 1Valid Usage (Implicit)sType must be  If drmFormatModifierPlaneCount is not 0,  pPlaneLayouts must( be a valid pointer to an array of drmFormatModifierPlaneCount  structuresSee Also, vulkantVkDrmFormatModifierPropertiesListEXT - Structure specifying the list of DRM format modifiers supported for a format DescriptionIf pDrmFormatModifierProperties is NULL , then the function returns in drmFormatModifierCount6 the number of modifiers compatible with the queried format. Otherwise, the application must set drmFormatModifierCount to the length of the array pDrmFormatModifierProperties#; the function will write at most drmFormatModifierCount, elements to the array, and will return in drmFormatModifierCount the number of elements written.Among the elements in array pDrmFormatModifierProperties, each returned drmFormatModifier must be unique.Valid Usage (Implicit)See Also, vulkanxVkDrmFormatModifierPropertiesEXT - Structure specifying properties of a format when combined with a DRM format modifier Description The returned drmFormatModifierTilingFeatures must contain at least one bit.The implementation must not return DRM_FORMAT_MOD_INVALID in drmFormatModifier. An image s memory planecount (as returned by drmFormatModifierPlaneCount) is distinct from its format planecount (in the sense of  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar Y 2CBCR formats). In d, each VK_IMAGE_ASPECT_MEMORY_PLANE/i/_BIT_EXT represents a _memory plane/ and each VK_IMAGE_ASPECT_PLANE/i_BIT a _format plane/.An image s set of  format planes) is an ordered partition of the image s contentb into separable groups of format channels. The ordered partition is encoded in the name of each . For example,  contains two  format planes; the first plane contains the green channel and the second plane contains the blue channel and red channel. If the format name does not contain PLANE9, then the format contains a single plane; for example, . Some commands, such as X, do not operate on all format channels in the image, but instead operate only on the  format planes; explicitly chosen by the application and operate on each  format plane independently.An image s set of  memory planes) is an ordered partition of the image s memory rather than the image s content. Each  memory plane; is a contiguous range of memory. The union of an image s  memory planes is not necessarily contiguous.If an image is  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resourcelinear&, then the partition is the same for  memory planes6 and for /format planes/. Therefore, if the returned drmFormatModifier is DRM_FORMAT_MOD_LINEAR, then drmFormatModifierPlaneCount must equal the format planecount, and drmFormatModifierTilingFeatures must be identical to the TB::linearTilingFeatures returned in the same pNext chain.If an image is  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resource non-linear%, then the partition of the image s memory into  memory planes! is implementation-specific and may/ be unrelated to the partition of the image s content into  format planes(. For example, consider an image whose format is , tiling is c , whose drmFormatModifier is not DRM_FORMAT_MOD_LINEAR, and flags lacks . The image has 3  format planes, and commands such  act on each  format plane& independently as if the data of each  format planem were separable from the data of the other planes. In a straightforward implementation, the implementation may* store the image s content in 3 adjacent  memory planes where each  memory plane corresponds exactly to a  format plane. However, the implementation may- also store the image s content in a single  memory planey where all format channels are combined using an implementation-private block-compressed format; or the implementation may: store the image s content in a collection of 7 adjacent  memory planes using an implementation-private sharding technique. Because the image is non-linear and non-disjoint, the implementation has much freedom when choosing the image s placement in memory.The memory planecounth applies to function parameters and structures only when the API specifies an explicit requirement on drmFormatModifierPlaneCount:. In all other cases, the /memory planecount/ is ignored.See Also, ,vulkandrmFormatModifier returns the image s  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-drm-format-modifierLinux DRM format modifier.,vulkandrmFormatModifier is the Linux DRM format modifier' with which the image will be created.,vulkan pPlaneLayouts is a pointer to an array of $ structures describing the image s  memory planes.,vulkanpDrmFormatModifiers; is a pointer to an array of /Linux DRM format modifiers/.,vulkandrmFormatModifier is the image s Linux DRM format modifier, corresponding to ::modifier or to :: pModifiers.,vulkan sharingModeF specifies how the image will be accessed by multiple queue families.,vulkanpQueueFamilyIndicesE is a list of queue families that will access the image (ignored if  sharingMode is not #G).,vulkandrmFormatModifier is a Linux DRM format modifier.,vulkandrmFormatModifierPlaneCount is the number of  memory planes in any image created with format and drmFormatModifier . An image s /memory planecount is distinct from its (format planecount/, as explained below.,vulkandrmFormatModifierTilingFeatures is a bitmask of g/ that are supported by any image created with format and drmFormatModifier.,vulkandrmFormatModifierCountO is an inout parameter related to the number of modifiers compatible with the format, as described below.,vulkanpDrmFormatModifierProperties is either NULL or an array of  structures.,vulkanRvkGetImageDrmFormatModifierPropertiesEXT - Returns an image s DRM format modifier Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessSee Also, , ,vulkandevice+ is the logical device that owns the image.device must be a valid  handlevulkanimage is the queried image.image must have been created with  VkImageCreateInfo.htmltiling equal to cimage must be a valid  handleimage must1 have been created, allocated, or retrieved from device,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,None("#%&'-./1789;=>?FHIMSUVX_dghklmqu jvulkanMVkFenceCreateInfo - Structure specifying parameters of a newly created fenceValid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of  or XThe sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of X valuesSee AlsoW, , ,,vulkanpNext is NULL6 or a pointer to a structure extending this structure.,vulkanflags is a bitmask of X9 specifying the initial state and behavior of the fence.,vulkan)vkCreateFence - Create a new fence objectValid Usage (Implicit)device must be a valid  handle pCreateInfo must be a valid pointer to a valid j structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepFence must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , , j,vulkan=A convenience wrapper to make a compatible pair of calls to , and ,To ensure that , is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.,vulkan'vkDestroyFence - Destroy a fence object Valid Usage All  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submissionqueue submission commands that refer to fence must have completed executionIf  were provided when fence1 was created, a compatible set of callbacks must be provided hereIf no  were provided when fence was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid  handleIf fence is not , fence must be a valid  handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf fence is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to fence must be externally synchronizedSee Also, , ,vulkan0vkResetFences - Resets one or more fence objects DescriptionIf any member of pFences currently has its  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importingpayload imported with temporary permanence, that fence s prior permanent payload is first restored. The remaining operations described therefore operate on the restored payload.When , is executed on the host, it defines a /fence unsignal operation/ for each fence, which resets the fence to the unsignaled state.If any member of pFences* is already in the unsignaled state when , is executed, then , has no effect on that fence. Valid UsageEach element of pFences mustk not be currently associated with any queue command that has not yet completed execution on that queueValid Usage (Implicit)device must be a valid  handlepFences must# be a valid pointer to an array of  fenceCount valid  handles fenceCount must be greater than 0Each element of pFences must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to each member of pFences must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, ,vulkan/vkGetFenceStatus - Return the status of a fence DescriptionUpon success, ,J returns the status of the fence object, with the following return codes:0 Status x Meaning    The fence specified by fenceY is signaled.    The fence specified by fenceY is unsignaled.  2 z The device has been lost. See  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device. Fence Object Status CodesIf a  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submissionqueue submissionI command is pending execution, then the value returned by this command may immediately be out of date."If the device has been lost (see  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device), , mayH return any of the above status codes. If the device has been lost and ,9 is called repeatedly, it will eventually return either  or . Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, 2svulkan&waitForFences with selectable safeness,vulkan@vkWaitForFences - Wait for one or more fences to become signaled Description#If the condition is satisfied when , is called, then ,E returns immediately. If the condition is not satisfied at the time , is called, then , will block and wait up to timeout4 nanoseconds for the condition to become satisfied.If timeout is zero, then ,F does not wait, but simply returns the current state of the fences. m will be returned in this case if the condition is not satisfied, even though no actual wait was performed.LIf the specified timeout period expires before the condition is satisfied, , returns (. If the condition is satisfied before timeout nanoseconds has expired, , returns .If device loss occurs (see  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device#) before the timeout has expired, , must$ return in finite time with either  or .NoteWhile we guarantee that , must return in finite time, no guarantees are made that it returns immediately upon device loss. However, the client can reasonably expect that the delay will be on the order of seconds and that calling ,K will not result in a permanently (or seemingly permanently) dead process.Valid Usage (Implicit)device must be a valid  handlepFences must# be a valid pointer to an array of  fenceCount valid  handles fenceCount must be greater than 0Each element of pFences must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Alsoo, , ,vulkan A variant of , which makes a *safe* FFI call,vulkandevice. is the logical device that creates the fence.vulkan pCreateInfo is a pointer to a jH structure containing information about how the fence is to be created.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.,vulkandevice/ is the logical device that destroys the fence.vulkanfence' is the handle of the fence to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.,vulkandevice, is the logical device that owns the fences.vulkanpFences4 is a pointer to an array of fence handles to reset.,vulkandevice+ is the logical device that owns the fence.device must be a valid  handlevulkanfence% is the handle of the fence to query.fence must be a valid  handlefence must1 have been created, allocated, or retrieved from device2svulkandevice, is the logical device that owns the fences.vulkanpFences is a pointer to an array of  fenceCount fence handles.vulkanwaitAll is the condition that must4 be satisfied to successfully unblock the wait. If waitAll is ,, then the condition is that all fences in pFencesG are signaled. Otherwise, the condition is that at least one fence in pFences is signaled.vulkantimeout0 is the timeout period in units of nanoseconds. timeoutd is adjusted to the closest value allowed by the implementation-dependent timeout accuracy, which may3 be substantially longer than one nanosecond, and may% be longer than the requested period.,vulkandevice, is the logical device that owns the fences.vulkanpFences is a pointer to an array of  fenceCount fence handles.vulkanwaitAll is the condition that must4 be satisfied to successfully unblock the wait. If waitAll is ,, then the condition is that all fences in pFencesG are signaled. Otherwise, the condition is that at least one fence in pFences is signaled.vulkantimeout0 is the timeout period in units of nanoseconds. timeoutd is adjusted to the closest value allowed by the implementation-dependent timeout accuracy, which may3 be substantially longer than one nanosecond, and may% be longer than the requested period.,vulkandevice, is the logical device that owns the fences.vulkanpFences is a pointer to an array of  fenceCount fence handles.vulkanwaitAll is the condition that must4 be satisfied to successfully unblock the wait. If waitAll is ,, then the condition is that all fences in pFencesG are signaled. Otherwise, the condition is that at least one fence in pFences is signaled.vulkantimeout0 is the timeout period in units of nanoseconds. timeoutd is adjusted to the closest value allowed by the implementation-dependent timeout accuracy, which may3 be substantially longer than one nanosecond, and may% be longer than the requested period.j,,,$WXYZ,,,,,,,,,,,,,,j,,,$XYZZW None("#%&'-./1789;=>?FHIMSUVX_dghklmq|3vulkanOVkQueueFamilyProperties - Structure providing information about a queue family DescriptionThe value returned in minImageTransferGranularityu has a unit of compressed texel blocks for images having a block-compressed format, and a unit of texels otherwise.Possible values of minImageTransferGranularity are:3(0,0,0) which indicates that only whole mip levels must be transferred using the image transfer operations on the corresponding queues. In this case, the following restrictions apply to all offset and extent parameters of image transfer operations:The x, y, and z members of a . parameter must always be zero.The width, height, and depth members of a s parameter musty always match the width, height, and depth of the image subresource corresponding to the parameter, respectively.(Ax, Ay, Az) where Ax, Ay, and Az are all integer powers of two. In this case the following restrictions apply to all image transfer operations:x, y, and z of a . parameter must: be integer multiples of Ax, Ay, and Az, respectively.width of a s parameter must' be an integer multiple of Ax, or else x + width mustM equal the width of the image subresource corresponding to the parameter.height of a s parameter must' be an integer multiple of Ay, or else y + height mustN equal the height of the image subresource corresponding to the parameter.depth of a s parameter must' be an integer multiple of Az, or else z + depth mustM equal the depth of the image subresource corresponding to the parameter.If the format of the image corresponding to the parameters is one of the block-compressed formats then for the purposes of the above calculations the granularity must; be scaled up by the compressed texel block dimensions.5Queues supporting graphics and/or compute operations must report (1,1,1) in minImageTransferGranularity, meaning that there are no additional restrictions on the granularity of image transfer operations for these queues. Other queues supporting image transfer operations are only required- to support whole mip level transfers, thus minImageTransferGranularity. for queues belonging to such queue families may be (0,0,0).The  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device Device MemoryG section describes memory properties queried from the physical device.-For physical device feature queries see the  Vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#featuresFeatures chapter.See Alsos, T/,  , -4vulkanaVkPhysicalDeviceSparseProperties - Structure specifying physical device sparse memory propertiesSee Alsoo, 55vulkanMVkPhysicalDeviceProperties - Structure specifying physical device properties DescriptionNote The value of  apiVersion may, be different than the version returned by :; either higher or lower. In such cases, the application must` not use functionality that exceeds the version of Vulkan associated with a given object. The  pApiVersion parameter returned by # is the version associated with a ! and its children, except for a  and its children. 5:: apiVersion# is the version associated with a  and its children.The vendorID and deviceID fields are provided to allow applications to adapt to device characteristics that are not adequately exposed by other Vulkan queries.NoteThese mayJ include performance profiles, hardware errata, or other characteristics.The vendor identified by vendorIDj is the entity responsible for the most salient characteristics of the underlying implementation of the  being queried.Note@For example, in the case of a discrete GPU implementation, this shouldq be the GPU chipset vendor. In the case of a hardware accelerator integrated into a system-on-chip (SoC), this shouldC be the supplier of the silicon IP used to create the accelerator.If the vendor has a  .https://pcisig.com/membership/member-companies PCI vendor ID, the low 16 bits of vendorID must5 contain that PCI vendor ID, and the remaining bits must0 be set to zero. Otherwise, the value returned must= be a valid Khronos vendor ID, obtained as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vulkan-styleguide?Vulkan Documentation and Extensions: Procedures and Conventions document in the section Registering a Vendor ID with Khronos . Khronos vendor IDs are allocated starting at 0x10000, to distinguish them from the PCI vendor ID namespace. Khronos vendor IDs are symbolically defined in the   type.9The vendor is also responsible for the value returned in deviceID3. If the implementation is driven primarily by a  https://pcisig.com/ PCI device with a  https://pcisig.com/ PCI device ID, the low 16 bits of deviceID must4 contain that PCI device ID, and the remaining bits mustA be set to zero. Otherwise, the choice of what values to return may= be dictated by operating system or platform policies - but should uniquely identify both the device version and any major configuration options (for example, core count in the case of multicore devices).NoteThe same device ID should be used for all physical implementations of that device version and configuration. For example, all uses of a specific silicon IP GPU version and configuration shouldE use the same device ID, even if those uses occur in different SoCs.See Also7, T, 4,  , -6vulkanZVkPhysicalDeviceMemoryProperties - Structure specifying physical device memory properties DescriptionThe 6" structure describes a number of  memory heaps as well as a number of  memory types that can be used to access memory allocated in those heaps. Each heap describes a memory resource of a particular size, and each memory type describes a set of memory properties (e.g. host cached vs uncached) that can be used with a given memory heap. Allocations using a particular memory type will consume resources from the heap indicated by that memory type s heap index. More than one memory type may share each heap, and the heaps and memory types provide a mechanism to advertise an accurate size of the physical memory resources while allowing the memory to be used with a variety of different properties.'The number of memory heaps is given by memoryHeapCount and is less than or equal to /. Each heap is described by an element of the  memoryHeaps array as a :V structure. The number of memory types available across all memory heaps is given by memoryTypeCount and is less than or equal to 6. Each memory type is described by an element of the  memoryTypes array as a 9 structure.At least one heap must include g in :::flagsW. If there are multiple heaps that all have similar performance characteristics, they may all include g. In a unified memory architecture (UMA) system there is often only a single memory heap which is considered to be equally local  to the host and to the device, and such an implementation must% advertise the heap as device-local.Each memory type returned by - must have its  propertyFlags$ set to one of the following values:0R | QR | PR | P | QSS | R | QS | R | PS | R | P | QS | OLL | SR | Q | MR | P | Q | MS | MS | R | Q | MS | R | P | Q | MR | Q | M | NR | P | Q | M | NS | M | NS | R | Q | M | NS | R | P | Q | M | NThere must, be at least one memory type with both the R and Q bits set in its  propertyFlags. There must( be at least one memory type with the S bit set in its  propertyFlags . If the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceCoherentMemorydeviceCoherentMemory feature is enabled, there must' be at least one memory type with the M bit set in its  propertyFlags.For each pair of elements X and Y returned in  memoryTypes, X must* be placed at a lower index position than Y if:%the set of bit flags returned in the  propertyFlags member of XF is a strict subset of the set of bit flags returned in the  propertyFlags member of Y; orthe  propertyFlags members of X and Y are equal, and Xv belongs to a memory heap with greater performance (as determined in an implementation-specific manner) ; orthe  propertyFlags members of Y includes M or N and X does notNote)There is no ordering requirement between X and Y elements for the case their  propertyFlags members are not in a subset relation. That potentially allows more than one possible way to order the same set of memory types. Notice that the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-bitmask-list5list of all allowed memory property flag combinations/ is written in a valid order. But if instead S was before R | Q,, the list would still be in a valid order.There may be a performance penalty for using device coherent or uncached device memory types, and using these accidentally is undesirable. In order to avoid this, memory types with these properties always appear at the end of the list; but are subject to the same rules otherwise.This ordering requirement enables applications to use a simple search loop to select the desired memory type along the lines of:  // Find a memory in `memoryTypeBitsRequirement` that includes all of `requiredProperties` int32_t findProperties(const VkPhysicalDeviceMemoryProperties* pMemoryProperties, uint32_t memoryTypeBitsRequirement, VkMemoryPropertyFlags requiredProperties) { const uint32_t memoryCount = pMemoryProperties->memoryTypeCount; for (uint32_t memoryIndex = 0; memoryIndex < memoryCount; ++memoryIndex) { const uint32_t memoryTypeBits = (1 << memoryIndex); const bool isRequiredMemoryType = memoryTypeBitsRequirement & memoryTypeBits; const VkMemoryPropertyFlags properties = pMemoryProperties->memoryTypes[memoryIndex].propertyFlags; const bool hasRequiredProperties = (properties & requiredProperties) == requiredProperties; if (isRequiredMemoryType && hasRequiredProperties) return static_cast<int32_t>(memoryIndex); } // failed to find memory type return -1; } // Try to find an optimal memory type, or if it does not exist try fallback memory type // `device` is the VkDevice // `image` is the VkImage that requires memory to be bound // `memoryProperties` properties as returned by vkGetPhysicalDeviceMemoryProperties // `requiredProperties` are the property flags that must be present // `optimalProperties` are the property flags that are preferred by the application VkMemoryRequirements memoryRequirements; vkGetImageMemoryRequirements(device, image, &memoryRequirements); int32_t memoryType = findProperties(&memoryProperties, memoryRequirements.memoryTypeBits, optimalProperties); if (memoryType == -1) // not found; try fallback properties memoryType = findProperties(&memoryProperties, memoryRequirements.memoryTypeBits, requiredProperties);See Also:, 9, T, -7vulkan]VkPhysicalDeviceLimits - Structure reporting implementation-dependent physical device limitsMembersThe 7D are properties of the physical device. These are available in the limits member of the 5# structure which is returned from -. Description 1For all bitmasks of a, the sample count limits defined above represent the minimum supported sample counts for each image type. Individual images mayE support additional sample counts, which are queried using - as described in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-supported-sample-countsSupported Sample Counts.See Alsoo, m, 5, `8vulkanuVkPhysicalDeviceFeatures - Structure describing the fine-grained features that can be supported by an implementationMembersThe members of the 8, structure describe the following features:See Alsoo,  , T, -9vulkan/VkMemoryType - Structure specifying memory typeSee AlsoI, 6:vulkan1VkMemoryHeap - Structure specifying a memory heapSee Alsom, c, 6;vulkanSVkInstanceCreateInfo - Structure specifying parameters of a newly created instanceValid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , ,  , or  The sType value of each struct in the pNext chain must be uniqueflags must be 0If pApplicationInfo is not NULL, pApplicationInfo must$ be a valid pointer to a valid > structureIf enabledLayerCount is not 0, ppEnabledLayerNames must( be a valid pointer to an array of enabledLayerCount# null-terminated UTF-8 stringsIf enabledExtensionCount is not 0, ppEnabledExtensionNames must# be a valid pointer to an array of enabledExtensionCount# null-terminated UTF-8 stringsSee Also>, , , -<vulkanJVkImageFormatProperties - Structure specifying an image format propertiesMembers maxExtent0 are the maximum image dimensions. See the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extentperimagetypeAllowed Extent Values< section below for how these values are constrained by type. maxMipLevels. is the maximum number of mipmap levels.  maxMipLevels mustQ be equal to the number of levels in the complete mipmap chain based on the maxExtent.width, maxExtent.height, and maxExtent.depthM, except when one of the following conditions is true, in which case it may instead be 1:-::tiling was T::tiling was the T::pNext chain included a P2 structure with a handle type included in the  handleTypes: member for which mipmap image support is not requiredimage format is one of those listed in xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionflags contains LmaxArrayLayers- is the maximum number of array layers. maxArrayLayers must be no less than 7::maxImageArrayLayersM, except when one of the following conditions is true, in which case it may instead be 1:tiling is tiling is  and type is format is one of those listed in xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionIf tiling is  , then maxArrayLayers must not be 0. sampleCounts is a bitmask of aW specifying all the supported sample counts for this image as described  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-supported-sample-countsbelow.maxResourceSizeo is an upper bound on the total image size in bytes, inclusive of all image subresources. Implementations mayj have an address space limit on total size of a resource, which is advertised by this property. maxResourceSize must be at least 231. DescriptionNotefThere is no mechanism to query the size of an image before creating it, to compare that size against maxResourceSizef. If an application attempts to create an image that exceeds this limit, the creation will fail and 0 will return . While the advertised limit must be at least 231, it mayR not be possible to create an image that approaches that size, particularly for .%If the combination of parameters to -4 is not supported by the implementation for use in 0, then all members of < will be filled with zero.NoteFilling < with zero for unsupported formats is an exception to the usual rule that output structures have undefined contents on error. This exception was unintentional, but is preserved for backwards compatibility.See Alsom, s, , TV, `, -=vulkanAVkFormatProperties - Structure specifying image format properties DescriptionNote{If no format feature flags are supported, the format itself is not supported, and images of that format cannot be created.If format$ is a block-compressed format, then bufferFeatures must* not support any features for the format.If format" is not a multi-plane format then linearTilingFeatures and optimalTilingFeatures must not contain .See Also, TB, ->vulkan9VkApplicationInfo - Structure specifying application info Description4Vulkan 1.0 implementations were required to return  if  apiVersionI was larger than 1.0. Implementations that support Vulkan 1.1 or later must not return  for any value of  apiVersion.Note#Because Vulkan 1.0 implementations may fail with , applications should; determine the version of Vulkan available before calling - . If the - returns NULL for A, it is a Vulkan 1.0 implementation. Otherwise, the application can call % to determine the version of Vulkan.FAs long as the instance supports at least Vulkan 1.1, an application canb use different versions of Vulkan with an instance than it does with a device or physical device.Note)The Khronos validation layers will treat  apiVersion9 as the highest API version the application targets, and will validate API usage against the minimum of that version and the implementation version (instance or device, depending on context). If an application tries to use functionality from a greater version than this, a validation error will be triggered.For example, if the instance supports Vulkan 1.1 and three physical devices support Vulkan 1.0, Vulkan 1.1, and Vulkan 1.2, respectively, and if the application sets  apiVersion to 1.2, the application can' use the following versions of Vulkan: Vulkan 1.0 can> be used with the instance and with all physical devices. Vulkan 1.1 cane be used with the instance and with the physical devices that support Vulkan 1.1 and Vulkan 1.2. Vulkan 1.2 can@ be used with the physical device that supports Vulkan 1.2.<If we modify the above example so that the application sets  apiVersion to 1.1, then the application mustS not use Vulkan 1.2 functionality on the physical device that supports Vulkan 1.2.Implicit layers mustC be disabled if they do not support a version at least as high as  apiVersion . See the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#LoaderAndLayerInterface5Vulkan Loader Specification and Architecture Overview& document for additional information.Note Providing a NULL ;::pApplicationInfo or providing an  apiVersion$ of 0 is equivalent to providing an  apiVersion of VK_MAKE_VERSION(1,0,0). Valid UsageIf  apiVersion is not 0 , then it must be greater or equal to Valid Usage (Implicit)sType must be pNext must be NULLIf pApplicationName is not NULL, pApplicationName must' be a null-terminated UTF-8 stringIf  pEngineName is not NULL,  pEngineName must' be a null-terminated UTF-8 stringSee Also;, ,vulkanmaxImageDimension1D is the largest dimension (widthE) that is guaranteed to be supported for all images created with an  imageType of ?. Some combinations of image parameters (format, usage, etc.) may- allow support for larger dimensions, which can be queried using -.,vulkanmaxImageDimension2D is the largest dimension (width or heightF) that is guaranteed to be supported for all images created with an  imageType of  and without M set in flags?. Some combinations of image parameters (format, usage, etc.) may, allow support for larger dimensions, which can be queried using -.,vulkanmaxImageDimension3D is the largest dimension (width, height, or depthE) that is guaranteed to be supported for all images created with an  imageType of ?. Some combinations of image parameters (format, usage, etc.) may- allow support for larger dimensions, which can be queried using -.,vulkanmaxImageDimensionCube is the largest dimension (width or heightF) that is guaranteed to be supported for all images created with an  imageType of  and with M set in flags?. Some combinations of image parameters (format, usage, etc.) may, allow support for larger dimensions, which can be queried using -.,vulkanmaxImageArrayLayers" is the maximum number of layers ( arrayLayers) for an image.,vulkanmaxTexelBufferElementsp is the maximum number of addressable texels for a buffer view created on a buffer which was created with the z[ or z\ set in the usage member of the  structure.,vulkanmaxUniformBufferRange is the maximum value that can be specified in the range member of any  v! structures passed to a call to   for descriptors of type o or o.,vulkanmaxStorageBufferRange is the maximum value that can be specified in the range member of any  v! structures passed to a call to   for descriptors of type o or o.,vulkanmaxPushConstantsSize} is the maximum size, in bytes, of the pool of push constant memory. For each of the push constant ranges indicated by the pPushConstantRanges member of the 9 structure, (offset + size) must% be less than or equal to this limit.,vulkanmaxMemoryAllocationCountD is the maximum number of device memory allocations, as created by 3 , which can simultaneously exist.,vulkanmaxSamplerAllocationCount: is the maximum number of sampler objects, as created by =, which can# simultaneously exist on a device.,vulkanbufferImageGranularityg is the granularity, in bytes, at which buffer or linear image resources, and optimal image resources can+ be bound to adjacent offsets in the same /8 object without aliasing. See  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-bufferimagegranularityBuffer-Image Granularity for more details.,vulkansparseAddressSpaceSize is the total amount of address space available, in bytes, for sparse memory resources. This is an upper bound on the sum of the size of all sparse resources, regardless of whether any memory is bound to them.,vulkanmaxBoundDescriptorSets0 is the maximum number of descriptor sets that can, be simultaneously used by a pipeline. All /C decorations in shader modules must have a value less than maxBoundDescriptorSets. See  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sets.,vulkanmaxPerStageDescriptorSamplers) is the maximum number of samplers that can[ be accessible to a single shader stage in a pipeline layout. Descriptors with a type of o or ob] count against this limit. Only descriptors in descriptor set layouts created without the p[ bit set count against this limit. A descriptor is accessible to a shader stage when the  stageFlags member of the  ~8 structure has the bit for that shader stage set. See  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampler and  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesampler.,vulkan#maxPerStageDescriptorUniformBuffers0 is the maximum number of uniform buffers that can[ be accessible to a single shader stage in a pipeline layout. Descriptors with a type of o or o] count against this limit. Only descriptors in descriptor set layouts created without the p[ bit set count against this limit. A descriptor is accessible to a shader stage when the  stageFlags member of the  ~8 structure has the bit for that shader stage set. See  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbuffer and  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic.,vulkan#maxPerStageDescriptorStorageBuffers0 is the maximum number of storage buffers that can[ be accessible to a single shader stage in a pipeline layout. Descriptors with a type of o or o] count against this limit. Only descriptors in descriptor set layouts created without the pd bit set count against this limit. A descriptor is accessible to a pipeline shader stage when the  stageFlags member of the  ~8 structure has the bit for that shader stage set. See  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebuffer and  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic.,vulkan"maxPerStageDescriptorSampledImages/ is the maximum number of sampled images that can[ be accessible to a single shader stage in a pipeline layout. Descriptors with a type of ob, oa, or o] count against this limit. Only descriptors in descriptor set layouts created without the pd bit set count against this limit. A descriptor is accessible to a pipeline shader stage when the  stageFlags member of the  ~8 structure has the bit for that shader stage set. See  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesampler,  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage, and  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer.,vulkan"maxPerStageDescriptorStorageImages/ is the maximum number of storage images that can[ be accessible to a single shader stage in a pipeline layout. Descriptors with a type of o`, or o] count against this limit. Only descriptors in descriptor set layouts created without the pd bit set count against this limit. A descriptor is accessible to a pipeline shader stage when the  stageFlags member of the  ~8 structure has the bit for that shader stage set. See  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage, and  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer.,vulkan%maxPerStageDescriptorInputAttachments2 is the maximum number of input attachments that can[ be accessible to a single shader stage in a pipeline layout. Descriptors with a type of o^] count against this limit. Only descriptors in descriptor set layouts created without the pd bit set count against this limit. A descriptor is accessible to a pipeline shader stage when the  stageFlags member of the  ~j structure has the bit for that shader stage set. These are only supported for the fragment stage. See  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inputattachment.,vulkanmaxPerStageResources) is the maximum number of resources that can\ be accessible to a single shader stage in a pipeline layout. Descriptors with a type of ob, oa, o`, o, o, o, o, o, o, or o^] count against this limit. Only descriptors in descriptor set layouts created without the p bit set count against this limit. For the fragment shader stage the framebuffer color attachments also count against this limit.,vulkanmaxDescriptorSetSamplers( is the maximum number of samplers that can@ be included in a pipeline layout. Descriptors with a type of o or ob] count against this limit. Only descriptors in descriptor set layouts created without the p) bit set count against this limit. See  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampler and  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesampler.,vulkanmaxDescriptorSetUniformBuffers0 is the maximum number of uniform buffers that can@ be included in a pipeline layout. Descriptors with a type of o or o] count against this limit. Only descriptors in descriptor set layouts created without the p) bit set count against this limit. See  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbuffer and  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic.,vulkan%maxDescriptorSetUniformBuffersDynamic8 is the maximum number of dynamic uniform buffers that can@ be included in a pipeline layout. Descriptors with a type of o] count against this limit. Only descriptors in descriptor set layouts created without the p) bit set count against this limit. See  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic.,vulkanmaxDescriptorSetStorageBuffers0 is the maximum number of storage buffers that can@ be included in a pipeline layout. Descriptors with a type of o or o] count against this limit. Only descriptors in descriptor set layouts created without the p) bit set count against this limit. See  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebuffer and  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic.,vulkan%maxDescriptorSetStorageBuffersDynamic8 is the maximum number of dynamic storage buffers that can@ be included in a pipeline layout. Descriptors with a type of o] count against this limit. Only descriptors in descriptor set layouts created without the p) bit set count against this limit. See  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic.,vulkanmaxDescriptorSetSampledImages/ is the maximum number of sampled images that can? be included in a pipeline layout. Descriptors with a type of ob, oa, or o] count against this limit. Only descriptors in descriptor set layouts created without the p) bit set count against this limit. See  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesampler,  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage, and  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer.,vulkanmaxDescriptorSetStorageImages/ is the maximum number of storage images that can? be included in a pipeline layout. Descriptors with a type of o`, or o] count against this limit. Only descriptors in descriptor set layouts created without the p) bit set count against this limit. See  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage, and  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer.,vulkan maxDescriptorSetInputAttachments2 is the maximum number of input attachments that can@ be included in a pipeline layout. Descriptors with a type of o^] count against this limit. Only descriptors in descriptor set layouts created without the p) bit set count against this limit. See  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inputattachment.,vulkanmaxVertexInputAttributes8 is the maximum number of vertex input attributes that canM be specified for a graphics pipeline. These are described in the array of 7K structures that are provided at graphics pipeline creation time via the pVertexAttributeDescriptions member of the 7 structure. See  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-attrib and  \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input.,vulkanmaxVertexInputBindings/ is the maximum number of vertex buffers that canl be specified for providing vertex attributes to a graphics pipeline. These are described in the array of 7K structures that are provided at graphics pipeline creation time via the pVertexBindingDescriptions member of the 7 structure. The binding member of 7 must be less than this limit. See  \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input.-vulkanmaxVertexInputAttributeOffset4 is the maximum vertex input attribute offset that can3 be added to the vertex input binding stride. The offset member of the 7 structure must+ be less than or equal to this limit. See  \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input.-vulkanmaxVertexInputBindingStride2 is the maximum vertex input binding stride that can- be specified in a vertex input binding. The stride member of the 7 structure must+ be less than or equal to this limit. See  \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input.-vulkanmaxVertexOutputComponents@ is the maximum number of components of output variables which can$ be output by a vertex shader. See  \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-vertex.-vulkanmaxTessellationGenerationLevelw is the maximum tessellation generation level supported by the fixed-function tessellation primitive generator. See  Zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellation.-vulkanmaxTessellationPatchSize: is the maximum patch size, in vertices, of patches that can\ be processed by the tessellation control shader and tessellation primitive generator. The patchControlPoints member of the 7O structure specified at pipeline creation time and the value provided in the OutputVertices" execution mode of shader modules must, be less than or equal to this limit. See  Zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellation.-vulkan.maxTessellationControlPerVertexInputComponents? is the maximum number of components of input variables which canL be provided as per-vertex inputs to the tessellation control shader stage.-vulkan/maxTessellationControlPerVertexOutputComponentsK is the maximum number of components of per-vertex output variables which can7 be output from the tessellation control shader stage.-vulkan.maxTessellationControlPerPatchOutputComponentsJ is the maximum number of components of per-patch output variables which can7 be output from the tessellation control shader stage.-vulkan+maxTessellationControlTotalOutputComponents` is the maximum total number of components of per-vertex and per-patch output variables which can6 be output from the tessellation control shader stage.- vulkan(maxTessellationEvaluationInputComponents? is the maximum number of components of input variables which canO be provided as per-vertex inputs to the tessellation evaluation shader stage.- vulkan)maxTessellationEvaluationOutputComponentsK is the maximum number of components of per-vertex output variables which can: be output from the tessellation evaluation shader stage.- vulkanmaxGeometryShaderInvocationsf is the maximum invocation count supported for instanced geometry shaders. The value provided in the  Invocations# execution mode of shader modules must, be less than or equal to this limit. See  Vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometry.- vulkanmaxGeometryInputComponents? is the maximum number of components of input variables which can5 be provided as inputs to the geometry shader stage.- vulkanmaxGeometryOutputComponents@ is the maximum number of components of output variables which can* be output from the geometry shader stage.-vulkanmaxGeometryOutputVertices* is the maximum number of vertices which can# be emitted by any geometry shader.-vulkan maxGeometryTotalOutputComponentsZ is the maximum total number of components of output, across all emitted vertices, which can+ be output from the geometry shader stage.-vulkanmaxFragmentInputComponents? is the maximum number of components of input variables which can5 be provided as inputs to the fragment shader stage.-vulkanmaxFragmentOutputAttachments4 is the maximum number of output attachments which can, be written to by the fragment shader stage.-vulkanmaxFragmentDualSrcAttachments4 is the maximum number of output attachments which can~ be written to by the fragment shader stage when blending is enabled and one of the dual source blend modes is in use. See  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb and  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dualSrcBlend dualSrcBlend.-vulkan"maxFragmentCombinedOutputResourcesE is the total number of storage buffers, storage images, and output Location- decorated color attachments (described in  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutputFragment Output Interface ) which can& be used in the fragment shader stage.-vulkanmaxComputeSharedMemorySizeY is the maximum total storage size, in bytes, available for variables declared with the  Workgroup/ storage class in shader modules (or with the shared} storage qualifier in GLSL) in the compute shader stage. The amount of storage consumed by the variables declared with the  Workgroup storage class is implementation-dependent. However, the amount of storage consumed may not exceed the largest block size that would be obtained if all active variables declared with  Workgroup storage class were assigned offsets in an arbitrary order by successively taking the smallest valid offset according to the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources-standard-layoutStandard Storage Buffer LayoutD rules. (This is equivalent to using the GLSL std430 layout rules.)-vulkanmaxComputeWorkGroupCount4[3] is the maximum number of local workgroups that can be dispatched by a single dispatch command. These three values represent the maximum number of local workgroups for the X, Y, and Z dimensions, respectively. The workgroup count parameters to the dispatch commands must9 be less than or equal to the corresponding limit. See  Vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dispatch.-vulkanmaxComputeWorkGroupInvocations is the maximum total number of compute shader invocations in a single local workgroup. The product of the X, Y, and Z sizes, as specified by the  LocalSizeE execution mode in shader modules or by the object decorated by the  WorkgroupSize decoration, must% be less than or equal to this limit.-vulkanmaxComputeWorkGroupSize[3] is the maximum size of a local compute workgroup, per dimension. These three values represent the maximum local workgroup size in the X, Y, and Z dimensions, respectively. The x, y, and z sizes, as specified by the  LocalSize3 execution mode or by the object decorated by the  WorkgroupSize decoration in shader modules, must2 be less than or equal to the corresponding limit.-vulkansubPixelPrecisionBitsY is the number of bits of subpixel precision in framebuffer coordinates xf and yf. See  Whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast.-vulkansubTexelPrecisionBits is the number of bits of precision in the division along an axis of an image used for minification and magnification filters. 2subTexelPrecisionBits is the actual number of divisions along each axis of the image represented. Sub-texel values calculated during image sampling will snap to these locations when generating the filtered results.-vulkanmipmapPrecisionBits is the number of bits of division that the LOD calculation for mipmap fetching get snapped to when determining the contribution from each mip level to the mip filtered results. 2mipmapPrecisionBits# is the actual number of divisions.-vulkanmaxDrawIndexedIndexValue! is the maximum index value that can be used for indexed draw calls when using 32-bit indices. This excludes the primitive restart index value of 0xFFFFFFFF. See  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fullDrawIndexUint32fullDrawIndexUint32.-vulkanmaxDrawIndirectCountL is the maximum draw count that is supported for indirect draw calls. See  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirectmultiDrawIndirect.-vulkanmaxSamplerLodBias; is the maximum absolute sampler LOD bias. The sum of the  mipLodBias member of the =? structure and the BiasE operand of image sampling operations in shader modules (or 0 if no BiasR operand is provided to an image sampling operation) are clamped to the range [-maxSamplerLodBias,+maxSamplerLodBias]. See  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-mipLodBias.-vulkanmaxSamplerAnisotropy is the maximum degree of sampler anisotropy. The maximum degree of anisotropic filtering used for an image sampling operation is the minimum of the  maxAnisotropy member of the =? structure and this limit. See  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-maxAnisotropy.-vulkan maxViewports1 is the maximum number of active viewports. The  viewportCount member of the 7"2 structure that is provided at pipeline creation must& be less than or equal to this limit.- vulkanmaxViewportDimensions[2] are the maximum viewport dimensions in the X (width) and Y (height) dimensions, respectively. The maximum viewport dimensions must6 be greater than or equal to the largest image which can7 be created and used as a framebuffer attachment. See  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-viewportControlling the Viewport.-!vulkanviewportBoundsRangeD[2] is the [minimum, maximum] range that the corners of a viewport must be contained in. This range must be at least [-2 size, 2 size - 1], where size = max(maxViewportDimensions[0], maxViewportDimensions [1]). See  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-viewportControlling the Viewport.NoteThe intent of the viewportBoundsRange limit is to allow a maximum sized viewport to be arbitrarily shifted relative to the output target as long as at least some portion intersects. This would give a bounds limit of [-size + 1, 2 size - 1] which would allow all possible non-empty-set intersections of the output target and the viewport. Since these numbers are typically powers of two, picking the signed number range using the smallest possible number of bits ends up with the specified range.-"vulkanviewportSubPixelBits is the number of bits of subpixel precision for viewport bounds. The subpixel precision that floating-point viewport bounds are interpreted at is given by this limit.-#vulkanminMemoryMapAlignment is the minimum required alignment, in bytes, of host visible memory allocations within the host address space. When mapping a memory allocation with 3, subtracting offset^ bytes from the returned pointer will always produce an integer multiple of this limit. See  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-hostaccess.-$vulkanminTexelBufferOffsetAlignment is the minimum required alignment, in bytes, for the offset member of the # structure for texel buffers. If  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignmenttexelBufferAlignment> is enabled, this limit is equivalent to the maximum of the  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-uniformTexelBufferOffsetAlignmentBytes&uniformTexelBufferOffsetAlignmentBytes and  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-storageTexelBufferOffsetAlignmentBytes&storageTexelBufferOffsetAlignmentBytes members of 4, but smaller alignment is optionally: allowed by  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-storageTexelBufferOffsetSingleTexelAlignment,storageTexelBufferOffsetSingleTexelAlignment and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-uniformTexelBufferOffsetSingleTexelAlignment,uniformTexelBufferOffsetSingleTexelAlignment. If  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignmenttexelBufferAlignment is not enabled, ::offset must be a multiple of this value.-%vulkanminUniformBufferOffsetAlignment is the minimum required alignment, in bytes, for the offset member of the  v< structure for uniform buffers. When a descriptor of type o or o is updated, the offset mustW be an integer multiple of this limit. Similarly, dynamic offsets for uniform buffers must be multiples of this limit.-&vulkanminStorageBufferOffsetAlignment is the minimum required alignment, in bytes, for the offset member of the  v< structure for storage buffers. When a descriptor of type o or o is updated, the offset mustW be an integer multiple of this limit. Similarly, dynamic offsets for storage buffers must be multiples of this limit.-'vulkanminTexelOffset% is the minimum offset value for the  ConstOffset image operand of any of the  OpImageSample* or  OpImageFetch* image instructions.-(vulkanmaxTexelOffset% is the maximum offset value for the  ConstOffset image operand of any of the  OpImageSample* or  OpImageFetch* image instructions.-)vulkanminTexelGatherOffset% is the minimum offset value for the Offset,  ConstOffset, or  ConstOffsets image operands of any of the OpImage*Gather image instructions.-*vulkanmaxTexelGatherOffset% is the maximum offset value for the Offset,  ConstOffset, or  ConstOffsets image operands of any of the OpImage*Gather image instructions.-+vulkanminInterpolationOffset/ is the minimum negative offset value for the offset operand of the InterpolateAtOffset extended instruction.-,vulkanmaxInterpolationOffset/ is the maximum positive offset value for the offset operand of the InterpolateAtOffset extended instruction.--vulkansubPixelInterpolationOffsetBits5 is the number of subpixel fractional bits that the x and y offsets to the InterpolateAtOffset extended instruction may% be rounded to as fixed-point values.-.vulkanmaxFramebufferWidth. is the maximum width for a framebuffer. The width member of the 6E structure must% be less than or equal to this limit.-/vulkanmaxFramebufferHeight/ is the maximum height for a framebuffer. The height member of the 6E structure must% be less than or equal to this limit.-0vulkanmaxFramebufferLayers< is the maximum layer count for a layered framebuffer. The layers member of the 6E structure must& be less than or equal to this limit.-1vulkanframebufferColorSampleCounts is a bitmask1 of a indicating the color sample counts that are supported for all framebuffer color attachments with floating- or fixed-point formats. There is no limit that specifies the color sample counts that are supported for all color attachments with integer formats.-2vulkanframebufferDepthSampleCounts is a bitmask1 of a indicating the supported depth sample counts for all framebuffer depth/stencil attachments, when the format includes a depth component.-3vulkanframebufferStencilSampleCounts is a bitmask1 of a indicating the supported stencil sample counts for all framebuffer depth/stencil attachments, when the format includes a stencil component.-4vulkan$framebufferNoAttachmentsSampleCounts is a bitmask1 of a0 indicating the supported sample counts for a  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments!subpass which uses no attachments.-5vulkanmaxColorAttachments2 is the maximum number of color attachments that can, be used by a subpass in a render pass. The colorAttachmentCount member of the 6- structure must& be less than or equal to this limit.-6vulkansampledImageColorSampleCounts is a bitmask1 of aI indicating the sample counts supported for all 2D images created with , usage containing ", and a non-integer color format.-7vulkansampledImageIntegerSampleCounts is a bitmask1 of aI indicating the sample counts supported for all 2D images created with , usage containing , and an integer color format.-8vulkansampledImageDepthSampleCounts is a bitmask1 of aI indicating the sample counts supported for all 2D images created with , usage containing , and a depth format.-9vulkansampledImageStencilSampleCounts is a bitmask1 of aB indicating the sample supported for all 2D images created with , usage containing , and a stencil format.-:vulkanstorageImageSampleCounts is a bitmask1 of aI indicating the sample counts supported for all 2D images created with , and usage containing .-;vulkanmaxSampleMaskWordsK is the maximum number of array elements of a variable decorated with the . built-in decoration.-<vulkantimestampComputeAndGraphics` specifies support for timestamps on all graphics and compute queues. If this limit is set to .!, all queues that advertise the   or   in the 3:: queueFlags support 3::timestampValidBits of at least 36. See  `https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-timestampsTimestamp Queries.-=vulkantimestampPeriod is the number of nanoseconds required5 for a timestamp query to be incremented by 1. See  `https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-timestampsTimestamp Queries.->vulkanmaxClipDistances. is the maximum number of clip distances that canM be used in a single shader stage. The size of any array declared with the  ClipDistance( built-in decoration in a shader module must& be less than or equal to this limit.-?vulkanmaxCullDistances. is the maximum number of cull distances that canM be used in a single shader stage. The size of any array declared with the  CullDistance( built-in decoration in a shader module must& be less than or equal to this limit.-@vulkanmaxCombinedClipAndCullDistancesA is the maximum combined number of clip and cull distances that cana be used in a single shader stage. The sum of the sizes of any pair of arrays declared with the  ClipDistance and  CullDistanceG built-in decoration used by a single shader stage in a shader module must% be less than or equal to this limit.-AvulkandiscreteQueuePriorities, is the number of discrete priorities that can> be assigned to a queue based on the value of each member of  ::pQueuePriorities. This must be at least 2, and levels must\ be spread evenly over the range, with at least one level at 1.0, and another at 0.0. See  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-priority.-BvulkanpointSizeRange[2] is the range [minimum,maximumR] of supported sizes for points. Values written to variables decorated with the  PointSize/ built-in decoration are clamped to this range.-CvulkanlineWidthRange[2] is the range [minimum,maximum:] of supported widths for lines. Values specified by the  lineWidth member of the 7 or the  lineWidth parameter to  are clamped to this range.-DvulkanpointSizeGranularity[ is the granularity of supported point sizes. Not all point sizes in the range defined by pointSizeRangeo are supported. This limit specifies the granularity (or increment) between successive supported point sizes.-EvulkanlineWidthGranularity[ is the granularity of supported line widths. Not all line widths in the range defined by lineWidthRangeo are supported. This limit specifies the granularity (or increment) between successive supported line widths.-Fvulkan strictLinesh specifies whether lines are rasterized according to the preferred method of rasterization. If set to ., lines may8 be rasterized under a relaxed set of rules. If set to .;, lines are rasterized as per the strict definition. See  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-basic Basic Line Segment Rasterization.-GvulkanstandardSampleLocationsW specifies whether rasterization uses the standard sample locations as documented in  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling Multisampling . If set to .G, the implementation uses the documented sample locations. If set to ., the implementation may! use different sample locations.-Hvulkan optimalBufferCopyOffsetAlignment7 is the optimal buffer offset alignment in bytes for  and G. The per texel alignment requirements are enforced, but applications shouldB use the optimal alignment for optimal performance and power use.-Ivulkan"optimalBufferCopyRowPitchAlignment: is the optimal buffer row pitch alignment in bytes for  and . Row pitch is the number of bytes between texels with the same X coordinate in adjacent rows (Y coordinates differ by one). The per texel alignment requirements are enforced, but applications shouldB use the optimal alignment for optimal performance and power use.-JvulkannonCoherentAtomSizeG is the size and alignment in bytes that bounds concurrent access to  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-hostaccesshost-mapped device memory.-LvulkanresidencyStandard2DBlockShape is . if the physical device will access all single-sample 2D sparse resources using the standard sparse image block shapes (based on image format), as described in the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseblockshapessingle2Standard Sparse Image Block Shapes (Single Sample)F table. If this property is not supported the value returned in the imageGranularity member of the ?/ structure for single-sample 2D images is not requiredJ to match the standard sparse image block dimensions listed in the table.-Mvulkan(residencyStandard2DMultisampleBlockShape is . if the physical device will access all multisample 2D sparse resources using the standard sparse image block shapes (based on image format), as described in the  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseblockshapesmsaa)Standard Sparse Image Block Shapes (MSAA)G table. If this property is not supported, the value returned in the imageGranularity member of the ?- structure for multisample 2D images is not requiredJ to match the standard sparse image block dimensions listed in the table.-NvulkanresidencyStandard3DBlockShape is . if the physical device will access all 3D sparse resources using the standard sparse image block shapes (based on image format), as described in the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseblockshapessingle2Standard Sparse Image Block Shapes (Single Sample)G table. If this property is not supported, the value returned in the imageGranularity member of the ?! structure for 3D images is not requiredJ to match the standard sparse image block dimensions listed in the table.-OvulkanresidencyAlignedMipSize is . if images with mip level dimensions that are not integer multiples of the corresponding dimensions of the sparse image block mayq be placed in the mip tail. If this property is not reported, only mip levels with dimensions smaller than the imageGranularity member of the ?s structure will be placed in the mip tail. If this property is reported the implementation is allowed to return C in the flags member of ?, indicating that mip level dimensions that are not integer multiples of the corresponding dimensions of the sparse image block will be placed in the mip tail.-PvulkanresidencyNonResidentStrict' specifies whether the physical device canO consistently access non-resident regions of a resource. If this property is ., access to non-resident regions of resources will be guaranteed to return values as if the resource were populated with 0; writes to non-resident regions will be discarded.-RvulkanrobustBufferAccessv specifies that accesses to buffers are bounds-checked against the range of the buffer descriptor (as determined by  v::range, ::range6, or the size of the buffer). Out of bounds accesses mustZ not cause application termination, and the effects of shader loads, stores, and atomics mustE conform to an implementation-dependent behavior as described below.XA buffer access is considered to be out of bounds if any of the following are true:The pointer was formed by OpImageTexelPointerz and the coordinate is less than zero or greater than or equal to the number of whole elements in the bound range.The pointer was not formed by OpImageTexelPointerx and the object pointed to is not wholly contained within the bound range. This includes accesses performed via variable pointers where the buffer descriptor being accessed cannot be statically determined. Uninitialized pointers and pointers equal to OpConstantNull are treated as pointing to a zero-sized object, so all accesses through such pointers are considered to be out of bounds. Buffer accesses through buffer device addresses are not bounds-checked. If the  zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cooperativeMatrixRobustBufferAccess#cooperativeMatrixRobustBufferAccess5 feature is not enabled, then accesses using OpCooperativeMatrixLoadNV and OpCooperativeMatrixStoreNV may not be bounds-checked.Note If a SPIR-V OpLoad instruction loads a structure and the tail end of the structure is out of bounds, then all members of the structure are considered out of bounds even if the members at the end are not statically used.If  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2 is not enabled and any buffer access is determined to be out of bounds, then any other access of the same type (load, store, or atomic) to the same buffer that accesses an address less than 16 bytes away from the out of bounds address may& also be considered out of bounds.If the access is a load that reads from the same memory locations as a prior store in the same shader invocation, with no other intervening accesses to the same memory locations in that shader invocation, then the result of the load mayk be the value stored by the store instruction, even if the access is out of bounds. If the load is Volatile!, then an out of bounds load must, return the appropriate out of bounds value.,Accesses to descriptors written with a  resource or view are not considered to be out of bounds. Instead, each type of descriptor access defines a specific behavior for accesses to a null descriptor.COut-of-bounds buffer loads will return any of the following values:-If the access is to a uniform buffer and  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2 is enabled, loads of offsets between the end of the descriptor range and the end of the descriptor range rounded up to a multiple of  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustUniformBufferAccessSizeAlignment&robustUniformBufferAccessSizeAlignment bytes must return either zero values or the contents of the memory at the offset being loaded. Loads of offsets past the descriptor range rounded up to a multiple of  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustUniformBufferAccessSizeAlignment&robustUniformBufferAccessSizeAlignment bytes must return zero values.-If the access is to a storage buffer and  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2 is enabled, loads of offsets between the end of the descriptor range and the end of the descriptor range rounded up to a multiple of  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment&robustStorageBufferAccessSizeAlignment bytes must return either zero values or the contents of the memory at the offset being loaded. Loads of offsets past the descriptor range rounded up to a multiple of  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment&robustStorageBufferAccessSizeAlignment bytes must return zero values. Similarly, stores to addresses between the end of the descriptor range and the end of the descriptor range rounded up to a multiple of  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment&robustStorageBufferAccessSizeAlignment bytes may be discarded.JNon-atomic accesses to storage buffers that are a multiple of 32 bits mayM be decomposed into 32-bit accesses that are individually bounds-checked.,If the access is to an index buffer and  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2 is enabled, zero values must be returned.OIf the access is to a uniform texel buffer or storage texel buffer and  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2 is enabled, zero values must be returned, and then  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-conversion-to-rgbaConversion to RGBA2 is applied based on the buffer view s format.Values from anywhere within the memory range(s) bound to the buffer (possibly including bytes of memory past the end of the buffer, up to the end of the bound range).Zero values, or (0,0,0,x) vectors for vector reads where x is a valid value represented in the type of the vector components and may be any of:h0, 1, or the maximum representable positive integer value, for signed or unsigned integer components)0.0 or 1.0, for floating-point componentsOut-of-bounds writes mayH modify values within the memory range(s) bound to the buffer, but must not modify any other memory.If  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2& is enabled, out of bounds writes must not modify any memory.Out-of-bounds atomics mayH modify values within the memory range(s) bound to the buffer, but mustA not modify any other memory, and return an undefined value.If  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2' is enabled, out of bounds atomics must: not modify any memory, and return an undefined value.If  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2 is disabled, vertex input attributes are considered out of bounds if the offset of the attribute in the bound vertex buffer range plus the size of the attribute is greater than either:vertexBufferRangeSize, if  bindingStride == 0; or(vertexBufferRangeSize - (vertexBufferRangeSize %  bindingStride))where vertexBufferRangeSizeM is the byte size of the memory range bound to the vertex buffer binding and  bindingStride is the byte stride of the corresponding vertex input binding. Further, if any vertex input attribute using a specific vertex input binding is out of bounds, then all vertex input attributes using that vertex input binding for that vertex shader invocation are considered out of bounds.bIf a vertex input attribute is out of bounds, it will be assigned one of the following values:|Values from anywhere within the memory range(s) bound to the buffer, converted according to the format of the attribute.KZero values, format converted according to the format of the attribute.6Zero values, or (0,0,0,x) vectors, as described above.If  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2 is enabled, vertex input attributes are considered out of bounds if the offset of the attribute in the bound vertex buffer range plus the size of the attribute is greater than the byte size of the memory range bound to the vertex buffer binding.6If a vertex input attribute is out of bounds, the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extractionraw dataJ extracted are zero values, and missing G, B, or A components are  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extractionfilled with (0,0,1).If robustBufferAccess is not enabled, applications must) not perform out of bounds accesses.-SvulkanfullDrawIndexUint32_ specifies the full 32-bit range of indices is supported for indexed draw calls when using a  of u. maxDrawIndexedIndexValue! is the maximum index value that mayS be used (aside from the primitive restart index, which is always 232-1 when the  is u"). If this feature is supported, maxDrawIndexedIndexValue must be 232-1; otherwise it must be no smaller than 224-1. See  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxDrawIndexedIndexValuemaxDrawIndexedIndexValue.-TvulkanimageCubeArray' specifies whether image views with a ` of ` can) be created, and that the corresponding SampledCubeArray and ImageCubeArray SPIR-V capabilities can be used in shader code.-UvulkanindependentBlend specifies whether the 7] settings are controlled independently per-attachment. If this feature is not enabled, the 7% settings for all color attachments must' be identical. Otherwise, a different 7 can. be provided for each bound color attachment.-VvulkangeometryShaderY specifies whether geometry shaders are supported. If this feature is not enabled, the & and  enum values must: not be used. This also specifies whether shader modules can declare the Geometry capability.-WvulkantessellationShadert specifies whether tessellation control and evaluation shaders are supported. If this feature is not enabled, the &, &, , , and  enum values must: not be used. This also specifies whether shader modules can declare the  Tessellation capability.-XvulkansampleRateShading specifies whether  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshadingSample ShadingT and multisample interpolation are supported. If this feature is not enabled, the sampleShadingEnable member of the 7 structure must be set to . and the minSampleShading@ member is ignored. This also specifies whether shader modules can declare the SampleRateShading capability.-Yvulkan dualSrcBlendp specifies whether blend operations which take two sources are supported. If this feature is not enabled, the ~, ~, ~, and ~ enum values must= not be used as source or destination blending factors. See  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb.-ZvulkanlogicOpX specifies whether logic operations are supported. If this feature is not enabled, the  logicOpEnable member of the 7 structure must be set to . , and the logicOp member is ignored.-[vulkanmultiDrawIndirect] specifies whether multiple draw indirect is supported. If this feature is not enabled, the  drawCount parameter to the  and  commands must be 0 or 1. The maxDrawIndirectCount member of the 7 structure must3 also be 1 if this feature is not supported. See  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxDrawIndirectCountmaxDrawIndirectCount.-\vulkandrawIndirectFirstInstance4 specifies whether indirect draw calls support the  firstInstance1 parameter. If this feature is not enabled, the  firstInstance member of all 55 and 56' structures that are provided to the  and  commands must be 0.-]vulkan depthClampU specifies whether depth clamping is supported. If this feature is not enabled, the depthClampEnable member of the 7 structure must be set to .. Otherwise, setting depthClampEnable to . will enable depth clamping.-^vulkandepthBiasClampZ specifies whether depth bias clamping is supported. If this feature is not enabled, the depthBiasClamp member of the 7 structure must be set to 0.0 unless the l$ dynamic state is enabled, and the depthBiasClamp parameter to  must be set to 0.0.-_vulkanfillModeNonSolidg specifies whether point and wireframe fill modes are supported. If this feature is not enabled, the K and K enum values must not be used.-`vulkan depthBoundsZ specifies whether depth bounds tests are supported. If this feature is not enabled, the depthBoundsTestEnable member of the 7 structure must be set to .. When depthBoundsTestEnable is set to ., the minDepthBounds and maxDepthBounds members of the 7 structure are ignored.-avulkan wideLinesg specifies whether lines with width other than 1.0 are supported. If this feature is not enabled, the  lineWidth member of the 7 structure must be set to 1.0 unless the l$ dynamic state is enabled, and the  lineWidth parameter to  mustz be set to 1.0. When this feature is supported, the range and granularity of supported line widths are indicated by the lineWidthRange and lineWidthGranularity members of the 7 structure, respectively.-bvulkan largePoints specifies whether points with size greater than 1.0 are supported. If this feature is not enabled, only a point size of 1.0 written by a shader is supported. The range and granularity of supported point sizes are indicated by the pointSizeRange and pointSizeGranularity members of the 7 structure, respectively.-cvulkan alphaToOne specifies whether the implementation is able to replace the alpha value of the color fragment output from the fragment shader with the maximum representable alpha value for fixed-point colors or 1.0 for floating-point colors. If this feature is not enabled, then the alphaToOneEnable member of the 7 structure must be set to .. Otherwise setting alphaToOneEnable to .$ will enable alpha-to-one behavior.-dvulkan multiViewportX specifies whether more than one viewport is supported. If this feature is not enabled:The  viewportCount and  scissorCount members of the 7" structure must be set to 1.The  firstViewport and  viewportCount parameters to the  command must& be set to 0 and 1, respectively.The  firstScissor and  scissorCount parameters to the  command must& be set to 0 and 1, respectively.The exclusiveScissorCount member of the   structure must be set to 0 or 1.The firstExclusiveScissor and exclusiveScissorCount parameters to the  command must! be set to 0 and 1, respectively.-evulkansamplerAnisotropy\ specifies whether anisotropic filtering is supported. If this feature is not enabled, the anisotropyEnable member of the =? structure must be ..-fvulkantextureCompressionETC2} specifies whether all of the ETC2 and EAC compressed texture formats are supported. If this feature is enabled, then the ,  and  features must be supported in optimalTilingFeatures for the following formats: wvutsrqponGTo query for additional properties, or if the feature is not enabled, - and - canL be used to check for supported properties of individual formats as normal.-gvulkantextureCompressionASTC_LDRy specifies whether all of the ASTC LDR compressed texture formats are supported. If this feature is enabled, then the ,  and  features must be supported in optimalTilingFeatures for the following formats:mlkjihgfedcba`_^]\[ZYXWVUTSRGTo query for additional properties, or if the feature is not enabled, - and - canL be used to check for supported properties of individual formats as normal.-hvulkantextureCompressionBCr specifies whether all of the BC compressed texture formats are supported. If this feature is enabled, then the ,  and  features must be supported in optimalTilingFeatures for the following formats:~}|{zyxGTo query for additional properties, or if the feature is not enabled, - and - canL be used to check for supported properties of individual formats as normal.-ivulkanocclusionQueryPrecisex specifies whether occlusion queries returning actual sample counts are supported. Occlusion queries are created in a /< by specifying the  queryType of #( in the :+ structure which is passed to :4. If this feature is enabled, queries of this type can enable ! in the flags parameter to 7. If this feature is not supported, the implementation supports only boolean occlusion queries. When any samples are passed, boolean queries will return a non-zero result value, otherwise a result value of zero is returned. When this feature is enabled and !L is set, occlusion queries will report the actual number of samples passed.-jvulkanpipelineStatisticsQueryt specifies whether the pipeline statistics queries are supported. If this feature is not enabled, queries of type #) cannot be created, and none of the J bits can be set in the pipelineStatistics member of the :+ structure.-kvulkanvertexPipelineStoresAndAtomics specifies whether storage buffers and images support stores and atomic operations in the vertex, tessellation, and geometry shader stages. If this feature is not enabled, all storage image, storage texel buffers, and storage buffer variables used by these stages in shader modules must be decorated with the  NonWritable decoration (or the readonly memory qualifier in GLSL).-lvulkanfragmentStoresAndAtomics specifies whether storage buffers and images support stores and atomic operations in the fragment shader stage. If this feature is not enabled, all storage image, storage texel buffers, and storage buffer variables used by the fragment stage in shader modules must be decorated with the  NonWritable decoration (or the readonly memory qualifier in GLSL).-mvulkan&shaderTessellationAndGeometryPointSize specifies whether the  PointSize built-in decoration is available in the tessellation control, tessellation evaluation, and geometry shader stages. If this feature is not enabled, members decorated with the  PointSize built-in decoration must not be read from or written to and all points written from a tessellation or geometry shader will have a size of 1.0. This also specifies whether shader modules can declare the TessellationPointSizeW capability for tessellation control and evaluation shaders, or if the shader modules can declare the GeometryPointSizeM capability for geometry shaders. An implementation supporting this feature must" also support one or both of the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellationShader or  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometryShader features.-nvulkanshaderImageGatherExtended specifies whether the extended set of image gather instructions are available in shader code. If this feature is not enabled, the OpImage*Gather! instructions do not support the Offset and  ConstOffsets7 operands. This also specifies whether shader modules can declare the ImageGatherExtended capability.-ovulkan!shaderStorageImageExtendedFormats{ specifies whether all the storage image extended formats  below are supported; if this feature is supported, then the  must be supported in optimalTilingFeatures for the following formats:Note!shaderStorageImageExtendedFormats feature only adds a guarantee of format support, which is specified for the whole physical device. Therefore enabling or disabling the feature via   has no practical effect.ITo query for additional properties, or if the feature is not supported, - and - canX be used to check for supported properties of individual formats, as usual rules allow., , and  from StorageImageExtendedFormats9 SPIR-V capability, are already covered by core Vulkan  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-mandatory-features-32bitmandatory format support.-pvulkanshaderStorageImageMultisample specifies whether multisampled storage images are supported. If this feature is not enabled, images that are created with a usage that includes  must be created with samples equal to  .. This also specifies whether shader modules can declare the StorageImageMultisample and  ImageMSArray capabilities.-qvulkan#shaderStorageImageReadWithoutFormat specifies whether storage images require a format qualifier to be specified when reading from storage images. If this feature is not enabled, the  OpImageRead instruction must not have an  OpTypeImage of Unknown.. This also specifies whether shader modules can declare the StorageImageReadWithoutFormat capability.-rvulkan$shaderStorageImageWriteWithoutFormat specifies whether storage images require a format qualifier to be specified when writing to storage images. If this feature is not enabled, the  OpImageWrite instruction must not have an  OpTypeImage of Unknown.. This also specifies whether shader modules can declare the StorageImageWriteWithoutFormat capability.-svulkan'shaderUniformBufferArrayDynamicIndexing. specifies whether arrays of uniform buffers can be indexed by dynamically uniforml integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of o or o must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also specifies whether shader modules can declare the !UniformBufferArrayDynamicIndexing capability.-tvulkan&shaderSampledImageArrayDynamicIndexing9 specifies whether arrays of samplers or sampled images can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of o, ob, or oa must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also specifies whether shader modules can declare the  SampledImageArrayDynamicIndexing capability.-uvulkan'shaderStorageBufferArrayDynamicIndexing. specifies whether arrays of storage buffers can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of o or o must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also specifies whether shader modules can declare the !StorageBufferArrayDynamicIndexing capability.-vvulkan&shaderStorageImageArrayDynamicIndexing- specifies whether arrays of storage images can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of o` must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also specifies whether shader modules can declare the  StorageImageArrayDynamicIndexing capability.-wvulkanshaderClipDistance specifies whether clip distances are supported in shader code. If this feature is not enabled, any members decorated with the  ClipDistance built-in decoration must` not be read from or written to in shader modules. This also specifies whether shader modules can declare the  ClipDistance capability.-xvulkanshaderCullDistance specifies whether cull distances are supported in shader code. If this feature is not enabled, any members decorated with the  CullDistance built-in decoration must` not be read from or written to in shader modules. This also specifies whether shader modules can declare the  CullDistance capability.-yvulkan shaderFloat64 specifies whether 64-bit floats (doubles) are supported in shader code. If this feature is not enabled, 64-bit floating-point types mustI not be used in shader code. This also specifies whether shader modules can declare the Float64p capability. Declaring and using 64-bit floats is enabled for all storage classes that SPIR-V allows with the Float64 capability.-zvulkan shaderInt64 specifies whether 64-bit integers (signed and unsigned) are supported in shader code. If this feature is not enabled, 64-bit integer types mustI not be used in shader code. This also specifies whether shader modules can declare the Int64r capability. Declaring and using 64-bit integers is enabled for all storage classes that SPIR-V allows with the Int64 capability.-{vulkan shaderInt16 specifies whether 16-bit integers (signed and unsigned) are supported in shader code. If this feature is not enabled, 16-bit integer types mustI not be used in shader code. This also specifies whether shader modules can declare the Int16e capability. However, this only enables a subset of the storage classes that SPIR-V allows for the Int16@ SPIR-V capability: Declaring and using 16-bit integers in the Private,  Workgroup, and Function\ storage classes is enabled, while declaring them in the interface storage classes (e.g., UniformConstant, Uniform,  StorageBuffer, Input, Output, and  PushConstant) is not enabled.-|vulkanshaderResourceResidency specifies whether image operations that return resource residency information are supported in shader code. If this feature is not enabled, the  OpImageSparse* instructions mustI not be used in shader code. This also specifies whether shader modules can declare the SparseResidency7 capability. The feature requires at least one of the sparseResidency* features to be supported.-}vulkanshaderResourceMinLod specifies whether image operations specifying the minimum resource LOD are supported in shader code. If this feature is not enabled, the MinLod image operand mustI not be used in shader code. This also specifies whether shader modules can declare the MinLod capability.-~vulkan sparseBinding# specifies whether resource memory can{ be managed at opaque sparse block level instead of at the object level. If this feature is not enabled, resource memory must1 be bound only on a per-object basis using the 4 and 4- commands. In this case, buffers and images must not be created with {; and Q set in the flags member of the  and 06 structures, respectively. Otherwise resource memory can be managed as described in  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseresourcefeaturesSparse Resource Features.-vulkansparseResidencyBuffer specifies whether the device canN access partially resident buffers. If this feature is not enabled, buffers must not be created with { set in the flags member of the  structure.-vulkansparseResidencyImage2D specifies whether the device cano access partially resident 2D images with 1 sample per pixel. If this feature is not enabled, images with an  imageType of  and samples set to   must not be created with P set in the flags member of the 0 structure.-vulkansparseResidencyImage3D specifies whether the device canW access partially resident 3D images. If this feature is not enabled, images with an  imageType of  must not be created with P set in the flags member of the 0 structure.-vulkansparseResidency2Samples' specifies whether the physical device canp access partially resident 2D images with 2 samples per pixel. If this feature is not enabled, images with an  imageType of  and samples set to   must not be created with P set in the flags member of the 0 structure.-vulkansparseResidency4Samples' specifies whether the physical device canp access partially resident 2D images with 4 samples per pixel. If this feature is not enabled, images with an  imageType of  and samples set to   must not be created with P set in the flags member of the 0 structure.-vulkansparseResidency8Samples' specifies whether the physical device canp access partially resident 2D images with 8 samples per pixel. If this feature is not enabled, images with an  imageType of  and samples set to   must not be created with P set in the flags member of the 0 structure.-vulkansparseResidency16Samples' specifies whether the physical device canq access partially resident 2D images with 16 samples per pixel. If this feature is not enabled, images with an  imageType of  and samples set to   must not be created with P set in the flags member of the 0 structure.-vulkansparseResidencyAliased' specifies whether the physical device can_ correctly access data aliased into multiple locations. If this feature is not enabled, the { and O enum values must not be used in flags members of the  and 0 structures, respectively.-vulkanvariableMultisampleRateS specifies whether all pipelines that will be bound to a command buffer during a  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments!subpass which uses no attachments must have the same value for 7::rasterizationSamples . If set to .m, the implementation supports variable multisample rates in a subpass which uses no attachments. If set to .., then all pipelines bound in such a subpass musth have the same multisample rate. This has no effect in situations where a subpass uses any attachments.-vulkaninheritedQueries. specifies whether a secondary command buffer may& be executed while a query is active.-vulkanlinearTilingFeatures is a bitmask of 9 specifying features supported by images created with a tiling parameter of .-vulkanoptimalTilingFeatures is a bitmask of 9 specifying features supported by images created with a tiling parameter of .-vulkanbufferFeatures is a bitmask of + specifying features supported by buffers.-vulkansize/ is the total memory size in bytes in the heap.-vulkanflags is a bitmask of d* specifying attribute flags for the heap.-vulkan propertyFlags is a bitmask of J% of properties for this memory type.-vulkan heapIndexC describes which memory heap this memory type corresponds to, and must be less than memoryHeapCount from the 6 structure.-vulkanmemoryTypeCount( is the number of valid elements in the  memoryTypes array.-vulkan memoryTypes is an array of  9 structures describing the  memory types that canA be used to access memory allocated from the heaps specified by  memoryHeaps.-vulkanmemoryHeapCount( is the number of valid elements in the  memoryHeaps array.-vulkan memoryHeaps is an array of  : structures describing the  memory heaps from which memory can be allocated.-vulkan queueFlags is a bitmask of  = indicating capabilities of the queues in this queue family.-vulkan queueCountR is the unsigned integer count of queues in this queue family. Each queue family must support at least one queue.-vulkantimestampValidBitsR is the unsigned integer count of meaningful bits in the timestamps written via . The valid range for the count is 36..64 bits, or a value of 0, indicating no support for timestamps. Bits outside the valid range are guaranteed to be zeros.-vulkanminImageTransferGranularityh is the minimum granularity supported for image transfer operations on the queues in this queue family.-vulkanpNext is NULL6 or a pointer to a structure extending this structure.-vulkanflags is reserved for future use.-vulkanpApplicationInfo is NULL or a pointer to a > structure. If not NULLc, this information helps implementations recognize behavior inherent to classes of applications. > is defined in detail below.-vulkanppEnabledLayerNames is a pointer to an array of enabledLayerCount1 null-terminated UTF-8 strings containing the names of layers to enable for the created instance. The layers are loaded in the order they are listed in this array, with the first array element being the closest to the application, and the last array element being the closest to the driver. See the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-layers section for further details.-vulkanppEnabledExtensionNames is a pointer to an array of enabledExtensionCountM null-terminated UTF-8 strings containing the names of extensions to enable.-vulkanpApplicationName is NULL[ or is a pointer to a null-terminated UTF-8 string containing the name of the application.-vulkanapplicationVersionf is an unsigned integer variable containing the developer-supplied version number of the application.-vulkan pEngineName is NULL or is a pointer to a null-terminated UTF-8 string containing the name of the engine (if any) used to create the application.-vulkan engineVersion is an unsigned integer variable containing the developer-supplied version number of the engine used to create the application.-vulkan apiVersion muste be the highest version of Vulkan that the application is designed to use, encoded as described in  yhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-coreversions-versionnumbers). The patch version number specified in  apiVersionb is ignored when creating an instance object. Only the major and minor versions of the instance must match those requested in  apiVersion.-vulkan apiVersionM is the version of Vulkan supported by the device, encoded as described in  yhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-coreversions-versionnumbers.-vulkan driverVersion/ is the vendor-specified version of the driver.-vulkanvendorID is a unique identifier for the vendor% (see below) of the physical device.-vulkandeviceIDY is a unique identifier for the physical device among devices available from the vendor.-vulkan deviceType is a   specifying the type of device.-vulkan deviceName is an array of  charM containing a null-terminated UTF-8 string which is the name of the device.-vulkanpipelineCacheUUID is an array of  uint8_tE values representing a universally unique identifier for the device.-vulkanlimits is the 7K structure specifying device-specific limits of the physical device. See  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limitsLimits for details.-vulkansparseProperties is the 4V structure specifying various sparse related properties of the physical device. See  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-physicalpropsSparse Properties for details.-vulkan/vkCreateInstance - Create a new Vulkan instance Description-4 verifies that the requested layers exist. If not, - will return . Next - verifies that the requested extensions are supported (e.g. in the implementation or in any enabled instance layer) and if any requested extension is not supported, - must return H. After verifying and enabling the instance layers and extensions the  object is created and returned to the application. If a requested extension is only supported by a layer, both the layer and the extension need to be specified at -# time for the creation to succeed. Valid Usage All  ~https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-extensions-extensiondependenciesrequired extensions% for each extension in the ;::ppEnabledExtensionNames list must" also be present in that listValid Usage (Implicit) pCreateInfo must$ be a valid pointer to a valid ; structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pInstance must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , ;-vulkan=A convenience wrapper to make a compatible pair of calls to - and -To ensure that - is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.-vulkan1vkDestroyInstance - Destroy an instance of Vulkan Valid Usage All child objects created using instance must. have been destroyed prior to destroying instanceIf  were provided when instance1 was created, a compatible set of callbacks must be provided hereIf no  were provided when instance was created,  pAllocator must be NULLValid Usage (Implicit)If instance is not NULL, instance must be a valid  handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureHost SynchronizationHost access to instance must be externally synchronizedHost access to all  objects enumerated from instance must be externally synchronizedSee Also, -vulkan]vkEnumeratePhysicalDevices - Enumerates the physical devices accessible to a Vulkan instance DescriptionIf pPhysicalDevices is NULL@, then the number of physical devices available is returned in pPhysicalDeviceCount. Otherwise, pPhysicalDeviceCount mustG point to a variable set by the user to the number of elements in the pPhysicalDevicesc array, and on return the variable is overwritten with the number of handles actually written to pPhysicalDevices. If pPhysicalDeviceCountA is less than the number of physical devices available, at most pPhysicalDeviceCount! structures will be written. If pPhysicalDeviceCount< is smaller than the number of physical devices available,  will be returned instead of I, to indicate that not all the available physical devices were returned.Valid Usage (Implicit)instance must be a valid  handlepPhysicalDeviceCount must be a valid pointer to a uint32_t valueIf the value referenced by pPhysicalDeviceCount is not 0 , and pPhysicalDevices is not NULL, pPhysicalDevices must( be a valid pointer to an array of pPhysicalDeviceCount  handles Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, -vulkan=vkGetDeviceProcAddr - Return a function pointer for a command Parameters2The table below defines the various use cases for -* and expected return value for each case. Description*The returned function pointer is of type k, and mustU be cast to the type of the command being queried before use. The function pointer mustJ only be called with a dispatchable object (the first parameter) that is device or a child of device. device  pName  return value  NULL  *1  undefined  invalid device  *1  undefined  device  NULL  undefined - device - core device-level Vulkan command / fp2 D device D enabled extension device-level commands G fp2 - any other case, not covered above  NULL& / - behavior 1f"*" means any representable value for the parameter (including valid values, invalid values, and NULL).2The returned function pointer mustN only be called with a dispatchable object (the first parameter) that is device or a child of device e.g. , /4 , or /6.Valid Usage (Implicit)See Alsok, -vulkan?vkGetInstanceProcAddr - Return a function pointer for a command Description- itself is obtained in a platform- and loader- specific manner. Typically, the loader library will export this command as a function symbol, so applications cano link against the loader library, or load it dynamically and look up the symbol using platform-specific APIs.2The table below defines the various use cases for -G and expected return value ( fp  is function pointer ) for each case.*The returned function pointer is of type k, and must> be cast to the type of the command being queried before use. instance  pNameA  return value  *1  NULLB  undefined  invalid non-NULL instance  *1 / undefined  NULL  -3  fp4  NULL    fp  NULL  +  fp  NULL  2  fp  NULL  -8  fp  instance I core Vulkan command  fp2  instance ) enabled instance extension commands for instance  fp2  instance * available device extension3 commands for instance  fp2 - any other case, not covered above  NULL / - behavior 1f"*" means any representable value for the parameter (including valid values, invalid values, and NULL).2The returned function pointer mustN only be called with a dispatchable object (the first parameter) that is instance or a child of instance, e.g. , , , /4 , or /6.3jAn available device extension  is a device extension supported by any physical device enumerated by instance.4Starting with Vulkan 1.2, - can resolve itself with a NULL instance pointer.Valid Usage (Implicit)If instance is not NULL, instance must be a valid  handlepName must" be a null-terminated UTF-8 stringSee Alsok, -vulkanGvkGetPhysicalDeviceProperties - Returns properties of a physical deviceValid Usage (Implicit)See Also, 5-vulkanmvkGetPhysicalDeviceQueueFamilyProperties - Reports properties of the queues of the specified physical device DescriptionIf pQueueFamilyProperties is NULL>, then the number of queue families available is returned in pQueueFamilyPropertyCount. Implementations must0 support at least one queue family. Otherwise, pQueueFamilyPropertyCount mustG point to a variable set by the user to the number of elements in the pQueueFamilyPropertiesf array, and on return the variable is overwritten with the number of structures actually written to pQueueFamilyProperties. If pQueueFamilyPropertyCount? is less than the number of queue families available, at most pQueueFamilyPropertyCount structures will be written.Valid Usage (Implicit)physicalDevice must be a valid  handlepQueueFamilyPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pQueueFamilyPropertyCount is not 0 , and pQueueFamilyProperties is not NULL, pQueueFamilyProperties must# be a valid pointer to an array of pQueueFamilyPropertyCount 3 structuresSee Also, 3-vulkancvkGetPhysicalDeviceMemoryProperties - Reports memory information for the specified physical deviceValid Usage (Implicit)See Also, 6-vulkanGvkGetPhysicalDeviceFeatures - Reports capabilities of a physical deviceValid Usage (Implicit)See Also, 8-vulkanRvkGetPhysicalDeviceFormatProperties - Lists physical device s format capabilitiesValid Usage (Implicit)See AlsoJ, =, -vulkan]vkGetPhysicalDeviceImageFormatProperties - Lists physical device s image format capabilities DescriptionThe format, type, tiling, usage, and flagsA parameters correspond to parameters that would be consumed by 0 (as members of 0).If format< is not a supported image format, or if the combination of format, type, tiling, usage, and flags$ is not supported for images, then - returns .9The limitations on an image format that are reported by -" have the following property: if usage1 and usage2 of type Q are such that the bits set in usage1! are a subset of the bits set in usage2, and flags1 and flags2 of type L are such that the bits set in flags1! are a subset of the bits set in flags2, then the limitations for usage1 and flags1 must- be no more strict than the limitations for usage2 and flags2, for all values of format, type, and tiling. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee AlsoJ, L, <, O, P, Q,  -vulkan pCreateInfo is a pointer to a ;1 structure controlling creation of the instance.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.-vulkaninstance* is the handle of the instance to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.-vulkaninstance; is a handle to a Vulkan instance previously created with -.-vulkandevice must be a valid  handlevulkanpName must" be a null-terminated UTF-8 string-vulkaninstanceH is the instance that the function pointer will be compatible with, or NULL, for commands not dependent on any instance.vulkanpName& is the name of the command to obtain.-vulkanphysicalDeviceH is the handle to the physical device whose properties will be queried.physicalDevice must be a valid  handle-vulkanphysicalDeviceH is the handle to the physical device whose properties will be queried.-vulkanphysicalDevice& is the handle to the device to query.physicalDevice must be a valid  handle-vulkanphysicalDeviceD is the physical device from which to query the supported features.physicalDevice must be a valid  handle-vulkanphysicalDeviceC is the physical device from which to query the format properties.physicalDevice must be a valid  handlevulkanformat, is the format whose properties are queried.format must be a valid J value-vulkanphysicalDeviceD is the physical device from which to query the image capabilities.physicalDevice must be a valid  handlevulkanformat is a J7 value specifying the image format, corresponding to 0::format.format must be a valid J valuevulkantype is a P5 value specifying the image type, corresponding to 0:: imageType.type must be a valid P valuevulkantiling is a O7 value specifying the image tiling, corresponding to 0::tiling.tiling must not be  . (Use Tc instead)tiling must be a valid O valuevulkanusage is a bitmask of R@ specifying the intended usage of the image, corresponding to 0::usage.usage must be a valid combination of R valuesusage must not be 0vulkanflags is a bitmask of MC specifying additional parameters of the image, corresponding to 0::flags.flags must be a valid combination of M values53-----4-K-L-M-N-O-P5----------6-----7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------- - - - - ------------------- -!-"-#-$-%-&-'-(-)-*-+-,---.-/-0-1-2-3-4-5-6-7-8-9-:-;-<-=->-?-@-A-B-C-D-E-F-G-H-I-J8-Q-^-Z-R-S-T-U-V-W-X-Y-[-\-]-_-`-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-{-|-}-~----------9---:---;------<------=---->------J  ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! LMBQPONMLKJIHGFEDCOPQR`a kl;=<>@?~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!        IJKSRQPONMLcdegf------------8------------5---------->------;------3-----6-----9---:---=----<------8-Q-^-Z-R-S-T-U-V-W-X-Y-[-\-]-_-`-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-{-|-}-~----------4-K-L-M-N-O-P7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------- - - - - ------------------- -!-"-#-$-%-&-'-(-)-*-+-,---.-/-0-1-2-3-4-5-6-7-8-9-:-;-<-=->-?-@-A-B-C-D-E-F-G-H-I-J>@?;=<PO J  ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!       JKSRQPONMLSRQPONMLIdegfgfcRQMBQPONMLKJIHGFEDCQPONMLKJIHGFEDCLa `lkNone("#%&'-./1789;=>?FHIMSUVX_dghklmq|;vulkanWVkExternalMemoryHandleTypeFlagBitsNV - Bitmask specifying external memory handle typesSee AlsovulkanZVkExternalImageFormatPropertiesNV - Structure specifying external image format propertiesSee Also., , <, .".vulkanPVkExternalMemoryFeatureFlagBitsNV - Bitmask specifying external memory featuresSee Also, ., .".vulkanimageFormatProperties$ will be filled in as when calling  , but the values returned may7 vary depending on the external handle type requested..vulkanexternalMemoryFeatures is a bitmask of .>, indicating properties of the external memory handle type (."::externalHandleType?) being queried, or 0 if the external memory handle type is 0..vulkanexportFromImportedHandleTypes is a bitmask of ; containing a bit set for every external handle type that mayL be used to create memory from which the handles of the type specified in ."::externalHandleType can; be exported, or 0 if the external memory handle type is 0..vulkancompatibleHandleTypes is a bitmask of ; containing a bit set for every external handle type that mayA be specified simultaneously with the handle type specified by ."::externalHandleType when calling 31, or 0 if the external memory handle type is 0. compatibleHandleTypes will always contain ."::externalHandleType.vulkan.U specifies that the implementation supports importing handles of the specified type..vulkan.U specifies that the implementation supports exporting handles of the specified type..vulkan.7 specifies that external memory of the specified type mustI be created as a dedicated allocation when used in the manner specified..vulkan.+ specifies a handle to memory returned by  IDXGIResource::GetSharedHandle()..vulkan.4 specifies a valid NT handle to memory returned by "IDXGIResource1::CreateSharedHandle3, or a handle duplicated from such a handle using DuplicateHandle().. vulkan. , specifies a handle to memory returned by ..!vulkan.!, specifies a handle to memory returned by ., or one duplicated from such a handle using DuplicateHandle().."vulkanvkGetPhysicalDeviceExternalImageFormatPropertiesNV - determine image capabilities compatible with external memory handle types DescriptionIf externalHandleType is 0, 5pExternalImageFormatProperties->imageFormatProperties, will return the same values as a call to  , and the other members of pExternalImageFormatPropertiesA will all be 0. Otherwise, they are filled in as described for . Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , J, L, O, P, Q, ."vulkanphysicalDeviceC is the physical device from which to query the image capabilitiesphysicalDevice must be a valid  handlevulkanformat( is the image format, corresponding to 0::format.format must be a valid J valuevulkantype& is the image type, corresponding to 0:: imageType.type must be a valid P valuevulkantiling( is the image tiling, corresponding to 0::tiling.tiling must be a valid O valuevulkanusage7 is the intended usage of the image, corresponding to 0::usage.usage must be a valid combination of R valuesusage must not be 0vulkanflagsO is a bitmask describing additional parameters of the image, corresponding to 0::flags.flags must be a valid combination of M valuesvulkanexternalHandleType! is either one of the bits from , or 0.externalHandleType must be a valid combination of  values.!. ..................."."......!. ....!. ...............None("#%&'-./1789;=>?FHIMSUVX_dghklmq|vulkanZVkImportMemoryWin32HandleInfoNV - import Win32 memory created on the same physical device DescriptionIf  handleType is 01, this structure is ignored by consumers of the 3s structure it is chained from.Valid Usage (Implicit)See Also, vulkaniVkExportMemoryWin32HandleInfoNV - specify security attributes and access rights for Win32 memory handles Description(If this structure is not present, or if  pAttributes is set to NULL(, default security descriptor values will be used, and child processes created by the application will not inherit the handle, as described in the MSDN documentation for Synchronization Object Security and Access Rights 1. Further, if the structure is not present, the access rights will beDXGI_SHARED_RESOURCE_READ | DXGI_SHARED_RESOURCE_WRITE 1 ehttps://docs.microsoft.com/en-us/windows/win32/sync/synchronization-object-security-and-access-rightsValid Usage (Implicit)sType must be If  pAttributes is not NULL,  pAttributes must$ be a valid pointer to a valid .6 valueSee Also.;vulkan pAttributes is a pointer to a Windows .69 structure specifying security attributes of the handle..<vulkandwAccess is a .7( specifying access rights of the handle..>vulkan handleType is 0 or a 0 value specifying the type of memory handle in handle. handleType must not have more than one bit set handleType must be a valid combination of  values.?vulkanhandle is a Windows  referring to the memory.handle must8 be a valid handle to memory, obtained as specified by  handleType.BvulkanKvkGetMemoryWin32HandleNV - retrieve Win32 handle to a device memory object Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , .Bvulkandevice, is the logical device that owns the memory.device must be a valid  handlevulkanmemory is the  object.memory must be a valid  handlememory must1 have been created, allocated, or retrieved from devicevulkan handleType is a bitmask of B containing a single bit specifying the type of handle requested. handleType must be a flag specified in 1:: handleTypes when allocating memory handleType must be a valid combination of  values handleType must not be 0..!. ...=.?.>.:.;.<.6.7.8.9.@.A.B.B.=.?.>.:.;.<.9.A.8.@.7.6..!. ...!. ..None("#%&'-./1789;=>?FHIMSUVX_dghklmq}\vulkanQVkMemoryWin32HandlePropertiesKHR - Properties of External Memory Windows HandlesValid Usage (Implicit)See Also, .d]vulkan_VkMemoryGetWin32HandleInfoKHR - Structure describing a Win32 handle semaphore export operation Description>The properties of the handle returned depend on the value of  handleType. See S for a description of the properties of the defined external memory handle types. Valid Usage handleType must have been included in O0:: handleTypes when memory was createdIf  handleType" is defined as an NT handle, .c mustG be called no more than once for each valid unique combination of memory and  handleType handleType must9 be defined as an NT handle or a global share handleValid Usage (Implicit)sType must be pNext must be NULLmemory must be a valid  handle handleType must be a valid  valueSee Also, , , .c^vulkan[VkImportMemoryWin32HandleInfoKHR - import Win32 memory created on the same physical device DescriptionImporting memory objects from Windows handles does not transfer ownership of the handle to the Vulkan implementation. For handle types defined as NT handles, the application must release ownership using the  CloseHandle1 system call when the handle is no longer needed. Applications can import the same underlying memory into multiple instances of Vulkan, into the same instance from which it was exported, and multiple times into a given Vulkan instance. In all cases, each import operation must create a distinct  object. Valid UsageIf  handleType is not 0, it must3 be supported for import, as reported by P9 or P6The memory from which handle+ was exported, or the memory named by name mustB have been created on the same underlying physical device as deviceIf  handleType is not 0, it must9 be defined as an NT handle or a global share handleIf  handleType is not  ,  ,  , or  , name must be NULLIf  handleType is not 0 and handle is NULL, name must< name a valid memory resource of the type specified by  handleTypeIf  handleType is not 0 and name is NULL, handle must1 be a valid handle of the type specified by  handleTypeif handle is not NULL, name must be NULLIf handle is not NULL, it must' obey any requirements listed for  handleType in xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility*external memory handle types compatibilityIf name is not NULL, it must' obey any requirements listed for  handleType in xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility*external memory handle types compatibilityValid Usage (Implicit)sType must be If  handleType is not 0,  handleType must be a valid  valueSee Also, _vulkanxVkExportMemoryWin32HandleInfoKHR - Structure specifying additional attributes of Windows handles exported from a memory DescriptionIf O0 is not present in the same pNext" chain, this structure is ignored.If O0 is present in the pNext chain of 3s with a Windows  handleType, but either _ is not present in the pNext chain, or if it is but  pAttributes is set to NULL@, default security descriptor values will be used, and child processes created by the application will not inherit the handle, as described in the MSDN documentation for Synchronization Object Security and Access Rights 1. Further, if the structure is not present, the access rights used depend on the handle type.#For handles of the following types:   The implementation mustE ensure the access rights allow read and write access to the memory.#For handles of the following types:   The access rights must be:  GENERIC_ALL 1 ehttps://docs.microsoft.com/en-us/windows/win32/sync/synchronization-object-security-and-access-rights Valid UsageIf O0:: handleTypes does not include  ,  ,  , or   , a _ structure must not be included in the pNext chain of 3sValid Usage (Implicit)sType must be If  pAttributes is not NULL,  pAttributes must) be a valid pointer to a valid .6 valueSee Also.Uvulkanmemory= is the memory object from which the handle will be exported..Vvulkan handleType! is the type of handle requested..XvulkanmemoryTypeBits_ is a bitmask containing one bit set for every memory type which the specified windows handle can be imported as..Zvulkan pAttributes is a pointer to a Windows .69 structure specifying security attributes of the handle..[vulkandwAccess is a .7) specifying access rights of the handle..\vulkanname is a null-terminated UTF-16 string to associate with the underlying resource referenced by NT handles exported from the created memory..^vulkan handleType specifies the type of handle or name.._vulkanhandle& is the external handle to import, or NULL..`vulkannameY is a null-terminated UTF-16 string naming the underlying memory resource to import, or NULL..cvulkanDvkGetMemoryWin32HandleKHR - Get a Windows HANDLE for a memory object DescriptionAFor handle types defined as NT handles, the handles returned by .cL are owned by the application. To avoid leaking resources, the application must& release ownership of them using the  CloseHandle, system call when they are no longer needed. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, ].dvulkanVvkGetMemoryWin32HandlePropertiesKHR - Get Properties of External Memory Win32 Handles Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , \.cvulkandeviceF is the logical device that created the device memory being exported.device must be a valid  handlevulkanpGetWin32HandleInfo is a pointer to a ]: structure containing parameters of the export operation.pGetWin32HandleInfo must be a valid pointer to a valid ] structure.dvulkandevice. is the logical device that will be importing handle.device must be a valid  handlevulkan handleType is the type of the handle handle. handleType must1 not be one of the handle types defined as opaque handleType must be a valid  valuevulkanhandle& is the handle which will be imported.handle must@ be an external memory handle created outside of the Vulkan API\.W.X].T.U.V^.]._.`.^_.Y.\.Z.[.6.7.Q.R.S.a.b.c.d.c.d^.]._.`.^_.Y.\.Z.[\.W.X].T.U.V.S.b.R.a.Q.7.6None("#%&'-./1789;=>?FHIMSUVX_dghklmq}bvulkanbVkSemaphoreGetWin32HandleInfoKHR - Structure describing a Win32 handle semaphore export operation Description>The properties of the handle returned depend on the value of  handleType. See  V for a description of the properties of the defined external semaphore handle types. Valid Usage handleType must have been included in Q4:: handleTypes when the  semaphore s current payload was createdIf  handleType" is defined as an NT handle, . mustG be called no more than once for each valid unique combination of  semaphore and  handleType semaphore must` not currently have its payload replaced by an imported payload as described below in  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importingImporting Semaphore PayloadsF unless that imported payload s handle type was included in R=::exportFromImportedHandleTypes for  handleTypeIf  handleTypea refers to a handle type with copy payload transference semantics, as defined below in  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importingImporting Semaphore Payloads , there must be no queue waiting on  semaphoreIf  handleTypeH refers to a handle type with copy payload transference semantics,  semaphore must. be signaled, or have an associated  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operation pending execution handleType must9 be defined as an NT handle or a global share handleValid Usage (Implicit)sType must be pNext must be NULL semaphore must be a valid v handle handleType must be a valid   valueSee Also , v, , .cvulkancVkImportSemaphoreWin32HandleInfoKHR - Structure specifying Windows handle to import to a semaphore DescriptionThe handle types supported by  handleType are:o Handle Type  Transference  Permanence Supported  9  Reference  Temporary,Permanent  9  Reference  Temporary,Permanent  9  Reference  Temporary,Permanent Handle Types Supported by c Valid Usage handleType must! be a value included in the  yhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphore-handletypes-win32Handle Types Supported by table If  handleType is not 9 or 9, name must be NULLIf  handleType is not 0 and handle is NULL, name mustK name a valid synchronization primitive of the type specified by  handleTypeIf  handleType is not 0 and name is NULL, handle must1 be a valid handle of the type specified by  handleTypeIf handle is not NULL, name must be NULLIf handle is not NULL, it must' obey any requirements listed for  handleType in {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility-external semaphore handle types compatibilityIf name is not NULL, it must' obey any requirements listed for  handleType in {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility-external semaphore handle types compatibilityIf  handleType is 9 or 9 , the <C::flags field must( match that of the semaphore from which handle or name was exportedIf  handleType is 9 or 9, the m:: semaphoreType field must( match that of the semaphore from which handle or name was exportedIf flags contains 6, the m:: semaphoreType( field of the semaphore from which handle or name was exported must not be Valid Usage (Implicit)sType must be pNext must be NULL semaphore must be a valid v handleflags must be a valid combination of 6 valuesIf  handleType is not 0,  handleType must be a valid   valueHost SynchronizationHost access to  semaphore must be externally synchronizedSee Also , v,  r, , .dvulkan~VkExportSemaphoreWin32HandleInfoKHR - Structure specifying additional attributes of Windows handles exported from a semaphore DescriptionIf Q4 is not present in the same pNext" chain, this structure is ignored.If Q4 is present in the pNext chain of <C with a Windows  handleType , but either d is not present in the pNext chain, or if it is but  pAttributes is set to NULL?, default security descriptor values will be used, and child processes created by the application will not inherit the handle, as described in the MSDN documentation for Synchronization Object Security and Access Rights 1. Further, if the structure is not present, the access rights used depend on the handle type.#For handles of the following types:9The implementation mustR ensure the access rights allow both signal and wait operations on the semaphore.#For handles of the following types:9The access rights must be:  GENERIC_ALL 1 ehttps://docs.microsoft.com/en-us/windows/win32/sync/synchronization-object-security-and-access-rights Valid UsageIf Q4:: handleTypes does not include 9 or 9, d must not be included in the pNext chain of <CValid Usage (Implicit)sType must be If  pAttributes is not NULL,  pAttributes must) be a valid pointer to a valid .6 valueSee Alsoevulkan`VkD3D12FenceSubmitInfoKHR - Structure specifying values for Direct3D 12 fence-backed semaphores DescriptionIf the semaphore in ;N::pWaitSemaphores or ;N::pSignalSemaphores corresponding to an entry in pWaitSemaphoreValues or pSignalSemaphoreValues* respectively does not currently have a  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-payloadspayload7 referring to a Direct3D 12 fence, the implementation must ignore the value in the pWaitSemaphoreValues or pSignalSemaphoreValues entry.Note;As the introduction of the external semaphore handle type 9 predates that of timeline semaphores, support for importing semaphore payloads from external handles of that type into semaphores created (implicitly or explicitly) with a  of B is preserved for backwards compatibility. However, applications shouldE prefer importing such handle types into semaphores created with a  of , and use the m^ structure instead of the eX structure to specify the values to use when waiting for and signaling such semaphores. Valid UsagewaitSemaphoreValuesCount must be the same value as ;N::waitSemaphoreCount , where ;N is in the pNext chain of this e structuresignalSemaphoreValuesCount must be the same value as ;N::signalSemaphoreCount , where ;N is in the pNext chain of this e structureValid Usage (Implicit)sType must be If waitSemaphoreValuesCount is not 0, and pWaitSemaphoreValues is not NULL, pWaitSemaphoreValues must( be a valid pointer to an array of waitSemaphoreValuesCount uint64_t valuesIf signalSemaphoreValuesCount is not 0 , and pSignalSemaphoreValues is not NULL, pSignalSemaphoreValues must( be a valid pointer to an array of signalSemaphoreValuesCount uint64_t valuesSee Also.vulkan semaphore4 is the semaphore from which state will be exported..vulkan handleType! is the type of handle requested..vulkanwaitSemaphoreValuesCount6 is the number of semaphore wait values specified in pWaitSemaphoreValues..vulkanpWaitSemaphoreValues is a pointer to an array of waitSemaphoreValuesCount- values for the corresponding semaphores in ;N::pWaitSemaphores to wait for..vulkansignalSemaphoreValuesCount8 is the number of semaphore signal values specified in pSignalSemaphoreValues..vulkanpSignalSemaphoreValues is a pointer to an array of signalSemaphoreValuesCount- values for the corresponding semaphores in ;N::pSignalSemaphores to set when signaled..vulkan pAttributes is a pointer to a Windows .69 structure specifying security attributes of the handle..vulkandwAccess is a .7) specifying access rights of the handle..vulkanname is a null-terminated UTF-16 string to associate with the underlying synchronization primitive referenced by NT handles exported from the created semaphore..vulkan semaphore: is the semaphore into which the payload will be imported..vulkanflags is a bitmask of 6O specifying additional parameters for the semaphore payload import operation..vulkan handleType specifies the type of handle..vulkanhandle& is the external handle to import, or NULL..vulkannamec is a null-terminated UTF-16 string naming the underlying synchronization primitive to import, or NULL..vulkanCvkGetSemaphoreWin32HandleKHR - Get a Windows HANDLE for a semaphore DescriptionAFor handle types defined as NT handles, the handles returned by .L are owned by the application. To avoid leaking resources, the application must& release ownership of them using the  CloseHandle, system call when they are no longer needed.,Exporting a Windows handle from a semaphore mayb have side effects depending on the transference of the specified handle type, as described in  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importingImporting Semaphore Payloads. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, b.vulkanKvkImportSemaphoreWin32HandleKHR - Import a semaphore from a Windows HANDLE DescriptionImporting a semaphore payload from Windows handles does not transfer ownership of the handle to the Vulkan implementation. For handle types defined as NT handles, the application must release ownership using the  CloseHandle1 system call when the handle is no longer needed. Applications can import the same semaphore payload into multiple instances of Vulkan, into the same instance from which it was exported, and multiple times into a given Vulkan instance. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, c.vulkandeviceB is the logical device that created the semaphore being exported.device must be a valid  handlevulkanpGetWin32HandleInfo is a pointer to a b: structure containing parameters of the export operation.pGetWin32HandleInfo must be a valid pointer to a valid b structure.vulkandevice2 is the logical device that created the semaphore.device must be a valid  handlevulkanpImportSemaphoreWin32HandleInfo is a pointer to a c; structure specifying the semaphore and import parameters.pImportSemaphoreWin32HandleInfo must be a valid pointer to a valid c structure b...c......d....e......6.7.Q...... ..c......d....e.....b........7.Q.6None("#%&'-./1789;=>?FHIMSUVX_dghklmq~NVvulkan(VkImportFenceWin32HandleInfoKHR - (None) DescriptionThe handle types supported by  handleType are:g Handle Type  Transference  Permanence Supported  =  Reference  Temporary,Permanent  =  Reference  Temporary,Permanent Handle Types Supported by V Valid Usage handleType must! be a value included in the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fence-handletypes-win32Handle Types Supported by tableIf  handleType is not =, name must be NULLIf  handleType is not 0 and handle is NULL, name mustK name a valid synchronization primitive of the type specified by  handleTypeIf  handleType is not 0 and name is NULL, handle must1 be a valid handle of the type specified by  handleTypeIf handle is not NULL, name must be NULLIf handle is not NULL, it must' obey any requirements listed for  handleType in whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility)external fence handle types compatibilityIf name is not NULL, it must' obey any requirements listed for  handleType in whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility)external fence handle types compatibilityValid Usage (Implicit)sType must be pNext must be NULLfence must be a valid  handleflags must be a valid combination of 8" valuesIf  handleType is not 0,  handleType must be a valid   valueHost SynchronizationHost access to fence must be externally synchronizedSee Also , ,  , , .WvulkanZVkFenceGetWin32HandleInfoKHR - Structure describing a Win32 handle fence export operation Description>The properties of the handle returned depend on the value of  handleType. See  R for a description of the properties of the defined external fence handle types. Valid Usage handleType must have been included in M.:: handleTypes when the fence s current payload was createdIf  handleType is defined as an NT handle, . mustG be called no more than once for each valid unique combination of fence and  handleTypefence must` not currently have its payload replaced by an imported payload as described below in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importingImporting Fence PayloadsF unless that imported payload s handle type was included in N7::exportFromImportedHandleTypes for  handleTypeIf  handleTypeH refers to a handle type with copy payload transference semantics, fence must. be signaled, or have an associated  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signalingfence signal operation pending execution handleType must9 be defined as an NT handle or a global share handleValid Usage (Implicit)sType must be pNext must be NULLfence must be a valid  handle handleType must be a valid   valueSee Also , , , .XvulkanvVkExportFenceWin32HandleInfoKHR - Structure specifying additional attributes of Windows handles exported from a fence DescriptionIf M. is not present in the same pNext" chain, this structure is ignored.If M. is present in the pNext chain of ,> with a Windows  handleType , but either X is not present in the pNext chain, or if it is but  pAttributes is set to NULL', default security descriptor values will be used, and child processes created by the application will not inherit the handle, as described in the MSDN documentation for Synchronization Object Security and Access Rights 1. Further, if the structure is not present, the access rights will beDXGI_SHARED_RESOURCE_READ | DXGI_SHARED_RESOURCE_WRITE#for handles of the following types:= 1 ehttps://docs.microsoft.com/en-us/windows/win32/sync/synchronization-object-security-and-access-rights Valid UsageIf M.:: handleTypes does not include = , a X structure must not be included in the pNext chain of ,>Valid Usage (Implicit)sType must be If  pAttributes is not NULL,  pAttributes must) be a valid pointer to a valid .6 valueSee Also.vulkanfence0 is the fence from which state will be exported..vulkan handleType! is the type of handle requested..vulkan pAttributes is a pointer to a Windows .69 structure specifying security attributes of the handle..vulkandwAccess is a .7) specifying access rights of the handle..vulkanname is a null-terminated UTF-16 string to associate with the underlying synchronization primitive referenced by NT handles exported from the created fence..vulkanfence4 is the fence into which the state will be imported..vulkanflags is a bitmask of 8"J specifying additional parameters for the fence payload import operation..vulkan handleType specifies the type of handle..vulkanhandle& is the external handle to import, or NULL..vulkannamec is a null-terminated UTF-16 string naming the underlying synchronization primitive to import, or NULL..vulkan;vkGetFenceWin32HandleKHR - Get a Windows HANDLE for a fence DescriptionAFor handle types defined as NT handles, the handles returned by .L are owned by the application. To avoid leaking resources, the application must& release ownership of them using the  CloseHandle, system call when they are no longer needed.(Exporting a Windows handle from a fence mayb have side effects depending on the transference of the specified handle type, as described in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importingImporting Fence Payloads. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, W.vulkanBvkImportFenceWin32HandleKHR - Import a fence from a Windows HANDLE DescriptionImporting a fence payload from Windows handles does not transfer ownership of the handle to the Vulkan implementation. For handle types defined as NT handles, the application must release ownership using the  CloseHandle1 system call when the handle is no longer needed. Applications can import the same fence payload into multiple instances of Vulkan, into the same instance from which it was exported, and multiple times into a given Vulkan instance. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, V.vulkandevice= is the logical device that created the fence being exported.device must be a valid  handlevulkanpGetWin32HandleInfo is a pointer to a W: structure containing parameters of the export operation.pGetWin32HandleInfo must be a valid pointer to a valid W structure.vulkandevice. is the logical device that created the fence.device must be a valid  handlevulkanpImportFenceWin32HandleInfo is a pointer to a V7 structure specifying the fence and import parameters.pImportFenceWin32HandleInfo must be a valid pointer to a valid V structureV......W...X.....6.7.Q........V......X....W........7.Q.6None("#%&'-./1789;=>?FHIMSUVX_dghklmq~\vulkan[VkExternalMemoryImageCreateInfoNV - Specify that an image may be backed by external memoryValid Usage (Implicit)See Also, vulkanPVkExportMemoryAllocateInfoNV - Specify memory handle types that may be exportedValid Usage (Implicit)See Also, .vulkan handleTypes is a bitmask of 2 specifying one or more memory handle types that may% be exported. Multiple handle types mayW be requested for the same allocation as long as they are compatible, as reported by h. handleTypes must be a valid combination of  values.vulkan handleTypes is a bitmask of 6 specifying one or more external memory handle types. handleTypes must be a valid combination of  values......!. ................!. ...!. ..TNone("#%&'-./1789;=>?FHIMSUVX_dghklmq(vulkanUVkSparseImageFormatProperties2 - Structure specifying sparse image format propertiesValid Usage (Implicit)See Also, , /, ivulkanPVkQueueFamilyProperties2 - Structure providing information about a queue familyValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueSee Also3, , /, gvulkanYVkPhysicalDeviceSparseImageFormatInfo2 - Structure specifying sparse image format inputsValid Usage (Implicit)See AlsoJ, O, P, Q, a, , /, ivulkanNVkPhysicalDeviceProperties2 - Structure specifying physical device properties DescriptionThe pNext` chain of this structure is used to extend the structure with properties defined by extensions.Valid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , , , , 3, , , , 4, , @, , , , , ,  , , ,  , , s, , , , , , , , ", u, t, ', 1, , , , F, , #,  , or The sType value of each struct in the pNext chain must be uniqueSee Also5, , /, cvulkan[VkPhysicalDeviceMemoryProperties2 - Structure specifying physical device memory propertiesValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueSee Also6, , /, avulkanRVkPhysicalDeviceImageFormatInfo2 - Structure specifying image creation parameters DescriptionThe members of " correspond to the arguments to  , with sType and pNext added for extensibility. Valid Usagetiling must be c if and only if the pNext chain includes If tiling is c and flags contains , then the pNext chain must include a 6 structure with non-zero viewFormatCountValid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of 6, $, , , or The sType value of each struct in the pNext chain must be uniqueformat must be a valid J valuetype must be a valid P valuetiling must be a valid O valueusage must be a valid combination of g valuesusage must not be 0flags must be a valid combination of 4 valuesSee AlsoJ, L, O, P, Q, , /, ^vulkanvVkPhysicalDeviceFeatures2 - Structure describing the fine-grained features that can be supported by an implementationMembersThe  structure is defined as: DescriptionThe pNextn chain of this structure is used to extend the structure with features defined by extensions. This structure can be used in / or can be included in the pNext chain of a  \ structure, in which case it controls which features are enabled in the device in lieu of pEnabledFeatures.Valid Usage (Implicit)See Also8, , /, ]vulkanKVkImageFormatProperties2 - Structure specifying an image format properties Description%If the combination of parameters to /4 is not supported by the implementation for use in 0, then all members of imageFormatProperties will be filled with zero.NoteFilling imageFormatProperties with zero for unsupported formats is an exception to the usual rule that output structures have undefined contents on error. This exception was unintentional, but is preserved for backwards compatibility. This exeption only applies to imageFormatProperties, not sType, pNext", or any structures chained from pNext.Valid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , , , , or The sType value of each struct in the pNext chain must be uniqueSee Also<, , /, ^vulkanBVkFormatProperties2 - Structure specifying image format propertiesValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueSee Also=, , /, .vulkanformat is the image format.format must be a valid J value.vulkantype is the dimensionality of image.type must be a valid P value.vulkansamples3 is the number of samples per texel as defined in a.samples must be a bit value that is set in <:: sampleCounts returned by   with format, type, tiling, and usage% equal to those in this command and flags$ equal to the value that is set in 0::flags when the image is createdsamples must be a valid a value.vulkanusage9 is a bitmask describing the intended usage of the image.usage must be a valid combination of g valuesusage must not be 0.vulkantiling9 is the tiling arrangement of the texel blocks in memory.tiling must be a valid O value.vulkan properties is a ; structure which is populated with the same values as in ?..vulkanpNext is NULL6 or a pointer to a structure extending this structure..vulkanmemoryProperties is a 6; structure which is populated with the same values as in  _..vulkanpNext is NULL6 or a pointer to a structure extending this structure..vulkanqueueFamilyProperties is a 3; structure which is populated with the same values as in  e./vulkanpNext is NULL< or a pointer to a structure extending this structure. The pNext chain of 5 is used to provide additional image parameters to /./vulkanformat is a J7 value indicating the image format, corresponding to 0::format./vulkantype is a P5 value indicating the image type, corresponding to 0:: imageType./vulkantiling is a O7 value indicating the image tiling, corresponding to 0::tiling./vulkanusage is a bitmask of g@ indicating the intended usage of the image, corresponding to 0::usage./vulkanflags is a bitmask of 4C indicating additional parameters of the image, corresponding to 0::flags./vulkanpNext is NULL< or a pointer to a structure extending this structure. The pNext chain of U is used to allow the specification of additional capabilities to be returned from /./vulkanimageFormatProperties is a </ structure in which capabilities are returned./ vulkanpNext is NULL6 or a pointer to a structure extending this structure./ vulkanformatProperties is a =B structure describing features supported by the requested format./ vulkanpNext is NULL6 or a pointer to a structure extending this structure./vulkan properties is a 5 structure describing properties of the physical device. This structure is written with the same values as if it were written by  ./vulkanpNext is NULL6 or a pointer to a structure extending this structure./vulkanfeatures is a 8G structure describing the fine-grained features of the Vulkan 1.0 API./vulkanHvkGetPhysicalDeviceFeatures2 - Reports capabilities of a physical device DescriptionEach structure in  pFeatures and its pNextA chain contains members corresponding to fine-grained features. /V writes each member to a boolean value indicating whether that feature is supported.Valid Usage (Implicit)See Also, /vulkanHvkGetPhysicalDeviceProperties2 - Returns properties of a physical device DescriptionEach structure in  pProperties and its pNextY chain contain members corresponding to properties or implementation-dependent limits. /O writes each member to a value indicating the value of that property or limit.Valid Usage (Implicit)See Also, /vulkanSvkGetPhysicalDeviceFormatProperties2 - Lists physical device s format capabilities Description/ behaves similarly to  8, with the ability to return extended information in a pNext chain of output structures.Valid Usage (Implicit)See AlsoJ, , /vulkan^vkGetPhysicalDeviceImageFormatProperties2 - Lists physical device s image format capabilities Description/ behaves similarly to  8, with the ability to return extended information in a pNext chain of output structures. Valid UsageIf the pNext chain of pImageFormatProperties includes a  structure, the pNext chain of pImageFormatInfo must include a  structure with  handleType set to AValid Usage (Implicit)physicalDevice must be a valid  handlepImageFormatInfo must$ be a valid pointer to a valid  structurepImageFormatProperties must be a valid pointer to a  structure Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , /vulkannvkGetPhysicalDeviceQueueFamilyProperties2 - Reports properties of the queues of the specified physical device Description/ behaves similarly to  e8, with the ability to return extended information in a pNext chain of output structures.Valid Usage (Implicit)physicalDevice must be a valid  handlepQueueFamilyPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pQueueFamilyPropertyCount is not 0 , and pQueueFamilyProperties is not NULL, pQueueFamilyProperties must# be a valid pointer to an array of pQueueFamilyPropertyCount  structuresSee Also, /vulkandvkGetPhysicalDeviceMemoryProperties2 - Reports memory information for the specified physical device Description/ behaves similarly to  _8, with the ability to return extended information in a pNext chain of output structures.Valid Usage (Implicit)See Also, /vulkanrvkGetPhysicalDeviceSparseImageFormatProperties2 - Retrieve properties of an image format applied to sparse images Description/ behaves identically to ?Z, with the ability to return extended information by adding extending structures to the pNext chain of its  pProperties parameter.Valid Usage (Implicit)physicalDevice must be a valid  handle pFormatInfo must$ be a valid pointer to a valid  structurepPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount  structuresSee Also, , /vulkanphysicalDeviceD is the physical device from which to query the supported features.physicalDevice must be a valid  handle/vulkanphysicalDeviceH is the handle to the physical device whose properties will be queried.physicalDevice must be a valid  handle/vulkanphysicalDeviceC is the physical device from which to query the format properties.physicalDevice must be a valid  handlevulkanformat, is the format whose properties are queried.format must be a valid J value/vulkanphysicalDeviceD is the physical device from which to query the image capabilities.vulkanpImageFormatInfo is a pointer to a A structure describing the parameters that would be consumed by 0./vulkanphysicalDeviceH is the handle to the physical device whose properties will be queried./vulkanphysicalDevice& is the handle to the device to query.physicalDevice must be a valid  handle/vulkanphysicalDeviceK is the physical device from which to query the sparse image capabilities.vulkan pFormatInfo is a pointer to a 7 structure containing input parameters to the command............/ / /....///////////// / / ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ////////////////// / // / / ///.//////..............~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      None("#%&'-./1789;=>?FHIMSUVX_dghklmq5|/O/P/Q/R/S/T/U/V/W/X/Y/Z/[/\/]/^/_/`/a/b/c/d/e/f/g/h/i/j/k/d/c/b/a/`/_/^/]/\/e/f/g/h/i/j/k/Y/X/W/V/U/T/S/R/Q/P/[/O/Z None("#%&'-./1789;=>?FHIMSUVX_dghklmq1vulkanZVkDeviceQueueCreateInfo - Structure specifying parameters of a newly created device queue Valid UsagequeueFamilyIndex must be less than pQueueFamilyPropertyCount returned by  e queueCount must be less than or equal to the  queueCount member of the  % structure, as returned by  e in the pQueueFamilyProperties[queueFamilyIndex]Each element of pQueuePriorities must be between 0.0 and 1.0 inclusive If the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-protectedMemoryprotected memory' feature is not enabled, the  bit of flags must not be setValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of  valuespQueuePriorities must( be a valid pointer to an array of  queueCount float values queueCount must be greater than 0See Also2, , 2vulkanOVkDeviceCreateInfo - Structure specifying parameters of a newly created device Valid UsageThe queueFamilyIndex member of each element of pQueueCreateInfos must be unique within pQueueCreateInfos2, except that two members can share the same queueFamilyIndexR if one is a protected-capable queue and one is not a protected-capable queue If the pNext chain includes a  structure, then pEnabledFeatures must be NULLppEnabledExtensionNames must not contain VK_AMD_negative_viewport_heightppEnabledExtensionNames must not contain both VK_KHR_buffer_device_address and VK_EXT_buffer_device_addressIf the pNext chain includes a  structure, then it must not include a , , , , , or  structureIf the pNext chain includes a  structure, then it must not include a %, >, ?, , #, 8, H, A, ;,  , G, &, or I structureIf ppEnabledExtensions contains "VK_KHR_draw_indirect_count" and the pNext chain includes a  structure, then ::drawIndirectCount must be .If ppEnabledExtensions contains %"VK_KHR_sampler_mirror_clamp_to_edge" and the pNext chain includes a  structure, then ::samplerMirrorClampToEdge must be .If ppEnabledExtensions contains "VK_EXT_descriptor_indexing" and the pNext chain includes a  structure, then ::descriptorIndexing must be .If ppEnabledExtensions contains "VK_EXT_sampler_filter_minmax" and the pNext chain includes a  structure, then ::samplerFilterMinmax must be .If ppEnabledExtensions contains $"VK_EXT_shader_viewport_index_layer" and the pNext chain includes a  structure, then ::shaderOutputViewportIndex and ::shaderOutputLayer must both be .Valid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , , e, , , %, , , &, , V, , , , , , , , , , , , %, , , , , , ,  , 8, , , , , , , t, , ~, , , , , , , #, ;, >, , , , ?, &, I, (, A, 2, , , , G, , H, , $, , , I, or %The sType value of each struct in the pNext chain must? be unique, with the exception of structures of type flags must be 0pQueueCreateInfos must( be a valid pointer to an array of queueCreateInfoCount valid 1 structuresIf enabledLayerCount is not 0, ppEnabledLayerNames must( be a valid pointer to an array of enabledLayerCount# null-terminated UTF-8 stringsIf enabledExtensionCount is not 0, ppEnabledExtensionNames must# be a valid pointer to an array of enabledExtensionCount# null-terminated UTF-8 stringsIf pEnabledFeatures is not NULL, pEnabledFeatures must) be a valid pointer to a valid 8 structurequeueCreateInfoCount must be greater than 0See Also, 1, 8, , /x/mvulkanpNext is NULL6 or a pointer to a structure extending this structure./nvulkanflags is reserved for future use./ovulkanpQueueCreateInfos is a pointer to an array of 1r structures describing the queues that are requested to be created along with the logical device. Refer to the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-queue-creationQueue Creation$ section below for further details./pvulkanppEnabledLayerNames! is deprecated and ignored. See  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-layers-devicelayerdeprecation./qvulkanppEnabledExtensionNames is a pointer to an array of enabledExtensionCountn null-terminated UTF-8 strings containing the names of extensions to enable for the created device. See the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-extensions section for further details./rvulkanpEnabledFeatures is NULL or a pointer to a 8\ structure containing boolean indicators of all the features to be enabled. Refer to the  Vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#featuresFeatures section for further details./tvulkanpNext is NULL6 or a pointer to a structure extending this structure./uvulkanflags/ is a bitmask indicating behavior of the queue./vvulkanqueueFamilyIndex is an unsigned integer indicating the index of the queue family to create on this device. This index corresponds to the index of an element of the pQueueFamilyProperties array that was returned by  e./wvulkanpQueuePriorities is a pointer to an array of  queueCountv normalized floating point values, specifying priorities of work that will be submitted to each created queue. See  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-priorityQueue Priority for more information./xvulkan-vkCreateDevice - Create a new device instance Description/x9 verifies that extensions and features requested in the ppEnabledExtensionNames and pEnabledFeatures members of  pCreateInfoc, respectively, are supported by the implementation. If any requested extension is not supported, /x must return .. If any requested feature is not supported, /x must return . Support for extensions can2 be checked before creating a device by querying +E. Support for features can# similarly be checked by querying  [.1After verifying and enabling the extensions the  object is created and returned to the application. If a requested extension is only supported by a layer, both the layer and the extension need to be specified at  # time for the creation to succeed.Multiple logical devices canD be created from the same physical device. Logical device creation mayd fail due to lack of device-specific resources (in addition to the other errors). If that occurs, /x will return . Valid Usage All  ~https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-extensions-extensiondependenciesrequired extensions% for each extension in the 2::ppEnabledExtensionNames list must" also be present in that listValid Usage (Implicit)physicalDevice must be a valid  handle pCreateInfo must$ be a valid pointer to a valid 2 structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepDevice must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , 2, /yvulkan=A convenience wrapper to make a compatible pair of calls to /x and /zTo ensure that /z is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument./zvulkan*vkDestroyDevice - Destroy a logical device Description1To ensure that no work is active on the device, ; can be used to gate the destruction of the device. Prior to destroying a device, an application is responsible for destroying/freeing any Vulkan objects that were created using that device as the first parameter of the corresponding  vkCreate* or  vkAllocate* command.NoteGThe lifetime of each of these objects is bound by the lifetime of the  object. Therefore, to avoid resource leaks, it is critical that an application explicitly free all of these resources prior to calling /z. Valid UsageAll child objects created on device must. have been destroyed prior to destroying deviceIf  were provided when device1 was created, a compatible set of callbacks must be provided hereIf no  were provided when device was created,  pAllocator must be NULLValid Usage (Implicit)If device is not NULL, device must be a valid  handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureHost SynchronizationHost access to device must be externally synchronizedHost access to all /4 objects received from device must be externally synchronizedSee Also, /xvulkanphysicalDevice must7 be one of the device handles returned from a call to  H (see  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-physical-device-enumerationPhysical Device Enumeration).vulkan pCreateInfo is a pointer to a 2B structure containing information about how to create the device.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter./zvulkandevice" is the logical device to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.1/s/u/t/v/w2/l/n/m/p/q/o/r89:/x/y/z/x/y/z1/s/u/t/v/w2/l/n/m/p/q/o/r89: None("#%&'-./1789;=>?FHIMSUVX_dghklmq6(vulkan_VkWriteDescriptorSet - Structure specifying the parameters of a descriptor set write operation Description Only one of  pImageInfo,  pBufferInfo, or pTexelBufferViewE members is used according to the descriptor type specified in the descriptorType member of the containing (% structure, or none of them in case descriptorType is O, in which case the source data for the descriptor writes is taken from the  structure included in the pNext chain of ( , or if descriptorType is O, in which case the source data for the descriptor writes is taken from the  structure in the pNext chain of (, as specified below.If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor; feature is enabled, the buffer, imageView, or bufferView can be n. Loads from a null descriptor return zero values and stores and atomics to a null descriptor are discarded.If the  dstBinding has fewer than descriptorCount) array elements remaining starting from dstArrayElementF, then the remainder will be used to update the subsequent binding -  dstBinding7+1 starting at array element zero. If a binding has a descriptorCount of zero, it is skipped. This behavior applies recursively, with the update affecting consecutive bindings as needed to update all descriptorCount descriptors.NoteAThe same behavior applies to bindings with a descriptor type of  where descriptorCount0 specifies the number of bytes to update while dstArrayElement? specifies the starting byte offset, thus in this case if the  dstBinding* has a smaller byte size than the sum of dstArrayElement and descriptorCountF, then the remainder will be used to update the subsequent binding -  dstBindingP+1 starting at offset zero. This falls out as a special case of the above rule. Valid Usage dstBinding must4 be less than or equal to the maximum value of binding of all * structures specified when dstSet$ s descriptor set layout was created% dstBinding must be a binding with a non-zero descriptorCount.All consecutive bindings updated via a single (% structure, except those with a descriptorCount of zero, must have identical descriptorType and  stageFlags.All consecutive bindings updated via a single (% structure, except those with a descriptorCount of zero, must+ all either use immutable samplers or must$ all not use immutable samplersdescriptorType must match the type of  dstBinding within dstSetdstSet must be a valid  handle The sum of dstArrayElement and descriptorCount mustl be less than or equal to the number of array elements in the descriptor set binding specified by  dstBindingE, and all applicable consecutive bindings, as described by phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutiveIf descriptorType is , dstArrayElement must be an integer multiple of 4If descriptorType is , descriptorCount must be an integer multiple of 4If descriptorType is , , , , or ,  pImageInfo must( be a valid pointer to an array of descriptorCount valid . structuresIf descriptorType is  or , each element of pTexelBufferView must be either a valid  handle or If descriptorType is  or  and the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor. feature is not enabled, each element of pTexelBufferView must not be If descriptorType is , , , or ,  pBufferInfo must( be a valid pointer to an array of descriptorCount valid / structuresIf descriptorType is  or  , and dstSetK was not allocated with a layout that included immutable samplers for  dstBinding with descriptorType, the sampler member of each element of  pImageInfo must be a valid w objectIf descriptorType is , , , or  , the  imageView member of each element of  pImageInfo must be either a valid  handle or If descriptorType is , , , or  and the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor" feature is not enabled, the  imageView member of each element of  pImageInfo must not be If descriptorType is  , the pNext chain must include a  structure whose dataSize member equals descriptorCountIf descriptorType is  , the pNext chain must include a  structure whose accelerationStructureCount member equals descriptorCountIf descriptorType is , then the  imageView member of each  pImageInfo element must' have been created without a XB structure in its pNext chainIf descriptorType is , and if any element of  pImageInfo has a  imageView* member that was created with a XB structure in its pNext chain, then dstSet mustR have been allocated with a layout that included immutable samplers for  dstBinding*, and the corresponding immutable sampler must have been created with an identically defined XB objectIf descriptorType is  , and dstSetG was allocated with a layout that included immutable samplers for  dstBinding , then the  imageView member of each element of  pImageInfoB which corresponds to an immutable sampler that enables  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversion must have been created with a XB structure in its pNext chain with an identically defined XB, to the corresponding immutable samplerIf descriptorType is W, for each descriptor that will be accessed via load or store operations the  imageLayout+ member for corresponding elements of  pImageInfo must be If descriptorType is  or  , the offset member of each element of  pBufferInfo must be a multiple of  l::minUniformBufferOffsetAlignmentIf descriptorType is  or  , the offset member of each element of  pBufferInfo must be a multiple of  l::minStorageBufferOffsetAlignmentIf descriptorType is , , , or , and the buffer member of any element of  pBufferInfo= is the handle of a non-sparse buffer, then that buffer must< be bound completely and contiguously to a single /8 objectIf descriptorType is  or  , the buffer member of each element of  pBufferInfo must" have been created with z setIf descriptorType is  or  , the buffer member of each element of  pBufferInfo must" have been created with z setIf descriptorType is  or  , the range member of each element of  pBufferInfo!, or the effective range if range is %, must$ be less than or equal to  l::maxUniformBufferRangeIf descriptorType is  or  , the range member of each element of  pBufferInfo!, or the effective range if range is %, must$ be less than or equal to  l::maxStorageBufferRangeIf descriptorType is  , the  that each element of pTexelBufferView was created from must have been created with z[ setIf descriptorType is  , the  that each element of pTexelBufferView was created from must have been created with z\ setIf descriptorType is  or  , the  imageView member of each element of  pImageInfo must1 have been created with the identity swizzleIf descriptorType is  or  , the  imageView member of each element of  pImageInfo must" have been created with v setIf descriptorType is  or  , the  imageLayout member of each element of  pImageInfo must, be a member of the list given in  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage Sampled Image or  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesamplerCombined Image Sampler , corresponding to its typeIf descriptorType is  , the  imageView member of each element of  pImageInfo must" have been created with f setIf descriptorType is  , the  imageView member of each element of  pImageInfo must" have been created with  set.All consecutive bindings updated via a single (% structure, except those with a descriptorCount of zero, must have identical 2If descriptorType is  , then dstSet mustQ not have been allocated with a layout that included immutable samplers for  dstBindingValid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of  or The sType value of each struct in the pNext chain must be uniquedescriptorType must be a valid  valuedescriptorCount must be greater than 0Both of dstSet, and the elements of pTexelBufferView7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Also, /, ., , , , 1, /)vulkankVkDescriptorSetLayoutCreateInfo - Structure specifying parameters of a newly created descriptor set layout Valid UsageThe *::binding% members of the elements of the  pBindings array must each have different valuesIf flags contains , then all elements of  pBindings must not have a descriptorType of  or If flags contains , then all elements of  pBindings must not have a descriptorType of If flags contains 9, then the total number of elements of all bindings must$ be less than or equal to ::maxPushDescriptorsIf any binding has the 2 bit set, flags must include If any binding has the 2! bit set, then all bindings must not have descriptorType of  or Valid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of  valuesIf  bindingCount is not 0,  pBindings must( be a valid pointer to an array of  bindingCount valid * structuresSee Also*, , , /, V, *vulkanTVkDescriptorSetLayoutBinding - Structure specifying a descriptor set layout binding DescriptionpImmutableSamplers- affects initialization of samplers. If descriptorType specifies a  or  type descriptor, then pImmutableSamplers can% be used to initialize a set of immutable samplersH. Immutable samplers are permanently bound into the set layout and must& not be changed; updating a N descriptor with immutable samplers is not allowed and updates to a  descriptor with immutable samplers does not modify the samplers (the image views are updated, but the sampler updates are ignored). If pImmutableSamplers is not NULL, then it points to an array of sampler handles that will be copied into the set layout and used for the corresponding binding. Only the sampler handles are copied; the sampler objects mustz not be destroyed before the final use of the set layout and any descriptor pools and sets created using it. If pImmutableSamplers is NULL>, then the sampler slots are dynamic and sampler handles must: be bound into descriptor sets using this layout. If descriptorType1 is not one of these descriptor types, then pImmutableSamplers is ignored.The above layout definition allows the descriptor bindings to be specified sparsely such that not all binding numbers between 0 and the maximum binding number need to be specified in the  pBindings0 array. Bindings that are not specified have a descriptorCount and  stageFlags of zero, and the value of descriptorType^ is undefined. However, all binding numbers between 0 and the maximum binding number in the ):: pBindings array mayg consume memory in the descriptor set layout even if not all descriptor bindings are used, though it should9 not consume additional memory from the descriptor pool.Note%The maximum binding number specified should3 be as compact as possible to avoid wasted memory. Valid UsageIf descriptorType is  or  , and descriptorCount is not 0 and pImmutableSamplers is not NULL, pImmutableSamplers must( be a valid pointer to an array of descriptorCount valid w handlesIf descriptorType is  then descriptorCount must be a multiple of 4If descriptorType is  then descriptorCount must be less than or equal to ::maxInlineUniformBlockSizeIf descriptorCount is not 0,  stageFlags must% be a valid combination of & valuesIf descriptorType is  and descriptorCount is not 0, then  stageFlags must be 0 or &!The sampler objects indicated by pImmutableSamplers must not have a  borderColor with one of the values | or |Valid Usage (Implicit)descriptorType must be a valid  valueSee Also), , w, b+vulkanaVkDescriptorSetAllocateInfo - Structure specifying the allocation parameters for descriptor sets Valid UsageEach element of  pSetLayouts must! not have been created with  setIf any element of  pSetLayouts was created with the  bit set, descriptorPool must! have been created with the  flag setValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniquedescriptorPool must be a valid  handle pSetLayouts must( be a valid pointer to an array of descriptorSetCount valid  handlesdescriptorSetCount must be greater than 0Both of descriptorPool, and the elements of  pSetLayouts mustD have been created, allocated, or retrieved from the same See Also, , , /,vulkan@VkDescriptorPoolSize - Structure specifying descriptor pool size DescriptionNoteWhen creating a descriptor pool that will contain descriptors for combined image samplers of multi-planar formats, an application needs to account for non-trivial descriptor consumption when choosing the descriptorCount value, as indicated by XA::#combinedImageSamplerDescriptorCount. Valid UsagedescriptorCount must be greater than 0If type is  then descriptorCount must be a multiple of 4Valid Usage (Implicit)type must be a valid  valueSee Also-, -vulkan`VkDescriptorPoolCreateInfo - Structure specifying parameters of a newly created descriptor pool Description If multiple , structures appear in the  pPoolSizesl array then the pool will be created with enough storage for the total number of descriptors of each type.3Fragmentation of a descriptor pool is possible and may lead to descriptor set allocation failures. A failure due to fragmentation is defined as failing a descriptor set allocation despite the sum of all outstanding descriptor set allocations from the pool plus the requested allocation requiring no more than the total number of descriptors requested at pool creation. Implementations provide certain guarantees of when fragmentation must3 not cause allocation failure, as described below.{If a descriptor pool has not had any descriptor sets freed since it was created or most recently reset then fragmentation mustf not cause an allocation failure (note that this is always the case for a pool created without the  bit set). Additionally, if all sets allocated from the pool since it was created or most recently reset use the same number of descriptors (of each type) and the requested allocation also uses that same number of descriptors (of each type), then fragmentation must" not cause an allocation failure.FIf an allocation failure occurs due to fragmentation, an application canU create an additional descriptor pool to perform further descriptor set allocations.If flags has the $ bit set, descriptor pool creation may fail with the error n if the total number of descriptors across all pools (including this one) created with this bit set exceeds 'maxUpdateAfterBindDescriptorsInAllPoolsC, or if fragmentation of the underlying hardware resources occurs. Valid UsagemaxSets must be greater than 0Valid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of  values pPoolSizes must( be a valid pointer to an array of  poolSizeCount valid , structures poolSizeCount must be greater than 0See Also, ,, , /.vulkanBVkDescriptorImageInfo - Structure specifying descriptor image info Description Members of .B that are not used in an update (as described above) are ignored. Valid Usage imageView must> not be 2D or 2D array image view created from a 3D imageIf  imageView1 is created from a depth/stencil image, the  aspectMask used to create the  imageView must include either dx or dy but not both imageLayout must match the actual N* of each subresource accessible from  imageViewE at the time this descriptor is accessed as defined by the shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-layouts-matching-ruleimage layout matching rulesIf sampler is used and the  of the image is a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format, the image must have been created with , and the  aspectMask of the  imageView must be d, d- or (for three-plane formats only) dValid Usage (Implicit)Both of  imageView, and sampler7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See AlsoN, , w, (/vulkanDVkDescriptorBufferInfo - Structure specifying descriptor buffer info DescriptionNote When setting range to %, the effective range mustA not be larger than the maximum range for the descriptor type ( jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxUniformBufferRangemaxUniformBufferRange or  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxStorageBufferRangemaxStorageBufferRange). This means that % is not typically useful in the common case where uniform buffer descriptors are suballocated from a buffer that is much larger than maxUniformBufferRange.For  and  descriptor types, offsetB is the base offset from which the dynamic offset is applied and range2 is the static size used for all dynamic offsets. Valid Usageoffset must be less than the size of bufferIf range is not equal to %, range must be greater than 0If range is not equal to %, range must& be less than or equal to the size of buffer minus offset If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, buffer must not be If buffer is , offset must be zero and range must be %Valid Usage (Implicit)If buffer is not , buffer must be a valid  handleSee Also, m, (0vulkanKVkCopyDescriptorSet - Structure specifying a copy descriptor set operation Valid Usage srcBinding must be a valid binding within srcSet  The sum of srcArrayElement and descriptorCount mustl be less than or equal to the number of array elements in the descriptor set binding specified by  srcBindingE, and all applicable consecutive bindings, as described by phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutive dstBinding must be a valid binding within dstSet The sum of dstArrayElement and descriptorCount mustl be less than or equal to the number of array elements in the descriptor set binding specified by  dstBindingE, and all applicable consecutive bindings, as described by phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutive The type of  dstBinding within dstSet must be equal to the type of  srcBinding within srcSetIf srcSet is equal to dstSet=, then the source and destination ranges of descriptors must not overlap, where the ranges mayL include array elements from consecutive bindings as described by phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutiveGIf the descriptor type of the descriptor set binding specified by  srcBinding is , srcArrayElement must be an integer multiple of 4GIf the descriptor type of the descriptor set binding specified by  dstBinding is , dstArrayElement must be an integer multiple of 4NIf the descriptor type of the descriptor set binding specified by either  srcBinding or  dstBinding is , descriptorCount must be an integer multiple of 4If srcSet$ s layout was created with the  flag set, then dstSet s layout must+ also have been created with the  flag setIf srcSet' s layout was created without the  flag set, then dstSet s layout must. also have been created without the  flag set"If the descriptor pool from which srcSet. was allocated was created with the 4 flag set, then the descriptor pool from which dstSet was allocated must& also have been created with the  flag set"If the descriptor pool from which srcSet1 was allocated was created without the 4 flag set, then the descriptor pool from which dstSet was allocated must) also have been created without the  flag setGIf the descriptor type of the descriptor set binding specified by  dstBinding is  , then dstSet mustQ not have been allocated with a layout that included immutable samplers for  dstBindingValid Usage (Implicit)sType must be pNext must be NULLsrcSet must be a valid  handledstSet must be a valid  handleBoth of dstSet, and srcSet must? have been created, allocated, or retrieved from the same See Also, , //vulkanpNext is NULL6 or a pointer to a structure extending this structure./vulkandescriptorPool3 is the pool which the sets will be allocated from./vulkan pSetLayouts is a pointer to an array of descriptor set layouts, with each member specifying how the corresponding descriptor set is allocated./vulkanpNext is NULL6 or a pointer to a structure extending this structure./vulkanflags is a bitmask of 6 specifying certain supported operations on the pool./vulkanmaxSets/ is the maximum number of descriptor sets that can be allocated from the pool./vulkan pPoolSizes is a pointer to an array of ,t structures, each containing a descriptor type and number of descriptors of that type to be allocated in the pool./vulkantype is the type of descriptor./vulkandescriptorCount< is the number of descriptors of that type to allocate. If type is  then descriptorCountB is the number of bytes to allocate for descriptors of this type./vulkanpNext is NULL6 or a pointer to a structure extending this structure./vulkanflags is a bitmask of 8 specifying options for descriptor set layout creation./vulkan pBindings is a pointer to an array of * structures./vulkanbindingt is the binding number of this entry and corresponds to a resource of the same binding number in the shader stages./vulkandescriptorType is a J specifying which type of resource descriptors are used for this binding./vulkandescriptorCountf is the number of descriptors contained in the binding, accessed in a shader as an array , except if descriptorType is  in which case descriptorCount8 is the size in bytes of the inline uniform block . If descriptorCount: is zero this binding entry is reserved and the resource must[ not be accessed from any stage via this binding within any pipeline using the set layout./vulkan stageFlags member is a bitmask of &* specifying which pipeline shader stages can& access a resource for this binding. &t is a shorthand specifying that all defined shader stages, including any additional stages defined by extensions, can access the resource.%If a shader stage is not included in  stageFlags, then a resource must not be accessed from that stage via this binding within any pipeline using the set layout. Other than input attachments which are limited to the fragment shader, there are no limitations on what combinations of stages can8 use a descriptor binding, and in particular a binding can7 be used by both graphics stages and the compute stage./vulkansrcSet,  srcBinding, and srcArrayElementi are the source set, binding, and array element, respectively. If the descriptor binding identified by srcSet and  srcBinding has a descriptor type of  then srcArrayElementE specifies the starting byte offset within the binding to copy from./vulkandstSet,  dstBinding, and dstArrayElementn are the destination set, binding, and array element, respectively. If the descriptor binding identified by dstSet and  dstBinding has a descriptor type of  then dstArrayElementC specifies the starting byte offset within the binding to copy to./vulkandescriptorCountJ is the number of descriptors to copy from the source to destination. If descriptorCount is greater than the number of remaining array elements in the source or destination binding, those affect consecutive bindings in a manner similar to (1 above. If the descriptor binding identified by srcSet and  srcBinding has a descriptor type of  then descriptorCount specifies the number of bytes to copy and the remaining array elements in the source or destination binding refer to the remaining number of bytes in those./vulkanpNext is NULL6 or a pointer to a structure extending this structure./vulkandstSet- is the destination descriptor set to update./vulkan dstBinding+ is the descriptor binding within that set./vulkandstArrayElementQ is the starting element in that array. If the descriptor binding identified by dstSet and  dstBinding has a descriptor type of  then dstArrayElement8 specifies the starting byte offset within the binding./vulkandescriptorCountD is the number of descriptors to update (the number of elements in  pImageInfo,  pBufferInfo, or pTexelBufferView , or a value matching the dataSize member of a  structure in the pNext" chain , or a value matching the accelerationStructureCount of a  structure in the pNext3 chain ). If the descriptor binding identified by dstSet and  dstBinding has a descriptor type of  then descriptorCount) specifies the number of bytes to update./vulkandescriptorType is a , specifying the type of each descriptor in  pImageInfo,  pBufferInfo, or pTexelBufferView, as described below. It must( be the same type as that specified in * for dstSet at  dstBindingW. The type of the descriptor also controls which array the descriptors are taken from./vulkan pImageInfo is a pointer to an array of ./ structures or is ignored, as described below./vulkan pBufferInfo is a pointer to an array of // structures or is ignored, as described below./vulkanpTexelBufferView is a pointer to an array of  handles as described in the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-views Buffer Views, section or is ignored, as described below./vulkansamplerC is a sampler handle, and is used in descriptor updates for types  and ? if the binding being updated does not use immutable samplers./vulkan imageView is H or an image view handle, and is used in descriptor updates for types , , , and ./vulkan imageLayout< is the layout that the image subresources accessible from  imageView6 will be in at the time this descriptor is accessed.  imageLayout* is used in descriptor updates for types , , , and ./vulkanbuffer is  or the buffer resource./vulkanoffset* is the offset in bytes from the start of bufferi. Access to buffer memory via this descriptor uses addressing that is relative to this starting offset./vulkanrangeC is the size in bytes that is used for this descriptor update, or % to use the range from offset to the end of the buffer./vulkan@vkCreateDescriptorSetLayout - Create a new descriptor set layoutValid Usage (Implicit)device must be a valid  handle pCreateInfo must$ be a valid pointer to a valid ) structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pSetLayout must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , ), /vulkan=A convenience wrapper to make a compatible pair of calls to / and /To ensure that / is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument./vulkanEvkDestroyDescriptorSetLayout - Destroy a descriptor set layout object Valid UsageIf  were provided when descriptorSetLayout1 was created, a compatible set of callbacks must be provided hereIf no  were provided when descriptorSetLayout was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid  handleIf descriptorSetLayout is not , descriptorSetLayout must be a valid  handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf descriptorSetLayout is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to descriptorSetLayout must be externally synchronizedSee Also, , /vulkan9vkCreateDescriptorPool - Creates a descriptor pool object Description pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.+The created descriptor pool is returned in pDescriptorPool.Valid Usage (Implicit)device must be a valid  handle pCreateInfo must$ be a valid pointer to a valid - structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepDescriptorPool must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailurer See Also, , -, /vulkan=A convenience wrapper to make a compatible pair of calls to / and /To ensure that / is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument./vulkan:vkDestroyDescriptorPool - Destroy a descriptor pool object DescriptionWhen a pool is destroyed, all descriptor sets allocated from the pool are implicitly freed and become invalid. Descriptor sets allocated from a given pool do not need to be freed before destroying that descriptor pool. Valid Usage%All submitted commands that refer to descriptorPool* (via any allocated descriptor sets) must have completed executionIf  were provided when descriptorPool1 was created, a compatible set of callbacks must be provided hereIf no  were provided when descriptorPool was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid  handleIf descriptorPool is not , descriptorPool must be a valid  handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf descriptorPool is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to descriptorPool must be externally synchronizedSee Also, , /vulkan7vkResetDescriptorPool - Resets a descriptor pool object DescriptionResetting a descriptor pool recycles all of the resources from all of the descriptor sets allocated from the descriptor pool back to the descriptor pool, and the descriptor sets are implicitly freed. Valid Usage All uses of descriptorPool* (via any allocated descriptor sets) must have completed executionValid Usage (Implicit)device must be a valid  handledescriptorPool must be a valid  handleflags must be 0descriptorPool must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to descriptorPool must be externally synchronizedHost access to any  objects allocated from descriptorPool must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessSee Also, H, /vulkan?vkAllocateDescriptorSets - Allocate one or more descriptor sets Description.The allocated descriptor sets are returned in pDescriptorSets.When a descriptor set is allocated, the initial state is largely uninitialized and all descriptors are undefined. Descriptors also become undefined if the underlying resource is destroyed. Descriptor sets containing undefined descriptors can? still be bound and used, subject to the following conditions:2For descriptor set bindings created with the 2 N bit set, all descriptors in that binding that are dynamically used must7 have been populated before the descriptor set is  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-bindingconsumed.5For descriptor set bindings created without the 2 M bit set, all descriptors in that binding that are statically used must7 have been populated before the descriptor set is  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-bindingconsumed.1Descriptor bindings with descriptor type of  can. be undefined when the descriptor set is  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-bindingconsumed5; though values in that block will be undefined.(Entries that are not used by a pipeline can! have undefined descriptors. If a call to /b would cause the total number of descriptor sets allocated from the pool to exceed the value of -::maxSets used to create pAllocateInfo->descriptorPool, then the allocation mayN fail due to lack of space in the descriptor pool. Similarly, the allocation may+ fail due to lack of space if the call to /T would cause the number of any given descriptor type to exceed the sum of all the descriptorCount members of each element of -:: pPoolSizes with a member equal to that type.Additionally, the allocation may also fail if a call to /p would cause the total number of inline uniform block bindings allocated from the pool to exceed the value of ::maxInlineUniformBlockBindings% used to create the descriptor pool.If the allocation fails due to no more space in the descriptor pool, and not because of system or device memory exhaustion, then  must be returned./ can~ be used to create multiple descriptor sets. If the creation of any of those descriptor sets fails, then the implementation mustd destroy all successfully created descriptor set objects from this command, set all entries of the pDescriptorSets array to  and return the error.Valid Usage (Implicit)device must be a valid  handle pAllocateInfo must$ be a valid pointer to a valid + structurepDescriptorSets must( be a valid pointer to an array of !pAllocateInfo->descriptorSetCount  handlesThe value referenced by !pAllocateInfo->descriptorSetCount must be greater than 0Host SynchronizationHost access to pAllocateInfo->descriptorPool must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, +, /vulkan=A convenience wrapper to make a compatible pair of calls to / and /To ensure that / is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument./vulkan7vkFreeDescriptorSets - Free one or more descriptor sets DescriptionAfter calling /, all descriptor sets in pDescriptorSets are invalid. Valid Usage9All submitted commands that refer to any element of pDescriptorSets must have completed executionpDescriptorSets must( be a valid pointer to an array of descriptorSetCount % handles, each element of which must" either be a valid handle or Each valid handle in pDescriptorSets must have been allocated from descriptorPooldescriptorPool must! have been created with the  flagValid Usage (Implicit)device must be a valid  handledescriptorPool must be a valid  handledescriptorSetCount must be greater than 0descriptorPool must6 have been created, allocated, or retrieved from deviceEach element of pDescriptorSets that is a valid handle must6 have been created, allocated, or retrieved from descriptorPoolHost SynchronizationHost access to descriptorPool must be externally synchronizedHost access to each member of pDescriptorSets must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessSee Also, , /vulkanGvkUpdateDescriptorSets - Update the contents of a descriptor set object DescriptionThe operations described by pDescriptorWrites? are performed first, followed by the operations described by pDescriptorCopiesZ. Within each array, the operations are performed in the order they appear in the array.Each element in the pDescriptorWritesw array describes an operation updating the descriptor set using descriptors for resources specified in the structure.Each element in the pDescriptorCopies array is a 0E structure describing an operation copying descriptors between sets.If the dstSet member of any element of pDescriptorWrites or pDescriptorCopiesr is bound, accessed, or modified by any command that was recorded to a command buffer which is currently in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording or executable stateS, and any of the descriptor bindings that are updated were not created with the 2 or 2 ) bits set, that command buffer becomes  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleinvalid. Valid UsageUDescriptor bindings updated by this command which were created without the 2 or 2  bits set must\ not be used by any command that was recorded to a command buffer which is in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending stateValid Usage (Implicit)device must be a valid  handleIf descriptorWriteCount is not 0, pDescriptorWrites must( be a valid pointer to an array of descriptorWriteCount valid ( structuresIf descriptorCopyCount is not 0, pDescriptorCopies must( be a valid pointer to an array of descriptorCopyCount valid 0 structuresHost SynchronizationHost access to pDescriptorWrites [].dstSet must be externally synchronizedHost access to pDescriptorCopies [].dstSet must be externally synchronizedSee Also0, , (/vulkandevice> is the logical device that creates the descriptor set layout.vulkan pCreateInfo is a pointer to a )E structure specifying the state of the descriptor set layout object.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter./vulkandevice? is the logical device that destroys the descriptor set layout.vulkandescriptorSetLayout) is the descriptor set layout to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter./vulkandevice8 is the logical device that creates the descriptor pool.vulkan pCreateInfo is a pointer to a -? structure specifying the state of the descriptor pool object.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter./vulkandevice9 is the logical device that destroys the descriptor pool.vulkandescriptorPool# is the descriptor pool to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter./vulkandevice5 is the logical device that owns the descriptor pool.vulkandescriptorPool$ is the descriptor pool to be reset.vulkanflags is reserved for future use./vulkandevice5 is the logical device that owns the descriptor pool.vulkan pAllocateInfo is a pointer to a +4 structure describing parameters of the allocation./vulkandevice5 is the logical device that owns the descriptor pool.vulkandescriptorPoolG is the descriptor pool from which the descriptor sets were allocated.vulkanpDescriptorSets) is a pointer to an array of handles to  objects./vulkandevice8 is the logical device that updates the descriptor sets.vulkanpDescriptorWrites is a pointer to an array of (8 structures describing the descriptor sets to write to.vulkanpDescriptorCopies is a pointer to an array of 0< structures describing the descriptor sets to copy between.e(//////////)////*//////+////,///-/////./////////0////////H&'%///////////v////////////////.////(//////////0////////*//////)////,///-/////+////'&%HNone("#%&'-./1789;=>?FHIMSUVX_dghklmq]vulkanVkPhysicalDevicePushDescriptorPropertiesKHR - Structure describing push descriptor limits that can be supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Also/vulkanmaxPushDescriptors+ is the maximum number of descriptors that can, be used in a descriptor set created with pQ set.0vulkanLvkCmdPushDescriptorSetKHR - Pushes descriptor updates into a command buffer DescriptionPush descriptors# are a small bank of descriptors whose storage is internally managed by the command buffer rather than being written into a descriptor set and later bound to a command buffer. Push descriptors allow for incremental updates of descriptors without managing the lifetime of descriptor sets.^When a command buffer begins recording, all push descriptors are undefined. Push descriptors can be updated incrementally and cause shaders to use the updated descriptors for subsequent rendering commands (either compute or graphics, according to the pipelineBindPoint]) until the descriptor is overwritten, or else until the set is disturbed as described in  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibilityPipeline Layout Compatibility. When the set is disturbed or push descriptors with a different descriptor set layout are set, all push descriptors are undefined.Push descriptors that are  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticusestatically used by a pipeline must not be undefined at the time that a draw or dispatch command is recorded to execute using that pipeline. This includes immutable sampler descriptors, which mustt be pushed before they are accessed by a pipeline (the immutable samplers are pushed, rather than the samplers in pDescriptorWrites2). Push descriptors that are not statically used can remain undefined.fPush descriptors do not use dynamic offsets. Instead, the corresponding non-dynamic descriptor types can be used and the offset member of  v can1 be changed each time the descriptor is written.Each element of pDescriptorWrites is interpreted as in ( , except the dstSet member is ignored.%To push an immutable sampler, use a ( with  dstBinding and dstArrayElementH selecting the immutable sampler s binding. If the descriptor type is o, the  pImageInfo parameter is ignored and the immutable sampler is taken from the push descriptor set layout in the pipeline layout. If the descriptor type is ob, the sampler member of the  pImageInfov parameter is ignored and the immutable sampler is taken from the push descriptor set layout in the pipeline layout. Valid UsagepipelineBindPoint must be supported by the  commandBuffer s parent /E s queue familyset must be less than 9::setLayoutCount provided when layout was createdset musts be the unique set number in the pipeline layout that uses a descriptor set layout that was created with pQValid Usage (Implicit) commandBuffer must be a valid  handlepipelineBindPoint must be a valid V valuelayout must be a valid | handlepDescriptorWrites must( be a valid pointer to an array of descriptorWriteCount valid ( structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operationsdescriptorWriteCount must be greater than 0Both of  commandBuffer, and layout must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics Compute  See Also, V, |, (0vulkan{vkCmdPushDescriptorSetWithTemplateKHR - Pushes descriptor updates into a command buffer using a descriptor update template Valid UsageThe pipelineBindPointF specified during the creation of the descriptor update template must be supported by the  commandBuffer s parent /E s queue familypData mustT be a valid pointer to a memory containing one or more valid instances of  j,  v , or /= in a layout defined by descriptorUpdateTemplate when it was created with Valid Usage (Implicit) commandBuffer must be a valid  handledescriptorUpdateTemplate must be a valid  handlelayout must be a valid | handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operationsEach of  commandBuffer, descriptorUpdateTemplate, and layout must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics Compute   API example. struct AppDataStructure { VkDescriptorImageInfo imageInfo; // a single image info // ... some more application related data }; const VkDescriptorUpdateTemplateEntry descriptorUpdateTemplateEntries[] = { // binding to a single image descriptor { 0, // binding 0, // dstArrayElement 1, // descriptorCount VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, // descriptorType offsetof(AppDataStructure, imageInfo), // offset 0 // stride is not required if descriptorCount is 1 } }; // create a descriptor update template for descriptor set updates const VkDescriptorUpdateTemplateCreateInfo createInfo = { VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, // sType NULL, // pNext 0, // flags 1, // descriptorUpdateEntryCount descriptorUpdateTemplateEntries, // pDescriptorUpdateEntries VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR, // templateType 0, // descriptorSetLayout, ignored by given templateType VK_PIPELINE_BIND_POINT_GRAPHICS, // pipelineBindPoint myPipelineLayout, // pipelineLayout 0, // set }; VkDescriptorUpdateTemplate myDescriptorUpdateTemplate; myResult = vkCreateDescriptorUpdateTemplate( myDevice, &createInfo, NULL, &myDescriptorUpdateTemplate); } AppDataStructure appData; // fill appData here or cache it in your engine vkCmdPushDescriptorSetWithTemplateKHR(myCmdBuffer, myDescriptorUpdateTemplate, myPipelineLayout, 0,&appData);See Also, , |0vulkan commandBufferA is the command buffer that the descriptors will be recorded in.vulkanpipelineBindPoint is a V indicating whether the descriptors will be used by graphics pipelines or compute pipelines. There is a separate set of push descriptor bindings for each of graphics and compute, so binding one does not disturb the other.vulkanlayout is a |& object used to program the bindings.vulkansetV is the set number of the descriptor set in the pipeline layout that will be updated.vulkanpDescriptorWrites is a pointer to an array of (6 structures describing the descriptors to be updated.0vulkan commandBufferA is the command buffer that the descriptors will be recorded in.vulkandescriptorUpdateTemplateZ is a descriptor update template defining how to interpret the descriptor information in pData.vulkanlayout is a |* object used to program the bindings. It must3 be compatible with the layout used to create the descriptorUpdateTemplate handle.vulkanset\ is the set number of the descriptor set in the pipeline layout that will be updated. This must( be the same number used to create the descriptorUpdateTemplate handle.vulkanpDataI is a pointer to memory containing descriptors for the templated update. /////000 00///0//None("#%&'-./1789;=>?FHIMSUVX_dghklmq^6####################################00 0 0 0 000000000000Y00000000000 0 0 00 00#######################################################################VNone("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkanXVkPhysicalDeviceMaintenance3Properties - Structure describing descriptor set propertiesMembersThe members of the  C structure describe the following implementation-dependent limits: DescriptionIf the   structure is included in the pNext chain of T9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alsom,  vulkanvVkDescriptorSetLayoutSupport - Structure returning information about whether a descriptor set layout can be supported Description supported is set to . if the descriptor set can be created, or else is set to ..Valid Usage (Implicit)sType must be ApNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueSee Alsoo, , 0 , 0vulkanpNext is NULL6 or a pointer to a structure extending this structure.0vulkan supported- specifies whether the descriptor set layout can be created.0vulkanmaxPerSetDescriptors is a maximum number of descriptors (summed over all descriptor types) in a single descriptor set that is guaranteed to satisfy any implementation-dependent constraints on the size of a descriptor set itself. Applications canQ query whether a descriptor set that goes beyond this limit is supported using 0 .0vulkanmaxMemoryAllocationSize2 is the maximum size of a memory allocation that can@ be created, even if there is more space available in the heap.0 vulkanWvkGetDescriptorSetLayoutSupport - Query whether a descriptor set layout can be created DescriptionSome implementations have limitations on what fits in a descriptor set which are not easily expressible in terms of existing limits like maxDescriptorSet*, for example if all descriptor types share a limited space in memory but each descriptor is a different size or alignment. This command returns information about whether a descriptor set satisfies this limit. If the descriptor set layout satisfies the  ::maxPerSetDescriptors/ limit, this command is guaranteed to return . in  :: supported-. If the descriptor set layout exceeds the  ::maxPerSetDescriptorsY limit, whether the descriptor set layout is supported is implementation-dependent and maye depend on whether the descriptor sizes and alignments cause the layout to exceed an internal limit.5This command does not consider other limits such as maxPerStageDescriptorO*, and so a descriptor set layout that is supported according to this command must3 still satisfy the pipeline layout limits such as maxPerStageDescriptor,* in order to be used in a pipeline layout.Note This is a  query rather than /3 because the answer may depend on enabled features.Valid Usage (Implicit)See Also),  , 0 vulkandeviceD is the logical device that would create the descriptor set layout.device must be a valid  handlevulkan pCreateInfo is a pointer to a )E structure specifying the state of the descriptor set layout object. pCreateInfo must be a valid pointer to a valid ) structure 000 000~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      0 {0  000 000~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      None("#%&'-./1789;=>?FHIMSUVX_dghklmqD 0.0/00010203040506 05040601000/030.02None("#%&'-./1789;=>?FHIMSUVX_dghklmquFGADCBJ  ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! LMBQPONMLKJIHGFEDCN     UBA@?>=<;:9876543210/.-,+*)('&%$#"! _w(z576|);=<>@?-89:1&'0243/ # }  ~ M N O P Q%"%%%#%&%$%'%*%(%+%)vwxsut$h$m$n$l$i$j$k$`$g$a$b$c$d$e$fMNODEFGJKLHIABCYZ[\]&'()$% ?@=>;< $$$$$$$%%%%%%%%%%%%.........../ / /....///////////// / / }~  000 000 LMNO PQRSTUV++++++++++++++++++++ C D / 0 1~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!       . 2 B E _ ` a j i h g f e d c b r s t u        IJKSRQPONMLcdegfhijutsrqponmlk   *PQRS$o$p$q$r%%,%-%%%+++///////0 0707None("#%&'-./1789;=>?FHIMSUVX_dghklmq,\vulkanCVkRenderPassBeginInfo - Structure specifying render pass begin info Description renderArea is the render area that is affected by the render pass instance. The effects of attachment load, store and multisample resolve operations are restricted to the pixels whose x and y coordinates fall within the render area on all attachments. The render area extends to all layers of  framebuffer. The application must ensure (using scissor if necessary) that all rendering is contained within the render area. The render area, after any transform specified by D:: transform is applied, must0 be contained within the framebuffer dimensions.If  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transformrender pass transform is enabled, then  renderArea must: equal the framebuffer pre-transformed dimensions. After  renderArea has been transformed by D:: transform, the resulting render area must( be equal to the framebuffer dimensions.pWhen multiview is enabled, the resolve operation at the end of a subpass applies to all views in the view mask.NoteThere may be a performance cost for using a render area smaller than the framebuffer, unless it matches the render area granularity for the render pass. Valid UsageclearValueCount must6 be greater than the largest attachment index in  renderPass that specifies a loadOp (or  stencilLoadOp=, if the attachment has a depth/stencil format) of : renderPass must be  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 6E( structure specified when creating  framebufferIf the pNext chain does not contain  or its deviceRenderAreaCount member is equal to 0, renderArea.offset.x must be greater than or equal to 0If the pNext chain does not contain  or its deviceRenderAreaCount member is equal to 0, renderArea.offset.y must be greater than or equal to 0If the pNext chain does not contain  or its deviceRenderAreaCount member is equal to 0, renderArea.offset.x + renderArea.offset.width must be less than or equal to 6E::width the  framebuffer was created withIf the pNext chain does not contain  or its deviceRenderAreaCount member is equal to 0, renderArea.offset.y + renderArea.offset.height must$ be less than or equal to 6E::height the  framebuffer was created withIf the pNext chain contains  , the offset.x member of each element of pDeviceRenderAreas must# be greater than or equal to 0If the pNext chain contains  , the offset.y member of each element of pDeviceRenderAreas must# be greater than or equal to 0If the pNext chain contains , offset.x +  offset.width of each element of pDeviceRenderAreas must be less than or equal to 6E::width the  framebuffer was created withIf the pNext chain contains , offset.y +  offset.height of each element of pDeviceRenderAreas must be less than or equal to 6E::height the  framebuffer was created withIf  framebuffer was created with a 6E::flags& value that did not include f , and the pNext chain includes a 7 structure, its attachmentCount must be zeroIf  framebuffer was created with a 6E::flags value that included f  , the attachmentCount of a 7 structure included in the pNext chain must$ be equal to the value of gD::attachmentImageInfoCount used to create  framebufferIf  framebuffer was created with a 6E::flags value that included  , each element of the  pAttachments member of a 7 structure included in the pNext chain must$ have been created on the same / as  framebuffer and  renderPassIf  framebuffer was created with a 6E::flags value that included f , each element of the  pAttachments member of a 7 structure included in the pNext chain must be a /* of an image created with a value of 0::flags equal to the flags- member of the corresponding element of :: pAttachments used to create  framebufferIf  framebuffer was created with a 6E::flags value that included f , each element of the  pAttachments member of a 7 structure included in the pNext chain must be a /* of an image created with a value of 0::usage equal to the usage- member of the corresponding element of gD:: pAttachments used to create  framebufferIf  framebuffer was created with a 6E::flags value that included f , each element of the  pAttachments member of a 7 structure included in the pNext chain must be a / with a width equal to the width2 member of the corresponding element of gD:: pAttachments used to create  framebufferIf  framebuffer was created with a 6E::flags value that included f , each element of the  pAttachments member of a 7 structure included in the pNext chain must be a /! with a height equal to the height- member of the corresponding element of gD:: pAttachments used to create  framebufferIf  framebuffer was created with a 6E::flags value that included f , each element of the  pAttachments member of a 7 structure included in the pNext chain must be a // of an image created with a value of 1`::subresourceRange.layerCount equal to the  layerCount- member of the corresponding element of gD:: pAttachments used to create  framebufferIf  framebuffer was created with a 6E::flags value that included f , each element of the  pAttachments member of a 7 structure included in the pNext chain must be a // of an image created with a value of fU::viewFormatCount equal to the viewFormatCount2 member of the corresponding element of gD:: pAttachments used to create  framebufferIf  framebuffer was created with a 6E::flags value that included f , each element of the  pAttachments member of a 7 structure included in the pNext chain must be a /9 of an image created with a set of elements in fU:: pViewFormats* equal to the set of elements in the  pViewFormats2 member of the corresponding element of gD:: pAttachments used to create  framebufferIf  framebuffer was created with a 6E::flags value that included f , each element of the  pAttachments member of a 7 structure included in the pNext chain must be a /* of an image created with a value of 1`::format/ equal to the corresponding value of 6::format in  renderPassIf  framebuffer was created with a 6E::flags value that included f , each element of the  pAttachments member of a 7 structure included in the pNext chain must be a /* of an image created with a value of 0::samples/ equal to the corresponding value of 6::samples in  renderPassIf the pNext chain includes D,  renderArea::offset must equal (0,0)If the pNext chain includes D,  renderArea::extent transformed by D:: transform must equal the  framebuffer dimensionsValid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , 7, , or DThe sType value of each struct in the pNext chain must be unique renderPass must be a valid x handle framebuffer must be a valid  handleIf clearValueCount is not 0,  pClearValues must( be a valid pointer to an array of clearValueCount 08 unionsBoth of  framebuffer, and  renderPass must? have been created, allocated, or retrieved from the same /See Also08, , p, x, , 0, c, vulkanLVkImageSubresourceLayers - Structure specifying an image subresource layers Valid UsageIf  aspectMask contains d , it must not contain either of dx or dy aspectMask must not contain d aspectMask must not include &VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT for any index i layerCount must be greater than 0Valid Usage (Implicit) aspectMask must be a valid combination of d values aspectMask must not be 0See Also%, h, !,  , vulkan@VkImageResolve - Structure specifying an image resolve operation Valid UsageThe  aspectMask member of srcSubresource and dstSubresource must only contain d The  layerCount member of srcSubresource and dstSubresource must match#If either of the calling command s srcImage or dstImage parameters are of  , the baseArrayLayer and  layerCount members of both srcSubresource and dstSubresource must be 0 and 1, respectively srcOffset.x and ( extent.width +  srcOffset.x) must' both be greater than or equal to 0B and less than or equal to the source image subresource width srcOffset.y and ( extent.height +  srcOffset.y) must' both be greater than or equal to 0C and less than or equal to the source image subresource heightIf the calling command s srcImage is of type , then  srcOffset.y must be 0 and  extent.height must be 1 srcOffset.z and ( extent.depth +  srcOffset.z) must' both be greater than or equal to 0B and less than or equal to the source image subresource depthIf the calling command s srcImage is of type  or , then  srcOffset.z must be 0 and  extent.depth must be 1 dstOffset.x and ( extent.width +  dstOffset.x) must' both be greater than or equal to 0G and less than or equal to the destination image subresource width dstOffset.y and ( extent.height +  dstOffset.y) must' both be greater than or equal to 0H and less than or equal to the destination image subresource heightIf the calling command s dstImage is of type , then  dstOffset.y must be 0 and  extent.height must be 1 dstOffset.z and ( extent.depth +  dstOffset.z) must' both be greater than or equal to 0G and less than or equal to the destination image subresource depthIf the calling command s dstImage is of type  or , then  dstOffset.z must be 0 and  extent.depth must be 1Valid Usage (Implicit)srcSubresource must be a valid  structuredstSubresource must be a valid  structureSee Alsos, , q, 0 vulkan:VkImageCopy - Structure specifying an image copy operation DescriptionFor @ images, copies are performed slice by slice starting with the z member of the  srcOffset or  dstOffset, and copying depthb slices. For images with multiple layers, copies are performed layer by layer starting with the baseArrayLayer member of the srcSubresource or dstSubresource and copying  layerCount layers. Image data canH be copied between images with different image types. If one image is  and the other image is O with multiple layers, then each slice is copied to or from a different layer.Copies involving a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar image format2 specify the region to be copied in terms of the planet to be copied, not the coordinates of the multi-planar image. This means that copies accessing the R/B planes of _422  format images must( fit the copied region within half the widthD of the parent image, and that copies accessing the R/B planes of _420  format images must( fit the copied region within half the width and height of the parent image. Valid Usage!If neither the calling command s srcImage nor the calling command s dstImage has a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar image format then the  aspectMask member of srcSubresource and dstSubresource must match!If the calling command s srcImage has a  with  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion two planes then the srcSubresource  aspectMask must be d or dIf the calling command s srcImage has a  with  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion three planes then the srcSubresource  aspectMask must be d, d, or dIf the calling command s dstImage has a  with  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion two planes then the dstSubresource  aspectMask must be d or dIf the calling command s dstImage has a  with  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion three planes then the dstSubresource  aspectMask must be d, d, or dIf the calling command s srcImage has a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar image format and the dstImage5 does not have a multi-planar image format, the dstSubresource  aspectMask must be dIf the calling command s dstImage has a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar image format and the srcImage5 does not have a multi-planar image format, the srcSubresource  aspectMask must be dThe number of slices of the extent (for 3D) or layers of the srcSubresource (for non-3D) must( match the number of slices of the extent (for 3D) or layers of the dstSubresource (for non-3D)#If either of the calling command s srcImage or dstImage parameters are of  , the baseArrayLayer and  layerCount* members of the corresponding subresource must be 0 and 1, respectivelyThe  aspectMask member of srcSubresource must7 specify aspects present in the calling command s srcImageThe  aspectMask member of dstSubresource must7 specify aspects present in the calling command s dstImage srcOffset.x and ( extent.width +  srcOffset.x) must' both be greater than or equal to 0B and less than or equal to the source image subresource width srcOffset.y and ( extent.height +  srcOffset.y) must' both be greater than or equal to 0C and less than or equal to the source image subresource heightIf the calling command s srcImage is of type , then  srcOffset.y must be 0 and  extent.height must be 1 srcOffset.z and ( extent.depth +  srcOffset.z) must' both be greater than or equal to 0B and less than or equal to the source image subresource depthIf the calling command s srcImage is of type , then  srcOffset.z must be 0 and  extent.depth must be 1If the calling command s dstImage is of type , then  dstOffset.z must be 0 and  extent.depth must be 1If the calling command s srcImage is of type , then  srcOffset.z must be 0If the calling command s dstImage is of type , then  dstOffset.z must be 0If both srcImage and dstImage are of type  then  extent.depth must be 1If the calling command s srcImage is of type  , and the dstImage is of type  , then  extent.depth must equal to the  layerCount member of srcSubresourceIf the calling command s dstImage is of type  , and the srcImage is of type  , then  extent.depth must equal to the  layerCount member of dstSubresource dstOffset.x and ( extent.width +  dstOffset.x) must' both be greater than or equal to 0G and less than or equal to the destination image subresource width dstOffset.y and ( extent.height +  dstOffset.y) must' both be greater than or equal to 0H and less than or equal to the destination image subresource heightIf the calling command s dstImage is of type , then  dstOffset.y must be 0 and  extent.height must be 1 dstOffset.z and ( extent.depth +  dstOffset.z) must' both be greater than or equal to 0G and less than or equal to the destination image subresource depthIf the calling command s srcImage" is a compressed image, or a  single-plane, _422  image format, all members of  srcOffset mustQ be a multiple of the corresponding dimensions of the compressed texel blockIf the calling command s srcImage" is a compressed image, or a  single-plane, _422  image format,  extent.width must< be a multiple of the compressed texel block width or ( extent.width +  srcOffset.x) must) equal the source image subresource widthIf the calling command s srcImage" is a compressed image, or a  single-plane, _422  image format,  extent.height must= be a multiple of the compressed texel block height or ( extent.height +  srcOffset.y) must* equal the source image subresource heightIf the calling command s srcImage" is a compressed image, or a  single-plane, _422  image format,  extent.depth must< be a multiple of the compressed texel block depth or ( extent.depth +  srcOffset.z) must) equal the source image subresource depthIf the calling command s dstImage) is a compressed format image, or a  single-plane, _422  image format, all members of  dstOffset mustQ be a multiple of the corresponding dimensions of the compressed texel blockIf the calling command s dstImage) is a compressed format image, or a  single-plane, _422  image format,  extent.width must< be a multiple of the compressed texel block width or ( extent.width +  dstOffset.x) must. equal the destination image subresource widthIf the calling command s dstImage) is a compressed format image, or a  single-plane, _422  image format,  extent.height must= be a multiple of the compressed texel block height or ( extent.height +  dstOffset.y) must/ equal the destination image subresource heightIf the calling command s dstImage) is a compressed format image, or a  single-plane, _422  image format,  extent.depth must< be a multiple of the compressed texel block depth or ( extent.depth +  dstOffset.z) must. equal the destination image subresource depthValid Usage (Implicit)srcSubresource must be a valid  structuredstSubresource must be a valid  structureSee Alsos, , q, 0!vulkan:VkImageBlit - Structure specifying an image blit operation DescriptionFor each element of the pRegionsT array, a blit operation is performed the specified source and destination regions. Valid UsageThe  aspectMask member of srcSubresource and dstSubresource must matchThe  layerCount member of srcSubresource and dstSubresource must match#If either of the calling command s srcImage or dstImage parameters are of  , the baseArrayLayer and  layerCount members of both srcSubresource and dstSubresource must be 0 and 1, respectivelyThe  aspectMask member of srcSubresource must7 specify aspects present in the calling command s srcImageThe  aspectMask member of dstSubresource must7 specify aspects present in the calling command s dstImage srcOffset [0].x and  srcOffset[1].x must' both be greater than or equal to 0B and less than or equal to the source image subresource width srcOffset [0].y and  srcOffset[1].y must' both be greater than or equal to 0C and less than or equal to the source image subresource heightIf the calling command s srcImage is of type , then  srcOffset [0].y must be 0 and  srcOffset[1].y must be 1 srcOffset [0].z and  srcOffset[1].z must' both be greater than or equal to 0B and less than or equal to the source image subresource depthIf the calling command s srcImage is of type  or , then  srcOffset [0].z must be 0 and  srcOffset[1].z must be 1 dstOffset [0].x and  dstOffset[1].x must' both be greater than or equal to 0G and less than or equal to the destination image subresource width dstOffset [0].y and  dstOffset[1].y must' both be greater than or equal to 0H and less than or equal to the destination image subresource heightIf the calling command s dstImage is of type , then  dstOffset [0].y must be 0 and  dstOffset[1].y must be 1 dstOffset [0].z and  dstOffset[1].z must' both be greater than or equal to 0G and less than or equal to the destination image subresource depthIf the calling command s dstImage is of type  or , then  dstOffset [0].z must be 0 and  dstOffset[1].z must be 1Valid Usage (Implicit)srcSubresource must be a valid  structuredstSubresource must be a valid  structureSee Also, q, 0"vulkan4VkClearRect - Structure specifying a clear rectangle Description The layers [baseArrayLayer, baseArrayLayer +  layerCountI) counting from the base layer of the attachment image view are cleared.See Alsop, 0#vulkanLVkClearDepthStencilValue - Structure specifying a clear depth stencil value Valid Usage Unless the VK_EXT_depth_range_unrestricted extension is enabled depth must be between 0.0 and 1.0 , inclusiveSee Also08, 0$vulkan;VkClearAttachment - Structure specifying a clear attachment Description&No memory barriers are needed between 0U and preceding or subsequent draw or attachment clear commands in the same subpass.The 06 command is not affected by the bound pipeline state. Attachments canH also be cleared at the beginning of a render pass instance by setting loadOp (or  stencilLoadOp) of 6 to :, as described for 6. Valid UsageIf  aspectMask includes d , it must not include dx or dy aspectMask must not include d aspectMask must not include &VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT for any index i clearValue must be a valid 08 unionValid Usage (Implicit) aspectMask must be a valid combination of d values aspectMask must not be 0See Also08, h, 0%vulkanFVkBufferImageCopy - Structure specifying a buffer image copy operation DescriptionWhen copying to or from a depth or stencil aspect, the data in buffer memory uses a layout that is a (mostly) tightly packed representation of the depth or stencil data. Specifically:kdata copied to or from the stencil aspect of any depth/stencil format is tightly packed with one  value per texel.2data copied to or from the depth aspect of a  or - format is tightly packed with one  value per texel.2data copied to or from the depth aspect of a  or - format is tightly packed with one  value per texel.2data copied to or from the depth aspect of a  or  format is packed with one 32-bit word per texel with the D24 value in the LSBs of the word, and undefined values in the eight MSBs.NoteVTo copy both the depth and stencil aspects of a depth/stencil format, two entries in pRegions can3 be used, where one specifies the depth aspect in imageSubresource., and the other specifies the stencil aspect.7Because depth or stencil aspect buffer to image copies mayu require format conversions on some implementations, they are not supported on queues that do not support graphics.)When copying to a depth aspect, and the VK_EXT_depth_range_unrestricted6 extension is not enabled, the data in buffer memory must? be in the range [0,1], or the resulting values are undefined.:Copies are done layer by layer starting with image layer baseArrayLayer member of imageSubresource.  layerCountF layers are copied from the source image or to the destination image. Valid UsageIf the calling command s A parameter s format is not a depth/stencil format or a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then  bufferOffset must4 be a multiple of the format s texel block sizeIf the calling command s # parameter s format is a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then  bufferOffset mustX be a multiple of the element size of the compatible format for the format and the  aspectMask of the imageSubresource as defined in ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes???bufferRowLength must be 0', or greater than or equal to the width member of  imageExtentbufferImageHeight must be 0', or greater than or equal to the height member of  imageExtent imageOffset.x and (imageExtent.width +  imageOffset.x) must' both be greater than or equal to 0g and less than or equal to the image subresource width where this refers to the width of the plane9 of the image involved in the copy in the case of a xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format imageOffset.y and (imageExtent.height +  imageOffset.y) must' both be greater than or equal to 0i and less than or equal to the image subresource height where this refers to the height of the plane9 of the image involved in the copy in the case of a xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar formatIf the calling command s srcImage (0 ) or dstImage (0) is of type , then  imageOffset.y must be 0 and imageExtent.height must be 1 imageOffset.z and (imageExtent.depth +  imageOffset.z) must' both be greater than or equal to 0; and less than or equal to the image subresource depthIf the calling command s srcImage (0 ) or dstImage (0) is of type  or , then  imageOffset.z must be 0 and imageExtent.depth must be 1If the calling command s , parameter is a compressed image, or a  single-plane, _422  image format, bufferRowLength must7 be a multiple of the compressed texel block widthIf the calling command s , parameter is a compressed image, or a  single-plane, _422  image format, bufferImageHeight must8 be a multiple of the compressed texel block heightIf the calling command s , parameter is a compressed image, or a  single-plane, _422$  image format, all members of  imageOffset mustQ be a multiple of the corresponding dimensions of the compressed texel blockIf the calling command s , parameter is a compressed image, or a  single-plane, _422  image format,  bufferOffset must? be a multiple of the compressed texel block size in bytesIf the calling command s , parameter is a compressed image, or a  single-plane, _422  image format, imageExtent.width must< be a multiple of the compressed texel block width or (imageExtent.width +  imageOffset.x) must' equal the image subresource widthIf the calling command s , parameter is a compressed image, or a  single-plane, _422  image format, imageExtent.height must= be a multiple of the compressed texel block height or (imageExtent.height +  imageOffset.y) must( equal the image subresource heightIf the calling command s , parameter is a compressed image, or a  single-plane, _422  image format, imageExtent.depth must< be a multiple of the compressed texel block depth or (imageExtent.depth +  imageOffset.z) must' equal the image subresource depthThe  aspectMask member of imageSubresource must7 specify aspects present in the calling command s  parameterIf the calling command s # parameter s format is a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format, then the  aspectMask member of imageSubresource must be d, d, or d (with d5 valid only for image formats with three planes)The  aspectMask member of imageSubresource must only have a single bit setIf the calling command s  parameter is of  , the baseArrayLayer and  layerCount members of imageSubresource must be 0 and 1, respectivelyValid Usage (Implicit)imageSubresource must be a valid  structureSee Alsom, s, , q, 0, 0&vulkan;VkBufferCopy - Structure specifying a buffer copy operation Valid UsageThe size must be greater than 0See Alsom, 00?vulkan aspectMask^ is a mask selecting the color, depth and/or stencil aspects of the attachment to be cleared.0@vulkancolorAttachment is only meaningful if d is set in  aspectMask&, in which case it is an index to the pColorAttachments array in the 6-O structure of the current subpass which selects the color attachment to clear.0Avulkan clearValueS is the color or depth/stencil value to clear the attachment to, as described in  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears-values Clear Values below.0Cvulkandepth is the clear value for the depth aspect of the depth/stencil attachment. It is a floating-point value which is automatically converted to the attachment s format.0Dvulkanstencil is the clear value for the stencil aspect of the depth/stencil attachment. It is a 32-bit integer value which is converted to the attachment s format by taking the appropriate number of LSBs.0FvulkanpNext is NULL6 or a pointer to a structure extending this structure.0Gvulkan renderPass, is the render pass to begin an instance of.0Hvulkan framebufferS is the framebuffer containing the attachments that are used with the render pass.0Ivulkan renderAreai is the render area that is affected by the render pass instance, and is described in more detail below.0Jvulkan pClearValues is a pointer to an array of clearValueCount 08V structures that contains clear values for each attachment, if the attachment uses a loadOp value of := or if the attachment has a depth/stencil format and uses a  stencilLoadOp value of :~. The array is indexed by attachment number. Only elements corresponding to cleared attachments are used. Other elements of  pClearValues are ignored.0LvulkansrcSubresource and dstSubresource are  structures specifying the image subresources of the images used for the source and destination image data, respectively. Resolve of depth/stencil images is not supported.0Mvulkan srcOffset and  dstOffset select the initial x, y, and zP offsets in texels of the sub-regions of the source and destination image data.0Pvulkanextent: is the size in texels of the source image to resolve in width, height and depth.0Rvulkan bufferOffsetg is the offset in bytes from the start of the buffer object where the image data is copied from or to.0SvulkanbufferRowLength and bufferImageHeight specify in texels a subregion of a larger two- or three-dimensional image in buffer memory, and control the addressing calculations. If either of these values is zero, that aspect of the buffer memory is considered to be tightly packed according to the  imageExtent.0UvulkanimageSubresource is a n used to specify the specific image subresources of the image used for the source or destination image data.0Vvulkan imageOffset selects the initial x, y, zN offsets in texels of the sub-region of the source or destination image data.0Wvulkan imageExtent/ is the size in texels of the image to copy in width, height and depth.0YvulkansrcSubresource! is the subresource to blit from.0Zvulkan srcOffsets" is a pointer to an array of two q? structures specifying the bounds of the source region within srcSubresource.0[vulkandstSubresource! is the subresource to blit into.0\vulkan dstOffsets" is a pointer to an array of two qD structures specifying the bounds of the destination region within dstSubresource.0^vulkansrcSubresource and dstSubresource are { structures specifying the image subresources of the images used for the source and destination image data, respectively.0_vulkan srcOffset and  dstOffset select the initial x, y, and zP offsets in texels of the sub-regions of the source and destination image data.0bvulkanextent/ is the size in texels of the image to copy in width, height and depth.0dvulkan srcOffset4 is the starting offset in bytes from the start of  srcBuffer.0evulkan dstOffset4 is the starting offset in bytes from the start of  dstBuffer.0fvulkansize is the number of bytes to copy.0hvulkan aspectMask is a combination of dB, selecting the color, depth and/or stencil aspects to be copied.0ivulkanmipLevel" is the mipmap level to copy from.0jvulkanbaseArrayLayer and  layerCount6 are the starting layer and number of layers to copy.0mvulkanrect- is the two-dimensional region to be cleared.0nvulkanbaseArrayLayer" is the first layer to be cleared.0ovulkan layerCount" is the number of layers to clear.0pvulkan>vkCmdBindPipeline - Bind a pipeline object to a command buffer DescriptionOnce bound, a pipeline binding affects subsequent graphics or compute commands in the command buffer until a different pipeline is bound to the bind point. The pipeline bound to  controls the behavior of 0 and 0. The pipeline bound to  controls the behavior of all  Uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawingdrawing commands. The pipeline bound to  controls the behavior of 8. No other commands are affected by the pipeline state. Valid UsageIf pipelineBindPoint is  , the /E that  commandBuffer was allocated from must support compute operations If pipelineBindPoint is  , the /E that  commandBuffer was allocated from must support graphics operationsIf pipelineBindPoint is , pipeline must be a compute pipelineIf pipelineBindPoint is , pipeline must be a graphics pipeline If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-variableMultisampleRatevariable multisample rate feature is not supported, pipeline7 is a graphics pipeline, the current subpass  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachmentsuses no attachments, and this is not the first call to this function with a graphics pipeline after transitioning to the current subpass, then the sample count specified by this pipeline must- match that set in the previous pipelineIf ::variableSampleLocations is ., and pipeline1 is a graphics pipeline created with a  structure having its sampleLocationsEnable member set to . but without l-4 enabled then the current render pass instance must+ have been begun by specifying a  structure whose pPostSubpassSampleLocations( member contains an element with a  subpassIndex1 matching the current subpass index and the sampleLocationsInfo member of that element must match the sampleLocationsInfo specified in # when the pipeline was created This command must7 not be recorded when transform feedback is activeIf pipelineBindPoint is  , the /E that  commandBuffer was allocated from must support compute operationsIf pipelineBindPoint is  , the pipeline must be a ray tracing pipelineThe pipeline must! not have been created with V setValid Usage (Implicit) commandBuffer must be a valid  handlepipelineBindPoint must be a valid V valuepipeline must be a valid ~ handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operationsBoth of  commandBuffer, and pipeline must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics Compute  See Also, ~, V0qvulkan7vkCmdSetViewport - Set the viewport on a command buffer Description0The viewport parameters taken from element i of  pViewports3 replace the current state for the viewport index  firstViewport + i, for i in [0,  viewportCount). Valid Usage firstViewport must be less than  l:: maxViewports The sum of  firstViewport and  viewportCount must be between 1 and  l:: maxViewports, inclusive If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  firstViewport must be 0 If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  viewportCount must be 1Valid Usage (Implicit) commandBuffer must be a valid  handle pViewports must( be a valid pointer to an array of  viewportCount valid  structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations viewportCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also, 0rvulkanHvkCmdSetScissor - Set the dynamic scissor rectangles on a command buffer Description/The scissor rectangles taken from element i of  pScissors2 replace the current state for the scissor index  firstScissor + i, for i in [0,  scissorCount).YThis command sets the state for a given draw when the graphics pipeline is created with l set in 7::pDynamicStates. Valid Usage firstScissor must be less than  l:: maxViewports The sum of  firstScissor and  scissorCount must be between 1 and  l:: maxViewports, inclusive If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  firstScissor must be 0 If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  scissorCount must be 1The x and y members of offset member of any element of  pScissors must be greater than or equal to 0Evaluation of (offset.x +  extent.width) mustF not cause a signed integer addition overflow for any element of  pScissorsEvaluation of (offset.y +  extent.height) mustF not cause a signed integer addition overflow for any element of  pScissorsValid Usage (Implicit) commandBuffer must be a valid  handle pScissors must# be a valid pointer to an array of  scissorCount p structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations scissorCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also, p0svulkan4vkCmdSetLineWidth - Set the dynamic line width state Valid Usage If the  `https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-wideLines wide lines feature is not enabled,  lineWidth must be 1.0Valid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also0tvulkan4vkCmdSetDepthBias - Set the depth bias dynamic state DescriptionIf depthBiasEnable is .J, no depth bias is applied and the fragment s depth values are unchanged.depthBiasSlopeFactor5 scales the maximum depth slope of the polygon, and depthBiasConstantFactor scales an implementation-dependent constant that relates to the usable resolution of the depth buffer. The resulting values are summed to produce the depth bias value which is then clamped to a minimum or maximum value specified by depthBiasClamp. depthBiasSlopeFactor, depthBiasConstantFactor, and depthBiasClamp can% each be positive, negative, or zero.*The maximum depth slope m of a triangle ism = \sqrt{ \left({{\partial z_f} \over {\partial x_f}}\right)^2 + \left({{\partial z_f} \over {\partial y_f}}\right)^2}1where (xf, yf, zf) is a point on the triangle. m may be approximated asm = \max\left( \left| { {\partial z_f} \over {\partial x_f} } \right|, \left| { {\partial z_f} \over {\partial y_f} } \right| \right).The minimum resolvable difference r is an implementation-dependent parameter that depends on the depth buffer representation. It is the smallest difference in framebuffer coordinate z values that is guaranteed to remain distinct throughout polygon rasterization and in the depth buffer. All pairs of fragments generated by the rasterization of two polygons with otherwise identical vertices, but z<f values that differ by r, will have distinct depth values.For fixed-point depth buffer representations, r is constant throughout the range of the entire depth buffer. For floating-point depth buffers, there is no single minimum resolvable difference. In this case, the minimum resolvable difference for a given polygon is dependent on the maximum exponent, e, in the range of z values spanned by the primitive. If n is the number of bits in the floating-point mantissa, the minimum resolvable difference, r, for the given primitive is defined asr = 2e-n'If a triangle is rasterized using the K8 polygon mode, then this minimum resolvable difference mayY not be resolvable for samples outside of the triangle, where the depth is extrapolated..If no depth buffer is present, r is undefined.!The bias value o for a polygon is[begin{aligned} o &= mathrm{dbclamp}( m times mathtt{depthBiasSlopeFactor} + r times mathtt{depthBiasConstantFactor} ) -- text{where} &quad mathrm{dbclamp}(x) = bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels |  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope |  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types |  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type | +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+ | Primary | Both | Graphics | | | Secondary | | | | +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+See Also0uvulkan:vkCmdSetBlendConstants - Set the values of blend constantsValid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also0vvulkanLvkCmdSetDepthBounds - Set the depth bounds test values for a command buffer DescriptionZThis command sets the state for a given draw when the graphics pipeline is created with l set in 7::pDynamicStates. Valid Usage Unless the VK_EXT_depth_range_unrestricted extension is enabled minDepthBounds must be between 0.0 and 1.0 , inclusive Unless the VK_EXT_depth_range_unrestricted extension is enabled maxDepthBounds must be between 0.0 and 1.0 , inclusiveValid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also0wvulkanGvkCmdSetStencilCompareMask - Set the stencil compare mask dynamic state DescriptionZThis command sets the state for a given draw when the graphics pipeline is created with l set in 7::pDynamicStates.Valid Usage (Implicit) commandBuffer must be a valid  handlefaceMask must be a valid combination of e valuesfaceMask must not be 0 commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also, d0xvulkanCvkCmdSetStencilWriteMask - Set the stencil write mask dynamic state DescriptionZThis command sets the state for a given draw when the graphics pipeline is created with l set in 7::pDynamicStates.Valid Usage (Implicit) commandBuffer must be a valid  handlefaceMask must be a valid combination of e valuesfaceMask must not be 0 commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also, d0yvulkanBvkCmdSetStencilReference - Set the stencil reference dynamic state DescriptionZThis command sets the state for a given draw when the graphics pipeline is created with l set in 7::pDynamicStates.Valid Usage (Implicit) commandBuffer must be a valid  handlefaceMask must be a valid combination of e valuesfaceMask must not be 0 commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also, d0zvulkanCvkCmdBindDescriptorSets - Binds descriptor sets to a command buffer Description0z causes the sets numbered [firstSet.. firstSet+descriptorSetCount#-1] to use the bindings stored in pDescriptorSetsl[0..descriptorSetCount-1] for subsequent rendering commands (either compute or graphics, according to the pipelineBindPointQ). Any bindings that were previously applied via these sets are no longer valid.Once bound, a descriptor set affects rendering of subsequent graphics or compute commands in the command buffer until a different set is bound to the same set number, or else until the set is disturbed as described in  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibilityPipeline Layout Compatibility.A compatible descriptor set must be bound for all set numbers that any shaders in a pipeline access, at the time that a draw or dispatch command is recorded to execute using that pipeline. However, if none of the shaders in a pipeline statically use any bindings with a particular set number, then no descriptor set need be bound for that set number, even if the pipeline layout includes a non-trivial descriptor set layout for that set number.QIf any of the sets being bound include dynamic uniform or storage buffers, then pDynamicOffsetsz includes one element for each array element in each dynamic descriptor type binding in each set. Values are taken from pDynamicOffsets in an order such that all entries for set N come before set N+1; within a set, entries are ordered by the binding numbers in the descriptor set layouts; and within a binding array, elements are in order. dynamicOffsetCount mustH equal the total number of dynamic descriptors in the sets being bound.xThe effective offset used for dynamic uniform and storage buffer bindings is the sum of the relative offset taken from pDynamicOffsets, and the base address of the buffer plus base offset in the descriptor set. The range of the dynamic uniform and storage buffer bindings is the buffer range as specified in the descriptor set. Each of the pDescriptorSets must6 be compatible with the pipeline layout specified by layout+. The layout used to program the bindings mustk also be compatible with the pipeline used in subsequent graphics or compute commands, as defined in the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibilityPipeline Layout Compatibility section./The descriptor set contents bound by a call to 0z may$ be consumed at the following times:.For descriptor bindings created with the 2 bit set, the contents may be consumed when the command buffer is submitted to a queue, or during shader execution of the resulting draws and dispatches, or any time in between. Otherwise,during host execution of the command, or during shader execution of the resulting draws and dispatches, or any time in between./Thus, the contents of a descriptor set binding mustg not be altered (overwritten by an update command, or freed) between the first point in time that it mayE be consumed, and when the command completes executing on the queue.The contents of pDynamicOffsets/ are consumed immediately during execution of 0zZ. Once all pending uses have completed, it is legal to update and reuse a descriptor set. Valid UsageEach element of pDescriptorSets must! have been allocated with a /@H that matches (is the same as, or identically defined as) the /@ at set n in layout , where n is the sum of firstSet and the index into pDescriptorSetsdynamicOffsetCount must= be equal to the total number of dynamic descriptors in pDescriptorSets The sum of firstSet and descriptorSetCount must$ be less than or equal to 9::setLayoutCount provided when layout was createdpipelineBindPoint must be supported by the  commandBuffer s parent /E s queue familyEach element of pDynamicOffsets? which corresponds to a descriptor binding with type o must be a multiple of  l::minUniformBufferOffsetAlignmentEach element of pDynamicOffsets? which corresponds to a descriptor binding with type o must be a multiple of  l::minStorageBufferOffsetAlignment;For each dynamic uniform or storage buffer binding in pDescriptorSetsW, the sum of the effective offset, as defined above, and the range of the binding must5 be less than or equal to the size of the bufferValid Usage (Implicit) commandBuffer must be a valid  handlepipelineBindPoint must be a valid V valuelayout must be a valid | handlepDescriptorSets must( be a valid pointer to an array of descriptorSetCount valid  handlesIf dynamicOffsetCount is not 0, pDynamicOffsets must( be a valid pointer to an array of dynamicOffsetCount uint32_t values commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operationsdescriptorSetCount must be greater than 0Each of  commandBuffer, layout, and the elements of pDescriptorSets must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics Compute  See Also, , V, |0{vulkan?vkCmdBindIndexBuffer - Bind an index buffer to a command buffer Valid Usageoffset must be less than the size of buffer The sum of offset& and the address of the range of /8 object that is backing buffer, must( be a multiple of the type indicated by  indexTypebuffer must! have been created with the z{ flagIf buffer is non-sparse then it must7 be bound completely and contiguously to a single /8 object indexType must not be If  indexType is  , the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-indexTypeUint8indexTypeUint8 feature must be enabledValid Usage (Implicit) commandBuffer must be a valid  handlebuffer must be a valid  handle indexType must be a valid S value commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operationsBoth of buffer, and  commandBuffer must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also, , m, S0|vulkan@vkCmdBindVertexBuffers - Bind vertex buffers to a command buffer Description$The values taken from elements i of pBuffers and pOffsets9 replace the current state for the vertex input binding  firstBinding + i, for i in [0,  bindingCountL). The vertex input binding is updated to start at the offset indicated by pOffsets"[i] from the start of the buffer pBuffers[i]. All vertex input attributes that use each of these bindings will use these updated addresses in their address calculations for subsequent draw commands. If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor" feature is enabled, elements of pBuffers can be , and canh be used by the vertex shader. If a vertex input attribute is bound to a vertex input binding that is c, the values taken from memory are considered to be zero, and missing G, B, or A components are  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extractionfilled with (0,0,1). Valid Usage firstBinding must be less than  l::maxVertexInputBindings The sum of  firstBinding and  bindingCount must$ be less than or equal to  l::maxVertexInputBindingsAll elements of pOffsets must< be less than the size of the corresponding element in pBuffersAll elements of pBuffers must! have been created with the zz flagEach element of pBuffers that is non-sparse must< be bound completely and contiguously to a single /8 object If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor. feature is not enabled, all elements of pBuffers must not be If an element of pBuffers is ), then the corresponding element of pOffsets must be zeroValid Usage (Implicit) commandBuffer must be a valid  handlepBuffers must# be a valid pointer to an array of  bindingCount valid or   handlespOffsets must# be a valid pointer to an array of  bindingCount m values commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations bindingCount must be greater than 0Both of  commandBuffer, and the elements of pBuffers7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also, , m0}vulkanvkCmdDraw - Draw primitives DescriptionaWhen the command is executed, primitives are assembled using the current primitive topology and  vertexCount, consecutive vertex indices with the first  vertexIndex value equal to  firstVertex. The primitives are drawn  instanceCount times with  instanceIndex starting with  firstInstancen and increasing sequentially for each instance. The assembled primitives execute the bound graphics pipeline. Valid UsageIf a / is sampled with 6> as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain g!If a /b is accessed using atomic operations as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain gIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any / being sampled with " as a result of this command must have a `E and format that supports cubic filtering, as specified by A:: filterCubic returned by TcAny / being sampled with + with a reduction mode of either  or " as a result of this command must have a `i and format that supports cubic filtering together with minmax filtering, as specified by A::filterCubicMinmax returned by TcAny  created with a 0::flags containing * sampled as a result of this command must only be sampled using a % of % For each set n% that is statically used by the ~N bound to the pipeline bind point used by this command, a descriptor set must have been bound to n3 at the same pipeline bind point, with a |! that is compatible for set n , with the |! used to create the current ~, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the ~S bound to the pipeline bind point used by this command, a push constant value mustB have been set for the same pipeline bind point, with a |6 that is compatible for push constants, with the |! used to create the current ~, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via 0z, must2 be valid if they are statically used by the ~; bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the ~o object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the ~a object bound to the pipeline bind point used by this command, since that pipeline was boundIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must% not be used to sample from any  with a / of the type `, `, `, `| or `, in any shader stageIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stageIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample*U instructions that includes a LOD bias or any offset values, in any shader stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the ~f object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the ~f object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the ~C object bound to the pipeline bind point used by this command must! not be a protected resourceIf a / is accessed using  OpImageWrite' as a result of this command, then the Type of the Texel operand of that instruction mustB have at least as many components as the image view s format.The current render pass must be  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 7L, structure specified when creating the ~ bound to -The subpass index of the current render pass must be equal to the subpass member of the 7L, structure specified when creating the ~ bound to 3Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor setGImage subresources used as attachments in the current render pass mustL not be accessed in any way other than as an attachment by this commandjIf the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to W::maxMultiviewInstanceIndex5If the bound graphics pipeline was created with ::sampleLocationsEnable set to .S and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set?If the bound graphics pipeline state was created with the l . dynamic state enabled, but not the l , dynamic state enabled, then then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the 7":: scissorCount of the pipeline?If the bound graphics pipeline state was created with the l . dynamic state enabled, but not the l , dynamic state enabled, then then  mustY have been called in the current command buffer prior to this draw command, and the  scissorCount parameter of  must match the 7":: viewportCount of the pipelineDIf the bound graphics pipeline state was created with both the l  and l , dynamic states enabled then both  and  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the  scissorCount parameter of ?If the bound graphics pipeline state was created with the l & dynamic state enabled then  mustY have been called in the current command buffer prior to this draw command, and the primitiveTopology parameter of  must be of the same  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class as the pipeline 7::topology stateIf  commandBufferD is a protected command buffer, any resource written to by the ~C object bound to the pipeline bind point used by this command must$ not be an unprotected resourceIf  commandBufferu is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the ~. object bound to the pipeline bind point must not write to any resourceyAll vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must have either valid or  buffers bound If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must not be >For a given vertex buffer binding, any attribute data fetched mustf be entirely contained within the corresponding vertex buffer binding, as described in \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input???Valid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations This command must0 only be called inside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Inside  Graphics  Graphics See Also0~vulkan>vkCmdDrawIndexed - Issue an indexed draw into a command buffer DescriptionaWhen the command is executed, primitives are assembled using the current primitive topology and  indexCount vertices whose indices are retrieved from the index buffer. The index buffer is treated as an array of tightly packed unsigned integers of size defined by the 0{:: indexType, parameter with which the buffer was bound.*The first vertex index is at an offset of  firstIndex  indexSize + offset& within the bound index buffer, where offset is the offset specified by 0{ and  indexSize, is the byte size of the type specified by  indexType. Subsequent index values are retrieved from consecutive locations in the index buffer. Indices are first compared to the primitive restart value, then zero extended to 32 bits (if the  indexType is  or  ) and have  vertexOffset- added to them, before being supplied as the  vertexIndex value.The primitives are drawn  instanceCount times with  instanceIndex starting with  firstInstancen and increasing sequentially for each instance. The assembled primitives execute the bound graphics pipeline. Valid UsageIf a / is sampled with 6> as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain g"If a /b is accessed using atomic operations as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain gIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any / being sampled with " as a result of this command must have a `E and format that supports cubic filtering, as specified by A:: filterCubic returned by TcAny / being sampled with + with a reduction mode of either  or " as a result of this command must have a `i and format that supports cubic filtering together with minmax filtering, as specified by A::filterCubicMinmax returned by TcAny  created with a 0::flags containing * sampled as a result of this command must only be sampled using a % of % For each set n% that is statically used by the ~N bound to the pipeline bind point used by this command, a descriptor set must have been bound to n3 at the same pipeline bind point, with a |! that is compatible for set n , with the |! used to create the current ~, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the ~S bound to the pipeline bind point used by this command, a push constant value mustB have been set for the same pipeline bind point, with a |6 that is compatible for push constants, with the |! used to create the current ~, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via 0z, must2 be valid if they are statically used by the ~; bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the ~o object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the ~a object bound to the pipeline bind point used by this command, since that pipeline was boundIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must% not be used to sample from any  with a / of the type `, `, `, `| or `, in any shader stageIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stageIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample*U instructions that includes a LOD bias or any offset values, in any shader stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the ~f object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the ~f object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the ~C object bound to the pipeline bind point used by this command must! not be a protected resourceIf a / is accessed using  OpImageWrite' as a result of this command, then the Type of the Texel operand of that instruction mustB have at least as many components as the image view s format.The current render pass must be  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 7L, structure specified when creating the ~ bound to -The subpass index of the current render pass must be equal to the subpass member of the 7L, structure specified when creating the ~ bound to 3Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor setGImage subresources used as attachments in the current render pass mustL not be accessed in any way other than as an attachment by this commandjIf the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to W::maxMultiviewInstanceIndex5If the bound graphics pipeline was created with ::sampleLocationsEnable set to .S and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set?If the bound graphics pipeline state was created with the l . dynamic state enabled, but not the l , dynamic state enabled, then then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the 7":: scissorCount of the pipeline?If the bound graphics pipeline state was created with the l . dynamic state enabled, but not the l , dynamic state enabled, then then  mustY have been called in the current command buffer prior to this draw command, and the  scissorCount parameter of  must match the 7":: viewportCount of the pipelineDIf the bound graphics pipeline state was created with both the l  and l , dynamic states enabled then both  and  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the  scissorCount parameter of ?If the bound graphics pipeline state was created with the l & dynamic state enabled then  mustY have been called in the current command buffer prior to this draw command, and the primitiveTopology parameter of  must be of the same  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class as the pipeline 7::topology stateIf  commandBufferD is a protected command buffer, any resource written to by the ~C object bound to the pipeline bind point used by this command must$ not be an unprotected resourceIf  commandBufferu is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the ~. object bound to the pipeline bind point must not write to any resourceyAll vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must have either valid or  buffers bound If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must not be >For a given vertex buffer binding, any attribute data fetched mustf be entirely contained within the corresponding vertex buffer binding, as described in \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input???( indexSize ( firstIndex +  indexCount) + offset) mustM be less than or equal to the size of the bound index buffer, with  indexSize& being based on the type specified by  indexType, where the index buffer,  indexType, and offset are specified via 0{Valid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations This command must0 only be called inside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Inside  Graphics  Graphics See Also0vulkan@vkCmdDrawIndirect - Issue an indirect draw into a command buffer Description0 behaves similarly to 0}U except that the parameters are read by the device from a buffer during execution.  drawCount@ draws are executed by the command, with parameters taken from buffer starting at offset and increasing by strideZ bytes for each successive draw. The parameters of each draw are encoded in an array of 55 structures. If  drawCount is less than or equal to one, stride is ignored. Valid UsageIf a / is sampled with 6> as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain g)If a /b is accessed using atomic operations as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain gIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any / being sampled with " as a result of this command must have a `E and format that supports cubic filtering, as specified by A:: filterCubic returned by TcAny / being sampled with + with a reduction mode of either  or " as a result of this command must have a `i and format that supports cubic filtering together with minmax filtering, as specified by A::filterCubicMinmax returned by TcAny  created with a 0::flags containing * sampled as a result of this command must only be sampled using a % of % For each set n% that is statically used by the ~N bound to the pipeline bind point used by this command, a descriptor set must have been bound to n3 at the same pipeline bind point, with a |! that is compatible for set n , with the |! used to create the current ~, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the ~S bound to the pipeline bind point used by this command, a push constant value mustB have been set for the same pipeline bind point, with a |6 that is compatible for push constants, with the |! used to create the current ~, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via 0z, must2 be valid if they are statically used by the ~; bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the ~o object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the ~a object bound to the pipeline bind point used by this command, since that pipeline was boundIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must% not be used to sample from any  with a / of the type `, `, `, `| or `, in any shader stageIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stageIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample*U instructions that includes a LOD bias or any offset values, in any shader stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the ~f object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the ~f object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the ~C object bound to the pipeline bind point used by this command must! not be a protected resourceIf a / is accessed using  OpImageWrite' as a result of this command, then the Type of the Texel operand of that instruction mustB have at least as many components as the image view s format.The current render pass must be  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 7L, structure specified when creating the ~ bound to -The subpass index of the current render pass must be equal to the subpass member of the 7L, structure specified when creating the ~ bound to 3Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor setGImage subresources used as attachments in the current render pass mustL not be accessed in any way other than as an attachment by this commandjIf the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to W::maxMultiviewInstanceIndex5If the bound graphics pipeline was created with ::sampleLocationsEnable set to .S and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set?If the bound graphics pipeline state was created with the l . dynamic state enabled, but not the l , dynamic state enabled, then then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the 7":: scissorCount of the pipeline?If the bound graphics pipeline state was created with the l . dynamic state enabled, but not the l , dynamic state enabled, then then  mustY have been called in the current command buffer prior to this draw command, and the  scissorCount parameter of  must match the 7":: viewportCount of the pipelineDIf the bound graphics pipeline state was created with both the l  and l , dynamic states enabled then both  and  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the  scissorCount parameter of ?If the bound graphics pipeline state was created with the l & dynamic state enabled then  mustY have been called in the current command buffer prior to this draw command, and the primitiveTopology parameter of  must be of the same  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class as the pipeline 7::topology stateyAll vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must have either valid or  buffers bound If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must not be >For a given vertex buffer binding, any attribute data fetched mustf be entirely contained within the corresponding vertex buffer binding, as described in \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input???If buffer is non-sparse then it must7 be bound completely and contiguously to a single /8 objectbuffer must! have been created with the z bit setoffset must be a multiple of 4 commandBuffer must" not be a protected command buffer If the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirectmulti-draw indirect feature is not enabled,  drawCount must be 0 or 1 drawCount must be less than or equal to  l::maxDrawIndirectCount If the  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectFirstInstancedrawIndirectFirstInstance& feature is not enabled, all the  firstInstance members of the 55* structures accessed by this command must be 0If  drawCount is greater than 1, stride must be a multiple of 4 and must" be greater than or equal to sizeof(55)If  drawCount is equal to 1, (offset + sizeof(55)) must+ be less than or equal to the size of bufferIf  drawCount is greater than 1, (stride ( drawCount - 1) + offset + sizeof(55)) must& be less than or equal to the size of bufferValid Usage (Implicit) commandBuffer must be a valid  handlebuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations This command must0 only be called inside of a render pass instanceBoth of buffer, and  commandBuffer must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Inside  Graphics  Graphics See Also, , m0vulkan;vkCmdDrawIndexedIndirect - Perform an indexed indirect draw Description0 behaves similarly to 0~U except that the parameters are read by the device from a buffer during execution.  drawCount@ draws are executed by the command, with parameters taken from buffer starting at offset and increasing by strideZ bytes for each successive draw. The parameters of each draw are encoded in an array of 56 structures. If  drawCount is less than or equal to one, stride is ignored. Valid UsageIf a / is sampled with 6> as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain g*If a /b is accessed using atomic operations as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain gIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any / being sampled with " as a result of this command must have a `E and format that supports cubic filtering, as specified by A:: filterCubic returned by TcAny / being sampled with + with a reduction mode of either  or " as a result of this command must have a `i and format that supports cubic filtering together with minmax filtering, as specified by A::filterCubicMinmax returned by TcAny  created with a 0::flags containing * sampled as a result of this command must only be sampled using a % of % For each set n% that is statically used by the ~N bound to the pipeline bind point used by this command, a descriptor set must have been bound to n3 at the same pipeline bind point, with a |! that is compatible for set n , with the |! used to create the current ~, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the ~S bound to the pipeline bind point used by this command, a push constant value mustB have been set for the same pipeline bind point, with a |6 that is compatible for push constants, with the |! used to create the current ~, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via 0z, must2 be valid if they are statically used by the ~; bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the ~o object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the ~a object bound to the pipeline bind point used by this command, since that pipeline was boundIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must% not be used to sample from any  with a / of the type `, `, `, `| or `, in any shader stageIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stageIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample*U instructions that includes a LOD bias or any offset values, in any shader stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the ~f object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the ~f object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the ~C object bound to the pipeline bind point used by this command must! not be a protected resourceIf a / is accessed using  OpImageWrite' as a result of this command, then the Type of the Texel operand of that instruction mustB have at least as many components as the image view s format.The current render pass must be  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with the  renderPass member of the 7L, structure specified when creating the ~ bound to -The subpass index of the current render pass must be equal to the subpass member of the 7L, structure specified when creating the ~ bound to 3Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor setGImage subresources used as attachments in the current render pass mustL not be accessed in any way other than as an attachment by this commandjIf the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to W::maxMultiviewInstanceIndex5If the bound graphics pipeline was created with ::sampleLocationsEnable set to .S and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set?If the bound graphics pipeline state was created with the l . dynamic state enabled, but not the l , dynamic state enabled, then then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the 7":: scissorCount of the pipeline?If the bound graphics pipeline state was created with the l . dynamic state enabled, but not the l , dynamic state enabled, then then  mustY have been called in the current command buffer prior to this draw command, and the  scissorCount parameter of  must match the 7":: viewportCount of the pipelineDIf the bound graphics pipeline state was created with both the l  and l , dynamic states enabled then both  and  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the  scissorCount parameter of ?If the bound graphics pipeline state was created with the l & dynamic state enabled then  mustY have been called in the current command buffer prior to this draw command, and the primitiveTopology parameter of  must be of the same  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-classtopology class as the pipeline 7::topology stateyAll vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must have either valid or  buffers bound If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must not be >For a given vertex buffer binding, any attribute data fetched mustf be entirely contained within the corresponding vertex buffer binding, as described in \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input???If buffer is non-sparse then it must7 be bound completely and contiguously to a single /8 objectbuffer must! have been created with the z bit setoffset must be a multiple of 4 commandBuffer must" not be a protected command buffer If the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirectmulti-draw indirect feature is not enabled,  drawCount must be 0 or 1 drawCount must be less than or equal to  l::maxDrawIndirectCountIf  drawCount is greater than 1, stride must be a multiple of 4 and must" be greater than or equal to sizeof(56) If the  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectFirstInstancedrawIndirectFirstInstance& feature is not enabled, all the  firstInstance members of the 56* structures accessed by this command must be 0If  drawCount is equal to 1, (offset + sizeof(56)) must& be less than or equal to the size of bufferIf  drawCount is greater than 1, (stride ( drawCount - 1) + offset + sizeof(56)) must& be less than or equal to the size of bufferIf  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectCountdrawIndirectCount# is not enabled this function must not be usedValid Usage (Implicit) commandBuffer must be a valid  handlebuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations This command must0 only be called inside of a render pass instanceBoth of buffer, and  commandBuffer must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Inside  Graphics  Graphics See Also, , m0vulkan+vkCmdDispatch - Dispatch compute work items Description@When the command is executed, a global workgroup consisting of  groupCountX  groupCountY  groupCountZ local workgroups is assembled. Valid UsageIf a / is sampled with 6> as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain gIf a /b is accessed using atomic operations as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain gIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any / being sampled with " as a result of this command must have a `E and format that supports cubic filtering, as specified by A:: filterCubic returned by TcAny / being sampled with + with a reduction mode of either  or " as a result of this command must have a `i and format that supports cubic filtering together with minmax filtering, as specified by A::filterCubicMinmax returned by TcAny  created with a 0::flags containing * sampled as a result of this command must only be sampled using a % of % For each set n% that is statically used by the ~N bound to the pipeline bind point used by this command, a descriptor set must have been bound to n3 at the same pipeline bind point, with a |! that is compatible for set n , with the |! used to create the current ~, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the ~S bound to the pipeline bind point used by this command, a push constant value mustB have been set for the same pipeline bind point, with a |6 that is compatible for push constants, with the |! used to create the current ~, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via 0z, must2 be valid if they are statically used by the ~; bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the ~o object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the ~a object bound to the pipeline bind point used by this command, since that pipeline was boundIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must% not be used to sample from any  with a / of the type `, `, `, `| or `, in any shader stageIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stageIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample*U instructions that includes a LOD bias or any offset values, in any shader stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the ~f object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the ~f object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the ~C object bound to the pipeline bind point used by this command must! not be a protected resourceIf a / is accessed using  OpImageWrite' as a result of this command, then the Type of the Texel operand of that instruction mustB have at least as many components as the image view s format.If  commandBufferD is a protected command buffer, any resource written to by the ~C object bound to the pipeline bind point used by this command must$ not be an unprotected resourceIf  commandBufferu is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the ~. object bound to the pipeline bind point must not write to any resource groupCountX must be less than or equal to  l::maxComputeWorkGroupCount[0] groupCountY must be less than or equal to  l::maxComputeWorkGroupCount[1] groupCountZ must be less than or equal to  l::maxComputeWorkGroupCount[2]Valid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Outside  Compute  Compute See Also0vulkanNvkCmdDispatchIndirect - Dispatch compute work items using indirect parameters Description0 behaves similarly to 0 except that the parameters are read by the device from a buffer during execution. The parameters of the dispatch are encoded in a 5 structure taken from buffer starting at offset. Valid UsageIf a / is sampled with 6> as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain gIf a /b is accessed using atomic operations as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain gIf a / is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any / being sampled with " as a result of this command must have a `E and format that supports cubic filtering, as specified by A:: filterCubic returned by TcAny / being sampled with + with a reduction mode of either  or " as a result of this command must have a `i and format that supports cubic filtering together with minmax filtering, as specified by A::filterCubicMinmax returned by TcAny  created with a 0::flags containing * sampled as a result of this command must only be sampled using a % of % For each set n% that is statically used by the ~N bound to the pipeline bind point used by this command, a descriptor set must have been bound to n3 at the same pipeline bind point, with a |! that is compatible for set n , with the |! used to create the current ~, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the ~S bound to the pipeline bind point used by this command, a push constant value mustB have been set for the same pipeline bind point, with a |6 that is compatible for push constants, with the |! used to create the current ~, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via 0z, must2 be valid if they are statically used by the ~; bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the ~o object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the ~a object bound to the pipeline bind point used by this command, since that pipeline was boundIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must% not be used to sample from any  with a / of the type `, `, `, `| or `, in any shader stageIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj# in their name, in any shader stageIf the ~S object bound to the pipeline bind point used by this command accesses a /A> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample*U instructions that includes a LOD bias or any offset values, in any shader stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the ~f object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access) feature is not enabled, and if the ~f object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the ~C object bound to the pipeline bind point used by this command must! not be a protected resourceIf a / is accessed using  OpImageWrite' as a result of this command, then the Type of the Texel operand of that instruction mustB have at least as many components as the image view s format.If buffer is non-sparse then it must7 be bound completely and contiguously to a single /8 objectbuffer must! have been created with the z bit setoffset must be a multiple of 4 commandBuffer must" not be a protected command buffer The sum of offset and the size of 5 must+ be less than or equal to the size of bufferValid Usage (Implicit) commandBuffer must be a valid  handlebuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceBoth of buffer, and  commandBuffer must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Outside  Compute  Compute See Also, , m0vulkan2vkCmdCopyBuffer - Copy data between buffer regions DescriptionEach region in pRegionsQ is copied from the source buffer to the same region of the destination buffer.  srcBuffer and  dstBuffer can} be the same buffer or alias the same memory, but the resulting values are undefined if the copy regions overlap in memory. Valid UsageIf  commandBuffer- is an unprotected command buffer, then  srcBuffer must not be a protected buffer If  commandBuffer- is an unprotected command buffer, then  dstBuffer must not be a protected bufferIf  commandBuffer% is a protected command buffer, then  dstBuffer must not be an unprotected bufferThe  srcOffset member of each element of pRegions must be less than the size of  srcBufferThe  dstOffset member of each element of pRegions must be less than the size of  dstBufferThe size member of each element of pRegions must+ be less than or equal to the size of  srcBuffer minus  srcOffsetThe size member of each element of pRegions must+ be less than or equal to the size of  dstBuffer minus  dstOffsetmThe union of the source regions, and the union of the destination regions, specified by the elements of pRegions, must not overlap in memory srcBuffer must have been created with z usage flagIf  srcBuffer is non-sparse then it must7 be bound completely and contiguously to a single /8 object dstBuffer must have been created with z3 usage flagIf  dstBuffer is non-sparse then it must7 be bound completely and contiguously to a single /8 objectValid Usage (Implicit) commandBuffer must be a valid  handle srcBuffer must be a valid  handle dstBuffer must be a valid  handlepRegions must# be a valid pointer to an array of  regionCount valid & structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations This command must1 only be called outside of a render pass instance regionCount must be greater than 0Each of  commandBuffer,  dstBuffer, and  srcBuffer mustD have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type v Primary Secondary j Outside g Transfer Graphics Compute  Transfer See Also, &, 0vulkan)vkCmdCopyImage - Copy data between images DescriptionEach region in pRegionsO is copied from the source image to the same region of the destination image. srcImage and dstImage can- be the same image or alias the same memory.The formats of srcImage and dstImage mustW be compatible. Formats are compatible if they share the same class, as shown in the  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibilityCompatible Formats table. Depth/stencil formats must match exactly.If the format of srcImage or dstImage is a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar image format&, regions of each plane to be copied must$ be specified separately using the srcSubresource and dstSubresource members of the   structure. In this case, the  aspectMask of the srcSubresource or dstSubresource' that refers to the multi-planar image must be d, d, or d. For the purposes of 0Q, each plane of a multi-planar image is treated as having the format listed in  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes" for the plane identified by the  aspectMask9 of the corresponding subresource. This applies both to J and to coordinates used in the copy, which correspond to texels in the planeJ rather than how these texels map to coordinates in the image as a whole.NoteFor example, the d plane of a / image is compatible with an image of format  and (less usefully) with the d plane of an image of format  $, as each texel is 2 bytes in size.0 allows copying between size-compatible compressed and uncompressed internal formats. Formats are size-compatible if the texel block size of the uncompressed format is equal to the texel block size of the compressed format. Such a copy does not perform on-the-fly compression or decompression. When copying from an uncompressed format to a compressed format, each texel of uncompressed data of the source image is copied as a raw value to the corresponding compressed texel block of the destination image. When copying from a compressed format to an uncompressed format, each compressed texel block of the source image is copied as a raw value to the corresponding texel of uncompressed data in the destination image. Thus, for example, it is legal to copy between a 128-bit uncompressed format and a compressed format which has a 128-bit sized compressed texel block representing 44 texels (using 8 bits per texel), or between a 64-bit uncompressed format and a compressed format which has a 64-bit sized compressed texel block representing 44 texels (using 4 bits per texel).=When copying between compressed and uncompressed formats the extentA members represent the texel dimensions of the source image and not the destination. When copying from a compressed image to an uncompressed image the image texel dimensions written to the uncompressed image will be source extent divided by the compressed texel block dimensions. When copying from an uncompressed image to a compressed image the image texel dimensions written to the compressed image will be the source extent multiplied by the compressed texel block dimensions. In both cases the number of bytes read and the number of bytes written will be identical.Copying to or from block-compressed images is typically done in multiples of the compressed texel block size. For this reason the extent mustf be a multiple of the compressed texel block dimension. There is one exception to this rule which is required to handle compressed images created with dimensions that are not a multiple of the compressed texel block dimensions: if the srcImage is compressed, then:If  extent.widthC is not a multiple of the compressed texel block width, then ( extent.width +  srcOffset.x) must( equal the image subresource width.If  extent.heightD is not a multiple of the compressed texel block height, then ( extent.height +  srcOffset.y) must) equal the image subresource height.If  extent.depthC is not a multiple of the compressed texel block depth, then ( extent.depth +  srcOffset.z) must( equal the image subresource depth.Similarly, if the dstImage is compressed, then:If  extent.widthC is not a multiple of the compressed texel block width, then ( extent.width +  dstOffset.x) must( equal the image subresource width.If  extent.heightD is not a multiple of the compressed texel block height, then ( extent.height +  dstOffset.y) must) equal the image subresource height.If  extent.depthC is not a multiple of the compressed texel block depth, then ( extent.depth +  dstOffset.z) must( equal the image subresource depth.This allows the last compressed texel block of the image in each non-multiple dimension to be included as a source or destination of the copy. _422  image formats that are not  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planarV are treated as having a 21 compressed texel block for the purposes of these rules.0 canI be used to copy image data between multisample images, but both images must! have the same number of samples. Valid UsageIf  commandBuffer( is an unprotected command buffer, then srcImage must not be a protected imageIf  commandBuffer( is an unprotected command buffer, then dstImage must not be a protected imageIf  commandBuffer% is a protected command buffer, then dstImage must not be an unprotected imagemThe union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain g!srcImage must have been created with u usage flagIf srcImage! is non-sparse then the image or disjoint plane to be copied must7 be bound completely and contiguously to a single /8 objectsrcImageLayout must6 specify the layout of the image subresources of srcImage specified in pRegions0 at the time this command is executed on a /srcImageLayout must be  ,  , or  The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of dstImage must contain g"dstImage must have been created with t usage flagIf dstImage! is non-sparse then the image or disjoint0 plane that is the destination of the copy must7 be bound completely and contiguously to a single /8 objectdstImageLayout must6 specify the layout of the image subresources of dstImage specified in pRegions0 at the time this command is executed on a /dstImageLayout must be  ,  , or If the  of each of srcImage and dstImage is not a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , the  of each of srcImage and dstImage must be compatible, as defined phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-images-format-compatibilityabove'In a copy to or from a plane of a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar image , the  of the image and plane must! be compatible according to  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes$the description of compatible planes for the plane being copiedThe sample count of srcImage and dstImage must matchThe srcSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 0 when srcImage was createdThe dstSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 0 when dstImage was createdThe srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 0 when srcImage was createdThe dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 0 when dstImage was createdThe  srcOffset and extent members of each element of pRegions must= respect the image transfer granularity requirements of  commandBuffer5 s command pool s queue family, as described in  The  dstOffset and extent members of each element of pRegions must= respect the image transfer granularity requirements of  commandBuffer5 s command pool s queue family, as described in  dstImage and srcImage must not have been created with flags containing Valid Usage (Implicit) commandBuffer must be a valid  handle srcImage must be a valid  handlesrcImageLayout must be a valid N valuedstImage must be a valid  handledstImageLayout must be a valid N valuepRegions must# be a valid pointer to an array of  regionCount valid   structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations This command must1 only be called outside of a render pass instance regionCount must be greater than 0Each of  commandBuffer, dstImage, and srcImage mustD have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type v Primary Secondary j Outside g Transfer Graphics Compute  Transfer See Also, ,  , N0vulkanUvkCmdBlitImage - Copy regions of an image, potentially performing format conversion, Description0 mustA not be used for multisampled source or destination images. Use 0 for this purpose.3As the sizes of the source and destination extents can differ in any dimension, texels in the source extent are scaled and filtered to the destination extent. Scaling occurs via the following operations:For each destination texel, the integer coordinate of that texel is converted to an unnormalized texture coordinate, using the effective inverse of the equations described in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-unnormalized-to-integer"unnormalized to integer conversion: ubase = i +  vbase = j +  wbase = k + LThese base coordinates are then offset by the first destination offset:uoffset = ubase - xdst0voffset = vbase - ydst0woffset = wbase - zdst0aoffset = a - baseArrayCountdstlThe scale is determined from the source and destination regions, and applied to the offset coordinates:*scaleu = (xsrc1 - xsrc0) / (xdst1 - xdst0)*scalev = (ysrc1 - ysrc0) / (ydst1 - ydst0)*scalew = (zsrc1 - zsrc0) / (zdst1 - zdst0)uscaled = uoffset scaleuvscaled = voffset scalevwscaled = woffset scalewFinally the source offset is added to the scaled coordinates, to determine the final unnormalized coordinates used to sample from srcImage:u = uscaled + xsrc0v = vscaled + ysrc0w = wscaled + zsrc0q = mipLevela = aoffset + baseArrayCountsrcNThese coordinates are used to sample from the source image, as described in  Vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#texturesImage Operations chapter), with the filter mode equal to that of filter, a mipmap mode of $# and an address mode of %. Implementations must, clamp at the edge of the source image, and may6 additionally clamp to the edge of the source region.Note<Due to allowable rounding errors in the generation of the source texture coordinates, it is not always possible to guarantee exactly which source texels will be sampled for a given blit. As rounding errors are implementation dependent, the exact results of a blitting operation are also implementation dependent.0Blits are done layer by layer starting with the baseArrayLayer member of srcSubresource for the source and dstSubresource for the destination.  layerCount- layers are blitted to the destination image.P3D textures are blitted slice by slice. Slices in the source region bounded by  srcOffsets [0].z and  srcOffsetsA[1].z are copied to slices in the destination region bounded by  dstOffsets [0].z and  dstOffsets,[1].z. For each destination slice, a source z. coordinate is linearly interpolated between  srcOffsets [0].z and  srcOffsets[1].z. If the filter parameter is 6j then the value sampled from the source image is taken by doing linear filtering using the interpolated z coordinate. If filter parameter is 7 then the value sampled from the source image is taken from the single nearest slice, with an implementation-dependent arithmetic rounding mode.3The following filtering and conversion rules apply:Integer formats canJ only be converted to other integer formats with the same signedness.QNo format conversion is supported between depth/stencil images. The formats must match.Format conversions on unorm, snorm, unscaled and packed float formats of the copied aspect of the image are performed by first converting the pixels to float values.mFor sRGB source formats, nonlinear RGB values are converted to linear representation prior to filtering.After filtering, the float values are first clamped and then cast to the destination image format. In case of sRGB destination format, linear RGB values are converted to nonlinear representation before writing the pixel to the image.Signed and unsigned integers are converted by first clamping to the representable range of the destination format, then casting the value. Valid UsageIf  commandBuffer( is an unprotected command buffer, then srcImage must not be a protected imageIf  commandBuffer( is an unprotected command buffer, then dstImage must not be a protected imageIf  commandBuffer% is a protected command buffer, then dstImage must not be an unprotected image/The source region specified by each element of pRegions must+ be a region that is contained within srcImage4The destination region specified by each element of pRegions must& be a region that is contained within dstImageHThe union of all destination regions, specified by the elements of pRegions, must+ not overlap in memory with any texel that may* be sampled during the blit operation The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain gsrcImage must! not use a format listed in xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion???srcImage must have been created with u usage flagIf srcImage is non-sparse then it must7 be bound completely and contiguously to a single /8 objectsrcImageLayout must6 specify the layout of the image subresources of srcImage specified in pRegions0 at the time this command is executed on a /srcImageLayout must be ,   or  The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of dstImage must contain g$dstImage must! not use a format listed in xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion???dstImage must have been created with t usage flagIf dstImage is non-sparse then it must7 be bound completely and contiguously to a single /8 objectdstImageLayout must6 specify the layout of the image subresources of dstImage specified in pRegions0 at the time this command is executed on a /dstImageLayout must be ,   or  If either of srcImage or dstImage( was created with a signed integer  , the other must8 also have been created with a signed integer  If either of srcImage or dstImage+ was created with an unsigned integer  , the other must; also have been created with an unsigned integer  If either of srcImage or dstImage9 was created with a depth/stencil format, the other must have exactly the same formatIf srcImage* was created with a depth/stencil format, filter must be 7srcImage must have been created with a samples value of %dstImage must have been created with a samples value of %If filter is 6, then the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain gIf filter is , then the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain If filter is , srcImage must have a  of The srcSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 0 when srcImage was createdThe dstSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 0 when dstImage was createdThe srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 0 when srcImage was createdThe dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 0 when dstImage was createddstImage and srcImage must not have been created with flags containing Valid Usage (Implicit) commandBuffer must be a valid  handle srcImage must be a valid  handlesrcImageLayout must be a valid N valuedstImage must be a valid  handledstImageLayout must be a valid N valuepRegions must# be a valid pointer to an array of  regionCount valid ! structuresfilter must be a valid I value commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations This command must1 only be called outside of a render pass instance regionCount must be greater than 0Each of  commandBuffer, dstImage, and srcImage mustD have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Outside  Graphics  Transfer See Also, I, , !, N0vulkan>vkCmdCopyBufferToImage - Copy data from a buffer into an image DescriptionEach region in pRegionsl is copied from the specified region of the source buffer to the specified region of the destination image.If the format of dstImage is a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar image format2, regions of each plane to be a target of a copy must$ be specified separately using the pRegions member of the % structure. In this case, the  aspectMask of imageSubresource must be d, d, or d. For the purposes of 0Q, each plane of a multi-planar image is treated as having the format listed in  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes" for the plane identified by the  aspectMask9 of the corresponding subresource. This applies both to J and to coordinates used in the copy, which correspond to texels in the planeJ rather than how these texels map to coordinates in the image as a whole. Valid UsageIf  commandBuffer- is an unprotected command buffer, then  srcBuffer must not be a protected bufferIf  commandBuffer( is an unprotected command buffer, then dstImage must not be a protected imageIf  commandBuffer% is a protected command buffer, then dstImage must not be an unprotected image srcBuffer mustZ be large enough to contain all buffer locations that are accessed according to  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-addressingBuffer and Image Addressing, for each element of pRegions.The image region specified by each element of pRegions must+ be a region that is contained within dstImage if the dstImage s  is not a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , and mustL be a region that is contained within the plane being copied to if the dstImage s  is a multi-planar formatmThe union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory srcBuffer must have been created with z usage flag The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of dstImage must contain g"If  srcBuffer is non-sparse then it must7 be bound completely and contiguously to a single /8 objectdstImage must have been created with t usage flagIf dstImage is non-sparse then it must7 be bound completely and contiguously to a single /8 objectdstImage must# have a sample count equal to %dstImageLayout must6 specify the layout of the image subresources of dstImage specified in pRegions0 at the time this command is executed on a /dstImageLayout must be  ,  , or The imageSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 0 when dstImage was createdThe imageSubresource.baseArrayLayer + imageSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 0 when dstImage was createdThe  imageOffset and  imageExtent! members of each element of pRegions must= respect the image transfer granularity requirements of  commandBuffer: s command pool s queue family, as described in  dstImage must not have been created with flags containing ,If the queue family used to create the /E which  commandBuffer/ was allocated from does not support H or H , the  bufferOffset member of any element of pRegions must be a multiple of 4If dstImage! has a depth/stencil format, the  bufferOffset member of any element of pRegions must be a multiple of 4Valid Usage (Implicit) commandBuffer must be a valid  handle  srcBuffer must be a valid  handledstImage must be a valid  handledstImageLayout must be a valid N valuepRegions must# be a valid pointer to an array of  regionCount valid % structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations This command must1 only be called outside of a render pass instance regionCount must be greater than 0Each of  commandBuffer, dstImage, and  srcBuffer mustD have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type v Primary Secondary j Outside g Transfer Graphics Compute  Transfer See Also, %, , , N0vulkan6vkCmdCopyImageToBuffer - Copy image data into a buffer DescriptionEach region in pRegionsl is copied from the specified region of the source image to the specified region of the destination buffer.If the  of srcImage is a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar image format2, regions of each plane to be a source of a copy must$ be specified separately using the pRegions member of the % structure. In this case, the  aspectMask of imageSubresource must be d, d, or d. For the purposes of 0Q, each plane of a multi-planar image is treated as having the format listed in  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes" for the plane identified by the  aspectMask9 of the corresponding subresource. This applies both to J and to coordinates used in the copy, which correspond to texels in the planeJ rather than how these texels map to coordinates in the image as a whole. Valid UsageIf  commandBuffer( is an unprotected command buffer, then srcImage must not be a protected imageIf  commandBuffer- is an unprotected command buffer, then  dstBuffer must not be a protected bufferIf  commandBuffer% is a protected command buffer, then  dstBuffer must not be an unprotected buffer.The image region specified by each element of pRegions must+ be a region that is contained within srcImage if the srcImage s  is not a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , and mustI be a region that is contained within the plane being copied if the srcImage s  is a multi-planar format dstBuffer mustZ be large enough to contain all buffer locations that are accessed according to  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-addressingBuffer and Image Addressing, for each element of pRegionsmThe union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain g!srcImage must have been created with u usage flagIf srcImage is non-sparse then it must7 be bound completely and contiguously to a single /8 objectsrcImage must# have a sample count equal to %srcImageLayout must6 specify the layout of the image subresources of srcImage specified in pRegions0 at the time this command is executed on a /srcImageLayout must be ,   or  dstBuffer must have been created with z3 usage flagIf  dstBuffer is non-sparse then it must7 be bound completely and contiguously to a single /8 objectThe imageSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 0 when srcImage was createdThe imageSubresource.baseArrayLayer + imageSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 0 when srcImage was createdThe  imageOffset and  imageExtent! members of each element of pRegions must= respect the image transfer granularity requirements of  commandBuffer: s command pool s queue family, as described in  srcImage must not have been created with flags containing ,If the queue family used to create the /E which  commandBuffer/ was allocated from does not support H or H , the  bufferOffset member of any element of pRegions must be a multiple of 4If srcImage! has a depth/stencil format, the  bufferOffset member of any element of pRegions must be a multiple of 4Valid Usage (Implicit) commandBuffer must be a valid  handle srcImage must be a valid  handlesrcImageLayout must be a valid N value dstBuffer must be a valid  handlepRegions must# be a valid pointer to an array of  regionCount valid % structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations This command must1 only be called outside of a render pass instance regionCount must be greater than 0Each of  commandBuffer,  dstBuffer, and srcImage mustD have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type v Primary Secondary j Outside g Transfer Graphics Compute  Transfer See Also, %, , , N0vulkan?vkCmdUpdateBuffer - Update a buffer s contents from host memory DescriptiondataSize mustI be less than or equal to 65536 bytes. For larger updates, applications can use buffer to buffer  \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-bufferscopies.NoteBuffer updates performed with 0 first copy the data into command buffer memory when the command is recorded (which requires additional storage and may incur an additional allocation), and then copy the data from the command buffer into  dstBuffer+ when the command is executed on a device.7The additional cost of this functionality compared to  \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffersbuffer to buffer copiesm means it is only recommended for very small amounts of data, and is why it is limited to only 65536 bytes. Applications can' work around this by issuing multiple 0\ commands to different ranges of the same buffer, but it is strongly recommended that they should not.bThe source data is copied from the user pointer to the command buffer when the command is called.0 is only allowed outside of a render pass. This command is treated as transfer  operation, for the purposes of synchronization barriers. The z3 must be specified in usage of 0 in order for the buffer to be compatible with 0. Valid Usage dstOffset must be less than the size of  dstBufferdataSize must& be less than or equal to the size of  dstBuffer minus  dstOffset dstBuffer must have been created with z3 usage flagIf  dstBuffer is non-sparse then it must7 be bound completely and contiguously to a single /8 object dstOffset must be a multiple of 4dataSize must be less than or equal to 65536dataSize must be a multiple of 4If  commandBuffer- is an unprotected command buffer, then  dstBuffer must not be a protected bufferIf  commandBuffer% is a protected command buffer, then  dstBuffer must not be an unprotected bufferValid Usage (Implicit) commandBuffer must be a valid  handle dstBuffer must be a valid  handlepData must# be a valid pointer to an array of dataSize bytes commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations This command must1 only be called outside of a render pass instancedataSize must be greater than 0Both of  commandBuffer, and  dstBuffer must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type v Primary Secondary j Outside g Transfer Graphics Compute  Transfer See Also, , m0vulkan>vkCmdFillBuffer - Fill a region of a buffer with a fixed value Description0X is treated as transfer  operation for the purposes of synchronization barriers. The z3 must be specified in usage of 0 in order for the buffer to be compatible with 0. Valid Usage dstOffset must be less than the size of  dstBuffer dstOffset must be a multiple of 4If size is not equal to %, size must be greater than 0If size is not equal to %, size must& be less than or equal to the size of  dstBuffer minus  dstOffsetIf size is not equal to %, size must be a multiple of 4 dstBuffer must have been created with z3 usage flagIf  dstBuffer is non-sparse then it must7 be bound completely and contiguously to a single /8 objectIf  commandBuffer- is an unprotected command buffer, then  dstBuffer must not be a protected bufferIf  commandBuffer% is a protected command buffer, then  dstBuffer must not be an unprotected bufferValid Usage (Implicit) commandBuffer must be a valid  handle dstBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must6 support transfer, graphics or compute operations This command must1 only be called outside of a render pass instanceBoth of  commandBuffer, and  dstBuffer must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type v Primary Secondary j Outside g Transfer Graphics Compute  Transfer See Also, , m0vulkan5vkCmdClearColorImage - Clear regions of a color image DescriptionEach specified range in pRanges' is cleared to the value specified by pColor. Valid Usage The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of image must contain g" image must have been created with t usage flagimage must! not use a format listed in xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionIf image is non-sparse then it must7 be bound completely and contiguously to a single /8 object imageLayout must< specify the layout of the image subresource ranges of image specified in pRanges0 at the time this command is executed on a / imageLayout must be  ,  , or The :: aspectMask% members of the elements of the pRanges array must each only include dThe :: baseMipLevel% members of the elements of the pRanges array must each be less than the  mipLevels specified in 0 when image was created For each  element of pRanges , if the  levelCount member is not  , then  baseMipLevel +  levelCount must be less than the  mipLevels specified in 0 when image was created The ::baseArrayLayer% members of the elements of the pRanges array must each be less than the  arrayLayers specified in 0 when image was created For each  element of pRanges , if the  layerCount member is not  , then baseArrayLayer +  layerCount must be less than the  arrayLayers specified in 0 when image was createdimage must. not have a compressed or depth/stencil formatIf  commandBuffer( is an unprotected command buffer, then image must not be a protected imageIf  commandBuffer% is a protected command buffer, then image must not be an unprotected imageValid Usage (Implicit) commandBuffer must be a valid  handle image must be a valid  handle imageLayout must be a valid N valuepColor must be a valid pointer to a valid  unionpRanges must# be a valid pointer to an array of  rangeCount valid  structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operations This command must1 only be called outside of a render pass instance rangeCount must be greater than 0Both of  commandBuffer, and image must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Outside  Graphics Compute  Transfer See Also, , , N, 0vulkanMvkCmdClearDepthStencilImage - Fill regions of a combined depth/stencil image Valid Usage The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of image must contain g"If the aspect member of any element of pRanges includes dy , and image was created with  "VkImageStencilUsageCreateInfo.htmlseparate stencil usage, t must have been included in the `\:: stencilUsage used to create imageIf the aspect member of any element of pRanges includes dy , and image was not created with  "VkImageStencilUsageCreateInfo.htmlseparate stencil usage, t must have been included in the 0::usage used to create imageIf the aspect member of any element of pRanges includes dx, t must have been included in the 0::usage used to create imageIf image is non-sparse then it must7 be bound completely and contiguously to a single /8 object imageLayout must< specify the layout of the image subresource ranges of image specified in pRanges0 at the time this command is executed on a / imageLayout must be either of   or The :: aspectMask$ member of each element of the pRanges array must' not include bits other than dx or dyIf the image; s format does not have a stencil component, then the :: aspectMask$ member of each element of the pRanges array must not include the dy bitIf the image9 s format does not have a depth component, then the :: aspectMask$ member of each element of the pRanges array must not include the dx bitThe :: baseMipLevel% members of the elements of the pRanges array must each be less than the  mipLevels specified in 0 when image was created For each  element of pRanges , if the  levelCount member is not  , then  baseMipLevel +  levelCount must be less than the  mipLevels specified in 0 when image was created The ::baseArrayLayer% members of the elements of the pRanges array must each be less than the  arrayLayers specified in 0 when image was created For each  element of pRanges , if the  layerCount member is not  , then baseArrayLayer +  layerCount must be less than the  arrayLayers specified in 0 when image was createdimage must have a depth/stencil formatIf  commandBuffer( is an unprotected command buffer, then image must not be a protected imageIf  commandBuffer% is a protected command buffer, then image must not be an unprotected imageValid Usage (Implicit) commandBuffer must be a valid  handle image must be a valid  handle imageLayout must be a valid N value pDepthStencil must$ be a valid pointer to a valid # structurepRanges must# be a valid pointer to an array of  rangeCount valid  structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations This command must1 only be called outside of a render pass instance rangeCount must be greater than 0Both of  commandBuffer, and image must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Outside  Graphics  Transfer See Also#, , , N, 0vulkanKvkCmdClearAttachments - Clear regions within bound framebuffer attachments Description0 canq clear multiple regions of each attachment used in the current subpass of a render pass instance. This command must be called only inside a render pass instance, and implicitly selects the images to clear based on the current framebuffer attachments and the command parameters.If the render pass has a  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachmentfragment density map attachment, clears follow the  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapops#operations of fragment density maps as if each clear region was a primitive which generates fragments. The clear color is applied to all pixels inside each fragment s area regardless if the pixels lie outside of the clear region. Clears may> have a different set of supported fragment areas than draws.Unlike other  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clearsclear commands, 0k executes as a drawing command, rather than a transfer command, with writes performed by it executing in  \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primrast-orderrasterization orderQ. Clears to color attachments are executed as color attachment writes, by the  v> stage. Clears to depth/stencil attachments are executed as  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth depth writes and  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencilwrites by the  x and  w stages. Valid UsageIf the  aspectMask member of any element of  pAttachments contains d, then the colorAttachment member of that element must7 either refer to a color attachment which is l, or must! be a valid color attachment If the  aspectMask member of any element of  pAttachments contains dx:, then the current subpass' depth/stencil attachment must either be l, or must have a depth componentIf the  aspectMask member of any element of  pAttachments contains dy:, then the current subpass' depth/stencil attachment must either be l, or must have a stencil componentThe rect member of each element of pRects must have an  extent.width greater than 0The rect member of each element of pRects must have an  extent.height greater than 04The rectangular region specified by each element of pRects mustR be contained within the render area of the current render pass instance(The layers specified by each element of pRects must0 be contained within every attachment that  pAttachments refers toThe  layerCount member of each element of pRects must not be 0If  commandBufferK is an unprotected command buffer, then each attachment to be cleared must not be a protected imageIf  commandBufferH is a protected command buffer, then each attachment to be cleared must not be an unprotected imageJIf the render pass instance this is recorded in uses multiview, then baseArrayLayer must be zero and  layerCount must be oneValid Usage (Implicit) commandBuffer must be a valid  handle pAttachments must( be a valid pointer to an array of attachmentCount valid $ structurespRects must# be a valid pointer to an array of  rectCount " structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations This command must0 only be called inside of a render pass instanceattachmentCount must be greater than 0 rectCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Inside  Graphics  Graphics See Also$, ", 0vulkan/vkCmdResolveImage - Resolve regions of an image DescriptionDuring the resolve the samples corresponding to each pixel location in the source are converted to a single sample before being written to the destination. If the source formats are floating-point or normalized types, the sample values for each pixel are resolved in an implementation-dependent manner. If the source formats are integer types, a single sample s value is selected for each pixel. srcOffset and  dstOffset select the initial x, y, and zR offsets in texels of the sub-regions of the source and destination image data. extent: is the size in texels of the source image to resolve in width, height and depth. Each element of pRegions must? be a region that is contained within its corresponding image./Resolves are done layer by layer starting with baseArrayLayer member of srcSubresource for the source and dstSubresource for the destination.  layerCount. layers are resolved to the destination image. Valid UsageIf  commandBuffer( is an unprotected command buffer, then srcImage must not be a protected imageIf  commandBuffer( is an unprotected command buffer, then dstImage must not be a protected imageIf  commandBuffer% is a protected command buffer, then dstImage must not be an unprotected imagemThe union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memoryIf srcImage is non-sparse then it must7 be bound completely and contiguously to a single /8 objectsrcImage mustP have a sample count equal to any valid sample count value other than %If dstImage is non-sparse then it must7 be bound completely and contiguously to a single /8 objectdstImage must# have a sample count equal to %srcImageLayout must6 specify the layout of the image subresources of srcImage specified in pRegions0 at the time this command is executed on a /srcImageLayout must be ,   or dstImageLayout must6 specify the layout of the image subresources of dstImage specified in pRegions0 at the time this command is executed on a /dstImageLayout must be ,   or  The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of dstImage must contain gsrcImage and dstImage must2 have been created with the same image formatThe srcSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 0 when srcImage was createdThe dstSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 0 when dstImage was createdThe srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 0 when srcImage was createdThe dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 0 when dstImage was createddstImage and srcImage must not have been created with flags containing Valid Usage (Implicit) commandBuffer must be a valid  handle srcImage must be a valid  handlesrcImageLayout must be a valid N valuedstImage must be a valid  handledstImageLayout must be a valid N valuepRegions must# be a valid pointer to an array of  regionCount valid  structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations This command must1 only be called outside of a render pass instance regionCount must be greater than 0Each of  commandBuffer, dstImage, and srcImage mustD have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Outside  Graphics  Transfer See Also, , N, 0vulkan5vkCmdSetEvent - Set an event object to signaled state DescriptionWhen 0 is submitted to a queue, it defines an execution dependency on commands that were submitted before it, and defines an event signal operation which sets the event to the signaled state. The first  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope/ includes all commands that occur earlier in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission ordera. The synchronization scope is limited to operations on the pipeline stages determined by the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-maskssource stage mask specified by  stageMask. The second  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope+ includes only the event signal operation.If event' is already in the signaled state when 0" is executed on the device, then 0\ has no effect, no event signal operation occurs, and no execution dependency is generated. Valid Usage If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  stageMask must not contain  z  If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  stageMask must not contain  | or  { If the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled,  stageMask must not contain  h If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled,  stageMask must not contain  n If the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled,  stageMask must not contain  g If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  stageMask must not contain  m If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  stageMask must not contain  l If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled,  stageMask must not contain  kAny pipeline stage included in  stageMask mustQ be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the  , structure that was used to create the /E that  commandBuffer. was allocated from, as specified in the whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported"table of supported pipeline stages stageMask must not include  r commandBuffer s current device mask must) include exactly one physical deviceValid Usage (Implicit) commandBuffer must be a valid  handleevent must be a valid  handle stageMask must be a valid combination of X values stageMask must not be 0 commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operations This command must1 only be called outside of a render pass instanceBoth of  commandBuffer, and event must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Outside  Graphics Compute  See Also, , W0vulkan=vkCmdResetEvent - Reset an event object to non-signaled state DescriptionWhen 0 is submitted to a queue, it defines an execution dependency on commands that were submitted before it, and defines an event unsignal operation which resets the event to the unsignaled state. The first  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope/ includes all commands that occur earlier in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission ordera. The synchronization scope is limited to operations on the pipeline stages determined by the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-maskssource stage mask specified by  stageMask. The second  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope- includes only the event unsignal operation.If event) is already in the unsignaled state when 0" is executed on the device, then 0^ has no effect, no event unsignal operation occurs, and no execution dependency is generated. Valid Usage If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  stageMask must not contain  z  If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  stageMask must not contain  | or  { If the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled,  stageMask must not contain  h If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled,  stageMask must not contain  n If the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled,  stageMask must not contain  g If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  stageMask must not contain  m If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  stageMask must not contain  l If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled,  stageMask must not contain  kAny pipeline stage included in  stageMask mustQ be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the  , structure that was used to create the /E that  commandBuffer. was allocated from, as specified in the whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported"table of supported pipeline stages stageMask must not include  rWhen this command executes, event must not be waited on by a 0$ command that is currently executing commandBuffer s current device mask must) include exactly one physical deviceValid Usage (Implicit) commandBuffer must be a valid  handleevent must be a valid  handle stageMask must be a valid combination of X values stageMask must not be 0 commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operations This command must1 only be called outside of a render pass instanceBoth of  commandBuffer, and event must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Outside  Graphics Compute  See Also, , W2tvulkan&cmdWaitEvents with selectable safeness0vulkanHvkCmdWaitEvents - Wait for one or more events and insert a set of memory DescriptionWhen 0 is submitted to a queue, it defines a memory dependency between prior event signal operations on the same queue or the host, and subsequent commands. 0 mustK not be used to wait on event signal operations occurring on other queues.bThe first synchronization scope only includes event signal operations that operate on members of pEventsn, and the operations that happened-before the event signal operations. Event signal operations performed by 0 that occur earlier in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order; are included in the first synchronization scope, if the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically latest pipeline stage in their  stageMask parameter is  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically earlier than or equal to the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically latest pipeline stage in  srcStageMask(. Event signal operations performed by *; are only included in the first synchronization scope if  r is included in  srcStageMask. The second  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope- includes all commands that occur later in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission orderh. The second synchronization scope is limited to operations on the pipeline stages determined by the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masksdestination stage mask specified by  dstStageMask. The first  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopeA is limited to access in the pipeline stages determined by the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-maskssource stage mask specified by  srcStageMaski. Within that, the first access scope only includes the first access scopes defined by elements of the pMemoryBarriers, pBufferMemoryBarriers and pImageMemoryBarriers& arrays, which each define a set of  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-memory-barriersmemory barriersZ. If no memory barriers are specified, then the first access scope includes no accesses. The second  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopeA is limited to access in the pipeline stages determined by the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masksdestination stage mask specified by  dstStageMaskk. Within that, the second access scope only includes the second access scopes defined by elements of the pMemoryBarriers, pBufferMemoryBarriers and pImageMemoryBarriers& arrays, which each define a set of  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-memory-barriersmemory barriers[. If no memory barriers are specified, then the second access scope includes no accesses.Note0 is used with 0 to define a memory dependency between two sets of action commands, roughly in the same way as pipeline barriers, but split into two commands such that work between the two may execute unhindered.Unlike 0, a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer cannot be performed using 0.Note Applications shouldi be careful to avoid race conditions when using events. There is no direct ordering guarantee between a 0 command and a 0A command submitted after it, so some other execution dependency must8 be included between these commands (e.g. a semaphore). Valid Usage If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  srcStageMask must not contain  z If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  srcStageMask must not contain  | or  { If the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled,  srcStageMask must not contain  h If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled,  srcStageMask must not contain  n If the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled,  srcStageMask must not contain  g If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  srcStageMask must not contain  m If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  srcStageMask must not contain  l If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled,  srcStageMask must not contain  kAny pipeline stage included in  srcStageMask mustQ be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the  , structure that was used to create the /E that  commandBuffer. was allocated from, as specified in the whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported"table of supported pipeline stages If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  dstStageMask must not contain  z If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  dstStageMask must not contain  | or  { If the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled,  dstStageMask must not contain  h If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled,  dstStageMask must not contain  n If the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled,  dstStageMask must not contain  g If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  dstStageMask must not contain  m If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  dstStageMask must not contain  l If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled,  dstStageMask must not contain  kAny pipeline stage included in  dstStageMask mustQ be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the  , structure that was used to create the /E that  commandBuffer. was allocated from, as specified in the whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported"table of supported pipeline stagesThe  srcAccessMask member of each element of pMemoryBarriers must\ only include access flags that are supported by one or more of the pipeline stages in  srcStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesThe  dstAccessMask member of each element of pMemoryBarriers must\ only include access flags that are supported by one or more of the pipeline stages in  dstStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesFor any element of pBufferMemoryBarriers, if its srcQueueFamilyIndex and dstQueueFamilyIndex# members are equal, or if its srcQueueFamilyIndexN is the queue family index that was used to create the command pool that  commandBuffer# was allocated from, then its  srcAccessMask member musta only contain access flags that are supported by one or more of the pipeline stages in  srcStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesFor any element of pBufferMemoryBarriers, if its srcQueueFamilyIndex and dstQueueFamilyIndex# members are equal, or if its dstQueueFamilyIndexN is the queue family index that was used to create the command pool that  commandBuffer# was allocated from, then its  dstAccessMask member musta only contain access flags that are supported by one or more of the pipeline stages in  dstStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesFor any element of pImageMemoryBarriers, if its srcQueueFamilyIndex and dstQueueFamilyIndex# members are equal, or if its srcQueueFamilyIndexN is the queue family index that was used to create the command pool that  commandBuffer# was allocated from, then its  srcAccessMask member musta only contain access flags that are supported by one or more of the pipeline stages in  srcStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesFor any element of pImageMemoryBarriers, if its srcQueueFamilyIndex and dstQueueFamilyIndex# members are equal, or if its dstQueueFamilyIndexN is the queue family index that was used to create the command pool that  commandBuffer# was allocated from, then its  dstAccessMask member musta only contain access flags that are supported by one or more of the pipeline stages in  dstStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access types srcStageMask must be the bitwise OR of the  stageMask* parameter used in previous calls to 0! with any of the members of pEvents and  r if any of the members of pEvents was set using *If pEvents; includes one or more events that will be signaled by * after  commandBuffer* has been submitted to a queue, then 0 must1 not be called inside a render pass instanceThe srcQueueFamilyIndex and dstQueueFamilyIndex members of any element of pBufferMemoryBarriers or pImageMemoryBarriers must be equal commandBuffer s current device mask must) include exactly one physical deviceValid Usage (Implicit) commandBuffer must be a valid  handle pEvents must# be a valid pointer to an array of  eventCount valid  handles srcStageMask must be a valid combination of X values srcStageMask must not be 0 dstStageMask must be a valid combination of X values dstStageMask must not be 0If memoryBarrierCount is not 0, pMemoryBarriers must( be a valid pointer to an array of memoryBarrierCount valid  structuresIf bufferMemoryBarrierCount is not 0, pBufferMemoryBarriers must# be a valid pointer to an array of bufferMemoryBarrierCount valid  structuresIf imageMemoryBarrierCount is not 0, pImageMemoryBarriers must# be a valid pointer to an array of imageMemoryBarrierCount valid  structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operations eventCount must be greater than 0Both of  commandBuffer, and the elements of pEvents mustD have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics Compute  See Also, , , , , W0vulkan A variant of 0 which makes a *safe* FFI call0vulkan1vkCmdPipelineBarrier - Insert a memory dependency DescriptionWhen 0 is submitted to a queue, it defines a memory dependency between commands that were submitted before it, and those submitted after it.If 0: was recorded outside a render pass instance, the first  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope/ includes all commands that occur earlier in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order. If 0| was recorded inside a render pass instance, the first synchronization scope includes only commands that occur earlier in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order within the same subpass. In either case, the first synchronization scope is limited to operations on the pipeline stages determined by the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-maskssource stage mask specified by  srcStageMask.If 0; was recorded outside a render pass instance, the second  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope- includes all commands that occur later in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order. If 0{ was recorded inside a render pass instance, the second synchronization scope includes only commands that occur later in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order within the same subpass. In either case, the second synchronization scope is limited to operations on the pipeline stages determined by the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masksdestination stage mask specified by  dstStageMask. The first  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopeA is limited to access in the pipeline stages determined by the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-maskssource stage mask specified by  srcStageMaski. Within that, the first access scope only includes the first access scopes defined by elements of the pMemoryBarriers, pBufferMemoryBarriers and pImageMemoryBarriers& arrays, which each define a set of  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-memory-barriersmemory barriersZ. If no memory barriers are specified, then the first access scope includes no accesses. The second  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopeA is limited to access in the pipeline stages determined by the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masksdestination stage mask specified by  dstStageMaskk. Within that, the second access scope only includes the second access scopes defined by elements of the pMemoryBarriers, pBufferMemoryBarriers and pImageMemoryBarriers& arrays, which each define a set of  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-memory-barriersmemory barriers[. If no memory barriers are specified, then the second access scope includes no accesses.If dependencyFlags includes D , then any dependency between  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regionsframebuffer-space pipeline stages is  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regionsframebuffer-local - otherwise it is  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regionsframebuffer-global. Valid Usage If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  srcStageMask must not contain  z If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  srcStageMask must not contain  | or  { If the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled,  srcStageMask must not contain  h If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled,  srcStageMask must not contain  n If the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled,  srcStageMask must not contain  g If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  srcStageMask must not contain  m If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  srcStageMask must not contain  l If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled,  srcStageMask must not contain  kAny pipeline stage included in  srcStageMask mustQ be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the  , structure that was used to create the /E that  commandBuffer. was allocated from, as specified in the whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported"table of supported pipeline stages If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  dstStageMask must not contain  z If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  dstStageMask must not contain  | or  { If the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled,  dstStageMask must not contain  h If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled,  dstStageMask must not contain  n If the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled,  dstStageMask must not contain  g If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  dstStageMask must not contain  m If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  dstStageMask must not contain  l If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled,  dstStageMask must not contain  kAny pipeline stage included in  dstStageMask mustQ be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the  , structure that was used to create the /E that  commandBuffer. was allocated from, as specified in the whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported"table of supported pipeline stagesThe  srcAccessMask member of each element of pMemoryBarriers must\ only include access flags that are supported by one or more of the pipeline stages in  srcStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesThe  dstAccessMask member of each element of pMemoryBarriers must\ only include access flags that are supported by one or more of the pipeline stages in  dstStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesFor any element of pBufferMemoryBarriers, if its srcQueueFamilyIndex and dstQueueFamilyIndex# members are equal, or if its srcQueueFamilyIndexN is the queue family index that was used to create the command pool that  commandBuffer# was allocated from, then its  srcAccessMask member musta only contain access flags that are supported by one or more of the pipeline stages in  srcStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesFor any element of pBufferMemoryBarriers, if its srcQueueFamilyIndex and dstQueueFamilyIndex# members are equal, or if its dstQueueFamilyIndexN is the queue family index that was used to create the command pool that  commandBuffer# was allocated from, then its  dstAccessMask member musta only contain access flags that are supported by one or more of the pipeline stages in  dstStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesFor any element of pImageMemoryBarriers, if its srcQueueFamilyIndex and dstQueueFamilyIndex# members are equal, or if its srcQueueFamilyIndexN is the queue family index that was used to create the command pool that  commandBuffer# was allocated from, then its  srcAccessMask member musta only contain access flags that are supported by one or more of the pipeline stages in  srcStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesFor any element of pImageMemoryBarriers, if its srcQueueFamilyIndex and dstQueueFamilyIndex# members are equal, or if its dstQueueFamilyIndexN is the queue family index that was used to create the command pool that  commandBuffer# was allocated from, then its  dstAccessMask member musta only contain access flags that are supported by one or more of the pipeline stages in  dstStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesIf 0? is called within a render pass instance, the render pass must* have been created with at least one 6% instance in 67:: pDependenciesP that expresses a dependency from the current subpass to itself, with  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scopes and  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopesB that are all supersets of the scopes defined in this commandIf 02 is called within a render pass instance, it must' not include any buffer memory barriersIf 03 is called within a render pass instance, the imageB member of any image memory barrier included in this command must be an attachment used in the current subpass both as an input attachment, and as either a color or depth/stencil attachmentIf 03 is called within a render pass instance, the  oldLayout and  newLayoutC members of any image memory barrier included in this command must be equalIf 03 is called within a render pass instance, the srcQueueFamilyIndex and dstQueueFamilyIndexC members of any image memory barrier included in this command must be equalIf 03 is called outside of a render pass instance, C must( not be included in the dependency flagsValid Usage (Implicit) commandBuffer must be a valid  handle  srcStageMask must be a valid combination of X values srcStageMask must not be 0 dstStageMask must be a valid combination of X values dstStageMask must not be 0dependencyFlags must be a valid combination of G valuesIf memoryBarrierCount is not 0, pMemoryBarriers must( be a valid pointer to an array of memoryBarrierCount valid  structuresIf bufferMemoryBarrierCount is not 0, pBufferMemoryBarriers must# be a valid pointer to an array of bufferMemoryBarrierCount valid  structuresIf imageMemoryBarrierCount is not 0, pImageMemoryBarriers must# be a valid pointer to an array of imageMemoryBarrierCount valid  structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must7 support transfer, graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type v Primary Secondary j Both g Transfer Graphics Compute  See Also, , F, , , W0vulkanvkCmdBeginQuery - Begin a query DescriptionIf the  queryType of the pool is #( and flags contains  %, an implementation musti return a result that matches the actual number of samples passed. This is described in more detail in  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-occlusionOcclusion Queries.Calling 0 is equivalent to calling 8 with the index parameter set to zero.2After beginning a query, that query is considered active within the command buffer it was called in until that same query is ended. Queries active in a primary command buffer when secondary command buffers are executed are considered active for those secondary command buffers. Valid Usage queryPool must have been created with a  queryType: that differs from that of any queries that are  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive within  commandBuffer All queries used by the command must be unavailableThe  queryType used to create  queryPool must not be #' If the  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-occlusionQueryPreciseprecise occlusion queries% feature is not enabled, or the  queryType used to create  queryPool was not #(, flags must not contain  %query must' be less than the number of queries in  queryPoolIf the  queryType used to create  queryPool was #( , the /E that  commandBuffer was allocated from must support graphics operationsIf the  queryType used to create  queryPool was #) and any of the pipelineStatistics( indicate graphics operations, the /E that  commandBuffer was allocated from must support graphics operationsIf the  queryType used to create  queryPool was #) and any of the pipelineStatistics' indicate compute operations, the /E that  commandBuffer was allocated from must support compute operations commandBuffer must" not be a protected command buffer4If called within a render pass instance, the sum of queryD and the number of bits set in the current subpass s view mask must8 be less than or equal to the number of queries in  queryPoolIf the  queryType used to create  queryPool was ## the /E that  commandBuffer was allocated from must support graphics operationsIf the  queryType used to create  queryPool was ## then ::transformFeedbackQueries must be supportedIf  queryPool was created with a  queryType of #*, the  \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#profiling-lockprofiling lock must have been held before  was called on  commandBufferIf  queryPool was created with a  queryType of #*- and one of the counters used to create  queryPool was +, the query begin must' be the first recorded command in  commandBufferIf  queryPool was created with a  queryType of #*- and one of the counters used to create  queryPool was ,, the begin command must3 not be recorded within a render pass instanceIf  queryPool was created with a  queryType of #*$ and another query pool with a  queryType #* has been used within  commandBuffer, its parent primary command buffer or secondary command buffer recorded within the same parent primary command buffer as  commandBuffer , the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-features-performanceCounterMultipleQueryPools$performanceCounterMultipleQueryPools feature must be enabledIf  queryPool was created with a  queryType of #*, this command must{ not be recorded in a command buffer that, either directly or through secondary command buffers, also contains a 0! command affecting the same queryValid Usage (Implicit) commandBuffer must be a valid  handle queryPool must be a valid { handleflags must be a valid combination of [ values commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operationsBoth of  commandBuffer, and  queryPool must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics Compute  See Also, Z, {0vulkan>This function will call the supplied action between calls to 0 and 0 Note that 0@ is *not* called if an exception is thrown by the inner action.0vulkanvkCmdEndQuery - Ends a query DescriptionCalling 0 is equivalent to calling : with the index parameter set to zero.As queries operate asynchronously, ending a query does not immediately set the query s status to available. A query is considered finishedD when the final results of the query are ready to be retrieved by : and 0;, and this is when the query s status is set to available. Once a query is ended the query must~ finish in finite time, unless the state of the query is changed using other commands, e.g. by issuing a reset of the query. Valid Usage All queries used by the command must be fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactivequery must' be less than the number of queries in  queryPool commandBuffer must" not be a protected command bufferIf 0: is called within a render pass instance, the sum of queryD and the number of bits set in the current subpass s view mask must8 be less than or equal to the number of queries in  queryPoolIf  queryPool was created with a  queryType of #*5 and one or more of the counters used to create  queryPool was + , the 0 must& be the last recorded command in  commandBufferIf  queryPool was created with a  queryType of #*5 and one or more of the counters used to create  queryPool was , , the 0 must3 not be recorded within a render pass instanceValid Usage (Implicit) commandBuffer must be a valid  handle queryPool must be a valid { handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operationsBoth of  commandBuffer, and  queryPool must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics Compute  See Also, {0vulkan3vkCmdResetQueryPool - Reset queries in a query pool DescriptionJWhen executed on a queue, this command sets the status of query indices [ firstQuery,  firstQuery +  queryCount - 1] to unavailable.If the  queryType used to create  queryPool was #*2, this command sets the status of query indices [ firstQuery,  firstQuery +  queryCount& - 1] to unavailable for each pass of  queryPool, as indicated by a call to d.NoteBecause 0Q resets all the passes of the indicated queries, applications must not record a 0 command for a  queryPool created with #*\ in a command buffer that needs to be submitted multiple times as indicated by a call to dO. Otherwise applications will never be able to complete the recorded queries. Valid Usage firstQuery must, be less than the number of queries in  queryPool The sum of  firstQuery and  queryCount must8 be less than or equal to the number of queries in  queryPool All queries used by the command must not be activeIf  queryPool was created with #*, this command must not be recorded in a command buffer that, either directly or through secondary command buffers, also contains begin commands for a query from the set of queries [ firstQuery,  firstQuery +  queryCount - 1]Valid Usage (Implicit) commandBuffer must be a valid  handle queryPool must be a valid { handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operations This command must1 only be called outside of a render pass instanceBoth of  commandBuffer, and  queryPool must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Outside  Graphics Compute  See Also, {0vulkanBvkCmdWriteTimestamp - Write a device timestamp into a query object Description0 latches the value of the timer when all previous commands have completed executing as far as the specified pipeline stage, and writes the timestamp value to memory. When the timestamp value is written, the availability status of the query is set to available.NotesIf an implementation is unable to detect completion and latch the timer at any specific stage of the pipeline, it may- instead do so at any logically later stage. Timestamps may\ only be meaningfully compared if they are written by commands submitted to the same queue.Note]An example of such a comparison is determining the execution time of a sequence of commands.If 0 is called while executing a render pass instance that has multiview enabled, the timestamp uses N consecutive query indices in the query pool (starting at query) where N is the number of bits set in the view mask of the subpass the command is executed in. The resulting query values are determined by an implementation-dependent choice of one of the following behaviors:MThe first query is a timestamp value and (if more than one bit is set in the view mask) zero is written to the remaining queries. If two timestamps are written in the same subpass, the sum of the execution time of all views between those commands is the difference between the first query written by each command..All N queries are timestamp values. If two timestamps are written in the same subpass, the sum of the execution time of all views between those commands is the sum of the difference between corresponding queries written by each command. The difference between corresponding queries may( be the execution time of a single view. In either case, the application canR sum the differences between all N queries to determine the total execution time. Valid Usage pipelineStage must be a  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported valid stageN for the queue family that was used to create the command pool that  commandBuffer was allocated from  If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  pipelineStage must not be  z If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  pipelineStage must not be  | or  { If the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled,  pipelineStage must not be  h If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled,  pipelineStage must not be  n If the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled,  pipelineStage must not be  g If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  pipelineStage must not be  m or  l If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled,  pipelineStage must not be  k queryPool must have been created with a  queryType of #'The query identified by  queryPool and query must be  unavailable The command pool s queue family must support a non-zero timestampValidBits All queries used by the command must be unavailableIf 0: is called within a render pass instance, the sum of queryD and the number of bits set in the current subpass s view mask must8 be less than or equal to the number of queries in  queryPoolValid Usage (Implicit) commandBuffer must be a valid  handle pipelineStage must be a valid X value queryPool must be a valid { handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must7 support transfer, graphics, or compute operationsBoth of  commandBuffer, and  queryPool must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type v Primary Secondary j Both g Transfer Graphics Compute  Transfer See Also, X, {0vulkan[vkCmdCopyQueryPoolResults - Copy the results of queries in a query pool to a buffer object Description06 is guaranteed to see the effect of previous uses of 0 in the same queue, without any additional synchronization. Thus, the results will always reflect the most recent use of the query.flags6 has the same possible values described above for the flags parameter of :\, but the different style of execution causes some subtle behavioral differences. Because 0 executes in order with respect to other query commands, there is less ambiguity about which use of a query is being requested.Results for all requested occlusion queries, pipeline statistics queries, transform feedback queries, and timestamp queries are written as 64-bit unsigned integer values if   is set or 32-bit unsigned integer values otherwise. Performance queries store results in a tightly packed array whose type is determined by the unit member of the corresponding .If neither of   and  L are set, results are only written out for queries in the available state.If   is set, the implementation will wait for each query s status to be in the available state before retrieving the numerical results for that query. This is guaranteed to reflect the most recent use of the query on the same queue, assuming that the query is not being simultaneously used by other queues. If the query does not become available in a finite amount of time (e.g. due to not issuing a query since the last reset), a $& error may occur.Similarly, if   is set and   is not set, the availability is guaranteed to reflect the most recent use of the query on the same queue, assuming that the query is not being simultaneously used by other queues. As with :, implementations muste guarantee that if they return a non-zero availability value, then the numerical results are valid.If   is set,   is not set, and the query s status is unavailable, an intermediate result value between zero and the final result value is written for that query.  must not be used if the pool s  queryType is #'.0L is considered to be a transfer operation, and its writes to buffer memory must be synchronized using  t and 2 before using the results. Valid Usage dstOffset must be less than the size of  dstBuffer  firstQuery must, be less than the number of queries in  queryPool The sum of  firstQuery and  queryCount must8 be less than or equal to the number of queries in  queryPoolIf   is not set in flags then  dstOffset and stride must be multiples of 4If   is set in flags then  dstOffset and stride must be multiples of 8 dstBuffer must have enough storage, from  dstOffset>, to contain the result of each query, as described lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-memorylayouthere dstBuffer must have been created with z3 usage flagIf  dstBuffer is non-sparse then it must7 be bound completely and contiguously to a single /8 objectIf the  queryType used to create  queryPool was #', flags must not contain  If the  queryType used to create  queryPool was #*, ::allowCommandBufferQueryCopies must be .If the  queryType used to create  queryPool was #*, flags must not contain  ,   or  If the  queryType used to create  queryPool was #* , the  queryPool mustM have been submitted once for each pass as retrieved via a call to d0 must not be called if the  queryType used to create  queryPool was #NValid Usage (Implicit) commandBuffer must be a valid  handle queryPool must be a valid { handle dstBuffer must be a valid  handleflags must be a valid combination of ] values commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operations This command must1 only be called outside of a render pass instanceEach of  commandBuffer,  dstBuffer, and  queryPool mustD have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Outside  Graphics Compute  Transfer See Also, , m, {, \0vulkan8vkCmdPushConstants - Update the values of push constants DescriptionNoteAs  stageFlags needs to include all flags the relevant push constant ranges were created with, any flags that are not supported by the queue family that the /E used to allocate  commandBuffer was created on are ignored. Valid Usage(For each byte in the range specified by offset and size# and for each shader stage in  stageFlags, there must" be a push constant range in layout' that includes that byte and that stage(For each byte in the range specified by offset and size@ and for each push constant range that overlaps that byte,  stageFlags must7 include all stages in that push constant range s 9x:: stageFlagsoffset must be a multiple of 4size must be a multiple of 4offset must be less than  l::maxPushConstantsSizesize must be less than or equal to  l::maxPushConstantsSize minus offsetValid Usage (Implicit) commandBuffer must be a valid  handlelayout must be a valid | handle stageFlags must be a valid combination of c values stageFlags must not be 0pValues must# be a valid pointer to an array of size bytes commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must( support graphics, or compute operationssize must be greater than 0Both of  commandBuffer, and layout must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics Compute  See Also, |, b0vulkan.vkCmdBeginRenderPass - Begin a new render pass DescriptionAfter beginning a render pass instance, the command buffer is ready to record the commands for the first subpass of that render pass. Valid UsageIf any of the  initialLayout or  finalLayout member of the 6 structures or the layout member of the 6kO structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is \ then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including w If any of the  initialLayout or  finalLayout member of the 6 structures or the layout member of the 6kO structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is , , , or  \ then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including eIf any of the  initialLayout or  finalLayout member of the 6 structures or the layout member of the 6kO structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is , or , , or \ then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including eIf any of the stencilInitialLayout or stencilFinalLayout member of the h structures or the  stencilLayout member of the hO structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is , or \ then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including eIf any of the  initialLayout or  finalLayout member of the 6 structures or the layout member of the 6kO structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is  \ then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including v or fIf any of the  initialLayout or  finalLayout member of the 6 structures or the layout member of the 6kO structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is  \ then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including uIf any of the  initialLayout or  finalLayout member of the 6 structures or the layout member of the 6kO structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is  \ then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including tIf any of the  initialLayout members of the 6J structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is not , then each such  initialLayout must be equal to the current layout of the corresponding attachment image subresource of the framebuffer specified in the  framebuffer member of pRenderPassBeginThe  srcStageMask and  dstStageMask$ members of any element of the  pDependencies member of 67 used to create  renderPass mustM be supported by the capabilities of the queue family identified by the queueFamilyIndex member of the  , used to create the command pool which  commandBuffer was allocated fromFor any attachment in  framebuffer that is used by  renderPass^ and is bound to memory locations that are also bound to another attachment used by  renderPasse, and if at least one of those uses causes either attachment to be written to, both attachments must have had the ' setEach element of the  pAttachments of  framebuffer/ that is referenced by any element of the pInputAttachments of any element of  pSubpasses of  renderPass must have  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresimage view format features containing at least g or gEach element of the  pAttachments of  framebuffer/ that is referenced by any element of the pColorAttachments of any element of  pSubpasses of  renderPass must have  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresimage view format features containing gEach element of the  pAttachments of  framebuffer/ that is referenced by any element of the pResolveAttachments of any element of  pSubpasses of  renderPass must have  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresimage view format features containing gEach element of the  pAttachments of  framebuffer/ that is referenced by any element of the pDepthStencilAttachment of any element of  pSubpasses of  renderPass must have  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresimage view format features containing gValid Usage (Implicit) commandBuffer must be a valid  handlepRenderPassBegin must$ be a valid pointer to a valid  structurecontents must be a valid g value commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations This command must1 only be called outside of a render pass instance commandBuffer must be a primary Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type | Primary x Outside w Graphics  Graphics See Also, , g0vulkan>This function will call the supplied action between calls to 0 and 0 Note that 0@ is *not* called if an exception is thrown by the inner action.0vulkanBvkCmdNextSubpass - Transition to the next subpass of a render pass Description9The subpass index for a render pass begins at zero when 0( is recorded, and increments each time 0 is recorded.gMoving to the next subpass automatically performs any multisample resolve operations in the subpass being ended. End-of-subpass multisample resolves are treated as color attachment writes for the purposes of synchronization. This applies to resolve operations for both color and depth/stencil attachments. That is, they are considered to execute in the  v9 pipeline stage and their writes are synchronized with +. Synchronization between rendering within a subpass and any resolve operations at the end of the subpass occurs automatically, without need for explicit dependencies or pipeline barriers. However, if the resolve attachment is also used in a different subpass, an explicit dependency is needed.9After transitioning to the next subpass, the application can' record the commands for that subpass. Valid UsageThe current subpass index mustG be less than the number of subpasses in the render pass minus one This command must7 not be recorded when transform feedback is activeValid Usage (Implicit) commandBuffer must be a valid  handlecontents must be a valid g value commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations This command must0 only be called inside of a render pass instance commandBuffer must be a primary Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type | Primary x Inside w Graphics  Graphics See Also, g0vulkan0vkCmdEndRenderPass - End the current render pass Description`Ending a render pass instance performs any multisample resolve operations on the final subpass. Valid UsageThe current subpass index mustF be equal to the number of subpasses in the render pass minus one This command must7 not be recorded when transform feedback is activeValid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations This command must0 only be called inside of a render pass instance commandBuffer must be a primary Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type | Primary x Inside w Graphics  Graphics See Also0vulkanXvkCmdExecuteCommands - Execute a secondary command buffer from a primary command buffer DescriptionIf any element of pCommandBuffers was not recorded with the vi^ flag, and it was recorded into any other primary command buffer which is currently in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleexecutable or recording state(, that primary command buffer becomes  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleinvalid. Valid UsageEach element of pCommandBuffers must! have been allocated with a level of wgEach element of pCommandBuffers must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclepending or executable stateIf any element of pCommandBuffers was not recorded with the vi flag, it must not be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending stateIf any element of pCommandBuffers was not recorded with the vi flag, it must# not have already been recorded to  commandBufferIf any element of pCommandBuffers was not recorded with the vi flag, it must not appear more than once in pCommandBuffersEach element of pCommandBuffers must! have been allocated from a /E8 that was created for the same queue family as the /E from which  commandBuffer was allocatedIf 0O is being called within a render pass instance, that render pass instance must have been begun with the contents parameter of 0 set to If 0E is being called within a render pass instance, each element of pCommandBuffers must' have been recorded with the v(If 0E is being called within a render pass instance, each element of pCommandBuffers must# have been recorded with ::subpass] set to the index of the subpass which the given command buffer will be executed inIf 0] is being called within a render pass instance, the render passes specified in the (pBeginInfo->pInheritanceInfo->renderPass members of the 7 commands used to begin recording each element of pCommandBuffers must be  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible" with the current render passIf 0H is being called within a render pass instance, and any element of pCommandBuffers was recorded with :: framebuffer not equal to  , that  must match the . used in the current render pass instanceIf 0G is being called within a render pass instance that included D in the pNext chain of , then each element of pCommandBuffers must have been recorded with  in the pNext chain of If 0G is being called within a render pass instance that included D in the pNext chain of , then each element of pCommandBuffers must have been recorded with :: transform identical to D:: transformIf 0G is being called within a render pass instance that included D in the pNext chain of , then each element of pCommandBuffers must have been recorded with :: renderArea identical to :: renderAreaIf 0I is not being called within a render pass instance, each element of pCommandBuffers must+ not have been recorded with the v( If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedQueriesinherited queries feature is not enabled,  commandBuffer must not have any queries fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactiveIf  commandBuffer has a #( query  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive, then each element of pCommandBuffers must# have been recorded with ::occlusionQueryEnable set to .If  commandBuffer has a #( query  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive, then each element of pCommandBuffers must# have been recorded with :: queryFlags4 having all bits set that are set for the queryIf  commandBuffer has a #) query  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive, then each element of pCommandBuffers must# have been recorded with ::pipelineStatistics3 having all bits set that are set in the { the query usesEach element of pCommandBuffers must. not begin any query types that are  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive in  commandBufferIf  commandBuffer: is a protected command buffer, then each element of pCommandBuffers must be a protected command bufferIf  commandBuffer= is an unprotected command buffer, then each element of pCommandBuffers must! be an unprotected command buffer This command must7 not be recorded when transform feedback is activeValid Usage (Implicit) commandBuffer must be a valid  handlepCommandBuffers must( be a valid pointer to an array of commandBufferCount valid  handles commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations commandBuffer must be a primary commandBufferCount must be greater than 0Both of  commandBuffer, and the elements of pCommandBuffers must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type v Primary j Both g Transfer Graphics Compute  See Also.0pvulkan commandBuffer; is the command buffer that the pipeline will be bound to.vulkanpipelineBindPoint is a Vr value specifying whether to bind to the compute or graphics bind point. Binding one does not disturb the other.vulkanpipeline is the pipeline to be bound.0qvulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkan firstViewportQ is the index of the first viewport whose parameters are updated by the command.vulkan pViewports is a pointer to an array of , structures specifying viewport parameters.0rvulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkan firstScissorJ is the index of the first scissor whose state is updated by the command.vulkan pScissors is a pointer to an array of p) structures defining scissor rectangles.0svulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkan lineWidth* is the width of rasterized line segments.0tvulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkandepthBiasConstantFactorQ is a scalar factor controlling the constant depth value added to each fragment.vulkandepthBiasClamp6 is the maximum (or minimum) depth bias of a fragment.vulkandepthBiasSlopeFactorN is a scalar factor applied to a fragment s slope in depth bias calculations.0uvulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanblendConstants is a pointer to an array of four values specifying the R, G, B, and A components of the blend constant color used in blending, depending on the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blendfactors blend factor.0vvulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanminDepthBounds is the minimum depth bound.vulkanmaxDepthBounds is the maximum depth bound.0wvulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanfaceMask is a bitmask of eK specifying the set of stencil state for which to update the compare mask.vulkan compareMask5 is the new value to use as the stencil compare mask.0xvulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanfaceMask is a bitmask of eb specifying the set of stencil state for which to update the write mask, as described above for 0w.vulkan writeMask3 is the new value to use as the stencil write mask.0yvulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanfaceMask is a bitmask of eg specifying the set of stencil state for which to update the reference value, as described above for 0w.vulkan reference8 is the new value to use as the stencil reference value.0zvulkan commandBufferB is the command buffer that the descriptor sets will be bound to.vulkanpipelineBindPoint is a V indicating whether the descriptors will be used by graphics pipelines or compute pipelines. There is a separate set of bind points for each of graphics and compute, so binding one does not disturb the other.vulkanlayout is a |& object used to program the bindings.vulkanfirstSet; is the set number of the first descriptor set to be bound.vulkanpDescriptorSets) is a pointer to an array of handles to 5 objects describing the descriptor sets to write to.vulkanpDynamicOffsets is a pointer to an array of uint32_t$ values specifying dynamic offsets.0{vulkan commandBuffer; is the command buffer into which the command is recorded.vulkanbuffer is the buffer being bound.vulkanoffset( is the starting offset in bytes within buffer, used in index buffer address calculations.vulkan indexType is a SE value specifying whether indices are treated as 16 bits or 32 bits.0|vulkan commandBuffer; is the command buffer into which the command is recorded.vulkan firstBindingW is the index of the first vertex input binding whose state is updated by the command.vulkanpBuffers, is a pointer to an array of buffer handles.vulkanpOffsets, is a pointer to an array of buffer offsets.0}vulkan commandBuffer; is the command buffer into which the command is recorded.vulkan vertexCount# is the number of vertices to draw.vulkan instanceCount$ is the number of instances to draw.vulkan firstVertex* is the index of the first vertex to draw.vulkan firstInstance2 is the instance ID of the first instance to draw.0~vulkan commandBuffer; is the command buffer into which the command is recorded.vulkan indexCount# is the number of vertices to draw.vulkan instanceCount$ is the number of instances to draw.vulkan firstIndex+ is the base index within the index buffer.vulkan vertexOffsetP is the value added to the vertex index before indexing into the vertex buffer.vulkan firstInstance2 is the instance ID of the first instance to draw.0vulkan commandBuffer; is the command buffer into which the command is recorded.vulkanbuffer* is the buffer containing draw parameters.vulkanoffset is the byte offset into buffer where parameters begin.vulkan drawCount( is the number of draws to execute, and can be zero.vulkanstride? is the byte stride between successive sets of draw parameters.0vulkan commandBuffer; is the command buffer into which the command is recorded.vulkanbuffer* is the buffer containing draw parameters.vulkanoffset is the byte offset into buffer where parameters begin.vulkan drawCount( is the number of draws to execute, and can be zero.vulkanstride? is the byte stride between successive sets of draw parameters.0vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkan groupCountXC is the number of local workgroups to dispatch in the X dimension.vulkan groupCountYC is the number of local workgroups to dispatch in the Y dimension.vulkan groupCountZC is the number of local workgroups to dispatch in the Z dimension.0vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanbuffer. is the buffer containing dispatch parameters.vulkanoffset is the byte offset into buffer where parameters begin.0vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkan srcBuffer is the source buffer.vulkan dstBuffer is the destination buffer.vulkanpRegions is a pointer to an array of &, structures specifying the regions to copy.0vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkansrcImage is the source image.vulkansrcImageLayout7 is the current layout of the source image subresource.vulkandstImage is the destination image.vulkandstImageLayout= is the current layout of the destination image subresource.vulkanpRegions is a pointer to an array of  , structures specifying the regions to copy.0vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkansrcImage is the source image.vulkansrcImageLayout> is the layout of the source image subresources for the blit.vulkandstImage is the destination image.vulkandstImageLayoutC is the layout of the destination image subresources for the blit.vulkanpRegions is a pointer to an array of !, structures specifying the regions to blit.vulkanfilter is a I> specifying the filter to apply if the blits require scaling.0vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkan srcBuffer is the source buffer.vulkandstImage is the destination image.vulkandstImageLayoutC is the layout of the destination image subresources for the copy.vulkanpRegions is a pointer to an array of %, structures specifying the regions to copy.0vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkansrcImage is the source image.vulkansrcImageLayout> is the layout of the source image subresources for the copy.vulkan dstBuffer is the destination buffer.vulkanpRegions is a pointer to an array of %, structures specifying the regions to copy.0vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkan dstBuffer) is a handle to the buffer to be updated.vulkan dstOffset< is the byte offset into the buffer to start updating, and must be a multiple of 4.vulkandataSize' is the number of bytes to update, and must be a multiple of 4.vulkanpData= is a pointer to the source data for the buffer update, and must be at least dataSize bytes in size.0vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkan dstBuffer is the buffer to be filled.vulkan dstOffsetD is the byte offset into the buffer at which to start filling, and must be a multiple of 4.vulkansize% is the number of bytes to fill, and must be either a multiple of 4, or % to fill the range from offset to the end of the buffer. If %r is used and the remaining size of the buffer is not a multiple of 4, then the nearest smaller multiple is used.vulkandata> is the 4-byte word written repeatedly to the buffer to fill sizeU bytes of data. The data word is written to memory according to the host endianness.0vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanimage is the image to be cleared.vulkan imageLayoutR specifies the current layout of the image subresource ranges to be cleared, and must be ,  or  .vulkanpColor is a pointer to a ] structure containing the values that the image subresource ranges will be cleared to (see  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears-values below).vulkanpRanges is a pointer to an array of m structures describing a range of mipmap levels, array layers, and aspects to be cleared, as described in  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views Image Views.0vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanimage is the image to be cleared.vulkan imageLayoutR specifies the current layout of the image subresource ranges to be cleared, and must be  or  .vulkan pDepthStencil is a pointer to a #p structure containing the values that the depth and stencil image subresource ranges will be cleared to (see  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears-values below).vulkanpRanges is a pointer to an array of m structures describing a range of mipmap levels, array layers, and aspects to be cleared, as described in  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views Image Views.0vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkan pAttachments is a pointer to an array of $ structures defining the attachments to clear and the clear values to use. If any attachment to be cleared in the current subpass is l3, then the clear has no effect on that attachment.vulkanpRects is a pointer to an array of "G structures defining regions within each selected attachment to clear.0vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkansrcImage is the source image.vulkansrcImageLayoutA is the layout of the source image subresources for the resolve.vulkandstImage is the destination image.vulkandstImageLayoutF is the layout of the destination image subresources for the resolve.vulkanpRegions is a pointer to an array of / structures specifying the regions to resolve.0vulkan commandBuffer; is the command buffer into which the command is recorded.vulkanevent$ is the event that will be signaled.vulkan stageMask specifies the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagessource stage mask used to determine the first  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope.0vulkan commandBuffer; is the command buffer into which the command is recorded.vulkanevent& is the event that will be unsignaled.vulkan stageMask is a bitmask of X specifying the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagessource stage mask used to determine when the event is unsignaled.2tvulkan commandBuffer; is the command buffer into which the command is recorded.vulkanpEvents= is a pointer to an array of event object handles to wait on.vulkan srcStageMask is a bitmask of X specifying the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagessource stage mask.vulkan dstStageMask is a bitmask of X specifying the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagesdestination stage mask.vulkanpMemoryBarriers is a pointer to an array of  structures.vulkanpBufferMemoryBarriers is a pointer to an array of  structures.vulkanpImageMemoryBarriers is a pointer to an array of  structures.0vulkan commandBuffer; is the command buffer into which the command is recorded.vulkanpEvents= is a pointer to an array of event object handles to wait on.vulkan srcStageMask is a bitmask of X specifying the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagessource stage mask.vulkan dstStageMask is a bitmask of X specifying the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagesdestination stage mask.vulkanpMemoryBarriers is a pointer to an array of  structures.vulkanpBufferMemoryBarriers is a pointer to an array of  structures.vulkanpImageMemoryBarriers is a pointer to an array of  structures.0vulkan commandBuffer; is the command buffer into which the command is recorded.vulkanpEvents= is a pointer to an array of event object handles to wait on.vulkan srcStageMask is a bitmask of X specifying the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagessource stage mask.vulkan dstStageMask is a bitmask of X specifying the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagesdestination stage mask.vulkanpMemoryBarriers is a pointer to an array of  structures.vulkanpBufferMemoryBarriers is a pointer to an array of  structures.vulkanpImageMemoryBarriers is a pointer to an array of  structures.0vulkan commandBuffer; is the command buffer into which the command is recorded.vulkan srcStageMask is a bitmask of X specifying the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-maskssource stage mask.vulkan dstStageMask is a bitmask of X specifying the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masksdestination stage mask.vulkandependencyFlags is a bitmask of G> specifying how execution and memory dependencies are formed.vulkanpMemoryBarriers is a pointer to an array of  structures.vulkanpBufferMemoryBarriers is a pointer to an array of  structures.vulkanpImageMemoryBarriers is a pointer to an array of  structures.0vulkan commandBufferA is the command buffer into which this command will be recorded.vulkan queryPool= is the query pool that will manage the results of the query.vulkanqueryI is the query index within the query pool that will contain the results.vulkanflags is a bitmask of [6 specifying constraints on the types of queries that can be performed.0vulkan commandBufferA is the command buffer into which this command will be recorded.vulkan queryPool= is the query pool that is managing the results of the query.vulkanqueryF is the query index within the query pool where the result is stored.0vulkan commandBufferA is the command buffer into which this command will be recorded.vulkan queryPoolC is the handle of the query pool managing the queries being reset.vulkan firstQuery% is the initial query index to reset.vulkan queryCount# is the number of queries to reset.0vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkan pipelineStage is one of the X&, specifying a stage of the pipeline.vulkan queryPool2 is the query pool that will manage the timestamp.vulkanqueryE is the query within the query pool that will contain the timestamp.0vulkan commandBufferA is the command buffer into which this command will be recorded.vulkan queryPoolH is the query pool managing the queries containing the desired results.vulkan firstQuery is the initial query index.vulkan queryCount is the number of queries.  firstQuery and  queryCount% together define a range of queries.vulkan dstBuffer is a ; object that will receive the results of the copy command.vulkan dstOffset is an offset into  dstBuffer.vulkanstrideG is the stride in bytes between results for individual queries within  dstBuffer/. The required size of the backing memory for  dstBuffer' is determined as described above for :.vulkanflags is a bitmask of ]/ specifying how and when results are returned.0vulkan commandBufferK is the command buffer in which the push constant update will be recorded.vulkanlayoutC is the pipeline layout used to program the push constant updates.vulkan stageFlags is a bitmask of cU specifying the shader stages that will use the push constants in the updated range.vulkanoffsetN is the start offset of the push constant range to update, in units of bytes.vulkansizeF is the size of the push constant range to update, in units of bytes.vulkanpValues is a pointer to an array of size0 bytes containing the new push constant values.0vulkan commandBuffer6 is the command buffer in which to record the command.vulkanpRenderPassBegin is a pointer to a g structure specifying the render pass to begin an instance of, and the framebuffer the instance uses.vulkancontents is a gJ value specifying how the commands in the first subpass will be provided.0vulkan commandBuffer6 is the command buffer in which to record the command.vulkancontentsz specifies how the commands in the next subpass will be provided, in the same fashion as the corresponding parameter of 0.0vulkan commandBufferI is the command buffer in which to end the current render pass instance.0vulkan commandBuffer] is a handle to a primary command buffer that the secondary command buffers are executed in.vulkanpCommandBuffers is a pointer to an array of commandBufferCount secondary command buffer handles, which are recorded to execute in the primary command buffer in the order they are listed in the array.0<0;0=0E0F0I0G0H0J0g0h0k0i0j0K0P0O0M0L0N 0]0b0a0_0^0`!0X0Y0[0Z0\"0l0o0n0m#0B0C0D$0>0?0@0A%0Q0W0R0S0T0U0V&0c0f0e0dSde 9 < ; :g08090:0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~000000000000000000000000000000000p0q0r0s0t0u0v0w0x0y0z0{0|0}0~00000000000000000000000000000000"0l0o0n0m0g0h0k0i0j&0c0f0e0d 0]0b0a0_0^0`!0X0Y0[0Z0\%0Q0W0R0S0T0U0V0K0P0O0M0L0N0E0F0I0G0H0J#0B0C0D$0>0?0@0A0<0;0=08090:Sge 9 < ; : < ; :dNone("#%&'-./1789;=>?FHIMSUVX_dghklmqXvulkanSVkSamplerCustomBorderColorCreateInfoEXT - Structure specifying custom border color Valid Usage If provided format is not E then the =?:: borderColor type must- match the sampled type of the provided format, as shown in the SPIR-V Sampled Type column of the  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat table If the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-customBorderColorWithoutFormatcustomBorderColorWithoutFormat" feature is not enabled then format must not be E7If the sampler is used to sample an image view of ), * , or + format then format must not be EValid Usage (Implicit)sType must be |format must be a valid J valueSee Also, J, vulkanVkPhysicalDeviceCustomBorderColorPropertiesEXT - Structure describing whether custom border colors can be supported by an implementationMembersThe members of the , structure describe the following features:Valid Usage (Implicit)See AlsovulkanVkPhysicalDeviceCustomBorderColorFeaturesEXT - Structure describing whether custom border colors can be supported by an implementationMembersThe members of the , structure describe the following features:Valid Usage (Implicit)See Alsoo, 0vulkancustomBorderColors9 indicates that the implementation supports providing a  borderColorB value with one of the following values at sampler creation time:||0vulkancustomBorderColorWithoutFormata indicates that explicit formats are not required for custom border colors and the value of the format member of the  structure may be E0. If this feature bit is not set, applications must provide the J< of the image view(s) being sampled by this sampler in the format member of the  structure.0vulkanmaxCustomBorderColorSamplersK indicates the maximum number of samplers with custom border colors which can" simultaneously exist on a device.0vulkancustomBorderColor is a 7 representing the desired custom sampler border color.0vulkanformat is a JK representing the format of the sampled image view(s). This field may be E if the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-customBorderColorWithoutFormatcustomBorderColorWithoutFormat feature is enabled.000000000000000000000000cNone("#%&'-./1789;=>?FHIMSUVX_dghklmq2+vulkan8VkSubpassEndInfo - Structure specifying subpass end infoValid Usage (Implicit)See Also, 1+, , 1*, ,vulkanBVkSubpassDescription2 - Structure specifying a subpass description DescriptionEParameters defined by this structure with the same name as those in 6-0 have the identical effect to those parameters.viewMask3 has the same effect for the described subpass as W;:: pViewMasks$ has on each corresponding subpass. Valid UsagepipelineBindPoint must be  colorAttachmentCount must be less than or equal to  l::maxColorAttachmentsIf the first use of an attachment in this render pass is as an input attachment, and the attachment is not also used as a color or depth/stencil attachment in the same subpass, then loadOp must not be :If pResolveAttachments is not NULLE, for each resolve attachment that does not have the value l*, the corresponding color attachment must not have the value lIf pResolveAttachments is not NULL/, for each resolve attachment that is not l*, the corresponding color attachment must! not have a sample count of %If pResolveAttachments is not NULL+, each resolve attachment that is not l must" have a sample count of %Any given element of pResolveAttachments must have the same J+ as its corresponding color attachmentAll attachments in pColorAttachments that are not l must have the same sample countAll attachments in pInputAttachments that are not l must$ have image formats whose  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features contain at least g or gAll attachments in pColorAttachments that are not l must$ have image formats whose  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features contain gAll attachments in pResolveAttachments that are not l must$ have image formats whose  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features contain gIf pDepthStencilAttachment is not NULL and the attachment is not l then it must% have a image format whose  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features contain gIf the VK_AMD_mixed_attachment_samples/ extension is enabled, all attachments in pColorAttachments that are not l mustT have a sample count that is smaller than or equal to the sample count of pDepthStencilAttachment if it is not lIf neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples% extensions are enabled, and if pDepthStencilAttachment is not l and any attachments in pColorAttachments are not l, they must have the same sample countThe  attachment member of any element of pPreserveAttachments must not be lAny given element of pPreserveAttachments mustK not also be an element of any other member of the subpass description0If any attachment is used by more than one 6k member, then each use must use the same layoutIf flags includes A, , it must also include AIf the  attachment member of any element of pInputAttachments is not l, then the  aspectMask member must be a valid combination of dIf the  attachment member of any element of pInputAttachments is not l, then the  aspectMask member must not be 0If the  attachment member of any element of pInputAttachments is not l, then the  aspectMask member must not include dValid Usage (Implicit)sType must be Jflags must be a valid combination of A- valuespipelineBindPoint must be a valid V valueIf inputAttachmentCount is not 0, pInputAttachments must( be a valid pointer to an array of inputAttachmentCount valid 0 structuresIf colorAttachmentCount is not 0, pColorAttachments must( be a valid pointer to an array of colorAttachmentCount valid 0 structuresIf colorAttachmentCount is not 0, and pResolveAttachments is not NULL, pResolveAttachments must( be a valid pointer to an array of colorAttachmentCount valid 0 structuresIf pDepthStencilAttachment is not NULL, pDepthStencilAttachment must$ be a valid pointer to a valid 0 structureIf preserveAttachmentCount is not 0, pPreserveAttachments must# be a valid pointer to an array of preserveAttachmentCount uint32_t valuesSee Also0, V, /, ,  +-vulkan@VkSubpassDependency2 - Structure specifying a subpass dependency DescriptionEParameters defined by this structure with the same name as those in 6%0 have the identical effect to those parameters. viewOffset> has the same effect for the described subpass dependency as W;:: pViewOffsets/ has on each corresponding subpass dependency. Valid Usage If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  srcStageMask must not contain  If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  dstStageMask must not contain  If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  srcStageMask must not contain  or  If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  dstStageMask must not contain  or  srcSubpass must be less than or equal to  dstSubpass, unless one of them is F, to avoid cyclic dependencies and ensure a valid execution order srcSubpass and  dstSubpass must not both be equal to If  srcSubpass is equal to  dstSubpass# and not all of the stages in  srcStageMask and  dstStageMask are  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regionsframebuffer-space stages, the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically latest pipeline stage in  srcStageMask must be  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically earlier than or equal to the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically earliest pipeline stage in  dstStageMaskAny access flag included in  srcAccessMask must4 be supported by one of the pipeline stages in  srcStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesAny access flag included in  dstAccessMask must4 be supported by one of the pipeline stages in  dstStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesIf dependencyFlags includes .,  srcSubpass must not be equal to If dependencyFlags includes .,  dstSubpass must not be equal to If  srcSubpass equals  dstSubpass, and  srcStageMask and  dstStageMask both include a  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regionsframebuffer-space stage , then dependencyFlags must include /If  viewOffset is not equal to 0,  srcSubpass must not be equal to  dstSubpassIf dependencyFlags does not include .,  viewOffset must be 0 If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  srcStageMask must not contain  If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  srcStageMask must not contain  If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  dstStageMask must not contain  If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  dstStageMask must not contain Valid Usage (Implicit)sType must be K srcStageMask must be a valid combination of  values srcStageMask must not be 0 dstStageMask must be a valid combination of  values dstStageMask must not be 0 srcAccessMask must be a valid combination of  values dstAccessMask must be a valid combination of  valuesdependencyFlags must be a valid combination of 0 valuesSee Also, F, W, /, .vulkan<VkSubpassBeginInfo - Structure specifying subpass begin infoValid Usage (Implicit)See Also, g, 1(, , 1*, /vulkanYVkRenderPassCreateInfo2 - Structure specifying parameters of a newly created render pass DescriptionEParameters defined by this structure with the same name as those in 67e have the identical effect to those parameters; the child structures are variants of those used in 67 which add sType and pNext+ parameters, allowing them to be extended.If the ,::viewMask member of any element of  pSubpasses is not zero,  multiviewA functionality is considered to be enabled for this render pass.correlatedViewMaskCount and pCorrelatedViewMasks have the same effect as W;::correlationMaskCount and W;::pCorrelationMasks, respectively. Valid UsageUIf any two subpasses operate on attachments with overlapping ranges of the same /8C object, and at least one subpass writes to that area of /8, a subpass dependency mustX be included (either directly or via some intermediate subpasses) between themIf the  attachment member of any element of pInputAttachments, pColorAttachments, pResolveAttachments or pDepthStencilAttachment3, or the attachment indexed by any element of pPreserveAttachments in any given element of  pSubpasses is bound to a range of a /8k object that overlaps with any other attachment in any subpass (including the same subpass), the 1! structures describing them must include ' in flagsIf the  attachment member of any element of pInputAttachments, pColorAttachments, pResolveAttachments or pDepthStencilAttachment, or any element of pPreserveAttachments in any given element of  pSubpasses is not l, it must be less than attachmentCountFor any member of  pAttachments with a loadOp equal to :(, the first use of that attachment must not specify a layout equal to , m, or nFor any member of  pAttachments with a  stencilLoadOp equal to :(, the first use of that attachment must not specify a layout equal to , m, or oFor any element of  pDependencies , if the  srcSubpass is not ', all stage flags included in the  srcStageMask member of that dependency must0 be a pipeline stage supported by the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-typespipeline identified by the pipelineBindPoint member of the source subpassFor any element of  pDependencies , if the  dstSubpass is not ', all stage flags included in the  dstStageMask member of that dependency must0 be a pipeline stage supported by the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-typespipeline identified by the pipelineBindPoint' member of the destination subpass+The set of bits included in any element of pCorrelatedViewMasks mustH not overlap with the set of bits included in any other element of pCorrelatedViewMasksIf the ,::viewMask member of all elements of  pSubpasses is 0, correlatedViewMaskCount must be 0The ,::viewMask member of all elements of  pSubpasses must either all be 0, or all not be 0If the ,::viewMask member of all elements of  pSubpasses is 0, the dependencyFlags member of any element of  pDependencies must not include .For any element of  pDependencies where its  srcSubpass member equals its  dstSubpass member, if the viewMask- member of the corresponding element of  pSubpasses& includes more than one bit, its dependencyFlags member must include .The viewMask member mustC not have a bit set at an index greater than or equal to  l::maxFramebufferLayersIf the  attachment member of any element of the pInputAttachments member of any element of  pSubpasses is not l, the  aspectMask member of that element of pInputAttachments muste only include aspects that are present in images of the format specified by the element of  pAttachments specified by  attachmentThe  srcSubpass member of each element of  pDependencies must be less than  subpassCountThe  dstSubpass member of each element of  pDependencies must be less than  subpassCountValid Usage (Implicit)sType must be LpNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of G1 valuesIf attachmentCount is not 0,  pAttachments must( be a valid pointer to an array of attachmentCount valid 1 structures pSubpasses must# be a valid pointer to an array of  subpassCount valid , structuresIf dependencyCount is not 0,  pDependencies must( be a valid pointer to an array of dependencyCount valid - structuresIf correlatedViewMaskCount is not 0, pCorrelatedViewMasks must# be a valid pointer to an array of correlatedViewMaskCount uint32_t values subpassCount must be greater than 0See Also1,  , , -, ,, 1', 0vulkanEVkAttachmentReference2 - Structure specifying an attachment reference DescriptionEParameters defined by this structure with the same name as those in 6k0 have the identical effect to those parameters. aspectMaskg is ignored when this structure is used to describe anything other than an input attachment reference.If the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts feature is enabled, and  attachment has a depth/stencil format, layout canH be set to a layout that only specifies the layout of the depth aspect.If layouty only specifies the layout of the depth aspect of the attachment, the layout of the stencil aspect is specified by the  stencilLayout member of a < structure included in the pNext chain. Otherwise, layout6 describes the layout for all relevant image aspects. Valid UsageIf  attachment is not l, layout must not be p, q , or HIf  attachment is not l, and  aspectMask does not include dy or dx, layout must not be , m, o, or nIf  attachment is not l, and  aspectMask does not include d, layout must not be  If the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts" feature is not enabled, and  attachment is not l, layout must not be , , , or ,If  attachment is not l, and  aspectMask includes d, layout must not be , , , or ,If  attachment is not l, and  aspectMask includes both dx and dy , and layout is  or  , the pNext chain must include a < structureIf  attachment is not l, and  aspectMask includes only dx then layout must not be , or If  attachment is not l, and  aspectMask includes only dy then layout must not be , or Valid Usage (Implicit)sType must be Ilayout must be a valid N valueSee Alsoh, N, , ,, 21vulkanJVkAttachmentDescription2 - Structure specifying an attachment description DescriptionEParameters defined by this structure with the same name as those in 60 have the identical effect to those parameters.If the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts feature is enabled, and format is a depth/stencil format,  initialLayout and  finalLayout canH be set to a layout that only specifies the layout of the depth aspect.If format is a depth/stencil format, and  initialLayout only specifies the initial layout of the depth aspect of the attachment, the initial layout of the stencil aspect is specified by the stencilInitialLayout member of a = structure included in the pNext chain. Otherwise,  initialLayout> describes the initial layout for all relevant image aspects.If format is a depth/stencil format, and  finalLayout only specifies the final layout of the depth aspect of the attachment, the final layout of the stencil aspect is specified by the stencilFinalLayout member of a = structure included in the pNext chain. Otherwise,  finalLayout< describes the final layout for all relevant image aspects. Valid Usage finalLayout must not be p or qIf format is a color format,  initialLayout must not be , m, o, or nIf format is a depth/stencil format,  initialLayout must not be If format is a color format,  finalLayout must not be , m, o, or nIf format is a depth/stencil format,  finalLayout must not be  If the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts feature is not enabled,  initialLayout must not be , ,  or  If the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts feature is not enabled,  finalLayout must not be , ,  or If format is a color format,  initialLayout must not be , ,  or If format is a color format,  finalLayout must not be , ,  or If formatS is a depth/stencil format which includes both depth and stencil aspects, and  initialLayout is  or  , the pNext chain must include a = structureIf formatS is a depth/stencil format which includes both depth and stencil aspects, and  finalLayout is  or  , the pNext chain must include a = structureIf formatF is a depth/stencil format which includes only the depth aspect,  initialLayout must not be  or If formatF is a depth/stencil format which includes only the depth aspect,  finalLayout must not be  or If formatH is a depth/stencil format which includes only the stencil aspect,  initialLayout must not be  or If formatH is a depth/stencil format which includes only the stencil aspect,  finalLayout must not be  or Valid Usage (Implicit)sType must be H flags must be a valid combination of 2 valuesformat must be a valid J valuesamples must be a valid a valueloadOp must be a valid  valuestoreOp must be a valid y value stencilLoadOp must be a valid  valuestencilStoreOp must be a valid y value initialLayout must be a valid N value finalLayout must be a valid N valueSee Also, , y, J, N, /, a, 0vulkancontents is a gI value specifying how the commands in the next subpass will be provided.contents must be a valid g value0vulkanpNext is NULL6 or a pointer to a structure extending this structure.0vulkanflags is reserved for future use.1vulkan pAttachments is a pointer to an array of attachmentCount 1@ structures describing the attachments used by the render pass.1vulkan pSubpasses is a pointer to an array of  subpassCount ,$ structures describing each subpass.1vulkan pDependencies is a pointer to an array of dependencyCount 6%@ structures describing dependencies between pairs of subpasses.1vulkanpCorrelatedViewMasksG is a pointer to an array of view masks indicating sets of views that may* be more efficient to render concurrently.1vulkan srcSubpassB is the subpass index of the first subpass in the dependency, or .1vulkan dstSubpassC is the subpass index of the second subpass in the dependency, or .1vulkan srcStageMask is a bitmask of  specifying the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-maskssource stage mask.1vulkan dstStageMask is a bitmask of  specifying the shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masksdestination stage mask1 vulkan srcAccessMask is a bitmask of  specifying a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-maskssource access mask.1 vulkan dstAccessMask is a bitmask of  specifying a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masksdestination access mask.1 vulkandependencyFlags is a bitmask of 0.1 vulkan viewOffset\ controls which views in the source subpass the views in the destination subpass depend on.1vulkanpNext is NULL6 or a pointer to a structure extending this structure.1vulkanflags is a bitmask of A-" specifying usage of the subpass.1vulkanpipelineBindPoint is a V@ value specifying the pipeline type supported for this subpass.1vulkanviewMask| is a bitfield of view indices describing which views rendering is broadcast to in this subpass, when multiview is enabled.1vulkanpInputAttachments is a pointer to an array of 0P structures defining the input attachments for this subpass and their layouts.1vulkanpColorAttachments is a pointer to an array of 0P structures defining the color attachments for this subpass and their layouts.1vulkanpResolveAttachments is an optional array of colorAttachmentCount 0Q structures defining the resolve attachments for this subpass and their layouts.1vulkanpDepthStencilAttachment is a pointer to a 0U structure specifying the depth/stencil attachment for this subpass and its layout.1vulkanpPreserveAttachments is a pointer to an array of preserveAttachmentCounto render pass attachment indices identifying attachments that are not used by this subpass, but whose contents must& be preserved throughout the subpass.1vulkanpNext is NULL6 or a pointer to a structure extending this structure.1vulkan attachmentV is either an integer value identifying an attachment at the corresponding index in 67:: pAttachments, or l. to signify that this attachment is not used.1vulkanlayout is a NE value specifying the layout the attachment uses during the subpass.1vulkan aspectMask is a mask of which aspect(s) canB be accessed within the specified subpass as an input attachment.1vulkanpNext is NULL6 or a pointer to a structure extending this structure.1vulkanflags is a bitmask of 25 specifying additional properties of the attachment.1vulkanformat is a JP value specifying the format of the image that will be used for the attachment.1 vulkansamples6 is the number of samples of the image as defined in a.1!vulkanloadOp is a  value specifying how the contents of color and depth components of the attachment are treated at the beginning of the subpass where it is first used.1"vulkanstoreOp is a y value specifying how the contents of color and depth components of the attachment are treated at the end of the subpass where it is last used.1#vulkan stencilLoadOp is a  value specifying how the contents of stencil components of the attachment are treated at the beginning of the subpass where it is first used.1$vulkanstencilStoreOp is a y value specifying how the contents of stencil components of the attachment are treated at the end of the last subpass where it is used.1%vulkan initialLayout_ is the layout the attachment image subresource will be in when a render pass instance begins.1&vulkan finalLayoutj is the layout the attachment image subresource will be transitioned to when a render pass instance ends.1'vulkan5vkCreateRenderPass2 - Create a new render pass object Description+This command is functionally identical to 67, but includes extensible sub-structures that include sType and pNext7 parameters, allowing them to be more easily extended.Valid Usage (Implicit)device must be a valid  handle pCreateInfo must$ be a valid pointer to a valid / structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pRenderPass must be a valid pointer to a x handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , x, /1(vulkan/vkCmdBeginRenderPass2 - Begin a new render pass DescriptionAfter beginning a render pass instance, the command buffer is ready to record the commands for the first subpass of that render pass. Valid Usage Both the  framebuffer and  renderPass members of pRenderPassBegin must$ have been created on the same  that  commandBuffer was allocated onIf any of the  initialLayout or  finalLayout member of the 6 structures or the layout member of the 6kO structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is \ then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including wIf any of the  initialLayout or  finalLayout member of the 6 structures or the layout member of the 6kO structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is n, o, , or m\ then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including eIf any of the  initialLayout or  finalLayout member of the 6 structures or the layout member of the 6kO structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is , or , , or \ then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including eIf any of the stencilInitialLayout or stencilFinalLayout member of the = structures or the  stencilLayout member of the <O structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is , or \ then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including eIf any of the  initialLayout or  finalLayout member of the 6 structures or the layout member of the 6kO structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is \ then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including v or fIf any of the  initialLayout or  finalLayout member of the 6 structures or the layout member of the 6kO structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is \ then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including uIf any of the  initialLayout or  finalLayout member of the 6 structures or the layout member of the 6kO structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is \ then the corresponding attachment image view of the framebuffer specified in the  framebuffer member of pRenderPassBegin must have been created with a usage value including tIf any of the  initialLayout members of the 6J structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is not p, then each such  initialLayout must be equal to the current layout of the corresponding attachment image subresource of the framebuffer specified in the  framebuffer member of pRenderPassBeginThe  srcStageMask and  dstStageMask$ members of any element of the  pDependencies member of 67 used to create  renderPass mustM be supported by the capabilities of the queue family identified by the queueFamilyIndex member of the  , used to create the command pool which  commandBuffer was allocated fromFor any attachment in  framebuffer that is used by  renderPass^ and is bound to memory locations that are also bound to another attachment used by  renderPasse, and if at least one of those uses causes either attachment to be written to, both attachments must have had the ' setEach element of the  pAttachments of  framebuffer/ that is referenced by any element of the pInputAttachments of any element of  pSubpasses of  renderPass must have  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresimage view format features contain at least g or gEach element of the  pAttachments of  framebuffer/ that is referenced by any element of the pColorAttachments of any element of  pSubpasses of  renderPass must have  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresimage view format features contain gEach element of the  pAttachments of  framebuffer/ that is referenced by any element of the pResolveAttachments of any element of  pSubpasses of  renderPass must have  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresimage view format features contain gEach element of the  pAttachments of  framebuffer/ that is referenced by any element of the pDepthStencilAttachment of any element of  pSubpasses of  renderPass must have  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresimage view format features contain gValid Usage (Implicit) commandBuffer must be a valid  handlepRenderPassBegin must$ be a valid pointer to a valid  structurepSubpassBeginInfo must$ be a valid pointer to a valid . structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations This command must1 only be called outside of a render pass instance commandBuffer must be a primary Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type | Primary x Outside w Graphics  Graphics See Also, , .1)vulkan>This function will call the supplied action between calls to 1( and 1+ Note that 1+@ is *not* called if an exception is thrown by the inner action.1*vulkanCvkCmdNextSubpass2 - Transition to the next subpass of a render pass Description1* is semantically identical to *, except that it is extensible, and that contentsP is provided as part of an extensible structure instead of as a flat parameter. Valid UsageThe current subpass index mustG be less than the number of subpasses in the render pass minus one This command must7 not be recorded when transform feedback is activeValid Usage (Implicit) commandBuffer must be a valid  handlepSubpassBeginInfo must$ be a valid pointer to a valid . structurepSubpassEndInfo must$ be a valid pointer to a valid + structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations This command must0 only be called inside of a render pass instance commandBuffer must be a primary Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type | Primary x Inside w Graphics  Graphics See Also, ., +1+vulkan1vkCmdEndRenderPass2 - End the current render pass Description1+ is semantically identical to  , except that it is extensible. Valid UsageThe current subpass index mustF be equal to the number of subpasses in the render pass minus one This command must7 not be recorded when transform feedback is activeValid Usage (Implicit) commandBuffer must be a valid  handlepSubpassEndInfo must$ be a valid pointer to a valid + structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe /E that  commandBuffer was allocated from must support graphics operations This command must0 only be called inside of a render pass instance commandBuffer must be a primary Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the /E that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type | Primary x Inside w Graphics  Graphics See Also, +1'vulkandevice4 is the logical device that creates the render pass.vulkan pCreateInfo is a pointer to a /9 structure describing the parameters of the render pass.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.1(vulkan commandBuffer6 is the command buffer in which to record the command.vulkanpRenderPassBegin is a pointer to a g structure specifying the render pass to begin an instance of, and the framebuffer the instance uses.vulkanpSubpassBeginInfo is a pointer to a .X structure containing information about the subpass which is about to begin rendering.1*vulkan commandBuffer6 is the command buffer in which to record the command.vulkanpSubpassBeginInfo is a pointer to a .X structure containing information about the subpass which is about to begin rendering.vulkanpSubpassEndInfo is a pointer to a +P structure containing information about how the previous subpass will be ended.1+vulkan commandBufferI is the command buffer in which to end the current render pass instance.vulkanpSubpassEndInfo is a pointer to a +P structure containing information about how the previous subpass will be ended.+0,1 111111111-111111 1 1 1 .00/000111101111111111 11!1"1#1$1%1&~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      1'1(1)1*1+1'1(1)1*1+11111 11!1"1#1$1%1&011111,1 111111111-111111 1 1 1 /0001111.00+0~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      None("#%&'-./1789;=>?FHIMSUVX_dghklmq1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1j1i1h1g1f1e1d1k1l1m1n1a1`1_1^1]1\1[1Z1c1Y1bdNone("#%&'-./1789;=>?FHIMSUVX_dghklmq4J 2vulkannVkSubpassDescriptionDepthStencilResolve - Structure specifying depth/stencil resolve operations for a subpass Valid UsageIf pDepthStencilResolveAttachment is not NULL" and does not have the value l, pDepthStencilAttachment must not have the value l If pDepthStencilResolveAttachment is not NULL" and does not have the value l, depthResolveMode and stencilResolveMode must not both be  If pDepthStencilResolveAttachment is not NULL" and does not have the value l, pDepthStencilAttachment must! not have a sample count of %If pDepthStencilResolveAttachment is not NULL" and does not have the value l, pDepthStencilResolveAttachment must have a sample count of %If pDepthStencilResolveAttachment is not NULL" and does not have the value l then it must+ have a format whose features contain gIf the  of pDepthStencilResolveAttachment& has a depth component, then the  of pDepthStencilAttachment mustL have a depth component with the same number of bits and numerical typeIf the  of pDepthStencilResolveAttachment( has a stencil component, then the  of pDepthStencilAttachment mustN have a stencil component with the same number of bits and numerical type The value of depthResolveMode must be one of the bits set in 3::supportedDepthResolveModes or   The value of stencilResolveMode must be one of the bits set in 3::supportedStencilResolveModes or  If the  of pDepthStencilResolveAttachment2 has both depth and stencil components, 3::independentResolve is . , and 3::independentResolveNone is ., then the values of depthResolveMode and stencilResolveMode must be identicalIf the  of pDepthStencilResolveAttachment2 has both depth and stencil components, 3::independentResolve is . and 3::independentResolveNone is ., then the values of depthResolveMode and stencilResolveMode must" be identical or one of them must be  Valid Usage (Implicit)sType must be ZdepthResolveMode must be a valid   valuestencilResolveMode must be a valid   valueIf pDepthStencilResolveAttachment is not NULL, pDepthStencilResolveAttachment must) be a valid pointer to a valid 0 structureSee Also0,  , 3vulkanVkPhysicalDeviceDepthStencilResolveProperties - Structure describing depth/stencil resolve properties that can be supported by an implementationMembersThe members of the 3C structure describe the following implementation-dependent limits:Valid Usage (Implicit)See Alsoo,  , 1pvulkandepthResolveMode is a bitmask of  $ describing the depth resolve mode.1qvulkanstencilResolveMode is a bitmask of  & describing the stencil resolve mode.1rvulkanpDepthStencilResolveAttachment is an optional 6kZ structure defining the depth/stencil resolve attachment for this subpass and its layout.1tvulkansupportedDepthResolveModes is a bitmask of  8 indicating the set of supported depth resolve modes.   must, be included in the set but implementations may support additional modes.1uvulkansupportedStencilResolveModes is a bitmask of  : indicating the set of supported stencil resolve modes.   must, be included in the set but implementations may support additional modes.   must not be included in the set.1vvulkanindependentResolveNone is .~ if the implementation supports setting the depth and stencil resolve modes to different values when one of those modes is  S. Otherwise the implementation only supports setting both modes to the same value.1wvulkanindependentResolve is . if the implementation supports all combinations of the supported depth and stencil resolve modes, including setting either depth or stencil resolve mode to  #. An implementation that supports independentResolve must also support independentResolveNone.21o1p1q1r31s1t1u1v1w~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!              31s1t1u1v1w21o1p1q1r~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!                   None("#%&'-./1789;=>?FHIMSUVX_dghklmqK$1111111111111111111111111111113None("#%&'-./1789;=>?FHIMSUVX_dghklmqMu+v#w(xz576{!|)}~*;=<>@?,- $89:1&'0243./JKLMNOPQRSTUV g hW$K$LX$M$NYZ[\]^_`abcdehifghijklmn S ToQRpqrst56789:;<=>?@ABCu ; < =vwxyz{|}~_rqp`abcdefghijklm + ,+`+a+h+i+U+V+f+g+b+c+e+d+W+X+Y+Z+[+\+]+^+_         mnopklEMLKJFG   00000000$"$$$'$#$%$&$($+$*$)$$!$ #####################################$$$$$#####c####d#####z#|##{#}#~#####q#r#v#s#t#u#i#m#j#k#l#n#o#p#w#x#y  #D#E#F#G""######""""""""""""""*}*~CD@AB**********   ~  """""""""""""""""""v"w,,,,,,,,,,,,,,,,,, q r F G H I J K L M N O P Q D E 0 1 . /"^"_"`   !    "2"3"0"1"4"5Z\[`cabdefWXYTVUNOPQRSLM]_^      v w x y z { | } ~ -.21/0"""""" !"#$%yz&!!!'(!!!)*+,-!!.!!!/!!!0!!!!!!123456789:;<=>?@A!!>!=B!/!0C!3!5!4D!+!,E!'!*!(!)F!-!.G!%!&H!1!2IlmJ !!K L ) . * , 1 + - / 0M H I M J K L N ON E F GO 2 3 4 5 6 7 8 9 : ;P ? @ AQ B C DR < = >S    TUV......W...X....YZ[\.W.X].T.U.V^.]._.`.^_.Y.\.Z.[`ab...c......d....e.....f g h i j klmnoOPQRpVWXqSTUrs!"t#$%uv wxyz{|}~//( (((((((( (((( ((((((((((((((((((((((((:(;(o(p(q(r(s(w(u(v(t(((((((((((((((((((((((x(z(y({(|(}(~(((((((((((((( ("(#(!($(%('(((&()(*(,(-(+(.((((((/(0(((((3(6(4(8(5(7(9(h(k(l(i(j(m(n(^(a(_(`(b(d(c(e(f(g(1(2(C(F(H(E(D(G(I(L(K(N(J(M(O(P(S(Q(R(T(U(Y(X(V(W(Z([(\(](<(=(>(?(@(A(BABC45[uwvxyz{|}~oqprstjk\]^_`lmnghiacfdebpqrsXYZABC*+,qrstnpo'(Z[\VXYW   'm'n'''''''''''''j'l'k']'_'`'^'a'b'c'd'e'f'g'h'i'X'Y'Z'['\'|'}'~''y'{'z'F'H'G'I'J'K'M'L'N'O'P'Q'R'S'T'U'V'W'o'q'r'p'w'x's'u't'v......!. ........=.?.>.:.;.<     stuvwxyz{|}~pqr)*****)))))))))))))))))))))))))))))))))))))))))))))))))))))}~ !"#$[\%]^&pq'[\](YZ)*+,-./  012   3456789/0312:,-.;<=>?@ABCDFGECDE  %$#" !34DEMNOPVUSTdefgnmljk&'()=<;:9876*+45WX^_nors{|  %&)*2367?@DEMNYZjknowx{|        " # $ , - 2 3 B C R S o p s t | } ) * - . 6 7 8 9 : > ? N O P Q R U V e f i j } ~       : ; < = > ? @ A Y Z [ \ ] ^     t u 456789:;<=>?@A  ./0123>?EFGH*+,-./0123456789:;<=>?@jklmnopqrst%&'()*+,-./0123456789:VWXYZ[\]^_`a"! #$%YZ_`ano -,+*)('&%$#10/.!"2TU]^_lmuvwx)(/.-,+*:9876543210=<;     &'>?@A   ()*+,;:9876534<JKghij#!"$%&CDHINO]^nos     QRSTUVWXYZ[\]^_`abcdefghijqrstuvwx !"#6789:;<=>?@&'()-./=>?@DEFTUVW[\]klmnotuvw     ABHIVWXYZ      ! " # $ U T S R % & ' ( P Q V W X Y Z [ \ !!!!!!!!!<!;!:!9!8!!!@!?!!!A!!!B!! !!!"!#!$!6!7!C!D!E!F!G!H!I!J!K!L!M!!!!!!!!!!!!!!!!!!!!!!!!!"" """ " " " """"+","-"."/"6"7"8"9":";"<"Y"Z"["\"]"a"b"c"r"s"t"u"x"y"z""""""""""""""""""""""""""""""#""# ""# # # ### ####?#@#A#B#C#H#I#J#K#Z#[#\#]#^#_#`#a#b#e#f#g#h#####################$$$$$ $$$,$-$.$/$0$1$2$C$D$E$F$G$H$I$J$O$P$Q%%%%%%%%%%%%%%%%%%% %!%:%;%<%=%>%?%@%A%B%C%D%%%%%%%%%%%%%%%%'<'='>'?'''''''''@'A'B''C'D'E''''''''''''((( ( (((((((((((((((((((((((((((((((((((((())))))))))))))))))***** * * * * ******************* *!*"*#*$*%*&*'*(*)***+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*{*|******************+S+T+j+k+l+m+++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,, , , , , ,,,,,,,,,,,,,,,,,,, ,!,",,,,,...........".6.7.8.9.@.A.B.Q.R.S.a.b.c.d................/O/P/Q/R/S/T/U/V/W/X/Y/Z/[/\/]/^/_/`/a/b/c/d/e/f/g/h/i/j/k///0000 0 0 0 0000000000000.0/0001020304050600001Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n111111111111111[None("#%&'-./1789;=>?FHIMSUVX_dghklmqʡSvulkan~VkPhysicalDeviceVulkan12Properties - Structure specifying physical device properties for functionality promoted to Vulkan 1.2 DescriptionThe members of  must8 have the same values as the corresponding members of 4, @, , 3, ", and F.Valid Usage (Implicit)See Alsoo, 5, ,  , `, _, vulkan{VkPhysicalDeviceVulkan12Features - Structure describing the Vulkan 1.2 features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionsamplerMirrorClampToEdge= indicates whether the implementation supports the %4E sampler address mode. If this feature is not enabled, the %4 sampler address mode must not be used..drawIndirectCount= indicates whether the implementation supports the  and A functions. If this feature is not enabled, these functions must not be used.storageBuffer8BitAccess' indicates whether objects in the  StorageBuffer or PhysicalStorageBuffer storage class with the Block decoration canX have 8-bit integer members. If this feature is not enabled, 8-bit integer members mustN not be used in such objects. This also indicates whether shader modules can declare the StorageBuffer8BitAccess capability.!uniformAndStorageBuffer8BitAccess' indicates whether objects in the Uniform storage class with the Block decoration and in the  StorageBuffer or PhysicalStorageBuffer- storage class with the same decoration canX have 8-bit integer members. If this feature is not enabled, 8-bit integer members mustN not be used in such objects. This also indicates whether shader modules can declare the !UniformAndStorageBuffer8BitAccess capability.storagePushConstant8' indicates whether objects in the  PushConstant storage class canX have 8-bit integer members. If this feature is not enabled, 8-bit integer members mustS not be used in such objects. This also indicates whether shader modules can declare the StoragePushConstant8 capability.shaderBufferInt64Atomics indicates whether shaders canN support 64-bit unsigned and signed integer atomic operations on buffers.shaderSharedInt64Atomics indicates whether shaders canY support 64-bit unsigned and signed integer atomic operations on shared memory. shaderFloat16| indicates whether 16-bit floats (halfs) are supported in shader code. This also indicates whether shader modules can declare the Float16h capability. However, this only enables a subset of the storage classes that SPIR-V allows for the Float16G SPIR-V capability: Declaring and using 16-bit floats in the Private,  Workgroup, and Functiond storage classes is enabled, while declaring them in the interface storage classes (e.g., UniformConstant, Uniform,  StorageBuffer, Input, Output , and  PushConstant) is not enabled. shaderInt8 indicates whether 8-bit integers (signed and unsigned) are supported in shader code. This also indicates whether shader modules can declare the Int8m capability. However, this only enables a subset of the storage classes that SPIR-V allows for the Int8C SPIR-V capability: Declaring and using 8-bit integers in the Private,  Workgroup, and Functiond storage classes is enabled, while declaring them in the interface storage classes (e.g., UniformConstant, Uniform,  StorageBuffer, Input, Output , and  PushConstant) is not enabled.descriptorIndexing} indicates whether the implementation supports the minimum set of descriptor indexing features as described in the  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-requirementsFeature Requirements section. Enabling the descriptorIndexing member when   is called does not imply the other minimum descriptor indexing features are also enabled. Those other descriptor indexing features must; be enabled individually as needed by the application.)shaderInputAttachmentArrayDynamicIndexing4 indicates whether arrays of input attachments can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of o^ must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the #InputAttachmentArrayDynamicIndexing capability.,shaderUniformTexelBufferArrayDynamicIndexing8 indicates whether arrays of uniform texel buffers can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of o must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the &UniformTexelBufferArrayDynamicIndexing capability.,shaderStorageTexelBufferArrayDynamicIndexing8 indicates whether arrays of storage texel buffers can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of o must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the &StorageTexelBufferArrayDynamicIndexing capability.*shaderUniformBufferArrayNonUniformIndexing2 indicates whether arrays of uniform buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of o or o must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the $UniformBufferArrayNonUniformIndexing capability.)shaderSampledImageArrayNonUniformIndexing= indicates whether arrays of samplers or sampled images can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of o, ob, or oa must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the #SampledImageArrayNonUniformIndexing capability.*shaderStorageBufferArrayNonUniformIndexing2 indicates whether arrays of storage buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of o or o must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the $StorageBufferArrayNonUniformIndexing capability.)shaderStorageImageArrayNonUniformIndexing1 indicates whether arrays of storage images can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of o` must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the #StorageImageArrayNonUniformIndexing capability.,shaderInputAttachmentArrayNonUniformIndexing4 indicates whether arrays of input attachments can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of o^ must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the &InputAttachmentArrayNonUniformIndexing capability./shaderUniformTexelBufferArrayNonUniformIndexing8 indicates whether arrays of uniform texel buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of o must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the )UniformTexelBufferArrayNonUniformIndexing capability./shaderStorageTexelBufferArrayNonUniformIndexing8 indicates whether arrays of storage texel buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of o must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the )StorageTexelBufferArrayNonUniformIndexing capability.-descriptorBindingUniformBufferUpdateAfterBind indicates whether the implementation supports updating uniform buffer descriptors after a set is bound. If this feature is not enabled, 2 must not be used with o.,descriptorBindingSampledImageUpdateAfterBind indicates whether the implementation supports updating sampled image descriptors after a set is bound. If this feature is not enabled, 2 must not be used with o, ob, or oa.,descriptorBindingStorageImageUpdateAfterBind indicates whether the implementation supports updating storage image descriptors after a set is bound. If this feature is not enabled, 2 must not be used with o`.-descriptorBindingStorageBufferUpdateAfterBind indicates whether the implementation supports updating storage buffer descriptors after a set is bound. If this feature is not enabled, 2 must not be used with o.2descriptorBindingUniformTexelBufferUpdateAfterBind indicates whether the implementation supports updating uniform texel buffer descriptors after a set is bound. If this feature is not enabled, 2 must not be used with o.2descriptorBindingStorageTexelBufferUpdateAfterBind indicates whether the implementation supports updating storage texel buffer descriptors after a set is bound. If this feature is not enabled, 2 must not be used with o.)descriptorBindingUpdateUnusedWhilePending indicates whether the implementation supports updating descriptors while the set is in use. If this feature is not enabled, 2  must not be used.descriptorBindingPartiallyBound indicates whether the implementation supports statically using a descriptor set binding in which some descriptors are not valid. If this feature is not enabled, 2  must not be used.(descriptorBindingVariableDescriptorCount indicates whether the implementation supports descriptor sets with a variable-sized last binding. If this feature is not enabled, 25 must not be used.runtimeDescriptorArray? indicates whether the implementation supports the SPIR-V RuntimeDescriptorArray> capability. If this feature is not enabled, descriptors must( not be declared in runtime arrays.samplerFilterMinmax indicates whether the implementation supports a minimum set of required formats supporting min/max filtering as defined by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-filterMinmaxSingleComponentFormats-minimum-requirements"filterMinmaxSingleComponentFormatsR property minimum requirements. If this feature is not enabled, then no =? pNext chain can include a ! structure.scalarBlockLayoute indicates that the implementation supports the layout of resource blocks in shaders using  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-alignment-requirementsscalar alignment.imagelessFramebuffer indicates that the implementation supports specifying the image view for attachments at render pass begin time via 7.uniformBufferStandardLayout indicates that the implementation supports the same layouts for uniform buffers as for storage and other kinds of buffers. See  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources-standard-layoutStandard Buffer Layout.shaderSubgroupExtendedTypes is a boolean that specifies whether subgroup operations can use 8-bit integer, 16-bit integer, 64-bit integer, 16-bit floating-point, and vectors of these types in  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operationsgroup operations with  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroupsubgroup scope.if the implementation supports the types.separateDepthStencilLayouts6 indicates whether the implementation supports a 5W6 for a depth/stencil image with only one of dx or dy set, and whether , , , or  can be used.hostQueryReset[ indicates that the implementation supports resetting queries from the host with .timelineSemaphore2 indicates whether semaphores created with a  of  are supported.bufferDeviceAddress indicates that the implementation supports accessing buffer memory in shaders as storage buffers via an address queried from ,. bufferDeviceAddressCaptureReplay indicates that the implementation supports saving and reusing buffer and device addresses, e.g. for trace capture and replay.bufferDeviceAddressMultiDevice5 indicates that the implementation supports the bufferDeviceAddress and  rayTracing features for logical devices created with multiple physical devices. If this feature is not supported, buffer and acceleration structure addresses mustT not be queried on a logical device created with more than one physical device.vulkanMemoryModelQ indicates whether the Vulkan Memory Model is supported, as defined in  Zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-modelVulkan Memory Model2. This also indicates whether shader modules can declare the VulkanMemoryModel capability.vulkanMemoryModelDeviceScope8 indicates whether the Vulkan Memory Model can use /H scope synchronization. This also indicates whether shader modules can declare the VulkanMemoryModelDeviceScope capability.-vulkanMemoryModelAvailabilityVisibilityChains= indicates whether the Vulkan Memory Model can use  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-model-availability-visibility"availability and visibility chains! with more than one element.shaderOutputViewportIndex8 indicates whether the implementation supports the ShaderViewportIndex> SPIR-V capability enabling variables decorated with the  ViewportIndexw built-in to be exported from vertex or tessellation evaluation shaders. If this feature is not enabled, the  ViewportIndex built-in decoration mustJ not be used on outputs in vertex or tessellation evaluation shaders.shaderOutputLayer8 indicates whether the implementation supports the  ShaderLayer> SPIR-V capability enabling variables decorated with the Layerr built-in to be exported from vertex or tessellation evaluation shaders. If this feature is not enabled, the Layer built-in decoration mustJ not be used on outputs in vertex or tessellation evaluation shaders.If subgroupBroadcastDynamicId is ., the Id  operand of OpGroupNonUniformBroadcast canP be dynamically uniform within a subgroup, and the Index  operand of OpGroupNonUniformQuadBroadcast canH be dynamically uniform within the derivative group. If it is ., these operands must be constants.If the  structure is included in the pNext chain of TK, it is filled with values indicating whether each feature is supported.  can also be used in the pNext chain of   to enable the features.Valid Usage (Implicit)sType must be ESee Alsoo, vulkan~VkPhysicalDeviceVulkan11Properties - Structure specifying physical device properties for functionality promoted to Vulkan 1.1 DescriptionThe members of  must8 have the same values as the corresponding members of P, E, U, W, D, and V.Valid Usage (Implicit)See Alsoo, m, , b, ,  _vulkan{VkPhysicalDeviceVulkan11Features - Structure describing the Vulkan 1.1 features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TK, it is filled with values indicating whether each feature is supported.  can also be used in the pNext chain of   to enable the features.Valid Usage (Implicit)See Alsoo, 1vulkandriverID> is a unique identifier for the driver of the physical device.1vulkan driverName is an array of  charL containing a null-terminated UTF-8 string which is the name of the driver.1vulkan driverInfo is an array of  charZ containing a null-terminated UTF-8 string with additional information about the driver.1vulkanconformanceVersionX is the version of the Vulkan conformance test this driver is conformant against (see 5).1vulkandenormBehaviorIndependence is a _h value indicating whether, and how, denorm behavior can be set independently for different bit widths.1vulkanroundingModeIndependence is a _g value indicating whether, and how, rounding modes can be set independently for different bit widths.1vulkan%shaderSignedZeroInfNanPreserveFloat16A is a boolean value indicating whether sign of a zero, Nans and  \pm\infty canU be preserved in 16-bit floating-point computations. It also indicates whether the SignedZeroInfNanPreserve execution mode can* be used for 16-bit floating-point types.1vulkan%shaderSignedZeroInfNanPreserveFloat32A is a boolean value indicating whether sign of a zero, Nans and  \pm\infty canU be preserved in 32-bit floating-point computations. It also indicates whether the SignedZeroInfNanPreserve execution mode can* be used for 32-bit floating-point types.1vulkan%shaderSignedZeroInfNanPreserveFloat64A is a boolean value indicating whether sign of a zero, Nans and  \pm\infty canU be preserved in 64-bit floating-point computations. It also indicates whether the SignedZeroInfNanPreserve execution mode can* be used for 64-bit floating-point types.1vulkanshaderDenormPreserveFloat162 is a boolean value indicating whether denormals canT be preserved in 16-bit floating-point computations. It also indicates whether the DenormPreserve execution mode can* be used for 16-bit floating-point types.1vulkanshaderDenormPreserveFloat322 is a boolean value indicating whether denormals canT be preserved in 32-bit floating-point computations. It also indicates whether the DenormPreserve execution mode can* be used for 32-bit floating-point types.1vulkanshaderDenormPreserveFloat642 is a boolean value indicating whether denormals canT be preserved in 64-bit floating-point computations. It also indicates whether the DenormPreserve execution mode can* be used for 64-bit floating-point types.1vulkanshaderDenormFlushToZeroFloat162 is a boolean value indicating whether denormals canZ be flushed to zero in 16-bit floating-point computations. It also indicates whether the DenormFlushToZero execution mode can) be used for 16-bit floating-point types.1vulkanshaderDenormFlushToZeroFloat322 is a boolean value indicating whether denormals canZ be flushed to zero in 32-bit floating-point computations. It also indicates whether the DenormFlushToZero execution mode can) be used for 32-bit floating-point types.1vulkanshaderDenormFlushToZeroFloat642 is a boolean value indicating whether denormals canZ be flushed to zero in 64-bit floating-point computations. It also indicates whether the DenormFlushToZero execution mode can) be used for 64-bit floating-point types.1vulkanshaderRoundingModeRTEFloat16 is a boolean value indicating whether an implementation supports the round-to-nearest-even rounding mode for 16-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTE execution mode can* be used for 16-bit floating-point types.1vulkanshaderRoundingModeRTEFloat32 is a boolean value indicating whether an implementation supports the round-to-nearest-even rounding mode for 32-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTE execution mode can* be used for 32-bit floating-point types.1vulkanshaderRoundingModeRTEFloat64 is a boolean value indicating whether an implementation supports the round-to-nearest-even rounding mode for 64-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTE execution mode can* be used for 64-bit floating-point types.1vulkanshaderRoundingModeRTZFloat16 is a boolean value indicating whether an implementation supports the round-towards-zero rounding mode for 16-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTZ execution mode can* be used for 16-bit floating-point types.1vulkanshaderRoundingModeRTZFloat32 is a boolean value indicating whether an implementation supports the round-towards-zero rounding mode for 32-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTZ execution mode can* be used for 32-bit floating-point types.1vulkanshaderRoundingModeRTZFloat64 is a boolean value indicating whether an implementation supports the round-towards-zero rounding mode for 64-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTZ execution mode can* be used for 64-bit floating-point types.1vulkan'maxUpdateAfterBindDescriptorsInAllPoolsO is the maximum number of descriptors (summed over all descriptor types) that can9 be created across all pools that are created with the q bit set. Pool creation may fail when this limit is exceeded, or when the space this limit represents is unable to satisfy a pool creation due to fragmentation.1vulkan0shaderUniformBufferArrayNonUniformIndexingNativeu is a boolean value indicating whether uniform buffer descriptors natively support nonuniform indexing. If this is .k, then a single dynamic instance of an instruction that nonuniformly indexes an array of uniform buffers may@ execute multiple times in order to access all the descriptors.1vulkan/shaderSampledImageArrayNonUniformIndexingNativex is a boolean value indicating whether sampler and image descriptors natively support nonuniform indexing. If this is .n, then a single dynamic instance of an instruction that nonuniformly indexes an array of samplers or images may@ execute multiple times in order to access all the descriptors.1vulkan0shaderStorageBufferArrayNonUniformIndexingNativeu is a boolean value indicating whether storage buffer descriptors natively support nonuniform indexing. If this is .k, then a single dynamic instance of an instruction that nonuniformly indexes an array of storage buffers may@ execute multiple times in order to access all the descriptors.1vulkan/shaderStorageImageArrayNonUniformIndexingNativet is a boolean value indicating whether storage image descriptors natively support nonuniform indexing. If this is .j, then a single dynamic instance of an instruction that nonuniformly indexes an array of storage images may@ execute multiple times in order to access all the descriptors.1vulkan2shaderInputAttachmentArrayNonUniformIndexingNativew is a boolean value indicating whether input attachment descriptors natively support nonuniform indexing. If this is .m, then a single dynamic instance of an instruction that nonuniformly indexes an array of input attachments may@ execute multiple times in order to access all the descriptors.1vulkan!robustBufferAccessUpdateAfterBind) is a boolean value indicating whether  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobustBufferAccess can- be enabled in a device simultaneously with -descriptorBindingUniformBufferUpdateAfterBind, -descriptorBindingStorageBufferUpdateAfterBind, 2descriptorBindingUniformTexelBufferUpdateAfterBind , and/or 2descriptorBindingStorageTexelBufferUpdateAfterBind. If this is ., then either robustBufferAccess must8 be disabled or all of these update-after-bind features must be disabled.1vulkanquadDivergentImplicitLod is a boolean value indicating whether implicit level of detail calculations for image operations have well-defined results when the image and/or sampler objects used for the instruction are not uniform within a quad. See  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-derivative-image-operationsDerivative Image Operations.1vulkan,maxPerStageDescriptorUpdateAfterBindSamplers is similar to maxPerStageDescriptorSamplersK but counts descriptors from descriptor sets created with or without the p bit set.1vulkan2maxPerStageDescriptorUpdateAfterBindUniformBuffers is similar to #maxPerStageDescriptorUniformBuffersK but counts descriptors from descriptor sets created with or without the p bit set.1vulkan2maxPerStageDescriptorUpdateAfterBindStorageBuffers is similar to #maxPerStageDescriptorStorageBuffersK but counts descriptors from descriptor sets created with or without the p bit set.1vulkan1maxPerStageDescriptorUpdateAfterBindSampledImages is similar to "maxPerStageDescriptorSampledImagesK but counts descriptors from descriptor sets created with or without the p bit set.1vulkan1maxPerStageDescriptorUpdateAfterBindStorageImages is similar to "maxPerStageDescriptorStorageImagesK but counts descriptors from descriptor sets created with or without the p bit set.1vulkan4maxPerStageDescriptorUpdateAfterBindInputAttachments is similar to %maxPerStageDescriptorInputAttachmentsK but counts descriptors from descriptor sets created with or without the p bit set.1vulkan#maxPerStageUpdateAfterBindResources is similar to maxPerStageResourcesK but counts descriptors from descriptor sets created with or without the p bit set.1vulkan'maxDescriptorSetUpdateAfterBindSamplers is similar to maxDescriptorSetSamplersK but counts descriptors from descriptor sets created with or without the p bit set.1vulkan-maxDescriptorSetUpdateAfterBindUniformBuffers is similar to maxDescriptorSetUniformBuffersK but counts descriptors from descriptor sets created with or without the p bit set.1vulkan4maxDescriptorSetUpdateAfterBindUniformBuffersDynamic is similar to %maxDescriptorSetUniformBuffersDynamicK but counts descriptors from descriptor sets created with or without the p bit set.1vulkan-maxDescriptorSetUpdateAfterBindStorageBuffers is similar to maxDescriptorSetStorageBuffersK but counts descriptors from descriptor sets created with or without the p bit set.1vulkan4maxDescriptorSetUpdateAfterBindStorageBuffersDynamic is similar to %maxDescriptorSetStorageBuffersDynamicK but counts descriptors from descriptor sets created with or without the p bit set.1vulkan,maxDescriptorSetUpdateAfterBindSampledImages is similar to maxDescriptorSetSampledImagesK but counts descriptors from descriptor sets created with or without the p bit set.1vulkan,maxDescriptorSetUpdateAfterBindStorageImages is similar to maxDescriptorSetStorageImagesK but counts descriptors from descriptor sets created with or without the p bit set.1vulkan/maxDescriptorSetUpdateAfterBindInputAttachments is similar to  maxDescriptorSetInputAttachmentsK but counts descriptors from descriptor sets created with or without the p bit set.1vulkansupportedDepthResolveModes is a bitmask of 168 indicating the set of supported depth resolve modes. 17 must, be included in the set but implementations may support additional modes.1vulkansupportedStencilResolveModes is a bitmask of 16: indicating the set of supported stencil resolve modes. 17 must, be included in the set but implementations may support additional modes. 18 must not be included in the set.1vulkanindependentResolveNone is .~ if the implementation supports setting the depth and stencil resolve modes to different values when one of those modes is 1S. Otherwise the implementation only supports setting both modes to the same value.1vulkanindependentResolve is . if the implementation supports all combinations of the supported depth and stencil resolve modes, including setting either depth or stencil resolve mode to 1#. An implementation that supports independentResolve must also support independentResolveNone.1vulkan"filterMinmaxSingleComponentFormatsd is a boolean value indicating whether a minimum set of required formats support min/max filtering.1vulkan!filterMinmaxImageComponentMapping is a boolean value indicating whether the implementation supports non-identity component mapping of the image when doing min/max filtering.1vulkan#maxTimelineSemaphoreValueDifference indicates the maximum difference allowed by the implementation between the current value of a timeline semaphore and any pending signal or wait operations.1vulkan#framebufferIntegerColorSampleCounts is a bitmask of %9t indicating the color sample counts that are supported for all framebuffer color attachments with integer formats.1vulkan deviceUUID is an array of  uint8_tE values representing a universally unique identifier for the device.1vulkan driverUUID is an array of  uint8_t` values representing a universally unique identifier for the driver build in use by the device.1vulkan deviceLUID is an array of  uint8_tA values representing a locally unique identifier for the device.1vulkandeviceNodeMask is a uint32_t[ bitfield identifying the node within a linked device adapter corresponding to the device.1vulkandeviceLUIDValid" is a boolean value that will be . if  deviceLUID contains a valid LUID and deviceNodeMask" contains a valid node mask, and . if they do not.1vulkan subgroupSize9 is the default number of invocations in each subgroup.  subgroupSize? is at least 1 if any of the physical device s queues support H or H.  subgroupSize is a power-of-two.1vulkansubgroupSupportedStages is a bitfield of &K describing the shader stages that subgroup operations are supported in. subgroupSupportedStages will have the &: bit set if any of the physical device s queues support H.2vulkansubgroupSupportedOperations is a bitmask of 5:H specifying the sets of subgroup operations supported on this device. subgroupSupportedOperations will have the 5;: bit set if any of the physical device s queues support H or H.2vulkan!subgroupQuadOperationsInAllStages" is a boolean specifying whether  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroup-quadquad subgroup operationsQ are available in all stages, or are restricted to fragment and compute stages.2vulkanpointClippingBehavior is a O value specifying the point clipping behavior supported by the implementation.2vulkanmaxMultiviewViewCount2 is one greater than the maximum view index that can be used in a subpass.2vulkanmaxMultiviewInstanceIndex is the maximum valid value of instance index allowed to be generated by a drawing command recorded within a subpass of a multiview render pass instance.2vulkanprotectedNoFault4 specifies the behavior of the implementation when  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-protected-access-rulesprotected memory access rules are broken. If protectedNoFault is .N, breaking those rules will not result in process termination or device loss.2vulkanmaxPerSetDescriptors is a maximum number of descriptors (summed over all descriptor types) in a single descriptor set that is guaranteed to satisfy any implementation-dependent constraints on the size of a descriptor set itself. Applications canQ query whether a descriptor set that goes beyond this limit is supported using V.2vulkanmaxMemoryAllocationSize2 is the maximum size of a memory allocation that can@ be created, even if there is more space available in the heap.2 vulkanstorageBuffer16BitAccess# specifies whether objects in the  StorageBuffer or PhysicalStorageBuffer storage class with the Block decoration can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members mustJ not be used in such objects. This also specifies whether shader modules can declare the StorageBuffer16BitAccess capability.2 vulkan"uniformAndStorageBuffer16BitAccess# specifies whether objects in the Uniform storage class with the Block decoration and in the  StorageBuffer or PhysicalStorageBuffer) storage class with the same decoration can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members mustJ not be used in such objects. This also specifies whether shader modules can declare the "UniformAndStorageBuffer16BitAccess capability.2 vulkanstoragePushConstant16" specifies whether objects in the  PushConstant storage class can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or floating-point members mustJ not be used in such objects. This also specifies whether shader modules can declare the StoragePushConstant16 capability.2 vulkanstorageInputOutput16" specifies whether objects in the Input and Output storage classes can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members mustJ not be used in such objects. This also specifies whether shader modules can declare the StorageInputOutput16 capability.2 vulkan multiview specifies whether the implementation supports multiview rendering within a render pass. If this feature is not enabled, the view mask of each subpass must always be zero.2vulkanmultiviewGeometryShader` specifies whether the implementation supports multiview rendering within a render pass, with  Vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometrygeometry shadersi. If this feature is not enabled, then a pipeline compiled against a subpass with a non-zero view mask must not include a geometry shader.2vulkanmultiviewTessellationShader` specifies whether the implementation supports multiview rendering within a render pass, with  Zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellationtessellation shadersi. If this feature is not enabled, then a pipeline compiled against a subpass with a non-zero view mask must' not include any tessellation shaders.2vulkanvariablePointersStorageBuffer; specifies whether the implementation supports the SPIR-V VariablePointersStorageBuffer? capability. When this feature is not enabled, shader modules must not declare the SPV_KHR_variable_pointers extension or the VariablePointersStorageBuffer capability.2vulkanvariablePointers; specifies whether the implementation supports the SPIR-V VariablePointers? capability. When this feature is not enabled, shader modules must not declare the VariablePointers capability.2vulkanprotectedMemory1 specifies whether protected memory is supported.2vulkansamplerYcbcrConversion0 specifies whether the implementation supports  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversion. If samplerYcbcrConversion is .], sampler Y 2CBCR conversion is not supported, and samplers using sampler Y 2CBCR conversion must not be used.2vulkanshaderDrawParameters9 specifies whether shader draw parameters are supported.N     _11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112221111122212222222 2 2 2 2 2222   !"# $% &'()*'!"( )#$*%&+0,1 111111111-111111 1 1 1 .00/000111101111111111 11!1"1#1$1%1&21o1p1q1r31s1t1u1v1w456'(789:;<=> ? @ A BCDEFGH I r s t u_`cbajkmltuxwv~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!                  ! " & % $ #    +,-1'1(1)1*1+2222222 2 2 2 2 2222112221111122212211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      45~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      None("#%&'-./1789;=>?FHIMSUVX_dghklmqrvulkanVVkCommandBufferInheritanceInfo - Structure specifying command buffer inheritance info Valid Usage If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedQueriesinherited queries feature is not enabled, occlusionQueryEnable must be . If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedQueriesinherited queries feature is enabled,  queryFlags must be a valid combination of [ values If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedQueriesinherited queries feature is not enabled,  queryFlags must be 0 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineStatisticsQuerypipeline statistics queries feature is enabled, pipelineStatistics must% be a valid combination of J values If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineStatisticsQuerypipeline statistics queries feature is not enabled, pipelineStatistics must be 0Valid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of  or EThe sType value of each struct in the pNext chain must be uniqueBoth of  framebuffer, and  renderPass7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Alsoo, , , Z,  , x, vulkanQVkCommandBufferBeginInfo - Structure specifying a command buffer begin operation Valid UsageIf flags contains  , the  renderPass member of pInheritanceInfo must be a valid xIf flags contains  , the subpass member of pInheritanceInfo must* be a valid subpass index within the  renderPass member of pInheritanceInfoIf flags contains  , the  framebuffer member of pInheritanceInfo must be either , or a valid " that is compatible with the  renderPass member of pInheritanceInfoValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of  valuesSee Also, , , 2BvulkangVkCommandBufferAllocateInfo - Structure specifying the allocation parameters for command buffer objectValid Usage (Implicit)See Also, , , 2?20vulkanpNext is NULL6 or a pointer to a structure extending this structure.21vulkanflags is a bitmask of 3 specifying usage behavior for the command buffer.22vulkanpInheritanceInfo is a pointer to a  structure, used if  commandBuffera is a secondary command buffer. If this is a primary command buffer, then this value is ignored.24vulkanpNext is NULL6 or a pointer to a structure extending this structure.25vulkan renderPass is a x* object defining which render passes the  will be  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible with and can be executed within. If the 6 will not be executed within a render pass instance,  renderPass is ignored.26vulkansubpassG is the index of the subpass within the render pass instance that the " will be executed within. If the 6 will not be executed within a render pass instance, subpass is ignored.27vulkan framebuffer optionally refers to the  object that the K will be rendering to if it is executed within a render pass instance. It can be - if the framebuffer is not known, or if the 5 will not be executed within a render pass instance.NoteZSpecifying the exact framebuffer that the secondary command buffer will be executed with may@ result in better performance at command buffer execution time.28vulkanocclusionQueryEnable& specifies whether the command buffer can\ be executed while an occlusion query is active in the primary command buffer. If this is ., then this command buffer canc be executed whether the primary command buffer has an occlusion query active or not. If this is .#, then the primary command buffer must$ not have an occlusion query active.29vulkan queryFlags specifies the query flags that can be used by an active occlusion query in the primary command buffer when this secondary command buffer is executed. If this value includes the  % bit, then the active query can` return boolean results or actual sample counts. If this bit is not set, then the active query must not use the  % bit.2:vulkanpipelineStatistics is a bitmask of J1 specifying the set of pipeline statistics that can be counted by an active query in the primary command buffer when this secondary command buffer is executed. If this value includes a given bit, then this command buffer can be executed whether the primary command buffer has a pipeline statistics query active that includes this bit or not. If this value excludes a given bit, then the active pipeline statistics query must5 not be from a query pool that counts that statistic.2<vulkan commandPoolC is the command pool from which the command buffers are allocated. commandPool must be a valid  handle2=vulkanlevel is a , value specifying the command buffer level.level must be a valid  value2>vulkancommandBufferCount= is the number of command buffers to allocate from the pool.commandBufferCount must be greater than 02?vulkanRvkAllocateCommandBuffers - Allocate command buffers from an existing command pool Description2? cany be used to create multiple command buffers. If the creation of any of those command buffers fails, the implementation mustd destroy all successfully created command buffer objects from this command, set all entries of the pCommandBuffers array to NULL and return the error.;When command buffers are first allocated, they are in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state.Valid Usage (Implicit)device must be a valid  handle pAllocateInfo must$ be a valid pointer to a valid  structurepCommandBuffers must( be a valid pointer to an array of !pAllocateInfo->commandBufferCount  handlesThe value referenced by !pAllocateInfo->commandBufferCount must be greater than 0Host SynchronizationHost access to pAllocateInfo->commandPool must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, , 2@vulkan=A convenience wrapper to make a compatible pair of calls to 2? and 2ATo ensure that 2A is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.2Avulkan+vkFreeCommandBuffers - Free command buffers Description+Any primary command buffer that is in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording or executable state and has any element of pCommandBuffers recorded into it, becomes  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleinvalid. Valid UsageAll elements of pCommandBuffers must not be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending statepCommandBuffers must( be a valid pointer to an array of commandBufferCount % handles, each element of which must either be a valid handle or NULLValid Usage (Implicit)device must be a valid  handle commandPool must be a valid  handlecommandBufferCount must be greater than 0 commandPool must6 have been created, allocated, or retrieved from deviceEach element of pCommandBuffers that is a valid handle must6 have been created, allocated, or retrieved from  commandPoolHost SynchronizationHost access to  commandPool must be externally synchronizedHost access to each member of pCommandBuffers must be externally synchronizedSee Also, , 2Bvulkan7vkBeginCommandBuffer - Start recording a command buffer Valid Usage commandBuffer must not be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording or pending stateIf  commandBuffer was allocated from a  which did not have the u< flag set,  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial stateIf  commandBuffer) is a secondary command buffer, the pInheritanceInfo member of  pBeginInfo must be a valid  structureIf  commandBuffer3 is a secondary command buffer and either the occlusionQueryEnable member of the pInheritanceInfo member of  pBeginInfo is .D, or the precise occlusion queries feature is not enabled, the  queryFlags member of the pInheritanceInfo member  pBeginInfo must not contain  %If  commandBuffer( is a primary command buffer, then pBeginInfo->flags must not set both the  and the  flagsValid Usage (Implicit) commandBuffer must be a valid  handle pBeginInfo must$ be a valid pointer to a valid  structureHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the  that  commandBuffer was allocated from must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, 2Cvulkan>This function will call the supplied action between calls to 2B and 2D Note that 2D@ is *not* called if an exception is thrown by the inner action.2Dvulkan6vkEndCommandBuffer - Finish recording a command buffer DescriptionuIf there was an error during recording, the application will be notified by an unsuccessful return code returned by 2DT. If the application wishes to further use the command buffer, the command buffer must be reset. The command buffer must have been in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state, and is moved to the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleexecutable state. Valid Usage commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateIf  commandBuffer$ is a primary command buffer, there must+ not be an active render pass instanceAll queries made  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive during the recording of  commandBuffer must have been made inactiveConditional rendering must not be jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-renderingactiveIf  commandBuffer& is a secondary command buffer, there must! not be an outstanding  command recorded to  commandBuffer; that has not previously been ended by a call to If  commandBuffer& is a secondary command buffer, there must! not be an outstanding  command recorded to  commandBuffer; that has not previously been ended by a call to Valid Usage (Implicit) commandBuffer must be a valid  handleHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the  that  commandBuffer was allocated from must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also2EvulkanBvkResetCommandBuffer - Reset a command buffer to the initial state Description+Any primary command buffer that is in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording or executable state and has  commandBuffer recorded into it, becomes  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleinvalid. Valid Usage commandBuffer must not be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state commandBuffer mustE have been allocated from a pool that was created with the u<Valid Usage (Implicit) commandBuffer must be a valid  handleflags must be a valid combination of @ valuesHost SynchronizationHost access to  commandBuffer must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureSee Also, ?2?vulkandevice2 is the logical device that owns the command pool.vulkan pAllocateInfo is a pointer to a 4 structure describing parameters of the allocation.2Avulkandevice2 is the logical device that owns the command pool.vulkan commandPoolD is the command pool from which the command buffers were allocated.vulkanpCommandBuffersA is a pointer to an array of handles of command buffers to free.2Bvulkan commandBufferP is the handle of the command buffer which is to be put in the recording state.vulkan pBeginInfo points to a Z structure defining additional information about how the command buffer begins recording.2Dvulkan commandBuffer- is the command buffer to complete recording.2Evulkan commandBuffer4 is the command buffer to reset. The command buffer can be in any state other than  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclepending, and is moved into the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state.vulkanflags is a bitmask of @" controlling the reset operation.02326242:252728292/2120222;2>2<2=?@Z[ $ %2432?2@2A2B2C2D2E72?2@2A2B2C2D2E2;2>2<2=2326242:252728292/212022243[ $ % %Z@?None("#%&'-./1789;=>?FHIMSUVX_dghklmqL vulkanZVkBufferCreateInfo - Structure specifying the parameters of a newly created buffer object Valid Usagesize must be greater than 0If  sharingMode is , pQueueFamilyIndices must( be a valid pointer to an array of queueFamilyIndexCount uint32_t valuesIf  sharingMode is , queueFamilyIndexCount must be greater than 1If  sharingMode is , each element of pQueueFamilyIndices must be unique and must be less than pQueueFamilyPropertyCount returned by either  e or Tf for the physicalDevice that was used to create device If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseBindingsparse bindings feature is not enabled, flags must not contain   If the  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyBuffersparse buffer residency feature is not enabled, flags must not contain   If the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyAliasedsparse aliased residency feature is not enabled, flags must not contain  If flags contains   or   , it must also contain  If the pNext chain includes a  structure, its  handleTypes member must. only contain bits that are also in P6::.externalMemoryProperties.compatibleHandleTypes, as returned by PU with pExternalBufferInfo->handleType= equal to any one of the handle types specified in :: handleTypes0If the protected memory feature is not enabled, flags must not contain If any of the bits  ,  , or   are set,  must not also be setIf the pNext chain includes a  structure, and the dedicatedAllocation) member of the chained structure is ., then flags must not include  ,  , or  If :: deviceAddress is not zero, flags must include If )::opaqueCaptureAddress is not zero, flags must include If flags includes , the  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressCaptureReplay bufferDeviceAddressCaptureReplay or  zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressCaptureReplayEXT"::bufferDeviceAddressCaptureReplay feature must be enabledValid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , ), , or The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of  valuesusage must be a valid combination of  valuesusage must not be 0 sharingMode must be a valid  valueSee Also, , m, , , 2`2ZvulkanpNext is NULL6 or a pointer to a structure extending this structure.2[vulkanflags is a bitmask of 1 specifying additional parameters of the buffer.2\vulkansize2 is the size in bytes of the buffer to be created.2]vulkanusage is a bitmask of * specifying allowed usages of the buffer.2^vulkan sharingMode is a g value specifying the sharing mode of the buffer when it will be accessed by multiple queue families.2_vulkanpQueueFamilyIndicesG is a list of queue families that will access this buffer (ignored if  sharingMode is not ).2`vulkan+vkCreateBuffer - Create a new buffer object Valid UsageIf the flags member of  pCreateInfo includes  , creating this  must| not cause the total required sparse memory for all currently valid sparse resources on the device to exceed  l::sparseAddressSpaceSizeValid Usage (Implicit)device must be a valid  handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepBuffer must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccess  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureYSee Also, , , 2avulkan=A convenience wrapper to make a compatible pair of calls to 2` and 2bTo ensure that 2b is always called: pass LM (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass (,) as the first argument.2bvulkan)vkDestroyBuffer - Destroy a buffer object Valid Usage%All submitted commands that refer to buffer , either directly or via a /=, must have completed executionIf  were provided when buffer1 was created, a compatible set of callbacks must be provided hereIf no  were provided when buffer was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid  handleIf buffer is not , buffer must be a valid  handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf buffer is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to buffer must be externally synchronizedSee Also, , 2`vulkandevice6 is the logical device that creates the buffer object.vulkan pCreateInfo is a pointer to a C structure containing parameters affecting creation of the buffer.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.2bvulkandevice0 is the logical device that destroys the buffer.vulkanbuffer is the buffer to destroy.vulkan pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.*2Y2\2[2]2Z2_2^/   2`2a2b?2`2a2b2Y2\2[2]2Z2_2^/      None("#%&'-./1789;=>?FHIMSUVX_dghklmqO( ~opqlmn2Y2\2[2]2Z2_2^$$$$$$2326242:252728292/2120222;2>2<2=0<0;0=0E0F0I0G0H0J0g0h0k0i0j0K0P0O0M0L0N 0]0b0a0_0^0`!0X0Y0[0Z0\"0l0o0n0m#0B0C0D$0>0?0@0A%0Q0W0R0S0T0U0V&0c0f0e0d'$$$(//////////)////*//////+////,///-/////./////////0////////1/s/u/t/v/w2/l/n/m/p/q/o/r3-----4-K-L-M-N-O-P5----------6-----7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------- - - - - ------------------- -!-"-#-$-%-&-'-(-)-*-+-,---.-/-0-1-2-3-4-5-6-7-8-9-:-;-<-=->-?-@-A-B-C-D-E-F-G-H-I-J8-Q-^-Z-R-S-T-U-V-W-X-Y-[-\-]-_-`-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-{-|-}-~----------9---:---;------<------=---->------?@ABCDEuyxwvFGADCBHI4765J  ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! KLMBQPONMLKJIHGFEDCN     OPQRST[UBA@?>=<;:9876543210/.-,+*)('&%$#"! VWX f  ~ } | { z y x w v u t s r q p o n m l k j i h gY - 8 7 6 5 4 3 2 1 0 / .Z[ $ %\] ^ _`a bc \ l k j i h g f e d c b a ` _ ^ ]de 9 < ; :f|~}gh$$i$$$j,,,klmnopqrstu+v#w(xyz576{!|)}~*;=<>@?,- $"89:1&'%0243./,p,r,q,s,t,u,v,{,x,,w,~,z,,,,y,|,},+)+++*+,+.+-+/+0+1+2+6+3+4+5+7+;+:+9+8$$$$$+++++ + ++ $$$$,D,E,F,2,3,:,4,5,;,8,9,6,7,-,.,/,0,1,',),,,(,*,+,#,$,%,&,<,C,B,A,=,>,?,@*******************************************&&&&&&&&&&&&&&&&&V&W&[&X&Y&]&\&Z&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&z&|&{&&&&&}&~&&&&&q&s&r&t&u&v&w&x&y&&&&&^&_&`&K&L&O&T&U&P&M&N&Q&R&S&a&c&b&g&f&d&e&h&i&j&k&l&m&n&o&p&9&;&H&:&<&F&I&J&=&>&?&@&A&B&C&D&E&G&&&&&&&$$$$$$$$$$$$&)&+&*&-&,&.&&&&&&& & & %%%%%%%%%%%%%%%%&&%%%%%\%_%^%a%`%]%O%P%Q%f%g%h%i%j%k%L%M%N%U%Y%W%X%[%Z%V%l%o%m%n%R%S%T%b%c%d%e%E%G%F%H%I%J%K~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!       + , - 1 0 / . D E F G O P Q T S R                 ? @ D C B A K L T U ] ^  IJKSRQPONMLcdegfop~}|{zyxwvutsrqhijutsrqponmlkWXYZbckl~}|{zyxwvutsrqponm   #$WVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%^_rqponmlkjihgfedcba`yz}|{$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%p%q%r%%%&&&&&&&&&& &!&"&/&0&1&2&&&&&*******++++++++++<+=+>,,,,,,,,,,,------------/x/y/z///////////08090:0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~000000000000000000000000000000002?2@2A2B2C2D2E2`2a2b2i2i=None("#%&'-./1789;=>?FHIMSUVX_dghklmqzopqlmn2Y2\2[2]2Z2_2^$$$$$$2326242:252728292/2120222;2>2<2=0<0;0=0E0F0I0G0H0J0g0h0k0i0j0K0P0O0M0L0N 0]0b0a0_0^0`!0X0Y0[0Z0\"0l0o0n0m#0B0C0D$0>0?0@0A%0Q0W0R0S0T0U0V&0c0f0e0d'$$$(//////////)////*//////+////,///-/////./////////0////////1/s/u/t/v/w2/l/n/m/p/q/o/r3-----4-K-L-M-N-O-P5----------6-----7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------- - - - - ------------------- -!-"-#-$-%-&-'-(-)-*-+-,---.-/-0-1-2-3-4-5-6-7-8-9-:-;-<-=->-?-@-A-B-C-D-E-F-G-H-I-J8-Q-^-Z-R-S-T-U-V-W-X-Y-[-\-]-_-`-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-{-|-}-~----------9---:---;------<------=---->------?@ABCDEuyxwvFGADCBHI4765J  ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! KLMBQPONMLKJIHGFEDCN     OPQRST[UBA@?>=<;:9876543210/.-,+*)('&%$#"! VWX f  ~ } | { z y x w v u t s r q p o n m l k j i h gY - 8 7 6 5 4 3 2 1 0 / .Z[ $ %\] ^ _`a bc \ l k j i h g f e d c b a ` _ ^ ]de 9 < ; :f|~}gh$$i$$$j,,,klmnopqrstu+v#w(xyz576{!|)}~*;=<>@?,- $"89:1&'%0243./,p,r,q,s,t,u,v,{,x,,w,~,z,,,,y,|,},+)+++*+,+.+-+/+0+1+2+6+3+4+5+7+;+:+9+8$$$$$+++++ + ++ $$$$,D,E,F,2,3,:,4,5,;,8,9,6,7,-,.,/,0,1,',),,,(,*,+,#,$,%,&,<,C,B,A,=,>,?,@*******************************************&&&&&&&&&&&&&&&&&V&W&[&X&Y&]&\&Z&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&z&|&{&&&&&}&~&&&&&q&s&r&t&u&v&w&x&y&&&&&^&_&`&K&L&O&T&U&P&M&N&Q&R&S&a&c&b&g&f&d&e&h&i&j&k&l&m&n&o&p&9&;&H&:&<&F&I&J&=&>&?&@&A&B&C&D&E&G&&&&&&&$$$$$$$$$$$$&)&+&*&-&,&.&&&&&&& & & %%%%%%%%%%%%%%%%&&%%%%%\%_%^%a%`%]%O%P%Q%f%g%h%i%j%k%L%M%N%U%Y%W%X%[%Z%V%l%o%m%n%R%S%T%b%c%d%e%E%G%F%H%I%J%K # }  ~ M N O P Q%"%%%#%&%$%'%*%(%+%)vwxsut$h$m$n$l$i$j$k$`$g$a$b$c$d$e$fMNODEFGJKLHIABCYZ[\]&'()$% ?@=>;< $$$$$$$%%%%%%%%%%%%.........../ / /....///////////// / / }~  000 000 LMNO PQRSTUV++++++++++++++++++++ C D / 0 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112221111122212222222 2 2 2 2 2222   !"# $% &'()*'!"( )#$*%&+0,1 111111111-111111 1 1 1 .00/000111101111111111 11!1"1#1$1%1&21o1p1q1r31s1t1u1v1w456'(789:;<=> ? @ A BCDEFGH I r s t uJKLMNOPQRSTUV g hW$K$LX$M$NYZ[\]^_`abcdehifghijklmn S ToQRpqrst56789:;<=>?@ABCu ; < =vwxyz{|}~_rqp`abcdefghijklm + ,+`+a+h+i+U+V+f+g+b+c+e+d+W+X+Y+Z+[+\+]+^+_         mnopklEMLKJFG   00000000$"$$$'$#$%$&$($+$*$)$$!$ #####################################$$$$$#####c####d#####z#|##{#}#~#####q#r#v#s#t#u#i#m#j#k#l#n#o#p#w#x#y  #D#E#F#G""######""""""""""""""*}*~CD@AB**********   ~  """""""""""""""""""v"w,,,,,,,,,,,,,,,,,, q r F G H I J K L M N O P Q D E 0 1 . /"^"_"`   !    "2"3"0"1"4"5Z\[`cabdefWXYTVUNOPQRSLM]_^      v w x y z { | } ~ -.21/0"""""" !"#$%yz&!!!'(!!!)*+,-!!.!!!/!!!0!!!!!!123456789:;<=>?@A!!>!=B!/!0C!3!5!4D!+!,E!'!*!(!)F!-!.G!%!&H!1!2IlmJ !!K L ) . * , 1 + - / 0M H I M J K L N ON E F GO 2 3 4 5 6 7 8 9 : ;P ? @ AQ B C DR < = >S    TUV......W...X....YZ[\.W.X].T.U.V^.]._.`.^_.Y.\.Z.[`ab...c......d....e.....f g h i j klmnoOPQRpVWXqSTUrs!"t#$%uv wxyz{|}~//( (((((((( (((( ((((((((((((((((((((((((:(;(o(p(q(r(s(w(u(v(t(((((((((((((((((((((((x(z(y({(|(}(~(((((((((((((( ("(#(!($(%('(((&()(*(,(-(+(.((((((/(0(((((3(6(4(8(5(7(9(h(k(l(i(j(m(n(^(a(_(`(b(d(c(e(f(g(1(2(C(F(H(E(D(G(I(L(K(N(J(M(O(P(S(Q(R(T(U(Y(X(V(W(Z([(\(](<(=(>(?(@(A(BABC45[uwvxyz{|}~oqprstjk\]^_`lmnghiacfdebpqrsXYZABC*+,qrstnpo'(Z[\VXYW   'm'n'''''''''''''j'l'k']'_'`'^'a'b'c'd'e'f'g'h'i'X'Y'Z'['\'|'}'~''y'{'z'F'H'G'I'J'K'M'L'N'O'P'Q'R'S'T'U'V'W'o'q'r'p'w'x's'u't'v......!. ........=.?.>.:.;.<     stuvwxyz{|}~pqr)*****)))))))))))))))))))))))))))))))))))))))))))))))))))))}~ !"#$[\%]^&pq'[\](YZ)*+,-./  012   3456789/0312:,-.;<=>?@ABCDFGECDEFGHIJKLMN_`cbajkmltuxwv~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!        %$#" !34DEMNOPVUSTdefgnmljk&'()=<;:9876*+45WX^_nors{|  %&)*2367?@DEMNYZjknowx{|        " # $ , - 2 3 B C R S o p s t | } ) * - . 6 7 8 9 : > ? N O P Q R U V e f i j } ~                  ! " & % $ # . 2 : ; < = > ? @ A B E Y Z [ \ ] ^ _ ` a j i h g f e d c b r s t u            + , - 1 0 / . D E F G O P Q T S R t u                 ? @ D C B A K L T U ] ^  IJKSRQPONMLcdegfop~}|{zyxwvutsrq456789:;<=>?@Ahijutsrqponmlk  ./0123>?EFGHWXYZbckl~}|{zyxwvutsrqponm*+,-./0123456789:;<=>?@jklmnopqrst   #$WVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%^_rqponmlkjihgfedcba`yz}|{%&'()*+,-./0123456789:VWXYZ[\]^_`a"! #$%YZ_`ano -,+*)('&%$#10/.!"2TU]^_lmuvwx)(/.-,+*:9876543210=<;     &'>?@A   ()*+,;:9876534<JKghij#!"$%&CDHINO]^nos     +,-QRSTUVWXYZ[\]^_`abcdefghijqrstuvwx !"#*6789:;<=>?@PQRS&'()-./=>?@DEFTUVW[\]klmnotuvw     ABHIVWXYZ      ! " # $ U T S R % & ' ( P Q V W X Y Z [ \ !!!!!!!!!<!;!:!9!8!!!@!?!!!A!!!B!! !!!"!#!$!6!7!C!D!E!F!G!H!I!J!K!L!M!!!!!!!!!!!!!!!!!!!!!!!!!"" """ " " " """"+","-"."/"6"7"8"9":";"<"Y"Z"["\"]"a"b"c"r"s"t"u"x"y"z""""""""""""""""""""""""""""""#""# ""# # # ### ####?#@#A#B#C#H#I#J#K#Z#[#\#]#^#_#`#a#b#e#f#g#h#####################$$$$$ $$$,$-$.$/$0$1$2$C$D$E$F$G$H$I$J$O$P$Q$o$p$q$r$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%% %!%,%-%:%;%<%=%>%?%@%A%B%C%D%p%q%r%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&& &!&"&/&0&1&2&&&&&'<'='>'?'''''''''@'A'B''C'D'E''''''''''''((( ( (((((((((((((((((((((((((((((((((((((())))))))))))))))))***** * * * * ******************* *!*"*#*$*%*&*'*(*)***+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*{*|*************************++++++++++<+=+>+S+T+j+k+l+m++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,, , , , , ,,,,,,,,,,,,,,,,,,, ,!,",,,,,,,,,,,,,,,,------------...........".6.7.8.9.@.A.B.Q.R.S.a.b.c.d................////////O/P/Q/R/S/T/U/V/W/X/Y/Z/[/\/]/^/_/`/a/b/c/d/e/f/g/h/i/j/k/x/y/z//////////////0000 0 0 0 0000000000000 0.0/000102030405060708090:0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~0000000000000000000000000000000000001'1(1)1*1+1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n11111111111111122?2@2A2B2C2D2E2`2a2b2i2u>?@ABCDEFGHIJKLMNOPQR6STUut  g  ~    j v      2 m l  V y o w ^  W XYZ[\]^0_`~a4bcdgefgh i!j!k"l"m#n$o%%9&p&'q'r(s)t*-+u,>-v-w.x.y.z.{..|.}.~/>/5/A/?//4/<///)//3////:/D/7/;///8/@/C/B/E//6/=/9001`1123s3q4z5t5W5556556-6%676E6k67777n777"77777777777L789x9:+;N<C=?>H?}??|?~?{????@AA*BBCFCGD*DDDEFGGHvHuIIJrJJJJKKLLM.NN7O;O:O0PPPP/P9P6Q4RR=SLS~S[SXSTKT/TTTTTTVTBU:UUUUbVV W;WWXBXAXXXZXYZ[[[[\\\\ \ ]^^_`\abb|bbbcRcPcOcc8ccdQdeefUg5ggDgChhhijklm^mGmmFmmnoppIpHppPpMpKpJppNpLpOqr\r$ssssttttuuuuvwwwwxxxxyz{{{{|}~~~~]xc8^@ Z(!S{gA9XWUOPTSR,i})><_I`aY%M(-n+BA")d?e@/ywfzh2DjEk5*'&%#VT',     h~320JY[&]cdfjkQpba_q$F.xmlNMHG<1i3R41KJI                  r !           #e= !"#$%&'()*+,-./00123456789:;<=>?e@ABCDEFFGHIJKLMNOPQRSTUVWXYZZ[\]^_`abccdefghijkllmnopqrstuvwwxyz{|}~             !!!!!!!!!!!!!)t))))))))""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " !" "" #" $" %" &" '" (" )" *" +" ," -" ." /" 0" 1" 2" 3" 4" 5" 6" 7" 8" 9" :" ;" <" =" >" ?" @" A" B" C" D" E" F" G" H" I" J" K" L" M" N" O" P" Q" R" S" T" U" V" W" X" Y" Z" [" \" ]" ^" _" `" a" b" c" d" e" f" g" h" i" j" k" l" m" n" o" p" q" r" s" t" u" v" w" x" y" z" {" |" }" ~" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " !" "" #" $" %" &" '" (" )" *" +" ," -" ." /" 0" 1" 2" 3" 4" 5" 6" 7" 8" 9" :" ;" <" =" >" ?" @" A" B" C" D" E" F" G" H" I" J" K" L" M" N" O" P" Q" R" S" T" U" V" W" X" Y" Z" [" \" ]" ^" _" `" a" b" c" d" e" f" g" h" i" j" k" l" m" n" o" p" q" r" s" t" u v w x% y w x z { | } ~      a           `                              | | || | | | | | | | | | | | | | | | | | | | | | | z z z z zz z z z z z z z z z z z z z z z z z v v v v vv v v v v v v v v v v v v v v v v v v (s( ( ( ( ( ( ( ( ( ( ( ( ( ( !# "# "#G#j# ## $# %# &# '# ($ )$ )$$#$ *$ +$ ,$ -$ .$ /%%%4% 0%% 1% 2% 3% 4% 5% 6% 7% 8& 9& :& 9& :& ;$o$ <$ =$ >$ ?$ @$ A$ B$ C$ D$ E$ F$ G$ H$ I$ J$ K$ L$ M$ N$*$ O$ P$7$ Q$ R$ S$ T$ U$ V$&$ W$ X$[$ Y$ Z$ [$ \$ ]$ ^$ _$ `$ a$ b$ c$ d' e' e' f' g' h' i' j' k. l..z.{. m. n.}. o. p. q.~. r. s.. t. u. v.|. w. x... y. z. {. |. }. ~. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .              #                                                                                                                                                          ! " # $ % & ' ' ( ) * % & + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < < = > 9 : ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y W X Z [ \ ] ^ _ ` a b c a b d e f g h i j k l m n k l o p q r s t u v w x v w y z { | } ~   Y            '                                                                 ! " # $ $ % & ' ( ) ! " * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D B C E F G H I J K L M N} O P M N Q R S T U V W X Y Z [ \ ] ^ _ ` ai b c d e f g h i j _ ` k l m n o p q r s t u v w x y z { | } ~                                                    !"#$%&]'%&()*+,-.}/}0}1}2}2}}3}4}/}0}5}6}7}8}9}:};}<}=}>}?}@}A}ByCyDyEyFyFyyGyCyDyHyIyJyKyLyMyNyOyPyQyRySyTyUqVqWqqXqVqWqYqZq[q\q]q^q_oo`oaobocodoeofogohoi(j(k(l(j(k(mnnnnonpnqnrnsntnu)v)w)x)v)w)yllzl{l|l}l~lll******kkkkkkkkkkkkkkkkkkkkkkkkk++++++++++jjjjjjjjjj,,,,,,,,iiiiiiiiii------aaaaaaaaaaa......_________//////000000000001161611181711111111222252 2 22222222ZZZZZZZZZZZZ33333333Y YY Y Y Y YYYYYFFFFFFFFFFFF444 444!5"5:5:5#5$5%5&5'5(5)5*5;5+5,5-5.5/50516266663646566676869BB:B;B<B=B>B?B@BABBBCBD7E7F7F7X77G7H7I7J7K7L7M7N8O8"8"8P8Q8R8S8T8U8V8W9X99999999Y9Z9[9\9]9^9_Q4Q`QaQbQcQdQeQfQg:h:i:j:k:l:h:i:m:n;o;p;p;q;r;s;t;u;v;w;x;yA*AzAA A A?A>AAA=A<A@A{A|A}A~AAA<<<<<<<<<<<<<== = =!=== =======M.MMMMMMMM>>>>>>>>>????????????@@@@@@@@@@@@@@@@@AA-A-AA,AAAAAAAAA'r''''''''''BBBBBBBBBBBCCCCCCCCCCCCC&&&&&&&&&&&&&&&&&&&&&&&&     EEEEEEEEEEEEDDDDDD D!D"D#D$E%E%E&E'E(E)E*E+E,F-F.F.F}FF/F0F1F2F3F4F5%9%6%7%%%%%%8%9%:%;%<%=%>G?G1G1GFG@GAGBGCGDGEGFHGHHHHHIHJHKHHHLHMHNHOHPHQHR#n###*#S#T#N#'#)#(#U#V#W#X#Y#Z"m"["\"]"^"_"`"a"b"c"d"eIfIfIgIhIiIjIkIlImJnJJJoJpJqJrJsJtJuJvJwJxJyJzJ{J|J}J~JJ!k!!!!!!!! i                 KKKKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNN]JOOOOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVVVVVVVyVVVVVVVVVVVVVWWWW W W W W WXTXTXUXXXXXXYYYYYYYYYYYg  !"#$%Z&Z&Z'Z(Z)Z*Z+Z,Z-Z.Z/Z0Z1f23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXPYZ[\]^[_[`[`[W[[a[_[b[[[c[d[e[f[g[h[i[jeklmnopq\r\s\s\\U\t\u\v\w\x\y\z]{]{]|]}]~]]]]]]]]]]]]]]]]]]]^^^^^^^^^-------W--V-_________uv````|````{`f``````aaaaaaaaaaaagqrfdewvtu`\````````bbbbbbccsbnoHIqmphhhhhhhhhhhhhhhhhhhhhhhhhhhhcccccccccccccc4KZ    KK K KKKKKKKKKKKKddddddddddddydxddddd d!d"d#UU$UbU%UU&U:U'UU(U)U*U+U,U-U.U/U0U1U2U3U4U5U6U7U8U9U:U;U<U=U>U?U@UAUBUCUDUEUFUGUHUIUJUKeLeMeNeOePeQeReSeTeLeMeUeVeWeXeYeZe[e\e]e^e_e`~|}abcdeffgfhfhf fifjfkflfmfnfogpggg!g"gggdgqggggrgsggtgg$gggpggwgug_g]ggggvgwgxgygzg{g|^^}^^~^^^^^^^^^^^^^^^hhhhhhhhhhhhh       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY+Z*[)\]E^_`abcdef^gdehijklmnopqrstufUfvfwfxfyfzf{i|i}i~i|i}i`Ajjjjjjjjjjjkkkkkkkkkllll0l-lllllll l l llllllllllllllllllllllmmmmmmmmmmmnnnnnnnnnooooSo^ooooooo`oaobooooooopppppQppppppp_qqqqqqqqqqqq\\\ \\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \ \ \ \ \\\\\\\\\\\\\\\\\\\ \!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\0\1\2\3\4\5\6r7r8r9r:r;r<r=r>r?r7r8r r@rArBrCrDrErFrGrHrIrJ0K./LMNOPQRW;WSWTWUWWVWWWWXWYWZW[W\W]W^W_W`WaWbWcWdWeWfWgWhWiWjWkWlWmsnsospsqsrsnsossstsusv]wxyz{|}~ttttttttttttttt[Zuuuuu<uuuuuuuuvvvviv(vhvvvvvvv X        wwwgwwwwwwwxxxxxxxxxxxxxxyyyyyyyyyzz9z9zz$z&z1zzzzz{zzz\z[z3zzzzzzzz{{8{8{V{{{{;{{{{{{{||||||||||||||||}}}}}}}}}}}}}}}}}}}}}}} } } } } }}}}}}}}}}}}}}}}}}} }!}"}#}$}%}&}'}(})}*}+},}-~.~.~~~~~/~0~1~2~3~4~5~6~7~8~9~:~;~<~=~>~?~@~A~B~CDDEFGHIJKLMM:NOPQRST22'UVWXYZ[ \]^_`abcdefg2hijklmnopqrstuvwxyz{|}~l%Ol%OeeeeeeeeeeeeeeeeeeeeeeO0OO:OO;OOOOOOOOOOOOOOOOOOOOOO.      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~//?/D/</;/5/7/B/@/C/A//)/>//:/=/9/E/8/6///4//////3///////////////////////////////////////////////////////////////////////////////////////////////////// / / / / /////////////////// /!/"/#/$/%/&/'/(/)/*/+/,/-/.///0/1/2/3/4/5/6/7/8/9/:/;/</=/>/?/@/A/B/C/D/E/F/G/H/I/J/K/L/M/NOPeQRSTUOPVWXYZ [ \   ] ]  ^ _  ` a b  c d e  f g h  i j ! k l r m [ \ n o p q r s t u v w x y z { | } l   ~                                                   ./     F !j"#$%&'()*+,-./0123456789:;<=>?@ABCDEFFGGHIJKLMNOPQRDESTUVWXYZ[\]^_`aObcdefghijklmnopqrstuvwxyz{|}~$q_a}d     '(     k, !"#$%&'()  *+,-./0123456789:;<=,+Gd>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Djywf?d8:     r !"#$%&'()*+<,-./01>23456"#789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abccdefghijklmnabtsopqrstuvwxyz{|}~{gN      !"#$%&'('(mFm)m*mGm+m,m-m^m.m/m0m1mm2m3mm4mm5m+mm6mm7m8m9m:m;m<m=m>m?m@mAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm[m\]^_`abcdefg]^hijklmnop,g5gqgCgrgsgtgugvgwgDgxggygzg{g|g}g~ggggggggggggggggg bbb|bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`Yba]]]<]]]]]]]=  PPPPPPP6PPPP P P9P PP P/P PPPUPPPPPPPPPPPPPPPPP P!P"P#P$P%P&P'P(P)P*P+P,P-P.P/P0P1P2P3P456789:;<=>?@56ABCDEFGHIJKLVN7NMNNNONNPNWNQNRNSNTNUNVNWNXNYNZN[N\N]N^_`abcdef_`ghijklmnXLLoLLpLqLrLzLsLtLuLvLwLxLyLzL{L|L}~~{JJJJJJJJJJJJJrJJJ$JJJ%JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHuHHHvHHHHHHHHHHHHHHHHDDDDDDDDD*DD.DDDDDDDDDDDDDDDDDDDDDDDDDDDDCFCGCCCCCCCCCCCCCCpNpLpIpHpKpJpppPpOppMpppppppppppppppppppp p p p p ppppppppppppppppppp p!p"p#p$p%p&p'p(p)p*p+p,p-p.p/p0p1p2p3p4p5p6p7p8p9p:p;p<p=p>p?p@pApBpCpDpEpFpGpHpIJKLLbMNJKOPQRSTUVWXYZ[\]^^p_`\]abcdefghijklmnoppQqrnostuvwxyz{|}~kvjuftcs  $moq    !"#$%&'()*+,-./01234=5126789:;<=>?@ABCDEEFGHIJKLMNO]PQR&STUVW[XYZ[\]^_`abcdefgBChijklmn%poopqrstuvwxyz{|}~DJVTln)+"AB            TRMJL                   ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G% H& I J# K' L* M F GSQIK N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u i j v w x y z { | } ~                                            - n                4 !!!!!!!!!! ! ! ! ! !!!!!!!!!!!!!(!!!!!! !!!"!!!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2!3!4!5!6!7!8!9!:!;!<!=!>!?!@!@M!A!B!>!?!C!D!E!F!G!H!I!J!K!L!M!N!O!P!Q!R!S!T!TY!U!V!R!S!W!X!Y!Z![!\!]!^!_!`!a!b!c!d!e!f!g!g!h!hI!i_!j!k!l!e!f!m!n&!o!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~!!!!!!!!!!!!!!!!)!!!!!RQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!C!!!!!!!!!!!!!!!!!!!!!!!!!!P!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!U!X!W!!!s!!!p!!!!!!!!!!!!"""""""""" " " " " """S"""""""""""""""k""" "!"""#"$"%"&"'"(")"*"+",","-"-".".Z"/!"0"1("2"*"+"3"4"5"6"7()"8"9":";"<"=">"?"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_"`"a"b"c"d"e"f"g"h"i"i "j"k"l"g"hP"m"n"o"p"q"r"s"t"u"v"w"x"y"z"{"|"{"|x"}"~"""""""""""""""""""""""""""""}"~"""""""023"" |""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""##########  y# # # # ################### #!#"###$#%#&#'#(###)#*#+#,#-#.#/#0#1#2#3#4#5#6#7#8#9#:#9#:Dwr#;r#<r\r#=r$r#>r#;r#<rr#?r#@r#Ar#Br#Cr#Dr#Er#Fr#Gr#Hr#Ir#Jr#Kr#LII#MI#NI#OI#PI#QI#RI#SII#TI#UI#VI#WI#XI#YII#ZIII#[I#\I#]I#^I#_I#`I#aI#bI#cI#dI#eI#f99#g9#h9#i9x9#j9#k9#l99#m99#n9#o9#p9#q9#r9#s9#t9#u9#v9#w9#x9#y88#z8#{8#|8+8#}88,8@8#~8#8#8#8#8#4z4#4#4#44444#4#4#4#4#4#4#22#2#2#2#22F2#2#2#2#2#2#+u+#+#++E+#+#+#+#+#+#*-*#**#*****#*#*#*#*#*#*#  # #  #   # # # # # # ####### #######R=R#R#R#RR#R#RYR#R#R#R#R#R#R#R#R#R#R#R#R####################ZGG#G#G#G#GG#G#G#G#GGzG#G#G#G#G#G#G#G#G#G#G#G##########??#?#?$?$?$?$?~?$?$??$?$??$?$ ?{?$ ?$ ?$ ?$ ?$?$?}?$?$?$?$?$??$?$?$?|?$?$?$?$?$??$?$?$???1?$ ?$!?$"?$#?$$?$%?$&?$'?$(?$)?$*?$+?$,?$-?$.?$/?$0?$1?$2?$3?$4?$5?$6?$7?$8?$9?$:?$;?$<?$=?$>?$??$@?$A?$B?$C?$D?$E?$F?$G?$H?$I?$J?$K?$L?$M?$N?$O?$P?$QSLS$RS~S$SS$TS[S$USXS$VS$WSS$XSSSS$YS$ZS$[S$\S$]S$^S$_S$`S$aS$bS$cS$dS$eS$fS$gS$hS$iS$jS$kS$lS$mS$nS$oS$pS$qS$rS$sS$tS$uS$vS$w$x$y$z${$|$}$x$y$~$$$$>H>$>$>$>>$>#>$>$>$>$>$>$=?=$=$=$=$=$=$=$=$=$=$=$=$=$=$=$=$=$==$==$=$=$=$=$=$<C<$<$<<$<"<$<$<$<$<$<$;N;$;$;$;$;$;-;5;6;$;;$;$;$;$;$;$;$:+:$:$:$:$:$::$:::$:$:$:$:$:$7L7$7$7$7$7$7$7$7$7$7$7$7$7$7$7$7$7$77$7$7$7$7$7$7$7$7$7$7n7$7$7$7$7$7$7$77$7$77$7$7$7$7$7$77$7$7$7$7$7$7$7$77$7$7$7$7$7$7$7%77%7%7%7%7%7%7%7%7% 7% 7% 7% 7"7% 7%7%7%7%7%77%7%7%77%7%7%77%7%7%7%77%7%7%7% 77%!7%"7%#77%$7%%7%&7%'7%(7%)77%*7%+7%,7%-7%.7%/77%07%17%277%37%47%577%67%77%87%97%:7%;77%<77%=77%>7%?7%@7%A7%B7%C7%D7%E7%F7%G7%H7%I7%J7%K7%L7%M7%N7%O7%P7%Q7%R7%S7%T7%U7%V7%W7%X7%Y7%Z7%[7%\7%]7%^7%_7%`7%a7%b7%c7%d7%e7%f7%g7%h7%i7%j7%k7%l7%m7%n7%o7%p7%q7%r7%s7%t7%u7%v7%w7%x7%y7%z7%{7%|7%}7%~7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%%%%%%%%%%%H%%%%G%%%%%%%%%%%%l%%%%m%%%%%%%%%%%%x%%%%%%%%%%M%%N%%%%%%%%%%%%%%%%%%%%%%%%%%%0&&&&&&&&&& & & & & &&&&&&&&&&&&&&&&&&& &!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&[&\&]&^&_&`&a&b&c&d&e&f&g&h&h&i&j&k&l&m&ny&o2&p&q&r&s&t&u&v&w&x&y&z&{&|&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&~&&&&&&&&&&&&&&&&&&&&&&&&&h&&&&&0&&&&&&&&&&3&&&&&&&f&g&&&&&&&&&&&&&&&&&&&&&&&&&&&&&BA'''''''''' ' ' ' ' ''''''''''''''''''' '!'"'#'$'%'&'''(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O'P'Q'R'S'T'U'V'W'X'Y'Z'['\']'^'_'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'r's't'u'v'w'x'y'z'{'|'}'~'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''J''''(I((((K((((( ( ( ( ( ((1((((((((4(((((''(((( (!("(#($(%(&('((()(*(+(,(-(.(/(0(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F&C(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(g(h(i(j(k(l(m(n(o(p(q(r(s(t(u(v(w(x(y(z({(|(}(~((((((((((o(((((((6E6(6(6(6(6(6(6(676(6(6(6(6(6%6(6(6(6(6(6(6(6-6(6(6(6(6(6(6(6k6(6(66(6(6(6(6(6(6(6(6(66(666(666(6(6(6(6(6(6(6(6(6(6(6(6(6(6(6(6(6(6(6(6(6(6(6(6(6(6(6(6(6(6(6(6(6(6(6(6(6(((9((((((((((((((((((((((((((3q3(3(3(3s3(3(3(33(3'33(33S3T33(3(3(3)3)3)3)3)3)3)3)3)3) 1`1) 1) 1) 1) 1)1)1)11)1)1)1)1)11)1)1)1)1\1)11)1)1)1)1)1) 1)!1)"1)#1)$1)%1)&1)'1)(1))1)*1)+1),1)-1).)/)08)1)2)3)4)5)6)7)8)9x):);)<)=)>c)?)/)0)@)A)B)C)D)E)F)G)H)I)J)K)L)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)fXAX)gXX)hXZX)iXX)jXX)kX)lX)mX)nX)oX)pX)qX)rX)sXBX)tXX)uX X)vX)wX)xX)yX)zX){X)|X)}X)~X)X)X)X)X)X)X)X)X)X)X)X)X)X)X)X)X)X)X)X)X)X)X)X)X)X)X)X)X)X)X)X)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))!55)5)5)565)5)5)5)5)555)5)5)5)5W5)5)5)5)5)5)5)5)5)55)5)5*5*5*5*5*5t5*5*5*5*5* 5* 5* 5* 5* 5*5*5*5*5*5*5*5*5*5*5*5*5*5*5*5*5*5*5* 5*!5*"5*#5*$5*%5*&5*'5*(5*)5**5*+5*,5*-5*.5*/00*00*10*20*30*400*50*60*70*80*90*:0*;0*<0*=0*>0*?0*@0*A00*B000*C0*D0*E0*F0*G0*H0*I0*J0*K0*L0*M0*N0*O*P*QT*RR*S*TS*U*V*W*X*Y*Z*[,*\*]*P*Qi*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*{*|*}*~***,>,*,*,,*,,,,,*,*,*,*,*,*,* l * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  * * * * *  * * * * * + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +! +" +# +$ +% +& +' +( +) +* ++ +, +- +. +/ +0 +1 w +2 +3 +4 +5 +6 ^ +7 +8 +9 y +: +; V +< += m +> +? +@ +A  +B +C +D +E o +F +G +H +I +J  +K +L +M +N +O 2 +P +Q +R +S +T +U +V +W +X  +Y Z H X Y  e _ [   +Z +[ +\ +] +^ +_ +` +a +b +c +d +e +f +g +h +i +j +k +l +m +n +o +p +q +r +s +t +u +v +w +x +y +z +{ +| +} +~ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +++++++++++++++++++h+++++++++++++++++++++++3++i+++++++++++++++++++++z+++2+++h++++++++++++++++++++++++++++++,,,,,E,,,,, , 5, , , k,,,,,,,,,,,,,,,,,,,,, ,!,",#,$,%,&,',(,),*,+,,,-,.@,/,0/,1,2,3e,4,5,6,7,8,-,.,9,:,;,<,=,>,?,@,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O1,P<,Q,N,O,R,S,T,U,V,W,X,Y,Z,[,\,],^,_TT,`T,aT,bT,cT,dTKT,eTT,fT,gT/T,hT,iTT,jT,kT,lT,mT,nT,oTVT,pT,qTBT,rT,sTT,tT,uTT,vT,wT\TbTTcTfT`ThT,xT,yT,zT,{T,|T,}T,~T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,,,,,,,,,,,,,,,,,,,,,,,]c^gai  , , , , , ,  , , , ,  ,  , , , , , , , , , , , ,  , , ,  , , , ,  , ,  , , , ~ , , , , ,  , , , , , , , g , , , , , , , , , j , , , v , , ,  -   -    -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -! -" -# -$ -% -& -' -( -) -* -+ -, -- -. -/ -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -: -;-<-=->-<-=1?-?-@-A-B-C-D-E-F-G-H-I-J-K-L-F-G-M-N-O-PV V-QV-RVV-SV-TVV-UV-VV-WV-XV-YV-ZV-[V-\V-]V-^V-_V-`V-a-b-c-d-e-b-c-f-g-h-i-j-k-l-m-nU-o-p-qT-r-s6-t-u-v-w-x-y-z-{-|-}u-~--------------t---S-------/.!mn#"-7-9;>-------------------------------------------------------------------@----------------------cRcc-c8c-c-c-c-c-c-cOc-c-c-c-c-c-c-c-cPc-c.c.c.c.c.c.c.c.cc.c. c. c. cc. c. c.c.c.c.c.c.c.c.ccc.ccc.c.c.c.c.c.c.c.c.c. c.!c."c.#c.$c.%c.&c.'c.(c.)c.*c.+c.,c.-c..c./c.0c.1c.2c.3c.4c.5c.6c.7c.8c.9c.:c.;c.<c.=c.>c.?c.@c.Ac.Bc.C.D.E.F.G.H.I.J.K.L.D.E.M.N.O.P.Q.R.SdQd.Td.Ud.Vdd.Wd.Xd.Yd.Zd.[d.\d.]d.^d._d.`d.ad.bd.cd.dd.ed.f.g.h.i.j.k.l.g.h.m.n.o.p.q.r.s[[.t[.u[.v[.w[.x[.y[.z[.{[.|[.}[.~[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[/[/[/[/[/[/[/[/[/[/ [/ [/ / / /////////////r////// /!/"/#/$/%/&/'/(/)/*/+/,/-/.///0/1/2/3/4/5/6/7/8/9/:/;/</=/>/?/@/;/</A'/Bm/C/D/E;/F;/G,/H/I/Jvulkan-3.6-inplaceVulkan.CStructVulkan.CStruct.ExtendsVulkan.CStruct.Utils!Vulkan.Core10.AllocationCallbacksVulkan.Core10.BufferVulkan.Core10.BufferViewVulkan.Core10.CommandBuffer#Vulkan.Core10.CommandBufferBuildingVulkan.Core10.CommandPoolVulkan.Core10.DescriptorSetVulkan.Core10.Device"Vulkan.Core10.DeviceInitialization.Vulkan.Core10.Enums.CommandBufferResetFlagBits,Vulkan.Core10.Enums.CommandPoolResetFlagBitsVulkan.Core10.Enums.CompareOp$Vulkan.Core10.Enums.CullModeFlagBits&Vulkan.Core10.Enums.DependencyFlagBits,Vulkan.Core10.Enums.DescriptorPoolResetFlagsVulkan.Core10.Enums.FilterVulkan.Core10.Enums.FormatVulkan.Core10.Enums.FrontFace'Vulkan.Core10.Enums.ImageCreateFlagBitsVulkan.Core10.Enums.ImageLayoutVulkan.Core10.Enums.ImageTilingVulkan.Core10.Enums.ImageType&Vulkan.Core10.Enums.ImageUsageFlagBitsVulkan.Core10.Enums.IndexType"Vulkan.Core10.Enums.MemoryMapFlagsVulkan.Core10.Enums.ObjectType%Vulkan.Core10.Enums.PipelineBindPoint)Vulkan.Core10.Enums.PipelineStageFlagBits%Vulkan.Core10.Enums.PrimitiveTopology(Vulkan.Core10.Enums.QueryControlFlagBits'Vulkan.Core10.Enums.QueryResultFlagBitsVulkan.Core10.Enums.QueryTypeVulkan.Core10.Enums.Result'Vulkan.Core10.Enums.SampleCountFlagBits'Vulkan.Core10.Enums.ShaderStageFlagBits'Vulkan.Core10.Enums.StencilFaceFlagBitsVulkan.Core10.Enums.StencilOp#Vulkan.Core10.Enums.SubpassContentsVulkan.Core10.Event Vulkan.Core10.ExtensionDiscoveryVulkan.Core10.FenceVulkan.Core10.FuncPointersVulkan.Core10.FundamentalTypesVulkan.Core10.HandlesVulkan.Core10.ImageVulkan.Core10.ImageViewVulkan.Core10.LayerDiscoveryVulkan.Core10.MemoryVulkan.Core10.MemoryManagementVulkan.Core10.OtherTypesVulkan.Core10.PassVulkan.Core10.PipelineVulkan.Core10.PipelineCacheVulkan.Core10.PipelineLayoutVulkan.Core10.QueryVulkan.Core10.QueueVulkan.Core10.QueueSemaphoreVulkan.Core10.SamplerVulkan.Core10.Shader,Vulkan.Core10.SparseResourceMemoryManagement(Vulkan.Core11.Enums.CommandPoolTrimFlags4Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits-Vulkan.Core11.Enums.PeerMemoryFeatureFlagBitsVulkan.Core11.Handles9Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory1Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup0Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage/Vulkan.Core11.Promoted_From_VK_KHR_bind_memory27Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation=Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template/Vulkan.Core11.Promoted_From_VK_KHR_device_groupEVulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory28Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation1Vulkan.Core11.Promoted_From_VK_KHR_external_fence>Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities2Vulkan.Core11.Promoted_From_VK_KHR_external_memory?Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities5Vulkan.Core11.Promoted_From_VK_KHR_external_semaphoreBVulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities;Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2BVulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2/Vulkan.Core11.Promoted_From_VK_KHR_maintenance2/Vulkan.Core11.Promoted_From_VK_KHR_maintenance3,Vulkan.Core11.Promoted_From_VK_KHR_multiview;Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion9Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters4Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers Vulkan.Core126Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing3Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset8Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax6Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout9Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage/Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage8Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address5Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass28Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve4Vulkan.Core12.Promoted_From_VK_KHR_driver_properties4Vulkan.Core12.Promoted_From_VK_KHR_image_format_list8Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebufferAVulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts6Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int646Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int88Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controlsAVulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types5Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphoreAVulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout6Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_modelVulkan.Extensions.Handles/Vulkan.Extensions.VK_AMD_device_coherent_memory+Vulkan.Extensions.VK_AMD_display_native_hdr#Vulkan.Extensions.VK_AMD_gcn_shader.Vulkan.Extensions.VK_AMD_gpu_shader_half_float)Vulkan.Extensions.VK_AMD_gpu_shader_int167Vulkan.Extensions.VK_AMD_memory_overallocation_behavior1Vulkan.Extensions.VK_AMD_mixed_attachment_samples1Vulkan.Extensions.VK_AMD_negative_viewport_height2Vulkan.Extensions.VK_AMD_pipeline_compiler_control,Vulkan.Extensions.VK_AMD_rasterization_order&Vulkan.Extensions.VK_AMD_shader_ballot/Vulkan.Extensions.VK_AMD_shader_core_properties0Vulkan.Extensions.VK_AMD_shader_core_properties29Vulkan.Extensions.VK_AMD_shader_explicit_vertex_parameter-Vulkan.Extensions.VK_AMD_shader_fragment_mask4Vulkan.Extensions.VK_AMD_shader_image_load_store_lod$Vulkan.Extensions.VK_AMD_shader_info.Vulkan.Extensions.VK_AMD_shader_trinary_minmax0Vulkan.Extensions.VK_AMD_texture_gather_bias_lodDVulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer-Vulkan.Extensions.VK_EXT_acquire_xlib_display)Vulkan.Extensions.VK_EXT_astc_decode_mode1Vulkan.Extensions.VK_EXT_blend_operation_advanced.Vulkan.Extensions.VK_EXT_buffer_device_address.Vulkan.Extensions.VK_EXT_calibrated_timestamps.Vulkan.Extensions.VK_EXT_conditional_rendering3Vulkan.Extensions.VK_EXT_conservative_rasterization,Vulkan.Extensions.VK_EXT_custom_border_color%Vulkan.Extensions.VK_EXT_debug_marker%Vulkan.Extensions.VK_EXT_debug_report$Vulkan.Extensions.VK_EXT_debug_utils*Vulkan.Extensions.VK_EXT_depth_clip_enable1Vulkan.Extensions.VK_EXT_depth_range_unrestricted)Vulkan.Extensions.VK_EXT_directfb_surface+Vulkan.Extensions.VK_EXT_discard_rectangles(Vulkan.Extensions.VK_EXT_display_control0Vulkan.Extensions.VK_EXT_display_surface_counter/Vulkan.Extensions.VK_EXT_extended_dynamic_state0Vulkan.Extensions.VK_EXT_external_memory_dma_buf-Vulkan.Extensions.VK_EXT_external_memory_host%Vulkan.Extensions.VK_EXT_filter_cubic-Vulkan.Extensions.VK_EXT_fragment_density_map.Vulkan.Extensions.VK_EXT_fragment_density_map22Vulkan.Extensions.VK_EXT_fragment_shader_interlock.Vulkan.Extensions.VK_EXT_full_screen_exclusive(Vulkan.Extensions.VK_EXT_global_priority%Vulkan.Extensions.VK_EXT_hdr_metadata)Vulkan.Extensions.VK_EXT_headless_surface2Vulkan.Extensions.VK_EXT_image_drm_format_modifier)Vulkan.Extensions.VK_EXT_index_type_uint8-Vulkan.Extensions.VK_EXT_inline_uniform_block+Vulkan.Extensions.VK_EXT_line_rasterization&Vulkan.Extensions.VK_EXT_memory_budget(Vulkan.Extensions.VK_EXT_memory_priority&Vulkan.Extensions.VK_EXT_metal_surface%Vulkan.Extensions.VK_EXT_pci_bus_info8Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control3Vulkan.Extensions.VK_EXT_pipeline_creation_feedback,Vulkan.Extensions.VK_EXT_post_depth_coverage%Vulkan.Extensions.VK_EXT_private_data$Vulkan.Extensions.VK_EXT_robustness2)Vulkan.Extensions.VK_EXT_sample_locations;Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation.Vulkan.Extensions.VK_EXT_shader_stencil_export/Vulkan.Extensions.VK_EXT_shader_subgroup_ballot-Vulkan.Extensions.VK_EXT_shader_subgroup_vote4Vulkan.Extensions.VK_EXT_shader_viewport_index_layer.Vulkan.Extensions.VK_EXT_subgroup_size_control/Vulkan.Extensions.VK_EXT_texel_buffer_alignment5Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr%Vulkan.Extensions.VK_EXT_tooling_info+Vulkan.Extensions.VK_EXT_transform_feedback)Vulkan.Extensions.VK_EXT_validation_cache,Vulkan.Extensions.VK_EXT_validation_features)Vulkan.Extensions.VK_EXT_validation_flags1Vulkan.Extensions.VK_EXT_vertex_attribute_divisor+Vulkan.Extensions.VK_EXT_ycbcr_image_arrays.Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface$Vulkan.Extensions.VK_GGP_frame_token2Vulkan.Extensions.VK_GGP_stream_descriptor_surface+Vulkan.Extensions.VK_GOOGLE_decorate_string*Vulkan.Extensions.VK_GOOGLE_display_timing/Vulkan.Extensions.VK_GOOGLE_hlsl_functionality1%Vulkan.Extensions.VK_GOOGLE_user_type%Vulkan.Extensions.VK_IMG_filter_cubic%Vulkan.Extensions.VK_IMG_format_pvrtc,Vulkan.Extensions.VK_INTEL_performance_query4Vulkan.Extensions.VK_INTEL_shader_integer_functions2(Vulkan.Extensions.VK_KHR_android_surface1Vulkan.Extensions.VK_KHR_deferred_host_operations Vulkan.Extensions.VK_KHR_display*Vulkan.Extensions.VK_KHR_display_swapchain*Vulkan.Extensions.VK_KHR_external_fence_fd-Vulkan.Extensions.VK_KHR_external_fence_win32+Vulkan.Extensions.VK_KHR_external_memory_fd.Vulkan.Extensions.VK_KHR_external_memory_win32.Vulkan.Extensions.VK_KHR_external_semaphore_fd1Vulkan.Extensions.VK_KHR_external_semaphore_win320Vulkan.Extensions.VK_KHR_get_display_properties21Vulkan.Extensions.VK_KHR_get_memory_requirements22Vulkan.Extensions.VK_KHR_get_surface_capabilities2,Vulkan.Extensions.VK_KHR_incremental_present*Vulkan.Extensions.VK_KHR_performance_query7Vulkan.Extensions.VK_KHR_pipeline_executable_properties)Vulkan.Extensions.VK_KHR_pipeline_library(Vulkan.Extensions.VK_KHR_push_descriptor$Vulkan.Extensions.VK_KHR_ray_tracing-Vulkan.Extensions.VK_KHR_relaxed_block_layout%Vulkan.Extensions.VK_KHR_shader_clock/Vulkan.Extensions.VK_KHR_shader_draw_parameters1Vulkan.Extensions.VK_KHR_shader_non_semantic_info1Vulkan.Extensions.VK_KHR_shared_presentable_image"Vulkan.Extensions.VK_KHR_spirv_1_45Vulkan.Extensions.VK_KHR_storage_buffer_storage_class Vulkan.Extensions.VK_KHR_surface7Vulkan.Extensions.VK_KHR_surface_protected_capabilities"Vulkan.Extensions.VK_KHR_swapchain(Vulkan.Extensions.VK_KHR_wayland_surface*Vulkan.Extensions.VK_KHR_win32_keyed_mutex&Vulkan.Extensions.VK_KHR_win32_surface$Vulkan.Extensions.VK_KHR_xcb_surface%Vulkan.Extensions.VK_KHR_xlib_surface$Vulkan.Extensions.VK_MVK_ios_surface&Vulkan.Extensions.VK_MVK_macos_surface"Vulkan.Extensions.VK_NN_vi_surface*Vulkan.Extensions.VK_NVX_image_view_handle6Vulkan.Extensions.VK_NVX_multiview_per_view_attributes,Vulkan.Extensions.VK_NV_clip_space_w_scaling2Vulkan.Extensions.VK_NV_compute_shader_derivatives*Vulkan.Extensions.VK_NV_cooperative_matrix,Vulkan.Extensions.VK_NV_corner_sampled_image/Vulkan.Extensions.VK_NV_coverage_reduction_mode,Vulkan.Extensions.VK_NV_dedicated_allocation;Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing5Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints1Vulkan.Extensions.VK_NV_device_diagnostics_config1Vulkan.Extensions.VK_NV_device_generated_commands'Vulkan.Extensions.VK_NV_external_memory4Vulkan.Extensions.VK_NV_external_memory_capabilities-Vulkan.Extensions.VK_NV_external_memory_win32&Vulkan.Extensions.VK_NV_fill_rectangle2Vulkan.Extensions.VK_NV_fragment_coverage_to_color3Vulkan.Extensions.VK_NV_fragment_shader_barycentric1Vulkan.Extensions.VK_NV_framebuffer_mixed_samples3Vulkan.Extensions.VK_NV_geometry_shader_passthrough#Vulkan.Extensions.VK_NV_glsl_shader#Vulkan.Extensions.VK_NV_mesh_shader#Vulkan.Extensions.VK_NV_ray_tracing4Vulkan.Extensions.VK_NV_representative_fragment_test5Vulkan.Extensions.VK_NV_sample_mask_override_coverage)Vulkan.Extensions.VK_NV_scissor_exclusive.Vulkan.Extensions.VK_NV_shader_image_footprint*Vulkan.Extensions.VK_NV_shader_sm_builtins3Vulkan.Extensions.VK_NV_shader_subgroup_partitioned*Vulkan.Extensions.VK_NV_shading_rate_image'Vulkan.Extensions.VK_NV_viewport_array2(Vulkan.Extensions.VK_NV_viewport_swizzle)Vulkan.Extensions.VK_NV_win32_keyed_mutex4Vulkan.Extensions.VK_QCOM_render_pass_shader_resolve/Vulkan.Extensions.VK_QCOM_render_pass_store_ops/Vulkan.Extensions.VK_QCOM_render_pass_transformVulkan.NamedTypeVulkan.Version Vulkan.Zero3Vulkan.Core12.Enums.ShaderFloatControlsIndependence!Vulkan.Core12.Enums.SemaphoreType(Vulkan.Core12.Enums.SamplerReductionModeVulkan.Core12.Enums.DriverId,Vulkan.Core11.Enums.TessellationDomainOrigin%Vulkan.Core11.Enums.SamplerYcbcrRange/Vulkan.Core11.Enums.SamplerYcbcrModelConversion)Vulkan.Core11.Enums.PointClippingBehavior0Vulkan.Core11.Enums.DescriptorUpdateTemplateType"Vulkan.Core11.Enums.ChromaLocation#Vulkan.Core10.Enums.VertexInputRateVulkan.Core10.Enums.VendorId)Vulkan.Core10.Enums.SystemAllocationScope!Vulkan.Core10.Enums.StructureTypeVulkan.Core10.Enums.SharingMode%Vulkan.Core10.Enums.SamplerMipmapMode&Vulkan.Core10.Enums.SamplerAddressMode5Vulkan.Extensions.VK_KHR_sampler_mirror_clamp_to_edgeVulkan.Exception,Vulkan.Extensions.VK_KHR_vulkan_memory_model7Vulkan.Extensions.VK_KHR_uniform_buffer_standard_layout7Vulkan.Extensions.VK_KHR_shader_subgroup_extended_types.Vulkan.Extensions.VK_KHR_shader_float_controls,Vulkan.Extensions.VK_KHR_shader_float16_int8,Vulkan.Extensions.VK_KHR_shader_atomic_int64%Vulkan.Extensions.VK_KHR_8bit_storage,Vulkan.Extensions.VK_EXT_scalar_block_layout)Vulkan.Core12.Enums.SemaphoreWaitFlagBits'Vulkan.Core12.Enums.ResolveModeFlagBits-Vulkan.Core12.Enums.DescriptorBindingFlagBits*Vulkan.Extensions.VK_KHR_variable_pointers&Vulkan.Extensions.VK_KHR_16bit_storage+Vulkan.Core11.Enums.SubgroupFeatureFlagBits+Vulkan.Core11.Enums.SemaphoreImportFlagBits*Vulkan.Core11.Enums.MemoryAllocateFlagBits'Vulkan.Core11.Enums.FenceImportFlagBits7Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits+Vulkan.Extensions.VK_KHR_external_semaphore4Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits1Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits3Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits'Vulkan.Extensions.VK_KHR_external_fence0Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits7Vulkan.Core11.Enums.DescriptorUpdateTemplateCreateFlags.Vulkan.Core10.Enums.SubpassDescriptionFlagBits,Vulkan.Core10.Enums.SparseMemoryBindFlagBits-Vulkan.Core10.Enums.SparseImageFormatFlagBits.Vulkan.Core10.Enums.ShaderModuleCreateFlagBits(Vulkan.Core10.Enums.SemaphoreCreateFlags)Vulkan.Core10.Enums.SamplerCreateFlagBits,Vulkan.Core10.Enums.RenderPassCreateFlagBits!Vulkan.Core10.Enums.QueueFlagBits(Vulkan.Core10.Enums.QueryPoolCreateFlags2Vulkan.Core10.Enums.QueryPipelineStatisticFlagBitsVulkan.Core10.Enums.PolygonMode4Vulkan.Core10.Enums.PipelineViewportStateCreateFlags7Vulkan.Core10.Enums.PipelineVertexInputStateCreateFlags8Vulkan.Core10.Enums.PipelineTessellationStateCreateFlags5Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits9Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags7Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags-Vulkan.Core10.Enums.PipelineLayoutCreateFlags9Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags3Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags8Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlags*Vulkan.Core10.Enums.PipelineCreateFlagBits6Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlags.Vulkan.Core10.Enums.PipelineCacheHeaderVersion/Vulkan.Core10.Enums.PipelineCacheCreateFlagBits&Vulkan.Core10.Enums.PhysicalDeviceType*Vulkan.Core10.Enums.MemoryPropertyFlagBits&Vulkan.Core10.Enums.MemoryHeapFlagBitsVulkan.Core10.Enums.LogicOp*Vulkan.Core10.Enums.InternalAllocationType'Vulkan.Core10.Enums.InstanceCreateFlags!Vulkan.Core10.Enums.ImageViewType+Vulkan.Core10.Enums.ImageViewCreateFlagBits/Vulkan.Extensions.VK_EXT_separate_stencil_usage7Vulkan.Extensions.VK_KHR_separate_depth_stencil_layouts'Vulkan.Core10.Enums.ImageAspectFlagBits%Vulkan.Extensions.VK_KHR_maintenance2-Vulkan.Core10.Enums.FramebufferCreateFlagBits)Vulkan.Core10.Enums.FormatFeatureFlagBits.Vulkan.Extensions.VK_EXT_sampler_filter_minmax*Vulkan.Extensions.VK_KHR_image_format_list'Vulkan.Core10.Enums.FenceCreateFlagBits$Vulkan.Core10.Enums.EventCreateFlags Vulkan.Core10.Enums.DynamicState-Vulkan.Core10.Enums.DeviceQueueCreateFlagBits%Vulkan.Core10.Enums.DeviceCreateFlags"Vulkan.Core10.Enums.DescriptorType5Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits0Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits,Vulkan.Extensions.VK_EXT_descriptor_indexing"Vulkan.Extensions.VK_KHR_multiview$Vulkan.Core10.Enums.ComponentSwizzle-Vulkan.Core10.Enums.CommandPoolCreateFlagBits.Vulkan.Core10.Enums.CommandBufferUsageFlagBits&Vulkan.Core10.Enums.CommandBufferLevel*Vulkan.Core10.Enums.ColorComponentFlagBits)Vulkan.Core10.Enums.BufferViewCreateFlags'Vulkan.Core10.Enums.BufferUsageFlagBits(Vulkan.Core10.Enums.BufferCreateFlagBitsVulkan.Core10.Enums.BorderColorVulkan.Core10.Enums.BlendOpVulkan.Core10.Enums.BlendFactor%Vulkan.Core10.Enums.AttachmentStoreOp$Vulkan.Core10.Enums.AttachmentLoadOp1Vulkan.Core10.Enums.AttachmentDescriptionFlagBits"Vulkan.Core10.Enums.AccessFlagBitsVulkan.Core10.APIConstants-Vulkan.Extensions.VK_EXT_queue_family_foreign*Vulkan.Extensions.VK_KHR_driver_properties(Vulkan.Extensions.VK_KHR_external_memoryVulkan.Dynamic"Vulkan.Core11.DeviceInitialization&Vulkan.Extensions.VK_AMD_buffer_marker+Vulkan.Extensions.VK_KHR_timeline_semaphore.Vulkan.Extensions.VK_KHR_imageless_framebuffer6Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count,Vulkan.Extensions.VK_KHR_draw_indirect_count,Vulkan.Extensions.VK_AMD_draw_indirect_count.Vulkan.Extensions.VK_KHR_buffer_device_address)Vulkan.Extensions.VK_EXT_host_query_reset/Vulkan.Core11.Promoted_From_VK_KHR_maintenance1%Vulkan.Extensions.VK_KHR_maintenance15Vulkan.Extensions.VK_KHR_external_memory_capabilities4Vulkan.Extensions.VK_KHR_external_fence_capabilities.Vulkan.Extensions.VK_KHR_device_group_creation-Vulkan.Extensions.VK_KHR_dedicated_allocation1Vulkan.Extensions.VK_KHR_swapchain_mutable_format-Vulkan.Extensions.VK_EXT_swapchain_colorspace%Vulkan.Extensions.VK_KHR_device_group,Vulkan.Extensions.VK_EXT_direct_mode_display8Vulkan.Extensions.VK_KHR_external_semaphore_capabilities%Vulkan.Extensions.VK_KHR_bind_memory21Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion8Vulkan.Extensions.VK_KHR_get_physical_device_properties23Vulkan.Extensions.VK_KHR_descriptor_update_template%Vulkan.Extensions.VK_KHR_maintenance3 Vulkan.Core11+Vulkan.Extensions.VK_KHR_create_renderpass2.Vulkan.Extensions.VK_KHR_depth_stencil_resolve Vulkan.Core10%PhysicalDeviceFloatControlsProperties PhysicalDeviceVulkan12PropertiesSemaphoreTypeCreateInfoSamplerReductionModeCreateInfoPhysicalDeviceDriverProperties/PipelineTessellationDomainOriginStateCreateInfo+SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY SamplerYcbcrConversionCreateInfo,AndroidHardwareBufferFormatPropertiesANDROIDFORMAT_R8G8B8A8_UNORMCOMPONENT_SWIZZLE_IDENTITYCOMPONENT_SWIZZLE_BCOMPONENT_SWIZZLE_RCOMPONENT_SWIZZLE_G%PhysicalDevicePointClippingProperties PhysicalDeviceVulkan11Properties"DescriptorUpdateTemplateCreateInfoVertexInputBindingDescription PipelineCacheValidationCacheEXTDeviceInstanceAllocationCallbacksSubpassBeginInfocmdBeginRenderPasscmdNextSubpasscmdExecuteCommandscmdEndRenderPassImageCreateInfo)AccelerationStructureBuildGeometryInfoKHR.AccelerationStructureCreateGeometryTypeInfoKHR"AccelerationStructureCreateInfoKHR!AccelerationStructureCreateInfoNV)AccelerationStructureDeviceAddressInfoKHR)AccelerationStructureGeometryAabbsDataKHR-AccelerationStructureGeometryInstancesDataKHR AccelerationStructureGeometryKHR-AccelerationStructureGeometryTrianglesDataKHRAccelerationStructureInfoNV.AccelerationStructureMemoryRequirementsInfoKHR-AccelerationStructureMemoryRequirementsInfoNVAccelerationStructureVersionKHRAcquireNextImageInfoKHRAcquireProfilingLockInfoKHR&AndroidHardwareBufferPropertiesANDROID!AndroidHardwareBufferUsageANDROIDAndroidSurfaceCreateInfoKHRApplicationInfoAttachmentDescription2"AttachmentDescriptionStencilLayoutAttachmentReference2 AttachmentReferenceStencilLayoutBaseInStructureBaseOutStructure&BindAccelerationStructureMemoryInfoKHRBindBufferMemoryDeviceGroupInfoBindBufferMemoryInfoBindImageMemoryDeviceGroupInfoBindImageMemoryInfoBindImageMemorySwapchainInfoKHRBindImagePlaneMemoryInfoBindSparseInfoBufferCreateInfo BufferDeviceAddressCreateInfoEXTBufferDeviceAddressInfoBufferMemoryBarrierBufferMemoryRequirementsInfo2$BufferOpaqueCaptureAddressCreateInfoBufferViewCreateInfoCalibratedTimestampInfoEXTCheckpointDataNVCommandBufferAllocateInfoCommandBufferBeginInfo3CommandBufferInheritanceConditionalRenderingInfoEXTCommandBufferInheritanceInfo3CommandBufferInheritanceRenderPassTransformInfoQCOMCommandPoolCreateInfoComputePipelineCreateInfo ConditionalRenderingBeginInfoEXTCooperativeMatrixPropertiesNV CopyAccelerationStructureInfoKHR(CopyAccelerationStructureToMemoryInfoKHRCopyDescriptorSet(CopyMemoryToAccelerationStructureInfoKHRD3D12FenceSubmitInfoKHRDebugMarkerMarkerInfoEXTDebugMarkerObjectNameInfoEXTDebugMarkerObjectTagInfoEXT DebugReportCallbackCreateInfoEXTDebugUtilsLabelEXT"DebugUtilsMessengerCallbackDataEXT DebugUtilsMessengerCreateInfoEXTDebugUtilsObjectNameInfoEXTDebugUtilsObjectTagInfoEXT%DedicatedAllocationBufferCreateInfoNV$DedicatedAllocationImageCreateInfoNV'DedicatedAllocationMemoryAllocateInfoNVDeferredOperationInfoKHRDescriptorPoolCreateInfo-DescriptorPoolInlineUniformBlockCreateInfoEXTDescriptorSetAllocateInfo)DescriptorSetLayoutBindingFlagsCreateInfoDescriptorSetLayoutCreateInfoDescriptorSetLayoutSupport0DescriptorSetVariableDescriptorCountAllocateInfo1DescriptorSetVariableDescriptorCountLayoutSupportDeviceCreateInfo#DeviceDiagnosticsConfigCreateInfoNVDeviceEventInfoEXTDeviceGroupBindSparseInfo!DeviceGroupCommandBufferBeginInfoDeviceGroupDeviceCreateInfo!DeviceGroupPresentCapabilitiesKHRDeviceGroupPresentInfoKHRDeviceGroupRenderPassBeginInfoDeviceGroupSubmitInfo!DeviceGroupSwapchainCreateInfoKHR$DeviceMemoryOpaqueCaptureAddressInfo'DeviceMemoryOverallocationCreateInfoAMDDevicePrivateDataCreateInfoEXTDeviceQueueCreateInfo&DeviceQueueGlobalPriorityCreateInfoEXTDeviceQueueInfo2DirectFBSurfaceCreateInfoEXTDisplayEventInfoEXTDisplayModeCreateInfoKHRDisplayModeProperties2KHR&DisplayNativeHdrSurfaceCapabilitiesAMDDisplayPlaneCapabilities2KHRDisplayPlaneInfo2KHRDisplayPlaneProperties2KHRDisplayPowerInfoEXTDisplayPresentInfoKHRDisplayProperties2KHRDisplaySurfaceCreateInfoKHR"DrmFormatModifierPropertiesListEXTEventCreateInfoExportFenceCreateInfoExportFenceWin32HandleInfoKHRExportMemoryAllocateInfoExportMemoryAllocateInfoNVExportMemoryWin32HandleInfoKHRExportMemoryWin32HandleInfoNVExportSemaphoreCreateInfo!ExportSemaphoreWin32HandleInfoKHRExternalBufferPropertiesExternalFencePropertiesExternalFormatANDROIDExternalImageFormatPropertiesExternalMemoryBufferCreateInfoExternalMemoryImageCreateInfoExternalMemoryImageCreateInfoNVExternalSemaphorePropertiesFenceCreateInfoFenceGetFdInfoKHRFenceGetWin32HandleInfoKHR,FilterCubicImageViewImageFormatPropertiesEXTFormatProperties2FramebufferAttachmentImageInfo FramebufferAttachmentsCreateInfoFramebufferCreateInfo$FramebufferMixedSamplesCombinationNVGeneratedCommandsInfoNV)GeneratedCommandsMemoryRequirementsInfoNVGeometryAABBNV GeometryNVGeometryTrianglesNVGraphicsPipelineCreateInfo(GraphicsPipelineShaderGroupsCreateInfoNVGraphicsShaderGroupCreateInfoNVHdrMetadataEXTHeadlessSurfaceCreateInfoEXTIOSSurfaceCreateInfoMVK+ImageDrmFormatModifierExplicitCreateInfoEXT'ImageDrmFormatModifierListCreateInfoEXT#ImageDrmFormatModifierPropertiesEXTImageFormatListCreateInfoImageFormatProperties2ImageMemoryBarrierImageMemoryRequirementsInfo2!ImagePipeSurfaceCreateInfoFUCHSIA ImagePlaneMemoryRequirementsInfo"ImageSparseMemoryRequirementsInfo2ImageStencilUsageCreateInfoImageSwapchainCreateInfoKHRImageViewASTCDecodeModeEXTImageViewAddressPropertiesNVXImageViewCreateInfoImageViewHandleInfoNVXImageViewUsageCreateInfo&ImportAndroidHardwareBufferInfoANDROIDImportFenceFdInfoKHRImportFenceWin32HandleInfoKHRImportMemoryFdInfoKHRImportMemoryHostPointerInfoEXTImportMemoryWin32HandleInfoKHRImportMemoryWin32HandleInfoNVImportSemaphoreFdInfoKHR!ImportSemaphoreWin32HandleInfoKHR"IndirectCommandsLayoutCreateInfoNVIndirectCommandsLayoutTokenNV!InitializePerformanceApiInfoINTELInstanceCreateInfoMacOSSurfaceCreateInfoMVKMappedMemoryRangeMemoryAllocateFlagsInfoMemoryAllocateInfo MemoryBarrierMemoryDedicatedAllocateInfoMemoryDedicatedRequirementsMemoryFdPropertiesKHR)MemoryGetAndroidHardwareBufferInfoANDROIDMemoryGetFdInfoKHRMemoryGetWin32HandleInfoKHRMemoryHostPointerPropertiesEXT&MemoryOpaqueCaptureAddressAllocateInfoMemoryPriorityAllocateInfoEXTMemoryRequirements2MemoryWin32HandlePropertiesKHRMetalSurfaceCreateInfoEXTMultisamplePropertiesEXT(PerformanceConfigurationAcquireInfoINTEL PerformanceCounterDescriptionKHRPerformanceCounterKHRPerformanceMarkerInfoINTELPerformanceOverrideInfoINTELPerformanceQuerySubmitInfoKHR PerformanceStreamMarkerInfoINTEL"PhysicalDevice16BitStorageFeatures!PhysicalDevice8BitStorageFeatures#PhysicalDeviceASTCDecodeFeaturesEXT/PhysicalDeviceBlendOperationAdvancedFeaturesEXT1PhysicalDeviceBlendOperationAdvancedPropertiesEXT)PhysicalDeviceBufferDeviceAddressFeatures,PhysicalDeviceBufferDeviceAddressFeaturesEXT'PhysicalDeviceCoherentMemoryFeaturesAMD0PhysicalDeviceComputeShaderDerivativesFeaturesNV-PhysicalDeviceConditionalRenderingFeaturesEXT4PhysicalDeviceConservativeRasterizationPropertiesEXT)PhysicalDeviceCooperativeMatrixFeaturesNV+PhysicalDeviceCooperativeMatrixPropertiesNV*PhysicalDeviceCornerSampledImageFeaturesNV-PhysicalDeviceCoverageReductionModeFeaturesNV*PhysicalDeviceCustomBorderColorFeaturesEXT,PhysicalDeviceCustomBorderColorPropertiesEXT8PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV(PhysicalDeviceDepthClipEnableFeaturesEXT+PhysicalDeviceDepthStencilResolveProperties(PhysicalDeviceDescriptorIndexingFeatures*PhysicalDeviceDescriptorIndexingProperties/PhysicalDeviceDeviceGeneratedCommandsFeaturesNV1PhysicalDeviceDeviceGeneratedCommandsPropertiesNV)PhysicalDeviceDiagnosticsConfigFeaturesNV+PhysicalDeviceDiscardRectanglePropertiesEXT(PhysicalDeviceExclusiveScissorFeaturesNV-PhysicalDeviceExtendedDynamicStateFeaturesEXT PhysicalDeviceExternalBufferInfoPhysicalDeviceExternalFenceInfo%PhysicalDeviceExternalImageFormatInfo-PhysicalDeviceExternalMemoryHostPropertiesEXT#PhysicalDeviceExternalSemaphoreInfoPhysicalDeviceFeatures2,PhysicalDeviceFragmentDensityMap2FeaturesEXT.PhysicalDeviceFragmentDensityMap2PropertiesEXT+PhysicalDeviceFragmentDensityMapFeaturesEXT-PhysicalDeviceFragmentDensityMapPropertiesEXT1PhysicalDeviceFragmentShaderBarycentricFeaturesNV0PhysicalDeviceFragmentShaderInterlockFeaturesEXTPhysicalDeviceGroupProperties$PhysicalDeviceHostQueryResetFeaturesPhysicalDeviceIDProperties+PhysicalDeviceImageDrmFormatModifierInfoEXTPhysicalDeviceImageFormatInfo2)PhysicalDeviceImageViewImageFormatInfoEXT*PhysicalDeviceImagelessFramebufferFeatures'PhysicalDeviceIndexTypeUint8FeaturesEXT+PhysicalDeviceInlineUniformBlockFeaturesEXT-PhysicalDeviceInlineUniformBlockPropertiesEXT*PhysicalDeviceLineRasterizationFeaturesEXT,PhysicalDeviceLineRasterizationPropertiesEXT$PhysicalDeviceMaintenance3Properties'PhysicalDeviceMemoryBudgetPropertiesEXT'PhysicalDeviceMemoryPriorityFeaturesEXTPhysicalDeviceMemoryProperties2"PhysicalDeviceMeshShaderFeaturesNV$PhysicalDeviceMeshShaderPropertiesNVPhysicalDeviceMultiviewFeatures5PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX!PhysicalDeviceMultiviewProperties%PhysicalDevicePCIBusInfoPropertiesEXT)PhysicalDevicePerformanceQueryFeaturesKHR+PhysicalDevicePerformanceQueryPropertiesKHR5PhysicalDevicePipelineCreationCacheControlFeaturesEXT5PhysicalDevicePipelineExecutablePropertiesFeaturesKHR$PhysicalDevicePrivateDataFeaturesEXTPhysicalDeviceProperties2%PhysicalDeviceProtectedMemoryFeatures'PhysicalDeviceProtectedMemoryProperties)PhysicalDevicePushDescriptorPropertiesKHR#PhysicalDeviceRayTracingFeaturesKHR%PhysicalDeviceRayTracingPropertiesKHR$PhysicalDeviceRayTracingPropertiesNV2PhysicalDeviceRepresentativeFragmentTestFeaturesNV$PhysicalDeviceRobustness2FeaturesEXT&PhysicalDeviceRobustness2PropertiesEXT*PhysicalDeviceSampleLocationsPropertiesEXT+PhysicalDeviceSamplerFilterMinmaxProperties,PhysicalDeviceSamplerYcbcrConversionFeatures'PhysicalDeviceScalarBlockLayoutFeatures1PhysicalDeviceSeparateDepthStencilLayoutsFeatures'PhysicalDeviceShaderAtomicInt64Features$PhysicalDeviceShaderClockFeaturesKHR&PhysicalDeviceShaderCoreProperties2AMD%PhysicalDeviceShaderCorePropertiesAMD7PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT*PhysicalDeviceShaderDrawParametersFeatures'PhysicalDeviceShaderFloat16Int8Features,PhysicalDeviceShaderImageFootprintFeaturesNV2PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL(PhysicalDeviceShaderSMBuiltinsFeaturesNV*PhysicalDeviceShaderSMBuiltinsPropertiesNV1PhysicalDeviceShaderSubgroupExtendedTypesFeatures(PhysicalDeviceShadingRateImageFeaturesNV*PhysicalDeviceShadingRateImagePropertiesNV$PhysicalDeviceSparseImageFormatInfo2 PhysicalDeviceSubgroupProperties,PhysicalDeviceSubgroupSizeControlFeaturesEXT.PhysicalDeviceSubgroupSizeControlPropertiesEXTPhysicalDeviceSurfaceInfo2KHR-PhysicalDeviceTexelBufferAlignmentFeaturesEXT/PhysicalDeviceTexelBufferAlignmentPropertiesEXT2PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT'PhysicalDeviceTimelineSemaphoreFeatures)PhysicalDeviceTimelineSemaphorePropertiesPhysicalDeviceToolPropertiesEXT*PhysicalDeviceTransformFeedbackFeaturesEXT,PhysicalDeviceTransformFeedbackPropertiesEXT1PhysicalDeviceUniformBufferStandardLayoutFeatures&PhysicalDeviceVariablePointersFeatures/PhysicalDeviceVertexAttributeDivisorFeaturesEXT1PhysicalDeviceVertexAttributeDivisorPropertiesEXTPhysicalDeviceVulkan11FeaturesPhysicalDeviceVulkan12Features'PhysicalDeviceVulkanMemoryModelFeatures)PhysicalDeviceYcbcrImageArraysFeaturesEXTPipelineCacheCreateInfo,PipelineColorBlendAdvancedStateCreateInfoEXT!PipelineColorBlendStateCreateInfo$PipelineCompilerControlCreateInfoAMD+PipelineCoverageModulationStateCreateInfoNV*PipelineCoverageReductionStateCreateInfoNV(PipelineCoverageToColorStateCreateInfoNV%PipelineCreationFeedbackCreateInfoEXT#PipelineDepthStencilStateCreateInfo*PipelineDiscardRectangleStateCreateInfoEXTPipelineDynamicStateCreateInfoPipelineExecutableInfoKHR+PipelineExecutableInternalRepresentationKHRPipelineExecutablePropertiesKHRPipelineExecutableStatisticKHRPipelineInfoKHR$PipelineInputAssemblyStateCreateInfoPipelineLayoutCreateInfoPipelineLibraryCreateInfoKHR"PipelineMultisampleStateCreateInfo3PipelineRasterizationConservativeStateCreateInfoEXT0PipelineRasterizationDepthClipStateCreateInfoEXT+PipelineRasterizationLineStateCreateInfoEXT$PipelineRasterizationStateCreateInfo/PipelineRasterizationStateRasterizationOrderAMD-PipelineRasterizationStateStreamCreateInfoEXT3PipelineRepresentativeFragmentTestStateCreateInfoNV)PipelineSampleLocationsStateCreateInfoEXTPipelineShaderStageCreateInfo4PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT#PipelineTessellationStateCreateInfo,PipelineVertexInputDivisorStateCreateInfoEXT"PipelineVertexInputStateCreateInfo2PipelineViewportCoarseSampleOrderStateCreateInfoNV1PipelineViewportExclusiveScissorStateCreateInfoNV1PipelineViewportShadingRateImageStateCreateInfoNVPipelineViewportStateCreateInfo(PipelineViewportSwizzleStateCreateInfoNV)PipelineViewportWScalingStateCreateInfoNVPresentFrameTokenGGPPresentInfoKHRPresentRegionsKHRPresentTimesInfoGOOGLEPrivateDataSlotCreateInfoEXTProtectedSubmitInfoQueryPoolCreateInfo!QueryPoolPerformanceCreateInfoKHR(QueryPoolPerformanceQueryCreateInfoINTEL!QueueFamilyCheckpointPropertiesNVQueueFamilyProperties2RayTracingPipelineCreateInfoKHRRayTracingPipelineCreateInfoNV(RayTracingPipelineInterfaceCreateInfoKHR"RayTracingShaderGroupCreateInfoKHR!RayTracingShaderGroupCreateInfoNVRenderPassAttachmentBeginInfoRenderPassBeginInfoRenderPassCreateInfoRenderPassCreateInfo2)RenderPassFragmentDensityMapCreateInfoEXT)RenderPassInputAttachmentAspectCreateInfoRenderPassMultiviewCreateInfo%RenderPassSampleLocationsBeginInfoEXT RenderPassTransformBeginInfoQCOMSampleLocationsInfoEXTSamplerCreateInfo%SamplerCustomBorderColorCreateInfoEXT+SamplerYcbcrConversionImageFormatPropertiesSamplerYcbcrConversionInfoSemaphoreCreateInfoSemaphoreGetFdInfoKHRSemaphoreGetWin32HandleInfoKHRSemaphoreSignalInfoSemaphoreWaitInfoShaderModuleCreateInfo(ShaderModuleValidationCacheCreateInfoEXT#SharedPresentSurfaceCapabilitiesKHRSparseImageFormatProperties2SparseImageMemoryRequirements2$StreamDescriptorSurfaceCreateInfoGGP SubmitInfoSubpassDependency2SubpassDescription2%SubpassDescriptionDepthStencilResolveSubpassEndInfoSurfaceCapabilities2EXTSurfaceCapabilities2KHR)SurfaceCapabilitiesFullScreenExclusiveEXTSurfaceFormat2KHR!SurfaceFullScreenExclusiveInfoEXT&SurfaceFullScreenExclusiveWin32InfoEXTSurfaceProtectedCapabilitiesKHRSwapchainCounterCreateInfoEXTSwapchainCreateInfoKHR&SwapchainDisplayNativeHdrCreateInfoAMD#TextureLODGatherFormatPropertiesAMDTimelineSemaphoreSubmitInfoValidationCacheCreateInfoEXTValidationFeaturesEXTValidationFlagsEXTViSurfaceCreateInfoNNWaylandSurfaceCreateInfoKHR$Win32KeyedMutexAcquireReleaseInfoKHR#Win32KeyedMutexAcquireReleaseInfoNVWin32SurfaceCreateInfoKHRWriteDescriptorSet*WriteDescriptorSetAccelerationStructureKHR'WriteDescriptorSetInlineUniformBlockEXTXcbSurfaceCreateInfoKHRXlibSurfaceCreateInfoKHRPhysicalDeviceLimitsPhysicalDeviceMemoryPropertiesStencilOpStatecmdSetStencilOpEXTIMAGE_LAYOUT_UNDEFINEDIMAGE_LAYOUT_PREINITIALIZEDendCommandBuffer0FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT BufferCopyBufferImageCopyDescriptorBufferInfoImageFormatPropertiesIndirectCommandsStreamNV MemoryHeapMemoryRequirementsSparseImageMemoryBindSparseImageMemoryRequirementsSparseMemoryBindStridedBufferRegionKHRSubresourceLayoutbindBufferMemorybindImageMemorycmdBeginTransformFeedbackEXTcmdBindIndexBuffer"cmdBindTransformFeedbackBuffersEXTcmdBindVertexBufferscmdBindVertexBuffers2EXT(cmdBuildAccelerationStructureIndirectKHRcmdBuildAccelerationStructureNVcmdCopyQueryPoolResultscmdDispatchIndirectcmdDrawIndexedIndirectcmdDrawIndexedIndirectCountcmdDrawIndexedIndirectCountAMDcmdDrawIndexedIndirectCountKHRcmdDrawIndirectcmdDrawIndirectByteCountEXTcmdDrawIndirectCountcmdDrawIndirectCountAMDcmdDrawIndirectCountKHRcmdDrawMeshTasksIndirectCountNVcmdDrawMeshTasksIndirectNVcmdEndTransformFeedbackEXT cmdFillBuffercmdTraceRaysIndirectKHRcmdTraceRaysNVcmdUpdateBuffercmdWriteBufferMarkerAMDgetDeviceMemoryCommitmentgetQueryPoolResults mapMemory BindIndexBufferIndirectCommandNV!BindVertexBufferIndirectCommandNVDeviceOrHostAddressConstKHRDeviceOrHostAddressKHRDisplayPropertiesKHRPerformanceValueDataINTELPhysicalDeviceFeaturesPhysicalDeviceSparseProperties!PipelineColorBlendAttachmentState#PipelineExecutableStatisticValueKHRcmdExecuteGeneratedCommandsNVcmdSetDepthBoundsTestEnableEXTcmdSetDepthTestEnableEXTcmdSetDepthWriteEnableEXTcmdSetStencilTestEnableEXT"getPhysicalDeviceSurfaceSupportKHRsetLocalDimmingAMD waitForFences ClearRectcmdSetDiscardRectangleEXTcmdSetExclusiveScissorNV cmdSetScissorcmdSetScissorWithCountEXT%getPhysicalDevicePresentRectanglesKHR ImageBlit ImageCopy ImageResolveDisplayPlaneCapabilitiesKHR RectLayerKHRQueueFamilyPropertiesSparseImageFormatPropertiesDisplayModeParametersKHRSurfaceCapabilitiesKHRgetRenderAreaGranularityColorComponentFlagsColorComponentFlagBitsFALSEAttachmentDescriptionTRUE#COVERAGE_REDUCTION_MODE_TRUNCATE_NVFormatFORMAT_R8_UINTFORMAT_R8_SINTFORMAT_R16_UINTFORMAT_R16_SINTFORMAT_R32_UINTFORMAT_R32_SINT"IMAGE_CREATE_CORNER_SAMPLED_BIT_NV"SWAPCHAIN_CREATE_PROTECTED_BIT_KHRcreateSwapchainKHRVERTEX_INPUT_RATE_INSTANCE createDevice FORMAT_FEATURE_SAMPLED_IMAGE_BITFORMAT_FEATURE_BLIT_SRC_BIT.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT!FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT!FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT!FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT"FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT"FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT"FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT!getPhysicalDeviceFormatProperties&getPhysicalDeviceImageFormatProperties NULL_HANDLEcreateGraphicsPipelinescreateRayTracingPipelinesKHRcreateRayTracingPipelinesNVcreateComputePipelines9PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT/PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT5PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT7DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT(DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT(DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BITINDEX_TYPE_UINT8_EXT7SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT PIPELINE_STAGE_VERTEX_SHADER_BIT ImageViewPipelineLayout7IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT SampleMask0ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT ACCESS_COLOR_ATTACHMENT_READ_BIT"updateDescriptorSetWithTemplateKHRupdateDescriptorSetsVulkan.Core12.Enums cmdCopyBuffer cmdCopyImagecmdCopyBufferToImagecmdCopyImageToBuffer&BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT#getDeviceMemoryOpaqueCaptureAddress#ExternalSemaphoreHandleTypeFlagBitsgetMemoryFdPropertiesKHR!getMemoryHostPointerPropertiesEXT!getMemoryWin32HandlePropertiesKHRAHardwareBuffer?EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID3EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT>EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXTExternalFenceHandleTypeFlagBitstrimCommandPooltrimCommandPoolKHRVulkan.Core11.EnumsgetShaderInfoAMDQUEUE_GRAPHICS_BITQUEUE_COMPUTE_BIT@PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT;PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXTShaderStageFlagBitsSHADER_STAGE_COMPUTE_BITIMAGE_CREATE_SUBSAMPLED_BIT_EXT)getPhysicalDeviceMultisamplePropertiesEXT,getPhysicalDeviceSparseImageFormatProperties!DEVICE_QUEUE_CREATE_PROTECTED_BIT+cmdWriteAccelerationStructuresPropertiesKHR*cmdWriteAccelerationStructuresPropertiesNV(writeAccelerationStructuresPropertiesKHRcmdSetPrimitiveTopologyEXTcmdWriteTimestamp cmdPreprocessGeneratedCommandsNV AccessFlags cmdBlitImagecmdResolveImagecmdClearAttachmentsPIPELINE_CREATE_DISPATCH_BASEcmdDispatchBasecompileDeferredNV"getPipelineExecutableStatisticsKHR/getPipelineExecutableInternalRepresentationsKHRPipelinePIPELINE_COMPILE_REQUIRED_EXTcreatePipelineCachegetPipelineCacheDataSubpassDescriptioncmdBindDescriptorSetscmdBindPipelinecmdBindPipelineShaderGroupNVcmdPushDescriptorSetKHRPhysicalDevicePropertiesPhysicalDeviceQueue Semaphore CommandBufferFence DeviceMemoryBufferImageEvent QueryPool BufferView ShaderModule RenderPassDescriptorSetLayoutSamplerDescriptorPool DescriptorSet Framebuffer CommandPoolSamplerYcbcrConversionDescriptorUpdateTemplate SurfaceKHR SwapchainKHR DisplayKHRDisplayModeKHRDebugReportCallbackEXTIndirectCommandsLayoutNVDebugUtilsMessengerEXTAccelerationStructureKHRPerformanceConfigurationINTELgetPrivateDataEXTsetPrivateDataEXTflushMappedMemoryRangesinvalidateMappedMemoryRangesMEMORY_HEAP_DEVICE_LOCAL_BIT$PFN_vkInternalAllocationNotificationPFN_vkInternalFreeNotificationgetDeviceProcAddrgetInstanceProcAddrdestroyInstanceERROR_OUT_OF_HOST_MEMORYcreateImageView/PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT DESCRIPTOR_TYPE_INPUT_ATTACHMENT$MEMORY_PROPERTY_LAZILY_ALLOCATED_BITDESCRIPTOR_TYPE_STORAGE_IMAGEDESCRIPTOR_TYPE_SAMPLED_IMAGE&DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'getPhysicalDeviceImageFormatProperties2$IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT(IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT IMAGE_USAGE_INPUT_ATTACHMENT_BITImageUsageFlagBits0getPhysicalDeviceExternalImageFormatPropertiesNV&getImageDrmFormatModifierPropertiesEXTDescriptorImageInfoAttachmentReferencecmdBindShadingRateImageNVcmdClearColorImagecmdClearDepthStencilImagequeuePresentKHRacquireNextImageKHR%IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV(IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXTIMAGE_TILING_OPTIMALIMAGE_USAGE_TRANSFER_DST_BITIMAGE_USAGE_TRANSFER_SRC_BITIMAGE_USAGE_SAMPLED_BIT IMAGE_USAGE_COLOR_ATTACHMENT_BITIMAGE_ASPECT_DEPTH_BITIMAGE_ASPECT_STENCIL_BITbindImageMemory2IMAGE_VIEW_TYPE_2DIMAGE_VIEW_TYPE_2D_ARRAY!SAMPLER_CREATE_SUBSAMPLED_BIT_EXTDescriptorSetLayoutBindingIMAGE_VIEW_TYPE_CUBEIMAGE_VIEW_TYPE_CUBE_ARRAYMEMORY_HEAP_MULTI_INSTANCE_BITIMAGE_ASPECT_METADATA_BITImageAspectFlagBitscmdSetFrontFaceEXTDrmFormatModifierPropertiesEXT FILTER_LINEARSAMPLER_MIPMAP_MODE_LINEARSamplerReductionMode1FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXTFILTER_CUBIC_EXTCHROMA_LOCATION_MIDPOINTCHROMA_LOCATION_COSITED_EVENIMAGE_CREATE_DISJOINT_BITgetPhysicalDeviceProperties$DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER$DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFERVertexInputAttributeDescriptionSurfaceFormatKHR"getPhysicalDeviceFormatProperties2%getPhysicalDeviceFormatProperties2KHRgetImageSubresourceLayoutIMAGE_ASPECT_PLANE_0_BITIMAGE_ASPECT_PLANE_1_BITIMAGE_ASPECT_PLANE_2_BITFORMAT_R16G16B16A16_SFLOATFORMAT_E5B9G9R9_UFLOAT_PACK32cmdSetViewportWScalingNVDiscardRectangleModeEXTcmdSetSampleLocationsEXT"cmdSetViewportShadingRatePaletteNVcmdSetCoarseSampleOrderNVcmdSetLineStippleEXTcmdSetCullModeEXTcmdSetViewportWithCountEXTcmdSetDepthCompareOpEXTcmdSetStencilReferencecmdSetStencilWriteMaskcmdSetStencilCompareMaskcmdSetDepthBoundscmdSetBlendConstantscmdSetDepthBiascmdSetLineWidthcmdSetViewportDescriptorPoolSizeDescriptorUpdateTemplateEntry,DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BITresetDescriptorPoolallocateDescriptorSetsfreeDescriptorSetsDESCRIPTOR_TYPE_UNIFORM_BUFFERDESCRIPTOR_TYPE_SAMPLERDESCRIPTOR_TYPE_STORAGE_BUFFER&DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC&DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC/SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVXComponentMappingresetCommandBufferbeginCommandBuffergetBufferDeviceAddresscmdBeginConditionalRenderingEXTcmdTraceRaysKHR cmdBuildAccelerationStructureKHR)ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT!ACCESS_COLOR_ATTACHMENT_WRITE_BIT(ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT PIPELINE_STAGE_DRAW_INDIRECT_BITPIPELINE_STAGE_VERTEX_INPUT_BIT!PIPELINE_STAGE_TASK_SHADER_BIT_NV!PIPELINE_STAGE_MESH_SHADER_BIT_NV)PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT1PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"PIPELINE_STAGE_GEOMETRY_SHADER_BIT"PIPELINE_STAGE_FRAGMENT_SHADER_BIT!PIPELINE_STAGE_COMPUTE_SHADER_BIT*PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT&PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BITPIPELINE_STAGE_TRANSFER_BITPIPELINE_STAGE_HOST_BIT(PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV,PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT(PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV)PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT3PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHRVulkan.Core10.EnumsallocateMemorycreateAccelerationStructureKHRcreateAccelerationStructureNVcreateAndroidSurfaceKHR createBuffercreateBufferViewcreateCommandPoolcreateDebugReportCallbackEXTcreateDebugUtilsMessengerEXTcreateDeferredOperationKHRcreateDescriptorPoolcreateDescriptorSetLayoutcreateDescriptorUpdateTemplate!createDescriptorUpdateTemplateKHRcreateDirectFBSurfaceEXTcreateDisplayModeKHRcreateDisplayPlaneSurfaceKHR createEvent createFencecreateFramebuffercreateHeadlessSurfaceEXTcreateIOSSurfaceMVK createImagecreateImagePipeSurfaceFUCHSIAcreateIndirectCommandsLayoutNVcreateInstancecreateMacOSSurfaceMVKcreateMetalSurfaceEXTcreatePipelineLayoutcreatePrivateDataSlotEXTcreateQueryPoolcreateRenderPasscreateRenderPass2createRenderPass2KHR createSamplercreateSamplerYcbcrConversioncreateSamplerYcbcrConversionKHRcreateSemaphorecreateShaderModulecreateSharedSwapchainsKHR createStreamDescriptorSurfaceGGPcreateValidationCacheEXTcreateViSurfaceNNcreateWaylandSurfaceKHRcreateWin32SurfaceKHRcreateXcbSurfaceKHRcreateXlibSurfaceKHRdestroyAccelerationStructureKHRdestroyAccelerationStructureNV destroyBufferdestroyBufferViewdestroyCommandPooldestroyDebugReportCallbackEXTdestroyDebugUtilsMessengerEXTdestroyDeferredOperationKHRdestroyDescriptorPooldestroyDescriptorSetLayoutdestroyDescriptorUpdateTemplate"destroyDescriptorUpdateTemplateKHR destroyDevice destroyEvent destroyFencedestroyFramebuffer destroyImagedestroyImageViewdestroyIndirectCommandsLayoutNVdestroyPipelinedestroyPipelineCachedestroyPipelineLayoutdestroyPrivateDataSlotEXTdestroyQueryPooldestroyRenderPassdestroySamplerdestroySamplerYcbcrConversion destroySamplerYcbcrConversionKHRdestroySemaphoredestroyShaderModuledestroySurfaceKHRdestroySwapchainKHRdestroyValidationCacheEXT freeMemoryregisterDeviceEventEXTregisterDisplayEventEXT ExternalMemoryHandleTypeFlagBitsgetSemaphoreCounterValuegetSemaphoreCounterValueKHRgetDeviceQueuegetDeviceQueue2getQueueCheckpointDataNVqueueBeginDebugUtilsLabelEXTqueueBindSparsequeueEndDebugUtilsLabelEXTqueueInsertDebugUtilsLabelEXT%queueSetPerformanceConfigurationINTEL queueSubmit queueWaitIdle cmdBeginQuerycmdBeginQueryIndexedEXT cmdEndQuerycmdEndQueryIndexedEXTcmdResetQueryPoolresetQueryPoolresetQueryPoolEXTcmdPushConstants#cmdPushDescriptorSetWithTemplateKHRmergePipelineCaches/getRayTracingCaptureReplayShaderGroupHandlesKHR"getRayTracingShaderGroupHandlesKHR!getRayTracingShaderGroupHandlesNVacquireXlibDisplayEXT"enumerateDeviceExtensionPropertiesenumerateDeviceLayerProperties=enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHRenumeratePhysicalDevicesgetDisplayModeProperties2KHRgetDisplayModePropertiesKHRgetDisplayPlaneCapabilities2KHRgetDisplayPlaneCapabilitiesKHR#getDisplayPlaneSupportedDisplaysKHR,getPhysicalDeviceCalibrateableTimeDomainsEXT.getPhysicalDeviceCooperativeMatrixPropertiesNV/getPhysicalDeviceDirectFBPresentationSupportEXT+getPhysicalDeviceDisplayPlaneProperties2KHR*getPhysicalDeviceDisplayPlanePropertiesKHR&getPhysicalDeviceDisplayProperties2KHR%getPhysicalDeviceDisplayPropertiesKHR)getPhysicalDeviceExternalBufferProperties,getPhysicalDeviceExternalBufferPropertiesKHR(getPhysicalDeviceExternalFenceProperties+getPhysicalDeviceExternalFencePropertiesKHR,getPhysicalDeviceExternalSemaphoreProperties/getPhysicalDeviceExternalSemaphorePropertiesKHRgetPhysicalDeviceFeaturesgetPhysicalDeviceFeatures2getPhysicalDeviceFeatures2KHR*getPhysicalDeviceImageFormatProperties2KHR!getPhysicalDeviceMemoryProperties"getPhysicalDeviceMemoryProperties2%getPhysicalDeviceMemoryProperties2KHRgetPhysicalDeviceProperties2getPhysicalDeviceProperties2KHR5getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR&getPhysicalDeviceQueueFamilyProperties'getPhysicalDeviceQueueFamilyProperties2*getPhysicalDeviceQueueFamilyProperties2KHR-getPhysicalDeviceSparseImageFormatProperties20getPhysicalDeviceSparseImageFormatProperties2KHR?getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(getPhysicalDeviceSurfaceCapabilities2EXT(getPhysicalDeviceSurfaceCapabilities2KHR'getPhysicalDeviceSurfaceCapabilitiesKHR#getPhysicalDeviceSurfaceFormats2KHR"getPhysicalDeviceSurfaceFormatsKHR(getPhysicalDeviceSurfacePresentModes2EXT'getPhysicalDeviceSurfacePresentModesKHR"getPhysicalDeviceToolPropertiesEXT.getPhysicalDeviceWaylandPresentationSupportKHR,getPhysicalDeviceWin32PresentationSupportKHR*getPhysicalDeviceXcbPresentationSupportKHR+getPhysicalDeviceXlibPresentationSupportKHRgetRandROutputDisplayEXTreleaseDisplayEXTdebugReportMessageEXTenumeratePhysicalDeviceGroups enumeratePhysicalDeviceGroupsKHRsubmitDebugUtilsMessageEXTgetImageViewAddressNVXSparseImageMemoryBindInfoSparseImageOpaqueMemoryBindInfogetImageMemoryRequirements getImageSparseMemoryRequirementsgetSwapchainImagesKHRgetFenceStatus resetFences cmdResetEvent cmdSetEvent cmdWaitEventsgetEventStatus resetEventsetEvent!acquireFullScreenExclusiveModeEXTacquireNextImage2KHR$acquirePerformanceConfigurationINTELacquireProfilingLockKHRallocateCommandBuffers"bindAccelerationStructureMemoryKHR!bindAccelerationStructureMemoryNVbindBufferMemory2bindBufferMemory2KHRbindImageMemory2KHRbuildAccelerationStructureKHRcopyAccelerationStructureKHR$copyAccelerationStructureToMemoryKHR$copyMemoryToAccelerationStructureKHRdebugMarkerSetObjectNameEXTdebugMarkerSetObjectTagEXTdeferredOperationJoinKHRdeviceWaitIdledisplayPowerControlEXTfreeCommandBuffers(getAccelerationStructureDeviceAddressKHR getAccelerationStructureHandleNV-getAccelerationStructureMemoryRequirementsKHR,getAccelerationStructureMemoryRequirementsNV)getAndroidHardwareBufferPropertiesANDROIDgetBufferDeviceAddressEXTgetBufferDeviceAddressKHRgetBufferMemoryRequirementsgetBufferMemoryRequirements2getBufferMemoryRequirements2KHRgetBufferOpaqueCaptureAddress getBufferOpaqueCaptureAddressKHRgetCalibratedTimestampsEXT%getDeferredOperationMaxConcurrencyKHRgetDeferredOperationResultKHRgetDescriptorSetLayoutSupport getDescriptorSetLayoutSupportKHR.getDeviceAccelerationStructureCompatibilityKHR getDeviceGroupPeerMemoryFeatures#getDeviceGroupPeerMemoryFeaturesKHR$getDeviceGroupPresentCapabilitiesKHR%getDeviceGroupSurfacePresentModes2EXT$getDeviceGroupSurfacePresentModesKHR&getDeviceMemoryOpaqueCaptureAddressKHR getFenceFdKHRgetFenceWin32HandleKHR(getGeneratedCommandsMemoryRequirementsNVgetImageMemoryRequirements2getImageMemoryRequirements2KHR!getImageSparseMemoryRequirements2$getImageSparseMemoryRequirements2KHRgetImageViewHandleNVX%getMemoryAndroidHardwareBufferANDROIDgetMemoryFdKHRgetMemoryWin32HandleKHRgetMemoryWin32HandleNVgetPastPresentationTimingGOOGLEgetPerformanceParameterINTEL"getPipelineExecutablePropertiesKHRgetRefreshCycleDurationGOOGLEgetSemaphoreFdKHRgetSemaphoreWin32HandleKHRgetSwapchainCounterEXTgetSwapchainStatusKHRgetValidationCacheDataEXTimportFenceFdKHRimportFenceWin32HandleKHRimportSemaphoreFdKHRimportSemaphoreWin32HandleKHRinitializePerformanceApiINTELmergeValidationCachesEXT!releaseFullScreenExclusiveModeEXT$releasePerformanceConfigurationINTELreleaseProfilingLockKHRresetCommandPoolsetDebugUtilsObjectNameEXTsetDebugUtilsObjectTagEXTsetHdrMetadataEXTsignalSemaphoresignalSemaphoreKHRuninitializePerformanceApiINTEL unmapMemoryupdateDescriptorSetWithTemplatewaitSemaphoreswaitSemaphoresKHRcmdBeginDebugUtilsLabelEXTcmdBeginRenderPass2cmdBeginRenderPass2KHRcmdCopyAccelerationStructureKHRcmdCopyAccelerationStructureNV'cmdCopyAccelerationStructureToMemoryKHR'cmdCopyMemoryToAccelerationStructureKHRcmdDebugMarkerBeginEXTcmdDebugMarkerEndEXTcmdDebugMarkerInsertEXT cmdDispatchcmdDispatchBaseKHRcmdDrawcmdDrawIndexedcmdDrawMeshTasksNVcmdEndConditionalRenderingEXTcmdEndDebugUtilsLabelEXTcmdEndRenderPass2cmdEndRenderPass2KHRcmdInsertDebugUtilsLabelEXTcmdNextSubpass2cmdNextSubpass2KHRcmdPipelineBarriercmdSetCheckpointNVcmdSetDeviceMaskcmdSetDeviceMaskKHRcmdSetPerformanceMarkerINTELcmdSetPerformanceOverrideINTEL"cmdSetPerformanceStreamMarkerINTELSparseBufferMemoryBindInfo-DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NVSampleCountFlags"DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT ImageViewTypeSAMPLER_REDUCTION_MODE_MINSAMPLER_REDUCTION_MODE_MAXSamplerAddressMode"SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGEIMAGE_VIEW_TYPE_3DIMAGE_VIEW_TYPE_1D_ARRAYPIPELINE_BIND_POINT_GRAPHICS6IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT%DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT$DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT$DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT BUFFER_USAGE_INDIRECT_BUFFER_BITIMAGE_CREATE_SPARSE_BINDING_BIT!IMAGE_CREATE_SPARSE_RESIDENCY_BITIMAGE_CREATE_SPARSE_ALIASED_BITIMAGE_USAGE_STORAGE_BIT-EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT1EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BITPIPELINE_CREATE_LIBRARY_BIT_KHR*PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR8PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR SemaphoreTypeSEMAPHORE_TYPE_BINARY,EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT*EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BITSEMAPHORE_IMPORT_TEMPORARY_BITSEMAPHORE_TYPE_TIMELINESemaphoreImportFlagBits-EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR(EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT&EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BITFenceImportFlagBits(QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT.BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT WHOLE_SIZE6BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXTQUERY_TYPE_TIMESTAMPQUERY_TYPE_OCCLUSIONQUERY_TYPE_PIPELINE_STATISTICS QUERY_TYPE_PERFORMANCE_QUERY_KHR,PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR)PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR"DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT!ERROR_INVALID_EXTERNAL_HANDLE_KHRExternalMemoryProperties#DYNAMIC_STATE_DISCARD_RECTANGLE_EXT*BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXTACCESS_TRANSFER_WRITE_BITBUFFER_USAGE_TRANSFER_DST_BITImageCreateFlagBitsDrawIndirectCommandDrawIndexedIndirectCommandERROR_FORMAT_NOT_SUPPORTEDBufferCreateFlagBitsBufferUsageFlagBitsATTACHMENT_LOAD_OP_CLEAR BUFFER_CREATE_SPARSE_BINDING_BIT,EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT0EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT*EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT)EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BITDisplayModePropertiesKHRDisplayPlanePropertiesKHR CAMetalLayerCOLOR_SPACE_DCI_P3_LINEAR_EXTFORMAT_UNDEFINED%RENDER_PASS_CREATE_TRANSFORM_BIT_QCOMSHARING_MODE_CONCURRENTIMAGE_LAYOUT_PRESENT_SRC_KHRIMAGE_LAYOUT_SHARED_PRESENT_KHR!PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BITControl.Exceptionbracket"QUERY_TYPE_PERFORMANCE_QUERY_INTEL UUID_SIZEOBJECT_TYPE_UNKNOWN4DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHRAccelerationStructureNV*DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHRPipelineCacheHeaderVersion!PIPELINE_CACHE_HEADER_VERSION_ONEBUFFER_CREATE_PROTECTED_BITMEMORY_PROPERTY_PROTECTED_BIT"MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT(ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHRIMAGE_CREATE_PROTECTED_BIT%BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT%BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT'FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BITFormatProperties'FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,PhysicalDeviceBufferDeviceAddressFeaturesKHR*BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR&MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR$IMAGE_TILING_DRM_FORMAT_MODIFIER_EXTPFORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT'SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGEIMAGE_VIEW_TYPE_1DCOMMAND_BUFFER_LEVEL_SECONDARY(COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT)COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BITSHARING_MODE_EXCLUSIVEPerformanceCounterResultKHRATTACHMENT_UNUSED,IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL7IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL7IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL)FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BITViewportWScalingNVShadingRatePaletteNV%LINE_RASTERIZATION_MODE_BRESENHAM_EXT.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXTINDEX_TYPE_UINT32INDEX_TYPE_UINT16 FORMAT_FEATURE_VERTEX_BUFFER_BITPushConstantRange(PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NVBUFFER_USAGE_VERTEX_BUFFER_BITBUFFER_USAGE_INDEX_BUFFER_BITFRONT_FACE_CLOCKWISEFRONT_FACE_COUNTER_CLOCKWISE FrontFaceSHADER_STAGE_RAYGEN_BIT_KHRSHADER_STAGE_MISS_BIT_KHRSHADER_STAGE_CALLABLE_BIT_KHR!SHADER_STAGE_INTERSECTION_BIT_KHR SHADER_STAGE_CLOSEST_HIT_BIT_KHRSHADER_STAGE_ANY_HIT_BIT_KHRPIPELINE_CREATE_DERIVATIVE_BIT;PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR?PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR2PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHRPipelineCreateFlagBitsINDEX_TYPE_NONE_KHR;FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR BUFFER_USAGE_RAY_TRACING_BIT_KHR@PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR8PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR%PIPELINE_CREATE_ALLOW_DERIVATIVES_BITSHADER_UNUSED_NV$PIPELINE_CREATE_DEFER_COMPILE_BIT_NVFORMAT_R32G32B32_SFLOATFORMAT_R32G32_SFLOATFORMAT_R16G16B16_SFLOATFORMAT_R16G16_SFLOATFORMAT_R16G16_SNORMFORMAT_R16G16B16_SNORMDYNAMIC_STATE_CULL_MODE_EXTDYNAMIC_STATE_FRONT_FACE_EXT-DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT#DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT$DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT"DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT*DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT%DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXTDYNAMIC_STATE_STENCIL_OP_EXTRESOLVE_MODE_NONESAMPLE_COUNT_1_BIT#FORMAT_FEATURE_COLOR_ATTACHMENT_BIT+FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BITSUBPASS_EXTERNALQUEUE_FAMILY_IGNOREDPipelineStageFlagBits%IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL)IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR(IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR+IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR*IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR-IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL%IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL%IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL$IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL'IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL&IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL6IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT-IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXTIMAGE_LAYOUT_GENERALATTACHMENT_LOAD_OP_LOADATTACHMENT_LOAD_OP_DONT_CAREATTACHMENT_STORE_OP_DONT_CARE0EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR4EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR1MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT'MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD!MEMORY_PROPERTY_HOST_COHERENT_BIT MEMORY_PROPERTY_HOST_VISIBLE_BITACCESS_HOST_WRITE_BITACCESS_HOST_READ_BITIMAGE_CREATE_MUTABLE_FORMAT_BIT,IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BITIMAGE_ASPECT_COLOR_BIT IMAGE_TYPE_1D IMAGE_TYPE_2D IMAGE_CREATE_CUBE_COMPATIBLE_BIT IMAGE_TYPE_3D$IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT FORMAT_FEATURE_STORAGE_IMAGE_BITREMAINING_MIP_LEVELSREMAINING_ARRAY_LAYERS*FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT)FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT?FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BITZFORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BITCOMPONENT_SWIZZLE_ONECOMPONENT_SWIZZLE_ZEROFILTER_NEARESTIMAGE_TILING_LINEARComponentSwizzle!IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL!IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL$IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NVAccessFlagBitsIMAGE_CREATE_EXTENDED_USAGE_BITSAMPLE_COUNT_2_BITSAMPLE_COUNT_4_BITSAMPLE_COUNT_8_BITSAMPLE_COUNT_16_BITExternalImageFormatPropertiesNVFORMAT_FEATURE_DISJOINT_BITIMAGE_CREATE_ALIAS_BITImageAspectFlagsFORMAT_G8_B8R8_2PLANE_420_UNORM FORMAT_G8_B8_R8_3PLANE_420_UNORMFormatFeatureFlagBitsOffset3DenumerateInstanceVersionVendorIdAPI_VERSION_1_0(SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT IndexTypeSHADER_STAGE_GEOMETRY_BIT%SHADER_STAGE_TESSELLATION_CONTROL_BIT(SHADER_STAGE_TESSELLATION_EVALUATION_BITBLEND_FACTOR_SRC1_COLOR!BLEND_FACTOR_ONE_MINUS_SRC1_COLORBLEND_FACTOR_SRC1_ALPHA!BLEND_FACTOR_ONE_MINUS_SRC1_ALPHADYNAMIC_STATE_DEPTH_BIASPOLYGON_MODE_POINTPOLYGON_MODE_LINEDYNAMIC_STATE_LINE_WIDTHQUERY_CONTROL_PRECISE_BITQueryPipelineStatisticFlagBits"BUFFER_CREATE_SPARSE_RESIDENCY_BIT BUFFER_CREATE_SPARSE_ALIASED_BIT$enumerateInstanceExtensionProperties enumerateInstanceLayerProperties/EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT3EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT.EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT+EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT/EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BITBUFFER_USAGE_UNIFORM_BUFFER_BITBUFFER_USAGE_STORAGE_BUFFER_BITDescriptorBindingFlagBitsSHADER_STAGE_FRAGMENT_BITBORDER_COLOR_FLOAT_CUSTOM_EXTBORDER_COLOR_INT_CUSTOM_EXTSHADER_STAGE_ALLERROR_FRAGMENTATION_EXT&DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT2DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT FRAMEBUFFER_CREATE_IMAGELESS_BIT$FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR#FramebufferAttachmentsCreateInfoKHR ImageTypeFORMAT_S8_UINTFORMAT_D16_UNORMFORMAT_D16_UNORM_S8_UINTFORMAT_D32_SFLOATFORMAT_D32_SFLOAT_S8_UINTFORMAT_X8_D24_UNORM_PACK32FORMAT_D24_UNORM_S8_UINTDYNAMIC_STATE_SCISSORPOLYGON_MODE_FILL_RECTANGLE_NVDYNAMIC_STATE_DEPTH_BOUNDS"DYNAMIC_STATE_STENCIL_COMPARE_MASK DYNAMIC_STATE_STENCIL_WRITE_MASKDYNAMIC_STATE_STENCIL_REFERENCEDispatchIndirectCommandBUFFER_USAGE_TRANSFER_SRC_BITFORMAT_R8G8_UNORM1FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16FORMAT_FEATURE_TRANSFER_SRC_BITFORMAT_FEATURE_TRANSFER_DST_BITSAMPLER_MIPMAP_MODE_NEARESTFORMAT_FEATURE_BLIT_DST_BITSubpassDependencyERROR_DEVICE_LOST$ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT-COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BITFORMAT_B4G4R4A4_UNORM_PACK16FORMAT_B5G6R5_UNORM_PACK16FORMAT_B5G5R5A1_UNORM_PACK164SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVXSubpassDescriptionFlagBitsDEPENDENCY_VIEW_LOCAL_BITDEPENDENCY_BY_REGION_BITDependencyFlagBitsRenderPassCreateFlagBitsAttachmentDescriptionFlagBitsVulkan.Extensions)SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE0DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BITResolveModeFlagBitsRESOLVE_MODE_SAMPLE_ZERO_BITRESOLVE_MODE_AVERAGE_BITSampleCountFlagBitsSubgroupFeatureFlagBitsSUBGROUP_FEATURE_BASIC_BIT,COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BITVulkan FromCStruct peekCStruct ToCStruct withCStruct pokeCStructwithZeroCStructpokeZeroCStruct cStructSizecStructAlignmentChainExtendssExtends PokeChain PeekChain FixedArray'pokeFixedLengthNullTerminatedByteStringpokeFixedLengthByteString peekByteStringFromSizedVectorPtr lowerArrayPtradvancePtrBytesClearColorValueImageSubresourceLayersClearDepthStencilValueClearAttachment MemoryTypeCommandBufferResetFlagsCommandBufferResetFlagBitsCommandPoolResetFlagsCommandPoolResetFlagBits CompareOp CullModeFlagsCullModeFlagBitsDependencyFlagsDescriptorPoolResetFlagsFilterImageCreateFlags ImageLayout ImageTilingImageUsageFlagsMemoryMapFlags ObjectTypePipelineBindPointPipelineStageFlagsPrimitiveTopologyQueryControlFlagsQueryControlFlagBitsQueryResultFlagsQueryResultFlagBits QueryTypeResultShaderStageFlagsStencilFaceFlagsStencilFaceFlagBits StencilOpSubpassContentsExtensionPropertiesPFN_vkVoidFunctionFN_vkVoidFunction DeviceSize DeviceAddressBool32Rect2DOffset2DExtent3DExtent2DQueue_TPhysicalDevice_T Instance_TDevice_TCommandBuffer_TImageSubresourceRangeLayerPropertiesViewportSpecializationMapEntrySpecializationInfoImageSubresourceCommandPoolTrimFlagsExternalMemoryHandleTypeFlagsPeerMemoryFeatureFlagsPeerMemoryFeatureFlagBitsInputAttachmentAspectReferenceConformanceVersionPrivateDataSlotEXTDeferredOperationKHRAMD_GCN_SHADER_EXTENSION_NAMEAMD_GCN_SHADER_SPEC_VERSION(AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME&AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION#AMD_GPU_SHADER_INT16_EXTENSION_NAME!AMD_GPU_SHADER_INT16_SPEC_VERSION+AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME)AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION+AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME)AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION AMD_SHADER_BALLOT_EXTENSION_NAMEAMD_SHADER_BALLOT_SPEC_VERSION3AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME1AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION'AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME%AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION.AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME,AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSIONShaderInfoTypeAMDShaderStatisticsInfoAMDShaderResourceUsageAMD(AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME&AMD_SHADER_TRINARY_MINMAX_SPEC_VERSIONRROutput TimeDomainEXTDebugReportObjectTypeEXTDebugReportFlagsEXTDebugReportFlagBitsEXTDebugUtilsMessageTypeFlagsEXT DebugUtilsMessageTypeFlagBitsEXT!DebugUtilsMessageSeverityFlagsEXT$DebugUtilsMessageSeverityFlagBitsEXT+EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME)EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION IDirectFBSurfaceCounterFlagsEXTSurfaceCounterFlagBitsEXT*EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME(EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION XYColorEXTPipelineCreationFeedbackEXT&EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME$EXT_POST_DEPTH_COVERAGE_SPEC_VERSIONSubpassSampleLocationsEXTSampleLocationEXTAttachmentSampleLocationsEXT(EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME&EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION)EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME'EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION'EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME%EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION.EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME,EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION'VertexInputBindingDivisorDescriptionEXT%GOOGLE_DECORATE_STRING_EXTENSION_NAME#GOOGLE_DECORATE_STRING_SPEC_VERSIONRefreshCycleDurationGOOGLEPresentTimeGOOGLEPastPresentationTimingGOOGLE)GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME'GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSIONGOOGLE_USER_TYPE_EXTENSION_NAMEGOOGLE_USER_TYPE_SPEC_VERSIONIMG_FILTER_CUBIC_EXTENSION_NAMEIMG_FILTER_CUBIC_SPEC_VERSIONIMG_FORMAT_PVRTC_EXTENSION_NAMEIMG_FORMAT_PVRTC_SPEC_VERSIONPerformanceParameterTypeINTELPerformanceValueINTELMemoryRequirements2KHRPresentRegionKHR.AccelerationStructureMemoryRequirementsTypeKHRRayTracingShaderGroupTypeKHRGeometryTypeKHRAccelerationStructureTypeKHR"BuildAccelerationStructureFlagsKHR%BuildAccelerationStructureFlagBitsKHRGeometryInstanceFlagsKHRGeometryInstanceFlagBitsKHRGeometryFlagsKHRGeometryFlagBitsKHR CopyAccelerationStructureModeKHRTransformMatrixKHRTraceRaysIndirectCommandKHR AccelerationStructureInstanceKHR'AccelerationStructureBuildOffsetInfoKHRAabbPositionsKHR'KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME%KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION)KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME'KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION+KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME)KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSIONKHR_SPIRV_1_4_EXTENSION_NAMEKHR_SPIRV_1_4_SPEC_VERSION/KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME-KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSIONPresentModeKHRDeviceGroupPresentModeFlagsKHR!DeviceGroupPresentModeFlagBitsKHR Wl_displayXcb_visualid_tXcb_connection_tVisualIDDisplaySetStateFlagsIndirectCommandNV BindShaderGroupIndirectCommandNVExternalMemoryHandleTypeFlagsNV"ExternalMemoryHandleTypeFlagBitsNVHANDLE NV_FILL_RECTANGLE_EXTENSION_NAMENV_FILL_RECTANGLE_SPEC_VERSION-NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME+NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSIONNV_GLSL_SHADER_EXTENSION_NAMENV_GLSL_SHADER_SPEC_VERSIONDrawMeshTasksIndirectCommandNVGeometryDataNV/NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME-NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION-NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME+NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSIONCoarseSampleOrderTypeNVCoarseSampleOrderCustomNVCoarseSampleLocationNV!NV_VIEWPORT_ARRAY2_EXTENSION_NAMENV_VIEWPORT_ARRAY2_SPEC_VERSIONViewportSwizzleNV.QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME,QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION)QCOM_render_pass_store_ops_EXTENSION_NAME'QCOM_render_pass_store_ops_SPEC_VERSION::: MAKE_VERSIONHEADER_VERSION_COMPLETEHEADER_VERSION_VERSION_MAJOR_VERSION_MINOR_VERSION_PATCHZerozero $fZeroCInt $fZeroCSize $fZeroCChar $fZeroCFloat $fZeroFloat $fZeroWord64 $fZeroWord32 $fZeroWord16 $fZeroWord8 $fZeroInt64 $fZeroInt32 $fZeroInt16 $fZeroInt8 $fZeroPtr $fZeroFunPtr $fZeroBoolShaderFloatControlsIndependence'SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE&SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL.SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY%$fReadShaderFloatControlsIndependence%$fShowShaderFloatControlsIndependence#$fEqShaderFloatControlsIndependence$$fOrdShaderFloatControlsIndependence)$fStorableShaderFloatControlsIndependence%$fZeroShaderFloatControlsIndependence$fReadSemaphoreType$fShowSemaphoreType$fEqSemaphoreType$fOrdSemaphoreType$fStorableSemaphoreType$fZeroSemaphoreType$fReadSamplerReductionMode$fShowSamplerReductionMode$fEqSamplerReductionMode$fOrdSamplerReductionMode$fStorableSamplerReductionMode$fZeroSamplerReductionModeDriverIdDRIVER_ID_MESA_LLVMPIPEDRIVER_ID_BROADCOM_PROPRIETARYDRIVER_ID_GGP_PROPRIETARYDRIVER_ID_GOOGLE_SWIFTSHADERDRIVER_ID_ARM_PROPRIETARYDRIVER_ID_QUALCOMM_PROPRIETARY!DRIVER_ID_IMAGINATION_PROPRIETARY DRIVER_ID_INTEL_OPEN_SOURCE_MESA#DRIVER_ID_INTEL_PROPRIETARY_WINDOWSDRIVER_ID_NVIDIA_PROPRIETARYDRIVER_ID_MESA_RADVDRIVER_ID_AMD_OPEN_SOURCEDRIVER_ID_AMD_PROPRIETARY$fReadDriverId$fShowDriverId $fEqDriverId $fOrdDriverId$fStorableDriverId$fZeroDriverIdTessellationDomainOrigin%TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT%TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT$fReadTessellationDomainOrigin$fShowTessellationDomainOrigin$fEqTessellationDomainOrigin$fOrdTessellationDomainOrigin"$fStorableTessellationDomainOrigin$fZeroTessellationDomainOriginSamplerYcbcrRangeSAMPLER_YCBCR_RANGE_ITU_NARROWSAMPLER_YCBCR_RANGE_ITU_FULL$fReadSamplerYcbcrRange$fShowSamplerYcbcrRange$fEqSamplerYcbcrRange$fOrdSamplerYcbcrRange$fStorableSamplerYcbcrRange$fZeroSamplerYcbcrRangeSamplerYcbcrModelConversion)SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020(SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601(SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709-SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY!$fReadSamplerYcbcrModelConversion!$fShowSamplerYcbcrModelConversion$fEqSamplerYcbcrModelConversion $fOrdSamplerYcbcrModelConversion%$fStorableSamplerYcbcrModelConversion!$fZeroSamplerYcbcrModelConversionPointClippingBehavior-POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY'POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES$fReadPointClippingBehavior$fShowPointClippingBehavior$fEqPointClippingBehavior$fOrdPointClippingBehavior$fStorablePointClippingBehavior$fZeroPointClippingBehaviorDescriptorUpdateTemplateType4DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET"$fReadDescriptorUpdateTemplateType"$fShowDescriptorUpdateTemplateType $fEqDescriptorUpdateTemplateType!$fOrdDescriptorUpdateTemplateType&$fStorableDescriptorUpdateTemplateType"$fZeroDescriptorUpdateTemplateTypeChromaLocation$fReadChromaLocation$fShowChromaLocation$fEqChromaLocation$fOrdChromaLocation$fStorableChromaLocation$fZeroChromaLocationVertexInputRateVERTEX_INPUT_RATE_VERTEX$fReadVertexInputRate$fShowVertexInputRate$fEqVertexInputRate$fOrdVertexInputRate$fStorableVertexInputRate$fZeroVertexInputRateVENDOR_ID_MESAVENDOR_ID_CODEPLAYVENDOR_ID_KAZAN VENDOR_ID_VSI VENDOR_ID_VIV$fReadVendorId$fShowVendorId $fEqVendorId $fOrdVendorId$fStorableVendorId$fZeroVendorIdSystemAllocationScope SYSTEM_ALLOCATION_SCOPE_INSTANCESYSTEM_ALLOCATION_SCOPE_DEVICESYSTEM_ALLOCATION_SCOPE_CACHESYSTEM_ALLOCATION_SCOPE_OBJECTSYSTEM_ALLOCATION_SCOPE_COMMAND$fReadSystemAllocationScope$fShowSystemAllocationScope$fEqSystemAllocationScope$fOrdSystemAllocationScope$fStorableSystemAllocationScope$fZeroSystemAllocationScope*SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERSSUBPASS_CONTENTS_INLINE$fReadSubpassContents$fShowSubpassContents$fEqSubpassContents$fOrdSubpassContents$fStorableSubpassContents$fZeroSubpassContents StructureType2STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES&STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO%STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO5STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS-STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO)STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO2STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO5STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO'STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO3STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO2STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO/STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES.STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO0STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2/STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_26STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2$STRUCTURE_TYPE_MEMORY_REQUIREMENTS_21STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2)STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2+STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2"STRUCTURE_TYPE_FORMAT_PROPERTIES_2(STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_22STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2(STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_22STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2/STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_29STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_28STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES>STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO+STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFODSTRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO0STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO1STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES3STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES9STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES$STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO8STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES:STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"STRUCTURE_TYPE_DEVICE_QUEUE_INFO_23STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO+STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO3STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO@STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES?STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES5STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO9STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO/STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES3STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO)STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES,STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES1STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO0STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO*STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO2STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO(STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES'STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO+STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO6STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES7STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT>STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES2STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES4STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES2STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES4STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES,STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO'STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2%STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2$STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2#STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2(STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2!STRUCTURE_TYPE_SUBPASS_BEGIN_INFOSTRUCTURE_TYPE_SUBPASS_END_INFO4STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES0STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES;STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES;STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES8STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES>STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO;STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES=STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIESESTRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFOFSTRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT?STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES8STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE;STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES.STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO?STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES1STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO;STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES=STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES2STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO0STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO0STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFOFSTRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURESFSTRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURESFSTRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES2STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT4STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT8STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES:STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURESSTRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT@STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXTBSTRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT)STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX0STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX7STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD8STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP?STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV3STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV-STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV1STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV1STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV8STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV4STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR.STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR3STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR*STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR,STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR5STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR#STRUCTURE_TYPE_VALIDATION_FLAGS_EXT(STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NNHSTRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT.STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT7STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT2STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR2STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR1STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR/STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR(STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR'STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR%STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR9STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR5STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR5STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR*STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR2STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR+STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR(STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR=STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHRHSTRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXTASTRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT3STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT"STRUCTURE_TYPE_PRESENT_REGIONS_KHR?STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV)STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT%STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT$STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT%STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT0STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT(STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLEKSTRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX=STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV?STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT?STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXTHSTRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXTHSTRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT=STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXTFSTRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXTSTRUCTURE_TYPE_HDR_METADATA_EXT6STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR1STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR1STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR.STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR'STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR$STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR=STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR?STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR5STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR0STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR.STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR&STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR2STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR1STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR)STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR#STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR'STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR-STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR,STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR'STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR/STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR*STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK,STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK/STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT.STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT$STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT6STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT4STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT4STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID9STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID@STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID:STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID>STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID&STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID@STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXTBSTRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXTSTRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT>STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT)STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXTDSTRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXTFSTRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXTBSTRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT>STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV:STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR>STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR=STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHRCSTRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR=STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR=STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHRASTRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHRASTRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR2STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHRBSTRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR1STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR3STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR=STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR=STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR7STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR9STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR3STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR7STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR5STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR=STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR@STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV=STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV?STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV6STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT1STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXTASTRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT=STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXTASTRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT7STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT/STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT=STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXTHSTRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV=STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV?STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NVISTRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV2STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV4STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NVSTRUCTURE_TYPE_GEOMETRY_NV$STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NVSTRUCTURE_TYPE_GEOMETRY_AABB_NVASTRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV8STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV6STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV-STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NVGSTRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NVISTRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV?STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXTBSTRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT;STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT2STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT1STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXTBSTRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT8STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR8STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD,STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT9STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD;STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMDFSTRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXTBSTRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXTDSTRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT&STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP9STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXTESTRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV6STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV8STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NVFSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NVASTRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NVGSTRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NVSTRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT5STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT=STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT;STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT/STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT>STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT@STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT@STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXTSTRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHRNSTRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXTFSTRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV3STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV=STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV0STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV6STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV)STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV=STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NVDSTRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NVBSTRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXTDSTRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXTISTRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM4STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM8STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT:STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT:STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXTASTRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT?STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT/STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR8STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT2STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT0STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXTKSTRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT=STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV7STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NVBSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXTDSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT/STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT(STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO*STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFOSTRUCTURE_TYPE_MEMORY_BARRIER#STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER$STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER%STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO(STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO+STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO'STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO&STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO&STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO"STRUCTURE_TYPE_COPY_DESCRIPTOR_SET#STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET+STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO*STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO0STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO"STRUCTURE_TYPE_SAMPLER_CREATE_INFO*STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO+STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO,STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO1STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO5STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO7STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO5STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO7STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO2STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO6STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO8STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO6STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO0STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO)STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO(STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO%STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO STRUCTURE_TYPE_IMAGE_CREATE_INFO&STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO!STRUCTURE_TYPE_BUFFER_CREATE_INFO%STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO STRUCTURE_TYPE_EVENT_CREATE_INFO$STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO STRUCTURE_TYPE_FENCE_CREATE_INFOSTRUCTURE_TYPE_BIND_SPARSE_INFO"STRUCTURE_TYPE_MAPPED_MEMORY_RANGE#STRUCTURE_TYPE_MEMORY_ALLOCATE_INFOSTRUCTURE_TYPE_SUBMIT_INFO!STRUCTURE_TYPE_DEVICE_CREATE_INFO'STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO#STRUCTURE_TYPE_INSTANCE_CREATE_INFOSTRUCTURE_TYPE_APPLICATION_INFO$fReadStructureType$fShowStructureType$fEqStructureType$fOrdStructureType$fStorableStructureType$fZeroStructureType GgpFrameTokenGGP_FRAME_TOKEN_EXTENSION_NAMEGGP_FRAME_TOKEN_SPEC_VERSION$$sel:frameToken:PresentFrameTokenGGP$fZeroPresentFrameTokenGGP$fStorablePresentFrameTokenGGP!$fFromCStructPresentFrameTokenGGP$fToCStructPresentFrameTokenGGP$fEqPresentFrameTokenGGP$fShowPresentFrameTokenGGP$fGenericPresentFrameTokenGGP#EXT_VALIDATION_FLAGS_EXTENSION_NAME!EXT_VALIDATION_FLAGS_SPEC_VERSIONValidationCheckEXT0$sel:disabledValidationChecks:ValidationFlagsEXTVALIDATION_CHECK_SHADERS_EXTVALIDATION_CHECK_ALL_EXT$fReadValidationCheckEXT$fShowValidationCheckEXT$fZeroValidationFlagsEXT$fFromCStructValidationFlagsEXT$fToCStructValidationFlagsEXT$fEqValidationCheckEXT$fOrdValidationCheckEXT$fStorableValidationCheckEXT$fZeroValidationCheckEXT$fShowValidationFlagsEXT$fGenericValidationFlagsEXT&EXT_VALIDATION_FEATURES_EXTENSION_NAME$EXT_VALIDATION_FEATURES_SPEC_VERSIONValidationFeatureDisableEXTValidationFeatureEnableEXT4$sel:enabledValidationFeatures:ValidationFeaturesEXT5$sel:disabledValidationFeatures:ValidationFeaturesEXT-VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT*VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT/VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT-VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT,VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT&VALIDATION_FEATURE_DISABLE_SHADERS_EXT"VALIDATION_FEATURE_DISABLE_ALL_EXT*VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT,VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT?VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT*VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT $fReadValidationFeatureEnableEXT $fShowValidationFeatureEnableEXT!$fReadValidationFeatureDisableEXT!$fShowValidationFeatureDisableEXT$fZeroValidationFeaturesEXT"$fFromCStructValidationFeaturesEXT $fToCStructValidationFeaturesEXT$fEqValidationFeatureEnableEXT$fOrdValidationFeatureEnableEXT$$fStorableValidationFeatureEnableEXT $fZeroValidationFeatureEnableEXT$fEqValidationFeatureDisableEXT $fOrdValidationFeatureDisableEXT%$fStorableValidationFeatureDisableEXT!$fZeroValidationFeatureDisableEXT$fShowValidationFeaturesEXT$fGenericValidationFeaturesEXTEXT_PCI_BUS_INFO_EXTENSION_NAMEEXT_PCI_BUS_INFO_SPEC_VERSION4$sel:pciDomain:PhysicalDevicePCIBusInfoPropertiesEXT1$sel:pciBus:PhysicalDevicePCIBusInfoPropertiesEXT4$sel:pciDevice:PhysicalDevicePCIBusInfoPropertiesEXT6$sel:pciFunction:PhysicalDevicePCIBusInfoPropertiesEXT+$fZeroPhysicalDevicePCIBusInfoPropertiesEXT/$fStorablePhysicalDevicePCIBusInfoPropertiesEXT2$fFromCStructPhysicalDevicePCIBusInfoPropertiesEXT0$fToCStructPhysicalDevicePCIBusInfoPropertiesEXT)$fEqPhysicalDevicePCIBusInfoPropertiesEXT+$fShowPhysicalDevicePCIBusInfoPropertiesEXT.$fGenericPhysicalDevicePCIBusInfoPropertiesEXT"EXT_GLOBAL_PRIORITY_EXTENSION_NAME EXT_GLOBAL_PRIORITY_SPEC_VERSIONQueueGlobalPriorityEXT:$sel:globalPriority:DeviceQueueGlobalPriorityCreateInfoEXT"QUEUE_GLOBAL_PRIORITY_REALTIME_EXTQUEUE_GLOBAL_PRIORITY_HIGH_EXT QUEUE_GLOBAL_PRIORITY_MEDIUM_EXTQUEUE_GLOBAL_PRIORITY_LOW_EXT$fReadQueueGlobalPriorityEXT$fShowQueueGlobalPriorityEXT,$fZeroDeviceQueueGlobalPriorityCreateInfoEXT0$fStorableDeviceQueueGlobalPriorityCreateInfoEXT3$fFromCStructDeviceQueueGlobalPriorityCreateInfoEXT1$fToCStructDeviceQueueGlobalPriorityCreateInfoEXT$fEqQueueGlobalPriorityEXT$fOrdQueueGlobalPriorityEXT $fStorableQueueGlobalPriorityEXT$fZeroQueueGlobalPriorityEXT*$fEqDeviceQueueGlobalPriorityCreateInfoEXT,$fShowDeviceQueueGlobalPriorityCreateInfoEXT/$fGenericDeviceQueueGlobalPriorityCreateInfoEXT)AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME'AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION<$sel:shaderEngineCount:PhysicalDeviceShaderCorePropertiesAMDE$sel:shaderArraysPerEngineCount:PhysicalDeviceShaderCorePropertiesAMDE$sel:computeUnitsPerShaderArray:PhysicalDeviceShaderCorePropertiesAMD=$sel:simdPerComputeUnit:PhysicalDeviceShaderCorePropertiesAMD<$sel:wavefrontsPerSimd:PhysicalDeviceShaderCorePropertiesAMD8$sel:wavefrontSize:PhysicalDeviceShaderCorePropertiesAMD7$sel:sgprsPerSimd:PhysicalDeviceShaderCorePropertiesAMD<$sel:minSgprAllocation:PhysicalDeviceShaderCorePropertiesAMD<$sel:maxSgprAllocation:PhysicalDeviceShaderCorePropertiesAMDD$sel:sgprAllocationGranularity:PhysicalDeviceShaderCorePropertiesAMD7$sel:vgprsPerSimd:PhysicalDeviceShaderCorePropertiesAMD<$sel:minVgprAllocation:PhysicalDeviceShaderCorePropertiesAMD<$sel:maxVgprAllocation:PhysicalDeviceShaderCorePropertiesAMDD$sel:vgprAllocationGranularity:PhysicalDeviceShaderCorePropertiesAMD+$fZeroPhysicalDeviceShaderCorePropertiesAMD/$fStorablePhysicalDeviceShaderCorePropertiesAMD2$fFromCStructPhysicalDeviceShaderCorePropertiesAMD0$fToCStructPhysicalDeviceShaderCorePropertiesAMD)$fEqPhysicalDeviceShaderCorePropertiesAMD+$fShowPhysicalDeviceShaderCorePropertiesAMD.$fGenericPhysicalDeviceShaderCorePropertiesAMD&AMD_RASTERIZATION_ORDER_EXTENSION_NAME$AMD_RASTERIZATION_ORDER_SPEC_VERSIONRasterizationOrderAMDG$sel:rasterizationOrder:PipelineRasterizationStateRasterizationOrderAMDRASTERIZATION_ORDER_RELAXED_AMDRASTERIZATION_ORDER_STRICT_AMD$fReadRasterizationOrderAMD$fShowRasterizationOrderAMD5$fZeroPipelineRasterizationStateRasterizationOrderAMD9$fStorablePipelineRasterizationStateRasterizationOrderAMD<$fFromCStructPipelineRasterizationStateRasterizationOrderAMD:$fToCStructPipelineRasterizationStateRasterizationOrderAMD$fEqRasterizationOrderAMD$fOrdRasterizationOrderAMD$fStorableRasterizationOrderAMD$fZeroRasterizationOrderAMD3$fEqPipelineRasterizationStateRasterizationOrderAMD5$fShowPipelineRasterizationStateRasterizationOrderAMD8$fGenericPipelineRasterizationStateRasterizationOrderAMD1AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME/AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSIONMemoryOverallocationBehaviorAMDC$sel:overallocationBehavior:DeviceMemoryOverallocationCreateInfoAMD-MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD*MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD*MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD%$fReadMemoryOverallocationBehaviorAMD%$fShowMemoryOverallocationBehaviorAMD-$fZeroDeviceMemoryOverallocationCreateInfoAMD1$fStorableDeviceMemoryOverallocationCreateInfoAMD4$fFromCStructDeviceMemoryOverallocationCreateInfoAMD2$fToCStructDeviceMemoryOverallocationCreateInfoAMD#$fEqMemoryOverallocationBehaviorAMD$$fOrdMemoryOverallocationBehaviorAMD)$fStorableMemoryOverallocationBehaviorAMD%$fZeroMemoryOverallocationBehaviorAMD+$fEqDeviceMemoryOverallocationCreateInfoAMD-$fShowDeviceMemoryOverallocationCreateInfoAMD0$fGenericDeviceMemoryOverallocationCreateInfoAMDSTENCIL_OP_DECREMENT_AND_WRAPSTENCIL_OP_INCREMENT_AND_WRAPSTENCIL_OP_INVERTSTENCIL_OP_DECREMENT_AND_CLAMPSTENCIL_OP_INCREMENT_AND_CLAMPSTENCIL_OP_REPLACESTENCIL_OP_ZEROSTENCIL_OP_KEEP$fReadStencilOp$fShowStencilOp $fEqStencilOp$fOrdStencilOp$fStorableStencilOp$fZeroStencilOp SharingMode$fReadSharingMode$fShowSharingMode$fEqSharingMode$fOrdSharingMode$fStorableSharingMode$fZeroSharingModeSamplerMipmapMode$fReadSamplerMipmapMode$fShowSamplerMipmapMode$fEqSamplerMipmapMode$fOrdSamplerMipmapMode$fStorableSamplerMipmapMode$fZeroSamplerMipmapMode$SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER$SAMPLER_ADDRESS_MODE_MIRRORED_REPEATSAMPLER_ADDRESS_MODE_REPEAT$fReadSamplerAddressMode$fShowSamplerAddressMode$fEqSamplerAddressMode$fOrdSamplerAddressMode$fStorableSamplerAddressMode$fZeroSamplerAddressMode/KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME-KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION-SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHRERROR_OUT_OF_POOL_MEMORYERROR_INVALID_EXTERNAL_HANDLEERROR_FRAGMENTATION$ERROR_INVALID_OPAQUE_CAPTURE_ADDRESSERROR_SURFACE_LOST_KHRERROR_NATIVE_WINDOW_IN_USE_KHRSUBOPTIMAL_KHRERROR_OUT_OF_DATE_KHRERROR_INCOMPATIBLE_DISPLAY_KHRERROR_VALIDATION_FAILED_EXTERROR_INVALID_SHADER_NVERROR_INCOMPATIBLE_VERSION_KHR2ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXTERROR_NOT_PERMITTED_EXT)ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXTTHREAD_IDLE_KHRTHREAD_DONE_KHROPERATION_DEFERRED_KHROPERATION_NOT_DEFERRED_KHR ERROR_UNKNOWNERROR_FRAGMENTED_POOLERROR_TOO_MANY_OBJECTSERROR_INCOMPATIBLE_DRIVERERROR_FEATURE_NOT_PRESENTERROR_EXTENSION_NOT_PRESENTERROR_LAYER_NOT_PRESENTERROR_MEMORY_MAP_FAILEDERROR_INITIALIZATION_FAILEDERROR_OUT_OF_DEVICE_MEMORY INCOMPLETE EVENT_RESET EVENT_SETTIMEOUT NOT_READYSUCCESS $fReadResult $fShowResult $fEqResult $fOrdResult$fStorableResult $fZeroResultVulkanException*$sel:vulkanExceptionResult:VulkanException$fExceptionVulkanException$fEqVulkanException$fOrdVulkanException$fReadVulkanException$fShowVulkanExceptionFlags$sel:offset:Rect2D$sel:extent:Rect2D$sel:width:Extent3D$sel:height:Extent3D$sel:depth:Extent3D$sel:width:Extent2D$sel:height:Extent2D$sel:x:Offset3D$sel:y:Offset3D$sel:z:Offset3D$sel:x:Offset2D$sel:y:Offset2D boolToBool32 bool32ToBool$fZeroOffset2D$fStorableOffset2D$fFromCStructOffset2D$fToCStructOffset2D$fZeroOffset3D$fStorableOffset3D$fFromCStructOffset3D$fToCStructOffset3D$fZeroExtent2D$fStorableExtent2D$fFromCStructExtent2D$fToCStructExtent2D$fZeroExtent3D$fStorableExtent3D$fFromCStructExtent3D$fToCStructExtent3D $fZeroRect2D$fFromCStructRect2D$fToCStructRect2D $fReadBool32 $fShowBool32 $fEqOffset2D $fEqOffset3D $fEqExtent2D $fEqExtent3D $fEqBool32 $fOrdBool32$fStorableBool32 $fZeroBool32 $fShowRect2D$fGenericRect2D$fShowExtent3D$fGenericExtent3D$fShowExtent2D$fGenericExtent2D$fShowOffset3D$fGenericOffset3D$fShowOffset2D$fGenericOffset2D"NV_VIEWPORT_SWIZZLE_EXTENSION_NAME NV_VIEWPORT_SWIZZLE_SPEC_VERSIONViewportCoordinateSwizzleNV)PipelineViewportSwizzleStateCreateFlagsNV3$sel:flags:PipelineViewportSwizzleStateCreateInfoNV>$sel:viewportSwizzles:PipelineViewportSwizzleStateCreateInfoNV$sel:x:ViewportSwizzleNV$sel:y:ViewportSwizzleNV$sel:z:ViewportSwizzleNV$sel:w:ViewportSwizzleNV)VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV)VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV)VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV)VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV)VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV)VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV)VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV)VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV/$fReadPipelineViewportSwizzleStateCreateFlagsNV/$fShowPipelineViewportSwizzleStateCreateFlagsNV!$fReadViewportCoordinateSwizzleNV!$fShowViewportCoordinateSwizzleNV$fZeroViewportSwizzleNV$fStorableViewportSwizzleNV$fFromCStructViewportSwizzleNV$fToCStructViewportSwizzleNV.$fZeroPipelineViewportSwizzleStateCreateInfoNV5$fFromCStructPipelineViewportSwizzleStateCreateInfoNV3$fToCStructPipelineViewportSwizzleStateCreateInfoNV-$fEqPipelineViewportSwizzleStateCreateFlagsNV.$fOrdPipelineViewportSwizzleStateCreateFlagsNV3$fStorablePipelineViewportSwizzleStateCreateFlagsNV/$fZeroPipelineViewportSwizzleStateCreateFlagsNV/$fBitsPipelineViewportSwizzleStateCreateFlagsNV$fEqViewportCoordinateSwizzleNV $fOrdViewportCoordinateSwizzleNV%$fStorableViewportCoordinateSwizzleNV!$fZeroViewportCoordinateSwizzleNV$fEqViewportSwizzleNV.$fShowPipelineViewportSwizzleStateCreateInfoNV1$fGenericPipelineViewportSwizzleStateCreateInfoNV$fShowViewportSwizzleNV$fGenericViewportSwizzleNV$NV_SHADER_SM_BUILTINS_EXTENSION_NAME"NV_SHADER_SM_BUILTINS_SPEC_VERSION>$sel:shaderSMBuiltins:PhysicalDeviceShaderSMBuiltinsFeaturesNV=$sel:shaderSMCount:PhysicalDeviceShaderSMBuiltinsPropertiesNV@$sel:shaderWarpsPerSM:PhysicalDeviceShaderSMBuiltinsPropertiesNV0$fZeroPhysicalDeviceShaderSMBuiltinsPropertiesNV4$fStorablePhysicalDeviceShaderSMBuiltinsPropertiesNV7$fFromCStructPhysicalDeviceShaderSMBuiltinsPropertiesNV5$fToCStructPhysicalDeviceShaderSMBuiltinsPropertiesNV.$fZeroPhysicalDeviceShaderSMBuiltinsFeaturesNV2$fStorablePhysicalDeviceShaderSMBuiltinsFeaturesNV5$fFromCStructPhysicalDeviceShaderSMBuiltinsFeaturesNV3$fToCStructPhysicalDeviceShaderSMBuiltinsFeaturesNV.$fEqPhysicalDeviceShaderSMBuiltinsPropertiesNV,$fEqPhysicalDeviceShaderSMBuiltinsFeaturesNV.$fShowPhysicalDeviceShaderSMBuiltinsFeaturesNV1$fGenericPhysicalDeviceShaderSMBuiltinsFeaturesNV0$fShowPhysicalDeviceShaderSMBuiltinsPropertiesNV3$fGenericPhysicalDeviceShaderSMBuiltinsPropertiesNV(NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME&NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION@$sel:imageFootprint:PhysicalDeviceShaderImageFootprintFeaturesNV2$fZeroPhysicalDeviceShaderImageFootprintFeaturesNV6$fStorablePhysicalDeviceShaderImageFootprintFeaturesNV9$fFromCStructPhysicalDeviceShaderImageFootprintFeaturesNV7$fToCStructPhysicalDeviceShaderImageFootprintFeaturesNV0$fEqPhysicalDeviceShaderImageFootprintFeaturesNV2$fShowPhysicalDeviceShaderImageFootprintFeaturesNV5$fGenericPhysicalDeviceShaderImageFootprintFeaturesNV.NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME,NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSIONY$sel:representativeFragmentTestEnable:PipelineRepresentativeFragmentTestStateCreateInfoNVR$sel:representativeFragmentTest:PhysicalDeviceRepresentativeFragmentTestFeaturesNV8$fZeroPhysicalDeviceRepresentativeFragmentTestFeaturesNV<$fStorablePhysicalDeviceRepresentativeFragmentTestFeaturesNV?$fFromCStructPhysicalDeviceRepresentativeFragmentTestFeaturesNV=$fToCStructPhysicalDeviceRepresentativeFragmentTestFeaturesNV9$fZeroPipelineRepresentativeFragmentTestStateCreateInfoNV=$fStorablePipelineRepresentativeFragmentTestStateCreateInfoNV@$fFromCStructPipelineRepresentativeFragmentTestStateCreateInfoNV>$fToCStructPipelineRepresentativeFragmentTestStateCreateInfoNV6$fEqPhysicalDeviceRepresentativeFragmentTestFeaturesNV7$fEqPipelineRepresentativeFragmentTestStateCreateInfoNV9$fShowPipelineRepresentativeFragmentTestStateCreateInfoNV<$fGenericPipelineRepresentativeFragmentTestStateCreateInfoNV8$fShowPhysicalDeviceRepresentativeFragmentTestFeaturesNV;$fGenericPhysicalDeviceRepresentativeFragmentTestFeaturesNV+NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME)NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSIONCoverageModulationModeNV,PipelineCoverageModulationStateCreateFlagsNV6$sel:flags:PipelineCoverageModulationStateCreateInfoNVG$sel:coverageModulationMode:PipelineCoverageModulationStateCreateInfoNVN$sel:coverageModulationTableEnable:PipelineCoverageModulationStateCreateInfoNVM$sel:coverageModulationTableCount:PipelineCoverageModulationStateCreateInfoNVH$sel:coverageModulationTable:PipelineCoverageModulationStateCreateInfoNV COVERAGE_MODULATION_MODE_RGBA_NV!COVERAGE_MODULATION_MODE_ALPHA_NVCOVERAGE_MODULATION_MODE_RGB_NV COVERAGE_MODULATION_MODE_NONE_NV2$fReadPipelineCoverageModulationStateCreateFlagsNV2$fShowPipelineCoverageModulationStateCreateFlagsNV$fReadCoverageModulationModeNV$fShowCoverageModulationModeNV1$fZeroPipelineCoverageModulationStateCreateInfoNV8$fFromCStructPipelineCoverageModulationStateCreateInfoNV6$fToCStructPipelineCoverageModulationStateCreateInfoNV0$fEqPipelineCoverageModulationStateCreateFlagsNV1$fOrdPipelineCoverageModulationStateCreateFlagsNV6$fStorablePipelineCoverageModulationStateCreateFlagsNV2$fZeroPipelineCoverageModulationStateCreateFlagsNV2$fBitsPipelineCoverageModulationStateCreateFlagsNV$fEqCoverageModulationModeNV$fOrdCoverageModulationModeNV"$fStorableCoverageModulationModeNV$fZeroCoverageModulationModeNV1$fShowPipelineCoverageModulationStateCreateInfoNV4$fGenericPipelineCoverageModulationStateCreateInfoNV-NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME+NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSIONP$sel:fragmentShaderBarycentric:PhysicalDeviceFragmentShaderBarycentricFeaturesNV7$fZeroPhysicalDeviceFragmentShaderBarycentricFeaturesNV;$fStorablePhysicalDeviceFragmentShaderBarycentricFeaturesNV>$fFromCStructPhysicalDeviceFragmentShaderBarycentricFeaturesNV<$fToCStructPhysicalDeviceFragmentShaderBarycentricFeaturesNV5$fEqPhysicalDeviceFragmentShaderBarycentricFeaturesNV7$fShowPhysicalDeviceFragmentShaderBarycentricFeaturesNV:$fGenericPhysicalDeviceFragmentShaderBarycentricFeaturesNV,NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME*NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION)PipelineCoverageToColorStateCreateFlagsNV3$sel:flags:PipelineCoverageToColorStateCreateInfoNVC$sel:coverageToColorEnable:PipelineCoverageToColorStateCreateInfoNVE$sel:coverageToColorLocation:PipelineCoverageToColorStateCreateInfoNV/$fReadPipelineCoverageToColorStateCreateFlagsNV/$fShowPipelineCoverageToColorStateCreateFlagsNV.$fZeroPipelineCoverageToColorStateCreateInfoNV2$fStorablePipelineCoverageToColorStateCreateInfoNV5$fFromCStructPipelineCoverageToColorStateCreateInfoNV3$fToCStructPipelineCoverageToColorStateCreateInfoNV-$fEqPipelineCoverageToColorStateCreateFlagsNV.$fOrdPipelineCoverageToColorStateCreateFlagsNV3$fStorablePipelineCoverageToColorStateCreateFlagsNV/$fZeroPipelineCoverageToColorStateCreateFlagsNV/$fBitsPipelineCoverageToColorStateCreateFlagsNV,$fEqPipelineCoverageToColorStateCreateInfoNV.$fShowPipelineCoverageToColorStateCreateInfoNV1$fGenericPipelineCoverageToColorStateCreateInfoNV+NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME)NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSIONDeviceDiagnosticsConfigFlagsNV!DeviceDiagnosticsConfigFlagBitsNV.$sel:flags:DeviceDiagnosticsConfigCreateInfoNV@$sel:diagnosticsConfig:PhysicalDeviceDiagnosticsConfigFeaturesNV=DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV9DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV9DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV/$fZeroPhysicalDeviceDiagnosticsConfigFeaturesNV3$fStorablePhysicalDeviceDiagnosticsConfigFeaturesNV6$fFromCStructPhysicalDeviceDiagnosticsConfigFeaturesNV4$fToCStructPhysicalDeviceDiagnosticsConfigFeaturesNV'$fReadDeviceDiagnosticsConfigFlagBitsNV'$fShowDeviceDiagnosticsConfigFlagBitsNV)$fZeroDeviceDiagnosticsConfigCreateInfoNV-$fStorableDeviceDiagnosticsConfigCreateInfoNV0$fFromCStructDeviceDiagnosticsConfigCreateInfoNV.$fToCStructDeviceDiagnosticsConfigCreateInfoNV-$fEqPhysicalDeviceDiagnosticsConfigFeaturesNV%$fEqDeviceDiagnosticsConfigFlagBitsNV&$fOrdDeviceDiagnosticsConfigFlagBitsNV+$fStorableDeviceDiagnosticsConfigFlagBitsNV'$fZeroDeviceDiagnosticsConfigFlagBitsNV'$fBitsDeviceDiagnosticsConfigFlagBitsNV'$fEqDeviceDiagnosticsConfigCreateInfoNV)$fShowDeviceDiagnosticsConfigCreateInfoNV,$fGenericDeviceDiagnosticsConfigCreateInfoNV/$fShowPhysicalDeviceDiagnosticsConfigFeaturesNV2$fGenericPhysicalDeviceDiagnosticsConfigFeaturesNV5NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME3NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION^$sel:dedicatedAllocationImageAliasing:PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>$fZeroPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVB$fStorablePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVE$fFromCStructPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVC$fToCStructPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV<$fEqPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>$fShowPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVA$fGenericPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV&NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME$NV_CORNER_SAMPLED_IMAGE_SPEC_VERSIONB$sel:cornerSampledImage:PhysicalDeviceCornerSampledImageFeaturesNV0$fZeroPhysicalDeviceCornerSampledImageFeaturesNV4$fStorablePhysicalDeviceCornerSampledImageFeaturesNV7$fFromCStructPhysicalDeviceCornerSampledImageFeaturesNV5$fToCStructPhysicalDeviceCornerSampledImageFeaturesNV.$fEqPhysicalDeviceCornerSampledImageFeaturesNV0$fShowPhysicalDeviceCornerSampledImageFeaturesNV3$fGenericPhysicalDeviceCornerSampledImageFeaturesNV,NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME*NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSIONQ$sel:computeDerivativeGroupQuads:PhysicalDeviceComputeShaderDerivativesFeaturesNVR$sel:computeDerivativeGroupLinear:PhysicalDeviceComputeShaderDerivativesFeaturesNV6$fZeroPhysicalDeviceComputeShaderDerivativesFeaturesNV:$fStorablePhysicalDeviceComputeShaderDerivativesFeaturesNV=$fFromCStructPhysicalDeviceComputeShaderDerivativesFeaturesNV;$fToCStructPhysicalDeviceComputeShaderDerivativesFeaturesNV4$fEqPhysicalDeviceComputeShaderDerivativesFeaturesNV6$fShowPhysicalDeviceComputeShaderDerivativesFeaturesNV9$fGenericPhysicalDeviceComputeShaderDerivativesFeaturesNV0NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME.NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSIONW$sel:perViewPositionAllComponents:PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;$fZeroPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX?$fStorablePhysicalDeviceMultiviewPerViewAttributesPropertiesNVXB$fFromCStructPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX@$fToCStructPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX9$fEqPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;$fShowPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>$fGenericPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX1KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME/KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION6$sel:supportsProtected:SurfaceProtectedCapabilitiesKHR%$fZeroSurfaceProtectedCapabilitiesKHR)$fStorableSurfaceProtectedCapabilitiesKHR,$fFromCStructSurfaceProtectedCapabilitiesKHR*$fToCStructSurfaceProtectedCapabilitiesKHR#$fEqSurfaceProtectedCapabilitiesKHR%$fShowSurfaceProtectedCapabilitiesKHR($fGenericSurfaceProtectedCapabilitiesKHRKHR_SHADER_CLOCK_EXTENSION_NAMEKHR_SHADER_CLOCK_SPEC_VERSION=$sel:shaderSubgroupClock:PhysicalDeviceShaderClockFeaturesKHR;$sel:shaderDeviceClock:PhysicalDeviceShaderClockFeaturesKHR*$fZeroPhysicalDeviceShaderClockFeaturesKHR.$fStorablePhysicalDeviceShaderClockFeaturesKHR1$fFromCStructPhysicalDeviceShaderClockFeaturesKHR/$fToCStructPhysicalDeviceShaderClockFeaturesKHR($fEqPhysicalDeviceShaderClockFeaturesKHR*$fShowPhysicalDeviceShaderClockFeaturesKHR-$fGenericPhysicalDeviceShaderClockFeaturesKHR&KHR_INCREMENTAL_PRESENT_EXTENSION_NAME$KHR_INCREMENTAL_PRESENT_SPEC_VERSION$sel:offset:RectLayerKHR$sel:extent:RectLayerKHR$sel:layer:RectLayerKHR$$sel:rectangleCount:PresentRegionKHR $sel:rectangles:PresentRegionKHR%$sel:swapchainCount:PresentRegionsKHR$sel:regions:PresentRegionsKHR$fZeroRectLayerKHR$fFromCStructRectLayerKHR$fToCStructRectLayerKHR$fZeroPresentRegionKHR$fFromCStructPresentRegionKHR$fToCStructPresentRegionKHR$fZeroPresentRegionsKHR$fFromCStructPresentRegionsKHR$fToCStructPresentRegionsKHR$fShowRectLayerKHR$fGenericRectLayerKHR$fShowPresentRegionKHR$fGenericPresentRegionKHR$fShowPresentRegionsKHR$fGenericPresentRegionsKHR/INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME-INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSIONO$sel:shaderIntegerFunctions2:PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL8$fZeroPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL<$fStorablePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL?$fFromCStructPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL=$fToCStructPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL6$fEqPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL8$fShowPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;$fGenericPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL%EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME#EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION?$sel:ycbcrImageArrays:PhysicalDeviceYcbcrImageArraysFeaturesEXT/$fZeroPhysicalDeviceYcbcrImageArraysFeaturesEXT3$fStorablePhysicalDeviceYcbcrImageArraysFeaturesEXT6$fFromCStructPhysicalDeviceYcbcrImageArraysFeaturesEXT4$fToCStructPhysicalDeviceYcbcrImageArraysFeaturesEXT-$fEqPhysicalDeviceYcbcrImageArraysFeaturesEXT/$fShowPhysicalDeviceYcbcrImageArraysFeaturesEXT2$fGenericPhysicalDeviceYcbcrImageArraysFeaturesEXT+EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME)EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSIONW$sel:vertexAttributeInstanceRateDivisor:PhysicalDeviceVertexAttributeDivisorFeaturesEXT[$sel:vertexAttributeInstanceRateZeroDivisor:PhysicalDeviceVertexAttributeDivisorFeaturesEXTM$sel:maxVertexAttribDivisor:PhysicalDeviceVertexAttributeDivisorPropertiesEXTG$sel:vertexBindingDivisors:PipelineVertexInputDivisorStateCreateInfoEXT4$sel:binding:VertexInputBindingDivisorDescriptionEXT4$sel:divisor:VertexInputBindingDivisorDescriptionEXT-$fZeroVertexInputBindingDivisorDescriptionEXT1$fStorableVertexInputBindingDivisorDescriptionEXT4$fFromCStructVertexInputBindingDivisorDescriptionEXT2$fToCStructVertexInputBindingDivisorDescriptionEXT2$fZeroPipelineVertexInputDivisorStateCreateInfoEXT9$fFromCStructPipelineVertexInputDivisorStateCreateInfoEXT7$fToCStructPipelineVertexInputDivisorStateCreateInfoEXT7$fZeroPhysicalDeviceVertexAttributeDivisorPropertiesEXT;$fStorablePhysicalDeviceVertexAttributeDivisorPropertiesEXT>$fFromCStructPhysicalDeviceVertexAttributeDivisorPropertiesEXT<$fToCStructPhysicalDeviceVertexAttributeDivisorPropertiesEXT5$fZeroPhysicalDeviceVertexAttributeDivisorFeaturesEXT9$fStorablePhysicalDeviceVertexAttributeDivisorFeaturesEXT<$fFromCStructPhysicalDeviceVertexAttributeDivisorFeaturesEXT:$fToCStructPhysicalDeviceVertexAttributeDivisorFeaturesEXT+$fEqVertexInputBindingDivisorDescriptionEXT5$fEqPhysicalDeviceVertexAttributeDivisorPropertiesEXT3$fEqPhysicalDeviceVertexAttributeDivisorFeaturesEXT5$fShowPhysicalDeviceVertexAttributeDivisorFeaturesEXT8$fGenericPhysicalDeviceVertexAttributeDivisorFeaturesEXT7$fShowPhysicalDeviceVertexAttributeDivisorPropertiesEXT:$fGenericPhysicalDeviceVertexAttributeDivisorPropertiesEXT2$fShowPipelineVertexInputDivisorStateCreateInfoEXT5$fGenericPipelineVertexInputDivisorStateCreateInfoEXT-$fShowVertexInputBindingDivisorDescriptionEXT0$fGenericVertexInputBindingDivisorDescriptionEXT/EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME-EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSIONR$sel:textureCompressionASTC_HDR:PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT8$fZeroPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT<$fStorablePhysicalDeviceTextureCompressionASTCHDRFeaturesEXT?$fFromCStructPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT=$fToCStructPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT6$fEqPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT8$fShowPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT;$fGenericPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT)EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME'EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION[$sel:storageTexelBufferOffsetAlignmentBytes:PhysicalDeviceTexelBufferAlignmentPropertiesEXTa$sel:storageTexelBufferOffsetSingleTexelAlignment:PhysicalDeviceTexelBufferAlignmentPropertiesEXT[$sel:uniformTexelBufferOffsetAlignmentBytes:PhysicalDeviceTexelBufferAlignmentPropertiesEXTa$sel:uniformTexelBufferOffsetSingleTexelAlignment:PhysicalDeviceTexelBufferAlignmentPropertiesEXTG$sel:texelBufferAlignment:PhysicalDeviceTexelBufferAlignmentFeaturesEXT3$fZeroPhysicalDeviceTexelBufferAlignmentFeaturesEXT7$fStorablePhysicalDeviceTexelBufferAlignmentFeaturesEXT:$fFromCStructPhysicalDeviceTexelBufferAlignmentFeaturesEXT8$fToCStructPhysicalDeviceTexelBufferAlignmentFeaturesEXT5$fZeroPhysicalDeviceTexelBufferAlignmentPropertiesEXT9$fStorablePhysicalDeviceTexelBufferAlignmentPropertiesEXT<$fFromCStructPhysicalDeviceTexelBufferAlignmentPropertiesEXT:$fToCStructPhysicalDeviceTexelBufferAlignmentPropertiesEXT1$fEqPhysicalDeviceTexelBufferAlignmentFeaturesEXT3$fEqPhysicalDeviceTexelBufferAlignmentPropertiesEXT5$fShowPhysicalDeviceTexelBufferAlignmentPropertiesEXT8$fGenericPhysicalDeviceTexelBufferAlignmentPropertiesEXT3$fShowPhysicalDeviceTexelBufferAlignmentFeaturesEXT6$fGenericPhysicalDeviceTexelBufferAlignmentFeaturesEXT5EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME3EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION[$sel:shaderDemoteToHelperInvocation:PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT=$fZeroPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTA$fStorablePhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTD$fFromCStructPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTB$fToCStructPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;$fEqPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT=$fShowPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT@$fGenericPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTEXT_ROBUSTNESS_2_EXTENSION_NAMEEXT_ROBUSTNESS_2_SPEC_VERSIONR$sel:robustStorageBufferAccessSizeAlignment:PhysicalDeviceRobustness2PropertiesEXTR$sel:robustUniformBufferAccessSizeAlignment:PhysicalDeviceRobustness2PropertiesEXT=$sel:robustBufferAccess2:PhysicalDeviceRobustness2FeaturesEXT<$sel:robustImageAccess2:PhysicalDeviceRobustness2FeaturesEXT8$sel:nullDescriptor:PhysicalDeviceRobustness2FeaturesEXT*$fZeroPhysicalDeviceRobustness2FeaturesEXT.$fStorablePhysicalDeviceRobustness2FeaturesEXT1$fFromCStructPhysicalDeviceRobustness2FeaturesEXT/$fToCStructPhysicalDeviceRobustness2FeaturesEXT,$fZeroPhysicalDeviceRobustness2PropertiesEXT0$fStorablePhysicalDeviceRobustness2PropertiesEXT3$fFromCStructPhysicalDeviceRobustness2PropertiesEXT1$fToCStructPhysicalDeviceRobustness2PropertiesEXT($fEqPhysicalDeviceRobustness2FeaturesEXT*$fEqPhysicalDeviceRobustness2PropertiesEXT,$fShowPhysicalDeviceRobustness2PropertiesEXT/$fGenericPhysicalDeviceRobustness2PropertiesEXT*$fShowPhysicalDeviceRobustness2FeaturesEXT-$fGenericPhysicalDeviceRobustness2FeaturesEXT-EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME+EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION PipelineCreationFeedbackFlagsEXT#PipelineCreationFeedbackFlagBitsEXTC$sel:pipelineCreationFeedback:PipelineCreationFeedbackCreateInfoEXTM$sel:pipelineStageCreationFeedbackCount:PipelineCreationFeedbackCreateInfoEXTI$sel:pipelineStageCreationFeedbacks:PipelineCreationFeedbackCreateInfoEXT&$sel:flags:PipelineCreationFeedbackEXT)$sel:duration:PipelineCreationFeedbackEXT=PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXTAPIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT(PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT)$fReadPipelineCreationFeedbackFlagBitsEXT)$fShowPipelineCreationFeedbackFlagBitsEXT!$fZeroPipelineCreationFeedbackEXT%$fStorablePipelineCreationFeedbackEXT($fFromCStructPipelineCreationFeedbackEXT&$fToCStructPipelineCreationFeedbackEXT+$fZeroPipelineCreationFeedbackCreateInfoEXT/$fStorablePipelineCreationFeedbackCreateInfoEXT2$fFromCStructPipelineCreationFeedbackCreateInfoEXT0$fToCStructPipelineCreationFeedbackCreateInfoEXT'$fEqPipelineCreationFeedbackFlagBitsEXT($fOrdPipelineCreationFeedbackFlagBitsEXT-$fStorablePipelineCreationFeedbackFlagBitsEXT)$fZeroPipelineCreationFeedbackFlagBitsEXT)$fBitsPipelineCreationFeedbackFlagBitsEXT$fEqPipelineCreationFeedbackEXT)$fEqPipelineCreationFeedbackCreateInfoEXT+$fShowPipelineCreationFeedbackCreateInfoEXT.$fGenericPipelineCreationFeedbackCreateInfoEXT!$fShowPipelineCreationFeedbackEXT$$fGenericPipelineCreationFeedbackEXT2EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME0EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSIONW$sel:pipelineCreationCacheControl:PhysicalDevicePipelineCreationCacheControlFeaturesEXT#ERROR_PIPELINE_COMPILE_REQUIRED_EXT;$fZeroPhysicalDevicePipelineCreationCacheControlFeaturesEXT?$fStorablePhysicalDevicePipelineCreationCacheControlFeaturesEXTB$fFromCStructPhysicalDevicePipelineCreationCacheControlFeaturesEXT@$fToCStructPhysicalDevicePipelineCreationCacheControlFeaturesEXT9$fEqPhysicalDevicePipelineCreationCacheControlFeaturesEXT;$fShowPhysicalDevicePipelineCreationCacheControlFeaturesEXT>$fGenericPhysicalDevicePipelineCreationCacheControlFeaturesEXT"EXT_MEMORY_PRIORITY_EXTENSION_NAME EXT_MEMORY_PRIORITY_SPEC_VERSION+$sel:priority:MemoryPriorityAllocateInfoEXT;$sel:memoryPriority:PhysicalDeviceMemoryPriorityFeaturesEXT-$fZeroPhysicalDeviceMemoryPriorityFeaturesEXT1$fStorablePhysicalDeviceMemoryPriorityFeaturesEXT4$fFromCStructPhysicalDeviceMemoryPriorityFeaturesEXT2$fToCStructPhysicalDeviceMemoryPriorityFeaturesEXT#$fZeroMemoryPriorityAllocateInfoEXT'$fStorableMemoryPriorityAllocateInfoEXT*$fFromCStructMemoryPriorityAllocateInfoEXT($fToCStructMemoryPriorityAllocateInfoEXT+$fEqPhysicalDeviceMemoryPriorityFeaturesEXT!$fEqMemoryPriorityAllocateInfoEXT#$fShowMemoryPriorityAllocateInfoEXT&$fGenericMemoryPriorityAllocateInfoEXT-$fShowPhysicalDeviceMemoryPriorityFeaturesEXT0$fGenericPhysicalDeviceMemoryPriorityFeaturesEXT'EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME%EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSIONP$sel:maxInlineUniformBlockBindings:DescriptorPoolInlineUniformBlockCreateInfoEXT5$sel:dataSize:WriteDescriptorSetInlineUniformBlockEXT2$sel:data':WriteDescriptorSetInlineUniformBlockEXTL$sel:maxInlineUniformBlockSize:PhysicalDeviceInlineUniformBlockPropertiesEXT[$sel:maxPerStageDescriptorInlineUniformBlocks:PhysicalDeviceInlineUniformBlockPropertiesEXTj$sel:maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks:PhysicalDeviceInlineUniformBlockPropertiesEXTV$sel:maxDescriptorSetInlineUniformBlocks:PhysicalDeviceInlineUniformBlockPropertiesEXTe$sel:maxDescriptorSetUpdateAfterBindInlineUniformBlocks:PhysicalDeviceInlineUniformBlockPropertiesEXTC$sel:inlineUniformBlock:PhysicalDeviceInlineUniformBlockFeaturesEXTc$sel:descriptorBindingInlineUniformBlockUpdateAfterBind:PhysicalDeviceInlineUniformBlockFeaturesEXT1$fZeroPhysicalDeviceInlineUniformBlockFeaturesEXT5$fStorablePhysicalDeviceInlineUniformBlockFeaturesEXT8$fFromCStructPhysicalDeviceInlineUniformBlockFeaturesEXT6$fToCStructPhysicalDeviceInlineUniformBlockFeaturesEXT3$fZeroPhysicalDeviceInlineUniformBlockPropertiesEXT7$fStorablePhysicalDeviceInlineUniformBlockPropertiesEXT:$fFromCStructPhysicalDeviceInlineUniformBlockPropertiesEXT8$fToCStructPhysicalDeviceInlineUniformBlockPropertiesEXT-$fZeroWriteDescriptorSetInlineUniformBlockEXT1$fStorableWriteDescriptorSetInlineUniformBlockEXT4$fFromCStructWriteDescriptorSetInlineUniformBlockEXT2$fToCStructWriteDescriptorSetInlineUniformBlockEXT3$fZeroDescriptorPoolInlineUniformBlockCreateInfoEXT7$fStorableDescriptorPoolInlineUniformBlockCreateInfoEXT:$fFromCStructDescriptorPoolInlineUniformBlockCreateInfoEXT8$fToCStructDescriptorPoolInlineUniformBlockCreateInfoEXT/$fEqPhysicalDeviceInlineUniformBlockFeaturesEXT1$fEqPhysicalDeviceInlineUniformBlockPropertiesEXT1$fEqDescriptorPoolInlineUniformBlockCreateInfoEXT3$fShowDescriptorPoolInlineUniformBlockCreateInfoEXT6$fGenericDescriptorPoolInlineUniformBlockCreateInfoEXT-$fShowWriteDescriptorSetInlineUniformBlockEXT0$fGenericWriteDescriptorSetInlineUniformBlockEXT3$fShowPhysicalDeviceInlineUniformBlockPropertiesEXT6$fGenericPhysicalDeviceInlineUniformBlockPropertiesEXT1$fShowPhysicalDeviceInlineUniformBlockFeaturesEXT4$fGenericPhysicalDeviceInlineUniformBlockFeaturesEXT#EXT_INDEX_TYPE_UINT8_EXTENSION_NAME!EXT_INDEX_TYPE_UINT8_SPEC_VERSION;$sel:indexTypeUint8:PhysicalDeviceIndexTypeUint8FeaturesEXT-$fZeroPhysicalDeviceIndexTypeUint8FeaturesEXT1$fStorablePhysicalDeviceIndexTypeUint8FeaturesEXT4$fFromCStructPhysicalDeviceIndexTypeUint8FeaturesEXT2$fToCStructPhysicalDeviceIndexTypeUint8FeaturesEXT+$fEqPhysicalDeviceIndexTypeUint8FeaturesEXT-$fShowPhysicalDeviceIndexTypeUint8FeaturesEXT0$fGenericPhysicalDeviceIndexTypeUint8FeaturesEXT,EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME*EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSIONS$sel:fragmentShaderSampleInterlock:PhysicalDeviceFragmentShaderInterlockFeaturesEXTR$sel:fragmentShaderPixelInterlock:PhysicalDeviceFragmentShaderInterlockFeaturesEXTX$sel:fragmentShaderShadingRateInterlock:PhysicalDeviceFragmentShaderInterlockFeaturesEXT6$fZeroPhysicalDeviceFragmentShaderInterlockFeaturesEXT:$fStorablePhysicalDeviceFragmentShaderInterlockFeaturesEXT=$fFromCStructPhysicalDeviceFragmentShaderInterlockFeaturesEXT;$fToCStructPhysicalDeviceFragmentShaderInterlockFeaturesEXT4$fEqPhysicalDeviceFragmentShaderInterlockFeaturesEXT6$fShowPhysicalDeviceFragmentShaderInterlockFeaturesEXT9$fGenericPhysicalDeviceFragmentShaderInterlockFeaturesEXT)EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME'EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSIONC$sel:subsampledLoads:PhysicalDeviceFragmentDensityMap2PropertiesEXT]$sel:subsampledCoarseReconstructionEarlyAccess:PhysicalDeviceFragmentDensityMap2PropertiesEXTL$sel:maxSubsampledArrayLayers:PhysicalDeviceFragmentDensityMap2PropertiesEXTV$sel:maxDescriptorSetSubsampledSamplers:PhysicalDeviceFragmentDensityMap2PropertiesEXTL$sel:fragmentDensityMapDeferred:PhysicalDeviceFragmentDensityMap2FeaturesEXT2$fZeroPhysicalDeviceFragmentDensityMap2FeaturesEXT6$fStorablePhysicalDeviceFragmentDensityMap2FeaturesEXT9$fFromCStructPhysicalDeviceFragmentDensityMap2FeaturesEXT7$fToCStructPhysicalDeviceFragmentDensityMap2FeaturesEXT4$fZeroPhysicalDeviceFragmentDensityMap2PropertiesEXT8$fStorablePhysicalDeviceFragmentDensityMap2PropertiesEXT;$fFromCStructPhysicalDeviceFragmentDensityMap2PropertiesEXT9$fToCStructPhysicalDeviceFragmentDensityMap2PropertiesEXT0$fEqPhysicalDeviceFragmentDensityMap2FeaturesEXT2$fEqPhysicalDeviceFragmentDensityMap2PropertiesEXT4$fShowPhysicalDeviceFragmentDensityMap2PropertiesEXT7$fGenericPhysicalDeviceFragmentDensityMap2PropertiesEXT2$fShowPhysicalDeviceFragmentDensityMap2FeaturesEXT5$fGenericPhysicalDeviceFragmentDensityMap2FeaturesEXT$EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME"EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION1PipelineRasterizationDepthClipStateCreateFlagsEXT;$sel:flags:PipelineRasterizationDepthClipStateCreateInfoEXTE$sel:depthClipEnable:PipelineRasterizationDepthClipStateCreateInfoEXT=$sel:depthClipEnable:PhysicalDeviceDepthClipEnableFeaturesEXT.$fZeroPhysicalDeviceDepthClipEnableFeaturesEXT2$fStorablePhysicalDeviceDepthClipEnableFeaturesEXT5$fFromCStructPhysicalDeviceDepthClipEnableFeaturesEXT3$fToCStructPhysicalDeviceDepthClipEnableFeaturesEXT7$fReadPipelineRasterizationDepthClipStateCreateFlagsEXT7$fShowPipelineRasterizationDepthClipStateCreateFlagsEXT6$fZeroPipelineRasterizationDepthClipStateCreateInfoEXT:$fStorablePipelineRasterizationDepthClipStateCreateInfoEXT=$fFromCStructPipelineRasterizationDepthClipStateCreateInfoEXT;$fToCStructPipelineRasterizationDepthClipStateCreateInfoEXT,$fEqPhysicalDeviceDepthClipEnableFeaturesEXT5$fEqPipelineRasterizationDepthClipStateCreateFlagsEXT6$fOrdPipelineRasterizationDepthClipStateCreateFlagsEXT;$fStorablePipelineRasterizationDepthClipStateCreateFlagsEXT7$fZeroPipelineRasterizationDepthClipStateCreateFlagsEXT7$fBitsPipelineRasterizationDepthClipStateCreateFlagsEXT4$fEqPipelineRasterizationDepthClipStateCreateInfoEXT6$fShowPipelineRasterizationDepthClipStateCreateInfoEXT9$fGenericPipelineRasterizationDepthClipStateCreateInfoEXT.$fShowPhysicalDeviceDepthClipEnableFeaturesEXT1$fGenericPhysicalDeviceDepthClipEnableFeaturesEXT-EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME+EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION ConservativeRasterizationModeEXT4PipelineRasterizationConservativeStateCreateFlagsEXT>$sel:flags:PipelineRasterizationConservativeStateCreateInfoEXTV$sel:conservativeRasterizationMode:PipelineRasterizationConservativeStateCreateInfoEXTY$sel:extraPrimitiveOverestimationSize:PipelineRasterizationConservativeStateCreateInfoEXTU$sel:primitiveOverestimationSize:PhysicalDeviceConservativeRasterizationPropertiesEXT]$sel:maxExtraPrimitiveOverestimationSize:PhysicalDeviceConservativeRasterizationPropertiesEXTe$sel:extraPrimitiveOverestimationSizeGranularity:PhysicalDeviceConservativeRasterizationPropertiesEXTR$sel:primitiveUnderestimation:PhysicalDeviceConservativeRasterizationPropertiesEXT_$sel:conservativePointAndLineRasterization:PhysicalDeviceConservativeRasterizationPropertiesEXTW$sel:degenerateTrianglesRasterized:PhysicalDeviceConservativeRasterizationPropertiesEXTS$sel:degenerateLinesRasterized:PhysicalDeviceConservativeRasterizationPropertiesEXTa$sel:fullyCoveredFragmentShaderInputVariable:PhysicalDeviceConservativeRasterizationPropertiesEXTd$sel:conservativeRasterizationPostDepthCoverage:PhysicalDeviceConservativeRasterizationPropertiesEXT1CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT0CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT:$fZeroPhysicalDeviceConservativeRasterizationPropertiesEXT>$fStorablePhysicalDeviceConservativeRasterizationPropertiesEXTA$fFromCStructPhysicalDeviceConservativeRasterizationPropertiesEXT?$fToCStructPhysicalDeviceConservativeRasterizationPropertiesEXT:$fReadPipelineRasterizationConservativeStateCreateFlagsEXT:$fShowPipelineRasterizationConservativeStateCreateFlagsEXT&$fReadConservativeRasterizationModeEXT&$fShowConservativeRasterizationModeEXT9$fZeroPipelineRasterizationConservativeStateCreateInfoEXT=$fStorablePipelineRasterizationConservativeStateCreateInfoEXT@$fFromCStructPipelineRasterizationConservativeStateCreateInfoEXT>$fToCStructPipelineRasterizationConservativeStateCreateInfoEXT8$fEqPhysicalDeviceConservativeRasterizationPropertiesEXT8$fEqPipelineRasterizationConservativeStateCreateFlagsEXT9$fOrdPipelineRasterizationConservativeStateCreateFlagsEXT>$fStorablePipelineRasterizationConservativeStateCreateFlagsEXT:$fZeroPipelineRasterizationConservativeStateCreateFlagsEXT:$fBitsPipelineRasterizationConservativeStateCreateFlagsEXT$$fEqConservativeRasterizationModeEXT%$fOrdConservativeRasterizationModeEXT*$fStorableConservativeRasterizationModeEXT&$fZeroConservativeRasterizationModeEXT7$fEqPipelineRasterizationConservativeStateCreateInfoEXT9$fShowPipelineRasterizationConservativeStateCreateInfoEXT<$fGenericPipelineRasterizationConservativeStateCreateInfoEXT:$fShowPhysicalDeviceConservativeRasterizationPropertiesEXT=$fGenericPhysicalDeviceConservativeRasterizationPropertiesEXT+EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME)EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSIONBlendOverlapEXTB$sel:srcPremultiplied:PipelineColorBlendAdvancedStateCreateInfoEXTB$sel:dstPremultiplied:PipelineColorBlendAdvancedStateCreateInfoEXT>$sel:blendOverlap:PipelineColorBlendAdvancedStateCreateInfoEXTW$sel:advancedBlendMaxColorAttachments:PhysicalDeviceBlendOperationAdvancedPropertiesEXTT$sel:advancedBlendIndependentBlend:PhysicalDeviceBlendOperationAdvancedPropertiesEXT\$sel:advancedBlendNonPremultipliedSrcColor:PhysicalDeviceBlendOperationAdvancedPropertiesEXT\$sel:advancedBlendNonPremultipliedDstColor:PhysicalDeviceBlendOperationAdvancedPropertiesEXTU$sel:advancedBlendCorrelatedOverlap:PhysicalDeviceBlendOperationAdvancedPropertiesEXTQ$sel:advancedBlendAllOperations:PhysicalDeviceBlendOperationAdvancedPropertiesEXTT$sel:advancedBlendCoherentOperations:PhysicalDeviceBlendOperationAdvancedFeaturesEXTBLEND_OVERLAP_CONJOINT_EXTBLEND_OVERLAP_DISJOINT_EXTBLEND_OVERLAP_UNCORRELATED_EXT5$fZeroPhysicalDeviceBlendOperationAdvancedFeaturesEXT9$fStorablePhysicalDeviceBlendOperationAdvancedFeaturesEXT<$fFromCStructPhysicalDeviceBlendOperationAdvancedFeaturesEXT:$fToCStructPhysicalDeviceBlendOperationAdvancedFeaturesEXT7$fZeroPhysicalDeviceBlendOperationAdvancedPropertiesEXT;$fStorablePhysicalDeviceBlendOperationAdvancedPropertiesEXT>$fFromCStructPhysicalDeviceBlendOperationAdvancedPropertiesEXT<$fToCStructPhysicalDeviceBlendOperationAdvancedPropertiesEXT$fReadBlendOverlapEXT$fShowBlendOverlapEXT2$fZeroPipelineColorBlendAdvancedStateCreateInfoEXT6$fStorablePipelineColorBlendAdvancedStateCreateInfoEXT9$fFromCStructPipelineColorBlendAdvancedStateCreateInfoEXT7$fToCStructPipelineColorBlendAdvancedStateCreateInfoEXT3$fEqPhysicalDeviceBlendOperationAdvancedFeaturesEXT5$fEqPhysicalDeviceBlendOperationAdvancedPropertiesEXT$fEqBlendOverlapEXT$fOrdBlendOverlapEXT$fStorableBlendOverlapEXT$fZeroBlendOverlapEXT0$fEqPipelineColorBlendAdvancedStateCreateInfoEXT2$fShowPipelineColorBlendAdvancedStateCreateInfoEXT5$fGenericPipelineColorBlendAdvancedStateCreateInfoEXT7$fShowPhysicalDeviceBlendOperationAdvancedPropertiesEXT:$fGenericPhysicalDeviceBlendOperationAdvancedPropertiesEXT5$fShowPhysicalDeviceBlendOperationAdvancedFeaturesEXT8$fGenericPhysicalDeviceBlendOperationAdvancedFeaturesEXT*AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME(AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSIONH$sel:supportsTextureGatherLODBiasAMD:TextureLODGatherFormatPropertiesAMD)$fZeroTextureLODGatherFormatPropertiesAMD-$fStorableTextureLODGatherFormatPropertiesAMD0$fFromCStructTextureLODGatherFormatPropertiesAMD.$fToCStructTextureLODGatherFormatPropertiesAMD'$fEqTextureLODGatherFormatPropertiesAMD)$fShowTextureLODGatherFormatPropertiesAMD,$fGenericTextureLODGatherFormatPropertiesAMD+AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME)AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSIONShaderCorePropertiesFlagsAMDShaderCorePropertiesFlagBitsAMD>$sel:shaderCoreFeatures:PhysicalDeviceShaderCoreProperties2AMDB$sel:activeComputeUnitCount:PhysicalDeviceShaderCoreProperties2AMD%$fReadShaderCorePropertiesFlagBitsAMD%$fShowShaderCorePropertiesFlagBitsAMD,$fZeroPhysicalDeviceShaderCoreProperties2AMD0$fStorablePhysicalDeviceShaderCoreProperties2AMD3$fFromCStructPhysicalDeviceShaderCoreProperties2AMD1$fToCStructPhysicalDeviceShaderCoreProperties2AMD#$fEqShaderCorePropertiesFlagBitsAMD$$fOrdShaderCorePropertiesFlagBitsAMD)$fStorableShaderCorePropertiesFlagBitsAMD%$fZeroShaderCorePropertiesFlagBitsAMD%$fBitsShaderCorePropertiesFlagBitsAMD*$fEqPhysicalDeviceShaderCoreProperties2AMD,$fShowPhysicalDeviceShaderCoreProperties2AMD/$fGenericPhysicalDeviceShaderCoreProperties2AMD,AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME*AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSIONPipelineCompilerControlFlagsAMD"PipelineCompilerControlFlagBitsAMD>$sel:compilerControlFlags:PipelineCompilerControlCreateInfoAMD($fReadPipelineCompilerControlFlagBitsAMD($fShowPipelineCompilerControlFlagBitsAMD*$fZeroPipelineCompilerControlCreateInfoAMD.$fStorablePipelineCompilerControlCreateInfoAMD1$fFromCStructPipelineCompilerControlCreateInfoAMD/$fToCStructPipelineCompilerControlCreateInfoAMD&$fEqPipelineCompilerControlFlagBitsAMD'$fOrdPipelineCompilerControlFlagBitsAMD,$fStorablePipelineCompilerControlFlagBitsAMD($fZeroPipelineCompilerControlFlagBitsAMD($fBitsPipelineCompilerControlFlagBitsAMD($fEqPipelineCompilerControlCreateInfoAMD*$fShowPipelineCompilerControlCreateInfoAMD-$fGenericPipelineCompilerControlCreateInfoAMD)AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME'AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSIONA$sel:deviceCoherentMemory:PhysicalDeviceCoherentMemoryFeaturesAMD-$fZeroPhysicalDeviceCoherentMemoryFeaturesAMD1$fStorablePhysicalDeviceCoherentMemoryFeaturesAMD4$fFromCStructPhysicalDeviceCoherentMemoryFeaturesAMD2$fToCStructPhysicalDeviceCoherentMemoryFeaturesAMD+$fEqPhysicalDeviceCoherentMemoryFeaturesAMD-$fShowPhysicalDeviceCoherentMemoryFeaturesAMD0$fGenericPhysicalDeviceCoherentMemoryFeaturesAMD>$sel:vulkanMemoryModel:PhysicalDeviceVulkanMemoryModelFeaturesI$sel:vulkanMemoryModelDeviceScope:PhysicalDeviceVulkanMemoryModelFeaturesZ$sel:vulkanMemoryModelAvailabilityVisibilityChains:PhysicalDeviceVulkanMemoryModelFeatures-$fZeroPhysicalDeviceVulkanMemoryModelFeatures1$fStorablePhysicalDeviceVulkanMemoryModelFeatures4$fFromCStructPhysicalDeviceVulkanMemoryModelFeatures2$fToCStructPhysicalDeviceVulkanMemoryModelFeatures+$fEqPhysicalDeviceVulkanMemoryModelFeatures-$fShowPhysicalDeviceVulkanMemoryModelFeatures0$fGenericPhysicalDeviceVulkanMemoryModelFeatures&KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME$KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION*PhysicalDeviceVulkanMemoryModelFeaturesKHR?STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHRR$sel:uniformBufferStandardLayout:PhysicalDeviceUniformBufferStandardLayoutFeatures7$fZeroPhysicalDeviceUniformBufferStandardLayoutFeatures;$fStorablePhysicalDeviceUniformBufferStandardLayoutFeatures>$fFromCStructPhysicalDeviceUniformBufferStandardLayoutFeatures<$fToCStructPhysicalDeviceUniformBufferStandardLayoutFeatures5$fEqPhysicalDeviceUniformBufferStandardLayoutFeatures7$fShowPhysicalDeviceUniformBufferStandardLayoutFeatures:$fGenericPhysicalDeviceUniformBufferStandardLayoutFeatures1KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME/KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION4PhysicalDeviceUniformBufferStandardLayoutFeaturesKHRJSTRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHRR$sel:shaderSubgroupExtendedTypes:PhysicalDeviceShaderSubgroupExtendedTypesFeatures7$fZeroPhysicalDeviceShaderSubgroupExtendedTypesFeatures;$fStorablePhysicalDeviceShaderSubgroupExtendedTypesFeatures>$fFromCStructPhysicalDeviceShaderSubgroupExtendedTypesFeatures<$fToCStructPhysicalDeviceShaderSubgroupExtendedTypesFeatures5$fEqPhysicalDeviceShaderSubgroupExtendedTypesFeatures7$fShowPhysicalDeviceShaderSubgroupExtendedTypesFeatures:$fGenericPhysicalDeviceShaderSubgroupExtendedTypesFeatures1KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME/KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION4PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHRJSTRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHRE$sel:denormBehaviorIndependence:PhysicalDeviceFloatControlsPropertiesC$sel:roundingModeIndependence:PhysicalDeviceFloatControlsPropertiesP$sel:shaderSignedZeroInfNanPreserveFloat16:PhysicalDeviceFloatControlsPropertiesP$sel:shaderSignedZeroInfNanPreserveFloat32:PhysicalDeviceFloatControlsPropertiesP$sel:shaderSignedZeroInfNanPreserveFloat64:PhysicalDeviceFloatControlsPropertiesF$sel:shaderDenormPreserveFloat16:PhysicalDeviceFloatControlsPropertiesF$sel:shaderDenormPreserveFloat32:PhysicalDeviceFloatControlsPropertiesF$sel:shaderDenormPreserveFloat64:PhysicalDeviceFloatControlsPropertiesI$sel:shaderDenormFlushToZeroFloat16:PhysicalDeviceFloatControlsPropertiesI$sel:shaderDenormFlushToZeroFloat32:PhysicalDeviceFloatControlsPropertiesI$sel:shaderDenormFlushToZeroFloat64:PhysicalDeviceFloatControlsPropertiesG$sel:shaderRoundingModeRTEFloat16:PhysicalDeviceFloatControlsPropertiesG$sel:shaderRoundingModeRTEFloat32:PhysicalDeviceFloatControlsPropertiesG$sel:shaderRoundingModeRTEFloat64:PhysicalDeviceFloatControlsPropertiesG$sel:shaderRoundingModeRTZFloat16:PhysicalDeviceFloatControlsPropertiesG$sel:shaderRoundingModeRTZFloat32:PhysicalDeviceFloatControlsPropertiesG$sel:shaderRoundingModeRTZFloat64:PhysicalDeviceFloatControlsProperties+$fZeroPhysicalDeviceFloatControlsProperties/$fStorablePhysicalDeviceFloatControlsProperties2$fFromCStructPhysicalDeviceFloatControlsProperties0$fToCStructPhysicalDeviceFloatControlsProperties)$fEqPhysicalDeviceFloatControlsProperties+$fShowPhysicalDeviceFloatControlsProperties.$fGenericPhysicalDeviceFloatControlsProperties(KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME&KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION(PhysicalDeviceFloatControlsPropertiesKHR"ShaderFloatControlsIndependenceKHR+SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR*SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR2SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR$sel:storageBuffer8BitAccess:PhysicalDevice8BitStorageFeaturesH$sel:uniformAndStorageBuffer8BitAccess:PhysicalDevice8BitStorageFeatures;$sel:storagePushConstant8:PhysicalDevice8BitStorageFeatures'$fZeroPhysicalDevice8BitStorageFeatures+$fStorablePhysicalDevice8BitStorageFeatures.$fFromCStructPhysicalDevice8BitStorageFeatures,$fToCStructPhysicalDevice8BitStorageFeatures%$fEqPhysicalDevice8BitStorageFeatures'$fShowPhysicalDevice8BitStorageFeatures*$fGenericPhysicalDevice8BitStorageFeaturesKHR_8BIT_STORAGE_EXTENSION_NAMEKHR_8BIT_STORAGE_SPEC_VERSION$PhysicalDevice8BitStorageFeaturesKHR8STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR>$sel:scalarBlockLayout:PhysicalDeviceScalarBlockLayoutFeatures-$fZeroPhysicalDeviceScalarBlockLayoutFeatures1$fStorablePhysicalDeviceScalarBlockLayoutFeatures4$fFromCStructPhysicalDeviceScalarBlockLayoutFeatures2$fToCStructPhysicalDeviceScalarBlockLayoutFeatures+$fEqPhysicalDeviceScalarBlockLayoutFeatures-$fShowPhysicalDeviceScalarBlockLayoutFeatures0$fGenericPhysicalDeviceScalarBlockLayoutFeatures&EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME$EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION*PhysicalDeviceScalarBlockLayoutFeaturesEXT?STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXTSemaphoreWaitFlagsSemaphoreWaitFlagBitsSEMAPHORE_WAIT_ANY_BIT$fReadSemaphoreWaitFlagBits$fShowSemaphoreWaitFlagBits$fEqSemaphoreWaitFlagBits$fOrdSemaphoreWaitFlagBits$fStorableSemaphoreWaitFlagBits$fZeroSemaphoreWaitFlagBits$fBitsSemaphoreWaitFlagBitsResolveModeFlagsRESOLVE_MODE_MAX_BITRESOLVE_MODE_MIN_BIT$fReadResolveModeFlagBits$fShowResolveModeFlagBits$fEqResolveModeFlagBits$fOrdResolveModeFlagBits$fStorableResolveModeFlagBits$fZeroResolveModeFlagBits$fBitsResolveModeFlagBitsDescriptorBindingFlags$fReadDescriptorBindingFlagBits$fShowDescriptorBindingFlagBits$fEqDescriptorBindingFlagBits$fOrdDescriptorBindingFlagBits#$fStorableDescriptorBindingFlagBits$fZeroDescriptorBindingFlagBits$fBitsDescriptorBindingFlagBits%PhysicalDeviceVariablePointerFeaturesI$sel:variablePointersStorageBuffer:PhysicalDeviceVariablePointersFeatures<$sel:variablePointers:PhysicalDeviceVariablePointersFeatures8STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES,$fZeroPhysicalDeviceVariablePointersFeatures0$fStorablePhysicalDeviceVariablePointersFeatures3$fFromCStructPhysicalDeviceVariablePointersFeatures1$fToCStructPhysicalDeviceVariablePointersFeatures*$fEqPhysicalDeviceVariablePointersFeatures,$fShowPhysicalDeviceVariablePointersFeatures/$fGenericPhysicalDeviceVariablePointersFeatures$KHR_VARIABLE_POINTERS_EXTENSION_NAME"KHR_VARIABLE_POINTERS_SPEC_VERSION(PhysicalDeviceVariablePointerFeaturesKHR)PhysicalDeviceVariablePointersFeaturesKHR$fStorablePipelineShaderStageRequiredSubgroupSizeCreateInfoEXTA$fFromCStructPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT?$fToCStructPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT0$fEqPhysicalDeviceSubgroupSizeControlFeaturesEXT2$fEqPhysicalDeviceSubgroupSizeControlPropertiesEXT8$fEqPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT:$fShowPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT=$fGenericPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT4$fShowPhysicalDeviceSubgroupSizeControlPropertiesEXT7$fGenericPhysicalDeviceSubgroupSizeControlPropertiesEXT2$fShowPhysicalDeviceSubgroupSizeControlFeaturesEXT5$fGenericPhysicalDeviceSubgroupSizeControlFeaturesEXT2$sel:subgroupSize:PhysicalDeviceSubgroupProperties5$sel:supportedStages:PhysicalDeviceSubgroupProperties9$sel:supportedOperations:PhysicalDeviceSubgroupProperties?$sel:quadOperationsInAllStages:PhysicalDeviceSubgroupProperties&$fZeroPhysicalDeviceSubgroupProperties*$fStorablePhysicalDeviceSubgroupProperties-$fFromCStructPhysicalDeviceSubgroupProperties+$fToCStructPhysicalDeviceSubgroupProperties$$fEqPhysicalDeviceSubgroupProperties&$fShowPhysicalDeviceSubgroupProperties)$fGenericPhysicalDeviceSubgroupPropertiesShaderModuleCreateFlagsShaderModuleCreateFlagBits $fReadShaderModuleCreateFlagBits $fShowShaderModuleCreateFlagBits$fEqShaderModuleCreateFlagBits$fOrdShaderModuleCreateFlagBits$$fStorableShaderModuleCreateFlagBits $fZeroShaderModuleCreateFlagBits $fBitsShaderModuleCreateFlagBitsSemaphoreCreateFlags$fReadSemaphoreCreateFlags$fShowSemaphoreCreateFlags$fEqSemaphoreCreateFlags$fOrdSemaphoreCreateFlags$fStorableSemaphoreCreateFlags$fZeroSemaphoreCreateFlags$fBitsSemaphoreCreateFlagsSamplerCreateFlagsSamplerCreateFlagBits$fReadSamplerCreateFlagBits$fShowSamplerCreateFlagBits$fEqSamplerCreateFlagBits$fOrdSamplerCreateFlagBits$fStorableSamplerCreateFlagBits$fZeroSamplerCreateFlagBits$fBitsSamplerCreateFlagBitsSAMPLE_COUNT_64_BITSAMPLE_COUNT_32_BIT$fReadSampleCountFlagBits$fShowSampleCountFlagBits$fEqSampleCountFlagBits$fOrdSampleCountFlagBits$fStorableSampleCountFlagBits$fZeroSampleCountFlagBits$fBitsSampleCountFlagBitsRenderPassCreateFlags$fReadRenderPassCreateFlagBits$fShowRenderPassCreateFlagBits$fEqRenderPassCreateFlagBits$fOrdRenderPassCreateFlagBits"$fStorableRenderPassCreateFlagBits$fZeroRenderPassCreateFlagBits$fBitsRenderPassCreateFlagBits QueueFlags QueueFlagBitsQUEUE_PROTECTED_BITQUEUE_SPARSE_BINDING_BITQUEUE_TRANSFER_BIT$fReadQueueFlagBits$fShowQueueFlagBits$fEqQueueFlagBits$fOrdQueueFlagBits$fStorableQueueFlagBits$fZeroQueueFlagBits$fBitsQueueFlagBits4QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR8QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR$fReadQueryType$fShowQueryType $fEqQueryType$fOrdQueryType$fStorableQueryType$fZeroQueryTypeQUERY_RESULT_PARTIAL_BIT"QUERY_RESULT_WITH_AVAILABILITY_BITQUERY_RESULT_WAIT_BITQUERY_RESULT_64_BIT$fReadQueryResultFlagBits$fShowQueryResultFlagBits$fEqQueryResultFlagBits$fOrdQueryResultFlagBits$fStorableQueryResultFlagBits$fZeroQueryResultFlagBits$fBitsQueryResultFlagBitsQueryPoolCreateFlags$fReadQueryPoolCreateFlags$fShowQueryPoolCreateFlags$fEqQueryPoolCreateFlags$fOrdQueryPoolCreateFlags$fStorableQueryPoolCreateFlags$fZeroQueryPoolCreateFlags$fBitsQueryPoolCreateFlagsQueryPipelineStatisticFlags7QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BITGQUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT@QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT8QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT0QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT1QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT7QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT8QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT6QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT6QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT4QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT$$fReadQueryPipelineStatisticFlagBits$$fShowQueryPipelineStatisticFlagBits"$fEqQueryPipelineStatisticFlagBits#$fOrdQueryPipelineStatisticFlagBits($fStorableQueryPipelineStatisticFlagBits$$fZeroQueryPipelineStatisticFlagBits$$fBitsQueryPipelineStatisticFlagBits$fReadQueryControlFlagBits$fShowQueryControlFlagBits$fEqQueryControlFlagBits$fOrdQueryControlFlagBits$fStorableQueryControlFlagBits$fZeroQueryControlFlagBits$fBitsQueryControlFlagBitsPRIMITIVE_TOPOLOGY_PATCH_LIST0PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY/PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY+PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCYPRIMITIVE_TOPOLOGY_TRIANGLE_FAN!PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP PRIMITIVE_TOPOLOGY_TRIANGLE_LISTPRIMITIVE_TOPOLOGY_LINE_STRIPPRIMITIVE_TOPOLOGY_LINE_LISTPRIMITIVE_TOPOLOGY_POINT_LIST$fReadPrimitiveTopology$fShowPrimitiveTopology$fEqPrimitiveTopology$fOrdPrimitiveTopology$fStorablePrimitiveTopology$fZeroPrimitiveTopology PolygonModePOLYGON_MODE_FILL$fReadPolygonMode$fShowPolygonMode$fEqPolygonMode$fOrdPolygonMode$fStorablePolygonMode$fZeroPolygonMode PipelineViewportStateCreateFlags&$fReadPipelineViewportStateCreateFlags&$fShowPipelineViewportStateCreateFlags$$fEqPipelineViewportStateCreateFlags%$fOrdPipelineViewportStateCreateFlags*$fStorablePipelineViewportStateCreateFlags&$fZeroPipelineViewportStateCreateFlags&$fBitsPipelineViewportStateCreateFlags#PipelineVertexInputStateCreateFlags)$fReadPipelineVertexInputStateCreateFlags)$fShowPipelineVertexInputStateCreateFlags'$fEqPipelineVertexInputStateCreateFlags($fOrdPipelineVertexInputStateCreateFlags-$fStorablePipelineVertexInputStateCreateFlags)$fZeroPipelineVertexInputStateCreateFlags)$fBitsPipelineVertexInputStateCreateFlags$PipelineTessellationStateCreateFlags*$fReadPipelineTessellationStateCreateFlags*$fShowPipelineTessellationStateCreateFlags($fEqPipelineTessellationStateCreateFlags)$fOrdPipelineTessellationStateCreateFlags.$fStorablePipelineTessellationStateCreateFlags*$fZeroPipelineTessellationStateCreateFlags*$fBitsPipelineTessellationStateCreateFlagsPIPELINE_STAGE_ALL_COMMANDS_BITPIPELINE_STAGE_ALL_GRAPHICS_BITPIPELINE_STAGE_TOP_OF_PIPE_BIT$fReadPipelineStageFlagBits$fShowPipelineStageFlagBits$fEqPipelineStageFlagBits$fOrdPipelineStageFlagBits$fStorablePipelineStageFlagBits$fZeroPipelineStageFlagBits$fBitsPipelineStageFlagBitsPipelineShaderStageCreateFlags!PipelineShaderStageCreateFlagBits'$fReadPipelineShaderStageCreateFlagBits'$fShowPipelineShaderStageCreateFlagBits%$fEqPipelineShaderStageCreateFlagBits&$fOrdPipelineShaderStageCreateFlagBits+$fStorablePipelineShaderStageCreateFlagBits'$fZeroPipelineShaderStageCreateFlagBits'$fBitsPipelineShaderStageCreateFlagBits%PipelineRasterizationStateCreateFlags+$fReadPipelineRasterizationStateCreateFlags+$fShowPipelineRasterizationStateCreateFlags)$fEqPipelineRasterizationStateCreateFlags*$fOrdPipelineRasterizationStateCreateFlags/$fStorablePipelineRasterizationStateCreateFlags+$fZeroPipelineRasterizationStateCreateFlags+$fBitsPipelineRasterizationStateCreateFlags#PipelineMultisampleStateCreateFlags)$fReadPipelineMultisampleStateCreateFlags)$fShowPipelineMultisampleStateCreateFlags'$fEqPipelineMultisampleStateCreateFlags($fOrdPipelineMultisampleStateCreateFlags-$fStorablePipelineMultisampleStateCreateFlags)$fZeroPipelineMultisampleStateCreateFlags)$fBitsPipelineMultisampleStateCreateFlagsPipelineLayoutCreateFlags$fReadPipelineLayoutCreateFlags$fShowPipelineLayoutCreateFlags$fEqPipelineLayoutCreateFlags$fOrdPipelineLayoutCreateFlags#$fStorablePipelineLayoutCreateFlags$fZeroPipelineLayoutCreateFlags$fBitsPipelineLayoutCreateFlags%PipelineInputAssemblyStateCreateFlags+$fReadPipelineInputAssemblyStateCreateFlags+$fShowPipelineInputAssemblyStateCreateFlags)$fEqPipelineInputAssemblyStateCreateFlags*$fOrdPipelineInputAssemblyStateCreateFlags/$fStorablePipelineInputAssemblyStateCreateFlags+$fZeroPipelineInputAssemblyStateCreateFlags+$fBitsPipelineInputAssemblyStateCreateFlagsPipelineDynamicStateCreateFlags%$fReadPipelineDynamicStateCreateFlags%$fShowPipelineDynamicStateCreateFlags#$fEqPipelineDynamicStateCreateFlags$$fOrdPipelineDynamicStateCreateFlags)$fStorablePipelineDynamicStateCreateFlags%$fZeroPipelineDynamicStateCreateFlags%$fBitsPipelineDynamicStateCreateFlags$PipelineDepthStencilStateCreateFlags*$fReadPipelineDepthStencilStateCreateFlags*$fShowPipelineDepthStencilStateCreateFlags($fEqPipelineDepthStencilStateCreateFlags)$fOrdPipelineDepthStencilStateCreateFlags.$fStorablePipelineDepthStencilStateCreateFlags*$fZeroPipelineDepthStencilStateCreateFlags*$fBitsPipelineDepthStencilStateCreateFlagsPipelineCreateFlags0PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT!PIPELINE_CREATE_DISPATCH_BASE_BIT(PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT$fReadPipelineCreateFlagBits$fShowPipelineCreateFlagBits$fEqPipelineCreateFlagBits$fOrdPipelineCreateFlagBits $fStorablePipelineCreateFlagBits$fZeroPipelineCreateFlagBits$fBitsPipelineCreateFlagBits"PipelineColorBlendStateCreateFlags($fReadPipelineColorBlendStateCreateFlags($fShowPipelineColorBlendStateCreateFlags&$fEqPipelineColorBlendStateCreateFlags'$fOrdPipelineColorBlendStateCreateFlags,$fStorablePipelineColorBlendStateCreateFlags($fZeroPipelineColorBlendStateCreateFlags($fBitsPipelineColorBlendStateCreateFlags $fReadPipelineCacheHeaderVersion $fShowPipelineCacheHeaderVersion$fEqPipelineCacheHeaderVersion$fOrdPipelineCacheHeaderVersion$$fStorablePipelineCacheHeaderVersion $fZeroPipelineCacheHeaderVersionPipelineCacheCreateFlagsPipelineCacheCreateFlagBits!$fReadPipelineCacheCreateFlagBits!$fShowPipelineCacheCreateFlagBits$fEqPipelineCacheCreateFlagBits $fOrdPipelineCacheCreateFlagBits%$fStorablePipelineCacheCreateFlagBits!$fZeroPipelineCacheCreateFlagBits!$fBitsPipelineCacheCreateFlagBits#PIPELINE_BIND_POINT_RAY_TRACING_KHRPIPELINE_BIND_POINT_COMPUTE$fReadPipelineBindPoint$fShowPipelineBindPoint$fEqPipelineBindPoint$fOrdPipelineBindPoint$fStorablePipelineBindPoint$fZeroPipelineBindPointPhysicalDeviceTypePHYSICAL_DEVICE_TYPE_CPU PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU!PHYSICAL_DEVICE_TYPE_DISCRETE_GPU#PHYSICAL_DEVICE_TYPE_INTEGRATED_GPUPHYSICAL_DEVICE_TYPE_OTHER$fReadPhysicalDeviceType$fShowPhysicalDeviceType$fEqPhysicalDeviceType$fOrdPhysicalDeviceType$fStorablePhysicalDeviceType$fZeroPhysicalDeviceType$OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION&OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATEOBJECT_TYPE_SURFACE_KHROBJECT_TYPE_SWAPCHAIN_KHROBJECT_TYPE_DISPLAY_KHROBJECT_TYPE_DISPLAY_MODE_KHR%OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT%OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT&OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR OBJECT_TYPE_VALIDATION_CACHE_EXT+OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL"OBJECT_TYPE_DEFERRED_OPERATION_KHR'OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV!OBJECT_TYPE_PRIVATE_DATA_SLOT_EXTOBJECT_TYPE_COMMAND_POOLOBJECT_TYPE_FRAMEBUFFEROBJECT_TYPE_DESCRIPTOR_SETOBJECT_TYPE_DESCRIPTOR_POOLOBJECT_TYPE_SAMPLER!OBJECT_TYPE_DESCRIPTOR_SET_LAYOUTOBJECT_TYPE_PIPELINEOBJECT_TYPE_RENDER_PASSOBJECT_TYPE_PIPELINE_LAYOUTOBJECT_TYPE_PIPELINE_CACHEOBJECT_TYPE_SHADER_MODULEOBJECT_TYPE_IMAGE_VIEWOBJECT_TYPE_BUFFER_VIEWOBJECT_TYPE_QUERY_POOLOBJECT_TYPE_EVENTOBJECT_TYPE_IMAGEOBJECT_TYPE_BUFFEROBJECT_TYPE_DEVICE_MEMORYOBJECT_TYPE_FENCEOBJECT_TYPE_COMMAND_BUFFEROBJECT_TYPE_SEMAPHOREOBJECT_TYPE_QUEUEOBJECT_TYPE_DEVICEOBJECT_TYPE_PHYSICAL_DEVICEOBJECT_TYPE_INSTANCE$fReadObjectType$fShowObjectType$fEqObjectType$fOrdObjectType$fStorableObjectType$fZeroObjectTypeMemoryPropertyFlagsMemoryPropertyFlagBits'MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMDMEMORY_PROPERTY_HOST_CACHED_BIT MEMORY_PROPERTY_DEVICE_LOCAL_BIT$fReadMemoryPropertyFlagBits$fShowMemoryPropertyFlagBits$fEqMemoryPropertyFlagBits$fOrdMemoryPropertyFlagBits $fStorableMemoryPropertyFlagBits$fZeroMemoryPropertyFlagBits$fBitsMemoryPropertyFlagBits$fReadMemoryMapFlags$fShowMemoryMapFlags$fEqMemoryMapFlags$fOrdMemoryMapFlags$fStorableMemoryMapFlags$fZeroMemoryMapFlags$fBitsMemoryMapFlagsMemoryHeapFlagsMemoryHeapFlagBits$fReadMemoryHeapFlagBits$fShowMemoryHeapFlagBits$fEqMemoryHeapFlagBits$fOrdMemoryHeapFlagBits$fStorableMemoryHeapFlagBits$fZeroMemoryHeapFlagBits$fBitsMemoryHeapFlagBitsLogicOp LOGIC_OP_SET LOGIC_OP_NANDLOGIC_OP_OR_INVERTEDLOGIC_OP_COPY_INVERTEDLOGIC_OP_OR_REVERSELOGIC_OP_INVERTLOGIC_OP_EQUIVALENT LOGIC_OP_NOR LOGIC_OP_OR LOGIC_OP_XORLOGIC_OP_NO_OPLOGIC_OP_AND_INVERTED LOGIC_OP_COPYLOGIC_OP_AND_REVERSE LOGIC_OP_ANDLOGIC_OP_CLEAR $fReadLogicOp $fShowLogicOp $fEqLogicOp $fOrdLogicOp$fStorableLogicOp $fZeroLogicOpInternalAllocationType#INTERNAL_ALLOCATION_TYPE_EXECUTABLE$fReadInternalAllocationType$fShowInternalAllocationType$fEqInternalAllocationType$fOrdInternalAllocationType $fStorableInternalAllocationType$fZeroInternalAllocationTypePFN_vkFreeFunctionFN_vkFreeFunctionPFN_vkAllocationFunctionFN_vkAllocationFunctionPFN_vkReallocationFunctionFN_vkReallocationFunctionFN_vkInternalFreeNotification#FN_vkInternalAllocationNotificationInstanceCreateFlags$fReadInstanceCreateFlags$fShowInstanceCreateFlags$fEqInstanceCreateFlags$fOrdInstanceCreateFlags$fStorableInstanceCreateFlags$fZeroInstanceCreateFlags$fBitsInstanceCreateFlags$fReadIndexType$fShowIndexType $fEqIndexType$fOrdIndexType$fStorableIndexType$fZeroIndexType$fReadImageViewType$fShowImageViewType$fEqImageViewType$fOrdImageViewType$fStorableImageViewType$fZeroImageViewTypeImageViewCreateFlagsImageViewCreateFlagBits$fReadImageViewCreateFlagBits$fShowImageViewCreateFlagBits$fEqImageViewCreateFlagBits$fOrdImageViewCreateFlagBits!$fStorableImageViewCreateFlagBits$fZeroImageViewCreateFlagBits$fBitsImageViewCreateFlagBits$fReadImageUsageFlagBits$fShowImageUsageFlagBits$fEqImageUsageFlagBits$fOrdImageUsageFlagBits$fStorableImageUsageFlagBits$fZeroImageUsageFlagBits$fBitsImageUsageFlagBits-$sel:stencilUsage:ImageStencilUsageCreateInfo!$fZeroImageStencilUsageCreateInfo%$fStorableImageStencilUsageCreateInfo($fFromCStructImageStencilUsageCreateInfo&$fToCStructImageStencilUsageCreateInfo$fEqImageStencilUsageCreateInfo!$fShowImageStencilUsageCreateInfo$$fGenericImageStencilUsageCreateInfo)EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME'EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSIONImageStencilUsageCreateInfoEXT2STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT$fReadImageType$fShowImageType $fEqImageType$fOrdImageType$fStorableImageType$fZeroImageType$fReadImageTiling$fShowImageTiling$fEqImageTiling$fOrdImageTiling$fStorableImageTiling$fZeroImageTiling$fReadImageLayout$fShowImageLayout$fEqImageLayout$fOrdImageLayout$fStorableImageLayout$fZeroImageLayout<$sel:stencilInitialLayout:AttachmentDescriptionStencilLayout:$sel:stencilFinalLayout:AttachmentDescriptionStencilLayout3$sel:stencilLayout:AttachmentReferenceStencilLayoutR$sel:separateDepthStencilLayouts:PhysicalDeviceSeparateDepthStencilLayoutsFeatures7$fZeroPhysicalDeviceSeparateDepthStencilLayoutsFeatures;$fStorablePhysicalDeviceSeparateDepthStencilLayoutsFeatures>$fFromCStructPhysicalDeviceSeparateDepthStencilLayoutsFeatures<$fToCStructPhysicalDeviceSeparateDepthStencilLayoutsFeatures&$fZeroAttachmentReferenceStencilLayout*$fStorableAttachmentReferenceStencilLayout-$fFromCStructAttachmentReferenceStencilLayout+$fToCStructAttachmentReferenceStencilLayout($fZeroAttachmentDescriptionStencilLayout,$fStorableAttachmentDescriptionStencilLayout/$fFromCStructAttachmentDescriptionStencilLayout-$fToCStructAttachmentDescriptionStencilLayout5$fEqPhysicalDeviceSeparateDepthStencilLayoutsFeatures$$fEqAttachmentReferenceStencilLayout&$fEqAttachmentDescriptionStencilLayout($fShowAttachmentDescriptionStencilLayout+$fGenericAttachmentDescriptionStencilLayout&$fShowAttachmentReferenceStencilLayout)$fGenericAttachmentReferenceStencilLayout7$fShowPhysicalDeviceSeparateDepthStencilLayoutsFeatures:$fGenericPhysicalDeviceSeparateDepthStencilLayoutsFeatures1KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME/KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION%AttachmentDescriptionStencilLayoutKHR#AttachmentReferenceStencilLayoutKHR4PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR8STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR6STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHRJSTRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR$fReadImageCreateFlagBits$fShowImageCreateFlagBits$fEqImageCreateFlagBits$fOrdImageCreateFlagBits$fStorableImageCreateFlagBits$fZeroImageCreateFlagBits$fBitsImageCreateFlagBits1$sel:deviceIndices:BindImageMemoryDeviceGroupInfo<$sel:splitInstanceBindRegions:BindImageMemoryDeviceGroupInfo2$sel:deviceIndices:BindBufferMemoryDeviceGroupInfo%$fZeroBindBufferMemoryDeviceGroupInfo,$fFromCStructBindBufferMemoryDeviceGroupInfo*$fToCStructBindBufferMemoryDeviceGroupInfo$$fZeroBindImageMemoryDeviceGroupInfo+$fFromCStructBindImageMemoryDeviceGroupInfo)$fToCStructBindImageMemoryDeviceGroupInfo$$fShowBindImageMemoryDeviceGroupInfo'$fGenericBindImageMemoryDeviceGroupInfo%$fShowBindBufferMemoryDeviceGroupInfo($fGenericBindBufferMemoryDeviceGroupInfo#IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT#IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT#IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT#IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT$fReadImageAspectFlagBits$fShowImageAspectFlagBits$fEqImageAspectFlagBits$fOrdImageAspectFlagBits$fStorableImageAspectFlagBits$fZeroImageAspectFlagBits$fBitsImageAspectFlagBitsA$sel:domainOrigin:PipelineTessellationDomainOriginStateCreateInfo#$sel:usage:ImageViewUsageCreateInfo@$sel:pointClippingBehavior:PhysicalDevicePointClippingProperties?$sel:aspectReferences:RenderPassInputAttachmentAspectCreateInfo+$sel:subpass:InputAttachmentAspectReference8$sel:inputAttachmentIndex:InputAttachmentAspectReference.$sel:aspectMask:InputAttachmentAspectReference$$fZeroInputAttachmentAspectReference($fStorableInputAttachmentAspectReference+$fFromCStructInputAttachmentAspectReference)$fToCStructInputAttachmentAspectReference/$fZeroRenderPassInputAttachmentAspectCreateInfo6$fFromCStructRenderPassInputAttachmentAspectCreateInfo4$fToCStructRenderPassInputAttachmentAspectCreateInfo+$fZeroPhysicalDevicePointClippingProperties/$fStorablePhysicalDevicePointClippingProperties2$fFromCStructPhysicalDevicePointClippingProperties0$fToCStructPhysicalDevicePointClippingProperties$fZeroImageViewUsageCreateInfo"$fStorableImageViewUsageCreateInfo%$fFromCStructImageViewUsageCreateInfo#$fToCStructImageViewUsageCreateInfo5$fZeroPipelineTessellationDomainOriginStateCreateInfo9$fStorablePipelineTessellationDomainOriginStateCreateInfo<$fFromCStructPipelineTessellationDomainOriginStateCreateInfo:$fToCStructPipelineTessellationDomainOriginStateCreateInfo"$fEqInputAttachmentAspectReference)$fEqPhysicalDevicePointClippingProperties$fEqImageViewUsageCreateInfo3$fEqPipelineTessellationDomainOriginStateCreateInfo5$fShowPipelineTessellationDomainOriginStateCreateInfo8$fGenericPipelineTessellationDomainOriginStateCreateInfo$fShowImageViewUsageCreateInfo!$fGenericImageViewUsageCreateInfo+$fShowPhysicalDevicePointClippingProperties.$fGenericPhysicalDevicePointClippingProperties/$fShowRenderPassInputAttachmentAspectCreateInfo2$fGenericRenderPassInputAttachmentAspectCreateInfo$$fShowInputAttachmentAspectReference'$fGenericInputAttachmentAspectReferenceKHR_MAINTENANCE2_EXTENSION_NAMEKHR_MAINTENANCE2_SPEC_VERSION2PipelineTessellationDomainOriginStateCreateInfoKHRImageViewUsageCreateInfoKHR(PhysicalDevicePointClippingPropertiesKHR,RenderPassInputAttachmentAspectCreateInfoKHR!InputAttachmentAspectReferenceKHRTessellationDomainOriginKHRPointClippingBehaviorKHR)TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR)TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR1POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR+POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR;IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR;IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHRHSTRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR/STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHRBSTRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR$fFromCStructDescriptorSetVariableDescriptorCountLayoutSupport<$fToCStructDescriptorSetVariableDescriptorCountLayoutSupport,$fEqPhysicalDeviceDescriptorIndexingFeatures.$fEqPhysicalDeviceDescriptorIndexingProperties5$fEqDescriptorSetVariableDescriptorCountLayoutSupport7$fShowDescriptorSetVariableDescriptorCountLayoutSupport:$fGenericDescriptorSetVariableDescriptorCountLayoutSupport6$fShowDescriptorSetVariableDescriptorCountAllocateInfo9$fGenericDescriptorSetVariableDescriptorCountAllocateInfo/$fShowDescriptorSetLayoutBindingFlagsCreateInfo2$fGenericDescriptorSetLayoutBindingFlagsCreateInfo0$fShowPhysicalDeviceDescriptorIndexingProperties3$fGenericPhysicalDeviceDescriptorIndexingProperties.$fShowPhysicalDeviceDescriptorIndexingFeatures1$fGenericPhysicalDeviceDescriptorIndexingFeatures&EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME$EXT_DESCRIPTOR_INDEXING_SPEC_VERSION4DescriptorSetVariableDescriptorCountLayoutSupportEXT3DescriptorSetVariableDescriptorCountAllocateInfoEXT,DescriptorSetLayoutBindingFlagsCreateInfoEXT-PhysicalDeviceDescriptorIndexingPropertiesEXT+PhysicalDeviceDescriptorIndexingFeaturesEXTDescriptorBindingFlagBitsEXTDescriptorBindingFlagsEXT;DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT0DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT4DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT*DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT6DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT,DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXTJSTRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXTISTRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXTASTRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT?STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXTBSTRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXTDEPENDENCY_DEVICE_GROUP_BIT$fReadDependencyFlagBits$fShowDependencyFlagBits$fEqDependencyFlagBits$fOrdDependencyFlagBits$fStorableDependencyFlagBits$fZeroDependencyFlagBits$fBitsDependencyFlagBits,$sel:viewMasks:RenderPassMultiviewCreateInfo.$sel:viewOffsets:RenderPassMultiviewCreateInfo3$sel:correlationMasks:RenderPassMultiviewCreateInfo<$sel:maxMultiviewViewCount:PhysicalDeviceMultiviewProperties@$sel:maxMultiviewInstanceIndex:PhysicalDeviceMultiviewProperties.$sel:multiview:PhysicalDeviceMultiviewFeatures<$sel:multiviewGeometryShader:PhysicalDeviceMultiviewFeatures@$sel:multiviewTessellationShader:PhysicalDeviceMultiviewFeatures%$fZeroPhysicalDeviceMultiviewFeatures)$fStorablePhysicalDeviceMultiviewFeatures,$fFromCStructPhysicalDeviceMultiviewFeatures*$fToCStructPhysicalDeviceMultiviewFeatures'$fZeroPhysicalDeviceMultiviewProperties+$fStorablePhysicalDeviceMultiviewProperties.$fFromCStructPhysicalDeviceMultiviewProperties,$fToCStructPhysicalDeviceMultiviewProperties#$fZeroRenderPassMultiviewCreateInfo*$fFromCStructRenderPassMultiviewCreateInfo($fToCStructRenderPassMultiviewCreateInfo#$fEqPhysicalDeviceMultiviewFeatures%$fEqPhysicalDeviceMultiviewProperties#$fShowRenderPassMultiviewCreateInfo&$fGenericRenderPassMultiviewCreateInfo'$fShowPhysicalDeviceMultiviewProperties*$fGenericPhysicalDeviceMultiviewProperties%$fShowPhysicalDeviceMultiviewFeatures($fGenericPhysicalDeviceMultiviewFeaturesKHR_MULTIVIEW_EXTENSION_NAMEKHR_MULTIVIEW_SPEC_VERSION RenderPassMultiviewCreateInfoKHR$PhysicalDeviceMultiviewPropertiesKHR"PhysicalDeviceMultiviewFeaturesKHRDEPENDENCY_VIEW_LOCAL_BIT_KHR7STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR5STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR4STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHRCULL_MODE_FRONT_AND_BACKCULL_MODE_BACK_BITCULL_MODE_FRONT_BITCULL_MODE_NONE$fReadCullModeFlagBits$fShowCullModeFlagBits$fEqCullModeFlagBits$fOrdCullModeFlagBits$fStorableCullModeFlagBits$fZeroCullModeFlagBits$fBitsCullModeFlagBitsCOMPONENT_SWIZZLE_A$fReadComponentSwizzle$fShowComponentSwizzle$fEqComponentSwizzle$fOrdComponentSwizzle$fStorableComponentSwizzle$fZeroComponentSwizzleCOMPARE_OP_ALWAYSCOMPARE_OP_GREATER_OR_EQUALCOMPARE_OP_NOT_EQUALCOMPARE_OP_GREATERCOMPARE_OP_LESS_OR_EQUALCOMPARE_OP_EQUALCOMPARE_OP_LESSCOMPARE_OP_NEVER$fReadCompareOp$fShowCompareOp $fEqCompareOp$fOrdCompareOp$fStorableCompareOp$fZeroCompareOp(COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT$fReadCommandPoolResetFlagBits$fShowCommandPoolResetFlagBits$fEqCommandPoolResetFlagBits$fOrdCommandPoolResetFlagBits"$fStorableCommandPoolResetFlagBits$fZeroCommandPoolResetFlagBits$fBitsCommandPoolResetFlagBitsCommandPoolCreateFlagsCommandPoolCreateFlagBits!COMMAND_POOL_CREATE_PROTECTED_BIT!COMMAND_POOL_CREATE_TRANSIENT_BIT$fReadCommandPoolCreateFlagBits$fShowCommandPoolCreateFlagBits$fEqCommandPoolCreateFlagBits$fOrdCommandPoolCreateFlagBits#$fStorableCommandPoolCreateFlagBits$fZeroCommandPoolCreateFlagBits$fBitsCommandPoolCreateFlagBitsCommandBufferUsageFlagsCommandBufferUsageFlagBits $fReadCommandBufferUsageFlagBits $fShowCommandBufferUsageFlagBits$fEqCommandBufferUsageFlagBits$fOrdCommandBufferUsageFlagBits$$fStorableCommandBufferUsageFlagBits $fZeroCommandBufferUsageFlagBits $fBitsCommandBufferUsageFlagBits*COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT $fReadCommandBufferResetFlagBits $fShowCommandBufferResetFlagBits$fEqCommandBufferResetFlagBits$fOrdCommandBufferResetFlagBits$$fStorableCommandBufferResetFlagBits $fZeroCommandBufferResetFlagBits $fBitsCommandBufferResetFlagBitsCommandBufferLevelCOMMAND_BUFFER_LEVEL_PRIMARY$fReadCommandBufferLevel$fShowCommandBufferLevel$fEqCommandBufferLevel$fOrdCommandBufferLevel$fStorableCommandBufferLevel$fZeroCommandBufferLevelCOLOR_COMPONENT_A_BITCOLOR_COMPONENT_B_BITCOLOR_COMPONENT_G_BITCOLOR_COMPONENT_R_BIT$fReadColorComponentFlagBits$fShowColorComponentFlagBits$fEqColorComponentFlagBits$fOrdColorComponentFlagBits $fStorableColorComponentFlagBits$fZeroColorComponentFlagBits$fBitsColorComponentFlagBitsBufferViewCreateFlags$fReadBufferViewCreateFlags$fShowBufferViewCreateFlags$fEqBufferViewCreateFlags$fOrdBufferViewCreateFlags$fStorableBufferViewCreateFlags$fZeroBufferViewCreateFlags$fBitsBufferViewCreateFlagsBufferUsageFlags$fReadBufferUsageFlagBits$fShowBufferUsageFlagBits$fEqBufferUsageFlagBits$fOrdBufferUsageFlagBits$fStorableBufferUsageFlagBits$fZeroBufferUsageFlagBits$fBitsBufferUsageFlagBitsBufferCreateFlags/BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT$fReadBufferCreateFlagBits$fShowBufferCreateFlagBits$fEqBufferCreateFlagBits$fOrdBufferCreateFlagBits$fStorableBufferCreateFlagBits$fZeroBufferCreateFlagBits$fBitsBufferCreateFlagBits BorderColorBORDER_COLOR_INT_OPAQUE_WHITEBORDER_COLOR_FLOAT_OPAQUE_WHITEBORDER_COLOR_INT_OPAQUE_BLACKBORDER_COLOR_FLOAT_OPAQUE_BLACK"BORDER_COLOR_INT_TRANSPARENT_BLACK$BORDER_COLOR_FLOAT_TRANSPARENT_BLACK$fReadBorderColor$fShowBorderColor$fEqBorderColor$fOrdBorderColor$fStorableBorderColor$fZeroBorderColorBlendOpBLEND_OP_ZERO_EXTBLEND_OP_SRC_EXTBLEND_OP_DST_EXTBLEND_OP_SRC_OVER_EXTBLEND_OP_DST_OVER_EXTBLEND_OP_SRC_IN_EXTBLEND_OP_DST_IN_EXTBLEND_OP_SRC_OUT_EXTBLEND_OP_DST_OUT_EXTBLEND_OP_SRC_ATOP_EXTBLEND_OP_DST_ATOP_EXTBLEND_OP_XOR_EXTBLEND_OP_MULTIPLY_EXTBLEND_OP_SCREEN_EXTBLEND_OP_OVERLAY_EXTBLEND_OP_DARKEN_EXTBLEND_OP_LIGHTEN_EXTBLEND_OP_COLORDODGE_EXTBLEND_OP_COLORBURN_EXTBLEND_OP_HARDLIGHT_EXTBLEND_OP_SOFTLIGHT_EXTBLEND_OP_DIFFERENCE_EXTBLEND_OP_EXCLUSION_EXTBLEND_OP_INVERT_EXTBLEND_OP_INVERT_RGB_EXTBLEND_OP_LINEARDODGE_EXTBLEND_OP_LINEARBURN_EXTBLEND_OP_VIVIDLIGHT_EXTBLEND_OP_LINEARLIGHT_EXTBLEND_OP_PINLIGHT_EXTBLEND_OP_HARDMIX_EXTBLEND_OP_HSL_HUE_EXTBLEND_OP_HSL_SATURATION_EXTBLEND_OP_HSL_COLOR_EXTBLEND_OP_HSL_LUMINOSITY_EXTBLEND_OP_PLUS_EXTBLEND_OP_PLUS_CLAMPED_EXTBLEND_OP_PLUS_CLAMPED_ALPHA_EXTBLEND_OP_PLUS_DARKER_EXTBLEND_OP_MINUS_EXTBLEND_OP_MINUS_CLAMPED_EXTBLEND_OP_CONTRAST_EXTBLEND_OP_INVERT_OVG_EXTBLEND_OP_RED_EXTBLEND_OP_GREEN_EXTBLEND_OP_BLUE_EXT BLEND_OP_MAX BLEND_OP_MINBLEND_OP_REVERSE_SUBTRACTBLEND_OP_SUBTRACT BLEND_OP_ADD $fReadBlendOp $fShowBlendOp $fEqBlendOp $fOrdBlendOp$fStorableBlendOp $fZeroBlendOp BlendFactorBLEND_FACTOR_SRC_ALPHA_SATURATE%BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHABLEND_FACTOR_CONSTANT_ALPHA%BLEND_FACTOR_ONE_MINUS_CONSTANT_COLORBLEND_FACTOR_CONSTANT_COLOR BLEND_FACTOR_ONE_MINUS_DST_ALPHABLEND_FACTOR_DST_ALPHA BLEND_FACTOR_ONE_MINUS_SRC_ALPHABLEND_FACTOR_SRC_ALPHA BLEND_FACTOR_ONE_MINUS_DST_COLORBLEND_FACTOR_DST_COLOR BLEND_FACTOR_ONE_MINUS_SRC_COLORBLEND_FACTOR_SRC_COLORBLEND_FACTOR_ONEBLEND_FACTOR_ZERO$fReadBlendFactor$fShowBlendFactor$fEqBlendFactor$fOrdBlendFactor$fStorableBlendFactor$fZeroBlendFactorAttachmentStoreOpATTACHMENT_STORE_OP_NONE_QCOMATTACHMENT_STORE_OP_STORE$fReadAttachmentStoreOp$fShowAttachmentStoreOp$fEqAttachmentStoreOp$fOrdAttachmentStoreOp$fStorableAttachmentStoreOp$fZeroAttachmentStoreOpAttachmentLoadOp$fReadAttachmentLoadOp$fShowAttachmentLoadOp$fEqAttachmentLoadOp$fOrdAttachmentLoadOp$fStorableAttachmentLoadOp$fZeroAttachmentLoadOpAttachmentDescriptionFlags#$fReadAttachmentDescriptionFlagBits#$fShowAttachmentDescriptionFlagBits!$fEqAttachmentDescriptionFlagBits"$fOrdAttachmentDescriptionFlagBits'$fStorableAttachmentDescriptionFlagBits#$fZeroAttachmentDescriptionFlagBits#$fBitsAttachmentDescriptionFlagBits'ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT.ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT/ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT)ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT*ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR+ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR%ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV(ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT%ACCESS_COMMAND_PREPROCESS_READ_BIT_NV&ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NVACCESS_MEMORY_WRITE_BITACCESS_MEMORY_READ_BITACCESS_TRANSFER_READ_BITACCESS_SHADER_WRITE_BITACCESS_SHADER_READ_BIT ACCESS_INPUT_ATTACHMENT_READ_BITACCESS_UNIFORM_READ_BIT ACCESS_VERTEX_ATTRIBUTE_READ_BITACCESS_INDEX_READ_BIT ACCESS_INDIRECT_COMMAND_READ_BIT$fReadAccessFlagBits$fShowAccessFlagBits$fEqAccessFlagBits$fOrdAccessFlagBits$fStorableAccessFlagBits$fZeroAccessFlagBits$fBitsAccessFlagBits!$sel:userData:AllocationCallbacks&$sel:pfnAllocation:AllocationCallbacks($sel:pfnReallocation:AllocationCallbacks $sel:pfnFree:AllocationCallbacks.$sel:pfnInternalAllocation:AllocationCallbacks($sel:pfnInternalFree:AllocationCallbacks$fZeroAllocationCallbacks$fStorableAllocationCallbacks $fFromCStructAllocationCallbacks$fToCStructAllocationCallbacks$fShowAllocationCallbacks$fGenericAllocationCallbacks HasObjectTypeobjectTypeAndHandleIsHandleSHADER_UNUSED_KHRMAX_DRIVER_INFO_SIZEMAX_DRIVER_NAME_SIZEMAX_DEVICE_GROUP_SIZEQUEUE_FAMILY_FOREIGN_EXTQUEUE_FAMILY_EXTERNALMAX_MEMORY_HEAPSMAX_MEMORY_TYPESMAX_DESCRIPTION_SIZEMAX_EXTENSION_NAME_SIZE LUID_SIZEMAX_PHYSICAL_DEVICE_NAME_SIZEMAX_DRIVER_INFO_SIZE_KHRMAX_DRIVER_NAME_SIZE_KHRMAX_DEVICE_GROUP_SIZE_KHRQUEUE_FAMILY_EXTERNAL_KHR LUID_SIZE_KHRLOD_CLAMP_NONE'EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME%EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION EXT_MEMORY_BUDGET_EXTENSION_NAMEEXT_MEMORY_BUDGET_SPEC_VERSION7$sel:heapBudget:PhysicalDeviceMemoryBudgetPropertiesEXT6$sel:heapUsage:PhysicalDeviceMemoryBudgetPropertiesEXT-$fZeroPhysicalDeviceMemoryBudgetPropertiesEXT1$fStorablePhysicalDeviceMemoryBudgetPropertiesEXT4$fFromCStructPhysicalDeviceMemoryBudgetPropertiesEXT2$fToCStructPhysicalDeviceMemoryBudgetPropertiesEXT-$fShowPhysicalDeviceMemoryBudgetPropertiesEXT0$fGenericPhysicalDeviceMemoryBudgetPropertiesEXT,$sel:driverID:PhysicalDeviceDriverProperties.$sel:driverName:PhysicalDeviceDriverProperties.$sel:driverInfo:PhysicalDeviceDriverProperties6$sel:conformanceVersion:PhysicalDeviceDriverProperties$sel:major:ConformanceVersion$sel:minor:ConformanceVersion $sel:subminor:ConformanceVersion$sel:patch:ConformanceVersion$fZeroConformanceVersion$fStorableConformanceVersion$fFromCStructConformanceVersion$fToCStructConformanceVersion$$fZeroPhysicalDeviceDriverProperties+$fFromCStructPhysicalDeviceDriverProperties)$fToCStructPhysicalDeviceDriverProperties$fEqConformanceVersion$$fShowPhysicalDeviceDriverProperties'$fGenericPhysicalDeviceDriverProperties$fShowConformanceVersion$fGenericConformanceVersion$KHR_DRIVER_PROPERTIES_EXTENSION_NAME"KHR_DRIVER_PROPERTIES_SPEC_VERSION!PhysicalDeviceDriverPropertiesKHRConformanceVersionKHR DriverIdKHR"DRIVER_ID_BROADCOM_PROPRIETARY_KHRDRIVER_ID_GGP_PROPRIETARY_KHR DRIVER_ID_GOOGLE_SWIFTSHADER_KHRDRIVER_ID_ARM_PROPRIETARY_KHR"DRIVER_ID_QUALCOMM_PROPRIETARY_KHR%DRIVER_ID_IMAGINATION_PROPRIETARY_KHR$DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR'DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR DRIVER_ID_NVIDIA_PROPRIETARY_KHRDRIVER_ID_MESA_RADV_KHRDRIVER_ID_AMD_OPEN_SOURCE_KHRDRIVER_ID_AMD_PROPRIETARY_KHR4STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR)$sel:handleTypes:ExportMemoryAllocateInfo/$sel:handleTypes:ExternalMemoryBufferCreateInfo.$sel:handleTypes:ExternalMemoryImageCreateInfo#$fZeroExternalMemoryImageCreateInfo'$fStorableExternalMemoryImageCreateInfo*$fFromCStructExternalMemoryImageCreateInfo($fToCStructExternalMemoryImageCreateInfo$$fZeroExternalMemoryBufferCreateInfo($fStorableExternalMemoryBufferCreateInfo+$fFromCStructExternalMemoryBufferCreateInfo)$fToCStructExternalMemoryBufferCreateInfo$fZeroExportMemoryAllocateInfo"$fStorableExportMemoryAllocateInfo%$fFromCStructExportMemoryAllocateInfo#$fToCStructExportMemoryAllocateInfo!$fEqExternalMemoryImageCreateInfo"$fEqExternalMemoryBufferCreateInfo$fEqExportMemoryAllocateInfo$fShowExportMemoryAllocateInfo!$fGenericExportMemoryAllocateInfo$$fShowExternalMemoryBufferCreateInfo'$fGenericExternalMemoryBufferCreateInfo#$fShowExternalMemoryImageCreateInfo&$fGenericExternalMemoryImageCreateInfo"KHR_EXTERNAL_MEMORY_EXTENSION_NAME KHR_EXTERNAL_MEMORY_SPEC_VERSIONExportMemoryAllocateInfoKHR!ExternalMemoryBufferCreateInfoKHR ExternalMemoryImageCreateInfoKHR.STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR4STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR5STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR peekChain withChain withZeroChain ExtensibleextensibleTypegetNextsetNextextends SomeStruct$sel:sType:BaseInStructure$sel:next:BaseInStructure$sel:sType:BaseOutStructure$sel:next:BaseOutStructure:&::&forgetExtensionsextendSomeStructwithSomeStructwithSomeCStructpokeSomeCStructpeekSomeCStruct$fZeroBaseOutStructure$fStorableBaseOutStructure$fFromCStructBaseOutStructure$fToCStructBaseOutStructure$fZeroBaseInStructure$fStorableBaseInStructure$fFromCStructBaseInStructure$fToCStructBaseInStructure $fPokeChain: $fPokeChain[]$fZeroSomeStruct $fPeekChain: $fPeekChain[]$fEqBaseOutStructure$fEqBaseInStructure$fShowSomeStruct$fShowBaseInStructure$fGenericBaseInStructure$fShowBaseOutStructure$fGenericBaseOutStructure DeviceCmds $sel:deviceCmdsHandle:DeviceCmds$$sel:pVkGetDeviceProcAddr:DeviceCmds $sel:pVkDestroyDevice:DeviceCmds!$sel:pVkGetDeviceQueue:DeviceCmds$sel:pVkQueueSubmit:DeviceCmds $sel:pVkQueueWaitIdle:DeviceCmds!$sel:pVkDeviceWaitIdle:DeviceCmds!$sel:pVkAllocateMemory:DeviceCmds$sel:pVkFreeMemory:DeviceCmds$sel:pVkMapMemory:DeviceCmds$sel:pVkUnmapMemory:DeviceCmds*$sel:pVkFlushMappedMemoryRanges:DeviceCmds/$sel:pVkInvalidateMappedMemoryRanges:DeviceCmds,$sel:pVkGetDeviceMemoryCommitment:DeviceCmds.$sel:pVkGetBufferMemoryRequirements:DeviceCmds#$sel:pVkBindBufferMemory:DeviceCmds-$sel:pVkGetImageMemoryRequirements:DeviceCmds"$sel:pVkBindImageMemory:DeviceCmds3$sel:pVkGetImageSparseMemoryRequirements:DeviceCmds"$sel:pVkQueueBindSparse:DeviceCmds$sel:pVkCreateFence:DeviceCmds$sel:pVkDestroyFence:DeviceCmds$sel:pVkResetFences:DeviceCmds!$sel:pVkGetFenceStatus:DeviceCmds $sel:pVkWaitForFences:DeviceCmds"$sel:pVkCreateSemaphore:DeviceCmds#$sel:pVkDestroySemaphore:DeviceCmds$sel:pVkCreateEvent:DeviceCmds$sel:pVkDestroyEvent:DeviceCmds!$sel:pVkGetEventStatus:DeviceCmds$sel:pVkSetEvent:DeviceCmds$sel:pVkResetEvent:DeviceCmds"$sel:pVkCreateQueryPool:DeviceCmds#$sel:pVkDestroyQueryPool:DeviceCmds&$sel:pVkGetQueryPoolResults:DeviceCmds!$sel:pVkResetQueryPool:DeviceCmds$sel:pVkCreateBuffer:DeviceCmds $sel:pVkDestroyBuffer:DeviceCmds#$sel:pVkCreateBufferView:DeviceCmds$$sel:pVkDestroyBufferView:DeviceCmds$sel:pVkCreateImage:DeviceCmds$sel:pVkDestroyImage:DeviceCmds,$sel:pVkGetImageSubresourceLayout:DeviceCmds"$sel:pVkCreateImageView:DeviceCmds#$sel:pVkDestroyImageView:DeviceCmds%$sel:pVkCreateShaderModule:DeviceCmds&$sel:pVkDestroyShaderModule:DeviceCmds&$sel:pVkCreatePipelineCache:DeviceCmds'$sel:pVkDestroyPipelineCache:DeviceCmds'$sel:pVkGetPipelineCacheData:DeviceCmds&$sel:pVkMergePipelineCaches:DeviceCmds*$sel:pVkCreateGraphicsPipelines:DeviceCmds)$sel:pVkCreateComputePipelines:DeviceCmds"$sel:pVkDestroyPipeline:DeviceCmds'$sel:pVkCreatePipelineLayout:DeviceCmds($sel:pVkDestroyPipelineLayout:DeviceCmds $sel:pVkCreateSampler:DeviceCmds!$sel:pVkDestroySampler:DeviceCmds,$sel:pVkCreateDescriptorSetLayout:DeviceCmds-$sel:pVkDestroyDescriptorSetLayout:DeviceCmds'$sel:pVkCreateDescriptorPool:DeviceCmds($sel:pVkDestroyDescriptorPool:DeviceCmds&$sel:pVkResetDescriptorPool:DeviceCmds)$sel:pVkAllocateDescriptorSets:DeviceCmds%$sel:pVkFreeDescriptorSets:DeviceCmds'$sel:pVkUpdateDescriptorSets:DeviceCmds$$sel:pVkCreateFramebuffer:DeviceCmds%$sel:pVkDestroyFramebuffer:DeviceCmds#$sel:pVkCreateRenderPass:DeviceCmds$$sel:pVkDestroyRenderPass:DeviceCmds+$sel:pVkGetRenderAreaGranularity:DeviceCmds$$sel:pVkCreateCommandPool:DeviceCmds%$sel:pVkDestroyCommandPool:DeviceCmds#$sel:pVkResetCommandPool:DeviceCmds)$sel:pVkAllocateCommandBuffers:DeviceCmds%$sel:pVkFreeCommandBuffers:DeviceCmds%$sel:pVkBeginCommandBuffer:DeviceCmds#$sel:pVkEndCommandBuffer:DeviceCmds%$sel:pVkResetCommandBuffer:DeviceCmds"$sel:pVkCmdBindPipeline:DeviceCmds!$sel:pVkCmdSetViewport:DeviceCmds $sel:pVkCmdSetScissor:DeviceCmds"$sel:pVkCmdSetLineWidth:DeviceCmds"$sel:pVkCmdSetDepthBias:DeviceCmds'$sel:pVkCmdSetBlendConstants:DeviceCmds$$sel:pVkCmdSetDepthBounds:DeviceCmds+$sel:pVkCmdSetStencilCompareMask:DeviceCmds)$sel:pVkCmdSetStencilWriteMask:DeviceCmds)$sel:pVkCmdSetStencilReference:DeviceCmds($sel:pVkCmdBindDescriptorSets:DeviceCmds%$sel:pVkCmdBindIndexBuffer:DeviceCmds'$sel:pVkCmdBindVertexBuffers:DeviceCmds$sel:pVkCmdDraw:DeviceCmds!$sel:pVkCmdDrawIndexed:DeviceCmds"$sel:pVkCmdDrawIndirect:DeviceCmds)$sel:pVkCmdDrawIndexedIndirect:DeviceCmds$sel:pVkCmdDispatch:DeviceCmds&$sel:pVkCmdDispatchIndirect:DeviceCmds $sel:pVkCmdCopyBuffer:DeviceCmds$sel:pVkCmdCopyImage:DeviceCmds$sel:pVkCmdBlitImage:DeviceCmds'$sel:pVkCmdCopyBufferToImage:DeviceCmds'$sel:pVkCmdCopyImageToBuffer:DeviceCmds"$sel:pVkCmdUpdateBuffer:DeviceCmds $sel:pVkCmdFillBuffer:DeviceCmds%$sel:pVkCmdClearColorImage:DeviceCmds,$sel:pVkCmdClearDepthStencilImage:DeviceCmds&$sel:pVkCmdClearAttachments:DeviceCmds"$sel:pVkCmdResolveImage:DeviceCmds$sel:pVkCmdSetEvent:DeviceCmds $sel:pVkCmdResetEvent:DeviceCmds $sel:pVkCmdWaitEvents:DeviceCmds%$sel:pVkCmdPipelineBarrier:DeviceCmds $sel:pVkCmdBeginQuery:DeviceCmds$sel:pVkCmdEndQuery:DeviceCmds2$sel:pVkCmdBeginConditionalRenderingEXT:DeviceCmds0$sel:pVkCmdEndConditionalRenderingEXT:DeviceCmds$$sel:pVkCmdResetQueryPool:DeviceCmds$$sel:pVkCmdWriteTimestamp:DeviceCmds*$sel:pVkCmdCopyQueryPoolResults:DeviceCmds#$sel:pVkCmdPushConstants:DeviceCmds%$sel:pVkCmdBeginRenderPass:DeviceCmds!$sel:pVkCmdNextSubpass:DeviceCmds#$sel:pVkCmdEndRenderPass:DeviceCmds%$sel:pVkCmdExecuteCommands:DeviceCmds,$sel:pVkCreateSharedSwapchainsKHR:DeviceCmds%$sel:pVkCreateSwapchainKHR:DeviceCmds&$sel:pVkDestroySwapchainKHR:DeviceCmds($sel:pVkGetSwapchainImagesKHR:DeviceCmds&$sel:pVkAcquireNextImageKHR:DeviceCmds"$sel:pVkQueuePresentKHR:DeviceCmds.$sel:pVkDebugMarkerSetObjectNameEXT:DeviceCmds-$sel:pVkDebugMarkerSetObjectTagEXT:DeviceCmds)$sel:pVkCmdDebugMarkerBeginEXT:DeviceCmds'$sel:pVkCmdDebugMarkerEndEXT:DeviceCmds*$sel:pVkCmdDebugMarkerInsertEXT:DeviceCmds)$sel:pVkGetMemoryWin32HandleNV:DeviceCmds0$sel:pVkCmdExecuteGeneratedCommandsNV:DeviceCmds3$sel:pVkCmdPreprocessGeneratedCommandsNV:DeviceCmds/$sel:pVkCmdBindPipelineShaderGroupNV:DeviceCmds;$sel:pVkGetGeneratedCommandsMemoryRequirementsNV:DeviceCmds1$sel:pVkCreateIndirectCommandsLayoutNV:DeviceCmds2$sel:pVkDestroyIndirectCommandsLayoutNV:DeviceCmds*$sel:pVkCmdPushDescriptorSetKHR:DeviceCmds"$sel:pVkTrimCommandPool:DeviceCmds*$sel:pVkGetMemoryWin32HandleKHR:DeviceCmds4$sel:pVkGetMemoryWin32HandlePropertiesKHR:DeviceCmds!$sel:pVkGetMemoryFdKHR:DeviceCmds+$sel:pVkGetMemoryFdPropertiesKHR:DeviceCmds-$sel:pVkGetSemaphoreWin32HandleKHR:DeviceCmds0$sel:pVkImportSemaphoreWin32HandleKHR:DeviceCmds$$sel:pVkGetSemaphoreFdKHR:DeviceCmds'$sel:pVkImportSemaphoreFdKHR:DeviceCmds)$sel:pVkGetFenceWin32HandleKHR:DeviceCmds,$sel:pVkImportFenceWin32HandleKHR:DeviceCmds $sel:pVkGetFenceFdKHR:DeviceCmds#$sel:pVkImportFenceFdKHR:DeviceCmds)$sel:pVkDisplayPowerControlEXT:DeviceCmds)$sel:pVkRegisterDeviceEventEXT:DeviceCmds*$sel:pVkRegisterDisplayEventEXT:DeviceCmds)$sel:pVkGetSwapchainCounterEXT:DeviceCmds3$sel:pVkGetDeviceGroupPeerMemoryFeatures:DeviceCmds$$sel:pVkBindBufferMemory2:DeviceCmds#$sel:pVkBindImageMemory2:DeviceCmds#$sel:pVkCmdSetDeviceMask:DeviceCmds7$sel:pVkGetDeviceGroupPresentCapabilitiesKHR:DeviceCmds7$sel:pVkGetDeviceGroupSurfacePresentModesKHR:DeviceCmds'$sel:pVkAcquireNextImage2KHR:DeviceCmds"$sel:pVkCmdDispatchBase:DeviceCmds1$sel:pVkCreateDescriptorUpdateTemplate:DeviceCmds2$sel:pVkDestroyDescriptorUpdateTemplate:DeviceCmds2$sel:pVkUpdateDescriptorSetWithTemplate:DeviceCmds6$sel:pVkCmdPushDescriptorSetWithTemplateKHR:DeviceCmds$$sel:pVkSetHdrMetadataEXT:DeviceCmds($sel:pVkGetSwapchainStatusKHR:DeviceCmds0$sel:pVkGetRefreshCycleDurationGOOGLE:DeviceCmds2$sel:pVkGetPastPresentationTimingGOOGLE:DeviceCmds+$sel:pVkCmdSetViewportWScalingNV:DeviceCmds,$sel:pVkCmdSetDiscardRectangleEXT:DeviceCmds+$sel:pVkCmdSetSampleLocationsEXT:DeviceCmds/$sel:pVkGetBufferMemoryRequirements2:DeviceCmds.$sel:pVkGetImageMemoryRequirements2:DeviceCmds4$sel:pVkGetImageSparseMemoryRequirements2:DeviceCmds/$sel:pVkCreateSamplerYcbcrConversion:DeviceCmds0$sel:pVkDestroySamplerYcbcrConversion:DeviceCmds"$sel:pVkGetDeviceQueue2:DeviceCmds+$sel:pVkCreateValidationCacheEXT:DeviceCmds,$sel:pVkDestroyValidationCacheEXT:DeviceCmds,$sel:pVkGetValidationCacheDataEXT:DeviceCmds+$sel:pVkMergeValidationCachesEXT:DeviceCmds0$sel:pVkGetDescriptorSetLayoutSupport:DeviceCmds#$sel:pVkGetShaderInfoAMD:DeviceCmds%$sel:pVkSetLocalDimmingAMD:DeviceCmds-$sel:pVkGetCalibratedTimestampsEXT:DeviceCmds-$sel:pVkSetDebugUtilsObjectNameEXT:DeviceCmds,$sel:pVkSetDebugUtilsObjectTagEXT:DeviceCmds/$sel:pVkQueueBeginDebugUtilsLabelEXT:DeviceCmds-$sel:pVkQueueEndDebugUtilsLabelEXT:DeviceCmds0$sel:pVkQueueInsertDebugUtilsLabelEXT:DeviceCmds-$sel:pVkCmdBeginDebugUtilsLabelEXT:DeviceCmds+$sel:pVkCmdEndDebugUtilsLabelEXT:DeviceCmds.$sel:pVkCmdInsertDebugUtilsLabelEXT:DeviceCmds4$sel:pVkGetMemoryHostPointerPropertiesEXT:DeviceCmds*$sel:pVkCmdWriteBufferMarkerAMD:DeviceCmds$$sel:pVkCreateRenderPass2:DeviceCmds&$sel:pVkCmdBeginRenderPass2:DeviceCmds"$sel:pVkCmdNextSubpass2:DeviceCmds$$sel:pVkCmdEndRenderPass2:DeviceCmds+$sel:pVkGetSemaphoreCounterValue:DeviceCmds!$sel:pVkWaitSemaphores:DeviceCmds"$sel:pVkSignalSemaphore:DeviceCmds<$sel:pVkGetAndroidHardwareBufferPropertiesANDROID:DeviceCmds8$sel:pVkGetMemoryAndroidHardwareBufferANDROID:DeviceCmds'$sel:pVkCmdDrawIndirectCount:DeviceCmds.$sel:pVkCmdDrawIndexedIndirectCount:DeviceCmds%$sel:pVkCmdSetCheckpointNV:DeviceCmds+$sel:pVkGetQueueCheckpointDataNV:DeviceCmds5$sel:pVkCmdBindTransformFeedbackBuffersEXT:DeviceCmds/$sel:pVkCmdBeginTransformFeedbackEXT:DeviceCmds-$sel:pVkCmdEndTransformFeedbackEXT:DeviceCmds*$sel:pVkCmdBeginQueryIndexedEXT:DeviceCmds($sel:pVkCmdEndQueryIndexedEXT:DeviceCmds.$sel:pVkCmdDrawIndirectByteCountEXT:DeviceCmds+$sel:pVkCmdSetExclusiveScissorNV:DeviceCmds,$sel:pVkCmdBindShadingRateImageNV:DeviceCmds5$sel:pVkCmdSetViewportShadingRatePaletteNV:DeviceCmds,$sel:pVkCmdSetCoarseSampleOrderNV:DeviceCmds%$sel:pVkCmdDrawMeshTasksNV:DeviceCmds-$sel:pVkCmdDrawMeshTasksIndirectNV:DeviceCmds2$sel:pVkCmdDrawMeshTasksIndirectCountNV:DeviceCmds$$sel:pVkCompileDeferredNV:DeviceCmds0$sel:pVkCreateAccelerationStructureNV:DeviceCmds2$sel:pVkDestroyAccelerationStructureKHR:DeviceCmds@$sel:pVkGetAccelerationStructureMemoryRequirementsKHR:DeviceCmds?$sel:pVkGetAccelerationStructureMemoryRequirementsNV:DeviceCmds5$sel:pVkBindAccelerationStructureMemoryKHR:DeviceCmds1$sel:pVkCmdCopyAccelerationStructureNV:DeviceCmds2$sel:pVkCmdCopyAccelerationStructureKHR:DeviceCmds/$sel:pVkCopyAccelerationStructureKHR:DeviceCmds:$sel:pVkCmdCopyAccelerationStructureToMemoryKHR:DeviceCmds7$sel:pVkCopyAccelerationStructureToMemoryKHR:DeviceCmds:$sel:pVkCmdCopyMemoryToAccelerationStructureKHR:DeviceCmds7$sel:pVkCopyMemoryToAccelerationStructureKHR:DeviceCmds>$sel:pVkCmdWriteAccelerationStructuresPropertiesKHR:DeviceCmds2$sel:pVkCmdBuildAccelerationStructureNV:DeviceCmds;$sel:pVkWriteAccelerationStructuresPropertiesKHR:DeviceCmds"$sel:pVkCmdTraceRaysKHR:DeviceCmds!$sel:pVkCmdTraceRaysNV:DeviceCmds5$sel:pVkGetRayTracingShaderGroupHandlesKHR:DeviceCmdsB$sel:pVkGetRayTracingCaptureReplayShaderGroupHandlesKHR:DeviceCmds3$sel:pVkGetAccelerationStructureHandleNV:DeviceCmds.$sel:pVkCreateRayTracingPipelinesNV:DeviceCmds/$sel:pVkCreateRayTracingPipelinesKHR:DeviceCmds*$sel:pVkCmdTraceRaysIndirectKHR:DeviceCmdsA$sel:pVkGetDeviceAccelerationStructureCompatibilityKHR:DeviceCmds($sel:pVkGetImageViewHandleNVX:DeviceCmds)$sel:pVkGetImageViewAddressNVX:DeviceCmds8$sel:pVkGetDeviceGroupSurfacePresentModes2EXT:DeviceCmds4$sel:pVkAcquireFullScreenExclusiveModeEXT:DeviceCmds4$sel:pVkReleaseFullScreenExclusiveModeEXT:DeviceCmds*$sel:pVkAcquireProfilingLockKHR:DeviceCmds*$sel:pVkReleaseProfilingLockKHR:DeviceCmds9$sel:pVkGetImageDrmFormatModifierPropertiesEXT:DeviceCmds0$sel:pVkGetBufferOpaqueCaptureAddress:DeviceCmds)$sel:pVkGetBufferDeviceAddress:DeviceCmds0$sel:pVkInitializePerformanceApiINTEL:DeviceCmds2$sel:pVkUninitializePerformanceApiINTEL:DeviceCmds/$sel:pVkCmdSetPerformanceMarkerINTEL:DeviceCmds5$sel:pVkCmdSetPerformanceStreamMarkerINTEL:DeviceCmds1$sel:pVkCmdSetPerformanceOverrideINTEL:DeviceCmds7$sel:pVkAcquirePerformanceConfigurationINTEL:DeviceCmds7$sel:pVkReleasePerformanceConfigurationINTEL:DeviceCmds8$sel:pVkQueueSetPerformanceConfigurationINTEL:DeviceCmds/$sel:pVkGetPerformanceParameterINTEL:DeviceCmds6$sel:pVkGetDeviceMemoryOpaqueCaptureAddress:DeviceCmds5$sel:pVkGetPipelineExecutablePropertiesKHR:DeviceCmds5$sel:pVkGetPipelineExecutableStatisticsKHR:DeviceCmdsB$sel:pVkGetPipelineExecutableInternalRepresentationsKHR:DeviceCmds'$sel:pVkCmdSetLineStippleEXT:DeviceCmds1$sel:pVkCreateAccelerationStructureKHR:DeviceCmds3$sel:pVkCmdBuildAccelerationStructureKHR:DeviceCmds;$sel:pVkCmdBuildAccelerationStructureIndirectKHR:DeviceCmds0$sel:pVkBuildAccelerationStructureKHR:DeviceCmds;$sel:pVkGetAccelerationStructureDeviceAddressKHR:DeviceCmds-$sel:pVkCreateDeferredOperationKHR:DeviceCmds.$sel:pVkDestroyDeferredOperationKHR:DeviceCmds8$sel:pVkGetDeferredOperationMaxConcurrencyKHR:DeviceCmds0$sel:pVkGetDeferredOperationResultKHR:DeviceCmds+$sel:pVkDeferredOperationJoinKHR:DeviceCmds$$sel:pVkCmdSetCullModeEXT:DeviceCmds%$sel:pVkCmdSetFrontFaceEXT:DeviceCmds-$sel:pVkCmdSetPrimitiveTopologyEXT:DeviceCmds-$sel:pVkCmdSetViewportWithCountEXT:DeviceCmds,$sel:pVkCmdSetScissorWithCountEXT:DeviceCmds+$sel:pVkCmdBindVertexBuffers2EXT:DeviceCmds+$sel:pVkCmdSetDepthTestEnableEXT:DeviceCmds,$sel:pVkCmdSetDepthWriteEnableEXT:DeviceCmds*$sel:pVkCmdSetDepthCompareOpEXT:DeviceCmds1$sel:pVkCmdSetDepthBoundsTestEnableEXT:DeviceCmds-$sel:pVkCmdSetStencilTestEnableEXT:DeviceCmds%$sel:pVkCmdSetStencilOpEXT:DeviceCmds+$sel:pVkCreatePrivateDataSlotEXT:DeviceCmds,$sel:pVkDestroyPrivateDataSlotEXT:DeviceCmds$$sel:pVkSetPrivateDataEXT:DeviceCmds$$sel:pVkGetPrivateDataEXT:DeviceCmds InstanceCmds$$sel:instanceCmdsHandle:InstanceCmds$$sel:pVkDestroyInstance:InstanceCmds-$sel:pVkEnumeratePhysicalDevices:InstanceCmds($sel:pVkGetInstanceProcAddr:InstanceCmds0$sel:pVkGetPhysicalDeviceProperties:InstanceCmds;$sel:pVkGetPhysicalDeviceQueueFamilyProperties:InstanceCmds6$sel:pVkGetPhysicalDeviceMemoryProperties:InstanceCmds.$sel:pVkGetPhysicalDeviceFeatures:InstanceCmds6$sel:pVkGetPhysicalDeviceFormatProperties:InstanceCmds;$sel:pVkGetPhysicalDeviceImageFormatProperties:InstanceCmds!$sel:pVkCreateDevice:InstanceCmds3$sel:pVkEnumerateDeviceLayerProperties:InstanceCmds7$sel:pVkEnumerateDeviceExtensionProperties:InstanceCmdsA$sel:pVkGetPhysicalDeviceSparseImageFormatProperties:InstanceCmds,$sel:pVkCreateAndroidSurfaceKHR:InstanceCmds:$sel:pVkGetPhysicalDeviceDisplayPropertiesKHR:InstanceCmds?$sel:pVkGetPhysicalDeviceDisplayPlanePropertiesKHR:InstanceCmds8$sel:pVkGetDisplayPlaneSupportedDisplaysKHR:InstanceCmds0$sel:pVkGetDisplayModePropertiesKHR:InstanceCmds)$sel:pVkCreateDisplayModeKHR:InstanceCmds3$sel:pVkGetDisplayPlaneCapabilitiesKHR:InstanceCmds1$sel:pVkCreateDisplayPlaneSurfaceKHR:InstanceCmds&$sel:pVkDestroySurfaceKHR:InstanceCmds7$sel:pVkGetPhysicalDeviceSurfaceSupportKHR:InstanceCmds<$sel:pVkGetPhysicalDeviceSurfaceCapabilitiesKHR:InstanceCmds7$sel:pVkGetPhysicalDeviceSurfaceFormatsKHR:InstanceCmds<$sel:pVkGetPhysicalDeviceSurfacePresentModesKHR:InstanceCmds&$sel:pVkCreateViSurfaceNN:InstanceCmds,$sel:pVkCreateWaylandSurfaceKHR:InstanceCmdsC$sel:pVkGetPhysicalDeviceWaylandPresentationSupportKHR:InstanceCmds*$sel:pVkCreateWin32SurfaceKHR:InstanceCmdsA$sel:pVkGetPhysicalDeviceWin32PresentationSupportKHR:InstanceCmds)$sel:pVkCreateXlibSurfaceKHR:InstanceCmds@$sel:pVkGetPhysicalDeviceXlibPresentationSupportKHR:InstanceCmds($sel:pVkCreateXcbSurfaceKHR:InstanceCmds?$sel:pVkGetPhysicalDeviceXcbPresentationSupportKHR:InstanceCmds-$sel:pVkCreateDirectFBSurfaceEXT:InstanceCmdsD$sel:pVkGetPhysicalDeviceDirectFBPresentationSupportEXT:InstanceCmds2$sel:pVkCreateImagePipeSurfaceFUCHSIA:InstanceCmds5$sel:pVkCreateStreamDescriptorSurfaceGGP:InstanceCmds1$sel:pVkCreateDebugReportCallbackEXT:InstanceCmds2$sel:pVkDestroyDebugReportCallbackEXT:InstanceCmds*$sel:pVkDebugReportMessageEXT:InstanceCmdsE$sel:pVkGetPhysicalDeviceExternalImageFormatPropertiesNV:InstanceCmds/$sel:pVkGetPhysicalDeviceFeatures2:InstanceCmds1$sel:pVkGetPhysicalDeviceProperties2:InstanceCmds7$sel:pVkGetPhysicalDeviceFormatProperties2:InstanceCmds<$sel:pVkGetPhysicalDeviceImageFormatProperties2:InstanceCmds<$sel:pVkGetPhysicalDeviceQueueFamilyProperties2:InstanceCmds7$sel:pVkGetPhysicalDeviceMemoryProperties2:InstanceCmdsB$sel:pVkGetPhysicalDeviceSparseImageFormatProperties2:InstanceCmds>$sel:pVkGetPhysicalDeviceExternalBufferProperties:InstanceCmdsA$sel:pVkGetPhysicalDeviceExternalSemaphoreProperties:InstanceCmds=$sel:pVkGetPhysicalDeviceExternalFenceProperties:InstanceCmds&$sel:pVkReleaseDisplayEXT:InstanceCmds*$sel:pVkAcquireXlibDisplayEXT:InstanceCmds-$sel:pVkGetRandROutputDisplayEXT:InstanceCmds=$sel:pVkGetPhysicalDeviceSurfaceCapabilities2EXT:InstanceCmds2$sel:pVkEnumeratePhysicalDeviceGroups:InstanceCmds:$sel:pVkGetPhysicalDevicePresentRectanglesKHR:InstanceCmds($sel:pVkCreateIOSSurfaceMVK:InstanceCmds*$sel:pVkCreateMacOSSurfaceMVK:InstanceCmds*$sel:pVkCreateMetalSurfaceEXT:InstanceCmds>$sel:pVkGetPhysicalDeviceMultisamplePropertiesEXT:InstanceCmds=$sel:pVkGetPhysicalDeviceSurfaceCapabilities2KHR:InstanceCmds8$sel:pVkGetPhysicalDeviceSurfaceFormats2KHR:InstanceCmds;$sel:pVkGetPhysicalDeviceDisplayProperties2KHR:InstanceCmds@$sel:pVkGetPhysicalDeviceDisplayPlaneProperties2KHR:InstanceCmds1$sel:pVkGetDisplayModeProperties2KHR:InstanceCmds4$sel:pVkGetDisplayPlaneCapabilities2KHR:InstanceCmdsA$sel:pVkGetPhysicalDeviceCalibrateableTimeDomainsEXT:InstanceCmds1$sel:pVkCreateDebugUtilsMessengerEXT:InstanceCmds2$sel:pVkDestroyDebugUtilsMessengerEXT:InstanceCmds/$sel:pVkSubmitDebugUtilsMessageEXT:InstanceCmdsC$sel:pVkGetPhysicalDeviceCooperativeMatrixPropertiesNV:InstanceCmds=$sel:pVkGetPhysicalDeviceSurfacePresentModes2EXT:InstanceCmdsR$sel:pVkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR:InstanceCmdsJ$sel:pVkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR:InstanceCmds-$sel:pVkCreateHeadlessSurfaceEXT:InstanceCmdsT$sel:pVkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV:InstanceCmds7$sel:pVkGetPhysicalDeviceToolPropertiesEXT:InstanceCmdsgetInstanceProcAddr'initInstanceCmdsinitDeviceCmds$fZeroInstanceCmds$fZeroDeviceCmds$fShowDeviceCmds$fEqDeviceCmds$fShowInstanceCmds$fEqInstanceCmds&$sel:commandBufferHandle:CommandBuffer$sel:deviceCmds:CommandBuffer$sel:queueHandle:Queue$sel:deviceCmds:Queue$sel:deviceHandle:Device$sel:deviceCmds:Device($sel:physicalDeviceHandle:PhysicalDevice $sel:instanceCmds:PhysicalDevice$sel:instanceHandle:Instance$sel:instanceCmds:Instance$fHasObjectTypeInstance$fZeroInstance$fHasObjectTypePhysicalDevice$fZeroPhysicalDevice$fHasObjectTypeDevice $fZeroDevice$fHasObjectTypeQueue $fZeroQueue$fHasObjectTypeCommandBuffer$fZeroCommandBuffer$fShowDeviceMemory$fHasObjectTypeDeviceMemory$fShowCommandPool$fHasObjectTypeCommandPool $fShowBuffer$fHasObjectTypeBuffer$fShowBufferView$fHasObjectTypeBufferView $fShowImage$fHasObjectTypeImage$fShowImageView$fHasObjectTypeImageView$fShowShaderModule$fHasObjectTypeShaderModule$fShowPipeline$fHasObjectTypePipeline$fShowPipelineLayout$fHasObjectTypePipelineLayout $fShowSampler$fHasObjectTypeSampler$fShowDescriptorSet$fHasObjectTypeDescriptorSet$fShowDescriptorSetLayout"$fHasObjectTypeDescriptorSetLayout$fShowDescriptorPool$fHasObjectTypeDescriptorPool $fShowFence$fHasObjectTypeFence$fShowSemaphore$fHasObjectTypeSemaphore $fShowEvent$fHasObjectTypeEvent$fShowQueryPool$fHasObjectTypeQueryPool$fShowFramebuffer$fHasObjectTypeFramebuffer$fShowRenderPass$fHasObjectTypeRenderPass$fShowPipelineCache$fHasObjectTypePipelineCache $fEqInstance$fShowInstance$fIsHandleInstance$fEqPhysicalDevice$fShowPhysicalDevice$fIsHandlePhysicalDevice $fEqDevice $fShowDevice$fIsHandleDevice $fEqQueue $fShowQueue$fIsHandleQueue$fEqCommandBuffer$fShowCommandBuffer$fIsHandleCommandBuffer$fEqDeviceMemory$fOrdDeviceMemory$fStorableDeviceMemory$fZeroDeviceMemory$fIsHandleDeviceMemory$fEqCommandPool$fOrdCommandPool$fStorableCommandPool$fZeroCommandPool$fIsHandleCommandPool $fEqBuffer $fOrdBuffer$fStorableBuffer $fZeroBuffer$fIsHandleBuffer$fEqBufferView$fOrdBufferView$fStorableBufferView$fZeroBufferView$fIsHandleBufferView $fEqImage $fOrdImage$fStorableImage $fZeroImage$fIsHandleImage $fEqImageView$fOrdImageView$fStorableImageView$fZeroImageView$fIsHandleImageView$fEqShaderModule$fOrdShaderModule$fStorableShaderModule$fZeroShaderModule$fIsHandleShaderModule $fEqPipeline $fOrdPipeline$fStorablePipeline$fZeroPipeline$fIsHandlePipeline$fEqPipelineLayout$fOrdPipelineLayout$fStorablePipelineLayout$fZeroPipelineLayout$fIsHandlePipelineLayout $fEqSampler $fOrdSampler$fStorableSampler $fZeroSampler$fIsHandleSampler$fEqDescriptorSet$fOrdDescriptorSet$fStorableDescriptorSet$fZeroDescriptorSet$fIsHandleDescriptorSet$fEqDescriptorSetLayout$fOrdDescriptorSetLayout$fStorableDescriptorSetLayout$fZeroDescriptorSetLayout$fIsHandleDescriptorSetLayout$fEqDescriptorPool$fOrdDescriptorPool$fStorableDescriptorPool$fZeroDescriptorPool$fIsHandleDescriptorPool $fEqFence $fOrdFence$fStorableFence $fZeroFence$fIsHandleFence $fEqSemaphore$fOrdSemaphore$fStorableSemaphore$fZeroSemaphore$fIsHandleSemaphore $fEqEvent $fOrdEvent$fStorableEvent $fZeroEvent$fIsHandleEvent $fEqQueryPool$fOrdQueryPool$fStorableQueryPool$fZeroQueryPool$fIsHandleQueryPool$fEqFramebuffer$fOrdFramebuffer$fStorableFramebuffer$fZeroFramebuffer$fIsHandleFramebuffer$fEqRenderPass$fOrdRenderPass$fStorableRenderPass$fZeroRenderPass$fIsHandleRenderPass$fEqPipelineCache$fOrdPipelineCache$fStorablePipelineCache$fZeroPipelineCache$fIsHandlePipelineCache#NV_WIN32_KEYED_MUTEX_EXTENSION_NAME!NV_WIN32_KEYED_MUTEX_SPEC_VERSION5$sel:acquireSyncs:Win32KeyedMutexAcquireReleaseInfoNV4$sel:acquireKeys:Win32KeyedMutexAcquireReleaseInfoNVC$sel:acquireTimeoutMilliseconds:Win32KeyedMutexAcquireReleaseInfoNV5$sel:releaseSyncs:Win32KeyedMutexAcquireReleaseInfoNV4$sel:releaseKeys:Win32KeyedMutexAcquireReleaseInfoNV)$fZeroWin32KeyedMutexAcquireReleaseInfoNV0$fFromCStructWin32KeyedMutexAcquireReleaseInfoNV.$fToCStructWin32KeyedMutexAcquireReleaseInfoNV)$fShowWin32KeyedMutexAcquireReleaseInfoNV,$fGenericWin32KeyedMutexAcquireReleaseInfoNV$NV_SHADING_RATE_IMAGE_EXTENSION_NAME"NV_SHADING_RATE_IMAGE_SPEC_VERSIONShadingRatePaletteEntryNVG$sel:sampleOrderType:PipelineViewportCoarseSampleOrderStateCreateInfoNVJ$sel:customSampleOrders:PipelineViewportCoarseSampleOrderStateCreateInfoNV*$sel:shadingRate:CoarseSampleOrderCustomNV*$sel:sampleCount:CoarseSampleOrderCustomNV.$sel:sampleLocations:CoarseSampleOrderCustomNV"$sel:pixelX:CoarseSampleLocationNV"$sel:pixelY:CoarseSampleLocationNV"$sel:sample:CoarseSampleLocationNVD$sel:shadingRateTexelSize:PhysicalDeviceShadingRateImagePropertiesNVF$sel:shadingRatePaletteSize:PhysicalDeviceShadingRateImagePropertiesNVK$sel:shadingRateMaxCoarseSamples:PhysicalDeviceShadingRateImagePropertiesNV>$sel:shadingRateImage:PhysicalDeviceShadingRateImageFeaturesNVJ$sel:shadingRateCoarseSampleOrder:PhysicalDeviceShadingRateImageFeaturesNVM$sel:shadingRateImageEnable:PipelineViewportShadingRateImageStateCreateInfoNVJ$sel:shadingRatePalettes:PipelineViewportShadingRateImageStateCreateInfoNV3$sel:shadingRatePaletteEntries:ShadingRatePaletteNV(COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV'COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV"COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV#COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV9SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV9SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV9SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV9SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV9SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV9SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV4SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV5SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV5SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV5SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV6SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV,SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV.$fZeroPhysicalDeviceShadingRateImageFeaturesNV2$fStorablePhysicalDeviceShadingRateImageFeaturesNV5$fFromCStructPhysicalDeviceShadingRateImageFeaturesNV3$fToCStructPhysicalDeviceShadingRateImageFeaturesNV0$fZeroPhysicalDeviceShadingRateImagePropertiesNV7$fFromCStructPhysicalDeviceShadingRateImagePropertiesNV5$fToCStructPhysicalDeviceShadingRateImagePropertiesNV$fZeroCoarseSampleLocationNV $fStorableCoarseSampleLocationNV#$fFromCStructCoarseSampleLocationNV!$fToCStructCoarseSampleLocationNV$fReadShadingRatePaletteEntryNV$fShowShadingRatePaletteEntryNV$fZeroCoarseSampleOrderCustomNV&$fFromCStructCoarseSampleOrderCustomNV$$fToCStructCoarseSampleOrderCustomNV$fZeroShadingRatePaletteNV!$fFromCStructShadingRatePaletteNV$fToCStructShadingRatePaletteNV7$fZeroPipelineViewportShadingRateImageStateCreateInfoNV>$fFromCStructPipelineViewportShadingRateImageStateCreateInfoNV<$fToCStructPipelineViewportShadingRateImageStateCreateInfoNV$fReadCoarseSampleOrderTypeNV$fShowCoarseSampleOrderTypeNV8$fZeroPipelineViewportCoarseSampleOrderStateCreateInfoNV?$fFromCStructPipelineViewportCoarseSampleOrderStateCreateInfoNV=$fToCStructPipelineViewportCoarseSampleOrderStateCreateInfoNV,$fEqPhysicalDeviceShadingRateImageFeaturesNV$fEqCoarseSampleLocationNV$fEqShadingRatePaletteEntryNV$fOrdShadingRatePaletteEntryNV#$fStorableShadingRatePaletteEntryNV$fZeroShadingRatePaletteEntryNV$fEqCoarseSampleOrderTypeNV$fOrdCoarseSampleOrderTypeNV!$fStorableCoarseSampleOrderTypeNV$fZeroCoarseSampleOrderTypeNV8$fShowPipelineViewportCoarseSampleOrderStateCreateInfoNV;$fGenericPipelineViewportCoarseSampleOrderStateCreateInfoNV$fShowCoarseSampleOrderCustomNV"$fGenericCoarseSampleOrderCustomNV$fShowCoarseSampleLocationNV$fGenericCoarseSampleLocationNV0$fShowPhysicalDeviceShadingRateImagePropertiesNV3$fGenericPhysicalDeviceShadingRateImagePropertiesNV.$fShowPhysicalDeviceShadingRateImageFeaturesNV1$fGenericPhysicalDeviceShadingRateImageFeaturesNV7$fShowPipelineViewportShadingRateImageStateCreateInfoNV:$fGenericPipelineViewportShadingRateImageStateCreateInfoNV$fShowShadingRatePaletteNV$fGenericShadingRatePaletteNV#NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME!NV_SCISSOR_EXCLUSIVE_SPEC_VERSIONH$sel:exclusiveScissors:PipelineViewportExclusiveScissorStateCreateInfoNV>$sel:exclusiveScissor:PhysicalDeviceExclusiveScissorFeaturesNV.$fZeroPhysicalDeviceExclusiveScissorFeaturesNV2$fStorablePhysicalDeviceExclusiveScissorFeaturesNV5$fFromCStructPhysicalDeviceExclusiveScissorFeaturesNV3$fToCStructPhysicalDeviceExclusiveScissorFeaturesNV7$fZeroPipelineViewportExclusiveScissorStateCreateInfoNV>$fFromCStructPipelineViewportExclusiveScissorStateCreateInfoNV<$fToCStructPipelineViewportExclusiveScissorStateCreateInfoNV,$fEqPhysicalDeviceExclusiveScissorFeaturesNV7$fShowPipelineViewportExclusiveScissorStateCreateInfoNV:$fGenericPipelineViewportExclusiveScissorStateCreateInfoNV.$fShowPhysicalDeviceExclusiveScissorFeaturesNV1$fGenericPhysicalDeviceExclusiveScissorFeaturesNVNV_MESH_SHADER_EXTENSION_NAMENV_MESH_SHADER_SPEC_VERSION-$sel:taskCount:DrawMeshTasksIndirectCommandNV-$sel:firstTask:DrawMeshTasksIndirectCommandNV?$sel:maxDrawMeshTasksCount:PhysicalDeviceMeshShaderPropertiesNVE$sel:maxTaskWorkGroupInvocations:PhysicalDeviceMeshShaderPropertiesNV>$sel:maxTaskWorkGroupSize:PhysicalDeviceMeshShaderPropertiesNV@$sel:maxTaskTotalMemorySize:PhysicalDeviceMeshShaderPropertiesNV<$sel:maxTaskOutputCount:PhysicalDeviceMeshShaderPropertiesNVE$sel:maxMeshWorkGroupInvocations:PhysicalDeviceMeshShaderPropertiesNV>$sel:maxMeshWorkGroupSize:PhysicalDeviceMeshShaderPropertiesNV@$sel:maxMeshTotalMemorySize:PhysicalDeviceMeshShaderPropertiesNV?$sel:maxMeshOutputVertices:PhysicalDeviceMeshShaderPropertiesNVA$sel:maxMeshOutputPrimitives:PhysicalDeviceMeshShaderPropertiesNVC$sel:maxMeshMultiviewViewCount:PhysicalDeviceMeshShaderPropertiesNVH$sel:meshOutputPerVertexGranularity:PhysicalDeviceMeshShaderPropertiesNVK$sel:meshOutputPerPrimitiveGranularity:PhysicalDeviceMeshShaderPropertiesNV2$sel:taskShader:PhysicalDeviceMeshShaderFeaturesNV2$sel:meshShader:PhysicalDeviceMeshShaderFeaturesNV($fZeroPhysicalDeviceMeshShaderFeaturesNV,$fStorablePhysicalDeviceMeshShaderFeaturesNV/$fFromCStructPhysicalDeviceMeshShaderFeaturesNV-$fToCStructPhysicalDeviceMeshShaderFeaturesNV*$fZeroPhysicalDeviceMeshShaderPropertiesNV.$fStorablePhysicalDeviceMeshShaderPropertiesNV1$fFromCStructPhysicalDeviceMeshShaderPropertiesNV/$fToCStructPhysicalDeviceMeshShaderPropertiesNV$$fZeroDrawMeshTasksIndirectCommandNV($fStorableDrawMeshTasksIndirectCommandNV+$fFromCStructDrawMeshTasksIndirectCommandNV)$fToCStructDrawMeshTasksIndirectCommandNV&$fEqPhysicalDeviceMeshShaderFeaturesNV($fEqPhysicalDeviceMeshShaderPropertiesNV"$fEqDrawMeshTasksIndirectCommandNV$$fShowDrawMeshTasksIndirectCommandNV'$fGenericDrawMeshTasksIndirectCommandNV*$fShowPhysicalDeviceMeshShaderPropertiesNV-$fGenericPhysicalDeviceMeshShaderPropertiesNV($fShowPhysicalDeviceMeshShaderFeaturesNV+$fGenericPhysicalDeviceMeshShaderFeaturesNV/NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME-NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION$sel:stage:CheckpointDataNV&$sel:checkpointMarker:CheckpointDataNVC$sel:checkpointExecutionStageMask:QueueFamilyCheckpointPropertiesNV'$fZeroQueueFamilyCheckpointPropertiesNV+$fStorableQueueFamilyCheckpointPropertiesNV.$fFromCStructQueueFamilyCheckpointPropertiesNV,$fToCStructQueueFamilyCheckpointPropertiesNV$fZeroCheckpointDataNV$fStorableCheckpointDataNV$fFromCStructCheckpointDataNV$fToCStructCheckpointDataNV%$fEqQueueFamilyCheckpointPropertiesNV$fShowCheckpointDataNV$fGenericCheckpointDataNV'$fShowQueueFamilyCheckpointPropertiesNV*$fGenericQueueFamilyCheckpointPropertiesNV&NV_DEDICATED_ALLOCATION_EXTENSION_NAME$NV_DEDICATED_ALLOCATION_SPEC_VERSION2$sel:image:DedicatedAllocationMemoryAllocateInfoNV3$sel:buffer:DedicatedAllocationMemoryAllocateInfoNV>$sel:dedicatedAllocation:DedicatedAllocationBufferCreateInfoNV=$sel:dedicatedAllocation:DedicatedAllocationImageCreateInfoNV*$fZeroDedicatedAllocationImageCreateInfoNV.$fStorableDedicatedAllocationImageCreateInfoNV1$fFromCStructDedicatedAllocationImageCreateInfoNV/$fToCStructDedicatedAllocationImageCreateInfoNV+$fZeroDedicatedAllocationBufferCreateInfoNV/$fStorableDedicatedAllocationBufferCreateInfoNV2$fFromCStructDedicatedAllocationBufferCreateInfoNV0$fToCStructDedicatedAllocationBufferCreateInfoNV-$fZeroDedicatedAllocationMemoryAllocateInfoNV1$fStorableDedicatedAllocationMemoryAllocateInfoNV4$fFromCStructDedicatedAllocationMemoryAllocateInfoNV2$fToCStructDedicatedAllocationMemoryAllocateInfoNV($fEqDedicatedAllocationImageCreateInfoNV)$fEqDedicatedAllocationBufferCreateInfoNV+$fEqDedicatedAllocationMemoryAllocateInfoNV-$fShowDedicatedAllocationMemoryAllocateInfoNV0$fGenericDedicatedAllocationMemoryAllocateInfoNV+$fShowDedicatedAllocationBufferCreateInfoNV.$fGenericDedicatedAllocationBufferCreateInfoNV*$fShowDedicatedAllocationImageCreateInfoNV-$fGenericDedicatedAllocationImageCreateInfoNV)NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME'NV_COVERAGE_REDUCTION_MODE_SPEC_VERSIONCoverageReductionModeNV+PipelineCoverageReductionStateCreateFlagsNV?$sel:coverageReductionMode:FramebufferMixedSamplesCombinationNV>$sel:rasterizationSamples:FramebufferMixedSamplesCombinationNV=$sel:depthStencilSamples:FramebufferMixedSamplesCombinationNV6$sel:colorSamples:FramebufferMixedSamplesCombinationNV5$sel:flags:PipelineCoverageReductionStateCreateInfoNVE$sel:coverageReductionMode:PipelineCoverageReductionStateCreateInfoNVH$sel:coverageReductionMode:PhysicalDeviceCoverageReductionModeFeaturesNV COVERAGE_REDUCTION_MODE_MERGE_NV3$fZeroPhysicalDeviceCoverageReductionModeFeaturesNV7$fStorablePhysicalDeviceCoverageReductionModeFeaturesNV:$fFromCStructPhysicalDeviceCoverageReductionModeFeaturesNV8$fToCStructPhysicalDeviceCoverageReductionModeFeaturesNV1$fReadPipelineCoverageReductionStateCreateFlagsNV1$fShowPipelineCoverageReductionStateCreateFlagsNV$fReadCoverageReductionModeNV$fShowCoverageReductionModeNV*$fZeroFramebufferMixedSamplesCombinationNV.$fStorableFramebufferMixedSamplesCombinationNV1$fFromCStructFramebufferMixedSamplesCombinationNV/$fToCStructFramebufferMixedSamplesCombinationNV0$fZeroPipelineCoverageReductionStateCreateInfoNV4$fStorablePipelineCoverageReductionStateCreateInfoNV7$fFromCStructPipelineCoverageReductionStateCreateInfoNV5$fToCStructPipelineCoverageReductionStateCreateInfoNV1$fEqPhysicalDeviceCoverageReductionModeFeaturesNV/$fEqPipelineCoverageReductionStateCreateFlagsNV0$fOrdPipelineCoverageReductionStateCreateFlagsNV5$fStorablePipelineCoverageReductionStateCreateFlagsNV1$fZeroPipelineCoverageReductionStateCreateFlagsNV1$fBitsPipelineCoverageReductionStateCreateFlagsNV$fEqCoverageReductionModeNV$fOrdCoverageReductionModeNV!$fStorableCoverageReductionModeNV$fZeroCoverageReductionModeNV($fEqFramebufferMixedSamplesCombinationNV.$fEqPipelineCoverageReductionStateCreateInfoNV*$fShowFramebufferMixedSamplesCombinationNV-$fGenericFramebufferMixedSamplesCombinationNV0$fShowPipelineCoverageReductionStateCreateInfoNV3$fGenericPipelineCoverageReductionStateCreateInfoNV3$fShowPhysicalDeviceCoverageReductionModeFeaturesNV6$fGenericPhysicalDeviceCoverageReductionModeFeaturesNV$NV_COOPERATIVE_MATRIX_EXTENSION_NAME"NV_COOPERATIVE_MATRIX_SPEC_VERSIONComponentTypeNVScopeNV($sel:mSize:CooperativeMatrixPropertiesNV($sel:nSize:CooperativeMatrixPropertiesNV($sel:kSize:CooperativeMatrixPropertiesNV($sel:aType:CooperativeMatrixPropertiesNV($sel:bType:CooperativeMatrixPropertiesNV($sel:cType:CooperativeMatrixPropertiesNV($sel:dType:CooperativeMatrixPropertiesNV($sel:scope:CooperativeMatrixPropertiesNVQ$sel:cooperativeMatrixSupportedStages:PhysicalDeviceCooperativeMatrixPropertiesNV@$sel:cooperativeMatrix:PhysicalDeviceCooperativeMatrixFeaturesNVR$sel:cooperativeMatrixRobustBufferAccess:PhysicalDeviceCooperativeMatrixFeaturesNVCOMPONENT_TYPE_UINT64_NVCOMPONENT_TYPE_UINT32_NVCOMPONENT_TYPE_UINT16_NVCOMPONENT_TYPE_UINT8_NVCOMPONENT_TYPE_SINT64_NVCOMPONENT_TYPE_SINT32_NVCOMPONENT_TYPE_SINT16_NVCOMPONENT_TYPE_SINT8_NVCOMPONENT_TYPE_FLOAT64_NVCOMPONENT_TYPE_FLOAT32_NVCOMPONENT_TYPE_FLOAT16_NVSCOPE_QUEUE_FAMILY_NVSCOPE_SUBGROUP_NVSCOPE_WORKGROUP_NVSCOPE_DEVICE_NV/$fZeroPhysicalDeviceCooperativeMatrixFeaturesNV3$fStorablePhysicalDeviceCooperativeMatrixFeaturesNV6$fFromCStructPhysicalDeviceCooperativeMatrixFeaturesNV4$fToCStructPhysicalDeviceCooperativeMatrixFeaturesNV1$fZeroPhysicalDeviceCooperativeMatrixPropertiesNV5$fStorablePhysicalDeviceCooperativeMatrixPropertiesNV8$fFromCStructPhysicalDeviceCooperativeMatrixPropertiesNV6$fToCStructPhysicalDeviceCooperativeMatrixPropertiesNV $fReadScopeNV $fShowScopeNV$fReadComponentTypeNV$fShowComponentTypeNV#$fZeroCooperativeMatrixPropertiesNV'$fStorableCooperativeMatrixPropertiesNV*$fFromCStructCooperativeMatrixPropertiesNV($fToCStructCooperativeMatrixPropertiesNV-$fEqPhysicalDeviceCooperativeMatrixFeaturesNV/$fEqPhysicalDeviceCooperativeMatrixPropertiesNV $fEqScopeNV $fOrdScopeNV$fStorableScopeNV $fZeroScopeNV$fEqComponentTypeNV$fOrdComponentTypeNV$fStorableComponentTypeNV$fZeroComponentTypeNV!$fEqCooperativeMatrixPropertiesNV#$fShowCooperativeMatrixPropertiesNV&$fGenericCooperativeMatrixPropertiesNV1$fShowPhysicalDeviceCooperativeMatrixPropertiesNV4$fGenericPhysicalDeviceCooperativeMatrixPropertiesNV/$fShowPhysicalDeviceCooperativeMatrixFeaturesNV2$fGenericPhysicalDeviceCooperativeMatrixFeaturesNV&NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME$NV_CLIP_SPACE_W_SCALING_SPEC_VERSIONE$sel:viewportWScalingEnable:PipelineViewportWScalingStateCreateInfoNV<$sel:viewportCount:PipelineViewportWScalingStateCreateInfoNV@$sel:viewportWScalings:PipelineViewportWScalingStateCreateInfoNV$sel:xcoeff:ViewportWScalingNV$sel:ycoeff:ViewportWScalingNV$fZeroViewportWScalingNV$fStorableViewportWScalingNV$fFromCStructViewportWScalingNV$fToCStructViewportWScalingNV/$fZeroPipelineViewportWScalingStateCreateInfoNV6$fFromCStructPipelineViewportWScalingStateCreateInfoNV4$fToCStructPipelineViewportWScalingStateCreateInfoNV$fEqViewportWScalingNV/$fShowPipelineViewportWScalingStateCreateInfoNV2$fGenericPipelineViewportWScalingStateCreateInfoNV$fShowViewportWScalingNV$fGenericViewportWScalingNV$NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME"NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION0$sel:deviceAddress:ImageViewAddressPropertiesNVX'$sel:size:ImageViewAddressPropertiesNVX%$sel:imageView:ImageViewHandleInfoNVX*$sel:descriptorType:ImageViewHandleInfoNVX#$sel:sampler:ImageViewHandleInfoNVX$fZeroImageViewHandleInfoNVX $fStorableImageViewHandleInfoNVX#$fFromCStructImageViewHandleInfoNVX!$fToCStructImageViewHandleInfoNVX#$fZeroImageViewAddressPropertiesNVX'$fStorableImageViewAddressPropertiesNVX*$fFromCStructImageViewAddressPropertiesNVX($fToCStructImageViewAddressPropertiesNVX$fEqImageViewHandleInfoNVX!$fEqImageViewAddressPropertiesNVX#$fShowImageViewAddressPropertiesNVX&$fGenericImageViewAddressPropertiesNVX$fShowImageViewHandleInfoNVX$fGenericImageViewHandleInfoNVX$KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME"KHR_WIN32_KEYED_MUTEX_SPEC_VERSION6$sel:acquireSyncs:Win32KeyedMutexAcquireReleaseInfoKHR5$sel:acquireKeys:Win32KeyedMutexAcquireReleaseInfoKHR9$sel:acquireTimeouts:Win32KeyedMutexAcquireReleaseInfoKHR6$sel:releaseSyncs:Win32KeyedMutexAcquireReleaseInfoKHR5$sel:releaseKeys:Win32KeyedMutexAcquireReleaseInfoKHR*$fZeroWin32KeyedMutexAcquireReleaseInfoKHR1$fFromCStructWin32KeyedMutexAcquireReleaseInfoKHR/$fToCStructWin32KeyedMutexAcquireReleaseInfoKHR*$fShowWin32KeyedMutexAcquireReleaseInfoKHR-$fGenericWin32KeyedMutexAcquireReleaseInfoKHR#KHR_PIPELINE_LIBRARY_EXTENSION_NAME!KHR_PIPELINE_LIBRARY_SPEC_VERSION+$sel:libraries:PipelineLibraryCreateInfoKHR"$fZeroPipelineLibraryCreateInfoKHR)$fFromCStructPipelineLibraryCreateInfoKHR'$fToCStructPipelineLibraryCreateInfoKHR"$fShowPipelineLibraryCreateInfoKHR%$fGenericPipelineLibraryCreateInfoKHR1KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME/KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION$PipelineExecutableStatisticFormatKHRB32I64U64F645$sel:name:PipelineExecutableInternalRepresentationKHR<$sel:description:PipelineExecutableInternalRepresentationKHR7$sel:isText:PipelineExecutableInternalRepresentationKHR9$sel:dataSize:PipelineExecutableInternalRepresentationKHR6$sel:data':PipelineExecutableInternalRepresentationKHR($sel:name:PipelineExecutableStatisticKHR/$sel:description:PipelineExecutableStatisticKHR*$sel:format:PipelineExecutableStatisticKHR)$sel:value:PipelineExecutableStatisticKHR'$sel:pipeline:PipelineExecutableInfoKHR.$sel:executableIndex:PipelineExecutableInfoKHR+$sel:stages:PipelineExecutablePropertiesKHR)$sel:name:PipelineExecutablePropertiesKHR0$sel:description:PipelineExecutablePropertiesKHR1$sel:subgroupSize:PipelineExecutablePropertiesKHR$sel:pipeline:PipelineInfoKHRQ$sel:pipelineExecutableInfo:PhysicalDevicePipelineExecutablePropertiesFeaturesKHR0PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR/PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR.PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR/PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR'peekPipelineExecutableStatisticValueKHR;$fZeroPhysicalDevicePipelineExecutablePropertiesFeaturesKHR?$fStorablePhysicalDevicePipelineExecutablePropertiesFeaturesKHRB$fFromCStructPhysicalDevicePipelineExecutablePropertiesFeaturesKHR@$fToCStructPhysicalDevicePipelineExecutablePropertiesFeaturesKHR$fZeroPipelineInfoKHR$fStorablePipelineInfoKHR$fFromCStructPipelineInfoKHR$fToCStructPipelineInfoKHR%$fZeroPipelineExecutablePropertiesKHR)$fStorablePipelineExecutablePropertiesKHR,$fFromCStructPipelineExecutablePropertiesKHR*$fToCStructPipelineExecutablePropertiesKHR$fZeroPipelineExecutableInfoKHR#$fStorablePipelineExecutableInfoKHR&$fFromCStructPipelineExecutableInfoKHR$$fToCStructPipelineExecutableInfoKHR1$fZeroPipelineExecutableInternalRepresentationKHR5$fStorablePipelineExecutableInternalRepresentationKHR8$fFromCStructPipelineExecutableInternalRepresentationKHR6$fToCStructPipelineExecutableInternalRepresentationKHR)$fZeroPipelineExecutableStatisticValueKHR.$fToCStructPipelineExecutableStatisticValueKHR*$fReadPipelineExecutableStatisticFormatKHR*$fShowPipelineExecutableStatisticFormatKHR$$fZeroPipelineExecutableStatisticKHR+$fFromCStructPipelineExecutableStatisticKHR)$fToCStructPipelineExecutableStatisticKHR9$fEqPhysicalDevicePipelineExecutablePropertiesFeaturesKHR$fEqPipelineInfoKHR$fEqPipelineExecutableInfoKHR)$fShowPipelineExecutableStatisticValueKHR($fEqPipelineExecutableStatisticFormatKHR)$fOrdPipelineExecutableStatisticFormatKHR.$fStorablePipelineExecutableStatisticFormatKHR*$fZeroPipelineExecutableStatisticFormatKHR1$fShowPipelineExecutableInternalRepresentationKHR4$fGenericPipelineExecutableInternalRepresentationKHR$$fShowPipelineExecutableStatisticKHR'$fGenericPipelineExecutableStatisticKHR$fShowPipelineExecutableInfoKHR"$fGenericPipelineExecutableInfoKHR%$fShowPipelineExecutablePropertiesKHR($fGenericPipelineExecutablePropertiesKHR$fShowPipelineInfoKHR$fGenericPipelineInfoKHR;$fShowPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>$fGenericPhysicalDevicePipelineExecutablePropertiesFeaturesKHR$KHR_PERFORMANCE_QUERY_EXTENSION_NAME"KHR_PERFORMANCE_QUERY_SPEC_VERSIONAcquireProfilingLockFlagsKHRAcquireProfilingLockFlagBitsKHR%PerformanceCounterDescriptionFlagsKHR(PerformanceCounterDescriptionFlagBitsKHRPerformanceCounterStorageKHRPerformanceCounterUnitKHRPerformanceCounterScopeKHR Int32Counter Int64Counter Uint32Counter Uint64CounterFloat32CounterFloat64Counter3$sel:counterPassIndex:PerformanceQuerySubmitInfoKHR&$sel:flags:AcquireProfilingLockInfoKHR($sel:timeout:AcquireProfilingLockInfoKHR7$sel:queueFamilyIndex:QueryPoolPerformanceCreateInfoKHR5$sel:counterIndices:QueryPoolPerformanceCreateInfoKHR+$sel:flags:PerformanceCounterDescriptionKHR*$sel:name:PerformanceCounterDescriptionKHR.$sel:category:PerformanceCounterDescriptionKHR1$sel:description:PerformanceCounterDescriptionKHR$sel:unit:PerformanceCounterKHR $sel:scope:PerformanceCounterKHR"$sel:storage:PerformanceCounterKHR$sel:uuid:PerformanceCounterKHRN$sel:allowCommandBufferQueryCopies:PhysicalDevicePerformanceQueryPropertiesKHRK$sel:performanceCounterQueryPools:PhysicalDevicePerformanceQueryFeaturesKHRS$sel:performanceCounterMultipleQueryPools:PhysicalDevicePerformanceQueryFeaturesKHR9PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR9PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR'PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR'PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR&PERFORMANCE_COUNTER_STORAGE_UINT64_KHR&PERFORMANCE_COUNTER_STORAGE_UINT32_KHR%PERFORMANCE_COUNTER_STORAGE_INT64_KHR%PERFORMANCE_COUNTER_STORAGE_INT32_KHR#PERFORMANCE_COUNTER_UNIT_CYCLES_KHR"PERFORMANCE_COUNTER_UNIT_HERTZ_KHR!PERFORMANCE_COUNTER_UNIT_AMPS_KHR"PERFORMANCE_COUNTER_UNIT_VOLTS_KHR"PERFORMANCE_COUNTER_UNIT_WATTS_KHR#PERFORMANCE_COUNTER_UNIT_KELVIN_KHR-PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR"PERFORMANCE_COUNTER_UNIT_BYTES_KHR(PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR'PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR$PERFORMANCE_COUNTER_UNIT_GENERIC_KHR%PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR/$fZeroPhysicalDevicePerformanceQueryFeaturesKHR3$fStorablePhysicalDevicePerformanceQueryFeaturesKHR6$fFromCStructPhysicalDevicePerformanceQueryFeaturesKHR4$fToCStructPhysicalDevicePerformanceQueryFeaturesKHR1$fZeroPhysicalDevicePerformanceQueryPropertiesKHR5$fStorablePhysicalDevicePerformanceQueryPropertiesKHR8$fFromCStructPhysicalDevicePerformanceQueryPropertiesKHR6$fToCStructPhysicalDevicePerformanceQueryPropertiesKHR'$fZeroQueryPoolPerformanceCreateInfoKHR.$fFromCStructQueryPoolPerformanceCreateInfoKHR,$fToCStructQueryPoolPerformanceCreateInfoKHR#$fZeroPerformanceQuerySubmitInfoKHR'$fStorablePerformanceQuerySubmitInfoKHR*$fFromCStructPerformanceQuerySubmitInfoKHR($fToCStructPerformanceQuerySubmitInfoKHR!$fZeroPerformanceCounterResultKHR&$fToCStructPerformanceCounterResultKHR $fReadPerformanceCounterScopeKHR $fShowPerformanceCounterScopeKHR$fReadPerformanceCounterUnitKHR$fShowPerformanceCounterUnitKHR"$fReadPerformanceCounterStorageKHR"$fShowPerformanceCounterStorageKHR$fZeroPerformanceCounterKHR$fStorablePerformanceCounterKHR"$fFromCStructPerformanceCounterKHR $fToCStructPerformanceCounterKHR.$fReadPerformanceCounterDescriptionFlagBitsKHR.$fShowPerformanceCounterDescriptionFlagBitsKHR&$fZeroPerformanceCounterDescriptionKHR*$fStorablePerformanceCounterDescriptionKHR-$fFromCStructPerformanceCounterDescriptionKHR+$fToCStructPerformanceCounterDescriptionKHR%$fReadAcquireProfilingLockFlagBitsKHR%$fShowAcquireProfilingLockFlagBitsKHR!$fZeroAcquireProfilingLockInfoKHR%$fStorableAcquireProfilingLockInfoKHR($fFromCStructAcquireProfilingLockInfoKHR&$fToCStructAcquireProfilingLockInfoKHR-$fEqPhysicalDevicePerformanceQueryFeaturesKHR/$fEqPhysicalDevicePerformanceQueryPropertiesKHR!$fEqPerformanceQuerySubmitInfoKHR!$fShowPerformanceCounterResultKHR$fEqPerformanceCounterScopeKHR$fOrdPerformanceCounterScopeKHR$$fStorablePerformanceCounterScopeKHR $fZeroPerformanceCounterScopeKHR$fEqPerformanceCounterUnitKHR$fOrdPerformanceCounterUnitKHR#$fStorablePerformanceCounterUnitKHR$fZeroPerformanceCounterUnitKHR $fEqPerformanceCounterStorageKHR!$fOrdPerformanceCounterStorageKHR&$fStorablePerformanceCounterStorageKHR"$fZeroPerformanceCounterStorageKHR,$fEqPerformanceCounterDescriptionFlagBitsKHR-$fOrdPerformanceCounterDescriptionFlagBitsKHR2$fStorablePerformanceCounterDescriptionFlagBitsKHR.$fZeroPerformanceCounterDescriptionFlagBitsKHR.$fBitsPerformanceCounterDescriptionFlagBitsKHR#$fEqAcquireProfilingLockFlagBitsKHR$$fOrdAcquireProfilingLockFlagBitsKHR)$fStorableAcquireProfilingLockFlagBitsKHR%$fZeroAcquireProfilingLockFlagBitsKHR%$fBitsAcquireProfilingLockFlagBitsKHR$fEqAcquireProfilingLockInfoKHR#$fShowPerformanceQuerySubmitInfoKHR&$fGenericPerformanceQuerySubmitInfoKHR!$fShowAcquireProfilingLockInfoKHR$$fGenericAcquireProfilingLockInfoKHR'$fShowQueryPoolPerformanceCreateInfoKHR*$fGenericQueryPoolPerformanceCreateInfoKHR&$fShowPerformanceCounterDescriptionKHR)$fGenericPerformanceCounterDescriptionKHR$fShowPerformanceCounterKHR$fGenericPerformanceCounterKHR1$fShowPhysicalDevicePerformanceQueryPropertiesKHR4$fGenericPhysicalDevicePerformanceQueryPropertiesKHR/$fShowPhysicalDevicePerformanceQueryFeaturesKHR2$fGenericPhysicalDevicePerformanceQueryFeaturesKHR(KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME&KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION$$sel:semaphore:SemaphoreGetFdInfoKHR%$sel:handleType:SemaphoreGetFdInfoKHR'$sel:semaphore:ImportSemaphoreFdInfoKHR#$sel:flags:ImportSemaphoreFdInfoKHR($sel:handleType:ImportSemaphoreFdInfoKHR $sel:fd:ImportSemaphoreFdInfoKHR$fZeroImportSemaphoreFdInfoKHR"$fStorableImportSemaphoreFdInfoKHR%$fFromCStructImportSemaphoreFdInfoKHR#$fToCStructImportSemaphoreFdInfoKHR$fZeroSemaphoreGetFdInfoKHR$fStorableSemaphoreGetFdInfoKHR"$fFromCStructSemaphoreGetFdInfoKHR $fToCStructSemaphoreGetFdInfoKHR$fEqImportSemaphoreFdInfoKHR$fEqSemaphoreGetFdInfoKHR$fShowSemaphoreGetFdInfoKHR$fGenericSemaphoreGetFdInfoKHR$fShowImportSemaphoreFdInfoKHR!$fGenericImportSemaphoreFdInfoKHR%KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME#KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION$sel:memory:MemoryGetFdInfoKHR"$sel:handleType:MemoryGetFdInfoKHR)$sel:memoryTypeBits:MemoryFdPropertiesKHR%$sel:handleType:ImportMemoryFdInfoKHR$sel:fd:ImportMemoryFdInfoKHR$fZeroImportMemoryFdInfoKHR$fStorableImportMemoryFdInfoKHR"$fFromCStructImportMemoryFdInfoKHR $fToCStructImportMemoryFdInfoKHR$fZeroMemoryFdPropertiesKHR$fStorableMemoryFdPropertiesKHR"$fFromCStructMemoryFdPropertiesKHR $fToCStructMemoryFdPropertiesKHR$fZeroMemoryGetFdInfoKHR$fStorableMemoryGetFdInfoKHR$fFromCStructMemoryGetFdInfoKHR$fToCStructMemoryGetFdInfoKHR$fEqImportMemoryFdInfoKHR$fEqMemoryFdPropertiesKHR$fEqMemoryGetFdInfoKHR$fShowMemoryGetFdInfoKHR$fGenericMemoryGetFdInfoKHR$fShowMemoryFdPropertiesKHR$fGenericMemoryFdPropertiesKHR$fShowImportMemoryFdInfoKHR$fGenericImportMemoryFdInfoKHR$KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME"KHR_EXTERNAL_FENCE_FD_SPEC_VERSION$sel:fence:FenceGetFdInfoKHR!$sel:handleType:FenceGetFdInfoKHR$sel:fence:ImportFenceFdInfoKHR$sel:flags:ImportFenceFdInfoKHR$$sel:handleType:ImportFenceFdInfoKHR$sel:fd:ImportFenceFdInfoKHR$fZeroImportFenceFdInfoKHR$fStorableImportFenceFdInfoKHR!$fFromCStructImportFenceFdInfoKHR$fToCStructImportFenceFdInfoKHR$fZeroFenceGetFdInfoKHR$fStorableFenceGetFdInfoKHR$fFromCStructFenceGetFdInfoKHR$fToCStructFenceGetFdInfoKHR$fEqImportFenceFdInfoKHR$fEqFenceGetFdInfoKHR$fShowFenceGetFdInfoKHR$fGenericFenceGetFdInfoKHR$fShowImportFenceFdInfoKHR$fGenericImportFenceFdInfoKHR%EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME#EXT_TRANSFORM_FEEDBACK_SPEC_VERSION.PipelineRasterizationStateStreamCreateFlagsEXT8$sel:flags:PipelineRasterizationStateStreamCreateInfoEXTF$sel:rasterizationStream:PipelineRasterizationStateStreamCreateInfoEXTM$sel:maxTransformFeedbackStreams:PhysicalDeviceTransformFeedbackPropertiesEXTM$sel:maxTransformFeedbackBuffers:PhysicalDeviceTransformFeedbackPropertiesEXTP$sel:maxTransformFeedbackBufferSize:PhysicalDeviceTransformFeedbackPropertiesEXTT$sel:maxTransformFeedbackStreamDataSize:PhysicalDeviceTransformFeedbackPropertiesEXTT$sel:maxTransformFeedbackBufferDataSize:PhysicalDeviceTransformFeedbackPropertiesEXTV$sel:maxTransformFeedbackBufferDataStride:PhysicalDeviceTransformFeedbackPropertiesEXTJ$sel:transformFeedbackQueries:PhysicalDeviceTransformFeedbackPropertiesEXTX$sel:transformFeedbackStreamsLinesTriangles:PhysicalDeviceTransformFeedbackPropertiesEXT\$sel:transformFeedbackRasterizationStreamSelect:PhysicalDeviceTransformFeedbackPropertiesEXTG$sel:transformFeedbackDraw:PhysicalDeviceTransformFeedbackPropertiesEXTA$sel:transformFeedback:PhysicalDeviceTransformFeedbackFeaturesEXT?$sel:geometryStreams:PhysicalDeviceTransformFeedbackFeaturesEXTcmdUseTransformFeedbackEXTcmdUseQueryIndexedEXT0$fZeroPhysicalDeviceTransformFeedbackFeaturesEXT4$fStorablePhysicalDeviceTransformFeedbackFeaturesEXT7$fFromCStructPhysicalDeviceTransformFeedbackFeaturesEXT5$fToCStructPhysicalDeviceTransformFeedbackFeaturesEXT2$fZeroPhysicalDeviceTransformFeedbackPropertiesEXT6$fStorablePhysicalDeviceTransformFeedbackPropertiesEXT9$fFromCStructPhysicalDeviceTransformFeedbackPropertiesEXT7$fToCStructPhysicalDeviceTransformFeedbackPropertiesEXT4$fReadPipelineRasterizationStateStreamCreateFlagsEXT4$fShowPipelineRasterizationStateStreamCreateFlagsEXT3$fZeroPipelineRasterizationStateStreamCreateInfoEXT7$fStorablePipelineRasterizationStateStreamCreateInfoEXT:$fFromCStructPipelineRasterizationStateStreamCreateInfoEXT8$fToCStructPipelineRasterizationStateStreamCreateInfoEXT.$fEqPhysicalDeviceTransformFeedbackFeaturesEXT0$fEqPhysicalDeviceTransformFeedbackPropertiesEXT2$fEqPipelineRasterizationStateStreamCreateFlagsEXT3$fOrdPipelineRasterizationStateStreamCreateFlagsEXT8$fStorablePipelineRasterizationStateStreamCreateFlagsEXT4$fZeroPipelineRasterizationStateStreamCreateFlagsEXT4$fBitsPipelineRasterizationStateStreamCreateFlagsEXT1$fEqPipelineRasterizationStateStreamCreateInfoEXT3$fShowPipelineRasterizationStateStreamCreateInfoEXT6$fGenericPipelineRasterizationStateStreamCreateInfoEXT2$fShowPhysicalDeviceTransformFeedbackPropertiesEXT5$fGenericPhysicalDeviceTransformFeedbackPropertiesEXT0$fShowPhysicalDeviceTransformFeedbackFeaturesEXT3$fGenericPhysicalDeviceTransformFeedbackFeaturesEXTEXT_TOOLING_INFO_EXTENSION_NAMEEXT_TOOLING_INFO_SPEC_VERSIONToolPurposeFlagsEXTToolPurposeFlagBitsEXT)$sel:name:PhysicalDeviceToolPropertiesEXT,$sel:version:PhysicalDeviceToolPropertiesEXT-$sel:purposes:PhysicalDeviceToolPropertiesEXT0$sel:description:PhysicalDeviceToolPropertiesEXT*$sel:layer:PhysicalDeviceToolPropertiesEXT$TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT"TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT'TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT(TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXTTOOL_PURPOSE_TRACING_BIT_EXTTOOL_PURPOSE_PROFILING_BIT_EXTTOOL_PURPOSE_VALIDATION_BIT_EXT$fReadToolPurposeFlagBitsEXT$fShowToolPurposeFlagBitsEXT%$fZeroPhysicalDeviceToolPropertiesEXT)$fStorablePhysicalDeviceToolPropertiesEXT,$fFromCStructPhysicalDeviceToolPropertiesEXT*$fToCStructPhysicalDeviceToolPropertiesEXT$fEqToolPurposeFlagBitsEXT$fOrdToolPurposeFlagBitsEXT $fStorableToolPurposeFlagBitsEXT$fZeroToolPurposeFlagBitsEXT$fBitsToolPurposeFlagBitsEXT%$fShowPhysicalDeviceToolPropertiesEXT($fGenericPhysicalDeviceToolPropertiesEXT#EXT_SAMPLE_LOCATIONS_EXTENSION_NAME!EXT_SAMPLE_LOCATIONS_SPEC_VERSION7$sel:maxSampleLocationGridSize:MultisamplePropertiesEXTJ$sel:sampleLocationSampleCounts:PhysicalDeviceSampleLocationsPropertiesEXTI$sel:maxSampleLocationGridSize:PhysicalDeviceSampleLocationsPropertiesEXTM$sel:sampleLocationCoordinateRange:PhysicalDeviceSampleLocationsPropertiesEXTJ$sel:sampleLocationSubPixelBits:PhysicalDeviceSampleLocationsPropertiesEXTG$sel:variableSampleLocations:PhysicalDeviceSampleLocationsPropertiesEXTD$sel:sampleLocationsEnable:PipelineSampleLocationsStateCreateInfoEXTB$sel:sampleLocationsInfo:PipelineSampleLocationsStateCreateInfoEXTK$sel:attachmentInitialSampleLocations:RenderPassSampleLocationsBeginInfoEXTE$sel:postSubpassSampleLocations:RenderPassSampleLocationsBeginInfoEXT+$sel:subpassIndex:SubpassSampleLocationsEXT2$sel:sampleLocationsInfo:SubpassSampleLocationsEXT1$sel:attachmentIndex:AttachmentSampleLocationsEXT5$sel:sampleLocationsInfo:AttachmentSampleLocationsEXT3$sel:sampleLocationsPerPixel:SampleLocationsInfoEXT2$sel:sampleLocationGridSize:SampleLocationsInfoEXT+$sel:sampleLocations:SampleLocationsInfoEXT$sel:x:SampleLocationEXT$sel:y:SampleLocationEXT$fZeroSampleLocationEXT$fStorableSampleLocationEXT$fFromCStructSampleLocationEXT$fToCStructSampleLocationEXT$fZeroSampleLocationsInfoEXT#$fFromCStructSampleLocationsInfoEXT!$fToCStructSampleLocationsInfoEXT"$fZeroAttachmentSampleLocationsEXT)$fFromCStructAttachmentSampleLocationsEXT'$fToCStructAttachmentSampleLocationsEXT$fZeroSubpassSampleLocationsEXT&$fFromCStructSubpassSampleLocationsEXT$$fToCStructSubpassSampleLocationsEXT+$fZeroRenderPassSampleLocationsBeginInfoEXT2$fFromCStructRenderPassSampleLocationsBeginInfoEXT0$fToCStructRenderPassSampleLocationsBeginInfoEXT/$fZeroPipelineSampleLocationsStateCreateInfoEXT6$fFromCStructPipelineSampleLocationsStateCreateInfoEXT4$fToCStructPipelineSampleLocationsStateCreateInfoEXT0$fZeroPhysicalDeviceSampleLocationsPropertiesEXT7$fFromCStructPhysicalDeviceSampleLocationsPropertiesEXT5$fToCStructPhysicalDeviceSampleLocationsPropertiesEXT$fZeroMultisamplePropertiesEXT%$fFromCStructMultisamplePropertiesEXT#$fToCStructMultisamplePropertiesEXT$fEqSampleLocationEXT$fShowMultisamplePropertiesEXT!$fGenericMultisamplePropertiesEXT0$fShowPhysicalDeviceSampleLocationsPropertiesEXT3$fGenericPhysicalDeviceSampleLocationsPropertiesEXT/$fShowPipelineSampleLocationsStateCreateInfoEXT2$fGenericPipelineSampleLocationsStateCreateInfoEXT+$fShowRenderPassSampleLocationsBeginInfoEXT.$fGenericRenderPassSampleLocationsBeginInfoEXT$fShowSubpassSampleLocationsEXT"$fGenericSubpassSampleLocationsEXT"$fShowAttachmentSampleLocationsEXT%$fGenericAttachmentSampleLocationsEXT$fShowSampleLocationsInfoEXT$fGenericSampleLocationsInfoEXT$fShowSampleLocationEXT$fGenericSampleLocationEXT%EXT_LINE_RASTERIZATION_EXTENSION_NAME#EXT_LINE_RASTERIZATION_SPEC_VERSIONLineRasterizationModeEXTF$sel:lineRasterizationMode:PipelineRasterizationLineStateCreateInfoEXTC$sel:stippledLineEnable:PipelineRasterizationLineStateCreateInfoEXTB$sel:lineStippleFactor:PipelineRasterizationLineStateCreateInfoEXTC$sel:lineStipplePattern:PipelineRasterizationLineStateCreateInfoEXTK$sel:lineSubPixelPrecisionBits:PhysicalDeviceLineRasterizationPropertiesEXT@$sel:rectangularLines:PhysicalDeviceLineRasterizationFeaturesEXT>$sel:bresenhamLines:PhysicalDeviceLineRasterizationFeaturesEXT;$sel:smoothLines:PhysicalDeviceLineRasterizationFeaturesEXTH$sel:stippledRectangularLines:PhysicalDeviceLineRasterizationFeaturesEXTF$sel:stippledBresenhamLines:PhysicalDeviceLineRasterizationFeaturesEXTC$sel:stippledSmoothLines:PhysicalDeviceLineRasterizationFeaturesEXT'LINE_RASTERIZATION_MODE_RECTANGULAR_EXT#LINE_RASTERIZATION_MODE_DEFAULT_EXT0$fZeroPhysicalDeviceLineRasterizationFeaturesEXT4$fStorablePhysicalDeviceLineRasterizationFeaturesEXT7$fFromCStructPhysicalDeviceLineRasterizationFeaturesEXT5$fToCStructPhysicalDeviceLineRasterizationFeaturesEXT2$fZeroPhysicalDeviceLineRasterizationPropertiesEXT6$fStorablePhysicalDeviceLineRasterizationPropertiesEXT9$fFromCStructPhysicalDeviceLineRasterizationPropertiesEXT7$fToCStructPhysicalDeviceLineRasterizationPropertiesEXT$fReadLineRasterizationModeEXT$fShowLineRasterizationModeEXT1$fZeroPipelineRasterizationLineStateCreateInfoEXT5$fStorablePipelineRasterizationLineStateCreateInfoEXT8$fFromCStructPipelineRasterizationLineStateCreateInfoEXT6$fToCStructPipelineRasterizationLineStateCreateInfoEXT.$fEqPhysicalDeviceLineRasterizationFeaturesEXT0$fEqPhysicalDeviceLineRasterizationPropertiesEXT$fEqLineRasterizationModeEXT$fOrdLineRasterizationModeEXT"$fStorableLineRasterizationModeEXT$fZeroLineRasterizationModeEXT/$fEqPipelineRasterizationLineStateCreateInfoEXT1$fShowPipelineRasterizationLineStateCreateInfoEXT4$fGenericPipelineRasterizationLineStateCreateInfoEXT2$fShowPhysicalDeviceLineRasterizationPropertiesEXT5$fGenericPhysicalDeviceLineRasterizationPropertiesEXT0$fShowPhysicalDeviceLineRasterizationFeaturesEXT3$fGenericPhysicalDeviceLineRasterizationFeaturesEXT'EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME%EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSIONR$sel:minImportedHostPointerAlignment:PhysicalDeviceExternalMemoryHostPropertiesEXT2$sel:memoryTypeBits:MemoryHostPointerPropertiesEXT.$sel:handleType:ImportMemoryHostPointerInfoEXT/$sel:hostPointer:ImportMemoryHostPointerInfoEXT$$fZeroImportMemoryHostPointerInfoEXT($fStorableImportMemoryHostPointerInfoEXT+$fFromCStructImportMemoryHostPointerInfoEXT)$fToCStructImportMemoryHostPointerInfoEXT$$fZeroMemoryHostPointerPropertiesEXT($fStorableMemoryHostPointerPropertiesEXT+$fFromCStructMemoryHostPointerPropertiesEXT)$fToCStructMemoryHostPointerPropertiesEXT3$fZeroPhysicalDeviceExternalMemoryHostPropertiesEXT7$fStorablePhysicalDeviceExternalMemoryHostPropertiesEXT:$fFromCStructPhysicalDeviceExternalMemoryHostPropertiesEXT8$fToCStructPhysicalDeviceExternalMemoryHostPropertiesEXT"$fEqMemoryHostPointerPropertiesEXT1$fEqPhysicalDeviceExternalMemoryHostPropertiesEXT3$fShowPhysicalDeviceExternalMemoryHostPropertiesEXT6$fGenericPhysicalDeviceExternalMemoryHostPropertiesEXT$$fShowMemoryHostPointerPropertiesEXT'$fGenericMemoryHostPointerPropertiesEXT$$fShowImportMemoryHostPointerInfoEXT'$fGenericImportMemoryHostPointerInfoEXT%EXT_DISCARD_RECTANGLES_EXTENSION_NAME#EXT_DISCARD_RECTANGLES_SPEC_VERSION+PipelineDiscardRectangleStateCreateFlagsEXT5$sel:flags:PipelineDiscardRectangleStateCreateInfoEXTD$sel:discardRectangleMode:PipelineDiscardRectangleStateCreateInfoEXTA$sel:discardRectangles:PipelineDiscardRectangleStateCreateInfoEXTE$sel:maxDiscardRectangles:PhysicalDeviceDiscardRectanglePropertiesEXT$DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT$DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT1$fZeroPhysicalDeviceDiscardRectanglePropertiesEXT5$fStorablePhysicalDeviceDiscardRectanglePropertiesEXT8$fFromCStructPhysicalDeviceDiscardRectanglePropertiesEXT6$fToCStructPhysicalDeviceDiscardRectanglePropertiesEXT1$fReadPipelineDiscardRectangleStateCreateFlagsEXT1$fShowPipelineDiscardRectangleStateCreateFlagsEXT$fReadDiscardRectangleModeEXT$fShowDiscardRectangleModeEXT0$fZeroPipelineDiscardRectangleStateCreateInfoEXT7$fFromCStructPipelineDiscardRectangleStateCreateInfoEXT5$fToCStructPipelineDiscardRectangleStateCreateInfoEXT/$fEqPhysicalDeviceDiscardRectanglePropertiesEXT/$fEqPipelineDiscardRectangleStateCreateFlagsEXT0$fOrdPipelineDiscardRectangleStateCreateFlagsEXT5$fStorablePipelineDiscardRectangleStateCreateFlagsEXT1$fZeroPipelineDiscardRectangleStateCreateFlagsEXT1$fBitsPipelineDiscardRectangleStateCreateFlagsEXT$fEqDiscardRectangleModeEXT$fOrdDiscardRectangleModeEXT!$fStorableDiscardRectangleModeEXT$fZeroDiscardRectangleModeEXT0$fShowPipelineDiscardRectangleStateCreateInfoEXT3$fGenericPipelineDiscardRectangleStateCreateInfoEXT1$fShowPhysicalDeviceDiscardRectanglePropertiesEXT4$fGenericPhysicalDeviceDiscardRectanglePropertiesEXT(EXT_CONDITIONAL_RENDERING_EXTENSION_NAME&EXT_CONDITIONAL_RENDERING_SPEC_VERSIONConditionalRenderingFlagsEXTConditionalRenderingFlagBitsEXTG$sel:conditionalRendering:PhysicalDeviceConditionalRenderingFeaturesEXTP$sel:inheritedConditionalRendering:PhysicalDeviceConditionalRenderingFeaturesEXTS$sel:conditionalRenderingEnable:CommandBufferInheritanceConditionalRenderingInfoEXT,$sel:buffer:ConditionalRenderingBeginInfoEXT,$sel:offset:ConditionalRenderingBeginInfoEXT+$sel:flags:ConditionalRenderingBeginInfoEXT&CONDITIONAL_RENDERING_INVERTED_BIT_EXTcmdUseConditionalRenderingEXT9$fZeroCommandBufferInheritanceConditionalRenderingInfoEXT=$fStorableCommandBufferInheritanceConditionalRenderingInfoEXT@$fFromCStructCommandBufferInheritanceConditionalRenderingInfoEXT>$fToCStructCommandBufferInheritanceConditionalRenderingInfoEXT3$fZeroPhysicalDeviceConditionalRenderingFeaturesEXT7$fStorablePhysicalDeviceConditionalRenderingFeaturesEXT:$fFromCStructPhysicalDeviceConditionalRenderingFeaturesEXT8$fToCStructPhysicalDeviceConditionalRenderingFeaturesEXT%$fReadConditionalRenderingFlagBitsEXT%$fShowConditionalRenderingFlagBitsEXT&$fZeroConditionalRenderingBeginInfoEXT*$fStorableConditionalRenderingBeginInfoEXT-$fFromCStructConditionalRenderingBeginInfoEXT+$fToCStructConditionalRenderingBeginInfoEXT7$fEqCommandBufferInheritanceConditionalRenderingInfoEXT1$fEqPhysicalDeviceConditionalRenderingFeaturesEXT#$fEqConditionalRenderingFlagBitsEXT$$fOrdConditionalRenderingFlagBitsEXT)$fStorableConditionalRenderingFlagBitsEXT%$fZeroConditionalRenderingFlagBitsEXT%$fBitsConditionalRenderingFlagBitsEXT$$fEqConditionalRenderingBeginInfoEXT3$fShowPhysicalDeviceConditionalRenderingFeaturesEXT6$fGenericPhysicalDeviceConditionalRenderingFeaturesEXT9$fShowCommandBufferInheritanceConditionalRenderingInfoEXT<$fGenericCommandBufferInheritanceConditionalRenderingInfoEXT&$fShowConditionalRenderingBeginInfoEXT)$fGenericConditionalRenderingBeginInfoEXT(EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME&EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION*$sel:timeDomain:CalibratedTimestampInfoEXT)TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT#TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXTTIME_DOMAIN_CLOCK_MONOTONIC_EXTTIME_DOMAIN_DEVICE_EXT$fReadTimeDomainEXT$fShowTimeDomainEXT $fZeroCalibratedTimestampInfoEXT$$fStorableCalibratedTimestampInfoEXT'$fFromCStructCalibratedTimestampInfoEXT%$fToCStructCalibratedTimestampInfoEXT$fEqTimeDomainEXT$fOrdTimeDomainEXT$fStorableTimeDomainEXT$fZeroTimeDomainEXT$fEqCalibratedTimestampInfoEXT $fShowCalibratedTimestampInfoEXT#$fGenericCalibratedTimestampInfoEXTAMD_SHADER_INFO_EXTENSION_NAMEAMD_SHADER_INFO_SPEC_VERSION,$sel:shaderStageMask:ShaderStatisticsInfoAMD*$sel:resourceUsage:ShaderStatisticsInfoAMD-$sel:numPhysicalVgprs:ShaderStatisticsInfoAMD-$sel:numPhysicalSgprs:ShaderStatisticsInfoAMD.$sel:numAvailableVgprs:ShaderStatisticsInfoAMD.$sel:numAvailableSgprs:ShaderStatisticsInfoAMD1$sel:computeWorkGroupSize:ShaderStatisticsInfoAMD($sel:numUsedVgprs:ShaderResourceUsageAMD($sel:numUsedSgprs:ShaderResourceUsageAMD4$sel:ldsSizePerLocalWorkGroup:ShaderResourceUsageAMD/$sel:ldsUsageSizeInBytes:ShaderResourceUsageAMD2$sel:scratchMemUsageInBytes:ShaderResourceUsageAMD SHADER_INFO_TYPE_DISASSEMBLY_AMDSHADER_INFO_TYPE_BINARY_AMDSHADER_INFO_TYPE_STATISTICS_AMD$fZeroShaderResourceUsageAMD $fStorableShaderResourceUsageAMD#$fFromCStructShaderResourceUsageAMD!$fToCStructShaderResourceUsageAMD$fZeroShaderStatisticsInfoAMD$$fFromCStructShaderStatisticsInfoAMD"$fToCStructShaderStatisticsInfoAMD$fReadShaderInfoTypeAMD$fShowShaderInfoTypeAMD$fEqShaderResourceUsageAMD$fEqShaderInfoTypeAMD$fOrdShaderInfoTypeAMD$fStorableShaderInfoTypeAMD$fZeroShaderInfoTypeAMD$fShowShaderStatisticsInfoAMD $fGenericShaderStatisticsInfoAMD$fShowShaderResourceUsageAMD$fGenericShaderResourceUsageAMD AMD_BUFFER_MARKER_EXTENSION_NAMEAMD_BUFFER_MARKER_SPEC_VERSION"$sel:semaphore:SemaphoreSignalInfo$sel:value:SemaphoreSignalInfo$sel:flags:SemaphoreWaitInfo!$sel:semaphores:SemaphoreWaitInfo$sel:values:SemaphoreWaitInfo8$sel:waitSemaphoreValueCount:TimelineSemaphoreSubmitInfo4$sel:waitSemaphoreValues:TimelineSemaphoreSubmitInfo:$sel:signalSemaphoreValueCount:TimelineSemaphoreSubmitInfo6$sel:signalSemaphoreValues:TimelineSemaphoreSubmitInfo*$sel:semaphoreType:SemaphoreTypeCreateInfo)$sel:initialValue:SemaphoreTypeCreateInfoR$sel:maxTimelineSemaphoreValueDifference:PhysicalDeviceTimelineSemaphoreProperties>$sel:timelineSemaphore:PhysicalDeviceTimelineSemaphoreFeatureswaitSemaphoresSafe-$fZeroPhysicalDeviceTimelineSemaphoreFeatures1$fStorablePhysicalDeviceTimelineSemaphoreFeatures4$fFromCStructPhysicalDeviceTimelineSemaphoreFeatures2$fToCStructPhysicalDeviceTimelineSemaphoreFeatures/$fZeroPhysicalDeviceTimelineSemaphoreProperties3$fStorablePhysicalDeviceTimelineSemaphoreProperties6$fFromCStructPhysicalDeviceTimelineSemaphoreProperties4$fToCStructPhysicalDeviceTimelineSemaphoreProperties$fZeroSemaphoreTypeCreateInfo!$fStorableSemaphoreTypeCreateInfo$$fFromCStructSemaphoreTypeCreateInfo"$fToCStructSemaphoreTypeCreateInfo!$fZeroTimelineSemaphoreSubmitInfo($fFromCStructTimelineSemaphoreSubmitInfo&$fToCStructTimelineSemaphoreSubmitInfo$fZeroSemaphoreWaitInfo$fFromCStructSemaphoreWaitInfo$fToCStructSemaphoreWaitInfo$fZeroSemaphoreSignalInfo$fStorableSemaphoreSignalInfo $fFromCStructSemaphoreSignalInfo$fToCStructSemaphoreSignalInfo+$fEqPhysicalDeviceTimelineSemaphoreFeatures-$fEqPhysicalDeviceTimelineSemaphoreProperties$fEqSemaphoreTypeCreateInfo$fEqSemaphoreSignalInfo$fShowSemaphoreSignalInfo$fGenericSemaphoreSignalInfo$fShowSemaphoreWaitInfo$fGenericSemaphoreWaitInfo!$fShowTimelineSemaphoreSubmitInfo$$fGenericTimelineSemaphoreSubmitInfo$fShowSemaphoreTypeCreateInfo $fGenericSemaphoreTypeCreateInfo/$fShowPhysicalDeviceTimelineSemaphoreProperties2$fGenericPhysicalDeviceTimelineSemaphoreProperties-$fShowPhysicalDeviceTimelineSemaphoreFeatures0$fGenericPhysicalDeviceTimelineSemaphoreFeatures%KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME#KHR_TIMELINE_SEMAPHORE_SPEC_VERSIONSemaphoreSignalInfoKHRSemaphoreWaitInfoKHRTimelineSemaphoreSubmitInfoKHRSemaphoreTypeCreateInfoKHR,PhysicalDeviceTimelineSemaphorePropertiesKHR*PhysicalDeviceTimelineSemaphoreFeaturesKHRSemaphoreWaitFlagBitsKHRSemaphoreTypeKHRSemaphoreWaitFlagsKHRSEMAPHORE_WAIT_ANY_BIT_KHRSEMAPHORE_TYPE_TIMELINE_KHRSEMAPHORE_TYPE_BINARY_KHR(STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR&STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR1STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR-STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR@STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR>STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR.$sel:attachments:RenderPassAttachmentBeginInfo)$sel:flags:FramebufferAttachmentImageInfo)$sel:usage:FramebufferAttachmentImageInfo)$sel:width:FramebufferAttachmentImageInfo*$sel:height:FramebufferAttachmentImageInfo.$sel:layerCount:FramebufferAttachmentImageInfo/$sel:viewFormats:FramebufferAttachmentImageInfo:$sel:attachmentImageInfos:FramebufferAttachmentsCreateInfoD$sel:imagelessFramebuffer:PhysicalDeviceImagelessFramebufferFeatures0$fZeroPhysicalDeviceImagelessFramebufferFeatures4$fStorablePhysicalDeviceImagelessFramebufferFeatures7$fFromCStructPhysicalDeviceImagelessFramebufferFeatures5$fToCStructPhysicalDeviceImagelessFramebufferFeatures$$fZeroFramebufferAttachmentImageInfo+$fFromCStructFramebufferAttachmentImageInfo)$fToCStructFramebufferAttachmentImageInfo&$fZeroFramebufferAttachmentsCreateInfo-$fFromCStructFramebufferAttachmentsCreateInfo+$fToCStructFramebufferAttachmentsCreateInfo#$fZeroRenderPassAttachmentBeginInfo*$fFromCStructRenderPassAttachmentBeginInfo($fToCStructRenderPassAttachmentBeginInfo.$fEqPhysicalDeviceImagelessFramebufferFeatures#$fShowRenderPassAttachmentBeginInfo&$fGenericRenderPassAttachmentBeginInfo$$fShowFramebufferAttachmentImageInfo'$fGenericFramebufferAttachmentImageInfo&$fShowFramebufferAttachmentsCreateInfo)$fGenericFramebufferAttachmentsCreateInfo0$fShowPhysicalDeviceImagelessFramebufferFeatures3$fGenericPhysicalDeviceImagelessFramebufferFeatures(KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME&KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION RenderPassAttachmentBeginInfoKHR!FramebufferAttachmentImageInfoKHR-PhysicalDeviceImagelessFramebufferFeaturesKHR4STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR4STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR6STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHRASTRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR&KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME$KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION&AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME$AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION0$sel:memory:DeviceMemoryOpaqueCaptureAddressInfo@$sel:opaqueCaptureAddress:MemoryOpaqueCaptureAddressAllocateInfo>$sel:opaqueCaptureAddress:BufferOpaqueCaptureAddressCreateInfo#$sel:buffer:BufferDeviceAddressInfoB$sel:bufferDeviceAddress:PhysicalDeviceBufferDeviceAddressFeaturesO$sel:bufferDeviceAddressCaptureReplay:PhysicalDeviceBufferDeviceAddressFeaturesM$sel:bufferDeviceAddressMultiDevice:PhysicalDeviceBufferDeviceAddressFeatures/$fZeroPhysicalDeviceBufferDeviceAddressFeatures3$fStorablePhysicalDeviceBufferDeviceAddressFeatures6$fFromCStructPhysicalDeviceBufferDeviceAddressFeatures4$fToCStructPhysicalDeviceBufferDeviceAddressFeatures$fZeroBufferDeviceAddressInfo!$fStorableBufferDeviceAddressInfo$$fFromCStructBufferDeviceAddressInfo"$fToCStructBufferDeviceAddressInfo*$fZeroBufferOpaqueCaptureAddressCreateInfo.$fStorableBufferOpaqueCaptureAddressCreateInfo1$fFromCStructBufferOpaqueCaptureAddressCreateInfo/$fToCStructBufferOpaqueCaptureAddressCreateInfo,$fZeroMemoryOpaqueCaptureAddressAllocateInfo0$fStorableMemoryOpaqueCaptureAddressAllocateInfo3$fFromCStructMemoryOpaqueCaptureAddressAllocateInfo1$fToCStructMemoryOpaqueCaptureAddressAllocateInfo*$fZeroDeviceMemoryOpaqueCaptureAddressInfo.$fStorableDeviceMemoryOpaqueCaptureAddressInfo1$fFromCStructDeviceMemoryOpaqueCaptureAddressInfo/$fToCStructDeviceMemoryOpaqueCaptureAddressInfo-$fEqPhysicalDeviceBufferDeviceAddressFeatures$fEqBufferDeviceAddressInfo($fEqBufferOpaqueCaptureAddressCreateInfo*$fEqMemoryOpaqueCaptureAddressAllocateInfo($fEqDeviceMemoryOpaqueCaptureAddressInfo*$fShowDeviceMemoryOpaqueCaptureAddressInfo-$fGenericDeviceMemoryOpaqueCaptureAddressInfo,$fShowMemoryOpaqueCaptureAddressAllocateInfo/$fGenericMemoryOpaqueCaptureAddressAllocateInfo*$fShowBufferOpaqueCaptureAddressCreateInfo-$fGenericBufferOpaqueCaptureAddressCreateInfo$fShowBufferDeviceAddressInfo $fGenericBufferDeviceAddressInfo/$fShowPhysicalDeviceBufferDeviceAddressFeatures2$fGenericPhysicalDeviceBufferDeviceAddressFeatures(KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME&KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION'DeviceMemoryOpaqueCaptureAddressInfoKHR)MemoryOpaqueCaptureAddressAllocateInfoKHR'BufferOpaqueCaptureAddressCreateInfoKHRBufferDeviceAddressInfoKHR5MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR3BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHRSTRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR$fToCStructCommandBufferInheritanceRenderPassTransformInfoQCOM$$fEqRenderPassTransformBeginInfoQCOM9$fShowCommandBufferInheritanceRenderPassTransformInfoQCOM<$fGenericCommandBufferInheritanceRenderPassTransformInfoQCOM&$fShowRenderPassTransformBeginInfoQCOM)$fGenericRenderPassTransformBeginInfoQCOMKHR_SWAPCHAIN_EXTENSION_NAMEKHR_SWAPCHAIN_SPEC_VERSIONSwapchainCreateFlagsKHRSwapchainCreateFlagBitsKHR,$sel:modes:DeviceGroupSwapchainCreateInfoKHR*$sel:deviceMasks:DeviceGroupPresentInfoKHR#$sel:mode:DeviceGroupPresentInfoKHR&$sel:swapchain:AcquireNextImageInfoKHR$$sel:timeout:AcquireNextImageInfoKHR&$sel:semaphore:AcquireNextImageInfoKHR"$sel:fence:AcquireNextImageInfoKHR'$sel:deviceMask:AcquireNextImageInfoKHR.$sel:swapchain:BindImageMemorySwapchainInfoKHR/$sel:imageIndex:BindImageMemorySwapchainInfoKHR*$sel:swapchain:ImageSwapchainCreateInfoKHR2$sel:presentMask:DeviceGroupPresentCapabilitiesKHR,$sel:modes:DeviceGroupPresentCapabilitiesKHR$sel:next:PresentInfoKHR"$sel:waitSemaphores:PresentInfoKHR$sel:swapchains:PresentInfoKHR $sel:imageIndices:PresentInfoKHR$sel:results:PresentInfoKHR $sel:next:SwapchainCreateInfoKHR!$sel:flags:SwapchainCreateInfoKHR#$sel:surface:SwapchainCreateInfoKHR)$sel:minImageCount:SwapchainCreateInfoKHR'$sel:imageFormat:SwapchainCreateInfoKHR+$sel:imageColorSpace:SwapchainCreateInfoKHR'$sel:imageExtent:SwapchainCreateInfoKHR,$sel:imageArrayLayers:SwapchainCreateInfoKHR&$sel:imageUsage:SwapchainCreateInfoKHR,$sel:imageSharingMode:SwapchainCreateInfoKHR.$sel:queueFamilyIndices:SwapchainCreateInfoKHR($sel:preTransform:SwapchainCreateInfoKHR*$sel:compositeAlpha:SwapchainCreateInfoKHR'$sel:presentMode:SwapchainCreateInfoKHR#$sel:clipped:SwapchainCreateInfoKHR($sel:oldSwapchain:SwapchainCreateInfoKHR4SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR'SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR4DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR%DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR(DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHRwithSwapchainKHRacquireNextImageKHRSafeacquireNextImage2KHRSafe$fZeroPresentInfoKHR$fFromCStructPresentInfoKHR$fToCStructPresentInfoKHR!$fZeroImageSwapchainCreateInfoKHR%$fStorableImageSwapchainCreateInfoKHR($fFromCStructImageSwapchainCreateInfoKHR&$fToCStructImageSwapchainCreateInfoKHR%$fZeroBindImageMemorySwapchainInfoKHR)$fStorableBindImageMemorySwapchainInfoKHR,$fFromCStructBindImageMemorySwapchainInfoKHR*$fToCStructBindImageMemorySwapchainInfoKHR$fZeroAcquireNextImageInfoKHR!$fStorableAcquireNextImageInfoKHR$$fFromCStructAcquireNextImageInfoKHR"$fToCStructAcquireNextImageInfoKHR'$fReadDeviceGroupPresentModeFlagBitsKHR'$fShowDeviceGroupPresentModeFlagBitsKHR$fZeroDeviceGroupPresentInfoKHR&$fFromCStructDeviceGroupPresentInfoKHR$$fToCStructDeviceGroupPresentInfoKHR$fExtensiblePresentInfoKHR'$fZeroDeviceGroupSwapchainCreateInfoKHR+$fStorableDeviceGroupSwapchainCreateInfoKHR.$fFromCStructDeviceGroupSwapchainCreateInfoKHR,$fToCStructDeviceGroupSwapchainCreateInfoKHR'$fZeroDeviceGroupPresentCapabilitiesKHR+$fStorableDeviceGroupPresentCapabilitiesKHR.$fFromCStructDeviceGroupPresentCapabilitiesKHR,$fToCStructDeviceGroupPresentCapabilitiesKHR $fReadSwapchainCreateFlagBitsKHR $fShowSwapchainCreateFlagBitsKHR$fZeroSwapchainCreateInfoKHR#$fFromCStructSwapchainCreateInfoKHR!$fToCStructSwapchainCreateInfoKHR"$fExtensibleSwapchainCreateInfoKHR$fEqImageSwapchainCreateInfoKHR#$fEqBindImageMemorySwapchainInfoKHR$fEqAcquireNextImageInfoKHR%$fEqDeviceGroupPresentModeFlagBitsKHR&$fOrdDeviceGroupPresentModeFlagBitsKHR+$fStorableDeviceGroupPresentModeFlagBitsKHR'$fZeroDeviceGroupPresentModeFlagBitsKHR'$fBitsDeviceGroupPresentModeFlagBitsKHR%$fEqDeviceGroupSwapchainCreateInfoKHR$fEqSwapchainCreateFlagBitsKHR$fOrdSwapchainCreateFlagBitsKHR$$fStorableSwapchainCreateFlagBitsKHR $fZeroSwapchainCreateFlagBitsKHR $fBitsSwapchainCreateFlagBitsKHR'$fShowDeviceGroupSwapchainCreateInfoKHR*$fGenericDeviceGroupSwapchainCreateInfoKHR$fShowDeviceGroupPresentInfoKHR"$fGenericDeviceGroupPresentInfoKHR$fShowAcquireNextImageInfoKHR $fGenericAcquireNextImageInfoKHR%$fShowBindImageMemorySwapchainInfoKHR($fGenericBindImageMemorySwapchainInfoKHR!$fShowImageSwapchainCreateInfoKHR$$fGenericImageSwapchainCreateInfoKHR'$fShowDeviceGroupPresentCapabilitiesKHR*$fGenericDeviceGroupPresentCapabilitiesKHR$fShowPresentInfoKHR$fGenericPresentInfoKHR$fShowSwapchainCreateInfoKHR$fGenericSwapchainCreateInfoKHR+KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME)KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION(EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME&EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION+KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME)KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSIONI$sel:sharedPresentSupportedUsageFlags:SharedPresentSurfaceCapabilitiesKHR)$fZeroSharedPresentSurfaceCapabilitiesKHR-$fStorableSharedPresentSurfaceCapabilitiesKHR0$fFromCStructSharedPresentSurfaceCapabilitiesKHR.$fToCStructSharedPresentSurfaceCapabilitiesKHR'$fEqSharedPresentSurfaceCapabilitiesKHR)$fShowSharedPresentSurfaceCapabilitiesKHR,$fGenericSharedPresentSurfaceCapabilitiesKHR-KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME+KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION$$sel:surfaceFormat:SurfaceFormat2KHR!$sel:next:SurfaceCapabilities2KHR0$sel:surfaceCapabilities:SurfaceCapabilities2KHR'$sel:next:PhysicalDeviceSurfaceInfo2KHR*$sel:surface:PhysicalDeviceSurfaceInfo2KHR#$fZeroPhysicalDeviceSurfaceInfo2KHR*$fFromCStructPhysicalDeviceSurfaceInfo2KHR($fToCStructPhysicalDeviceSurfaceInfo2KHR)$fExtensiblePhysicalDeviceSurfaceInfo2KHR$fZeroSurfaceCapabilities2KHR$$fFromCStructSurfaceCapabilities2KHR"$fToCStructSurfaceCapabilities2KHR#$fExtensibleSurfaceCapabilities2KHR$fZeroSurfaceFormat2KHR$fFromCStructSurfaceFormat2KHR$fToCStructSurfaceFormat2KHR$fShowSurfaceFormat2KHR$fGenericSurfaceFormat2KHR$fShowSurfaceCapabilities2KHR $fGenericSurfaceCapabilities2KHR#$fShowPhysicalDeviceSurfaceInfo2KHR&$fGenericPhysicalDeviceSurfaceInfo2KHR$KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME"KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION"$sel:srcRect:DisplayPresentInfoKHR"$sel:dstRect:DisplayPresentInfoKHR%$sel:persistent:DisplayPresentInfoKHR$fZeroDisplayPresentInfoKHR"$fFromCStructDisplayPresentInfoKHR $fToCStructDisplayPresentInfoKHR$fShowDisplayPresentInfoKHR$fGenericDisplayPresentInfoKHRKHR_DISPLAY_EXTENSION_NAMEKHR_DISPLAY_SPEC_VERSIONDisplayPlaneAlphaFlagsKHRDisplayPlaneAlphaFlagBitsKHRDisplaySurfaceCreateFlagsKHRDisplayModeCreateFlagsKHR&$sel:flags:DisplaySurfaceCreateInfoKHR,$sel:displayMode:DisplaySurfaceCreateInfoKHR+$sel:planeIndex:DisplaySurfaceCreateInfoKHR0$sel:planeStackIndex:DisplaySurfaceCreateInfoKHR*$sel:transform:DisplaySurfaceCreateInfoKHR,$sel:globalAlpha:DisplaySurfaceCreateInfoKHR*$sel:alphaMode:DisplaySurfaceCreateInfoKHR,$sel:imageExtent:DisplaySurfaceCreateInfoKHR/$sel:supportedAlpha:DisplayPlaneCapabilitiesKHR/$sel:minSrcPosition:DisplayPlaneCapabilitiesKHR/$sel:maxSrcPosition:DisplayPlaneCapabilitiesKHR-$sel:minSrcExtent:DisplayPlaneCapabilitiesKHR-$sel:maxSrcExtent:DisplayPlaneCapabilitiesKHR/$sel:minDstPosition:DisplayPlaneCapabilitiesKHR/$sel:maxDstPosition:DisplayPlaneCapabilitiesKHR-$sel:minDstExtent:DisplayPlaneCapabilitiesKHR-$sel:maxDstExtent:DisplayPlaneCapabilitiesKHR#$sel:flags:DisplayModeCreateInfoKHR($sel:parameters:DisplayModeCreateInfoKHR)$sel:displayMode:DisplayModePropertiesKHR($sel:parameters:DisplayModePropertiesKHR+$sel:visibleRegion:DisplayModeParametersKHR)$sel:refreshRate:DisplayModeParametersKHR-$sel:currentDisplay:DisplayPlanePropertiesKHR0$sel:currentStackIndex:DisplayPlanePropertiesKHR!$sel:display:DisplayPropertiesKHR%$sel:displayName:DisplayPropertiesKHR,$sel:physicalDimensions:DisplayPropertiesKHR,$sel:physicalResolution:DisplayPropertiesKHR-$sel:supportedTransforms:DisplayPropertiesKHR.$sel:planeReorderPossible:DisplayPropertiesKHR+$sel:persistentContent:DisplayPropertiesKHR3DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR%DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR$fZeroDisplayPropertiesKHR!$fFromCStructDisplayPropertiesKHR$fToCStructDisplayPropertiesKHR$fZeroDisplayPlanePropertiesKHR#$fStorableDisplayPlanePropertiesKHR&$fFromCStructDisplayPlanePropertiesKHR$$fToCStructDisplayPlanePropertiesKHR$fZeroDisplayModeParametersKHR%$fFromCStructDisplayModeParametersKHR#$fToCStructDisplayModeParametersKHR$fZeroDisplayModePropertiesKHR%$fFromCStructDisplayModePropertiesKHR#$fToCStructDisplayModePropertiesKHR$fReadDisplayModeCreateFlagsKHR$fShowDisplayModeCreateFlagsKHR$fZeroDisplayModeCreateInfoKHR%$fFromCStructDisplayModeCreateInfoKHR#$fToCStructDisplayModeCreateInfoKHR"$fReadDisplaySurfaceCreateFlagsKHR"$fShowDisplaySurfaceCreateFlagsKHR"$fReadDisplayPlaneAlphaFlagBitsKHR"$fShowDisplayPlaneAlphaFlagBitsKHR!$fZeroDisplaySurfaceCreateInfoKHR($fFromCStructDisplaySurfaceCreateInfoKHR&$fToCStructDisplaySurfaceCreateInfoKHR!$fZeroDisplayPlaneCapabilitiesKHR($fFromCStructDisplayPlaneCapabilitiesKHR&$fToCStructDisplayPlaneCapabilitiesKHR$fEqDisplayPlanePropertiesKHR$fEqDisplayModeCreateFlagsKHR$fOrdDisplayModeCreateFlagsKHR#$fStorableDisplayModeCreateFlagsKHR$fZeroDisplayModeCreateFlagsKHR$fBitsDisplayModeCreateFlagsKHR $fEqDisplaySurfaceCreateFlagsKHR!$fOrdDisplaySurfaceCreateFlagsKHR&$fStorableDisplaySurfaceCreateFlagsKHR"$fZeroDisplaySurfaceCreateFlagsKHR"$fBitsDisplaySurfaceCreateFlagsKHR $fEqDisplayPlaneAlphaFlagBitsKHR!$fOrdDisplayPlaneAlphaFlagBitsKHR&$fStorableDisplayPlaneAlphaFlagBitsKHR"$fZeroDisplayPlaneAlphaFlagBitsKHR"$fBitsDisplayPlaneAlphaFlagBitsKHR!$fShowDisplaySurfaceCreateInfoKHR$$fGenericDisplaySurfaceCreateInfoKHR!$fShowDisplayPlaneCapabilitiesKHR$$fGenericDisplayPlaneCapabilitiesKHR$fShowDisplayModeCreateInfoKHR!$fGenericDisplayModeCreateInfoKHR$fShowDisplayModePropertiesKHR!$fGenericDisplayModePropertiesKHR$fShowDisplayModeParametersKHR!$fGenericDisplayModeParametersKHR$fShowDisplayPlanePropertiesKHR"$fGenericDisplayPlanePropertiesKHR$fShowDisplayPropertiesKHR$fGenericDisplayPropertiesKHR+KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME)KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION.$sel:capabilities:DisplayPlaneCapabilities2KHR$sel:mode:DisplayPlaneInfo2KHR$$sel:planeIndex:DisplayPlaneInfo2KHR4$sel:displayModeProperties:DisplayModeProperties2KHR6$sel:displayPlaneProperties:DisplayPlaneProperties2KHR,$sel:displayProperties:DisplayProperties2KHR$fZeroDisplayProperties2KHR"$fFromCStructDisplayProperties2KHR $fToCStructDisplayProperties2KHR $fZeroDisplayPlaneProperties2KHR'$fFromCStructDisplayPlaneProperties2KHR%$fToCStructDisplayPlaneProperties2KHR$fZeroDisplayModeProperties2KHR&$fFromCStructDisplayModeProperties2KHR$$fToCStructDisplayModeProperties2KHR$fZeroDisplayPlaneInfo2KHR$fStorableDisplayPlaneInfo2KHR!$fFromCStructDisplayPlaneInfo2KHR$fToCStructDisplayPlaneInfo2KHR"$fZeroDisplayPlaneCapabilities2KHR)$fFromCStructDisplayPlaneCapabilities2KHR'$fToCStructDisplayPlaneCapabilities2KHR$fEqDisplayPlaneInfo2KHR"$fShowDisplayPlaneCapabilities2KHR%$fGenericDisplayPlaneCapabilities2KHR$fShowDisplayPlaneInfo2KHR$fGenericDisplayPlaneInfo2KHR$fShowDisplayModeProperties2KHR"$fGenericDisplayModeProperties2KHR $fShowDisplayPlaneProperties2KHR#$fGenericDisplayPlaneProperties2KHR$fShowDisplayProperties2KHR$fGenericDisplayProperties2KHRKHR_DEVICE_GROUP_EXTENSION_NAMEKHR_DEVICE_GROUP_SPEC_VERSIONDeviceGroupBindSparseInfoKHRDeviceGroupSubmitInfoKHR$DeviceGroupCommandBufferBeginInfoKHR!DeviceGroupRenderPassBeginInfoKHR!BindImageMemoryDeviceGroupInfoKHR"BindBufferMemoryDeviceGroupInfoKHRMemoryAllocateFlagsInfoKHRMemoryAllocateFlagBitsKHRPeerMemoryFeatureFlagBitsKHRMemoryAllocateFlagsKHRPeerMemoryFeatureFlagsKHR0IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR6STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR7STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHRDEPENDENCY_DEVICE_GROUP_BIT_KHR!PIPELINE_CREATE_DISPATCH_BASE_KHR4PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR#MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR'PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR'PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR$PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR$PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR0STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR+STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR9STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR6STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR-STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR+KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME)KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION-$sel:operationHandle:DeferredOperationInfoKHRwithDeferredOperationKHR$fZeroDeferredOperationInfoKHR"$fStorableDeferredOperationInfoKHR%$fFromCStructDeferredOperationInfoKHR#$fToCStructDeferredOperationInfoKHR$fEqDeferredOperationInfoKHR$fShowDeferredOperationInfoKHR!$fGenericDeferredOperationInfoKHR ANativeWindow"KHR_ANDROID_SURFACE_EXTENSION_NAME KHR_ANDROID_SURFACE_SPEC_VERSIONAndroidSurfaceCreateFlagsKHR&$sel:flags:AndroidSurfaceCreateInfoKHR'$sel:window:AndroidSurfaceCreateInfoKHR"$fReadAndroidSurfaceCreateFlagsKHR"$fShowAndroidSurfaceCreateFlagsKHR!$fZeroAndroidSurfaceCreateInfoKHR%$fStorableAndroidSurfaceCreateInfoKHR($fFromCStructAndroidSurfaceCreateInfoKHR&$fToCStructAndroidSurfaceCreateInfoKHR $fEqAndroidSurfaceCreateFlagsKHR!$fOrdAndroidSurfaceCreateFlagsKHR&$fStorableAndroidSurfaceCreateFlagsKHR"$fZeroAndroidSurfaceCreateFlagsKHR"$fBitsAndroidSurfaceCreateFlagsKHR$fEqAndroidSurfaceCreateInfoKHR!$fShowAndroidSurfaceCreateInfoKHR$$fGenericAndroidSurfaceCreateInfoKHR&INTEL_PERFORMANCE_QUERY_EXTENSION_NAME$INTEL_PERFORMANCE_QUERY_SPEC_VERSIONQueryPoolCreateInfoINTELPerformanceValueTypeINTELPerformanceOverrideTypeINTELQueryPoolSamplingModeINTEL!PerformanceConfigurationTypeINTELValue32Value64 ValueFloat ValueBool ValueString3$sel:type':PerformanceConfigurationAcquireInfoINTEL'$sel:type':PerformanceOverrideInfoINTEL($sel:enable:PerformanceOverrideInfoINTEL+$sel:parameter:PerformanceOverrideInfoINTEL,$sel:marker:PerformanceStreamMarkerInfoINTEL&$sel:marker:PerformanceMarkerInfoINTELI$sel:performanceCountersSampling:QueryPoolPerformanceQueryCreateInfoINTEL/$sel:userData:InitializePerformanceApiInfoINTEL $sel:type':PerformanceValueINTEL $sel:data':PerformanceValueINTEL#PERFORMANCE_VALUE_TYPE_STRING_INTEL!PERFORMANCE_VALUE_TYPE_BOOL_INTEL"PERFORMANCE_VALUE_TYPE_FLOAT_INTEL#PERFORMANCE_VALUE_TYPE_UINT64_INTEL#PERFORMANCE_VALUE_TYPE_UINT32_INTEL9PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL6PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL0PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL-PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL%QUERY_POOL_SAMPLING_MODE_MANUAL_INTELNPERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL+STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTELpeekPerformanceValueDataINTEL'$fZeroInitializePerformanceApiInfoINTEL+$fStorableInitializePerformanceApiInfoINTEL.$fFromCStructInitializePerformanceApiInfoINTEL,$fToCStructInitializePerformanceApiInfoINTEL $fZeroPerformanceMarkerInfoINTEL$$fStorablePerformanceMarkerInfoINTEL'$fFromCStructPerformanceMarkerInfoINTEL%$fToCStructPerformanceMarkerInfoINTEL&$fZeroPerformanceStreamMarkerInfoINTEL*$fStorablePerformanceStreamMarkerInfoINTEL-$fFromCStructPerformanceStreamMarkerInfoINTEL+$fToCStructPerformanceStreamMarkerInfoINTEL$fZeroPerformanceValueDataINTEL$$fToCStructPerformanceValueDataINTEL'$fReadPerformanceConfigurationTypeINTEL'$fShowPerformanceConfigurationTypeINTEL.$fZeroPerformanceConfigurationAcquireInfoINTEL2$fStorablePerformanceConfigurationAcquireInfoINTEL5$fFromCStructPerformanceConfigurationAcquireInfoINTEL3$fToCStructPerformanceConfigurationAcquireInfoINTEL $fReadQueryPoolSamplingModeINTEL $fShowQueryPoolSamplingModeINTEL.$fZeroQueryPoolPerformanceQueryCreateInfoINTEL2$fStorableQueryPoolPerformanceQueryCreateInfoINTEL5$fFromCStructQueryPoolPerformanceQueryCreateInfoINTEL3$fToCStructQueryPoolPerformanceQueryCreateInfoINTEL"$fReadPerformanceOverrideTypeINTEL"$fShowPerformanceOverrideTypeINTEL"$fZeroPerformanceOverrideInfoINTEL&$fStorablePerformanceOverrideInfoINTEL)$fFromCStructPerformanceOverrideInfoINTEL'$fToCStructPerformanceOverrideInfoINTEL#$fReadPerformanceParameterTypeINTEL#$fShowPerformanceParameterTypeINTEL$fReadPerformanceValueTypeINTEL$fShowPerformanceValueTypeINTEL$fZeroPerformanceValueINTEL"$fFromCStructPerformanceValueINTEL $fToCStructPerformanceValueINTEL$fEqPerformanceMarkerInfoINTEL$$fEqPerformanceStreamMarkerInfoINTEL$fShowPerformanceValueDataINTEL%$fEqPerformanceConfigurationTypeINTEL&$fOrdPerformanceConfigurationTypeINTEL+$fStorablePerformanceConfigurationTypeINTEL'$fZeroPerformanceConfigurationTypeINTEL,$fEqPerformanceConfigurationAcquireInfoINTEL$fEqQueryPoolSamplingModeINTEL$fOrdQueryPoolSamplingModeINTEL$$fStorableQueryPoolSamplingModeINTEL $fZeroQueryPoolSamplingModeINTEL,$fEqQueryPoolPerformanceQueryCreateInfoINTEL $fEqPerformanceOverrideTypeINTEL!$fOrdPerformanceOverrideTypeINTEL&$fStorablePerformanceOverrideTypeINTEL"$fZeroPerformanceOverrideTypeINTEL $fEqPerformanceOverrideInfoINTEL!$fEqPerformanceParameterTypeINTEL"$fOrdPerformanceParameterTypeINTEL'$fStorablePerformanceParameterTypeINTEL#$fZeroPerformanceParameterTypeINTEL$fEqPerformanceValueTypeINTEL$fOrdPerformanceValueTypeINTEL#$fStorablePerformanceValueTypeINTEL$fZeroPerformanceValueTypeINTEL.$fShowPerformanceConfigurationAcquireInfoINTEL1$fGenericPerformanceConfigurationAcquireInfoINTEL"$fShowPerformanceOverrideInfoINTEL%$fGenericPerformanceOverrideInfoINTEL&$fShowPerformanceStreamMarkerInfoINTEL)$fGenericPerformanceStreamMarkerInfoINTEL $fShowPerformanceMarkerInfoINTEL#$fGenericPerformanceMarkerInfoINTEL.$fShowQueryPoolPerformanceQueryCreateInfoINTEL1$fGenericQueryPoolPerformanceQueryCreateInfoINTEL'$fShowInitializePerformanceApiInfoINTEL*$fGenericInitializePerformanceApiInfoINTEL$fShowPerformanceValueINTEL$fGenericPerformanceValueINTEL$GOOGLE_DISPLAY_TIMING_EXTENSION_NAME"GOOGLE_DISPLAY_TIMING_SPEC_VERSION $sel:presentID:PresentTimeGOOGLE)$sel:desiredPresentTime:PresentTimeGOOGLE*$sel:swapchainCount:PresentTimesInfoGOOGLE!$sel:times:PresentTimesInfoGOOGLE+$sel:presentID:PastPresentationTimingGOOGLE4$sel:desiredPresentTime:PastPresentationTimingGOOGLE3$sel:actualPresentTime:PastPresentationTimingGOOGLE5$sel:earliestPresentTime:PastPresentationTimingGOOGLE/$sel:presentMargin:PastPresentationTimingGOOGLE/$sel:refreshDuration:RefreshCycleDurationGOOGLE $fZeroRefreshCycleDurationGOOGLE$$fStorableRefreshCycleDurationGOOGLE'$fFromCStructRefreshCycleDurationGOOGLE%$fToCStructRefreshCycleDurationGOOGLE"$fZeroPastPresentationTimingGOOGLE&$fStorablePastPresentationTimingGOOGLE)$fFromCStructPastPresentationTimingGOOGLE'$fToCStructPastPresentationTimingGOOGLE$fZeroPresentTimeGOOGLE$fStorablePresentTimeGOOGLE$fFromCStructPresentTimeGOOGLE$fToCStructPresentTimeGOOGLE$fZeroPresentTimesInfoGOOGLE#$fFromCStructPresentTimesInfoGOOGLE!$fToCStructPresentTimesInfoGOOGLE$fEqRefreshCycleDurationGOOGLE $fEqPastPresentationTimingGOOGLE$fEqPresentTimeGOOGLE$fShowPresentTimeGOOGLE$fGenericPresentTimeGOOGLE$fShowPresentTimesInfoGOOGLE$fGenericPresentTimesInfoGOOGLE"$fShowPastPresentationTimingGOOGLE%$fGenericPastPresentationTimingGOOGLE $fShowRefreshCycleDurationGOOGLE#$fGenericRefreshCycleDurationGOOGLEGgpStreamDescriptor,GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME*GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION%StreamDescriptorSurfaceCreateFlagsGGP/$sel:flags:StreamDescriptorSurfaceCreateInfoGGP:$sel:streamDescriptor:StreamDescriptorSurfaceCreateInfoGGP+$fReadStreamDescriptorSurfaceCreateFlagsGGP+$fShowStreamDescriptorSurfaceCreateFlagsGGP*$fZeroStreamDescriptorSurfaceCreateInfoGGP.$fStorableStreamDescriptorSurfaceCreateInfoGGP1$fFromCStructStreamDescriptorSurfaceCreateInfoGGP/$fToCStructStreamDescriptorSurfaceCreateInfoGGP)$fEqStreamDescriptorSurfaceCreateFlagsGGP*$fOrdStreamDescriptorSurfaceCreateFlagsGGP/$fStorableStreamDescriptorSurfaceCreateFlagsGGP+$fZeroStreamDescriptorSurfaceCreateFlagsGGP+$fBitsStreamDescriptorSurfaceCreateFlagsGGP($fEqStreamDescriptorSurfaceCreateInfoGGP*$fShowStreamDescriptorSurfaceCreateInfoGGP-$fGenericStreamDescriptorSurfaceCreateInfoGGP Zx_handle_t(FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME&FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION"ImagePipeSurfaceCreateFlagsFUCHSIA,$sel:flags:ImagePipeSurfaceCreateInfoFUCHSIA6$sel:imagePipeHandle:ImagePipeSurfaceCreateInfoFUCHSIA($fReadImagePipeSurfaceCreateFlagsFUCHSIA($fShowImagePipeSurfaceCreateFlagsFUCHSIA'$fZeroImagePipeSurfaceCreateInfoFUCHSIA+$fStorableImagePipeSurfaceCreateInfoFUCHSIA.$fFromCStructImagePipeSurfaceCreateInfoFUCHSIA,$fToCStructImagePipeSurfaceCreateInfoFUCHSIA&$fEqImagePipeSurfaceCreateFlagsFUCHSIA'$fOrdImagePipeSurfaceCreateFlagsFUCHSIA,$fStorableImagePipeSurfaceCreateFlagsFUCHSIA($fZeroImagePipeSurfaceCreateFlagsFUCHSIA($fBitsImagePipeSurfaceCreateFlagsFUCHSIA%$fEqImagePipeSurfaceCreateInfoFUCHSIA'$fShowImagePipeSurfaceCreateInfoFUCHSIA*$fGenericImagePipeSurfaceCreateInfoFUCHSIA#EXT_VALIDATION_CACHE_EXTENSION_NAME!EXT_VALIDATION_CACHE_SPEC_VERSIONValidationCacheHeaderVersionEXTValidationCacheCreateFlagsEXT=$sel:validationCache:ShaderModuleValidationCacheCreateInfoEXT'$sel:flags:ValidationCacheCreateInfoEXT1$sel:initialDataSize:ValidationCacheCreateInfoEXT-$sel:initialData:ValidationCacheCreateInfoEXT'VALIDATION_CACHE_HEADER_VERSION_ONE_EXTwithValidationCacheEXT.$fZeroShaderModuleValidationCacheCreateInfoEXT2$fStorableShaderModuleValidationCacheCreateInfoEXT5$fFromCStructShaderModuleValidationCacheCreateInfoEXT3$fToCStructShaderModuleValidationCacheCreateInfoEXT#$fReadValidationCacheCreateFlagsEXT#$fShowValidationCacheCreateFlagsEXT"$fZeroValidationCacheCreateInfoEXT&$fStorableValidationCacheCreateInfoEXT)$fFromCStructValidationCacheCreateInfoEXT'$fToCStructValidationCacheCreateInfoEXT%$fReadValidationCacheHeaderVersionEXT%$fShowValidationCacheHeaderVersionEXT,$fEqShaderModuleValidationCacheCreateInfoEXT!$fEqValidationCacheCreateFlagsEXT"$fOrdValidationCacheCreateFlagsEXT'$fStorableValidationCacheCreateFlagsEXT#$fZeroValidationCacheCreateFlagsEXT#$fBitsValidationCacheCreateFlagsEXT#$fEqValidationCacheHeaderVersionEXT$$fOrdValidationCacheHeaderVersionEXT)$fStorableValidationCacheHeaderVersionEXT%$fZeroValidationCacheHeaderVersionEXT.$fShowShaderModuleValidationCacheCreateInfoEXT1$fGenericShaderModuleValidationCacheCreateInfoEXT"$fShowValidationCacheCreateInfoEXT%$fGenericValidationCacheCreateInfoEXTEXT_PRIVATE_DATA_EXTENSION_NAMEEXT_PRIVATE_DATA_SPEC_VERSIONPrivateDataSlotCreateFlagsEXT PrivateDataSlotCreateFlagBitsEXT5$sel:privateData:PhysicalDevicePrivateDataFeaturesEXT'$sel:flags:PrivateDataSlotCreateInfoEXT?$sel:privateDataSlotRequestCount:DevicePrivateDataCreateInfoEXTwithPrivateDataSlotEXT$$fZeroDevicePrivateDataCreateInfoEXT($fStorableDevicePrivateDataCreateInfoEXT+$fFromCStructDevicePrivateDataCreateInfoEXT)$fToCStructDevicePrivateDataCreateInfoEXT*$fZeroPhysicalDevicePrivateDataFeaturesEXT.$fStorablePhysicalDevicePrivateDataFeaturesEXT1$fFromCStructPhysicalDevicePrivateDataFeaturesEXT/$fToCStructPhysicalDevicePrivateDataFeaturesEXT&$fReadPrivateDataSlotCreateFlagBitsEXT&$fShowPrivateDataSlotCreateFlagBitsEXT"$fZeroPrivateDataSlotCreateInfoEXT&$fStorablePrivateDataSlotCreateInfoEXT)$fFromCStructPrivateDataSlotCreateInfoEXT'$fToCStructPrivateDataSlotCreateInfoEXT"$fEqDevicePrivateDataCreateInfoEXT($fEqPhysicalDevicePrivateDataFeaturesEXT$$fEqPrivateDataSlotCreateFlagBitsEXT%$fOrdPrivateDataSlotCreateFlagBitsEXT*$fStorablePrivateDataSlotCreateFlagBitsEXT&$fZeroPrivateDataSlotCreateFlagBitsEXT&$fBitsPrivateDataSlotCreateFlagBitsEXT $fEqPrivateDataSlotCreateInfoEXT*$fShowPhysicalDevicePrivateDataFeaturesEXT-$fGenericPhysicalDevicePrivateDataFeaturesEXT"$fShowPrivateDataSlotCreateInfoEXT%$fGenericPrivateDataSlotCreateInfoEXT$$fShowDevicePrivateDataCreateInfoEXT'$fGenericDevicePrivateDataCreateInfoEXT EXT_METAL_SURFACE_EXTENSION_NAMEEXT_METAL_SURFACE_SPEC_VERSIONMetalSurfaceCreateFlagsEXT$$sel:flags:MetalSurfaceCreateInfoEXT$$sel:layer:MetalSurfaceCreateInfoEXT $fReadMetalSurfaceCreateFlagsEXT $fShowMetalSurfaceCreateFlagsEXT$fZeroMetalSurfaceCreateInfoEXT#$fStorableMetalSurfaceCreateInfoEXT&$fFromCStructMetalSurfaceCreateInfoEXT$$fToCStructMetalSurfaceCreateInfoEXT$fEqMetalSurfaceCreateFlagsEXT$fOrdMetalSurfaceCreateFlagsEXT$$fStorableMetalSurfaceCreateFlagsEXT $fZeroMetalSurfaceCreateFlagsEXT $fBitsMetalSurfaceCreateFlagsEXT$fEqMetalSurfaceCreateInfoEXT$fShowMetalSurfaceCreateInfoEXT"$fGenericMetalSurfaceCreateInfoEXT#EXT_HEADLESS_SURFACE_EXTENSION_NAME!EXT_HEADLESS_SURFACE_SPEC_VERSIONHeadlessSurfaceCreateFlagsEXT'$sel:flags:HeadlessSurfaceCreateInfoEXT#$fReadHeadlessSurfaceCreateFlagsEXT#$fShowHeadlessSurfaceCreateFlagsEXT"$fZeroHeadlessSurfaceCreateInfoEXT&$fStorableHeadlessSurfaceCreateInfoEXT)$fFromCStructHeadlessSurfaceCreateInfoEXT'$fToCStructHeadlessSurfaceCreateInfoEXT!$fEqHeadlessSurfaceCreateFlagsEXT"$fOrdHeadlessSurfaceCreateFlagsEXT'$fStorableHeadlessSurfaceCreateFlagsEXT#$fZeroHeadlessSurfaceCreateFlagsEXT#$fBitsHeadlessSurfaceCreateFlagsEXT $fEqHeadlessSurfaceCreateInfoEXT"$fShowHeadlessSurfaceCreateInfoEXT%$fGenericHeadlessSurfaceCreateInfoEXTEXT_HDR_METADATA_EXTENSION_NAMEEXT_HDR_METADATA_SPEC_VERSION%$sel:displayPrimaryRed:HdrMetadataEXT'$sel:displayPrimaryGreen:HdrMetadataEXT&$sel:displayPrimaryBlue:HdrMetadataEXT$sel:whitePoint:HdrMetadataEXT $sel:maxLuminance:HdrMetadataEXT $sel:minLuminance:HdrMetadataEXT($sel:maxContentLightLevel:HdrMetadataEXT-$sel:maxFrameAverageLightLevel:HdrMetadataEXT$sel:x:XYColorEXT$sel:y:XYColorEXT$fZeroXYColorEXT$fStorableXYColorEXT$fFromCStructXYColorEXT$fToCStructXYColorEXT$fZeroHdrMetadataEXT$fFromCStructHdrMetadataEXT$fToCStructHdrMetadataEXT$fEqXYColorEXT$fShowHdrMetadataEXT$fGenericHdrMetadataEXT$fShowXYColorEXT$fGenericXYColorEXTHMONITOR(EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME&EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSIONFullScreenExclusiveEXTK$sel:fullScreenExclusiveSupported:SurfaceCapabilitiesFullScreenExclusiveEXT4$sel:hmonitor:SurfaceFullScreenExclusiveWin32InfoEXT:$sel:fullScreenExclusive:SurfaceFullScreenExclusiveInfoEXT$FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT!FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT!FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT/$fZeroSurfaceCapabilitiesFullScreenExclusiveEXT3$fStorableSurfaceCapabilitiesFullScreenExclusiveEXT6$fFromCStructSurfaceCapabilitiesFullScreenExclusiveEXT4$fToCStructSurfaceCapabilitiesFullScreenExclusiveEXT$fReadFullScreenExclusiveEXT$fShowFullScreenExclusiveEXT'$fZeroSurfaceFullScreenExclusiveInfoEXT+$fStorableSurfaceFullScreenExclusiveInfoEXT.$fFromCStructSurfaceFullScreenExclusiveInfoEXT,$fToCStructSurfaceFullScreenExclusiveInfoEXT,$fZeroSurfaceFullScreenExclusiveWin32InfoEXT0$fStorableSurfaceFullScreenExclusiveWin32InfoEXT3$fFromCStructSurfaceFullScreenExclusiveWin32InfoEXT1$fToCStructSurfaceFullScreenExclusiveWin32InfoEXT-$fEqSurfaceCapabilitiesFullScreenExclusiveEXT$fEqFullScreenExclusiveEXT$fOrdFullScreenExclusiveEXT $fStorableFullScreenExclusiveEXT$fZeroFullScreenExclusiveEXT%$fEqSurfaceFullScreenExclusiveInfoEXT*$fEqSurfaceFullScreenExclusiveWin32InfoEXT/$fShowSurfaceCapabilitiesFullScreenExclusiveEXT2$fGenericSurfaceCapabilitiesFullScreenExclusiveEXT,$fShowSurfaceFullScreenExclusiveWin32InfoEXT/$fGenericSurfaceFullScreenExclusiveWin32InfoEXT'$fShowSurfaceFullScreenExclusiveInfoEXT*$fGenericSurfaceFullScreenExclusiveInfoEXT*EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME(EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION*$sel:minImageCount:SurfaceCapabilities2EXT*$sel:maxImageCount:SurfaceCapabilities2EXT*$sel:currentExtent:SurfaceCapabilities2EXT+$sel:minImageExtent:SurfaceCapabilities2EXT+$sel:maxImageExtent:SurfaceCapabilities2EXT0$sel:maxImageArrayLayers:SurfaceCapabilities2EXT0$sel:supportedTransforms:SurfaceCapabilities2EXT-$sel:currentTransform:SurfaceCapabilities2EXT4$sel:supportedCompositeAlpha:SurfaceCapabilities2EXT0$sel:supportedUsageFlags:SurfaceCapabilities2EXT5$sel:supportedSurfaceCounters:SurfaceCapabilities2EXTSURFACE_COUNTER_VBLANK_EXT(STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT$fReadSurfaceCounterFlagBitsEXT$fShowSurfaceCounterFlagBitsEXT$fZeroSurfaceCapabilities2EXT$$fFromCStructSurfaceCapabilities2EXT"$fToCStructSurfaceCapabilities2EXT$fEqSurfaceCounterFlagBitsEXT$fOrdSurfaceCounterFlagBitsEXT#$fStorableSurfaceCounterFlagBitsEXT$fZeroSurfaceCounterFlagBitsEXT$fBitsSurfaceCounterFlagBitsEXT$fShowSurfaceCapabilities2EXT $fGenericSurfaceCapabilities2EXT"EXT_DISPLAY_CONTROL_EXTENSION_NAME EXT_DISPLAY_CONTROL_SPEC_VERSIONDisplayEventTypeEXTDeviceEventTypeEXTDisplayPowerStateEXT2$sel:surfaceCounters:SwapchainCounterCreateInfoEXT%$sel:displayEvent:DisplayEventInfoEXT#$sel:deviceEvent:DeviceEventInfoEXT#$sel:powerState:DisplayPowerInfoEXT&DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT%DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXTDISPLAY_POWER_STATE_ON_EXTDISPLAY_POWER_STATE_SUSPEND_EXTDISPLAY_POWER_STATE_OFF_EXT#$fZeroSwapchainCounterCreateInfoEXT'$fStorableSwapchainCounterCreateInfoEXT*$fFromCStructSwapchainCounterCreateInfoEXT($fToCStructSwapchainCounterCreateInfoEXT$fReadDisplayPowerStateEXT$fShowDisplayPowerStateEXT$fZeroDisplayPowerInfoEXT$fStorableDisplayPowerInfoEXT $fFromCStructDisplayPowerInfoEXT$fToCStructDisplayPowerInfoEXT$fReadDeviceEventTypeEXT$fShowDeviceEventTypeEXT$fZeroDeviceEventInfoEXT$fStorableDeviceEventInfoEXT$fFromCStructDeviceEventInfoEXT$fToCStructDeviceEventInfoEXT$fReadDisplayEventTypeEXT$fShowDisplayEventTypeEXT$fZeroDisplayEventInfoEXT$fStorableDisplayEventInfoEXT $fFromCStructDisplayEventInfoEXT$fToCStructDisplayEventInfoEXT!$fEqSwapchainCounterCreateInfoEXT$fEqDisplayPowerStateEXT$fOrdDisplayPowerStateEXT$fStorableDisplayPowerStateEXT$fZeroDisplayPowerStateEXT$fEqDisplayPowerInfoEXT$fEqDeviceEventTypeEXT$fOrdDeviceEventTypeEXT$fStorableDeviceEventTypeEXT$fZeroDeviceEventTypeEXT$fEqDeviceEventInfoEXT$fEqDisplayEventTypeEXT$fOrdDisplayEventTypeEXT$fStorableDisplayEventTypeEXT$fZeroDisplayEventTypeEXT$fEqDisplayEventInfoEXT#$fShowSwapchainCounterCreateInfoEXT&$fGenericSwapchainCounterCreateInfoEXT$fShowDisplayEventInfoEXT$fGenericDisplayEventInfoEXT$fShowDeviceEventInfoEXT$fGenericDeviceEventInfoEXT$fShowDisplayPowerInfoEXT$fGenericDisplayPowerInfoEXTIDirectFBSurface#EXT_DIRECTFB_SURFACE_EXTENSION_NAME!EXT_DIRECTFB_SURFACE_SPEC_VERSIONDirectFBSurfaceCreateFlagsEXT'$sel:flags:DirectFBSurfaceCreateInfoEXT%$sel:dfb:DirectFBSurfaceCreateInfoEXT)$sel:surface:DirectFBSurfaceCreateInfoEXT#$fReadDirectFBSurfaceCreateFlagsEXT#$fShowDirectFBSurfaceCreateFlagsEXT"$fZeroDirectFBSurfaceCreateInfoEXT&$fStorableDirectFBSurfaceCreateInfoEXT)$fFromCStructDirectFBSurfaceCreateInfoEXT'$fToCStructDirectFBSurfaceCreateInfoEXT!$fEqDirectFBSurfaceCreateFlagsEXT"$fOrdDirectFBSurfaceCreateFlagsEXT'$fStorableDirectFBSurfaceCreateFlagsEXT#$fZeroDirectFBSurfaceCreateFlagsEXT#$fBitsDirectFBSurfaceCreateFlagsEXT $fEqDirectFBSurfaceCreateInfoEXT"$fShowDirectFBSurfaceCreateInfoEXT%$fGenericDirectFBSurfaceCreateInfoEXT&EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME$EXT_DIRECT_MODE_DISPLAY_SPEC_VERSIONEXT_DEBUG_UTILS_EXTENSION_NAMEEXT_DEBUG_UTILS_SPEC_VERSION$PFN_vkDebugUtilsMessengerCallbackEXT#FN_vkDebugUtilsMessengerCallbackEXT'DebugUtilsMessengerCallbackDataFlagsEXT!DebugUtilsMessengerCreateFlagsEXT-$sel:flags:DebugUtilsMessengerCallbackDataEXT5$sel:messageIdName:DebugUtilsMessengerCallbackDataEXT7$sel:messageIdNumber:DebugUtilsMessengerCallbackDataEXT/$sel:message:DebugUtilsMessengerCallbackDataEXT3$sel:queueLabels:DebugUtilsMessengerCallbackDataEXT4$sel:cmdBufLabels:DebugUtilsMessengerCallbackDataEXT/$sel:objects:DebugUtilsMessengerCallbackDataEXT+$sel:flags:DebugUtilsMessengerCreateInfoEXT5$sel:messageSeverity:DebugUtilsMessengerCreateInfoEXT1$sel:messageType:DebugUtilsMessengerCreateInfoEXT5$sel:pfnUserCallback:DebugUtilsMessengerCreateInfoEXT.$sel:userData:DebugUtilsMessengerCreateInfoEXT!$sel:labelName:DebugUtilsLabelEXT$sel:color:DebugUtilsLabelEXT*$sel:objectType:DebugUtilsObjectTagInfoEXT,$sel:objectHandle:DebugUtilsObjectTagInfoEXT'$sel:tagName:DebugUtilsObjectTagInfoEXT'$sel:tagSize:DebugUtilsObjectTagInfoEXT#$sel:tag:DebugUtilsObjectTagInfoEXT+$sel:objectType:DebugUtilsObjectNameInfoEXT-$sel:objectHandle:DebugUtilsObjectNameInfoEXT+$sel:objectName:DebugUtilsObjectNameInfoEXT,DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT+DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT(DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT*DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT,DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT)DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT,DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXTcmdUseDebugUtilsLabelEXTwithDebugUtilsMessengerEXT!$fZeroDebugUtilsObjectNameInfoEXT($fFromCStructDebugUtilsObjectNameInfoEXT&$fToCStructDebugUtilsObjectNameInfoEXT $fZeroDebugUtilsObjectTagInfoEXT$$fStorableDebugUtilsObjectTagInfoEXT'$fFromCStructDebugUtilsObjectTagInfoEXT%$fToCStructDebugUtilsObjectTagInfoEXT$fZeroDebugUtilsLabelEXT$fFromCStructDebugUtilsLabelEXT$fToCStructDebugUtilsLabelEXT'$fReadDebugUtilsMessengerCreateFlagsEXT'$fShowDebugUtilsMessengerCreateFlagsEXT-$fReadDebugUtilsMessengerCallbackDataFlagsEXT-$fShowDebugUtilsMessengerCallbackDataFlagsEXT($fZeroDebugUtilsMessengerCallbackDataEXT/$fFromCStructDebugUtilsMessengerCallbackDataEXT-$fToCStructDebugUtilsMessengerCallbackDataEXT*$fReadDebugUtilsMessageSeverityFlagBitsEXT*$fShowDebugUtilsMessageSeverityFlagBitsEXT&$fReadDebugUtilsMessageTypeFlagBitsEXT&$fShowDebugUtilsMessageTypeFlagBitsEXT&$fZeroDebugUtilsMessengerCreateInfoEXT*$fStorableDebugUtilsMessengerCreateInfoEXT-$fFromCStructDebugUtilsMessengerCreateInfoEXT+$fToCStructDebugUtilsMessengerCreateInfoEXT%$fEqDebugUtilsMessengerCreateFlagsEXT&$fOrdDebugUtilsMessengerCreateFlagsEXT+$fStorableDebugUtilsMessengerCreateFlagsEXT'$fZeroDebugUtilsMessengerCreateFlagsEXT'$fBitsDebugUtilsMessengerCreateFlagsEXT+$fEqDebugUtilsMessengerCallbackDataFlagsEXT,$fOrdDebugUtilsMessengerCallbackDataFlagsEXT1$fStorableDebugUtilsMessengerCallbackDataFlagsEXT-$fZeroDebugUtilsMessengerCallbackDataFlagsEXT-$fBitsDebugUtilsMessengerCallbackDataFlagsEXT($fEqDebugUtilsMessageSeverityFlagBitsEXT)$fOrdDebugUtilsMessageSeverityFlagBitsEXT.$fStorableDebugUtilsMessageSeverityFlagBitsEXT*$fZeroDebugUtilsMessageSeverityFlagBitsEXT*$fBitsDebugUtilsMessageSeverityFlagBitsEXT$$fEqDebugUtilsMessageTypeFlagBitsEXT%$fOrdDebugUtilsMessageTypeFlagBitsEXT*$fStorableDebugUtilsMessageTypeFlagBitsEXT&$fZeroDebugUtilsMessageTypeFlagBitsEXT&$fBitsDebugUtilsMessageTypeFlagBitsEXT($fShowDebugUtilsMessengerCallbackDataEXT+$fGenericDebugUtilsMessengerCallbackDataEXT&$fShowDebugUtilsMessengerCreateInfoEXT)$fGenericDebugUtilsMessengerCreateInfoEXT$fShowDebugUtilsLabelEXT$fGenericDebugUtilsLabelEXT $fShowDebugUtilsObjectTagInfoEXT#$fGenericDebugUtilsObjectTagInfoEXT!$fShowDebugUtilsObjectNameInfoEXT$$fGenericDebugUtilsObjectNameInfoEXTEXT_DEBUG_REPORT_EXTENSION_NAMEEXT_DEBUG_REPORT_SPEC_VERSIONPFN_vkDebugReportCallbackEXTFN_vkDebugReportCallbackEXT+$sel:flags:DebugReportCallbackCreateInfoEXT1$sel:pfnCallback:DebugReportCallbackCreateInfoEXT.$sel:userData:DebugReportCallbackCreateInfoEXT7DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT7DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT5DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT1DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT-DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT(DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT6DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT*DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT(DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT)DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT(DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT+DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT,DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT$DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT2DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT%DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT(DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT,DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT+DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT*DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT'DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT(DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT'DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT"DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT"DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT#DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT*DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT"DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT+DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT&DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT"DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT#DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT%DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT$DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXTDEBUG_REPORT_DEBUG_BIT_EXTDEBUG_REPORT_ERROR_BIT_EXT(DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXTDEBUG_REPORT_WARNING_BIT_EXT DEBUG_REPORT_INFORMATION_BIT_EXT+STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXTwithDebugReportCallbackEXT$fReadDebugReportFlagBitsEXT$fShowDebugReportFlagBitsEXT$fReadDebugReportObjectTypeEXT$fShowDebugReportObjectTypeEXT&$fZeroDebugReportCallbackCreateInfoEXT*$fStorableDebugReportCallbackCreateInfoEXT-$fFromCStructDebugReportCallbackCreateInfoEXT+$fToCStructDebugReportCallbackCreateInfoEXT$fEqDebugReportFlagBitsEXT$fOrdDebugReportFlagBitsEXT $fStorableDebugReportFlagBitsEXT$fZeroDebugReportFlagBitsEXT$fBitsDebugReportFlagBitsEXT$fEqDebugReportObjectTypeEXT$fOrdDebugReportObjectTypeEXT"$fStorableDebugReportObjectTypeEXT$fZeroDebugReportObjectTypeEXT&$fShowDebugReportCallbackCreateInfoEXT)$fGenericDebugReportCallbackCreateInfoEXTEXT_DEBUG_MARKER_EXTENSION_NAMEEXT_DEBUG_MARKER_SPEC_VERSION($sel:markerName:DebugMarkerMarkerInfoEXT#$sel:color:DebugMarkerMarkerInfoEXT+$sel:objectType:DebugMarkerObjectTagInfoEXT'$sel:object:DebugMarkerObjectTagInfoEXT($sel:tagName:DebugMarkerObjectTagInfoEXT($sel:tagSize:DebugMarkerObjectTagInfoEXT$$sel:tag:DebugMarkerObjectTagInfoEXT,$sel:objectType:DebugMarkerObjectNameInfoEXT($sel:object:DebugMarkerObjectNameInfoEXT,$sel:objectName:DebugMarkerObjectNameInfoEXT"$fZeroDebugMarkerObjectNameInfoEXT)$fFromCStructDebugMarkerObjectNameInfoEXT'$fToCStructDebugMarkerObjectNameInfoEXT!$fZeroDebugMarkerObjectTagInfoEXT%$fStorableDebugMarkerObjectTagInfoEXT($fFromCStructDebugMarkerObjectTagInfoEXT&$fToCStructDebugMarkerObjectTagInfoEXT$fZeroDebugMarkerMarkerInfoEXT%$fFromCStructDebugMarkerMarkerInfoEXT#$fToCStructDebugMarkerMarkerInfoEXT$fShowDebugMarkerMarkerInfoEXT!$fGenericDebugMarkerMarkerInfoEXT!$fShowDebugMarkerObjectTagInfoEXT$$fGenericDebugMarkerObjectTagInfoEXT"$fShowDebugMarkerObjectNameInfoEXT%$fGenericDebugMarkerObjectNameInfoEXT'EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME%EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION%AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME#AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION>$sel:localDimmingEnable:SwapchainDisplayNativeHdrCreateInfoAMD?$sel:localDimmingSupport:DisplayNativeHdrSurfaceCapabilitiesAMD,$fZeroDisplayNativeHdrSurfaceCapabilitiesAMD0$fStorableDisplayNativeHdrSurfaceCapabilitiesAMD3$fFromCStructDisplayNativeHdrSurfaceCapabilitiesAMD1$fToCStructDisplayNativeHdrSurfaceCapabilitiesAMD,$fZeroSwapchainDisplayNativeHdrCreateInfoAMD0$fStorableSwapchainDisplayNativeHdrCreateInfoAMD3$fFromCStructSwapchainDisplayNativeHdrCreateInfoAMD1$fToCStructSwapchainDisplayNativeHdrCreateInfoAMD*$fEqDisplayNativeHdrSurfaceCapabilitiesAMD*$fEqSwapchainDisplayNativeHdrCreateInfoAMD,$fShowSwapchainDisplayNativeHdrCreateInfoAMD/$fGenericSwapchainDisplayNativeHdrCreateInfoAMD,$fShowDisplayNativeHdrSurfaceCapabilitiesAMD/$fGenericDisplayNativeHdrSurfaceCapabilitiesAMD-$sel:flags:DescriptorUpdateTemplateCreateInfo?$sel:descriptorUpdateEntries:DescriptorUpdateTemplateCreateInfo4$sel:templateType:DescriptorUpdateTemplateCreateInfo;$sel:descriptorSetLayout:DescriptorUpdateTemplateCreateInfo9$sel:pipelineBindPoint:DescriptorUpdateTemplateCreateInfo6$sel:pipelineLayout:DescriptorUpdateTemplateCreateInfo+$sel:set:DescriptorUpdateTemplateCreateInfo-$sel:dstBinding:DescriptorUpdateTemplateEntry2$sel:dstArrayElement:DescriptorUpdateTemplateEntry2$sel:descriptorCount:DescriptorUpdateTemplateEntry1$sel:descriptorType:DescriptorUpdateTemplateEntry)$sel:offset:DescriptorUpdateTemplateEntry)$sel:stride:DescriptorUpdateTemplateEntrywithDescriptorUpdateTemplate#$fZeroDescriptorUpdateTemplateEntry'$fStorableDescriptorUpdateTemplateEntry*$fFromCStructDescriptorUpdateTemplateEntry($fToCStructDescriptorUpdateTemplateEntry($fZeroDescriptorUpdateTemplateCreateInfo/$fFromCStructDescriptorUpdateTemplateCreateInfo-$fToCStructDescriptorUpdateTemplateCreateInfo!$fEqDescriptorUpdateTemplateEntry($fShowDescriptorUpdateTemplateCreateInfo+$fGenericDescriptorUpdateTemplateCreateInfo#$fShowDescriptorUpdateTemplateEntry&$fGenericDescriptorUpdateTemplateEntry#$sel:flags:PipelineLayoutCreateInfo($sel:setLayouts:PipelineLayoutCreateInfo0$sel:pushConstantRanges:PipelineLayoutCreateInfo!$sel:stageFlags:PushConstantRange$sel:offset:PushConstantRange$sel:size:PushConstantRangewithPipelineLayout$fZeroPushConstantRange$fStorablePushConstantRange$fFromCStructPushConstantRange$fToCStructPushConstantRange$fZeroPipelineLayoutCreateInfo%$fFromCStructPipelineLayoutCreateInfo#$fToCStructPipelineLayoutCreateInfo$fEqPushConstantRange$fShowPipelineLayoutCreateInfo!$fGenericPipelineLayoutCreateInfo$fShowPushConstantRange$fGenericPushConstantRange"$sel:flags:PipelineCacheCreateInfo,$sel:initialDataSize:PipelineCacheCreateInfo($sel:initialData:PipelineCacheCreateInfowithPipelineCache$fZeroPipelineCacheCreateInfo!$fStorablePipelineCacheCreateInfo$$fFromCStructPipelineCacheCreateInfo"$fToCStructPipelineCacheCreateInfo$fShowPipelineCacheCreateInfo $fGenericPipelineCacheCreateInfo$sel:size:MemoryRequirements!$sel:alignment:MemoryRequirements&$sel:memoryTypeBits:MemoryRequirements$fZeroMemoryRequirements$fStorableMemoryRequirements$fFromCStructMemoryRequirements$fToCStructMemoryRequirements$fEqMemoryRequirements$fShowMemoryRequirements$fGenericMemoryRequirements$sel:layerName:LayerProperties $sel:specVersion:LayerProperties*$sel:implementationVersion:LayerProperties $sel:description:LayerProperties$fZeroLayerProperties$fStorableLayerProperties$fFromCStructLayerProperties$fToCStructLayerProperties$fShowLayerProperties$fGenericLayerProperties&$sel:extensionName:ExtensionProperties$$sel:specVersion:ExtensionProperties$fZeroExtensionProperties$fStorableExtensionProperties $fFromCStructExtensionProperties$fToCStructExtensionProperties$fShowExtensionProperties$fGenericExtensionProperties$sel:flags:EventCreateInfo withEvent$fZeroEventCreateInfo$fStorableEventCreateInfo$fFromCStructEventCreateInfo$fToCStructEventCreateInfo$fEqEventCreateInfo$fShowEventCreateInfo$fGenericEventCreateInfo $sel:flags:CommandPoolCreateInfo+$sel:queueFamilyIndex:CommandPoolCreateInfowithCommandPool$fZeroCommandPoolCreateInfo$fStorableCommandPoolCreateInfo"$fFromCStructCommandPoolCreateInfo $fToCStructCommandPoolCreateInfo$fEqCommandPoolCreateInfo$fShowCommandPoolCreateInfo$fGenericCommandPoolCreateInfo$sel:flags:BufferViewCreateInfo $sel:buffer:BufferViewCreateInfo $sel:format:BufferViewCreateInfo $sel:offset:BufferViewCreateInfo$sel:range:BufferViewCreateInfowithBufferView$fZeroBufferViewCreateInfo$fStorableBufferViewCreateInfo!$fFromCStructBufferViewCreateInfo$fToCStructBufferViewCreateInfo$fEqBufferViewCreateInfo$fShowBufferViewCreateInfo$fGenericBufferViewCreateInfo>$sel:exportFromImportedHandleTypes:ExternalSemaphoreProperties6$sel:compatibleHandleTypes:ExternalSemaphoreProperties:$sel:externalSemaphoreFeatures:ExternalSemaphoreProperties-$sel:next:PhysicalDeviceExternalSemaphoreInfo3$sel:handleType:PhysicalDeviceExternalSemaphoreInfo)$fZeroPhysicalDeviceExternalSemaphoreInfo0$fFromCStructPhysicalDeviceExternalSemaphoreInfo.$fToCStructPhysicalDeviceExternalSemaphoreInfo/$fExtensiblePhysicalDeviceExternalSemaphoreInfo!$fZeroExternalSemaphoreProperties%$fStorableExternalSemaphoreProperties($fFromCStructExternalSemaphoreProperties&$fToCStructExternalSemaphoreProperties$fEqExternalSemaphoreProperties!$fShowExternalSemaphoreProperties$$fGenericExternalSemaphoreProperties)$fShowPhysicalDeviceExternalSemaphoreInfo,$fGenericPhysicalDeviceExternalSemaphoreInfo2KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME0KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSIONExternalSemaphorePropertiesKHR&PhysicalDeviceExternalSemaphoreInfoKHR#ExternalSemaphoreFeatureFlagBitsKHR&ExternalSemaphoreHandleTypeFlagBitsKHR ExternalSemaphoreFeatureFlagsKHR#ExternalSemaphoreHandleTypeFlagsKHR-EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR-EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR.EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR2EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR7EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR3EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR0EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR0STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR:STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR$sel:next:BindImageMemoryInfo$sel:image:BindImageMemoryInfo$sel:memory:BindImageMemoryInfo%$sel:memoryOffset:BindImageMemoryInfo$sel:next:BindBufferMemoryInfo $sel:buffer:BindBufferMemoryInfo $sel:memory:BindBufferMemoryInfo&$sel:memoryOffset:BindBufferMemoryInfo$fZeroBindBufferMemoryInfo!$fFromCStructBindBufferMemoryInfo$fToCStructBindBufferMemoryInfo $fExtensibleBindBufferMemoryInfo$fZeroBindImageMemoryInfo $fFromCStructBindImageMemoryInfo$fToCStructBindImageMemoryInfo$fExtensibleBindImageMemoryInfo$fShowBindImageMemoryInfo$fGenericBindImageMemoryInfo$fShowBindBufferMemoryInfo$fGenericBindBufferMemoryInfo KHR_BIND_MEMORY_2_EXTENSION_NAMEKHR_BIND_MEMORY_2_SPEC_VERSIONBindImageMemoryInfoKHRBindBufferMemoryInfoKHRIMAGE_CREATE_ALIAS_BIT_KHR)STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR*STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR$sel:next:BindSparseInfo"$sel:waitSemaphores:BindSparseInfo$sel:bufferBinds:BindSparseInfo$$sel:imageOpaqueBinds:BindSparseInfo$sel:imageBinds:BindSparseInfo$$sel:signalSemaphores:BindSparseInfo$$sel:image:SparseImageMemoryBindInfo$$sel:binds:SparseImageMemoryBindInfo*$sel:image:SparseImageOpaqueMemoryBindInfo*$sel:binds:SparseImageOpaqueMemoryBindInfo&$sel:buffer:SparseBufferMemoryBindInfo%$sel:binds:SparseBufferMemoryBindInfo&$sel:subresource:SparseImageMemoryBind!$sel:offset:SparseImageMemoryBind!$sel:extent:SparseImageMemoryBind!$sel:memory:SparseImageMemoryBind'$sel:memoryOffset:SparseImageMemoryBind $sel:flags:SparseImageMemoryBind$$sel:resourceOffset:SparseMemoryBind$sel:size:SparseMemoryBind$sel:memory:SparseMemoryBind"$sel:memoryOffset:SparseMemoryBind$sel:flags:SparseMemoryBind $sel:aspectMask:ImageSubresource$sel:mipLevel:ImageSubresource $sel:arrayLayer:ImageSubresource3$sel:formatProperties:SparseImageMemoryRequirements7$sel:imageMipTailFirstLod:SparseImageMemoryRequirements3$sel:imageMipTailSize:SparseImageMemoryRequirements5$sel:imageMipTailOffset:SparseImageMemoryRequirements5$sel:imageMipTailStride:SparseImageMemoryRequirements+$sel:aspectMask:SparseImageFormatProperties1$sel:imageGranularity:SparseImageFormatProperties&$sel:flags:SparseImageFormatProperties!$fZeroSparseImageFormatProperties($fFromCStructSparseImageFormatProperties&$fToCStructSparseImageFormatProperties#$fZeroSparseImageMemoryRequirements*$fFromCStructSparseImageMemoryRequirements($fToCStructSparseImageMemoryRequirements$fZeroImageSubresource$fStorableImageSubresource$fFromCStructImageSubresource$fToCStructImageSubresource$fZeroSparseMemoryBind$fStorableSparseMemoryBind$fFromCStructSparseMemoryBind$fToCStructSparseMemoryBind$fZeroSparseImageMemoryBind"$fFromCStructSparseImageMemoryBind $fToCStructSparseImageMemoryBind $fZeroSparseBufferMemoryBindInfo'$fFromCStructSparseBufferMemoryBindInfo%$fToCStructSparseBufferMemoryBindInfo%$fZeroSparseImageOpaqueMemoryBindInfo,$fFromCStructSparseImageOpaqueMemoryBindInfo*$fToCStructSparseImageOpaqueMemoryBindInfo$fZeroSparseImageMemoryBindInfo&$fFromCStructSparseImageMemoryBindInfo$$fToCStructSparseImageMemoryBindInfo$fZeroBindSparseInfo$fFromCStructBindSparseInfo$fToCStructBindSparseInfo$fExtensibleBindSparseInfo$fEqImageSubresource$fEqSparseMemoryBind$fShowBindSparseInfo$fGenericBindSparseInfo$fShowSparseImageMemoryBindInfo"$fGenericSparseImageMemoryBindInfo%$fShowSparseImageOpaqueMemoryBindInfo($fGenericSparseImageOpaqueMemoryBindInfo $fShowSparseBufferMemoryBindInfo#$fGenericSparseBufferMemoryBindInfo$fShowSparseImageMemoryBind$fGenericSparseImageMemoryBind$fShowSparseMemoryBind$fGenericSparseMemoryBind$fShowImageSubresource$fGenericImageSubresource#$fShowSparseImageMemoryRequirements&$fGenericSparseImageMemoryRequirements!$fShowSparseImageFormatProperties$$fGenericSparseImageFormatProperties6$sel:memoryRequirements:SparseImageMemoryRequirements2$sel:next:MemoryRequirements2+$sel:memoryRequirements:MemoryRequirements2-$sel:image:ImageSparseMemoryRequirementsInfo2&$sel:next:ImageMemoryRequirementsInfo2'$sel:image:ImageMemoryRequirementsInfo2)$sel:buffer:BufferMemoryRequirementsInfo2#$fZeroBufferMemoryRequirementsInfo2'$fStorableBufferMemoryRequirementsInfo2*$fFromCStructBufferMemoryRequirementsInfo2($fToCStructBufferMemoryRequirementsInfo2"$fZeroImageMemoryRequirementsInfo2)$fFromCStructImageMemoryRequirementsInfo2'$fToCStructImageMemoryRequirementsInfo2($fExtensibleImageMemoryRequirementsInfo2($fZeroImageSparseMemoryRequirementsInfo2,$fStorableImageSparseMemoryRequirementsInfo2/$fFromCStructImageSparseMemoryRequirementsInfo2-$fToCStructImageSparseMemoryRequirementsInfo2$fZeroMemoryRequirements2 $fFromCStructMemoryRequirements2$fToCStructMemoryRequirements2$fExtensibleMemoryRequirements2$$fZeroSparseImageMemoryRequirements2+$fFromCStructSparseImageMemoryRequirements2)$fToCStructSparseImageMemoryRequirements2!$fEqBufferMemoryRequirementsInfo2&$fEqImageSparseMemoryRequirementsInfo2$$fShowSparseImageMemoryRequirements2'$fGenericSparseImageMemoryRequirements2$fShowMemoryRequirements2$fGenericMemoryRequirements2($fShowImageSparseMemoryRequirementsInfo2+$fGenericImageSparseMemoryRequirementsInfo2"$fShowImageMemoryRequirementsInfo2%$fGenericImageMemoryRequirementsInfo2#$fShowBufferMemoryRequirementsInfo2&$fGenericBufferMemoryRequirementsInfo2,KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME*KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION!SparseImageMemoryRequirements2KHR%ImageSparseMemoryRequirementsInfo2KHRImageMemoryRequirementsInfo2KHR BufferMemoryRequirementsInfo2KHR5STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR(STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR:STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR3STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR4STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR $sel:next:ShaderModuleCreateInfo!$sel:flags:ShaderModuleCreateInfo $sel:code:ShaderModuleCreateInfowithShaderModule$fZeroShaderModuleCreateInfo#$fFromCStructShaderModuleCreateInfo!$fToCStructShaderModuleCreateInfo"$fExtensibleShaderModuleCreateInfo$fShowShaderModuleCreateInfo$fGenericShaderModuleCreateInfo$sel:next:SamplerCreateInfo$sel:flags:SamplerCreateInfo $sel:magFilter:SamplerCreateInfo $sel:minFilter:SamplerCreateInfo!$sel:mipmapMode:SamplerCreateInfo#$sel:addressModeU:SamplerCreateInfo#$sel:addressModeV:SamplerCreateInfo#$sel:addressModeW:SamplerCreateInfo!$sel:mipLodBias:SamplerCreateInfo'$sel:anisotropyEnable:SamplerCreateInfo$$sel:maxAnisotropy:SamplerCreateInfo$$sel:compareEnable:SamplerCreateInfo $sel:compareOp:SamplerCreateInfo$sel:minLod:SamplerCreateInfo$sel:maxLod:SamplerCreateInfo"$sel:borderColor:SamplerCreateInfo.$sel:unnormalizedCoordinates:SamplerCreateInfo withSampler$fZeroSamplerCreateInfo$fFromCStructSamplerCreateInfo$fToCStructSamplerCreateInfo$fExtensibleSamplerCreateInfo$fShowSamplerCreateInfo$fGenericSamplerCreateInfo$sel:next:SemaphoreCreateInfo$sel:flags:SemaphoreCreateInfo withSemaphore$fZeroSemaphoreCreateInfo $fFromCStructSemaphoreCreateInfo$fToCStructSemaphoreCreateInfo$fExtensibleSemaphoreCreateInfo$fShowSemaphoreCreateInfo$fGenericSemaphoreCreateInfo$sel:next:SubmitInfo$sel:waitSemaphores:SubmitInfo $sel:waitDstStageMask:SubmitInfo$sel:commandBuffers:SubmitInfo $sel:signalSemaphores:SubmitInfoqueueWaitIdleSafedeviceWaitIdleSafe$fZeroSubmitInfo$fFromCStructSubmitInfo$fToCStructSubmitInfo$fExtensibleSubmitInfo$fShowSubmitInfo$fGenericSubmitInfo$sel:next:QueryPoolCreateInfo$sel:flags:QueryPoolCreateInfo"$sel:queryType:QueryPoolCreateInfo#$sel:queryCount:QueryPoolCreateInfo+$sel:pipelineStatistics:QueryPoolCreateInfo withQueryPool$fZeroQueryPoolCreateInfo $fFromCStructQueryPoolCreateInfo$fToCStructQueryPoolCreateInfo$fExtensibleQueryPoolCreateInfo$fShowQueryPoolCreateInfo$fGenericQueryPoolCreateInfo$$sel:next:GraphicsPipelineCreateInfo%$sel:flags:GraphicsPipelineCreateInfo&$sel:stages:GraphicsPipelineCreateInfo0$sel:vertexInputState:GraphicsPipelineCreateInfo2$sel:inputAssemblyState:GraphicsPipelineCreateInfo1$sel:tessellationState:GraphicsPipelineCreateInfo-$sel:viewportState:GraphicsPipelineCreateInfo2$sel:rasterizationState:GraphicsPipelineCreateInfo0$sel:multisampleState:GraphicsPipelineCreateInfo1$sel:depthStencilState:GraphicsPipelineCreateInfo/$sel:colorBlendState:GraphicsPipelineCreateInfo,$sel:dynamicState:GraphicsPipelineCreateInfo&$sel:layout:GraphicsPipelineCreateInfo*$sel:renderPass:GraphicsPipelineCreateInfo'$sel:subpass:GraphicsPipelineCreateInfo2$sel:basePipelineHandle:GraphicsPipelineCreateInfo1$sel:basePipelineIndex:GraphicsPipelineCreateInfo.$sel:flags:PipelineDepthStencilStateCreateInfo8$sel:depthTestEnable:PipelineDepthStencilStateCreateInfo9$sel:depthWriteEnable:PipelineDepthStencilStateCreateInfo7$sel:depthCompareOp:PipelineDepthStencilStateCreateInfo>$sel:depthBoundsTestEnable:PipelineDepthStencilStateCreateInfo:$sel:stencilTestEnable:PipelineDepthStencilStateCreateInfo.$sel:front:PipelineDepthStencilStateCreateInfo-$sel:back:PipelineDepthStencilStateCreateInfo7$sel:minDepthBounds:PipelineDepthStencilStateCreateInfo7$sel:maxDepthBounds:PipelineDepthStencilStateCreateInfo$sel:failOp:StencilOpState$sel:passOp:StencilOpState$sel:depthFailOp:StencilOpState$sel:compareOp:StencilOpState$sel:compareMask:StencilOpState$sel:writeMask:StencilOpState$sel:reference:StencilOpState)$sel:flags:PipelineDynamicStateCreateInfo1$sel:dynamicStates:PipelineDynamicStateCreateInfo+$sel:next:PipelineColorBlendStateCreateInfo,$sel:flags:PipelineColorBlendStateCreateInfo4$sel:logicOpEnable:PipelineColorBlendStateCreateInfo.$sel:logicOp:PipelineColorBlendStateCreateInfo2$sel:attachments:PipelineColorBlendStateCreateInfo5$sel:blendConstants:PipelineColorBlendStateCreateInfo2$sel:blendEnable:PipelineColorBlendAttachmentState:$sel:srcColorBlendFactor:PipelineColorBlendAttachmentState:$sel:dstColorBlendFactor:PipelineColorBlendAttachmentState3$sel:colorBlendOp:PipelineColorBlendAttachmentState:$sel:srcAlphaBlendFactor:PipelineColorBlendAttachmentState:$sel:dstAlphaBlendFactor:PipelineColorBlendAttachmentState3$sel:alphaBlendOp:PipelineColorBlendAttachmentState5$sel:colorWriteMask:PipelineColorBlendAttachmentState,$sel:next:PipelineMultisampleStateCreateInfo-$sel:flags:PipelineMultisampleStateCreateInfo<$sel:rasterizationSamples:PipelineMultisampleStateCreateInfo;$sel:sampleShadingEnable:PipelineMultisampleStateCreateInfo8$sel:minSampleShading:PipelineMultisampleStateCreateInfo2$sel:sampleMask:PipelineMultisampleStateCreateInfo=$sel:alphaToCoverageEnable:PipelineMultisampleStateCreateInfo8$sel:alphaToOneEnable:PipelineMultisampleStateCreateInfo.$sel:next:PipelineRasterizationStateCreateInfo/$sel:flags:PipelineRasterizationStateCreateInfo:$sel:depthClampEnable:PipelineRasterizationStateCreateInfoA$sel:rasterizerDiscardEnable:PipelineRasterizationStateCreateInfo5$sel:polygonMode:PipelineRasterizationStateCreateInfo2$sel:cullMode:PipelineRasterizationStateCreateInfo3$sel:frontFace:PipelineRasterizationStateCreateInfo9$sel:depthBiasEnable:PipelineRasterizationStateCreateInfoA$sel:depthBiasConstantFactor:PipelineRasterizationStateCreateInfo8$sel:depthBiasClamp:PipelineRasterizationStateCreateInfo>$sel:depthBiasSlopeFactor:PipelineRasterizationStateCreateInfo3$sel:lineWidth:PipelineRasterizationStateCreateInfo)$sel:next:PipelineViewportStateCreateInfo*$sel:flags:PipelineViewportStateCreateInfo2$sel:viewportCount:PipelineViewportStateCreateInfo.$sel:viewports:PipelineViewportStateCreateInfo1$sel:scissorCount:PipelineViewportStateCreateInfo-$sel:scissors:PipelineViewportStateCreateInfo-$sel:next:PipelineTessellationStateCreateInfo.$sel:flags:PipelineTessellationStateCreateInfo;$sel:patchControlPoints:PipelineTessellationStateCreateInfo/$sel:flags:PipelineInputAssemblyStateCreateInfo2$sel:topology:PipelineInputAssemblyStateCreateInfo@$sel:primitiveRestartEnable:PipelineInputAssemblyStateCreateInfo,$sel:next:PipelineVertexInputStateCreateInfo-$sel:flags:PipelineVertexInputStateCreateInfoA$sel:vertexBindingDescriptions:PipelineVertexInputStateCreateInfoC$sel:vertexAttributeDescriptions:PipelineVertexInputStateCreateInfo-$sel:location:VertexInputAttributeDescription,$sel:binding:VertexInputAttributeDescription+$sel:format:VertexInputAttributeDescription+$sel:offset:VertexInputAttributeDescription*$sel:binding:VertexInputBindingDescription)$sel:stride:VertexInputBindingDescription,$sel:inputRate:VertexInputBindingDescription#$sel:next:ComputePipelineCreateInfo$$sel:flags:ComputePipelineCreateInfo$$sel:stage:ComputePipelineCreateInfo%$sel:layout:ComputePipelineCreateInfo1$sel:basePipelineHandle:ComputePipelineCreateInfo0$sel:basePipelineIndex:ComputePipelineCreateInfo'$sel:next:PipelineShaderStageCreateInfo($sel:flags:PipelineShaderStageCreateInfo($sel:stage:PipelineShaderStageCreateInfo*$sel:module':PipelineShaderStageCreateInfo'$sel:name:PipelineShaderStageCreateInfo5$sel:specializationInfo:PipelineShaderStageCreateInfo"$sel:mapEntries:SpecializationInfo $sel:dataSize:SpecializationInfo$sel:data':SpecializationInfo&$sel:constantID:SpecializationMapEntry"$sel:offset:SpecializationMapEntry $sel:size:SpecializationMapEntry$sel:x:Viewport$sel:y:Viewport$sel:width:Viewport$sel:height:Viewport$sel:minDepth:Viewport$sel:maxDepth:ViewportwithGraphicsPipelineswithComputePipelines$fZeroViewport$fStorableViewport$fFromCStructViewport$fToCStructViewport$fZeroSpecializationMapEntry $fStorableSpecializationMapEntry#$fFromCStructSpecializationMapEntry!$fToCStructSpecializationMapEntry$fZeroSpecializationInfo$fFromCStructSpecializationInfo$fToCStructSpecializationInfo#$fZeroPipelineShaderStageCreateInfo*$fFromCStructPipelineShaderStageCreateInfo($fToCStructPipelineShaderStageCreateInfo)$fExtensiblePipelineShaderStageCreateInfo$fZeroComputePipelineCreateInfo&$fFromCStructComputePipelineCreateInfo$$fToCStructComputePipelineCreateInfo%$fExtensibleComputePipelineCreateInfo#$fZeroVertexInputBindingDescription'$fStorableVertexInputBindingDescription*$fFromCStructVertexInputBindingDescription($fToCStructVertexInputBindingDescription%$fZeroVertexInputAttributeDescription)$fStorableVertexInputAttributeDescription,$fFromCStructVertexInputAttributeDescription*$fToCStructVertexInputAttributeDescription($fZeroPipelineVertexInputStateCreateInfo/$fFromCStructPipelineVertexInputStateCreateInfo-$fToCStructPipelineVertexInputStateCreateInfo.$fExtensiblePipelineVertexInputStateCreateInfo*$fZeroPipelineInputAssemblyStateCreateInfo.$fStorablePipelineInputAssemblyStateCreateInfo1$fFromCStructPipelineInputAssemblyStateCreateInfo/$fToCStructPipelineInputAssemblyStateCreateInfo)$fZeroPipelineTessellationStateCreateInfo0$fFromCStructPipelineTessellationStateCreateInfo.$fToCStructPipelineTessellationStateCreateInfo/$fExtensiblePipelineTessellationStateCreateInfo%$fZeroPipelineViewportStateCreateInfo,$fFromCStructPipelineViewportStateCreateInfo*$fToCStructPipelineViewportStateCreateInfo+$fExtensiblePipelineViewportStateCreateInfo*$fZeroPipelineRasterizationStateCreateInfo1$fFromCStructPipelineRasterizationStateCreateInfo/$fToCStructPipelineRasterizationStateCreateInfo0$fExtensiblePipelineRasterizationStateCreateInfo($fZeroPipelineMultisampleStateCreateInfo/$fFromCStructPipelineMultisampleStateCreateInfo-$fToCStructPipelineMultisampleStateCreateInfo.$fExtensiblePipelineMultisampleStateCreateInfo'$fZeroPipelineColorBlendAttachmentState+$fStorablePipelineColorBlendAttachmentState.$fFromCStructPipelineColorBlendAttachmentState,$fToCStructPipelineColorBlendAttachmentState'$fZeroPipelineColorBlendStateCreateInfo.$fFromCStructPipelineColorBlendStateCreateInfo,$fToCStructPipelineColorBlendStateCreateInfo-$fExtensiblePipelineColorBlendStateCreateInfo$$fZeroPipelineDynamicStateCreateInfo+$fFromCStructPipelineDynamicStateCreateInfo)$fToCStructPipelineDynamicStateCreateInfo$fZeroStencilOpState$fStorableStencilOpState$fFromCStructStencilOpState$fToCStructStencilOpState)$fZeroPipelineDepthStencilStateCreateInfo0$fFromCStructPipelineDepthStencilStateCreateInfo.$fToCStructPipelineDepthStencilStateCreateInfo $fZeroGraphicsPipelineCreateInfo'$fFromCStructGraphicsPipelineCreateInfo%$fToCStructGraphicsPipelineCreateInfo&$fExtensibleGraphicsPipelineCreateInfo $fEqViewport$fEqSpecializationMapEntry!$fEqVertexInputBindingDescription#$fEqVertexInputAttributeDescription($fEqPipelineInputAssemblyStateCreateInfo%$fEqPipelineColorBlendAttachmentState$fEqStencilOpState $fShowGraphicsPipelineCreateInfo#$fGenericGraphicsPipelineCreateInfo)$fShowPipelineDepthStencilStateCreateInfo,$fGenericPipelineDepthStencilStateCreateInfo$fShowStencilOpState$fGenericStencilOpState$$fShowPipelineDynamicStateCreateInfo'$fGenericPipelineDynamicStateCreateInfo'$fShowPipelineColorBlendStateCreateInfo*$fGenericPipelineColorBlendStateCreateInfo'$fShowPipelineColorBlendAttachmentState*$fGenericPipelineColorBlendAttachmentState($fShowPipelineMultisampleStateCreateInfo+$fGenericPipelineMultisampleStateCreateInfo*$fShowPipelineRasterizationStateCreateInfo-$fGenericPipelineRasterizationStateCreateInfo%$fShowPipelineViewportStateCreateInfo($fGenericPipelineViewportStateCreateInfo)$fShowPipelineTessellationStateCreateInfo,$fGenericPipelineTessellationStateCreateInfo*$fShowPipelineInputAssemblyStateCreateInfo-$fGenericPipelineInputAssemblyStateCreateInfo($fShowPipelineVertexInputStateCreateInfo+$fGenericPipelineVertexInputStateCreateInfo%$fShowVertexInputAttributeDescription($fGenericVertexInputAttributeDescription#$fShowVertexInputBindingDescription&$fGenericVertexInputBindingDescription$fShowComputePipelineCreateInfo"$fGenericComputePipelineCreateInfo#$fShowPipelineShaderStageCreateInfo&$fGenericPipelineShaderStageCreateInfo$fShowSpecializationInfo$fGenericSpecializationInfo$fShowSpecializationMapEntry$fGenericSpecializationMapEntry$fShowViewport$fGenericViewport+NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME)NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSIONIndirectCommandsTokenTypeNVIndirectStateFlagsNVIndirectStateFlagBitsNV"IndirectCommandsLayoutUsageFlagsNV%IndirectCommandsLayoutUsageFlagBitsNV@$sel:pipelineBindPoint:GeneratedCommandsMemoryRequirementsInfoNV7$sel:pipeline:GeneratedCommandsMemoryRequirementsInfoNVE$sel:indirectCommandsLayout:GeneratedCommandsMemoryRequirementsInfoNV@$sel:maxSequencesCount:GeneratedCommandsMemoryRequirementsInfoNV.$sel:pipelineBindPoint:GeneratedCommandsInfoNV%$sel:pipeline:GeneratedCommandsInfoNV3$sel:indirectCommandsLayout:GeneratedCommandsInfoNV$$sel:streams:GeneratedCommandsInfoNV+$sel:sequencesCount:GeneratedCommandsInfoNV-$sel:preprocessBuffer:GeneratedCommandsInfoNV-$sel:preprocessOffset:GeneratedCommandsInfoNV+$sel:preprocessSize:GeneratedCommandsInfoNV1$sel:sequencesCountBuffer:GeneratedCommandsInfoNV1$sel:sequencesCountOffset:GeneratedCommandsInfoNV1$sel:sequencesIndexBuffer:GeneratedCommandsInfoNV1$sel:sequencesIndexOffset:GeneratedCommandsInfoNV-$sel:flags:IndirectCommandsLayoutCreateInfoNV9$sel:pipelineBindPoint:IndirectCommandsLayoutCreateInfoNV.$sel:tokens:IndirectCommandsLayoutCreateInfoNV5$sel:streamStrides:IndirectCommandsLayoutCreateInfoNV,$sel:tokenType:IndirectCommandsLayoutTokenNV)$sel:stream:IndirectCommandsLayoutTokenNV)$sel:offset:IndirectCommandsLayoutTokenNV4$sel:vertexBindingUnit:IndirectCommandsLayoutTokenNV6$sel:vertexDynamicStride:IndirectCommandsLayoutTokenNV=$sel:pushconstantPipelineLayout:IndirectCommandsLayoutTokenNV?$sel:pushconstantShaderStageFlags:IndirectCommandsLayoutTokenNV5$sel:pushconstantOffset:IndirectCommandsLayoutTokenNV3$sel:pushconstantSize:IndirectCommandsLayoutTokenNV5$sel:indirectStateFlags:IndirectCommandsLayoutTokenNV-$sel:indexTypes:IndirectCommandsLayoutTokenNV2$sel:indexTypeValues:IndirectCommandsLayoutTokenNV$$sel:buffer:IndirectCommandsStreamNV$$sel:offset:IndirectCommandsStreamNV)$sel:data':SetStateFlagsIndirectCommandNV4$sel:bufferAddress:BindVertexBufferIndirectCommandNV+$sel:size:BindVertexBufferIndirectCommandNV-$sel:stride:BindVertexBufferIndirectCommandNV3$sel:bufferAddress:BindIndexBufferIndirectCommandNV*$sel:size:BindIndexBufferIndirectCommandNV/$sel:indexType:BindIndexBufferIndirectCommandNV0$sel:groupIndex:BindShaderGroupIndirectCommandNV4$sel:groups:GraphicsPipelineShaderGroupsCreateInfoNV7$sel:pipelines:GraphicsPipelineShaderGroupsCreateInfoNV+$sel:stages:GraphicsShaderGroupCreateInfoNV5$sel:vertexInputState:GraphicsShaderGroupCreateInfoNV6$sel:tessellationState:GraphicsShaderGroupCreateInfoNVR$sel:maxGraphicsShaderGroupCount:PhysicalDeviceDeviceGeneratedCommandsPropertiesNVO$sel:maxIndirectSequenceCount:PhysicalDeviceDeviceGeneratedCommandsPropertiesNVT$sel:maxIndirectCommandsTokenCount:PhysicalDeviceDeviceGeneratedCommandsPropertiesNVU$sel:maxIndirectCommandsStreamCount:PhysicalDeviceDeviceGeneratedCommandsPropertiesNVU$sel:maxIndirectCommandsTokenOffset:PhysicalDeviceDeviceGeneratedCommandsPropertiesNVV$sel:maxIndirectCommandsStreamStride:PhysicalDeviceDeviceGeneratedCommandsPropertiesNV]$sel:minSequencesCountBufferOffsetAlignment:PhysicalDeviceDeviceGeneratedCommandsPropertiesNV]$sel:minSequencesIndexBufferOffsetAlignment:PhysicalDeviceDeviceGeneratedCommandsPropertiesNV_$sel:minIndirectCommandsBufferOffsetAlignment:PhysicalDeviceDeviceGeneratedCommandsPropertiesNVL$sel:deviceGeneratedCommands:PhysicalDeviceDeviceGeneratedCommandsFeaturesNV*INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV$INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV,INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV-INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV-INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV,INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV+INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV,INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV$INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV9INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV7INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV9INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NVwithIndirectCommandsLayoutNV5$fZeroPhysicalDeviceDeviceGeneratedCommandsFeaturesNV9$fStorablePhysicalDeviceDeviceGeneratedCommandsFeaturesNV<$fFromCStructPhysicalDeviceDeviceGeneratedCommandsFeaturesNV:$fToCStructPhysicalDeviceDeviceGeneratedCommandsFeaturesNV7$fZeroPhysicalDeviceDeviceGeneratedCommandsPropertiesNV;$fStorablePhysicalDeviceDeviceGeneratedCommandsPropertiesNV>$fFromCStructPhysicalDeviceDeviceGeneratedCommandsPropertiesNV<$fToCStructPhysicalDeviceDeviceGeneratedCommandsPropertiesNV%$fZeroGraphicsShaderGroupCreateInfoNV,$fFromCStructGraphicsShaderGroupCreateInfoNV*$fToCStructGraphicsShaderGroupCreateInfoNV.$fZeroGraphicsPipelineShaderGroupsCreateInfoNV5$fFromCStructGraphicsPipelineShaderGroupsCreateInfoNV3$fToCStructGraphicsPipelineShaderGroupsCreateInfoNV&$fZeroBindShaderGroupIndirectCommandNV*$fStorableBindShaderGroupIndirectCommandNV-$fFromCStructBindShaderGroupIndirectCommandNV+$fToCStructBindShaderGroupIndirectCommandNV&$fZeroBindIndexBufferIndirectCommandNV*$fStorableBindIndexBufferIndirectCommandNV-$fFromCStructBindIndexBufferIndirectCommandNV+$fToCStructBindIndexBufferIndirectCommandNV'$fZeroBindVertexBufferIndirectCommandNV+$fStorableBindVertexBufferIndirectCommandNV.$fFromCStructBindVertexBufferIndirectCommandNV,$fToCStructBindVertexBufferIndirectCommandNV$$fZeroSetStateFlagsIndirectCommandNV($fStorableSetStateFlagsIndirectCommandNV+$fFromCStructSetStateFlagsIndirectCommandNV)$fToCStructSetStateFlagsIndirectCommandNV$fZeroIndirectCommandsStreamNV"$fStorableIndirectCommandsStreamNV%$fFromCStructIndirectCommandsStreamNV#$fToCStructIndirectCommandsStreamNV$fZeroGeneratedCommandsInfoNV$$fFromCStructGeneratedCommandsInfoNV"$fToCStructGeneratedCommandsInfoNV/$fZeroGeneratedCommandsMemoryRequirementsInfoNV3$fStorableGeneratedCommandsMemoryRequirementsInfoNV6$fFromCStructGeneratedCommandsMemoryRequirementsInfoNV4$fToCStructGeneratedCommandsMemoryRequirementsInfoNV+$fReadIndirectCommandsLayoutUsageFlagBitsNV+$fShowIndirectCommandsLayoutUsageFlagBitsNV$fReadIndirectStateFlagBitsNV$fShowIndirectStateFlagBitsNV!$fReadIndirectCommandsTokenTypeNV!$fShowIndirectCommandsTokenTypeNV#$fZeroIndirectCommandsLayoutTokenNV*$fFromCStructIndirectCommandsLayoutTokenNV($fToCStructIndirectCommandsLayoutTokenNV($fZeroIndirectCommandsLayoutCreateInfoNV/$fFromCStructIndirectCommandsLayoutCreateInfoNV-$fToCStructIndirectCommandsLayoutCreateInfoNV3$fEqPhysicalDeviceDeviceGeneratedCommandsFeaturesNV5$fEqPhysicalDeviceDeviceGeneratedCommandsPropertiesNV$$fEqBindShaderGroupIndirectCommandNV$$fEqBindIndexBufferIndirectCommandNV%$fEqBindVertexBufferIndirectCommandNV"$fEqSetStateFlagsIndirectCommandNV$fEqIndirectCommandsStreamNV-$fEqGeneratedCommandsMemoryRequirementsInfoNV)$fEqIndirectCommandsLayoutUsageFlagBitsNV*$fOrdIndirectCommandsLayoutUsageFlagBitsNV/$fStorableIndirectCommandsLayoutUsageFlagBitsNV+$fZeroIndirectCommandsLayoutUsageFlagBitsNV+$fBitsIndirectCommandsLayoutUsageFlagBitsNV$fEqIndirectStateFlagBitsNV$fOrdIndirectStateFlagBitsNV!$fStorableIndirectStateFlagBitsNV$fZeroIndirectStateFlagBitsNV$fBitsIndirectStateFlagBitsNV$fEqIndirectCommandsTokenTypeNV $fOrdIndirectCommandsTokenTypeNV%$fStorableIndirectCommandsTokenTypeNV!$fZeroIndirectCommandsTokenTypeNV/$fShowGeneratedCommandsMemoryRequirementsInfoNV2$fGenericGeneratedCommandsMemoryRequirementsInfoNV$fShowGeneratedCommandsInfoNV $fGenericGeneratedCommandsInfoNV($fShowIndirectCommandsLayoutCreateInfoNV+$fGenericIndirectCommandsLayoutCreateInfoNV#$fShowIndirectCommandsLayoutTokenNV&$fGenericIndirectCommandsLayoutTokenNV$fShowIndirectCommandsStreamNV!$fGenericIndirectCommandsStreamNV$$fShowSetStateFlagsIndirectCommandNV'$fGenericSetStateFlagsIndirectCommandNV'$fShowBindVertexBufferIndirectCommandNV*$fGenericBindVertexBufferIndirectCommandNV&$fShowBindIndexBufferIndirectCommandNV)$fGenericBindIndexBufferIndirectCommandNV&$fShowBindShaderGroupIndirectCommandNV)$fGenericBindShaderGroupIndirectCommandNV.$fShowGraphicsPipelineShaderGroupsCreateInfoNV1$fGenericGraphicsPipelineShaderGroupsCreateInfoNV%$fShowGraphicsShaderGroupCreateInfoNV($fGenericGraphicsShaderGroupCreateInfoNV7$fShowPhysicalDeviceDeviceGeneratedCommandsPropertiesNV:$fGenericPhysicalDeviceDeviceGeneratedCommandsPropertiesNV5$fShowPhysicalDeviceDeviceGeneratedCommandsFeaturesNV8$fGenericPhysicalDeviceDeviceGeneratedCommandsFeaturesNVKHR_RAY_TRACING_EXTENSION_NAMEKHR_RAY_TRACING_SPEC_VERSION!AccelerationStructureBuildTypeKHR$AccelerationStructureGeometryDataKHR TrianglesAabbs InstancesDeviceAddressConstHostAddressConst HostAddress<$sel:maxPayloadSize:RayTracingPipelineInterfaceCreateInfoKHR>$sel:maxAttributeSize:RayTracingPipelineInterfaceCreateInfoKHR=$sel:maxCallableSize:RayTracingPipelineInterfaceCreateInfoKHR2$sel:next:CopyMemoryToAccelerationStructureInfoKHR1$sel:src:CopyMemoryToAccelerationStructureInfoKHR1$sel:dst:CopyMemoryToAccelerationStructureInfoKHR2$sel:mode:CopyMemoryToAccelerationStructureInfoKHR2$sel:next:CopyAccelerationStructureToMemoryInfoKHR1$sel:src:CopyAccelerationStructureToMemoryInfoKHR1$sel:dst:CopyAccelerationStructureToMemoryInfoKHR2$sel:mode:CopyAccelerationStructureToMemoryInfoKHR*$sel:next:CopyAccelerationStructureInfoKHR)$sel:src:CopyAccelerationStructureInfoKHR)$sel:dst:CopyAccelerationStructureInfoKHR*$sel:mode:CopyAccelerationStructureInfoKHR0$sel:versionData:AccelerationStructureVersionKHRD$sel:accelerationStructure:AccelerationStructureDeviceAddressInfoKHR/$sel:transform:AccelerationStructureInstanceKHR9$sel:instanceCustomIndex:AccelerationStructureInstanceKHR*$sel:mask:AccelerationStructureInstanceKHRL$sel:instanceShaderBindingTableRecordOffset:AccelerationStructureInstanceKHR+$sel:flags:AccelerationStructureInstanceKHRD$sel:accelerationStructureReference:AccelerationStructureInstanceKHR$sel:matrix:TransformMatrixKHR$sel:minX:AabbPositionsKHR$sel:minY:AabbPositionsKHR$sel:minZ:AabbPositionsKHR$sel:maxX:AabbPositionsKHR$sel:maxY:AabbPositionsKHR$sel:maxZ:AabbPositionsKHR5$sel:compactedSize:AccelerationStructureCreateInfoKHR-$sel:type':AccelerationStructureCreateInfoKHR-$sel:flags:AccelerationStructureCreateInfoKHR5$sel:geometryInfos:AccelerationStructureCreateInfoKHR5$sel:deviceAddress:AccelerationStructureCreateInfoKHR@$sel:geometryType:AccelerationStructureCreateGeometryTypeInfoKHRE$sel:maxPrimitiveCount:AccelerationStructureCreateGeometryTypeInfoKHR=$sel:indexType:AccelerationStructureCreateGeometryTypeInfoKHRB$sel:maxVertexCount:AccelerationStructureCreateGeometryTypeInfoKHR@$sel:vertexFormat:AccelerationStructureCreateGeometryTypeInfoKHRD$sel:allowsTransforms:AccelerationStructureCreateGeometryTypeInfoKHR;$sel:primitiveCount:AccelerationStructureBuildOffsetInfoKHR<$sel:primitiveOffset:AccelerationStructureBuildOffsetInfoKHR8$sel:firstVertex:AccelerationStructureBuildOffsetInfoKHR<$sel:transformOffset:AccelerationStructureBuildOffsetInfoKHR3$sel:next:AccelerationStructureBuildGeometryInfoKHR4$sel:type':AccelerationStructureBuildGeometryInfoKHR4$sel:flags:AccelerationStructureBuildGeometryInfoKHR5$sel:update:AccelerationStructureBuildGeometryInfoKHRG$sel:srcAccelerationStructure:AccelerationStructureBuildGeometryInfoKHRG$sel:dstAccelerationStructure:AccelerationStructureBuildGeometryInfoKHR9$sel:geometries:AccelerationStructureBuildGeometryInfoKHR:$sel:scratchData:AccelerationStructureBuildGeometryInfoKHR2$sel:geometryType:AccelerationStructureGeometryKHR.$sel:geometry:AccelerationStructureGeometryKHR+$sel:flags:AccelerationStructureGeometryKHRB$sel:arrayOfPointers:AccelerationStructureGeometryInstancesDataKHR8$sel:data':AccelerationStructureGeometryInstancesDataKHR4$sel:data':AccelerationStructureGeometryAabbsDataKHR5$sel:stride:AccelerationStructureGeometryAabbsDataKHR?$sel:vertexFormat:AccelerationStructureGeometryTrianglesDataKHR=$sel:vertexData:AccelerationStructureGeometryTrianglesDataKHR?$sel:vertexStride:AccelerationStructureGeometryTrianglesDataKHR<$sel:indexType:AccelerationStructureGeometryTrianglesDataKHR<$sel:indexData:AccelerationStructureGeometryTrianglesDataKHR@$sel:transformData:AccelerationStructureGeometryTrianglesDataKHR&$sel:width:TraceRaysIndirectCommandKHR'$sel:height:TraceRaysIndirectCommandKHR&$sel:depth:TraceRaysIndirectCommandKHR"$sel:buffer:StridedBufferRegionKHR"$sel:offset:StridedBufferRegionKHR"$sel:stride:StridedBufferRegionKHR $sel:size:StridedBufferRegionKHR@$sel:shaderGroupHandleSize:PhysicalDeviceRayTracingPropertiesKHR<$sel:maxRecursionDepth:PhysicalDeviceRayTracingPropertiesKHR?$sel:maxShaderGroupStride:PhysicalDeviceRayTracingPropertiesKHRC$sel:shaderGroupBaseAlignment:PhysicalDeviceRayTracingPropertiesKHR;$sel:maxGeometryCount:PhysicalDeviceRayTracingPropertiesKHR;$sel:maxInstanceCount:PhysicalDeviceRayTracingPropertiesKHR<$sel:maxPrimitiveCount:PhysicalDeviceRayTracingPropertiesKHRQ$sel:maxDescriptorSetAccelerationStructures:PhysicalDeviceRayTracingPropertiesKHRM$sel:shaderGroupHandleCaptureReplaySize:PhysicalDeviceRayTracingPropertiesKHR3$sel:rayTracing:PhysicalDeviceRayTracingFeaturesKHRQ$sel:rayTracingShaderGroupHandleCaptureReplay:PhysicalDeviceRayTracingFeaturesKHRV$sel:rayTracingShaderGroupHandleCaptureReplayMixed:PhysicalDeviceRayTracingFeaturesKHRU$sel:rayTracingAccelerationStructureCaptureReplay:PhysicalDeviceRayTracingFeaturesKHRD$sel:rayTracingIndirectTraceRays:PhysicalDeviceRayTracingFeaturesKHRU$sel:rayTracingIndirectAccelerationStructureBuild:PhysicalDeviceRayTracingFeaturesKHRT$sel:rayTracingHostAccelerationStructureCommands:PhysicalDeviceRayTracingFeaturesKHR1$sel:rayQuery:PhysicalDeviceRayTracingFeaturesKHRC$sel:rayTracingPrimitiveCulling:PhysicalDeviceRayTracingFeaturesKHR9$sel:type':AccelerationStructureMemoryRequirementsInfoKHR=$sel:buildType:AccelerationStructureMemoryRequirementsInfoKHRI$sel:accelerationStructure:AccelerationStructureMemoryRequirementsInfoKHRF$sel:accelerationStructures:WriteDescriptorSetAccelerationStructureKHRA$sel:accelerationStructure:BindAccelerationStructureMemoryInfoKHR2$sel:memory:BindAccelerationStructureMemoryInfoKHR8$sel:memoryOffset:BindAccelerationStructureMemoryInfoKHR9$sel:deviceIndices:BindAccelerationStructureMemoryInfoKHR)$sel:next:RayTracingPipelineCreateInfoKHR*$sel:flags:RayTracingPipelineCreateInfoKHR+$sel:stages:RayTracingPipelineCreateInfoKHR+$sel:groups:RayTracingPipelineCreateInfoKHR6$sel:maxRecursionDepth:RayTracingPipelineCreateInfoKHR.$sel:libraries:RayTracingPipelineCreateInfoKHR5$sel:libraryInterface:RayTracingPipelineCreateInfoKHR+$sel:layout:RayTracingPipelineCreateInfoKHR7$sel:basePipelineHandle:RayTracingPipelineCreateInfoKHR6$sel:basePipelineIndex:RayTracingPipelineCreateInfoKHR-$sel:type':RayTracingShaderGroupCreateInfoKHR5$sel:generalShader:RayTracingShaderGroupCreateInfoKHR8$sel:closestHitShader:RayTracingShaderGroupCreateInfoKHR4$sel:anyHitShader:RayTracingShaderGroupCreateInfoKHR:$sel:intersectionShader:RayTracingShaderGroupCreateInfoKHRF$sel:shaderGroupCaptureReplayHandle:RayTracingShaderGroupCreateInfoKHR6RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR5RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR)RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR4ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR,ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR*ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHRBACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHRAACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR:ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHRGEOMETRY_TYPE_INSTANCES_KHRGEOMETRY_TYPE_AABBS_KHRGEOMETRY_TYPE_TRIANGLES_KHR,ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR)ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR0COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR.COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR,COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR*COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR/BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR6BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR6BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR5BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR1BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR0GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHRGEOMETRY_OPAQUE_BIT_KHR)GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR&GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR9GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR6GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHRwithAccelerationStructureKHR,$fZeroBindAccelerationStructureMemoryInfoKHR3$fFromCStructBindAccelerationStructureMemoryInfoKHR1$fToCStructBindAccelerationStructureMemoryInfoKHR0$fZeroWriteDescriptorSetAccelerationStructureKHR7$fFromCStructWriteDescriptorSetAccelerationStructureKHR5$fToCStructWriteDescriptorSetAccelerationStructureKHR)$fZeroPhysicalDeviceRayTracingFeaturesKHR-$fStorablePhysicalDeviceRayTracingFeaturesKHR0$fFromCStructPhysicalDeviceRayTracingFeaturesKHR.$fToCStructPhysicalDeviceRayTracingFeaturesKHR+$fZeroPhysicalDeviceRayTracingPropertiesKHR/$fStorablePhysicalDeviceRayTracingPropertiesKHR2$fFromCStructPhysicalDeviceRayTracingPropertiesKHR0$fToCStructPhysicalDeviceRayTracingPropertiesKHR$fZeroStridedBufferRegionKHR $fStorableStridedBufferRegionKHR#$fFromCStructStridedBufferRegionKHR!$fToCStructStridedBufferRegionKHR!$fZeroTraceRaysIndirectCommandKHR%$fStorableTraceRaysIndirectCommandKHR($fFromCStructTraceRaysIndirectCommandKHR&$fToCStructTraceRaysIndirectCommandKHR-$fZeroAccelerationStructureBuildOffsetInfoKHR1$fStorableAccelerationStructureBuildOffsetInfoKHR4$fFromCStructAccelerationStructureBuildOffsetInfoKHR2$fToCStructAccelerationStructureBuildOffsetInfoKHR$fZeroAabbPositionsKHR$fStorableAabbPositionsKHR$fFromCStructAabbPositionsKHR$fToCStructAabbPositionsKHR$fZeroTransformMatrixKHR$fStorableTransformMatrixKHR$fFromCStructTransformMatrixKHR$fToCStructTransformMatrixKHR/$fZeroAccelerationStructureDeviceAddressInfoKHR3$fStorableAccelerationStructureDeviceAddressInfoKHR6$fFromCStructAccelerationStructureDeviceAddressInfoKHR4$fToCStructAccelerationStructureDeviceAddressInfoKHR%$fZeroAccelerationStructureVersionKHR,$fFromCStructAccelerationStructureVersionKHR*$fToCStructAccelerationStructureVersionKHR.$fZeroRayTracingPipelineInterfaceCreateInfoKHR2$fStorableRayTracingPipelineInterfaceCreateInfoKHR5$fFromCStructRayTracingPipelineInterfaceCreateInfoKHR3$fToCStructRayTracingPipelineInterfaceCreateInfoKHR$fZeroDeviceOrHostAddressKHR!$fToCStructDeviceOrHostAddressKHR!$fZeroDeviceOrHostAddressConstKHR&$fToCStructDeviceOrHostAddressConstKHR3$fZeroAccelerationStructureGeometryInstancesDataKHR8$fToCStructAccelerationStructureGeometryInstancesDataKHR/$fZeroAccelerationStructureGeometryAabbsDataKHR4$fToCStructAccelerationStructureGeometryAabbsDataKHR3$fZeroAccelerationStructureGeometryTrianglesDataKHR8$fToCStructAccelerationStructureGeometryTrianglesDataKHR*$fZeroAccelerationStructureGeometryDataKHR/$fToCStructAccelerationStructureGeometryDataKHR!$fReadGeometryInstanceFlagBitsKHR!$fShowGeometryInstanceFlagBitsKHR&$fZeroAccelerationStructureInstanceKHR-$fFromCStructAccelerationStructureInstanceKHR+$fToCStructAccelerationStructureInstanceKHR$fReadGeometryFlagBitsKHR$fShowGeometryFlagBitsKHR+$fReadBuildAccelerationStructureFlagBitsKHR+$fShowBuildAccelerationStructureFlagBitsKHR&$fReadCopyAccelerationStructureModeKHR&$fShowCopyAccelerationStructureModeKHR.$fZeroCopyMemoryToAccelerationStructureInfoKHR3$fToCStructCopyMemoryToAccelerationStructureInfoKHR4$fExtensibleCopyMemoryToAccelerationStructureInfoKHR.$fZeroCopyAccelerationStructureToMemoryInfoKHR3$fToCStructCopyAccelerationStructureToMemoryInfoKHR4$fExtensibleCopyAccelerationStructureToMemoryInfoKHR&$fZeroCopyAccelerationStructureInfoKHR-$fFromCStructCopyAccelerationStructureInfoKHR+$fToCStructCopyAccelerationStructureInfoKHR,$fExtensibleCopyAccelerationStructureInfoKHR"$fReadAccelerationStructureTypeKHR"$fShowAccelerationStructureTypeKHR$fReadGeometryTypeKHR$fShowGeometryTypeKHR4$fZeroAccelerationStructureCreateGeometryTypeInfoKHR8$fStorableAccelerationStructureCreateGeometryTypeInfoKHR;$fFromCStructAccelerationStructureCreateGeometryTypeInfoKHR9$fToCStructAccelerationStructureCreateGeometryTypeInfoKHR($fZeroAccelerationStructureCreateInfoKHR/$fFromCStructAccelerationStructureCreateInfoKHR-$fToCStructAccelerationStructureCreateInfoKHR&$fZeroAccelerationStructureGeometryKHR+$fToCStructAccelerationStructureGeometryKHR/$fZeroAccelerationStructureBuildGeometryInfoKHR4$fToCStructAccelerationStructureBuildGeometryInfoKHR5$fExtensibleAccelerationStructureBuildGeometryInfoKHR4$fReadAccelerationStructureMemoryRequirementsTypeKHR4$fShowAccelerationStructureMemoryRequirementsTypeKHR'$fReadAccelerationStructureBuildTypeKHR'$fShowAccelerationStructureBuildTypeKHR4$fZeroAccelerationStructureMemoryRequirementsInfoKHR8$fStorableAccelerationStructureMemoryRequirementsInfoKHR;$fFromCStructAccelerationStructureMemoryRequirementsInfoKHR9$fToCStructAccelerationStructureMemoryRequirementsInfoKHR"$fReadRayTracingShaderGroupTypeKHR"$fShowRayTracingShaderGroupTypeKHR($fZeroRayTracingShaderGroupCreateInfoKHR,$fStorableRayTracingShaderGroupCreateInfoKHR/$fFromCStructRayTracingShaderGroupCreateInfoKHR-$fToCStructRayTracingShaderGroupCreateInfoKHR%$fZeroRayTracingPipelineCreateInfoKHR,$fFromCStructRayTracingPipelineCreateInfoKHR*$fToCStructRayTracingPipelineCreateInfoKHR+$fExtensibleRayTracingPipelineCreateInfoKHR'$fEqPhysicalDeviceRayTracingFeaturesKHR)$fEqPhysicalDeviceRayTracingPropertiesKHR$fEqStridedBufferRegionKHR$fEqTraceRaysIndirectCommandKHR+$fEqAccelerationStructureBuildOffsetInfoKHR$fEqAabbPositionsKHR$fEqTransformMatrixKHR-$fEqAccelerationStructureDeviceAddressInfoKHR,$fEqRayTracingPipelineInterfaceCreateInfoKHR$fShowDeviceOrHostAddressKHR!$fShowDeviceOrHostAddressConstKHR*$fShowAccelerationStructureGeometryDataKHR$fEqGeometryInstanceFlagBitsKHR $fOrdGeometryInstanceFlagBitsKHR%$fStorableGeometryInstanceFlagBitsKHR!$fZeroGeometryInstanceFlagBitsKHR!$fBitsGeometryInstanceFlagBitsKHR$fEqGeometryFlagBitsKHR$fOrdGeometryFlagBitsKHR$fStorableGeometryFlagBitsKHR$fZeroGeometryFlagBitsKHR$fBitsGeometryFlagBitsKHR)$fEqBuildAccelerationStructureFlagBitsKHR*$fOrdBuildAccelerationStructureFlagBitsKHR/$fStorableBuildAccelerationStructureFlagBitsKHR+$fZeroBuildAccelerationStructureFlagBitsKHR+$fBitsBuildAccelerationStructureFlagBitsKHR$$fEqCopyAccelerationStructureModeKHR%$fOrdCopyAccelerationStructureModeKHR*$fStorableCopyAccelerationStructureModeKHR&$fZeroCopyAccelerationStructureModeKHR $fEqAccelerationStructureTypeKHR!$fOrdAccelerationStructureTypeKHR&$fStorableAccelerationStructureTypeKHR"$fZeroAccelerationStructureTypeKHR$fEqGeometryTypeKHR$fOrdGeometryTypeKHR$fStorableGeometryTypeKHR$fZeroGeometryTypeKHR2$fEqAccelerationStructureCreateGeometryTypeInfoKHR2$fEqAccelerationStructureMemoryRequirementsTypeKHR3$fOrdAccelerationStructureMemoryRequirementsTypeKHR8$fStorableAccelerationStructureMemoryRequirementsTypeKHR4$fZeroAccelerationStructureMemoryRequirementsTypeKHR%$fEqAccelerationStructureBuildTypeKHR&$fOrdAccelerationStructureBuildTypeKHR+$fStorableAccelerationStructureBuildTypeKHR'$fZeroAccelerationStructureBuildTypeKHR2$fEqAccelerationStructureMemoryRequirementsInfoKHR $fEqRayTracingShaderGroupTypeKHR!$fOrdRayTracingShaderGroupTypeKHR&$fStorableRayTracingShaderGroupTypeKHR"$fZeroRayTracingShaderGroupTypeKHR.$fShowRayTracingPipelineInterfaceCreateInfoKHR1$fGenericRayTracingPipelineInterfaceCreateInfoKHR.$fShowCopyMemoryToAccelerationStructureInfoKHR1$fGenericCopyMemoryToAccelerationStructureInfoKHR.$fShowCopyAccelerationStructureToMemoryInfoKHR1$fGenericCopyAccelerationStructureToMemoryInfoKHR&$fShowCopyAccelerationStructureInfoKHR)$fGenericCopyAccelerationStructureInfoKHR%$fShowAccelerationStructureVersionKHR($fGenericAccelerationStructureVersionKHR/$fShowAccelerationStructureDeviceAddressInfoKHR2$fGenericAccelerationStructureDeviceAddressInfoKHR&$fShowAccelerationStructureInstanceKHR)$fGenericAccelerationStructureInstanceKHR$fShowTransformMatrixKHR$fGenericTransformMatrixKHR$fShowAabbPositionsKHR$fGenericAabbPositionsKHR($fShowAccelerationStructureCreateInfoKHR+$fGenericAccelerationStructureCreateInfoKHR4$fShowAccelerationStructureCreateGeometryTypeInfoKHR7$fGenericAccelerationStructureCreateGeometryTypeInfoKHR-$fShowAccelerationStructureBuildOffsetInfoKHR0$fGenericAccelerationStructureBuildOffsetInfoKHR/$fShowAccelerationStructureBuildGeometryInfoKHR2$fGenericAccelerationStructureBuildGeometryInfoKHR&$fShowAccelerationStructureGeometryKHR)$fGenericAccelerationStructureGeometryKHR3$fShowAccelerationStructureGeometryInstancesDataKHR6$fGenericAccelerationStructureGeometryInstancesDataKHR/$fShowAccelerationStructureGeometryAabbsDataKHR2$fGenericAccelerationStructureGeometryAabbsDataKHR3$fShowAccelerationStructureGeometryTrianglesDataKHR6$fGenericAccelerationStructureGeometryTrianglesDataKHR!$fShowTraceRaysIndirectCommandKHR$$fGenericTraceRaysIndirectCommandKHR$fShowStridedBufferRegionKHR$fGenericStridedBufferRegionKHR+$fShowPhysicalDeviceRayTracingPropertiesKHR.$fGenericPhysicalDeviceRayTracingPropertiesKHR)$fShowPhysicalDeviceRayTracingFeaturesKHR,$fGenericPhysicalDeviceRayTracingFeaturesKHR4$fShowAccelerationStructureMemoryRequirementsInfoKHR7$fGenericAccelerationStructureMemoryRequirementsInfoKHR0$fShowWriteDescriptorSetAccelerationStructureKHR3$fGenericWriteDescriptorSetAccelerationStructureKHR,$fShowBindAccelerationStructureMemoryInfoKHR/$fGenericBindAccelerationStructureMemoryInfoKHR%$fShowRayTracingPipelineCreateInfoKHR($fGenericRayTracingPipelineCreateInfoKHR($fShowRayTracingShaderGroupCreateInfoKHR+$fGenericRayTracingShaderGroupCreateInfoKHRNV_RAY_TRACING_EXTENSION_NAMENV_RAY_TRACING_SPEC_VERSIONAccelerationStructureInstanceNVTransformMatrixNVAabbPositionsNV)WriteDescriptorSetAccelerationStructureNV%BindAccelerationStructureMemoryInfoNV-AccelerationStructureMemoryRequirementsTypeNVRayTracingShaderGroupTypeNVGeometryTypeNVAccelerationStructureTypeNVCopyAccelerationStructureModeNV$BuildAccelerationStructureFlagBitsNVGeometryInstanceFlagBitsNVGeometryFlagBitsNV!BuildAccelerationStructureFlagsNVGeometryInstanceFlagsNVGeometryFlagsNV?$sel:shaderGroupHandleSize:PhysicalDeviceRayTracingPropertiesNV;$sel:maxRecursionDepth:PhysicalDeviceRayTracingPropertiesNV>$sel:maxShaderGroupStride:PhysicalDeviceRayTracingPropertiesNVB$sel:shaderGroupBaseAlignment:PhysicalDeviceRayTracingPropertiesNV:$sel:maxGeometryCount:PhysicalDeviceRayTracingPropertiesNV:$sel:maxInstanceCount:PhysicalDeviceRayTracingPropertiesNV:$sel:maxTriangleCount:PhysicalDeviceRayTracingPropertiesNVP$sel:maxDescriptorSetAccelerationStructures:PhysicalDeviceRayTracingPropertiesNV8$sel:type':AccelerationStructureMemoryRequirementsInfoNVH$sel:accelerationStructure:AccelerationStructureMemoryRequirementsInfoNV4$sel:compactedSize:AccelerationStructureCreateInfoNV+$sel:info:AccelerationStructureCreateInfoNV&$sel:type':AccelerationStructureInfoNV&$sel:flags:AccelerationStructureInfoNV.$sel:instanceCount:AccelerationStructureInfoNV+$sel:geometries:AccelerationStructureInfoNV$sel:geometryType:GeometryNV$sel:geometry:GeometryNV$sel:flags:GeometryNV$sel:triangles:GeometryDataNV$sel:aabbs:GeometryDataNV$sel:aabbData:GeometryAABBNV$sel:numAABBs:GeometryAABBNV$sel:stride:GeometryAABBNV$sel:offset:GeometryAABBNV#$sel:vertexData:GeometryTrianglesNV%$sel:vertexOffset:GeometryTrianglesNV$$sel:vertexCount:GeometryTrianglesNV%$sel:vertexStride:GeometryTrianglesNV%$sel:vertexFormat:GeometryTrianglesNV"$sel:indexData:GeometryTrianglesNV$$sel:indexOffset:GeometryTrianglesNV#$sel:indexCount:GeometryTrianglesNV"$sel:indexType:GeometryTrianglesNV&$sel:transformData:GeometryTrianglesNV($sel:transformOffset:GeometryTrianglesNV($sel:next:RayTracingPipelineCreateInfoNV)$sel:flags:RayTracingPipelineCreateInfoNV*$sel:stages:RayTracingPipelineCreateInfoNV*$sel:groups:RayTracingPipelineCreateInfoNV5$sel:maxRecursionDepth:RayTracingPipelineCreateInfoNV*$sel:layout:RayTracingPipelineCreateInfoNV6$sel:basePipelineHandle:RayTracingPipelineCreateInfoNV5$sel:basePipelineIndex:RayTracingPipelineCreateInfoNV,$sel:type':RayTracingShaderGroupCreateInfoNV4$sel:generalShader:RayTracingShaderGroupCreateInfoNV7$sel:closestHitShader:RayTracingShaderGroupCreateInfoNV3$sel:anyHitShader:RayTracingShaderGroupCreateInfoNV9$sel:intersectionShader:RayTracingShaderGroupCreateInfoNVAACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV@ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV9ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV+COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV)COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV.BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV5BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV5BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV4BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV0BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV(GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV%GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV8GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV.GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV/GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NVGEOMETRY_OPAQUE_BIT_NV+ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV(ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NVGEOMETRY_TYPE_AABBS_NVGEOMETRY_TYPE_TRIANGLES_NV5RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV4RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV(RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NVINDEX_TYPE_NONE_NV6DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT%OBJECT_TYPE_ACCELERATION_STRUCTURE_NV3QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV*ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV)ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV)DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV"PIPELINE_BIND_POINT_RAY_TRACING_NVBUFFER_USAGE_RAY_TRACING_BIT_NV2PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV(PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NVSHADER_STAGE_CALLABLE_BIT_NV SHADER_STAGE_INTERSECTION_BIT_NVSHADER_STAGE_MISS_BIT_NVSHADER_STAGE_CLOSEST_HIT_BIT_NVSHADER_STAGE_ANY_HIT_BIT_NVSHADER_STAGE_RAYGEN_BIT_NV=STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV9STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV'$fZeroRayTracingShaderGroupCreateInfoNV+$fStorableRayTracingShaderGroupCreateInfoNV.$fFromCStructRayTracingShaderGroupCreateInfoNV,$fToCStructRayTracingShaderGroupCreateInfoNV$$fZeroRayTracingPipelineCreateInfoNV+$fFromCStructRayTracingPipelineCreateInfoNV)$fToCStructRayTracingPipelineCreateInfoNV*$fExtensibleRayTracingPipelineCreateInfoNV$fZeroGeometryTrianglesNV$fStorableGeometryTrianglesNV $fFromCStructGeometryTrianglesNV$fToCStructGeometryTrianglesNV$fZeroGeometryAABBNV$fStorableGeometryAABBNV$fFromCStructGeometryAABBNV$fToCStructGeometryAABBNV$fZeroGeometryDataNV$fFromCStructGeometryDataNV$fToCStructGeometryDataNV$fZeroGeometryNV$fFromCStructGeometryNV$fToCStructGeometryNV*$fZeroPhysicalDeviceRayTracingPropertiesNV.$fStorablePhysicalDeviceRayTracingPropertiesNV1$fFromCStructPhysicalDeviceRayTracingPropertiesNV/$fToCStructPhysicalDeviceRayTracingPropertiesNV!$fZeroAccelerationStructureInfoNV($fFromCStructAccelerationStructureInfoNV&$fToCStructAccelerationStructureInfoNV'$fZeroAccelerationStructureCreateInfoNV.$fFromCStructAccelerationStructureCreateInfoNV,$fToCStructAccelerationStructureCreateInfoNV3$fZeroAccelerationStructureMemoryRequirementsInfoNV7$fStorableAccelerationStructureMemoryRequirementsInfoNV:$fFromCStructAccelerationStructureMemoryRequirementsInfoNV8$fToCStructAccelerationStructureMemoryRequirementsInfoNV%$fEqRayTracingShaderGroupCreateInfoNV$fEqGeometryTrianglesNV$fEqGeometryAABBNV($fEqPhysicalDeviceRayTracingPropertiesNV1$fEqAccelerationStructureMemoryRequirementsInfoNV*$fShowPhysicalDeviceRayTracingPropertiesNV-$fGenericPhysicalDeviceRayTracingPropertiesNV3$fShowAccelerationStructureMemoryRequirementsInfoNV6$fGenericAccelerationStructureMemoryRequirementsInfoNV'$fShowAccelerationStructureCreateInfoNV*$fGenericAccelerationStructureCreateInfoNV!$fShowAccelerationStructureInfoNV$$fGenericAccelerationStructureInfoNV$fShowGeometryNV$fGenericGeometryNV$fShowGeometryDataNV$fGenericGeometryDataNV$fShowGeometryAABBNV$fGenericGeometryAABBNV$fShowGeometryTrianglesNV$fGenericGeometryTrianglesNV$$fShowRayTracingPipelineCreateInfoNV'$fGenericRayTracingPipelineCreateInfoNV'$fShowRayTracingShaderGroupCreateInfoNV*$fGenericRayTracingShaderGroupCreateInfoNV)EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME'EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSIONG$sel:extendedDynamicState:PhysicalDeviceExtendedDynamicStateFeaturesEXT3$fZeroPhysicalDeviceExtendedDynamicStateFeaturesEXT7$fStorablePhysicalDeviceExtendedDynamicStateFeaturesEXT:$fFromCStructPhysicalDeviceExtendedDynamicStateFeaturesEXT8$fToCStructPhysicalDeviceExtendedDynamicStateFeaturesEXT1$fEqPhysicalDeviceExtendedDynamicStateFeaturesEXT3$fShowPhysicalDeviceExtendedDynamicStateFeaturesEXT6$fGenericPhysicalDeviceExtendedDynamicStateFeaturesEXT$sel:next:FramebufferCreateInfo $sel:flags:FramebufferCreateInfo%$sel:renderPass:FramebufferCreateInfo&$sel:attachments:FramebufferCreateInfo $sel:width:FramebufferCreateInfo!$sel:height:FramebufferCreateInfo!$sel:layers:FramebufferCreateInfo$sel:next:RenderPassCreateInfo$sel:flags:RenderPassCreateInfo%$sel:attachments:RenderPassCreateInfo#$sel:subpasses:RenderPassCreateInfo&$sel:dependencies:RenderPassCreateInfo!$sel:srcSubpass:SubpassDependency!$sel:dstSubpass:SubpassDependency#$sel:srcStageMask:SubpassDependency#$sel:dstStageMask:SubpassDependency$$sel:srcAccessMask:SubpassDependency$$sel:dstAccessMask:SubpassDependency&$sel:dependencyFlags:SubpassDependency$sel:flags:SubpassDescription)$sel:pipelineBindPoint:SubpassDescription($sel:inputAttachments:SubpassDescription($sel:colorAttachments:SubpassDescription*$sel:resolveAttachments:SubpassDescription.$sel:depthStencilAttachment:SubpassDescription+$sel:preserveAttachments:SubpassDescription#$sel:attachment:AttachmentReference$sel:layout:AttachmentReference $sel:flags:AttachmentDescription!$sel:format:AttachmentDescription"$sel:samples:AttachmentDescription!$sel:loadOp:AttachmentDescription"$sel:storeOp:AttachmentDescription($sel:stencilLoadOp:AttachmentDescription)$sel:stencilStoreOp:AttachmentDescription($sel:initialLayout:AttachmentDescription&$sel:finalLayout:AttachmentDescriptionwithFramebufferwithRenderPass$fZeroAttachmentDescription$fStorableAttachmentDescription"$fFromCStructAttachmentDescription $fToCStructAttachmentDescription$fZeroAttachmentReference$fStorableAttachmentReference $fFromCStructAttachmentReference$fToCStructAttachmentReference$fZeroSubpassDescription$fFromCStructSubpassDescription$fToCStructSubpassDescription$fZeroSubpassDependency$fStorableSubpassDependency$fFromCStructSubpassDependency$fToCStructSubpassDependency$fZeroRenderPassCreateInfo!$fFromCStructRenderPassCreateInfo$fToCStructRenderPassCreateInfo $fExtensibleRenderPassCreateInfo$fZeroFramebufferCreateInfo"$fFromCStructFramebufferCreateInfo $fToCStructFramebufferCreateInfo!$fExtensibleFramebufferCreateInfo$fEqAttachmentDescription$fEqAttachmentReference$fEqSubpassDependency$fShowFramebufferCreateInfo$fGenericFramebufferCreateInfo$fShowRenderPassCreateInfo$fGenericRenderPassCreateInfo$fShowSubpassDependency$fGenericSubpassDependency$fShowSubpassDescription$fGenericSubpassDescription$fShowAttachmentReference$fGenericAttachmentReference$fShowAttachmentDescription$fGenericAttachmentDescription'EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME%EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSIONK$sel:fragmentDensityMapAttachment:RenderPassFragmentDensityMapCreateInfoEXTN$sel:minFragmentDensityTexelSize:PhysicalDeviceFragmentDensityMapPropertiesEXTN$sel:maxFragmentDensityTexelSize:PhysicalDeviceFragmentDensityMapPropertiesEXTM$sel:fragmentDensityInvocations:PhysicalDeviceFragmentDensityMapPropertiesEXTC$sel:fragmentDensityMap:PhysicalDeviceFragmentDensityMapFeaturesEXTJ$sel:fragmentDensityMapDynamic:PhysicalDeviceFragmentDensityMapFeaturesEXTV$sel:fragmentDensityMapNonSubsampledImages:PhysicalDeviceFragmentDensityMapFeaturesEXT1$fZeroPhysicalDeviceFragmentDensityMapFeaturesEXT5$fStorablePhysicalDeviceFragmentDensityMapFeaturesEXT8$fFromCStructPhysicalDeviceFragmentDensityMapFeaturesEXT6$fToCStructPhysicalDeviceFragmentDensityMapFeaturesEXT3$fZeroPhysicalDeviceFragmentDensityMapPropertiesEXT:$fFromCStructPhysicalDeviceFragmentDensityMapPropertiesEXT8$fToCStructPhysicalDeviceFragmentDensityMapPropertiesEXT/$fZeroRenderPassFragmentDensityMapCreateInfoEXT6$fFromCStructRenderPassFragmentDensityMapCreateInfoEXT4$fToCStructRenderPassFragmentDensityMapCreateInfoEXT/$fEqPhysicalDeviceFragmentDensityMapFeaturesEXT/$fShowRenderPassFragmentDensityMapCreateInfoEXT2$fGenericRenderPassFragmentDensityMapCreateInfoEXT3$fShowPhysicalDeviceFragmentDensityMapPropertiesEXT6$fGenericPhysicalDeviceFragmentDensityMapPropertiesEXT1$fShowPhysicalDeviceFragmentDensityMapFeaturesEXT4$fGenericPhysicalDeviceFragmentDensityMapFeaturesEXT$sel:memory:MappedMemoryRange$sel:offset:MappedMemoryRange$sel:size:MappedMemoryRange$sel:next:MemoryAllocateInfo&$sel:allocationSize:MemoryAllocateInfo'$sel:memoryTypeIndex:MemoryAllocateInfo withMemorywithMappedMemory$fZeroMemoryAllocateInfo$fFromCStructMemoryAllocateInfo$fToCStructMemoryAllocateInfo$fExtensibleMemoryAllocateInfo$fZeroMappedMemoryRange$fStorableMappedMemoryRange$fFromCStructMappedMemoryRange$fToCStructMappedMemoryRange$fEqMappedMemoryRange$fShowMappedMemoryRange$fGenericMappedMemoryRange$fShowMemoryAllocateInfo$fGenericMemoryAllocateInfo$sel:next:ImageViewCreateInfo$sel:flags:ImageViewCreateInfo$sel:image:ImageViewCreateInfo!$sel:viewType:ImageViewCreateInfo$sel:format:ImageViewCreateInfo#$sel:components:ImageViewCreateInfo)$sel:subresourceRange:ImageViewCreateInfo%$sel:aspectMask:ImageSubresourceRange'$sel:baseMipLevel:ImageSubresourceRange%$sel:levelCount:ImageSubresourceRange)$sel:baseArrayLayer:ImageSubresourceRange%$sel:layerCount:ImageSubresourceRange$sel:r:ComponentMapping$sel:g:ComponentMapping$sel:b:ComponentMapping$sel:a:ComponentMapping withImageView$fZeroComponentMapping$fStorableComponentMapping$fFromCStructComponentMapping$fToCStructComponentMapping$fZeroImageSubresourceRange$fStorableImageSubresourceRange"$fFromCStructImageSubresourceRange $fToCStructImageSubresourceRange$fZeroImageViewCreateInfo $fFromCStructImageViewCreateInfo$fToCStructImageViewCreateInfo$fExtensibleImageViewCreateInfo$fEqComponentMapping$fEqImageSubresourceRange$fShowImageViewCreateInfo$fGenericImageViewCreateInfo$fShowImageSubresourceRange$fGenericImageSubresourceRange$fShowComponentMapping$fGenericComponentMapping>ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME$sel:drmFormatModifierCount:DrmFormatModifierPropertiesListEXTC$sel:drmFormatModifierProperties:DrmFormatModifierPropertiesListEXT$$fZeroDrmFormatModifierPropertiesEXT($fStorableDrmFormatModifierPropertiesEXT+$fFromCStructDrmFormatModifierPropertiesEXT)$fToCStructDrmFormatModifierPropertiesEXT($fZeroDrmFormatModifierPropertiesListEXT,$fStorableDrmFormatModifierPropertiesListEXT/$fFromCStructDrmFormatModifierPropertiesListEXT-$fToCStructDrmFormatModifierPropertiesListEXT1$fZeroPhysicalDeviceImageDrmFormatModifierInfoEXT8$fFromCStructPhysicalDeviceImageDrmFormatModifierInfoEXT6$fToCStructPhysicalDeviceImageDrmFormatModifierInfoEXT-$fZeroImageDrmFormatModifierListCreateInfoEXT4$fFromCStructImageDrmFormatModifierListCreateInfoEXT2$fToCStructImageDrmFormatModifierListCreateInfoEXT1$fZeroImageDrmFormatModifierExplicitCreateInfoEXT8$fFromCStructImageDrmFormatModifierExplicitCreateInfoEXT6$fToCStructImageDrmFormatModifierExplicitCreateInfoEXT)$fZeroImageDrmFormatModifierPropertiesEXT-$fStorableImageDrmFormatModifierPropertiesEXT0$fFromCStructImageDrmFormatModifierPropertiesEXT.$fToCStructImageDrmFormatModifierPropertiesEXT"$fEqDrmFormatModifierPropertiesEXT&$fEqDrmFormatModifierPropertiesListEXT'$fEqImageDrmFormatModifierPropertiesEXT)$fShowImageDrmFormatModifierPropertiesEXT,$fGenericImageDrmFormatModifierPropertiesEXT1$fShowImageDrmFormatModifierExplicitCreateInfoEXT4$fGenericImageDrmFormatModifierExplicitCreateInfoEXT-$fShowImageDrmFormatModifierListCreateInfoEXT0$fGenericImageDrmFormatModifierListCreateInfoEXT1$fShowPhysicalDeviceImageDrmFormatModifierInfoEXT4$fGenericPhysicalDeviceImageDrmFormatModifierInfoEXT$$fShowDrmFormatModifierPropertiesEXT'$fGenericDrmFormatModifierPropertiesEXT($fShowDrmFormatModifierPropertiesListEXT+$fGenericDrmFormatModifierPropertiesListEXT$sel:next:FenceCreateInfo$sel:flags:FenceCreateInfo withFencewaitForFencesSafe$fZeroFenceCreateInfo$fFromCStructFenceCreateInfo$fToCStructFenceCreateInfo$fExtensibleFenceCreateInfo$fShowFenceCreateInfo$fGenericFenceCreateInfo-$sel:maxImageDimension1D:PhysicalDeviceLimits-$sel:maxImageDimension2D:PhysicalDeviceLimits-$sel:maxImageDimension3D:PhysicalDeviceLimits/$sel:maxImageDimensionCube:PhysicalDeviceLimits-$sel:maxImageArrayLayers:PhysicalDeviceLimits0$sel:maxTexelBufferElements:PhysicalDeviceLimits/$sel:maxUniformBufferRange:PhysicalDeviceLimits/$sel:maxStorageBufferRange:PhysicalDeviceLimits.$sel:maxPushConstantsSize:PhysicalDeviceLimits2$sel:maxMemoryAllocationCount:PhysicalDeviceLimits3$sel:maxSamplerAllocationCount:PhysicalDeviceLimits0$sel:bufferImageGranularity:PhysicalDeviceLimits0$sel:sparseAddressSpaceSize:PhysicalDeviceLimits0$sel:maxBoundDescriptorSets:PhysicalDeviceLimits7$sel:maxPerStageDescriptorSamplers:PhysicalDeviceLimits=$sel:maxPerStageDescriptorUniformBuffers:PhysicalDeviceLimits=$sel:maxPerStageDescriptorStorageBuffers:PhysicalDeviceLimits<$sel:maxPerStageDescriptorSampledImages:PhysicalDeviceLimits<$sel:maxPerStageDescriptorStorageImages:PhysicalDeviceLimits?$sel:maxPerStageDescriptorInputAttachments:PhysicalDeviceLimits.$sel:maxPerStageResources:PhysicalDeviceLimits2$sel:maxDescriptorSetSamplers:PhysicalDeviceLimits8$sel:maxDescriptorSetUniformBuffers:PhysicalDeviceLimits?$sel:maxDescriptorSetUniformBuffersDynamic:PhysicalDeviceLimits8$sel:maxDescriptorSetStorageBuffers:PhysicalDeviceLimits?$sel:maxDescriptorSetStorageBuffersDynamic:PhysicalDeviceLimits7$sel:maxDescriptorSetSampledImages:PhysicalDeviceLimits7$sel:maxDescriptorSetStorageImages:PhysicalDeviceLimits:$sel:maxDescriptorSetInputAttachments:PhysicalDeviceLimits2$sel:maxVertexInputAttributes:PhysicalDeviceLimits0$sel:maxVertexInputBindings:PhysicalDeviceLimits7$sel:maxVertexInputAttributeOffset:PhysicalDeviceLimits5$sel:maxVertexInputBindingStride:PhysicalDeviceLimits3$sel:maxVertexOutputComponents:PhysicalDeviceLimits8$sel:maxTessellationGenerationLevel:PhysicalDeviceLimits2$sel:maxTessellationPatchSize:PhysicalDeviceLimitsH$sel:maxTessellationControlPerVertexInputComponents:PhysicalDeviceLimitsI$sel:maxTessellationControlPerVertexOutputComponents:PhysicalDeviceLimitsH$sel:maxTessellationControlPerPatchOutputComponents:PhysicalDeviceLimitsE$sel:maxTessellationControlTotalOutputComponents:PhysicalDeviceLimitsB$sel:maxTessellationEvaluationInputComponents:PhysicalDeviceLimitsC$sel:maxTessellationEvaluationOutputComponents:PhysicalDeviceLimits6$sel:maxGeometryShaderInvocations:PhysicalDeviceLimits4$sel:maxGeometryInputComponents:PhysicalDeviceLimits5$sel:maxGeometryOutputComponents:PhysicalDeviceLimits3$sel:maxGeometryOutputVertices:PhysicalDeviceLimits:$sel:maxGeometryTotalOutputComponents:PhysicalDeviceLimits4$sel:maxFragmentInputComponents:PhysicalDeviceLimits6$sel:maxFragmentOutputAttachments:PhysicalDeviceLimits7$sel:maxFragmentDualSrcAttachments:PhysicalDeviceLimits<$sel:maxFragmentCombinedOutputResources:PhysicalDeviceLimits4$sel:maxComputeSharedMemorySize:PhysicalDeviceLimits2$sel:maxComputeWorkGroupCount:PhysicalDeviceLimits8$sel:maxComputeWorkGroupInvocations:PhysicalDeviceLimits1$sel:maxComputeWorkGroupSize:PhysicalDeviceLimits/$sel:subPixelPrecisionBits:PhysicalDeviceLimits/$sel:subTexelPrecisionBits:PhysicalDeviceLimits-$sel:mipmapPrecisionBits:PhysicalDeviceLimits2$sel:maxDrawIndexedIndexValue:PhysicalDeviceLimits.$sel:maxDrawIndirectCount:PhysicalDeviceLimits+$sel:maxSamplerLodBias:PhysicalDeviceLimits.$sel:maxSamplerAnisotropy:PhysicalDeviceLimits&$sel:maxViewports:PhysicalDeviceLimits/$sel:maxViewportDimensions:PhysicalDeviceLimits-$sel:viewportBoundsRange:PhysicalDeviceLimits.$sel:viewportSubPixelBits:PhysicalDeviceLimits/$sel:minMemoryMapAlignment:PhysicalDeviceLimits7$sel:minTexelBufferOffsetAlignment:PhysicalDeviceLimits9$sel:minUniformBufferOffsetAlignment:PhysicalDeviceLimits9$sel:minStorageBufferOffsetAlignment:PhysicalDeviceLimits($sel:minTexelOffset:PhysicalDeviceLimits($sel:maxTexelOffset:PhysicalDeviceLimits.$sel:minTexelGatherOffset:PhysicalDeviceLimits.$sel:maxTexelGatherOffset:PhysicalDeviceLimits0$sel:minInterpolationOffset:PhysicalDeviceLimits0$sel:maxInterpolationOffset:PhysicalDeviceLimits9$sel:subPixelInterpolationOffsetBits:PhysicalDeviceLimits-$sel:maxFramebufferWidth:PhysicalDeviceLimits.$sel:maxFramebufferHeight:PhysicalDeviceLimits.$sel:maxFramebufferLayers:PhysicalDeviceLimits6$sel:framebufferColorSampleCounts:PhysicalDeviceLimits6$sel:framebufferDepthSampleCounts:PhysicalDeviceLimits8$sel:framebufferStencilSampleCounts:PhysicalDeviceLimits>$sel:framebufferNoAttachmentsSampleCounts:PhysicalDeviceLimits-$sel:maxColorAttachments:PhysicalDeviceLimits7$sel:sampledImageColorSampleCounts:PhysicalDeviceLimits9$sel:sampledImageIntegerSampleCounts:PhysicalDeviceLimits7$sel:sampledImageDepthSampleCounts:PhysicalDeviceLimits9$sel:sampledImageStencilSampleCounts:PhysicalDeviceLimits2$sel:storageImageSampleCounts:PhysicalDeviceLimits,$sel:maxSampleMaskWords:PhysicalDeviceLimits5$sel:timestampComputeAndGraphics:PhysicalDeviceLimits)$sel:timestampPeriod:PhysicalDeviceLimits*$sel:maxClipDistances:PhysicalDeviceLimits*$sel:maxCullDistances:PhysicalDeviceLimits9$sel:maxCombinedClipAndCullDistances:PhysicalDeviceLimits1$sel:discreteQueuePriorities:PhysicalDeviceLimits($sel:pointSizeRange:PhysicalDeviceLimits($sel:lineWidthRange:PhysicalDeviceLimits.$sel:pointSizeGranularity:PhysicalDeviceLimits.$sel:lineWidthGranularity:PhysicalDeviceLimits%$sel:strictLines:PhysicalDeviceLimits1$sel:standardSampleLocations:PhysicalDeviceLimits:$sel:optimalBufferCopyOffsetAlignment:PhysicalDeviceLimits<$sel:optimalBufferCopyRowPitchAlignment:PhysicalDeviceLimits-$sel:nonCoherentAtomSize:PhysicalDeviceLimitsA$sel:residencyStandard2DBlockShape:PhysicalDeviceSparsePropertiesL$sel:residencyStandard2DMultisampleBlockShape:PhysicalDeviceSparsePropertiesA$sel:residencyStandard3DBlockShape:PhysicalDeviceSparseProperties;$sel:residencyAlignedMipSize:PhysicalDeviceSparseProperties>$sel:residencyNonResidentStrict:PhysicalDeviceSparseProperties.$sel:robustBufferAccess:PhysicalDeviceFeatures/$sel:fullDrawIndexUint32:PhysicalDeviceFeatures*$sel:imageCubeArray:PhysicalDeviceFeatures,$sel:independentBlend:PhysicalDeviceFeatures*$sel:geometryShader:PhysicalDeviceFeatures.$sel:tessellationShader:PhysicalDeviceFeatures-$sel:sampleRateShading:PhysicalDeviceFeatures($sel:dualSrcBlend:PhysicalDeviceFeatures#$sel:logicOp:PhysicalDeviceFeatures-$sel:multiDrawIndirect:PhysicalDeviceFeatures5$sel:drawIndirectFirstInstance:PhysicalDeviceFeatures&$sel:depthClamp:PhysicalDeviceFeatures*$sel:depthBiasClamp:PhysicalDeviceFeatures,$sel:fillModeNonSolid:PhysicalDeviceFeatures'$sel:depthBounds:PhysicalDeviceFeatures%$sel:wideLines:PhysicalDeviceFeatures'$sel:largePoints:PhysicalDeviceFeatures&$sel:alphaToOne:PhysicalDeviceFeatures)$sel:multiViewport:PhysicalDeviceFeatures-$sel:samplerAnisotropy:PhysicalDeviceFeatures2$sel:textureCompressionETC2:PhysicalDeviceFeatures6$sel:textureCompressionASTC_LDR:PhysicalDeviceFeatures0$sel:textureCompressionBC:PhysicalDeviceFeatures1$sel:occlusionQueryPrecise:PhysicalDeviceFeatures3$sel:pipelineStatisticsQuery:PhysicalDeviceFeatures:$sel:vertexPipelineStoresAndAtomics:PhysicalDeviceFeatures4$sel:fragmentStoresAndAtomics:PhysicalDeviceFeaturesB$sel:shaderTessellationAndGeometryPointSize:PhysicalDeviceFeatures5$sel:shaderImageGatherExtended:PhysicalDeviceFeatures=$sel:shaderStorageImageExtendedFormats:PhysicalDeviceFeatures9$sel:shaderStorageImageMultisample:PhysicalDeviceFeatures?$sel:shaderStorageImageReadWithoutFormat:PhysicalDeviceFeatures@$sel:shaderStorageImageWriteWithoutFormat:PhysicalDeviceFeaturesC$sel:shaderUniformBufferArrayDynamicIndexing:PhysicalDeviceFeaturesB$sel:shaderSampledImageArrayDynamicIndexing:PhysicalDeviceFeaturesC$sel:shaderStorageBufferArrayDynamicIndexing:PhysicalDeviceFeaturesB$sel:shaderStorageImageArrayDynamicIndexing:PhysicalDeviceFeatures.$sel:shaderClipDistance:PhysicalDeviceFeatures.$sel:shaderCullDistance:PhysicalDeviceFeatures)$sel:shaderFloat64:PhysicalDeviceFeatures'$sel:shaderInt64:PhysicalDeviceFeatures'$sel:shaderInt16:PhysicalDeviceFeatures3$sel:shaderResourceResidency:PhysicalDeviceFeatures0$sel:shaderResourceMinLod:PhysicalDeviceFeatures)$sel:sparseBinding:PhysicalDeviceFeatures1$sel:sparseResidencyBuffer:PhysicalDeviceFeatures2$sel:sparseResidencyImage2D:PhysicalDeviceFeatures2$sel:sparseResidencyImage3D:PhysicalDeviceFeatures3$sel:sparseResidency2Samples:PhysicalDeviceFeatures3$sel:sparseResidency4Samples:PhysicalDeviceFeatures3$sel:sparseResidency8Samples:PhysicalDeviceFeatures4$sel:sparseResidency16Samples:PhysicalDeviceFeatures2$sel:sparseResidencyAliased:PhysicalDeviceFeatures3$sel:variableMultisampleRate:PhysicalDeviceFeatures,$sel:inheritedQueries:PhysicalDeviceFeatures$$sel:maxExtent:ImageFormatProperties'$sel:maxMipLevels:ImageFormatProperties)$sel:maxArrayLayers:ImageFormatProperties'$sel:sampleCounts:ImageFormatProperties*$sel:maxResourceSize:ImageFormatProperties*$sel:linearTilingFeatures:FormatProperties+$sel:optimalTilingFeatures:FormatProperties$$sel:bufferFeatures:FormatProperties$sel:size:MemoryHeap$sel:flags:MemoryHeap$sel:propertyFlags:MemoryType$sel:heapIndex:MemoryType3$sel:memoryTypeCount:PhysicalDeviceMemoryProperties/$sel:memoryTypes:PhysicalDeviceMemoryProperties3$sel:memoryHeapCount:PhysicalDeviceMemoryProperties/$sel:memoryHeaps:PhysicalDeviceMemoryProperties%$sel:queueFlags:QueueFamilyProperties%$sel:queueCount:QueueFamilyProperties-$sel:timestampValidBits:QueueFamilyProperties6$sel:minImageTransferGranularity:QueueFamilyProperties$sel:next:InstanceCreateInfo$sel:flags:InstanceCreateInfo'$sel:applicationInfo:InstanceCreateInfo)$sel:enabledLayerNames:InstanceCreateInfo-$sel:enabledExtensionNames:InstanceCreateInfo$$sel:applicationName:ApplicationInfo'$sel:applicationVersion:ApplicationInfo$sel:engineName:ApplicationInfo"$sel:engineVersion:ApplicationInfo$sel:apiVersion:ApplicationInfo($sel:apiVersion:PhysicalDeviceProperties+$sel:driverVersion:PhysicalDeviceProperties&$sel:vendorID:PhysicalDeviceProperties&$sel:deviceID:PhysicalDeviceProperties($sel:deviceType:PhysicalDeviceProperties($sel:deviceName:PhysicalDeviceProperties/$sel:pipelineCacheUUID:PhysicalDeviceProperties$$sel:limits:PhysicalDeviceProperties.$sel:sparseProperties:PhysicalDeviceProperties withInstance$fZeroApplicationInfo$fFromCStructApplicationInfo$fToCStructApplicationInfo$fZeroInstanceCreateInfo$fFromCStructInstanceCreateInfo$fToCStructInstanceCreateInfo$fExtensibleInstanceCreateInfo$fZeroQueueFamilyProperties"$fFromCStructQueueFamilyProperties $fToCStructQueueFamilyProperties$fZeroMemoryType$fStorableMemoryType$fFromCStructMemoryType$fToCStructMemoryType$fZeroMemoryHeap$fStorableMemoryHeap$fFromCStructMemoryHeap$fToCStructMemoryHeap$$fZeroPhysicalDeviceMemoryProperties+$fFromCStructPhysicalDeviceMemoryProperties)$fToCStructPhysicalDeviceMemoryProperties$fZeroFormatProperties$fStorableFormatProperties$fFromCStructFormatProperties$fToCStructFormatProperties$fZeroImageFormatProperties"$fFromCStructImageFormatProperties $fToCStructImageFormatProperties$fZeroPhysicalDeviceFeatures $fStorablePhysicalDeviceFeatures#$fFromCStructPhysicalDeviceFeatures!$fToCStructPhysicalDeviceFeatures$$fZeroPhysicalDeviceSparseProperties($fStorablePhysicalDeviceSparseProperties+$fFromCStructPhysicalDeviceSparseProperties)$fToCStructPhysicalDeviceSparseProperties$fZeroPhysicalDeviceLimits$fStorablePhysicalDeviceLimits!$fFromCStructPhysicalDeviceLimits$fToCStructPhysicalDeviceLimits$fZeroPhysicalDeviceProperties%$fFromCStructPhysicalDeviceProperties#$fToCStructPhysicalDeviceProperties$fEqMemoryType$fEqMemoryHeap$fEqFormatProperties$fEqPhysicalDeviceFeatures"$fEqPhysicalDeviceSparseProperties$fEqPhysicalDeviceLimits$fShowPhysicalDeviceLimits$fGenericPhysicalDeviceLimits$$fShowPhysicalDeviceSparseProperties'$fGenericPhysicalDeviceSparseProperties$fShowPhysicalDeviceFeatures$fGenericPhysicalDeviceFeatures$fShowImageFormatProperties$fGenericImageFormatProperties$fShowFormatProperties$fGenericFormatProperties$fShowMemoryHeap$fGenericMemoryHeap$fShowMemoryType$fGenericMemoryType$$fShowPhysicalDeviceMemoryProperties'$fGenericPhysicalDeviceMemoryProperties$fShowQueueFamilyProperties$fGenericQueueFamilyProperties$fShowInstanceCreateInfo$fGenericInstanceCreateInfo$fShowApplicationInfo$fGenericApplicationInfo$fShowPhysicalDeviceProperties!$fGenericPhysicalDeviceProperties.NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME,NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSIONExternalMemoryFeatureFlagsNVExternalMemoryFeatureFlagBitsNV:$sel:imageFormatProperties:ExternalImageFormatPropertiesNV;$sel:externalMemoryFeatures:ExternalImageFormatPropertiesNVB$sel:exportFromImportedHandleTypes:ExternalImageFormatPropertiesNV:$sel:compatibleHandleTypes:ExternalImageFormatPropertiesNV)EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV)EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV-EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV2EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV3EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV/EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV($fReadExternalMemoryHandleTypeFlagBitsNV($fShowExternalMemoryHandleTypeFlagBitsNV%$fReadExternalMemoryFeatureFlagBitsNV%$fShowExternalMemoryFeatureFlagBitsNV%$fZeroExternalImageFormatPropertiesNV,$fFromCStructExternalImageFormatPropertiesNV*$fToCStructExternalImageFormatPropertiesNV&$fEqExternalMemoryHandleTypeFlagBitsNV'$fOrdExternalMemoryHandleTypeFlagBitsNV,$fStorableExternalMemoryHandleTypeFlagBitsNV($fZeroExternalMemoryHandleTypeFlagBitsNV($fBitsExternalMemoryHandleTypeFlagBitsNV#$fEqExternalMemoryFeatureFlagBitsNV$$fOrdExternalMemoryFeatureFlagBitsNV)$fStorableExternalMemoryFeatureFlagBitsNV%$fZeroExternalMemoryFeatureFlagBitsNV%$fBitsExternalMemoryFeatureFlagBitsNV%$fShowExternalImageFormatPropertiesNV($fGenericExternalImageFormatPropertiesNVSECURITY_ATTRIBUTESDWORD'NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME%NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION-$sel:attributes:ExportMemoryWin32HandleInfoNV+$sel:dwAccess:ExportMemoryWin32HandleInfoNV-$sel:handleType:ImportMemoryWin32HandleInfoNV)$sel:handle:ImportMemoryWin32HandleInfoNV#$fZeroImportMemoryWin32HandleInfoNV'$fStorableImportMemoryWin32HandleInfoNV*$fFromCStructImportMemoryWin32HandleInfoNV($fToCStructImportMemoryWin32HandleInfoNV#$fZeroExportMemoryWin32HandleInfoNV'$fStorableExportMemoryWin32HandleInfoNV*$fFromCStructExportMemoryWin32HandleInfoNV($fToCStructExportMemoryWin32HandleInfoNV!$fEqImportMemoryWin32HandleInfoNV!$fEqExportMemoryWin32HandleInfoNV#$fShowExportMemoryWin32HandleInfoNV&$fGenericExportMemoryWin32HandleInfoNV#$fShowImportMemoryWin32HandleInfoNV&$fGenericImportMemoryWin32HandleInfoNVLPCWSTR(KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME&KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION'$sel:memory:MemoryGetWin32HandleInfoKHR+$sel:handleType:MemoryGetWin32HandleInfoKHR2$sel:memoryTypeBits:MemoryWin32HandlePropertiesKHR.$sel:attributes:ExportMemoryWin32HandleInfoKHR,$sel:dwAccess:ExportMemoryWin32HandleInfoKHR($sel:name:ExportMemoryWin32HandleInfoKHR.$sel:handleType:ImportMemoryWin32HandleInfoKHR*$sel:handle:ImportMemoryWin32HandleInfoKHR($sel:name:ImportMemoryWin32HandleInfoKHR$$fZeroMemoryWin32HandlePropertiesKHR($fStorableMemoryWin32HandlePropertiesKHR+$fFromCStructMemoryWin32HandlePropertiesKHR)$fToCStructMemoryWin32HandlePropertiesKHR!$fZeroMemoryGetWin32HandleInfoKHR%$fStorableMemoryGetWin32HandleInfoKHR($fFromCStructMemoryGetWin32HandleInfoKHR&$fToCStructMemoryGetWin32HandleInfoKHR$$fZeroExportMemoryWin32HandleInfoKHR($fStorableExportMemoryWin32HandleInfoKHR+$fFromCStructExportMemoryWin32HandleInfoKHR)$fToCStructExportMemoryWin32HandleInfoKHR$$fZeroImportMemoryWin32HandleInfoKHR($fStorableImportMemoryWin32HandleInfoKHR+$fFromCStructImportMemoryWin32HandleInfoKHR)$fToCStructImportMemoryWin32HandleInfoKHR"$fEqMemoryWin32HandlePropertiesKHR$fEqMemoryGetWin32HandleInfoKHR"$fEqExportMemoryWin32HandleInfoKHR"$fEqImportMemoryWin32HandleInfoKHR!$fShowMemoryGetWin32HandleInfoKHR$$fGenericMemoryGetWin32HandleInfoKHR$$fShowMemoryWin32HandlePropertiesKHR'$fGenericMemoryWin32HandlePropertiesKHR$$fShowExportMemoryWin32HandleInfoKHR'$fGenericExportMemoryWin32HandleInfoKHR$$fShowImportMemoryWin32HandleInfoKHR'$fGenericImportMemoryWin32HandleInfoKHR+KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME)KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION-$sel:semaphore:SemaphoreGetWin32HandleInfoKHR.$sel:handleType:SemaphoreGetWin32HandleInfoKHR5$sel:waitSemaphoreValuesCount:D3D12FenceSubmitInfoKHR0$sel:waitSemaphoreValues:D3D12FenceSubmitInfoKHR7$sel:signalSemaphoreValuesCount:D3D12FenceSubmitInfoKHR2$sel:signalSemaphoreValues:D3D12FenceSubmitInfoKHR1$sel:attributes:ExportSemaphoreWin32HandleInfoKHR/$sel:dwAccess:ExportSemaphoreWin32HandleInfoKHR+$sel:name:ExportSemaphoreWin32HandleInfoKHR0$sel:semaphore:ImportSemaphoreWin32HandleInfoKHR,$sel:flags:ImportSemaphoreWin32HandleInfoKHR1$sel:handleType:ImportSemaphoreWin32HandleInfoKHR-$sel:handle:ImportSemaphoreWin32HandleInfoKHR+$sel:name:ImportSemaphoreWin32HandleInfoKHR'$fZeroImportSemaphoreWin32HandleInfoKHR+$fStorableImportSemaphoreWin32HandleInfoKHR.$fFromCStructImportSemaphoreWin32HandleInfoKHR,$fToCStructImportSemaphoreWin32HandleInfoKHR'$fZeroExportSemaphoreWin32HandleInfoKHR+$fStorableExportSemaphoreWin32HandleInfoKHR.$fFromCStructExportSemaphoreWin32HandleInfoKHR,$fToCStructExportSemaphoreWin32HandleInfoKHR$fZeroD3D12FenceSubmitInfoKHR$$fFromCStructD3D12FenceSubmitInfoKHR"$fToCStructD3D12FenceSubmitInfoKHR$$fZeroSemaphoreGetWin32HandleInfoKHR($fStorableSemaphoreGetWin32HandleInfoKHR+$fFromCStructSemaphoreGetWin32HandleInfoKHR)$fToCStructSemaphoreGetWin32HandleInfoKHR%$fEqImportSemaphoreWin32HandleInfoKHR%$fEqExportSemaphoreWin32HandleInfoKHR"$fEqSemaphoreGetWin32HandleInfoKHR$$fShowSemaphoreGetWin32HandleInfoKHR'$fGenericSemaphoreGetWin32HandleInfoKHR$fShowD3D12FenceSubmitInfoKHR $fGenericD3D12FenceSubmitInfoKHR'$fShowExportSemaphoreWin32HandleInfoKHR*$fGenericExportSemaphoreWin32HandleInfoKHR'$fShowImportSemaphoreWin32HandleInfoKHR*$fGenericImportSemaphoreWin32HandleInfoKHR'KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME%KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION%$sel:fence:FenceGetWin32HandleInfoKHR*$sel:handleType:FenceGetWin32HandleInfoKHR-$sel:attributes:ExportFenceWin32HandleInfoKHR+$sel:dwAccess:ExportFenceWin32HandleInfoKHR'$sel:name:ExportFenceWin32HandleInfoKHR($sel:fence:ImportFenceWin32HandleInfoKHR($sel:flags:ImportFenceWin32HandleInfoKHR-$sel:handleType:ImportFenceWin32HandleInfoKHR)$sel:handle:ImportFenceWin32HandleInfoKHR'$sel:name:ImportFenceWin32HandleInfoKHR#$fZeroImportFenceWin32HandleInfoKHR'$fStorableImportFenceWin32HandleInfoKHR*$fFromCStructImportFenceWin32HandleInfoKHR($fToCStructImportFenceWin32HandleInfoKHR#$fZeroExportFenceWin32HandleInfoKHR'$fStorableExportFenceWin32HandleInfoKHR*$fFromCStructExportFenceWin32HandleInfoKHR($fToCStructExportFenceWin32HandleInfoKHR $fZeroFenceGetWin32HandleInfoKHR$$fStorableFenceGetWin32HandleInfoKHR'$fFromCStructFenceGetWin32HandleInfoKHR%$fToCStructFenceGetWin32HandleInfoKHR!$fEqImportFenceWin32HandleInfoKHR!$fEqExportFenceWin32HandleInfoKHR$fEqFenceGetWin32HandleInfoKHR $fShowFenceGetWin32HandleInfoKHR#$fGenericFenceGetWin32HandleInfoKHR#$fShowExportFenceWin32HandleInfoKHR&$fGenericExportFenceWin32HandleInfoKHR#$fShowImportFenceWin32HandleInfoKHR&$fGenericImportFenceWin32HandleInfoKHR!NV_EXTERNAL_MEMORY_EXTENSION_NAMENV_EXTERNAL_MEMORY_SPEC_VERSION+$sel:handleTypes:ExportMemoryAllocateInfoNV0$sel:handleTypes:ExternalMemoryImageCreateInfoNV%$fZeroExternalMemoryImageCreateInfoNV)$fStorableExternalMemoryImageCreateInfoNV,$fFromCStructExternalMemoryImageCreateInfoNV*$fToCStructExternalMemoryImageCreateInfoNV $fZeroExportMemoryAllocateInfoNV$$fStorableExportMemoryAllocateInfoNV'$fFromCStructExportMemoryAllocateInfoNV%$fToCStructExportMemoryAllocateInfoNV#$fEqExternalMemoryImageCreateInfoNV$fEqExportMemoryAllocateInfoNV $fShowExportMemoryAllocateInfoNV#$fGenericExportMemoryAllocateInfoNV%$fShowExternalMemoryImageCreateInfoNV($fGenericExternalMemoryImageCreateInfoNV0$sel:format:PhysicalDeviceSparseImageFormatInfo2/$sel:type':PhysicalDeviceSparseImageFormatInfo21$sel:samples:PhysicalDeviceSparseImageFormatInfo2/$sel:usage:PhysicalDeviceSparseImageFormatInfo20$sel:tiling:PhysicalDeviceSparseImageFormatInfo2,$sel:properties:SparseImageFormatProperties2)$sel:next:PhysicalDeviceMemoryProperties25$sel:memoryProperties:PhysicalDeviceMemoryProperties2 $sel:next:QueueFamilyProperties21$sel:queueFamilyProperties:QueueFamilyProperties2($sel:next:PhysicalDeviceImageFormatInfo2*$sel:format:PhysicalDeviceImageFormatInfo2)$sel:type':PhysicalDeviceImageFormatInfo2*$sel:tiling:PhysicalDeviceImageFormatInfo2)$sel:usage:PhysicalDeviceImageFormatInfo2)$sel:flags:PhysicalDeviceImageFormatInfo2 $sel:next:ImageFormatProperties21$sel:imageFormatProperties:ImageFormatProperties2$sel:next:FormatProperties2'$sel:formatProperties:FormatProperties2#$sel:next:PhysicalDeviceProperties2)$sel:properties:PhysicalDeviceProperties2!$sel:next:PhysicalDeviceFeatures2%$sel:features:PhysicalDeviceFeatures2$fZeroPhysicalDeviceFeatures2$$fFromCStructPhysicalDeviceFeatures2"$fToCStructPhysicalDeviceFeatures2#$fExtensiblePhysicalDeviceFeatures2$fZeroPhysicalDeviceProperties2&$fFromCStructPhysicalDeviceProperties2$$fToCStructPhysicalDeviceProperties2%$fExtensiblePhysicalDeviceProperties2$fZeroFormatProperties2$fFromCStructFormatProperties2$fToCStructFormatProperties2$fExtensibleFormatProperties2$fZeroImageFormatProperties2#$fFromCStructImageFormatProperties2!$fToCStructImageFormatProperties2"$fExtensibleImageFormatProperties2$$fZeroPhysicalDeviceImageFormatInfo2+$fFromCStructPhysicalDeviceImageFormatInfo2)$fToCStructPhysicalDeviceImageFormatInfo2*$fExtensiblePhysicalDeviceImageFormatInfo2$fZeroQueueFamilyProperties2#$fFromCStructQueueFamilyProperties2!$fToCStructQueueFamilyProperties2"$fExtensibleQueueFamilyProperties2%$fZeroPhysicalDeviceMemoryProperties2,$fFromCStructPhysicalDeviceMemoryProperties2*$fToCStructPhysicalDeviceMemoryProperties2+$fExtensiblePhysicalDeviceMemoryProperties2"$fZeroSparseImageFormatProperties2)$fFromCStructSparseImageFormatProperties2'$fToCStructSparseImageFormatProperties2*$fZeroPhysicalDeviceSparseImageFormatInfo2.$fStorablePhysicalDeviceSparseImageFormatInfo21$fFromCStructPhysicalDeviceSparseImageFormatInfo2/$fToCStructPhysicalDeviceSparseImageFormatInfo2($fEqPhysicalDeviceSparseImageFormatInfo2*$fShowPhysicalDeviceSparseImageFormatInfo2-$fGenericPhysicalDeviceSparseImageFormatInfo2"$fShowSparseImageFormatProperties2%$fGenericSparseImageFormatProperties2%$fShowPhysicalDeviceMemoryProperties2($fGenericPhysicalDeviceMemoryProperties2$fShowQueueFamilyProperties2$fGenericQueueFamilyProperties2$$fShowPhysicalDeviceImageFormatInfo2'$fGenericPhysicalDeviceImageFormatInfo2$fShowImageFormatProperties2$fGenericImageFormatProperties2$fShowFormatProperties2$fGenericFormatProperties2$fShowPhysicalDeviceProperties2"$fGenericPhysicalDeviceProperties2$fShowPhysicalDeviceFeatures2 $fGenericPhysicalDeviceFeatures23KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME1KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION'PhysicalDeviceSparseImageFormatInfo2KHRSparseImageFormatProperties2KHR"PhysicalDeviceMemoryProperties2KHRQueueFamilyProperties2KHR!PhysicalDeviceImageFormatInfo2KHRImageFormatProperties2KHRFormatProperties2KHRPhysicalDeviceProperties2KHRPhysicalDeviceFeatures2KHR=STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR3STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR6STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR,STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR6STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR,STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR&STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR/STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR-STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR$sel:next:DeviceCreateInfo$sel:flags:DeviceCreateInfo&$sel:queueCreateInfos:DeviceCreateInfo'$sel:enabledLayerNames:DeviceCreateInfo+$sel:enabledExtensionNames:DeviceCreateInfo%$sel:enabledFeatures:DeviceCreateInfo$sel:next:DeviceQueueCreateInfo $sel:flags:DeviceQueueCreateInfo+$sel:queueFamilyIndex:DeviceQueueCreateInfo*$sel:queuePriorities:DeviceQueueCreateInfo withDevice$fZeroDeviceQueueCreateInfo"$fFromCStructDeviceQueueCreateInfo $fToCStructDeviceQueueCreateInfo!$fExtensibleDeviceQueueCreateInfo$fZeroDeviceCreateInfo$fFromCStructDeviceCreateInfo$fToCStructDeviceCreateInfo$fExtensibleDeviceCreateInfo$fShowDeviceCreateInfo$fGenericDeviceCreateInfo$fShowDeviceQueueCreateInfo$fGenericDeviceQueueCreateInfo#$sel:next:DescriptorSetAllocateInfo-$sel:descriptorPool:DescriptorSetAllocateInfo)$sel:setLayouts:DescriptorSetAllocateInfo"$sel:next:DescriptorPoolCreateInfo#$sel:flags:DescriptorPoolCreateInfo%$sel:maxSets:DescriptorPoolCreateInfo'$sel:poolSizes:DescriptorPoolCreateInfo$sel:type':DescriptorPoolSize'$sel:descriptorCount:DescriptorPoolSize'$sel:next:DescriptorSetLayoutCreateInfo($sel:flags:DescriptorSetLayoutCreateInfo+$sel:bindings:DescriptorSetLayoutCreateInfo'$sel:binding:DescriptorSetLayoutBinding.$sel:descriptorType:DescriptorSetLayoutBinding/$sel:descriptorCount:DescriptorSetLayoutBinding*$sel:stageFlags:DescriptorSetLayoutBinding1$sel:immutableSamplers:DescriptorSetLayoutBinding$sel:srcSet:CopyDescriptorSet!$sel:srcBinding:CopyDescriptorSet&$sel:srcArrayElement:CopyDescriptorSet$sel:dstSet:CopyDescriptorSet!$sel:dstBinding:CopyDescriptorSet&$sel:dstArrayElement:CopyDescriptorSet&$sel:descriptorCount:CopyDescriptorSet$sel:next:WriteDescriptorSet$sel:dstSet:WriteDescriptorSet"$sel:dstBinding:WriteDescriptorSet'$sel:dstArrayElement:WriteDescriptorSet'$sel:descriptorCount:WriteDescriptorSet&$sel:descriptorType:WriteDescriptorSet!$sel:imageInfo:WriteDescriptorSet"$sel:bufferInfo:WriteDescriptorSet'$sel:texelBufferView:WriteDescriptorSet $sel:sampler:DescriptorImageInfo"$sel:imageView:DescriptorImageInfo$$sel:imageLayout:DescriptorImageInfo $sel:buffer:DescriptorBufferInfo $sel:offset:DescriptorBufferInfo$sel:range:DescriptorBufferInfowithDescriptorSetLayoutwithDescriptorPoolwithDescriptorSets$fZeroDescriptorBufferInfo$fStorableDescriptorBufferInfo!$fFromCStructDescriptorBufferInfo$fToCStructDescriptorBufferInfo$fZeroDescriptorImageInfo$fStorableDescriptorImageInfo $fFromCStructDescriptorImageInfo$fToCStructDescriptorImageInfo$fZeroWriteDescriptorSet$fFromCStructWriteDescriptorSet$fToCStructWriteDescriptorSet$fExtensibleWriteDescriptorSet$fZeroCopyDescriptorSet$fStorableCopyDescriptorSet$fFromCStructCopyDescriptorSet$fToCStructCopyDescriptorSet $fZeroDescriptorSetLayoutBinding'$fFromCStructDescriptorSetLayoutBinding%$fToCStructDescriptorSetLayoutBinding#$fZeroDescriptorSetLayoutCreateInfo*$fFromCStructDescriptorSetLayoutCreateInfo($fToCStructDescriptorSetLayoutCreateInfo)$fExtensibleDescriptorSetLayoutCreateInfo$fZeroDescriptorPoolSize$fStorableDescriptorPoolSize$fFromCStructDescriptorPoolSize$fToCStructDescriptorPoolSize$fZeroDescriptorPoolCreateInfo%$fFromCStructDescriptorPoolCreateInfo#$fToCStructDescriptorPoolCreateInfo$$fExtensibleDescriptorPoolCreateInfo$fZeroDescriptorSetAllocateInfo&$fFromCStructDescriptorSetAllocateInfo$$fToCStructDescriptorSetAllocateInfo%$fExtensibleDescriptorSetAllocateInfo$fEqDescriptorBufferInfo$fEqDescriptorImageInfo$fEqCopyDescriptorSet$fEqDescriptorPoolSize$fShowDescriptorSetAllocateInfo"$fGenericDescriptorSetAllocateInfo$fShowDescriptorPoolCreateInfo!$fGenericDescriptorPoolCreateInfo$fShowDescriptorPoolSize$fGenericDescriptorPoolSize#$fShowDescriptorSetLayoutCreateInfo&$fGenericDescriptorSetLayoutCreateInfo $fShowDescriptorSetLayoutBinding#$fGenericDescriptorSetLayoutBinding$fShowCopyDescriptorSet$fGenericCopyDescriptorSet$fShowWriteDescriptorSet$fGenericWriteDescriptorSet$fShowDescriptorImageInfo$fGenericDescriptorImageInfo$fShowDescriptorBufferInfo$fGenericDescriptorBufferInfo"KHR_PUSH_DESCRIPTOR_EXTENSION_NAME KHR_PUSH_DESCRIPTOR_SPEC_VERSIONA$sel:maxPushDescriptors:PhysicalDevicePushDescriptorPropertiesKHR/$fZeroPhysicalDevicePushDescriptorPropertiesKHR3$fStorablePhysicalDevicePushDescriptorPropertiesKHR6$fFromCStructPhysicalDevicePushDescriptorPropertiesKHR4$fToCStructPhysicalDevicePushDescriptorPropertiesKHR-$fEqPhysicalDevicePushDescriptorPropertiesKHR/$fShowPhysicalDevicePushDescriptorPropertiesKHR2$fGenericPhysicalDevicePushDescriptorPropertiesKHR-KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME+KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION%DescriptorUpdateTemplateCreateInfoKHR DescriptorUpdateTemplateEntryKHRDescriptorUpdateTemplateTypeKHRDescriptorUpdateTemplateKHR&DescriptorUpdateTemplateCreateFlagsKHR;DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT2DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR*OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR9STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR$$sel:next:DescriptorSetLayoutSupport)$sel:supported:DescriptorSetLayoutSupport>$sel:maxPerSetDescriptors:PhysicalDeviceMaintenance3PropertiesA$sel:maxMemoryAllocationSize:PhysicalDeviceMaintenance3Properties*$fZeroPhysicalDeviceMaintenance3Properties.$fStorablePhysicalDeviceMaintenance3Properties1$fFromCStructPhysicalDeviceMaintenance3Properties/$fToCStructPhysicalDeviceMaintenance3Properties $fZeroDescriptorSetLayoutSupport'$fFromCStructDescriptorSetLayoutSupport%$fToCStructDescriptorSetLayoutSupport&$fExtensibleDescriptorSetLayoutSupport($fEqPhysicalDeviceMaintenance3Properties $fShowDescriptorSetLayoutSupport#$fGenericDescriptorSetLayoutSupport*$fShowPhysicalDeviceMaintenance3Properties-$fGenericPhysicalDeviceMaintenance3PropertiesKHR_MAINTENANCE3_EXTENSION_NAMEKHR_MAINTENANCE3_SPEC_VERSIONDescriptorSetLayoutSupportKHR'PhysicalDeviceMaintenance3PropertiesKHR0STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR;STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHRAPI_VERSION_1_1 ClearValueColor DepthStencilFloat32Int32Uint32$sel:aspectMask:ClearAttachment$$sel:colorAttachment:ClearAttachment$sel:clearValue:ClearAttachment!$sel:depth:ClearDepthStencilValue#$sel:stencil:ClearDepthStencilValue$sel:next:RenderPassBeginInfo#$sel:renderPass:RenderPassBeginInfo$$sel:framebuffer:RenderPassBeginInfo#$sel:renderArea:RenderPassBeginInfo$$sel:clearValues:RenderPassBeginInfo $sel:srcSubresource:ImageResolve$sel:srcOffset:ImageResolve $sel:dstSubresource:ImageResolve$sel:dstOffset:ImageResolve$sel:extent:ImageResolve!$sel:bufferOffset:BufferImageCopy$$sel:bufferRowLength:BufferImageCopy&$sel:bufferImageHeight:BufferImageCopy%$sel:imageSubresource:BufferImageCopy $sel:imageOffset:BufferImageCopy $sel:imageExtent:BufferImageCopy$sel:srcSubresource:ImageBlit$sel:srcOffsets:ImageBlit$sel:dstSubresource:ImageBlit$sel:dstOffsets:ImageBlit$sel:srcSubresource:ImageCopy$sel:srcOffset:ImageCopy$sel:dstSubresource:ImageCopy$sel:dstOffset:ImageCopy$sel:extent:ImageCopy$sel:srcOffset:BufferCopy$sel:dstOffset:BufferCopy$sel:size:BufferCopy&$sel:aspectMask:ImageSubresourceLayers$$sel:mipLevel:ImageSubresourceLayers*$sel:baseArrayLayer:ImageSubresourceLayers&$sel:layerCount:ImageSubresourceLayers$sel:rect:ClearRect$sel:baseArrayLayer:ClearRect$sel:layerCount:ClearRectcmdWaitEventsSafe cmdUseQuerycmdUseRenderPass$fZeroClearRect$fFromCStructClearRect$fToCStructClearRect$fZeroImageSubresourceLayers $fStorableImageSubresourceLayers#$fFromCStructImageSubresourceLayers!$fToCStructImageSubresourceLayers$fZeroBufferCopy$fStorableBufferCopy$fFromCStructBufferCopy$fToCStructBufferCopy$fZeroImageCopy$fFromCStructImageCopy$fToCStructImageCopy$fZeroImageBlit$fFromCStructImageBlit$fToCStructImageBlit$fZeroBufferImageCopy$fFromCStructBufferImageCopy$fToCStructBufferImageCopy$fZeroImageResolve$fFromCStructImageResolve$fToCStructImageResolve$fZeroClearDepthStencilValue $fStorableClearDepthStencilValue#$fFromCStructClearDepthStencilValue!$fToCStructClearDepthStencilValue$fZeroClearColorValue$fToCStructClearColorValue$fZeroClearValue$fToCStructClearValue$fZeroClearAttachment$fToCStructClearAttachment$fZeroRenderPassBeginInfo$fToCStructRenderPassBeginInfo$fExtensibleRenderPassBeginInfo$fEqImageSubresourceLayers$fEqBufferCopy$fEqClearDepthStencilValue$fShowClearColorValue$fShowClearValue$fShowClearAttachment$fGenericClearAttachment$fShowClearDepthStencilValue$fGenericClearDepthStencilValue$fShowRenderPassBeginInfo$fGenericRenderPassBeginInfo$fShowImageResolve$fGenericImageResolve$fShowBufferImageCopy$fGenericBufferImageCopy$fShowImageBlit$fGenericImageBlit$fShowImageCopy$fGenericImageCopy$fShowBufferCopy$fGenericBufferCopy$fShowImageSubresourceLayers$fGenericImageSubresourceLayers$fShowClearRect$fGenericClearRect&EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME$EXT_CUSTOM_BORDER_COLOR_SPEC_VERSIONB$sel:customBorderColors:PhysicalDeviceCustomBorderColorFeaturesEXTN$sel:customBorderColorWithoutFormat:PhysicalDeviceCustomBorderColorFeaturesEXTN$sel:maxCustomBorderColorSamplers:PhysicalDeviceCustomBorderColorPropertiesEXT<$sel:customBorderColor:SamplerCustomBorderColorCreateInfoEXT1$sel:format:SamplerCustomBorderColorCreateInfoEXT+$fZeroSamplerCustomBorderColorCreateInfoEXT0$fToCStructSamplerCustomBorderColorCreateInfoEXT2$fZeroPhysicalDeviceCustomBorderColorPropertiesEXT6$fStorablePhysicalDeviceCustomBorderColorPropertiesEXT9$fFromCStructPhysicalDeviceCustomBorderColorPropertiesEXT7$fToCStructPhysicalDeviceCustomBorderColorPropertiesEXT0$fZeroPhysicalDeviceCustomBorderColorFeaturesEXT4$fStorablePhysicalDeviceCustomBorderColorFeaturesEXT7$fFromCStructPhysicalDeviceCustomBorderColorFeaturesEXT5$fToCStructPhysicalDeviceCustomBorderColorFeaturesEXT0$fEqPhysicalDeviceCustomBorderColorPropertiesEXT.$fEqPhysicalDeviceCustomBorderColorFeaturesEXT0$fShowPhysicalDeviceCustomBorderColorFeaturesEXT3$fGenericPhysicalDeviceCustomBorderColorFeaturesEXT2$fShowPhysicalDeviceCustomBorderColorPropertiesEXT5$fGenericPhysicalDeviceCustomBorderColorPropertiesEXT+$fShowSamplerCustomBorderColorCreateInfoEXT.$fGenericSamplerCustomBorderColorCreateInfoEXT$sel:contents:SubpassBeginInfo$sel:next:RenderPassCreateInfo2 $sel:flags:RenderPassCreateInfo2&$sel:attachments:RenderPassCreateInfo2$$sel:subpasses:RenderPassCreateInfo2'$sel:dependencies:RenderPassCreateInfo2.$sel:correlatedViewMasks:RenderPassCreateInfo2"$sel:srcSubpass:SubpassDependency2"$sel:dstSubpass:SubpassDependency2$$sel:srcStageMask:SubpassDependency2$$sel:dstStageMask:SubpassDependency2%$sel:srcAccessMask:SubpassDependency2%$sel:dstAccessMask:SubpassDependency2'$sel:dependencyFlags:SubpassDependency2"$sel:viewOffset:SubpassDependency2$sel:next:SubpassDescription2$sel:flags:SubpassDescription2*$sel:pipelineBindPoint:SubpassDescription2!$sel:viewMask:SubpassDescription2)$sel:inputAttachments:SubpassDescription2)$sel:colorAttachments:SubpassDescription2+$sel:resolveAttachments:SubpassDescription2/$sel:depthStencilAttachment:SubpassDescription2,$sel:preserveAttachments:SubpassDescription2$sel:next:AttachmentReference2$$sel:attachment:AttachmentReference2 $sel:layout:AttachmentReference2$$sel:aspectMask:AttachmentReference2 $sel:next:AttachmentDescription2!$sel:flags:AttachmentDescription2"$sel:format:AttachmentDescription2#$sel:samples:AttachmentDescription2"$sel:loadOp:AttachmentDescription2#$sel:storeOp:AttachmentDescription2)$sel:stencilLoadOp:AttachmentDescription2*$sel:stencilStoreOp:AttachmentDescription2)$sel:initialLayout:AttachmentDescription2'$sel:finalLayout:AttachmentDescription2cmdUseRenderPass2$fZeroAttachmentDescription2#$fFromCStructAttachmentDescription2!$fToCStructAttachmentDescription2"$fExtensibleAttachmentDescription2$fZeroAttachmentReference2!$fFromCStructAttachmentReference2$fToCStructAttachmentReference2 $fExtensibleAttachmentReference2$fZeroSubpassDescription2 $fFromCStructSubpassDescription2$fToCStructSubpassDescription2$fExtensibleSubpassDescription2$fZeroSubpassDependency2$fStorableSubpassDependency2$fFromCStructSubpassDependency2$fToCStructSubpassDependency2$fZeroRenderPassCreateInfo2"$fFromCStructRenderPassCreateInfo2 $fToCStructRenderPassCreateInfo2!$fExtensibleRenderPassCreateInfo2$fZeroSubpassBeginInfo$fStorableSubpassBeginInfo$fFromCStructSubpassBeginInfo$fToCStructSubpassBeginInfo$fZeroSubpassEndInfo$fStorableSubpassEndInfo$fFromCStructSubpassEndInfo$fToCStructSubpassEndInfo$fEqSubpassDependency2$fEqSubpassBeginInfo$fEqSubpassEndInfo$fShowSubpassEndInfo$fGenericSubpassEndInfo$fShowSubpassBeginInfo$fGenericSubpassBeginInfo$fShowRenderPassCreateInfo2$fGenericRenderPassCreateInfo2$fShowSubpassDependency2$fGenericSubpassDependency2$fShowSubpassDescription2$fGenericSubpassDescription2$fShowAttachmentReference2$fGenericAttachmentReference2$fShowAttachmentDescription2$fGenericAttachmentDescription2&KHR_CREATE_RENDERPASS_2_EXTENSION_NAME$KHR_CREATE_RENDERPASS_2_SPEC_VERSIONSubpassEndInfoKHRSubpassBeginInfoKHRRenderPassCreateInfo2KHRSubpassDependency2KHRSubpassDescription2KHRAttachmentReference2KHRAttachmentDescription2KHR#STRUCTURE_TYPE_SUBPASS_END_INFO_KHR%STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR,STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR'STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR(STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR)STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR+STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR;$sel:depthResolveMode:SubpassDescriptionDepthStencilResolve=$sel:stencilResolveMode:SubpassDescriptionDepthStencilResolveH$sel:depthStencilResolveAttachment:SubpassDescriptionDepthStencilResolveK$sel:supportedDepthResolveModes:PhysicalDeviceDepthStencilResolvePropertiesM$sel:supportedStencilResolveModes:PhysicalDeviceDepthStencilResolvePropertiesG$sel:independentResolveNone:PhysicalDeviceDepthStencilResolvePropertiesC$sel:independentResolve:PhysicalDeviceDepthStencilResolveProperties1$fZeroPhysicalDeviceDepthStencilResolveProperties5$fStorablePhysicalDeviceDepthStencilResolveProperties8$fFromCStructPhysicalDeviceDepthStencilResolveProperties6$fToCStructPhysicalDeviceDepthStencilResolveProperties+$fZeroSubpassDescriptionDepthStencilResolve2$fFromCStructSubpassDescriptionDepthStencilResolve0$fToCStructSubpassDescriptionDepthStencilResolve/$fEqPhysicalDeviceDepthStencilResolveProperties+$fShowSubpassDescriptionDepthStencilResolve.$fGenericSubpassDescriptionDepthStencilResolve1$fShowPhysicalDeviceDepthStencilResolveProperties4$fGenericPhysicalDeviceDepthStencilResolveProperties(KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME&KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION(SubpassDescriptionDepthStencilResolveKHR.PhysicalDeviceDepthStencilResolvePropertiesKHRResolveModeFlagBitsKHRResolveModeFlagsKHRRESOLVE_MODE_MAX_BIT_KHRRESOLVE_MODE_MIN_BIT_KHRRESOLVE_MODE_AVERAGE_BIT_KHR RESOLVE_MODE_SAMPLE_ZERO_BIT_KHRRESOLVE_MODE_NONE_KHR$sel:roundingModeIndependence:PhysicalDeviceVulkan12PropertiesK$sel:shaderSignedZeroInfNanPreserveFloat16:PhysicalDeviceVulkan12PropertiesK$sel:shaderSignedZeroInfNanPreserveFloat32:PhysicalDeviceVulkan12PropertiesK$sel:shaderSignedZeroInfNanPreserveFloat64:PhysicalDeviceVulkan12PropertiesA$sel:shaderDenormPreserveFloat16:PhysicalDeviceVulkan12PropertiesA$sel:shaderDenormPreserveFloat32:PhysicalDeviceVulkan12PropertiesA$sel:shaderDenormPreserveFloat64:PhysicalDeviceVulkan12PropertiesD$sel:shaderDenormFlushToZeroFloat16:PhysicalDeviceVulkan12PropertiesD$sel:shaderDenormFlushToZeroFloat32:PhysicalDeviceVulkan12PropertiesD$sel:shaderDenormFlushToZeroFloat64:PhysicalDeviceVulkan12PropertiesB$sel:shaderRoundingModeRTEFloat16:PhysicalDeviceVulkan12PropertiesB$sel:shaderRoundingModeRTEFloat32:PhysicalDeviceVulkan12PropertiesB$sel:shaderRoundingModeRTEFloat64:PhysicalDeviceVulkan12PropertiesB$sel:shaderRoundingModeRTZFloat16:PhysicalDeviceVulkan12PropertiesB$sel:shaderRoundingModeRTZFloat32:PhysicalDeviceVulkan12PropertiesB$sel:shaderRoundingModeRTZFloat64:PhysicalDeviceVulkan12PropertiesM$sel:maxUpdateAfterBindDescriptorsInAllPools:PhysicalDeviceVulkan12PropertiesV$sel:shaderUniformBufferArrayNonUniformIndexingNative:PhysicalDeviceVulkan12PropertiesU$sel:shaderSampledImageArrayNonUniformIndexingNative:PhysicalDeviceVulkan12PropertiesV$sel:shaderStorageBufferArrayNonUniformIndexingNative:PhysicalDeviceVulkan12PropertiesU$sel:shaderStorageImageArrayNonUniformIndexingNative:PhysicalDeviceVulkan12PropertiesX$sel:shaderInputAttachmentArrayNonUniformIndexingNative:PhysicalDeviceVulkan12PropertiesG$sel:robustBufferAccessUpdateAfterBind:PhysicalDeviceVulkan12Properties>$sel:quadDivergentImplicitLod:PhysicalDeviceVulkan12PropertiesR$sel:maxPerStageDescriptorUpdateAfterBindSamplers:PhysicalDeviceVulkan12PropertiesX$sel:maxPerStageDescriptorUpdateAfterBindUniformBuffers:PhysicalDeviceVulkan12PropertiesX$sel:maxPerStageDescriptorUpdateAfterBindStorageBuffers:PhysicalDeviceVulkan12PropertiesW$sel:maxPerStageDescriptorUpdateAfterBindSampledImages:PhysicalDeviceVulkan12PropertiesW$sel:maxPerStageDescriptorUpdateAfterBindStorageImages:PhysicalDeviceVulkan12PropertiesZ$sel:maxPerStageDescriptorUpdateAfterBindInputAttachments:PhysicalDeviceVulkan12PropertiesI$sel:maxPerStageUpdateAfterBindResources:PhysicalDeviceVulkan12PropertiesM$sel:maxDescriptorSetUpdateAfterBindSamplers:PhysicalDeviceVulkan12PropertiesS$sel:maxDescriptorSetUpdateAfterBindUniformBuffers:PhysicalDeviceVulkan12PropertiesZ$sel:maxDescriptorSetUpdateAfterBindUniformBuffersDynamic:PhysicalDeviceVulkan12PropertiesS$sel:maxDescriptorSetUpdateAfterBindStorageBuffers:PhysicalDeviceVulkan12PropertiesZ$sel:maxDescriptorSetUpdateAfterBindStorageBuffersDynamic:PhysicalDeviceVulkan12PropertiesR$sel:maxDescriptorSetUpdateAfterBindSampledImages:PhysicalDeviceVulkan12PropertiesR$sel:maxDescriptorSetUpdateAfterBindStorageImages:PhysicalDeviceVulkan12PropertiesU$sel:maxDescriptorSetUpdateAfterBindInputAttachments:PhysicalDeviceVulkan12Properties@$sel:supportedDepthResolveModes:PhysicalDeviceVulkan12PropertiesB$sel:supportedStencilResolveModes:PhysicalDeviceVulkan12Properties<$sel:independentResolveNone:PhysicalDeviceVulkan12Properties8$sel:independentResolve:PhysicalDeviceVulkan12PropertiesH$sel:filterMinmaxSingleComponentFormats:PhysicalDeviceVulkan12PropertiesG$sel:filterMinmaxImageComponentMapping:PhysicalDeviceVulkan12PropertiesI$sel:maxTimelineSemaphoreValueDifference:PhysicalDeviceVulkan12PropertiesI$sel:framebufferIntegerColorSampleCounts:PhysicalDeviceVulkan12Properties<$sel:samplerMirrorClampToEdge:PhysicalDeviceVulkan12Features5$sel:drawIndirectCount:PhysicalDeviceVulkan12Features;$sel:storageBuffer8BitAccess:PhysicalDeviceVulkan12FeaturesE$sel:uniformAndStorageBuffer8BitAccess:PhysicalDeviceVulkan12Features8$sel:storagePushConstant8:PhysicalDeviceVulkan12Features<$sel:shaderBufferInt64Atomics:PhysicalDeviceVulkan12Features<$sel:shaderSharedInt64Atomics:PhysicalDeviceVulkan12Features1$sel:shaderFloat16:PhysicalDeviceVulkan12Features.$sel:shaderInt8:PhysicalDeviceVulkan12Features6$sel:descriptorIndexing:PhysicalDeviceVulkan12FeaturesM$sel:shaderInputAttachmentArrayDynamicIndexing:PhysicalDeviceVulkan12FeaturesP$sel:shaderUniformTexelBufferArrayDynamicIndexing:PhysicalDeviceVulkan12FeaturesP$sel:shaderStorageTexelBufferArrayDynamicIndexing:PhysicalDeviceVulkan12FeaturesN$sel:shaderUniformBufferArrayNonUniformIndexing:PhysicalDeviceVulkan12FeaturesM$sel:shaderSampledImageArrayNonUniformIndexing:PhysicalDeviceVulkan12FeaturesN$sel:shaderStorageBufferArrayNonUniformIndexing:PhysicalDeviceVulkan12FeaturesM$sel:shaderStorageImageArrayNonUniformIndexing:PhysicalDeviceVulkan12FeaturesP$sel:shaderInputAttachmentArrayNonUniformIndexing:PhysicalDeviceVulkan12FeaturesS$sel:shaderUniformTexelBufferArrayNonUniformIndexing:PhysicalDeviceVulkan12FeaturesS$sel:shaderStorageTexelBufferArrayNonUniformIndexing:PhysicalDeviceVulkan12FeaturesQ$sel:descriptorBindingUniformBufferUpdateAfterBind:PhysicalDeviceVulkan12FeaturesP$sel:descriptorBindingSampledImageUpdateAfterBind:PhysicalDeviceVulkan12FeaturesP$sel:descriptorBindingStorageImageUpdateAfterBind:PhysicalDeviceVulkan12FeaturesQ$sel:descriptorBindingStorageBufferUpdateAfterBind:PhysicalDeviceVulkan12FeaturesV$sel:descriptorBindingUniformTexelBufferUpdateAfterBind:PhysicalDeviceVulkan12FeaturesV$sel:descriptorBindingStorageTexelBufferUpdateAfterBind:PhysicalDeviceVulkan12FeaturesM$sel:descriptorBindingUpdateUnusedWhilePending:PhysicalDeviceVulkan12FeaturesC$sel:descriptorBindingPartiallyBound:PhysicalDeviceVulkan12FeaturesL$sel:descriptorBindingVariableDescriptorCount:PhysicalDeviceVulkan12Features:$sel:runtimeDescriptorArray:PhysicalDeviceVulkan12Features7$sel:samplerFilterMinmax:PhysicalDeviceVulkan12Features5$sel:scalarBlockLayout:PhysicalDeviceVulkan12Features8$sel:imagelessFramebuffer:PhysicalDeviceVulkan12Features?$sel:uniformBufferStandardLayout:PhysicalDeviceVulkan12Features?$sel:shaderSubgroupExtendedTypes:PhysicalDeviceVulkan12Features?$sel:separateDepthStencilLayouts:PhysicalDeviceVulkan12Features2$sel:hostQueryReset:PhysicalDeviceVulkan12Features5$sel:timelineSemaphore:PhysicalDeviceVulkan12Features7$sel:bufferDeviceAddress:PhysicalDeviceVulkan12FeaturesD$sel:bufferDeviceAddressCaptureReplay:PhysicalDeviceVulkan12FeaturesB$sel:bufferDeviceAddressMultiDevice:PhysicalDeviceVulkan12Features5$sel:vulkanMemoryModel:PhysicalDeviceVulkan12Features@$sel:vulkanMemoryModelDeviceScope:PhysicalDeviceVulkan12FeaturesQ$sel:vulkanMemoryModelAvailabilityVisibilityChains:PhysicalDeviceVulkan12Features=$sel:shaderOutputViewportIndex:PhysicalDeviceVulkan12Features5$sel:shaderOutputLayer:PhysicalDeviceVulkan12Features>$sel:subgroupBroadcastDynamicId:PhysicalDeviceVulkan12Features0$sel:deviceUUID:PhysicalDeviceVulkan11Properties0$sel:driverUUID:PhysicalDeviceVulkan11Properties0$sel:deviceLUID:PhysicalDeviceVulkan11Properties4$sel:deviceNodeMask:PhysicalDeviceVulkan11Properties5$sel:deviceLUIDValid:PhysicalDeviceVulkan11Properties2$sel:subgroupSize:PhysicalDeviceVulkan11Properties=$sel:subgroupSupportedStages:PhysicalDeviceVulkan11PropertiesA$sel:subgroupSupportedOperations:PhysicalDeviceVulkan11PropertiesG$sel:subgroupQuadOperationsInAllStages:PhysicalDeviceVulkan11Properties;$sel:pointClippingBehavior:PhysicalDeviceVulkan11Properties;$sel:maxMultiviewViewCount:PhysicalDeviceVulkan11Properties?$sel:maxMultiviewInstanceIndex:PhysicalDeviceVulkan11Properties6$sel:protectedNoFault:PhysicalDeviceVulkan11Properties:$sel:maxPerSetDescriptors:PhysicalDeviceVulkan11Properties=$sel:maxMemoryAllocationSize:PhysicalDeviceVulkan11Properties<$sel:storageBuffer16BitAccess:PhysicalDeviceVulkan11FeaturesF$sel:uniformAndStorageBuffer16BitAccess:PhysicalDeviceVulkan11Features9$sel:storagePushConstant16:PhysicalDeviceVulkan11Features8$sel:storageInputOutput16:PhysicalDeviceVulkan11Features-$sel:multiview:PhysicalDeviceVulkan11Features;$sel:multiviewGeometryShader:PhysicalDeviceVulkan11Features?$sel:multiviewTessellationShader:PhysicalDeviceVulkan11FeaturesA$sel:variablePointersStorageBuffer:PhysicalDeviceVulkan11Features4$sel:variablePointers:PhysicalDeviceVulkan11Features3$sel:protectedMemory:PhysicalDeviceVulkan11Features:$sel:samplerYcbcrConversion:PhysicalDeviceVulkan11Features8$sel:shaderDrawParameters:PhysicalDeviceVulkan11FeaturesAPI_VERSION_1_2$$fZeroPhysicalDeviceVulkan11Features($fStorablePhysicalDeviceVulkan11Features+$fFromCStructPhysicalDeviceVulkan11Features)$fToCStructPhysicalDeviceVulkan11Features&$fZeroPhysicalDeviceVulkan11Properties*$fStorablePhysicalDeviceVulkan11Properties-$fFromCStructPhysicalDeviceVulkan11Properties+$fToCStructPhysicalDeviceVulkan11Properties$$fZeroPhysicalDeviceVulkan12Features($fStorablePhysicalDeviceVulkan12Features+$fFromCStructPhysicalDeviceVulkan12Features)$fToCStructPhysicalDeviceVulkan12Features&$fZeroPhysicalDeviceVulkan12Properties-$fFromCStructPhysicalDeviceVulkan12Properties+$fToCStructPhysicalDeviceVulkan12Properties"$fEqPhysicalDeviceVulkan11Features"$fEqPhysicalDeviceVulkan12Features&$fShowPhysicalDeviceVulkan12Properties)$fGenericPhysicalDeviceVulkan12Properties$$fShowPhysicalDeviceVulkan12Features'$fGenericPhysicalDeviceVulkan12Features&$fShowPhysicalDeviceVulkan11Properties)$fGenericPhysicalDeviceVulkan11Properties$$fShowPhysicalDeviceVulkan11Features'$fGenericPhysicalDeviceVulkan11Features $sel:next:CommandBufferBeginInfo!$sel:flags:CommandBufferBeginInfo+$sel:inheritanceInfo:CommandBufferBeginInfo&$sel:next:CommandBufferInheritanceInfo,$sel:renderPass:CommandBufferInheritanceInfo)$sel:subpass:CommandBufferInheritanceInfo-$sel:framebuffer:CommandBufferInheritanceInfo6$sel:occlusionQueryEnable:CommandBufferInheritanceInfo,$sel:queryFlags:CommandBufferInheritanceInfo4$sel:pipelineStatistics:CommandBufferInheritanceInfo*$sel:commandPool:CommandBufferAllocateInfo$$sel:level:CommandBufferAllocateInfo1$sel:commandBufferCount:CommandBufferAllocateInfowithCommandBuffersuseCommandBuffer$fZeroCommandBufferAllocateInfo#$fStorableCommandBufferAllocateInfo&$fFromCStructCommandBufferAllocateInfo$$fToCStructCommandBufferAllocateInfo"$fZeroCommandBufferInheritanceInfo)$fFromCStructCommandBufferInheritanceInfo'$fToCStructCommandBufferInheritanceInfo($fExtensibleCommandBufferInheritanceInfo$fZeroCommandBufferBeginInfo#$fFromCStructCommandBufferBeginInfo!$fToCStructCommandBufferBeginInfo"$fExtensibleCommandBufferBeginInfo$fEqCommandBufferAllocateInfo$fShowCommandBufferBeginInfo$fGenericCommandBufferBeginInfo"$fShowCommandBufferInheritanceInfo%$fGenericCommandBufferInheritanceInfo$fShowCommandBufferAllocateInfo"$fGenericCommandBufferAllocateInfo$sel:next:BufferCreateInfo$sel:flags:BufferCreateInfo$sel:size:BufferCreateInfo$sel:usage:BufferCreateInfo!$sel:sharingMode:BufferCreateInfo($sel:queueFamilyIndices:BufferCreateInfo withBuffer$fZeroBufferCreateInfo$fFromCStructBufferCreateInfo$fToCStructBufferCreateInfo$fExtensibleBufferCreateInfo$fShowBufferCreateInfo$fGenericBufferCreateInfobaseGHC.PtrPtrbytestring-0.10.10.0Data.ByteString.Internal ByteStringplusPtr resultStringwaitSemaphoresSafeOrUnsafeacquireNextImageKHRSafeOrUnsafe acquireNextImage2KHRSafeOrUnsafequeueWaitIdleSafeOrUnsafedeviceWaitIdleSafeOrUnsafewaitForFencesSafeOrUnsafecmdWaitEventsSafeOrUnsafe