#XSm5A      !"#$%&'( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A BCDEFGHIJKLMNOPQRSTUVWXYZ [!\!]"^"_#`$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:;<=>?????????@AABBCCDDDDEFGGHHIIJJJJJKKLLMNNOOOPPPPPPQRRSSSSSTTTTTTTTTUUU U U V V WWWXXXXXXYZ[[[[\\\\ \!]"^#^$_%`&a'b(b)b*b+b,c-c.c/c0c1c2c3d4d5e6e7f8g9g:g;g<h=h>h?i@jAkBlCmDmEmFmGmHmInJoKpLpMpNpOpPpQpRpSpTpUpVpWpXqYrZr[s\s]s^s_t`tatbtcudueufugvhwiwjwkwlxmxnxoxpyqzr{s{t{u{v|w}x~y~z~{~|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+, - . / 0 1 2 3 4 5 6 7 8 9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx y z { |!}!~"##$$$%%%&''''''(((((((((((((((((()))))))))))**********+++++++++++,,,,,,,,,,,,,,,,,,,,,,----------........../////////////000000000011111111 1 1 2 2 2222222233333333334 4!4"4#4$4%4&4'4(4)4*4+4,4-5.5/505152535455565758595:);)<)=)>)?)@)A)B)C6D6E6F6G6H6I6J6K6L6M6N6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6\6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6w6x6y6z6{6|6}6~6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666 6 6 6 6 6666666666666666666 6!6"6#6$6%6&6'6(6)6*6+6,6-6.6/606162636465666768696:6;6<6=6>6?6@6A6B6C6D6E6F6G6H6I6J6K6L6M6N6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6\6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6w6x6y6z6{6|6}6~6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666 6 6 6 6 6666666666666666666 6!6"6#6$6%6&6'6(6)6*6+6,6-6.6/60616263646566789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~|||||||||||||||||||||||||zzzzzzzzzzzzzzzzzzzzzzvvvvvvvvvvvvvvvvvvvvvvv(((((((((((((((777777777788888 8 8 8 8 89999999999999::::: $!$"$#$$$%$&$'$($)$*$+$,$-$.$/$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 : ; < = >?@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 { | } ~      } } } } } } } } } } } } } } } } } } } } } } } } y y y y !y "y #y $y %y &y 'y (y )y *y +y ,y -y .y /y 0y 1y 2y 3y 4q 5q 6q 7q 8q 9q :q ;q <q =q >q ?q @o Ao Bo Co Do Eo Fo Go Ho Io J< K< L< M< N< O< Pn Qn Rn Sn Tn Un Vn Wn X= Y= Z= [= \= ]= ^l _l `l al bl cl dl el f> g> h> i> j> k> lk mk nk ok pk qk rk sk tk uk vk wk xk yk zk {k |k }k ~k k k k k k ? ? ? ? ? ? ? ? ? ? j j j j j j j j j @ @ @ @ @ @ @ @ i i i i i i i i i A A A A A A a a a a a a a a a a B B B B B B _ _ _ _ _ _ _ _ C C C C C C D D D D D D D D D D D D E E E E E E E E E E E E E E E E F F F F F F F F F F F F F F F Z Z Z Z Z Z Z Z Z Z Z G G G G G G G G Y Y Y Y Y Y Y Y Y Y F F F F F F F F F F F H H !H "H #H $H %I &I 'I (I )I *I +I ,I -I .I /I 0I 1I 2I 3I 4I 5I 6I 7I 8I 9J :J ;J <J =J >J ?J @J AJ BJ CJ DJ EB FB GB HB IB JB KB LB MB NB OB PB QB RK SK TK UK VK WK XK YK ZK [K \K ]K ^K _K `L aL bL cL dL eL fL gL hL iL jL kL lM mM nM oM pM qM rM sM tM uM vM wM xM yM zM {M |M }M ~Q Q Q Q Q Q Q Q N N N N N N N N N O O O O O O O O O O O O O A A A A A A A A A A A A A A A A A A A A A P P P P P P P P P P P P P P Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q M M M M M M M M R R R R R R R R R S S S S S S S S S S S S S T T T T T T T T T T @ @ @ @ @ @ @ @ @ U U U U U U U U U U U U U U U ' ' ' ' ' ' ' ' ' ' ' ' ' V V V V V V !V "V #V $V %V &V 'W (W )W *W +W ,W -W .W /W 0W 1W 2W 3W 4W 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 nE oE pE qE rE sE tE uE vE wE xE yX zX {X |X }X ~X X X X X X Y Y Y Y Y Y Y Y Y Y Z Z Z Z Z Z Z Z Z Z Z Z Z % % % % % % % % % % % % % % % % [ [ [ [ [ [ [ [ [ [ [ [ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ # # # # # # # # # # # # # # # # " " " " " " " " " " " " " ] ] ] ] ] ] ] ] ] ] ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^^^^^!!!!! ! ! ! ! !                   _!_"_#_$_%_&_'_(_)_*_+_,`-`.`/`0`1`2`3`4`5`6a7a8a9a:a;a<a=a>a?a@bAbBbCbDbEbFbGbHbIbJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmncocpcqcrcsctcucvcwcxcyczc{d|d}d~dddddddeeeeeeeeeeffffffffffgggggggggghhhhhhhhhhiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkklllllllllmmmmmmmmmmmmnnnnnnnnnnn n n    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwoxoyozo{o|o}o~oooooooooooopppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrr----------sssssssssstttttttttttttttuuuuuuuuuuuuu     ````````vvvvvv !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMhNhOhPhQhRhShThUhVhWhXhYhZh[h\h]h^h_h`hahbhchdhehfwgwhwiwjwkwlwmwnwowpwqwrwswtuvwxyz{|}~KKKKKKKKKKKKKxxxxxxxxxxxxxxxxxxxxxxUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{{{{ { { { { {{{{{{{{{{{{{{{{{{{ {!{"{#{${%{&{'{({)^*^+^,^-^.^/^0^1^2^3^4^5^6^7^8^9^:|;|<|=|>|?|@|A|B|C|D|E|F|GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUfVfWfXfYfZf[}\}]}^}_}`}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\wxyz{|}~WWWWWWWWWWWWWWWWWWWWWWWWWWW                !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefegeheiejekelemeneoepeqereseteuevewexeyeze{|}~OOOOOOOOOOOOOOOOOOOOOOOO      !"#$%&'()*+,-./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/TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm     ggggggggggggggggggg g!g"g#g$g%g&g'g(g)g*g+g,-./0123456789:;<=>?@ABCDEFGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb[b\b]b^b_b`babbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtuvwxyz{|}~]]]]]]]]]PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP     NNNNNNNN N!N"N#N$N%N&N'N(N)N*N+,-./0123456789:;<=>L?L@LALBLCLDLELFLGLHLILJLKLLLMLNOPQRSTUVWXYJZJ[J\J]J^J_J`JaJbJcJdJeJfJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJ{J|J}J~JJJJJJJJHHHHHHHHHHHHHHHHHHDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCpppppppppppppppppppppppppppppppppppppppppppppppppppppp p p p p ppppppppppppppppppp p!p"p#p$p%p&p'p(p)p*p+p,p-p.p/p0p1p2p3p4p5p6p7p8p9p:p;#<#=#>#?#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#VWXYZ[\]^_`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$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&{&|&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&r&r&r&r&r&r&r&r&r&r&r&r&r&r&r&r&r&r&r&r&r&I&I&I'I'I'I'I'I'I'I'I'I' I' I' I' I' I'I'I'I'I'I'I'I'I'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'/8'08'18'28'38'48'58'68'78'88'98':8';8'<8'=4'>4'?4'@4'A4'B4'C4'D4'E4'F4'G4'H4'I4'J4'K2'L2'M2'N2'O2'P2'Q2'R2'S2'T2'U2'V2'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 '{ '|'}'~'''''''''''''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'G'G'G'G'G'G'G'G''''''''''''?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?'?(?(?(?(?(?(?(?(?(?( ?( ?( ?( ?( ?(?(?(?(?(?(?(?(?(?(?(?(?(?(?(?(?(?(?( ?(!?("?(#?($?(%?(&?('?((?()?(*?(+?(,?(-S(.S(/S(0S(1S(2S(3S(4S(5S(6S(7S(8S(9S(:S(;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([(\(](^(_(`(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=({=(|=(}=(~=(=(=(=(=(=(=(=(=(=(=(=(=(=(=(<(<(<(<(<(<(<(<(<(<(<(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(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)<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)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))********** * * * * ******************* *!*"*#*$*%*&*'*(*)***+*,*-*.*/*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,,,,,,,,,,,,,, ,!,",#,$,%,&,',(,),*,+,,,-,.,/,0,13,23,33,43,53,63,73,83,93,:3,;3,<3,=3,>3,?3,@3,A3,B3,C3,D3,E3,F3,G3,H3,I3,J3,K3,L3,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,[1,\1,]1,^1,_1,`1,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,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-{-|-}-~---------------------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.(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.b0.c0.d0.e0.f0.g0.h0.i0.j0.k0.l0.m0.n0.o0.p0.q0.r0.s0.t0.u0.v0.w0.x0.y0.z0.{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 0 0 0 0 0 0 0 0 0  0  0  0  0  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  0! 0" 0# 0$ 0% 0& 0' 0( 0) 0* 0+ 0, 0- 0. 0/ 00 01 02030405060708090:0;0<0=0>0?0@0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~000000000000000000000000000000000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T1T1T1T1T1T1T1T1T1T1 T1 T1 T1 T1 T1T1T1T1T1T1T1T1T1T1T1T1T1T111111 1!1"1#1$1%1&1'1(1)1*1+1,1-1.1/101112131415161718 19 1: 1; 1< 1= 1> 1? 1@ 1A 1B 1C 1D 1E 1F 1G 1H 1I 1J 1K 1L 1M 1N 1O 1P 1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w 1x 1y 1z 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 1111111111111111111111111111112V2V2V2V2V2V2V2V2V2 V2 V2 V2 V2 V2V2V2V2V222222222222222 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`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2|2}2~2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333 3 3 3 3 3333333333333333333 3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Qc3Rc3Sc3Tc3Uc3Vc3Wc3Xc3Yc3Zc3[c3\c3]c3^c3_c3`c3ac3bc3cc3dc3ec3fc3gc3hc3ic3jc3kc3lc3mc3nc3oc3pc3qc3rc3sc3tc3uc3vc3wc3xc3yc3zc3{c3|c3}c3~c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3333333333333333333333333333333333333333333333333333333333333333333333333333333333333334444444444 4 4 4 4 4444444444444444444 4!4"4#4$4%4&4'4(4)4*4+4,4-4.4/404142434445464748494:4;4<4=4>4?4@4A4B4C4D4E4F4G4H4I4J4Kd4Ld4Md4Nd4Od4Pd4Qd4Rd4Sd4Td4Ud4Vd4Wd4Xd4Yd4Zd4[d4\d4]d4^4_4`4a4b4c4d4e4f4g4h4i4j4k4l4m[4n[4o[4p[4q[4r[4s[4t[4u[4v[4w[4x[4y[4z[4{[4|[4}[4~[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4[5[5[5[5[5[5[5555 5 5 5 5 5555555555555555555 5!5"5#5$5%5&5'5(5)5*5+5,5-5.5/505152535455565758595:5;5<5=5>5?5@None("#%&'-./1789;=>?FHIMSUVX_dghklmq; 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_dghklmqvulkan.An unpopulated type intended to be used as in 5A (FixedArray n a)5 to indicate that the pointer points to an array of n asvulkanStore a 5B_ in a fixed amount of space inserting a null character at the end and truncating if necessary.If the 5BH is not long enough to fill the space the remaining bytes are unchangedNote that if the 5BD is exactly long enough the last byte will still be replaced with 0vulkanStore a 5B5 in a fixed amount of space, truncating if necessary.If the 5BH is not long enough to fill the space the remaining bytes are unchangedvulkanPeek a 5B" from a fixed sized array of bytesvulkan5Allocate a zero array with the size specified by the 4 return type. Make sure to release the memory with freevulkan1Get the pointer to the first element in the arrayvulkanA type restricted 5CsNone("#%&'-./1789;=>?FHIMSUVX_dghklmqծ[\]^\^[]tNone("#%&'-./1789;=>?FHIMSUVX_dghklmqD_`ab`b_auNone("#%&'-./1789;=>?FHIMSUVX_dghklmqcdefdfcewNone("#%&'-./1789;=>?FHIMSUVX_dghklmqphijkikhjxNone("#%&'-./1789;=>?FHIMSUVX_dghklmqlmnomoln{None("#%&'-./1789;=>?FHIMSUVX_dghklmqݜrstusurt~None("#%&'-./1789;=>?FHIMSUVX_dghklmq2xyz{y{xzNone("#%&'-./1789;=>?FHIMSUVX_dghklmq|}~}|~None("#%&'-./1789;=>?FHIMSUVX_dghklmq^None("#%&'-./1789;=>?FHIMSUVX_dghklmqNone("#%&'-./1789;=>?FHIMSUVX_dghklmqNone("#%&'-./1789;=>?FHIMSUVX_dghklmq None("#%&'-./1789;=>?FHIMSUVX_dghklmqNone("#%&'-./1789;=>?FHIMSUVX_dghklmqL    None("#%&'-./1789;=>?FHIMSUVX_dghklmqNone("#%&'-./1789;=>?FHIMSUVX_dghklmqxNone("#%&'-./1789;=>?FHIMSUVX_dghklmqNone("#%&'-./1789;=>?FHIMSUVX_dghklmq89:;9;8:None("#%&'-./1789;=>?FHIMSUVX_dghklmq:@ABCAC@BNone("#%&'-./1789;=>?FHIMSUVX_dghklmqDEFGEGDFNone("#%&'-./1789;=>?FHIMSUVX_dghklmqfHIJKIKHJNone("#%&'-./1789;=>?FHIMSUVX_dghklmqLMNOMOLNNone("#%&'-./1789;=>?FHIMSUVX_dghklmqNone("#%&'-./1789;=>?FHIMSUVX_dghklmq(None("#%&'-./1789;=>?FHIMSUVX_dghklmqNone("#%&'-./1789;=>?FHIMSUVX_dghklmqTNone("#%&'-./1789;=>?FHIMSUVX_dghklmq None("#%&'-./1789;=>?FHIMSUVX_dghklmq45675746None("#%&'-./1789;=>?FHIMSUVX_dghklmq?@AB@B?ANone("#%&'-./1789;=>?FHIMSUVX_dghklmqCDEFDFCENone("#%&'-./1789;=>?FHIMSUVX_dghklmqBXYZ[Y[XZNone("#%&'-./1789;=>?FHIMSUVX_dghklmqabcdbdacNone("#%&'-./1789;=>?FHIMSUVX_dghklmqnmnopnpmoNone("#%&'-./1789;=>?FHIMSUVX_dghklmq tuvwuwtv None("#%&'-./1789;=>?FHIMSUVX_dghklmq xyz{y{xz%None("#%&'-./1789;=>?FHIMSUVX_dghklmq`vulkan9The common bits of enumeration and bitmask read instancesvulkan9The common bits of enumeration and bitmask show instancesvulkan!Wrap an IO action with a pair of 5D= using the specified message with "begin" or "end" appended.vulkanThe common constructor prefixvulkan+The table of values to constructor suffixesvulkanThe newtype constructor namevulkanThe newtype constructorvulkanThe common constructor prefixvulkan)A table of values to constructor suffixesvulkanThe newtype constructor namevulkanUnpack the newtypevulkanShow the underlying value&None("#%&'-./1789;=>?FHIMSUVX_dghklmq|vulkanAnnotate a type with a name'None("#%&'-./1789;=>?FHIMSUVX_dghklmq(None("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkan2A 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" tag)None("#%&'-./1789;=>?FHIMSUVX_dghklmq)vulkanrVkShaderFloatControlsIndependence - Enum specifying whether, and how, shader float controls can be set separatelySee Alsok, [vulkan: specifies that shader float controls for all bit widths must be set identically.vulkan: specifies that shader float controls for all bit widths can be set independently.vulkanA specifies that shader float controls for 32-bit floating point can) be set independently; other bit widths must" be set identically to each other.*None("#%&'-./1789;=>?FHIMSUVX_dghklmq3vulkan:VkSemaphoreType - Sepcifies the type of a semaphore objectSee Alsomvulkan specifies a timeline semaphore type that has a strictly 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.vulkan 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.+None("#%&'-./1789;=>?FHIMSUVX_dghklmq?vulkanEVkSamplerReductionMode - Specify reduction mode for texture filteringSee Also^vulkan specifies that texel values are combined by taking the component-wise maximum of values in the footprint with non-zero weights.vulkan specifies that texel values are combined by taking the component-wise minimum of values in the footprint with non-zero weights.vulkan 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.,None("#%&'-./1789;=>?FHIMSUVX_dghklmqKvulkanVkDriverId - 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_dghklmqXvulkanGVkTessellationDomainOrigin - 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_dghklmqh_vulkan>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_dghklmqvulkanFVkSamplerYcbcrModelConversion - 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 =  components.r =  components.g =  components.b = See Also, X 0None("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanEVkPointClippingBehavior - 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.1None("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkan]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.2None("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkan9VkChromaLocation - Position of downsampled chroma samplesSee Also, X vulkan  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.       3None("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanTVkVertexInputRate - 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.4None("#%&'-./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&%$#"! &%$#"! &%$#"!5None("#%&'-./1789;=>?FHIMSUVX_dghklmqc-vulkan*VkSystemAllocationScope - Allocation scope Description3T specifies that the allocation is scoped to the duration of the Vulkan command.2v specifies that the allocation is scoped to the lifetime of the Vulkan object that is being created or used.1C specifies that the allocation is scoped to the lifetime of a / or p object.0S 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 2 or 1G, 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 3 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 1u 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 2e. 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 0S. 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-3210/. -3210/.3210/)None("#%&'-./1789;=>?FHIMSUVX_dghklmq`hvulkan\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.h<;:h<;:<;6None("#%&'-./1789;=>?FHIMSUVX_dghklmq Cvulkan*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 CO 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 C 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/, \0, \1, I,  2, 3, 4, 5, J6, J7, L8, 9, :, J;, J<, =, b>, v?, @, A,  B, C, DD, E, F, G, H, rI, J, K, L, M, N, O, P, Q, *R, MS, T, OU,  V, W,  X, QY, Z, P[, N\, ], P^, O_, O`,  a, Rb, ,c, d, e, f, Tg, h, gi, gj, 6k, l, m, n, o, p, q, 7r, s, t, u, v, w, x, y, 0, z, {, |, f}, T~, 5, , S, , X, , S, `, , , , 1, , U, , , , , , ,  , , , , , , , ,  , , 3, J, 3, 5, , H, H, , , , , , , 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+, ,, -, ., /, 0, 1, 2, m3, m4, 5, 6, 7, n8, Z9, :, ;, [<, [, [=, [, o>, ?, @, A, 8B, C, 7D, yE, F, G,  H, I, 7J, K, 7L, M, N, O, P, Q, R, S, 7T, 9U, V, 7W, X, Y, Z, 7[, z\, ], ^, _, 7`, a, U, 7b, c, 7d, e, f, g, 7h, i, j, k, l, m, n, o, Dp, :q, r, s, t, u, Tv, w, x, y, z, {, g|, }, 6~, c, , U, W, , !, , , =, , ^, X, X, X, #, <, , , , m, , m, m, >, , , T, S, , ;, , c, c, c, d, c, , , , , , , , , , r, , m, , , , , , , , ,  , , , , , C/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDC/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFED/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFENone("#%&'-./1789;=>?FHIMSUVX_dghklmq;6vulkan>VkPresentFrameTokenGGP - The Google Games Platform frame tokenValid Usage (Implicit)See AlsoC:vulkan frameToken* is the Google Games Platform frame token.,VUID-VkPresentFrameTokenGGP-frameToken-02680  frameToken must be a valid 669:678;<69:8<7;6None("#%&'-./1789;=>?FHIMSUVX_dghklmqG/)vulkanRVkValidationFlagsEXT - Specify validation checks to disable for a Vulkan instanceValid Usage (Implicit)See AlsoC, EEvulkan;VkValidationCheckEXT - Specify validation checks to disableSee Also)HvulkanpDisabledValidationChecks is a pointer to an array of E9 values specifying the validation checks to be disabled.=VUID-VkValidationFlagsEXT-pDisabledValidationChecks-parameter pDisabledValidationChecks must$ be a valid pointer to an array of disabledValidationCheckCount valid E valuesKvulkanK/ specifies that shader validation is disabled.LvulkanL4 specifies that all validation checks are disabled. )GHCDELKFIJ )GHELKFLKDJCINone("#%&'-./1789;=>?FHIMSUVX_dghklmq'(vulkanaVkValidationFeaturesEXT - Specify validation features to enable or disable for a Vulkan instance Valid Usage=VUID-VkValidationFeaturesEXT-pEnabledValidationFeatures-02967 If the pEnabledValidationFeatures array contains l, then it must also contain m=VUID-VkValidationFeaturesEXT-pEnabledValidationFeatures-02968 If the pEnabledValidationFeatures array contains j , then it must not contain mValid Usage (Implicit)(VUID-VkValidationFeaturesEXT-sType-sType sType must be AVUID-VkValidationFeaturesEXT-pEnabledValidationFeatures-parameter If enabledValidationFeatureCount is not 0, pEnabledValidationFeatures must( be a valid pointer to an array of enabledValidationFeatureCount valid [ valuesBVUID-VkValidationFeaturesEXT-pDisabledValidationFeatures-parameter If disabledValidationFeatureCount is not 0, pDisabledValidationFeatures must( be a valid pointer to an array of disabledValidationFeatureCount valid Y valuesSee AlsoC, Y, [YvulkanFVkValidationFeatureDisableEXT - Specify validation features to disableSee Also([vulkanDVkValidationFeatureEnableEXT - Specify validation features to enableSee Also(^vulkanpEnabledValidationFeatures is a pointer to an array of [: values specifying the validation features to be enabled._vulkanpDisabledValidationFeatures is a pointer to an array of Y; values specifying the validation features to be disabled.bvulkanb specifies that protection against duplicate non-dispatchable object handles is disabled. This feature is enabled by default.cvulkanc 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.dvulkand\ specifies that object lifetime validation is disabled. This feature is enabled by default.evulkane` specifies that stateless parameter validation is disabled. This feature is enabled by default.fvulkanfZ specifies that thread safety validation is disabled. This feature is enabled by default.gvulkangS specifies that shader validation is disabled. This feature is enabled by default.hvulkanh4 specifies that all validation checks are disabled.ivulkani( specifies that Vulkan synchronization validation is enabled. This feature reports resource access conflicts due to missing or incorrect synchronization operations between actions (Draw, Copy, Dispatch, Blit) reading or writing the same regions of memory. This feature is disabled by default.jvulkanj) 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.kvulkank 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.lvulkanl specifies that the validation layers reserve a descriptor set binding slot for their own use. The layer reports a value for  ::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.mvulkanm specifies that GPU-assisted validation is enabled. Activating this feature instruments shader programs to generate additional diagnostic data. This feature is disabled by default.(]^_WXYhgfedcbZ[mlkji\`a$(]^_[mlkji\mlkjiYhgfedcbZhgfedcbXaW`None("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanhVkPhysicalDevicePCIBusInfoPropertiesEXT - Structure containing PCI bus information of a physical deviceValid Usage (Implicit)See AlsoCvulkan 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_dghklmqcvulkanJVkDeviceQueueGlobalPriorityCreateInfoEXT - Specify a system wide priority Description$A queue created without specifying  will default to .Valid Usage (Implicit)See Also, CvulkanJVkQueueGlobalPriorityEXT - 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 FVUID-VkDeviceQueueGlobalPriorityCreateInfoEXT-globalPriority-parameter globalPriority must be a valid  valuevulkan5 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_dghklmqvvulkanVkPhysicalDeviceShaderCorePropertiesAMD - Structure describing shader core properties that can be supported by an implementationMembersThe members of the vC structure describe the following implementation-dependent limits: DescriptionIf the v structure is included in the pNext chain of T 9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See AlsoCvulkanlimits-shaderEngineCount shaderEngineCount| is an unsigned integer value indicating the number of shader engines found inside the shader core of the physical device.vulkan!limits-shaderArraysPerEngineCount shaderArraysPerEngineCount 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.vulkan!limits-computeUnitsPerShaderArray computeUnitsPerShaderArray 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 mayf be lower. A compute unit houses a set of SIMDs along with a sequencer module and a local data store.vulkanlimits-simdPerComputeUnit simdPerComputeUnit is an unsigned integer value indicating the number of SIMDs inside a compute unit. Each SIMD processes a single instruction at a time.vulkanlimits-wavefrontSize  wavefrontSizeI is an unsigned integer value indicating the maximum size of a subgroup.vulkanlimits-sgprsPerSimd  sgprsPerSimdt is an unsigned integer value indicating the number of physical Scalar General Purpose Registers (SGPRs) per SIMD.vulkanlimits-minSgprAllocation minSgprAllocation[ is an unsigned integer value indicating the minimum number of SGPRs allocated for a wave.vulkanlimits-maxSgprAllocation maxSgprAllocation[ is an unsigned integer value indicating the maximum number of SGPRs allocated for a wave.vulkan limits-sgprAllocationGranularity sgprAllocationGranularityY is an unsigned integer value indicating the granularity of SGPR allocation for a wave.vulkanlimits-vgprsPerSimd  vgprsPerSimdt is an unsigned integer value indicating the number of physical Vector General Purpose Registers (VGPRs) per SIMD.vulkanlimits-minVgprAllocation minVgprAllocation[ is an unsigned integer value indicating the minimum number of VGPRs allocated for a wave.vulkanlimits-maxVgprAllocation maxVgprAllocation[ is an unsigned integer value indicating the maximum number of VGPRs allocated for a wave.vulkan limits-vgprAllocationGranularity vgprAllocationGranularityY is an unsigned integer value indicating the granularity of VGPR allocation for a wave.vvzNone("#%&'-./1789;=>?FHIMSUVX_dghklmqqvulkansVkPipelineRasterizationStateRasterizationOrderAMD - 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 qT structure then the rasterization order used by the graphics pipeline defaults to .See Also, CvulkanNVkRasterizationOrderAMD - Specify rasterization order for a graphics pipelineSee AlsoqvulkanrasterizationOrder is a < value specifying the primitive rasterization order to use.SVUID-VkPipelineRasterizationStateRasterizationOrderAMD-rasterizationOrder-parameter rasterizationOrder must be a valid  valuevulkan< 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.vulkan< 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. q qvNone("#%&'-./1789;=>?FHIMSUVX_dghklmqgvulkangVkDeviceMemoryOverallocationCreateInfoAMD - Specify memory overallocation behavior for a Vulkan deviceValid Usage (Implicit)See Also, CvulkanKVkMemoryOverallocationBehaviorAMD - Specify memory overallocation behaviorSee AlsogvulkanoverallocationBehavior( is the desired overallocation behavior.OVUID-VkDeviceMemoryOverallocationCreateInfoAMD-overallocationBehavior-parameter overallocationBehavior must be a valid  valuevulkani specifies the application is not allowed to allocate device memory beyond the heap sizes reported by  ~. Allocations that are not explicitly made by the application within the scope of the Vulkan instance are not accounted for.vulkan: specifies overallocation is allowed if platform permits.vulkan> lets the implementation decide if overallocation is allowed. gg(None("#%&'-./1789;=>?FHIMSUVX_dghklmq gvulkan)VkStencilOp - Stencil comparison function DescriptionaFor purposes of increment and decrement, the stencil bits are considered as an unsigned integer.See Also7, vulkang 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. gg7None("#%&'-./1789;=>?FHIMSUVX_dghklmqwvulkan.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  or ' 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.8None("#%&'-./1789;=>?FHIMSUVX_dghklmqkvulkanBVkSamplerMipmapMode - 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.9None("#%&'-./1789;=>?FHIMSUVX_dghklmq,vulkan^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_dghklmq$`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.VK_ERROR_OUT_OF_*_MEMORYs errors do not modify any currently existing Vulkan objects. Objects that have already been successfully created can" still be used by the application.NoteAs a general rule, Free, Release, and Reset commands do not return @., while any other command with a return code mayL return it. Any exceptions from this rule are described for those commands.4 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 `.Note4w is not expected to ever be returned if the application behavior is valid, and if the implementation is bug-free. If 4 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 .See Alsol!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, 5 should be returned instead."vulkan"A 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.&vulkan&w The requested window is already in use by Vulkan or another API in a manner which prevents it from being used again.'vulkan'D 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.+vulkan+h 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 > failed as it did not have exlusive full-screen access. This mayW occur due to implementation-dependent reasons, outside of the application s control./vulkan/u A deferred operation is not complete but there is currently no work for this thread to do at the time of this call.0vulkan0f A deferred operation is not complete but there is no work remaining to assign to additional threads.1vulkan1P A deferred operation was requested and at least some of the work was deferred.2vulkan2E A deferred operation was requested and no operations were deferred.3vulkan3 A requested pipeline creation would have required compilation, but the application requested compilation to not be performed.4vulkan4~ An unknown error has occurred; either the application has provided invalid input, or an implementation failure has occurred.5vulkan5O 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.6vulkan65 A requested format is not supported on this device.7vulkan79 Too many objects of the type have already been created.8vulkan8 The requested version of Vulkan is not supported by the driver or is otherwise incompatible for implementation-specific reasons.9vulkan9& 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.=vulkan=4 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 Device>vulkan>Y 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.AvulkanA, A return array was too small for the resultBvulkanB An event is unsignaledCvulkanC An event is signaledDvulkanD9 A wait operation has not completed in the specified timeEvulkanE' A fence or query has not yet completedFvulkanF Command successfully completed(`FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! N`FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!;None("#%&'-./1789;=>?FHIMSUVX_dghklmqMvulkandThis exception is thrown from calls to marshalled Vulkan commands which return a negative VkResult.5Evulkan0A human understandable message for each VkResultMNOMNO.None("#%&'-./1789;=>?FHIMSUVX_dghklmqSnvulkan4VkDeviceSize - Vulkan device memory size and offsetsSee Also, , , , , , , G, G, , , , , , 5, , , ,  , @, m, o, q,  , , , 3, 3,  , 4, ,  , V, , , 1, 7, [, ?, ?, ?, , 0, 4, 4, , , , , , , , , , , , , , , , , , , , , , , , , , 3, :, 3ovulkan,VkDeviceAddress - Vulkan device address typeSee Also, , , , , , , , , pvulkanVkBool32 - Vulkan boolean type Descriptionj represents a boolean True (integer 1) value, and k a boolean False (integer 0) value.6All values returned from a Vulkan implementation in a p will be either j or k. Applications must not pass any other values than j or k' into a Vulkan implementation where a p is expected.See Also,  ,  , &, ', V/, rI, N, , f, , H, , , F, , a, , , , , b, , q, , , , , , , , , , d, \, \, , , , , ,  , k, , , , , , , , , , L, ], P, , g, , ,  , , , , W, , $, , , , , , , D , D ,  , , , , , ^, X, _, h, , i, , , Y, j , !, ", #, $, l&, ', (,  , E+, ,, /, 0, 1, 2, m3, 6, 7, n8, Z9, :, [<, [, [=, [, o>, ?, @, A, C, 7, 7D, F,  H, 7J, N, , 7T, 7W, Y, Z, 7[, ^, _, g, j, Dp, =, X, , , , r, , , , , , , , , r, ,qvulkan;VkRect2D - Structure specifying a two-dimensional subregionSee AlsoK, , ! , J;, N, u, s, K, f, 7h, }, , , , , rvulkan<VkOffset3D - Structure specifying a three-dimensional offsetSee Also, , , x, , y, , , ?svulkan:VkOffset2D - Structure specifying a two-dimensional offsetSee Also, q,  tvulkan<VkExtent3D - Structure specifying a three-dimensional extentSee Also, , , y, 0,  , , ,   , ? , ?uvulkan:VkExtent2D - Structure specifying a two-dimensional extentSee Also , , , P, h, , , , , , ), R, q,  , , ,  , , , 6VvulkanVkFlags - Vulkan bitmasks DescriptionYBitmasks are passed to many commands and structures to compactly represent options, but V. is not used directly in the API. Instead, a V type which is an alias of V,, and whose name matches the corresponding  Vk*FlagBits' that are valid for that type, is used.Any V1 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 V with FlagBits). For example, a flag value of type  must( contain only bit flags defined by .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 Vg 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 AlsoWvulkan2VkSampleMask - Mask of sample coverage informationSee Also7WZvulkanoffset is a s! specifying the rectangle offset.[vulkanextent is a u! 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.avulkanwidth is the width of the extent.bvulkanheight is the height of the extent.dvulkanx is the x offset.evulkany is the y offset.fvulkanz is the z offset.hvulkanx is the x offset.ivulkany is the y offset.6` FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!nopkjXqYZ[rcdefsghit\]^_u`abCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEUVWlmIlmsghircdefu`abt\]^_qYZ[pkjXkjWVUnoCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE` FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!None("#%&'-./1789;=>?FHIMSUVX_dghklmq qvulkan=VkViewportSwizzleNV - Structure specifying a viewport swizzleValid Usage (Implicit)See Alsor, rvulkanpVkPipelineViewportSwizzleStateCreateInfoNV - Structure specifying swizzle applied to primitive clip coordinatesValid Usage (Implicit)See Also, C, qvulkanNVkViewportCoordinateSwizzleNV - 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 AlsoqvulkanEVkPipelineViewportSwizzleStateCreateFlagsNV - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Alsorvulkanflags is reserved for future use.AVUID-VkPipelineViewportSwizzleStateCreateInfoNV-flags-zerobitmask flags must be 0vulkanpViewportSwizzles is a pointer to an array of q- structures, defining the viewport swizzles.KVUID-VkPipelineViewportSwizzleStateCreateInfoNV-pViewportSwizzles-parameter pViewportSwizzles must$ be a valid pointer to an array of  viewportCount valid q structuresvulkanx is a U value specifying the swizzle operation to apply to the x component of the primitive$VUID-VkViewportSwizzleNV-x-parameter x must be a valid  valuevulkany is a U value specifying the swizzle operation to apply to the y component of the primitive$VUID-VkViewportSwizzleNV-y-parameter y must be a valid  valuevulkanz is a U value specifying the swizzle operation to apply to the z component of the primitive$VUID-VkViewportSwizzleNV-z-parameter z must be a valid  valuevulkanw is a U value specifying the swizzle operation to apply to the w component of the primitive$VUID-VkViewportSwizzleNV-w-parameter w must be a valid  valueqr"qrNone("#%&'-./1789;=>?FHIMSUVX_dghklmq*_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 T 9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See AlsoC`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  2 to enable the feature.Valid Usage (Implicit)See Alsop, Cvulkanfeatures-shaderSMBuiltins shaderSMBuiltins; indicates whether the implementation supports the SPIR-V ShaderSMBuiltinsNV capability.vulkanlimits-shaderSMCount  shaderSMCount% is the number of SMs on the device.vulkanlimits-shaderWarpsPerSM shaderWarpsPerSMC is the maximum number of simultaneously executing warps on an SM. _` _`None("#%&'-./1789;=>?FHIMSUVX_dghklmq7^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  2 to enable features.Valid Usage (Implicit)See Alsop, Cvulkanfeatures-imageFootprint imageFootprint4 specifies whether the implementation supports the ImageFootprintNV SPIR-V capability.^^None("#%&'-./1789;=>?FHIMSUVX_dghklmqPVvulkanjVkPipelineRepresentativeFragmentTestStateCreateInfoNV - 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 Alsop, CWvulkanVkPhysicalDeviceRepresentativeFragmentTestFeaturesNV - Structure describing the representative fragment test features that can be supported by an implementationMembersThe members of the W, structure describe the following features: DescriptionIf the W structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported. W can also be included in the pNext chain of  2 to enable the feature.Valid Usage (Implicit)See Alsop, Cvulkan representativeFragmentTestEnable? controls whether the representative fragment test is enabled.vulkan#features-representativeFragmentTest representativeFragmentTestX 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. VW WVNone("#%&'-./1789;=>?FHIMSUVX_dghklmq >vulkanpVkPipelineCoverageModulationStateCreateInfoNV - Structure specifying parameters controlling coverage modulation DescriptionIf coverageModulationTableEnable is . , then for each color sample the associated bits of the pixel 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 UsageVVUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationTableEnable-01405 If coverageModulationTableEnable is ., coverageModulationTableCount mustp be equal to the number of rasterization samples divided by the number of color samples in the subpassValid Usage (Implicit)>VUID-VkPipelineCoverageModulationStateCreateInfoNV-sType-sType sType must be IDVUID-VkPipelineCoverageModulationStateCreateInfoNV-flags-zerobitmask flags must be 0SVUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationMode-parameter coverageModulationMode must be a valid  valueSee Alsop, , , CvulkanAVkCoverageModulationModeNV - Specify the coverage modulation modeSee Also>vulkanHVkPipelineCoverageModulationStateCreateFlagsNV - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also>vulkanflags 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_dghklmq9vulkanVkPhysicalDeviceFragmentShaderBarycentricFeaturesNV - Structure describing barycentric support in fragment shaders that can be supported by an implementationMembersThe members of the 9, 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 9 structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported. 9 can also be included in the pNext chain of  2 to enable features.Valid Usage (Implicit)See Alsop, Cvulkan"features-fragmentShaderBarycentric fragmentShaderBarycentric1 indicates that the implementation supports the  BaryCoordNV and BaryCoordNoPerspNV4 SPIR-V fragment shader built-ins and supports the  PerVertexNV6 SPIR-V decoration on fragment shader input variables.99 None("#%&'-./1789;=>?FHIMSUVX_dghklmq8vulkanmVkPipelineCoverageToColorStateCreateInfoNV - Structure specifying whether fragment coverage replaces a color DescriptionIf the pNext chain of 7W includes a 8 structure, then that structure controls whether the fragment coverage is substituted for a fragment color output and, if so, which output is replaced.If 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 UsageKVUID-VkPipelineCoverageToColorStateCreateInfoNV-coverageToColorEnable-01404 If coverageToColorEnable is .6, then the render pass subpass indicated by 7r:: renderPass and 7r::subpass must: have a color attachment at the location selected by coverageToColorLocation, with a  of , , , ,  , or Valid Usage (Implicit);VUID-VkPipelineCoverageToColorStateCreateInfoNV-sType-sType sType must be 3AVUID-VkPipelineCoverageToColorStateCreateInfoNV-flags-zerobitmask flags must be 0See Alsop, (, C(vulkanEVkPipelineCoverageToColorStateCreateFlagsNV - Reserved for future use Description(Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also8+vulkanflags 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. 8*+,-&'()./ 8*+,-()'/&.None("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanVkPhysicalDeviceDiagnosticsConfigFeaturesNV - 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  2 to enable the feature.Valid Usage (Implicit)See Alsop, CvulkanWVkDeviceDiagnosticsConfigCreateInfoNV - Specify diagnostics config for a Vulkan deviceValid Usage (Implicit)See AlsoB, C@vulkanKVkDeviceDiagnosticsConfigFlagBitsNV - Bitmask specifying diagnostics flagsSee AlsoBDvulkanflags is a bitmask of @C specifying addtional parameters for configuring diagnostic tools.:VUID-VkDeviceDiagnosticsConfigCreateInfoNV-flags-parameter flags must be a valid combination of @ valuesFvulkan#features-features-diagnosticsConfig diagnosticsConfig[ indicates whether the implementation supports the ability to configure diagnostic tools.IvulkanI" 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.JvulkanJr enables driver side tracking of resources (images, buffers, etc.) used to augment the device fault information.KvulkanK: enables the generation of debug information for shaders.EFCD>?@KJIABGHEFCDB@KJIAKJI?H>GNone("#%&'-./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  2 to enable features.Valid Usage (Implicit)See Alsop, Ccvulkan)features-dedicatedAllocationImageAliasing  dedicatedAllocationImageAliasingl indicates that the implementation supports aliasing of compatible image objects on a dedicated allocation.bc`adebcae`dNone("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanVkPhysicalDeviceCornerSampledImageFeaturesNV - 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  2 to enable features.Valid Usage (Implicit)See Alsop, Covulkanfeatures-cornersampledimage cornerSampledImage2 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.nolmpqnomqlpNone("#%&'-./1789;=>?FHIMSUVX_dghklmq0vulkanVkPhysicalDeviceComputeShaderDerivativesFeaturesNV - Structure describing compute shader derivative features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionSee  `https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-quad chapter 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  2 to enable features.Valid Usage (Implicit)See Alsop, C{vulkan$features-computeDerivativeGroupQuads computeDerivativeGroupQuads2 indicates that the implementation supports the ComputeDerivativeGroupQuadsNV SPIR-V capability.|vulkan%features-computeDerivativeGroupLinear computeDerivativeGroupLinear2 indicates that the implementation supports the ComputeDerivativeGroupLinearNV SPIR-V capability.z{|xy}~z{|y~x}None("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkanVkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX - 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 T 9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alsop, Cvulkan#limits-perViewPositionAllComponents perViewPositionAllComponents is .p if the implementation supports per-view position values that differ in components other than the X component.  None("#%&'-./1789;=>?FHIMSUVX_dghklmq NvulkanVkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR - Structure describing support for zero initialization of workgroup memory by an implementationMembersThe member of the + structure describe the following feature: 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 the pNext chain of  2 to enable the features.Valid Usage (Implicit)See Alsop, Cvulkan,features-shaderZeroInitializeWorkgroupMemory #shaderZeroInitializeWorkgroupMemoryd specifies whether the implementation supports initializing a variable in Workgroup storage class.None("#%&'-./1789;=>?FHIMSUVX_dghklmq>vulkanVkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR - Structure describing the workgroup storage explicit layout 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  2 to enable the feature.Valid Usage (Implicit)See Alsop, Cvulkan&features-workgroupMemoryExplicitLayout workgroupMemoryExplicitLayout< indicates whether the implementation supports the SPIR-V  WorkgroupMemoryExplicitLayoutKHR capability.vulkan7features-workgroupMemoryExplicitLayoutScalarBlockLayout .workgroupMemoryExplicitLayoutScalarBlockLayoutb indicates whether the implementation supports scalar alignment for laying out Workgroup Blocks.vulkan0features-workgroupMemoryExplicitLayout8BitAccess 'workgroupMemoryExplicitLayout8BitAccess# indicates whether objects in the  Workgroup storage class with the Block decoration canU 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 *WorkgroupMemoryExplicitLayout8BitAccessKHR capability.vulkan1features-workgroupMemoryExplicitLayout16BitAccess (workgroupMemoryExplicitLayout16BitAccess# indicates whether objects in the  Workgroup 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 indicates whether shader modules can declare the +WorkgroupMemoryExplicitLayout16BitAccessKHR capability.  None("#%&'-./1789;=>?FHIMSUVX_dghklmqGxvulkanaVkSurfaceProtectedCapabilitiesKHR - Structure describing capability of a surface to be protectedValid Usage (Implicit)See Alsop, CvulkansupportsProtected7 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.None("#%&'-./1789;=>?FHIMSUVX_dghklmqSvulkandVkPhysicalDeviceShaderTerminateInvocationFeaturesKHR - Structure describing support for the SPIR-V SPV_KHR_terminate_invocation extensionMembersThe members of the + structure describe the following feature: 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 the pNext chain of  2 to enable the features.Valid Usage (Implicit)See Alsop, Cvulkan"features-shaderTerminateInvocation shaderTerminateInvocationM specifies whether the implementation supports SPIR-V modules that use the SPV_KHR_terminate_invocation extension.None("#%&'-./1789;=>?FHIMSUVX_dghklmq_vulkanhVkPhysicalDeviceShaderClockFeaturesKHR - 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  2 to enable the features.Valid Usage (Implicit)See Alsop, Cvulkanfeatures-shaderSubgroupClock shaderSubgroupClock indicates whether shaders can perform Subgroup scoped clock reads.vulkanfeatures-shaderDeviceClock shaderDeviceClock indicates whether shaders can perform / scoped clock reads.None("#%&'-./1789;=>?FHIMSUVX_dghklmqjvulkan}VkPhysicalDeviceRayQueryFeaturesKHR - Structure describing the ray query 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  2 to enable the features.Valid Usage (Implicit)See Alsop, Cvulkanfeatures-rayQuery rayQuery; indicates whether the implementation supports ray query (OpRayQueryProceedKHR) functionality.None("#%&'-./1789;=>?FHIMSUVX_dghklmq>vulkanVkPhysicalDevicePortabilitySubsetPropertiesKHR - Structure describing additional properties supported by a portable implementationMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of T 9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See AlsoCvulkanVkPhysicalDevicePortabilitySubsetFeaturesKHR - Structure describing the features that may not be supported by an implementation of the Vulkan 1.0 Portability SubsetMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TL, it is filled with values indicating whether the features are supported.  can also be used in the pNext chain of  2 to enable the features.Valid Usage (Implicit)See Alsop, Cvulkan+limits-minVertexInputBindingStrideAlignment $minVertexInputBindingStrideAlignment= indicates the minimum alignment for vertex input strides. 7::stride must9 be a multiple of, and at least as large as, this value.vulkan'features-constantAlphaColorBlendFactors constantAlphaColorBlendFactors: indicates whether this implementation supports constant alpha  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blendfactors used as source or destination color  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending.vulkanfeatures-events eventsH indicates whether this implementation supports synchronization using  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-events.vulkan(features-imageViewFormatReinterpretation imageViewFormatReinterpretation3 indicates whether this implementation supports a / being created with a texel format containing a different number of components, or a different number of bits in each component, than the texel format of the underlying / .vulkanfeatures-imageViewFormatSwizzle imageViewFormatSwizzleT indicates whether this implementation supports remapping format components using 1:: components.vulkanfeatures-imageView2DOn3DImage imageView2DOn3DImage3 indicates whether this implementation supports a /  being created with the !J flag set, permitting a 2D or 2D array image view to be created on a 3D / .vulkanfeatures-multisampleArrayImage multisampleArrayImage3 indicates whether this implementation supports a / > being created as a 2D array with multiple samples per texel.vulkan"features-mutableComparisonSamplers mutableComparisonSamplers\ indicates whether this implementation allows descriptors with comparison samplers to be  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updatesupdated.vulkanfeatures-pointPolygons  pointPolygons2 indicates whether this implementation supports  Whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast using a point  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-polygonmode.vulkanfeatures-samplerMipLodBias samplerMipLodBias< indicates whether this implementation supports setting a  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-mipLodBiasmipmap LOD bias value when  Vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplerscreating a sampler.vulkanfeatures-separateStencilMaskRef separateStencilMaskRefJ indicates whether this implementation supports separate front and back  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil reference values.vulkan/features-shaderSampleRateInterpolationFunctions &shaderSampleRateInterpolationFunctionsQ indicates whether this implementation supports fragment shaders which use the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-InterpolationFunctionInterpolationFunction+ capability and the extended instructions InterpolateAtCentroid, InterpolateAtOffset, and InterpolateAtSample from the  GLSL.std.450C extended instruction set. This member is only meaningful if the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sampleRateShadingsampleRateShading feature is supported.vulkanfeatures-tessellationIsolines tessellationIsolines2 indicates whether this implementation supports  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellation-isoline-tessellationisoline output from the  Zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellationC stage of a graphics pipeline. This member is only meaningful if  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders are supported.vulkanfeatures-tessellationPointMode tessellationPointMode2 indicates whether this implementation supports  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellation-point-mode point output from the  Zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellationC stage of a graphics pipeline. This member is only meaningful if  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders are supported.vulkanfeatures-triangleFans  triangleFans2 indicates whether this implementation supports  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-fans primitive topology.vulkan*features-vertexAttributeAccessBeyondStride !vertexAttributeAccessBeyondStride indicates whether this implementation supports accessing a vertex input attribute beyond the stride of the corresponding vertex input binding.None("#%&'-./1789;=>?FHIMSUVX_dghklmqi vulkanuVkRectLayerKHR - Structure containing a rectangle, including layer, changed by vkQueuePresentKHR for a given VkImage Valid Usage VUID-VkRectLayerKHR-offset-01261 The sum of offset and extent must be no greater than the  imageExtent member of the  structure passed to "VUID-VkRectLayerKHR-layer-01262 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. f specifies pixels of the swapchain s image(s), which will be constant for the life of the swapchain.See Alsou, s, vulkanYVkPresentRegionsKHR - Structure hint of rectangular regions changed by vkQueuePresentKHR Valid Usage-VUID-VkPresentRegionsKHR-swapchainCount-01260 swapchainCount must be the same value as l::swapchainCount , where l is included in the pNext chain of this  structureValid Usage (Implicit)$VUID-VkPresentRegionsKHR-sType-sType sType must be +VUID-VkPresentRegionsKHR-pRegions-parameter If pRegions is not NULL, pRegions must( be a valid pointer to an array of swapchainCount valid  structures3VUID-VkPresentRegionsKHR-swapchainCount-arraylength swapchainCount must be greater than 0See Also, CvulkannVkPresentRegionKHR - Structure containing rectangular region changed by vkQueuePresentKHR for a given VkImageValid Usage (Implicit)-VUID-VkPresentRegionKHR-pRectangles-parameter If rectangleCount is not 0, and  pRectangles is not NULL,  pRectangles must( be a valid pointer to an array of rectangleCount valid  structuresSee Also,  vulkanoffset+ is the origin of the rectangle, in pixels. vulkanextent) is the size of the rectangle, in pixels. vulkanlayerJ is the layer of the image. For images with only one layer, the value of layer must be 0. vulkanrectangleCount is the number of rectangles in  pRectanglesC, or zero if the entire image has changed and should be presented. vulkan pRectangles is either NULL or a pointer to an array of  structures. The r 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. vulkanswapchainCountA is the number of swapchains being presented to by this command. vulkanpRegions is NULL or a pointer to an array of  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 l:: pSwapchains array.                     None("#%&'-./1789;=>?FHIMSUVX_dghklmqXvulkanVkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL - Structure describing shader integer functions that can be supported by an implementationMembersThe members of the X, structure describe the following features: DescriptionIf the X structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported. X can also be included in the pNext chain of  2 to enable features.Valid Usage (Implicit)See Alsop, C vulkan features-shaderIntegerFunctions2 shaderIntegerFunctions21 indicates that the implementation supports the IntegerFunctions2INTEL SPIR-V capability.X      X      None("#%&'-./1789;=>?FHIMSUVX_dghklmq7.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  2 to enable features.Valid Usage (Implicit)See Alsop, C )vulkanfeatures-ycbcrImageArrays ycbcrImageArraysZ 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.. ( ) & ' * +. ( ) ' + & *None("#%&'-./1789;=>?FHIMSUVX_dghklmqR *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 Usage<VUID-VkVertexInputBindingDivisorDescriptionEXT-binding-01869 binding must be less than  ::maxVertexInputBindings[VUID-VkVertexInputBindingDivisorDescriptionEXT-vertexAttributeInstanceRateZeroDivisor-02228 If the &vertexAttributeInstanceRateZeroDivisor feature is not enabled, divisor must not be 0WVUID-VkVertexInputBindingDivisorDescriptionEXT-vertexAttributeInstanceRateDivisor-02229 If the "vertexAttributeInstanceRateDivisor feature is not enabled, divisor must be 1<VUID-VkVertexInputBindingDivisorDescriptionEXT-divisor-01870 divisor must be a value between 0 and ,::maxVertexAttribDivisor, inclusive>VUID-VkVertexInputBindingDivisorDescriptionEXT-inputRate-01871 7:: inputRate must be of type 3# for this bindingSee Also++vulkan~VkPipelineVertexInputDivisorStateCreateInfoEXT - Structure specifying vertex attributes assignment during instanced renderingValid Usage (Implicit)See AlsoC, *,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 T 9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See AlsoC-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  2 to enable the feature.Valid Usage (Implicit)See Alsop, C 5vulkan+features-vertexAttributeInstanceRateDivisor "vertexAttributeInstanceRateDivisor] specifies whether vertex attribute fetching may be repeated in case of instanced rendering. 6vulkan/features-vertexAttributeInstanceRateZeroDivisor &vertexAttributeInstanceRateZeroDivisor% specifies whether a zero value for *::divisor is supported. 8vulkanlimits-maxVertexAttribDivisor maxVertexAttribDivisor 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.TVUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-pVertexBindingDivisors-parameter pVertexBindingDivisors must$ be a valid pointer to an array of vertexBindingDivisorCount * structures <vulkanbinding: 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.* ; < =+ 9 :, 7 8- 4 5 6 2 3 > ?* ; < =+ 9 :, 7 8- 4 5 6 3 ? 2 >None("#%&'-./1789;=>?FHIMSUVX_dghklmqdL!vulkanVkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT - 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 Alsop, C Yvulkan#features-textureCompressionASTC_HDR textureCompressionASTC_HDRy indicates whether all of the ASTC HDR compressed texture formats are supported. If this feature is enabled, then the {%, {& and {' features must be supported in optimalTilingFeatures for the following formats:()*+,-./012345GTo query for additional properties, or if the feature is not enabled,  6 and  7 canL be used to check for supported properties of individual formats as normal.! X Y V W Z [! X Y W [ V ZNone("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanVkPhysicalDeviceTexelBufferAlignmentPropertiesEXT - 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 T 9, 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  ::minTexelBufferOffsetAlignment6, for any format that supports use as a texel buffer.Valid Usage (Implicit)See Alsop, n, C 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  2 to enable the feature.Valid Usage (Implicit)See Alsop, C evulkan-limits-storageTexelBufferOffsetAlignmentBytes &storageTexelBufferOffsetAlignmentBytesR is a byte alignment that is sufficient for a storage texel buffer of any format. fvulkan3limits-storageTexelBufferOffsetSingleTexelAlignment ,storageTexelBufferOffsetSingleTexelAlignmentb indicates whether single texel alignment is sufficient for a storage texel buffer of any format. gvulkan-limits-uniformTexelBufferOffsetAlignmentBytes &uniformTexelBufferOffsetAlignmentBytesR is a byte alignment that is sufficient for a uniform texel buffer of any format. hvulkan3limits-uniformTexelBufferOffsetSingleTexelAlignment ,uniformTexelBufferOffsetSingleTexelAlignmentb indicates whether single texel alignment is sufficient for a uniform texel buffer of any format. jvulkanfeatures-texelBufferAlignment texelBufferAlignment` indicates whether the implementation uses more specific alignment requirements advertised in  rather than  ::minTexelBufferOffsetAlignment.  d e f g h i j b c k l  i j d e f g h c l b kNone("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkanVkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT - Structure describing features supported by VK_EXT_shader_image_atomic_int64Valid Usage (Implicit)See Alsop, C |vulkan features-shaderImageInt64Atomics shaderImageInt64Atomics indicates whether shaders canI support 64-bit unsigned and signed integer atomic operations on images. }vulkan features-sparseImageInt64Atomics sparseImageInt64Atomics+ indicates whether 64-bit integer atomics can be used on sparse images. { | } y z ~  { | } z  y ~None("#%&'-./1789;=>?FHIMSUVX_dghklmqy vulkanVkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT - 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  2 to enable the feature.Valid Usage (Implicit)See Alsop, C vulkan'features-shaderDemoteToHelperInvocation shaderDemoteToHelperInvocation; indicates whether the implementation supports the SPIR-V DemoteToHelperInvocationEXT capability.  None("#%&'-./1789;=>?FHIMSUVX_dghklmqͯ  vulkanuVkPhysicalDeviceShaderAtomicFloatFeaturesEXT - Structure describing features supported by VK_EXT_shader_atomic_floatValid Usage (Implicit)See Alsop, C vulkan#features-shaderBufferFloat32Atomics shaderBufferFloat32Atomics indicates whether shaders can^ perform 32-bit floating-point load, store and exchange atomic operations on storage buffers. vulkan%features-shaderBufferFloat32AtomicAdd shaderBufferFloat32AtomicAdd indicates whether shaders canI perform 32-bit floating-point add atomic operations on storage buffers. vulkan#features-shaderBufferFloat64Atomics shaderBufferFloat64Atomics indicates whether shaders can^ perform 64-bit floating-point load, store and exchange atomic operations on storage buffers. vulkan%features-shaderBufferFloat64AtomicAdd shaderBufferFloat64AtomicAdd indicates whether shaders canI perform 64-bit floating-point add atomic operations on storage buffers. vulkan#features-shaderSharedFloat32Atomics shaderSharedFloat32Atomics indicates whether shaders can\ perform 32-bit floating-point load, store and exchange atomic operations on shared memory. vulkan%features-shaderSharedFloat32AtomicAdd shaderSharedFloat32AtomicAdd indicates whether shaders canG perform 32-bit floating-point add atomic operations on shared memory. vulkan#features-shaderSharedFloat64Atomics shaderSharedFloat64Atomics indicates whether shaders can\ perform 64-bit floating-point load, store and exchange atomic operations on shared memory. vulkan%features-shaderSharedFloat64AtomicAdd shaderSharedFloat64AtomicAdd indicates whether shaders canG perform 64-bit floating-point add atomic operations on shared memory. vulkan"features-shaderImageFloat32Atomics shaderImageFloat32Atomics indicates whether shaders canQ perform 32-bit floating-point load, store and exchange atomic image operations. vulkan$features-shaderImageFloat32AtomicAdd shaderImageFloat32AtomicAdd indicates whether shaders can< perform 32-bit floating-point add atomic image operations. vulkan"features-sparseImageFloat32Atomics sparseImageFloat32AtomicsV indicates whether 32-bit floating-point load, store and exchange atomic operations can be used on sparse images. vulkan$features-sparseImageFloat32AtomicAdd sparseImageFloat32AtomicAdd@ indicates whether 32-bit floating-point add atomic operations can be used on sparse images.  None("#%&'-./1789;=>?FHIMSUVX_dghklmq ivulkanVkPhysicalDeviceRobustness2PropertiesEXT - 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 T 9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alson, CvulkanoVkPhysicalDeviceRobustness2FeaturesEXT - Structure describing the out-of-bounds behavior for an implementationMembersThe members of the , structure describe the following features: Descriptionfeatures-robustBufferAccess2 robustBufferAccess2} indicates whether buffer accesses are tightly bounds-checked against the range of the descriptor. Uniform buffers mustq 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.features-robustImageAccess2 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.features-nullDescriptor nullDescriptor$ indicates whether descriptors can be written with a 8u 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 UsageEVUID-VkPhysicalDeviceRobustness2FeaturesEXT-robustBufferAccess2-04000 If 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)7VUID-VkPhysicalDeviceRobustness2FeaturesEXT-sType-sType sType must be See Alsop, C vulkan-limits-robustStorageBufferAccessSizeAlignment &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-limits-robustUniformBufferAccessSizeAlignment &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 T 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 the values of 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 w, x, or 7r, the i element of pPipelineStageCreationFeedbacks corresponds to the i element of w::pStages, x::pStages, or 7r::pStages. When chained to 7, the first element of pPipelineStageCreationFeedbacks corresponds to 7::stage. Valid UsageUVUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02668 When chained to 7r, ::"pipelineStageCreationFeedbackCount must equal 7r:: stageCountUVUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02669 When chained to 7, ::"pipelineStageCreationFeedbackCount must equal 1UVUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02670 When chained to w, ::"pipelineStageCreationFeedbackCount must equal w:: stageCountUVUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02969 When chained to x, ::"pipelineStageCreationFeedbackCount must equal x:: stageCountValid Usage (Implicit)8VUID-VkPipelineCreationFeedbackCreateInfoEXT-sType-sType sType must be uPVUID-VkPipelineCreationFeedbackCreateInfoEXT-pPipelineCreationFeedback-parameter pPipelineCreationFeedback must be a valid pointer to a  structureVVUID-VkPipelineCreationFeedbackCreateInfoEXT-pPipelineStageCreationFeedbacks-parameter pPipelineStageCreationFeedbacks must( be a valid pointer to an array of "pipelineStageCreationFeedbackCount  structures[VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-arraylength "pipelineStageCreationFeedbackCount must be greater than 0See Also7, 7r, , w, x, C 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 79, :, ;, or 7<D. 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_dghklmq bvulkanVkPhysicalDevicePipelineCreationCacheControlFeaturesEXT - 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  2 to enable features.Valid Usage (Implicit)See Alsop, C vulkan%features-pipelineCreationCacheControl pipelineCreationCacheControl- indicates that the implementation supports:The following can be used in Vk*PipelineCreateInfo::flags:j=j>The following can be used in 8B::flags:m?   None("#%&'-./1789;=>?FHIMSUVX_dghklmq yhvulkanVkPhysicalDeviceMemoryPriorityFeaturesEXT - 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  2 to enable features.Valid Usage (Implicit)See Alsop, CvulkanFVkMemoryPriorityAllocateInfoEXT - 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 AlsoC 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.3VUID-VkMemoryPriorityAllocateInfoEXT-priority-02602 priority must be between 0 and 1 , inclusive vulkanfeatures-memoryPriority memoryPriorityh indicates that the implementation supports memory priorities specified at memory allocation time via .     None("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkan[VkWriteDescriptorSetInlineUniformBlockEXT - Structure specifying inline uniform block dataValid Usage (Implicit)See AlsoCvulkanVkPhysicalDeviceInlineUniformBlockPropertiesEXT - 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 T 9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See AlsoCvulkanVkPhysicalDeviceInlineUniformBlockFeaturesEXT - 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  2 to enable features.Valid Usage (Implicit)See Alsop, CvulkanVkDescriptorPoolInlineUniformBlockCreateInfoEXT - Structure specifying the maximum number of inline uniform block bindings of a newly created descriptor poolValid Usage (Implicit)See AlsoC vulkanmaxInlineUniformBlockBindings= is the number of inline uniform block bindings to allocate. vulkandataSizeD is the number of bytes of inline uniform block data pointed to by pData.=VUID-VkWriteDescriptorSetInlineUniformBlockEXT-dataSize-02222 dataSize must be an integer multiple of 4CVUID-VkWriteDescriptorSetInlineUniformBlockEXT-dataSize-arraylength dataSize must be greater than 0 vulkanpData is a pointer to dataSize? number of bytes of data to write to the inline uniform block.>VUID-VkWriteDescriptorSetInlineUniformBlockEXT-pData-parameter pData must# be a valid pointer to an array of dataSize bytes vulkan limits-maxInlineUniformBlockSize maxInlineUniformBlockSize& 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. vulkan>limits-maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks 7maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks is similar to (maxPerStageDescriptorInlineUniformBlocksS but counts descriptor bindings from descriptor sets created with or without the @ bit set. vulkan*limits-maxDescriptorSetInlineUniformBlocks #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 Ae count against this limit. Only descriptor bindings in descriptor set layouts created without the @# bit set count against this limit. vulkan9limits-maxDescriptorSetUpdateAfterBindInlineUniformBlocks 2maxDescriptorSetUpdateAfterBindInlineUniformBlocks is similar to #maxDescriptorSetInlineUniformBlocksS but counts descriptor bindings from descriptor sets created with or without the @ bit set. vulkanfeatures-inlineUniformBlock inlineUniformBlockt indicates whether the implementation supports inline uniform block descriptors. If this feature is not enabled, A must not be used. vulkan;features-descriptorBindingInlineUniformBlockUpdateAfterBind 2descriptorBindingInlineUniformBlockUpdateAfterBind indicates whether the implementation supports updating inline uniform block descriptors after a set is bound. If this feature is not enabled, FB must not be used with A.                            None("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkanfVkPhysicalDeviceIndexTypeUint8FeaturesEXT - 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  2 to enable features.Valid Usage (Implicit)See Alsop, C 2vulkanfeatures-indexTypeUint8 indexTypeUint8 indicates that C can be used with . 1 2 / 0 3 4 1 2 0 4 / 3None("#%&'-./1789;=>?FHIMSUVX_dghklmq }vulkansVkPhysicalDeviceImageRobustnessFeaturesEXT - Structure describing the out-of-bounds behavior for an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of TH, it is filled with values indicating whether the feature is supported.Valid Usage (Implicit)See Alsop, C >vulkanfeatures-robustImageAccess robustImageAccessj indicates whether image accesses are tightly bounds-checked against the dimensions of the image view.  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-input-validationInvalid texelsN resulting from out of bounds image loads will be replaced as described in  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-replacementTexel Replacementi, with either (0,0,1) or (0,0,0) values inserted for missing G, B, or A components based on the format. = > ; < ? @ = > < @ ; ?None("#%&'-./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  2 to enable features.Valid Usage (Implicit)See Alsop, C Jvulkan&features-fragmentShaderSampleInterlock fragmentShaderSampleInterlock2 indicates that the implementation supports the  FragmentShaderSampleInterlockEXT SPIR-V capability. Kvulkan%features-fragmentShaderPixelInterlock fragmentShaderPixelInterlock2 indicates that the implementation supports the FragmentShaderPixelInterlockEXT SPIR-V capability. Lvulkan+features-fragmentShaderShadingRateInterlock "fragmentShaderShadingRateInterlock1 indicates that the implementation supports the %FragmentShaderShadingRateInterlockEXT SPIR-V capability.  I J K L G H M N  I J K L H N G MNone("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkanVkPhysicalDeviceFragmentDensityMap2PropertiesEXT - 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 T H, it is filled with the implementation-dependent limits and properties.See Alsop, CvulkanVkPhysicalDeviceFragmentDensityMap2FeaturesEXT - 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  2 to enable the features.Valid Usage (Implicit)See Alsop, C Xvulkanlimits-subsampledLoads subsampledLoads specifies if performing image data read with load operations on subsampled attachments will be resampled to the fragment density of the render pass Yvulkan0limits-subsampledCoarseReconstructionEarlyAccess )subsampledCoarseReconstructionEarlyAccessE specifies if performing image data read with samplers created with flags containing ZD; in fragment shader will trigger additional reads during E Zvulkanlimits-maxSubsampledArrayLayers maxSubsampledArrayLayers is the maximum number of /8 array layers for usages supporting subsampled samplers [vulkan)limits-maxDescriptorSetSubsampledSamplers "maxDescriptorSetSubsampledSamplers4 is the maximum number of subsampled samplers that can be included in a /F ]vulkan#features-fragmentDensityMapDeferred fragmentDensityMapDeferred specifies whether the implementation supports deferred reads of fragment density map image views. If this feature is not enabled, uG must not be included in 1::flags.  W X Y Z [ \ ] U V ^ _  \ ] W X Y Z [ V _ U ^None("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkan_VkPipelineRasterizationDepthClipStateCreateInfoEXT - Structure specifying depth clipping stateValid Usage (Implicit)See Alsop,  n, CvulkanlVkPhysicalDeviceDepthClipEnableFeaturesEXT - 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  2 to enable this feature.Valid Usage (Implicit)See Alsop, C nvulkanNVkPipelineRasterizationDepthClipStateCreateFlagsEXT - Reserved for future use Description nQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also qvulkanflags is reserved for future use.IVUID-VkPipelineRasterizationDepthClipStateCreateInfoEXT-flags-zerobitmask flags must be 0 rvulkandepthClipEnable> 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. tvulkanfeatures-depthClipEnable depthClipEnablef 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 ..  p q r s t l m n o u v  s t p q r n o m v l uNone("#%&'-./1789;=>?FHIMSUVX_dghklmq }vulkangVkPipelineRasterizationConservativeStateCreateInfoEXT - Structure specifying conservative raster stateValid Usage (Implicit)See Also ,  , CvulkanVkPhysicalDeviceConservativeRasterizationPropertiesEXT - 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 T H, it is filled with the implementation-dependent limits and properties.Valid Usage (Implicit)See Alsop, C 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.LVUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-flags-zerobitmask flags must be 0 vulkanconservativeRasterizationMode0 is the conservative rasterization mode to use.bVUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-conservativeRasterizationMode-parameter 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.aVUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-extraPrimitiveOverestimationSize-01769  extraPrimitiveOverestimationSize must be in the range of 0.0 to ::#maxExtraPrimitiveOverestimationSize inclusive vulkan"limits-primitiveOverestimationSize primitiveOverestimationSizey 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 mayi make the pixel coverage area even more conservative by increasing the size of the generating primitive. vulkan*limits-maxExtraPrimitiveOverestimationSize #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. vulkan2limits-extraPrimitiveOverestimationSizeGranularity +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. vulkanlimits-primitiveUnderestimation primitiveUnderestimation. is true if the implementation supports the  2 conservative rasterization mode in addition to  /. Otherwise the implementation only supports  . vulkan,limits-conservativePointAndLineRasterization %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. vulkan$limits-degenerateTrianglesRasterized degenerateTrianglesRasterized 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. vulkan limits-degenerateLinesRasterized degenerateLinesRasterized 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.limits-fullyCoveredFragmentShaderInputVariable '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. vulkan1limits-conservativeRasterizationPostDepthCoverage *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 .H 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 vvulkanwVkPipelineColorBlendAdvancedStateCreateInfoEXT - 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 UsageJVUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-srcPremultiplied-01424 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 .JVUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-dstPremultiplied-01425 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 .FVUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-01426 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)?VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-sType-sType sType must be 2JVUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-parameter  blendOverlap must be a valid   valueSee Also , p, CvulkanVkPhysicalDeviceBlendOperationAdvancedPropertiesEXT - 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 T 9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alsop, CvulkanVkPhysicalDeviceBlendOperationAdvancedFeaturesEXT - 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  2 to enable the features.Valid Usage (Implicit)See Alsop, C 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'limits-advancedBlendMaxColorAttachments  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. vulkan$limits-advancedBlendIndependentBlend advancedBlendIndependentBlend. specifies whether advanced blend operations can vary per-attachment. vulkan,limits-advancedBlendNonPremultipliedSrcColor %advancedBlendNonPremultipliedSrcColor% specifies whether the source color can. be treated as non-premultiplied. If this is ., then ::srcPremultiplied must be .. vulkan,limits-advancedBlendNonPremultipliedDstColor %advancedBlendNonPremultipliedDstColor* specifies whether the destination color can. be treated as non-premultiplied. If this is ., then ::dstPremultiplied must be .. vulkan%limits-advancedBlendCorrelatedOverlap advancedBlendCorrelatedOverlap% specifies whether the overlap mode can' be treated as correlated. If this is ., then :: blendOverlap must be  . vulkan!limits-advancedBlendAllOperations advancedBlendAllOperations_ specifies whether all advanced blend operation enums are supported. See the valid usage of 7. vulkan(features-advancedBlendCoherentOperations advancedBlendCoherentOperations# 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 ., I is treated the same as J^, 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 vulkanuVkPhysicalDevice4444FormatsFeaturesEXT - Structure describing additional 4444 formats supported by an implementationMembersThe members of the , structure describe the following features:Valid Usage (Implicit)See Alsop, C vulkanfeatures-formatA4R4G4B4 formatA4R4G4B4$ indicates that the implementation must support using a  of K with at least the following {L:{%{&{' vulkanfeatures-formatA4B4G4R4 formatA4B4G4R4$ indicates that the implementation must support using a  of M with at least the following {L:{%{&{'  None("#%&'-./1789;=>?FHIMSUVX_dghklmq 7vulkanVkTextureLODGatherFormatPropertiesAMD - 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 Alsop, C 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 wvulkanVkPhysicalDeviceShaderCoreProperties2AMD - Structure describing shader core properties that can be supported by an implementationMembersThe members of the wC structure describe the following implementation-dependent limits: DescriptionIf the w structure is included in the pNext chain of T 9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Also , C vulkanNVkShaderCorePropertiesFlagBitsAMD - Bitmask specifying shader core propertiesSee Alsow,  vulkanfeatures-shaderCoreFeatures shaderCoreFeatures is a bitmask of  > indicating the set of features supported by the shader core. vulkanlimits-activeComputeUnitCount activeComputeUnitCount^ is an unsigned integer value indicating the number of compute units that have been enabled. w      w      yNone("#%&'-./1789;=>?FHIMSUVX_dghklmq pvulkanhVkPipelineCompilerControlCreateInfoAMD - Structure used to pass compilation control flags to a pipelineValid Usage (Implicit)See Also !, C vulkan[VkPipelineCompilerControlFlagBitsAMD - Enum specifying available compilation control flagsSee Also ! #vulkancompilerControlFlags is a bitmask of  . affecting how the pipeline will be compiled.LVUID-VkPipelineCompilerControlCreateInfoAMD-compilerControlFlags-zerobitmask compilerControlFlags must be 0 p " #    ! $ % p " # !   %  $qNone("#%&'-./1789;=>?FHIMSUVX_dghklmq $SXvulkanVkPhysicalDeviceCoherentMemoryFeaturesAMD - Structure describing whether device coherent memory can be supported by an implementationMembersThe members of the X, structure describe the following features:Valid Usage (Implicit)See Alsop, C 7vulkanfeatures-deviceCoherentMemory deviceCoherentMemory. indicates that the implementation supports  VkMemoryPropertyFlagBits.htmldevice coherent memory.X 6 7 4 5 8 9X 6 7 5 9 4 8oNone("#%&'-./1789;=>?FHIMSUVX_dghklmq 7JvulkanhVkPhysicalDeviceVulkanMemoryModelFeatures - Structure describing features supported by the memory modelValid Usage (Implicit)See Alsop, C Avulkan$extension-features-vulkanMemoryModel vulkanMemoryModelI 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. Bvulkan/extension-features-vulkanMemoryModelDeviceScope vulkanMemoryModelDeviceScope4 indicates whether the Vulkan Memory Model can use /D scope synchronization. This also indicates whether shader modules can declare the VulkanMemoryModelDeviceScope capability. Cvulkan@extension-features-vulkanMemoryModelAvailabilityVisibilityChains -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.J @ A B CCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEJ @ A B CCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE<None("#%&'-./1789;=>?FHIMSUVX_dghklmq PX J K L M N O O L K N J MnNone("#%&'-./1789;=>?FHIMSUVX_dghklmq _$Ivulkan~VkPhysicalDeviceUniformBufferStandardLayoutFeatures - Structure indicating support for std430-like packing in uniform buffersMembersThe 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  2 to enable this feature.Valid Usage (Implicit)See Alsop, C Qvulkan.extension-features-uniformBufferStandardLayout 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.I P QCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEI P QCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE=None("#%&'-./1789;=>?FHIMSUVX_dghklmq w X Y Z [ \ ] ] Z Y \ X [lNone("#%&'-./1789;=>?FHIMSUVX_dghklmq BvulkanVkPhysicalDeviceShaderSubgroupExtendedTypesFeatures - Structure describing the extended types subgroups support feature for an implementationMembersThe members of the B, structure describe the following features: DescriptionIf the B structure is included in the pNext chain of TK, it is filled with values indicating whether each feature is supported. B can also be included in the pNext chain of  2 to enable features.Valid Usage (Implicit)See Alsop, C _vulkan*extension-features-subgroup-extended-types 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.B ^ _CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEB ^ _CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE>None("#%&'-./1789;=>?FHIMSUVX_dghklmq M f g h i j k k h g j f ikNone("#%&'-./1789;=>?FHIMSUVX_dghklmq AvulkantVkPhysicalDeviceFloatControlsProperties - Structure describing properties supported by VK_KHR_shader_float_controlsMembersThe members of the AC structure describe the following implementation-dependent limits: DescriptionIf the A structure is included in the pNext chain of T 9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alsop, , C mvulkan-extension-features-denormBehaviorIndependence denormBehaviorIndependence is a h value indicating whether, and how, denorm behavior can be set independently for different bit widths. nvulkan+extension-features-roundingModeIndependence roundingModeIndependence is a g value indicating whether, and how, rounding modes can be set independently for different bit widths. ovulkan6extension-limits-shaderSignedZeroInfNanPreserveFloat16 %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. pvulkan6extension-limits-shaderSignedZeroInfNanPreserveFloat32 %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. qvulkan6extension-limits-shaderSignedZeroInfNanPreserveFloat64 %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. rvulkan,extension-limits-shaderDenormPreserveFloat16 shaderDenormPreserveFloat162 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. svulkan,extension-limits-shaderDenormPreserveFloat32 shaderDenormPreserveFloat322 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. tvulkan,extension-limits-shaderDenormPreserveFloat64 shaderDenormPreserveFloat642 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. uvulkan/extension-limits-shaderDenormFlushToZeroFloat16 shaderDenormFlushToZeroFloat162 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. vvulkan/extension-limits-shaderDenormFlushToZeroFloat32 shaderDenormFlushToZeroFloat322 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. wvulkan/extension-limits-shaderDenormFlushToZeroFloat64 shaderDenormFlushToZeroFloat642 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. xvulkan-extension-limits-shaderRoundingModeRTEFloat16 shaderRoundingModeRTEFloat16 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. yvulkan-extension-limits-shaderRoundingModeRTEFloat32 shaderRoundingModeRTEFloat32 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. zvulkan-extension-limits-shaderRoundingModeRTEFloat64 shaderRoundingModeRTEFloat64 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. {vulkan-extension-limits-shaderRoundingModeRTZFloat16 shaderRoundingModeRTZFloat16 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. |vulkan-extension-limits-shaderRoundingModeRTZFloat32 shaderRoundingModeRTZFloat32 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. }vulkan-extension-limits-shaderRoundingModeRTZFloat64 shaderRoundingModeRTZFloat64 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.A l m n o p q r s t u v w x y z { | }CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEA l m n o p q r s t u v w x y z { | }CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE?None("#%&'-./1789;=>?FHIMSUVX_dghklmq  jNone("#%&'-./1789;=>?FHIMSUVX_dghklmq 2&@vulkanrVkPhysicalDeviceShaderFloat16Int8Features - Structure describing features supported by VK_KHR_shader_float16_int8Valid Usage (Implicit)See Alsop, C vulkan extension-features-shaderFloat16  shaderFloat16t indicates whether 16-bit floats (halfs) are supported in shader code. This also indicates whether shader modules can declare the Float16e 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 (for non-Block variables), 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. vulkanextension-features-shaderInt8  shaderInt8 indicates whether 8-bit integers (signed and unsigned) are supported in shader code. This also indicates whether shader modules can declare the Int8e 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! (for non-Block variables), 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.@ CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE@ CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE@None("#%&'-./1789;=>?FHIMSUVX_dghklmq J  iNone("#%&'-./1789;=>?FHIMSUVX_dghklmq U ?vulkanrVkPhysicalDeviceShaderAtomicInt64Features - Structure describing features supported by VK_KHR_shader_atomic_int64Valid Usage (Implicit)See Alsop, C vulkan+extension-features-shaderBufferInt64Atomics shaderBufferInt64Atomics indicates whether shaders canJ perform 64-bit unsigned and signed integer atomic operations on buffers. vulkan+extension-features-shaderSharedInt64Atomics shaderSharedInt64Atomics indicates whether shaders canP perform 64-bit unsigned and signed integer atomic operations on shared memory.? CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE? CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEANone("#%&'-./1789;=>?FHIMSUVX_dghklmq m  aNone("#%&'-./1789;=>?FHIMSUVX_dghklmq &vulkaneVkPhysicalDevice8BitStorageFeatures - Structure describing features supported by VK_KHR_8bit_storageValid Usage (Implicit)See Alsop, C vulkan*extension-features-storageBuffer8BitAccess storageBuffer8BitAccess# indicates whether objects in the  StorageBuffer, ShaderRecordBufferKHR, 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. vulkan4extension-features-uniformAndStorageBuffer8BitAccess !uniformAndStorageBuffer8BitAccess# indicates whether objects in the Uniform storage class with the Block decoration canU 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. vulkan'extension-features-storagePushConstant8 storagePushConstant8# indicates whether objects in the  PushConstant storage class canU 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.& CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE& CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEBNone("#%&'-./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  2 to enable this feature.Valid Usage (Implicit)See Alsop, C vulkan$extension-features-scalarBlockLayout scalarBlockLayout^ 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.$ CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE$ CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFECNone("#%&'-./1789;=>?FHIMSUVX_dghklmq Ù  DNone("#%&'-./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 m:: pSemaphoresC has reached the value specified by the corresponding element of m::pValues. If  M is not set, the semaphore wait condition is that all of the semaphores in m:: pSemaphoresD have reached the value specified by the corresponding element of m::pValues.  ENone("#%&'-./1789;=>?FHIMSUVX_dghklmq L vulkanUVkResolveModeFlagBits - Bitmask indicating supported depth and stencil resolve modesSee Also , d 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. FNone("#%&'-./1789;=>?FHIMSUVX_dghklmq h 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 A 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 N and  O+. 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. PNone("#%&'-./1789;=>?FHIMSUVX_dghklmq &1 ZNone("#%&'-./1789;=>?FHIMSUVX_dghklmq >vulkanVkPhysicalDeviceVariablePointersFeatures - Structure describing variable pointers features that can be supported by an implementationMembersThe members of the , structure describe the following features: Description0extension-features-variablePointersStorageBuffer variablePointersStorageBuffer? 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.#extension-features-variablePointers 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  2 to enable the features. Valid UsageDVUID-VkPhysicalDeviceVariablePointersFeatures-variablePointers-01431 If variablePointers is enabled then variablePointersStorageBuffer must also be enabledValid Usage (Implicit)9VUID-VkPhysicalDeviceVariablePointersFeatures-sType-sType sType must be iSee Alsop, C CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE   CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEGNone("#%&'-./1789;=>?FHIMSUVX_dghklmq 9               YNone("#%&'-./1789;=>?FHIMSUVX_dghklmq BvulkanVkPhysicalDeviceShaderDrawParametersFeatures - 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 Alsop, C vulkan'extension-features-shaderDrawParameters shaderDrawParameters9 specifies whether shader draw parameters are supported. CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE   CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEFNone("#%&'-./1789;=>?FHIMSUVX_dghklmq yovulkangVkPhysicalDevice16BitStorageFeatures - Structure describing features supported by VK_KHR_16bit_storageValid Usage (Implicit)See Alsop, C vulkan+extension-features-storageBuffer16BitAccess storageBuffer16BitAccess# specifies whether objects in the  StorageBuffer, ShaderRecordBufferKHR, 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. vulkan5extension-features-uniformAndStorageBuffer16BitAccess "uniformAndStorageBuffer16BitAccess# specifies whether objects in the Uniform 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 "UniformAndStorageBuffer16BitAccess capability. vulkan(extension-features-storagePushConstant16 storagePushConstant16# 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. vulkan'extension-features-storageInputOutput16 storageInputOutput16# 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.     CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE     CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEHNone("#%&'-./1789;=>?FHIMSUVX_dghklmq 1  ! " # $ $ ! #  "INone("#%&'-./1789;=>?FHIMSUVX_dghklmq %vulkandVkSubgroupFeatureFlagBits - Enum describing what group operations are supported with subgroup scopeSee Also ' (vulkanfeatures-subgroup-partitioned  (I specifies the device will accept SPIR-V shader modules containing the GroupNonUniformPartitionedNV capability. )vulkanfeatures-subgroup-quad  )I specifies the device will accept SPIR-V shader modules containing the GroupNonUniformQuad capability. *vulkanfeatures-subgroup-clustered  *I specifies the device will accept SPIR-V shader modules containing the GroupNonUniformClustered capability. +vulkan"features-subgroup-shuffle-relative  +H specifies the device will accept SPIR-V shader modules containing the GroupNonUniformShuffleRelative capability. ,vulkanfeatures-subgroup-shuffle  ,I specifies the device will accept SPIR-V shader modules containing the GroupNonUniformShuffle capability. -vulkanfeatures-subgroup-ballot  -I specifies the device will accept SPIR-V shader modules containing the GroupNonUniformBallot capability. .vulkanfeatures-subgroup-arithmetic  .I specifies the device will accept SPIR-V shader modules containing the GroupNonUniformArithmetic capability. /vulkanfeatures-subgroup-vote  /I specifies the device will accept SPIR-V shader modules containing the GroupNonUniformVote capability. 0vulkanfeatures-subgroup-basic  0I specifies the device will accept SPIR-V shader modules containing the GroupNonUniform capability. % 0 / . - , + * ) ( & ' ' % 0 / . - , + * ) ( & 0 / . - , + * ) (JNone("#%&'-./1789;=>?FHIMSUVX_dghklmq  9vulkanaVkSemaphoreImportFlagBits - Bitmask specifying additional parameters of semaphore payload import Description'These bits have the following meanings:See Also ; <vulkan <[ 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. 9 < : ; ; 9 < : <BNone("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkanPVkPeerMemoryFeatureFlagBits - 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. H 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 Fvulkan F specifies that the memory canT be written as any memory access type. Shader atomics are considered to be writes. Gvulkan G specifies that the memory can$ be read as any memory access type. Hvulkan H specifies that the memory can( be accessed as the destination of any  vkCmdCopy* command. Ivulkan I specifies that the memory can# be accessed as the source of any  vkCmdCopy* command. I H G F E I H G F E I H G FKNone("#%&'-./1789;=>?FHIMSUVX_dghklmq & RvulkanSVkMemoryAllocateFlagBits - Bitmask specifying flags for a device memory allocationSee Also T Uvulkan U specifies that the memory can3 be attached to a buffer object created with the Q bit set in usage, and that the memory handle can- be used to retrieve an opaque address via bR. Vvulkan V& 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. Wvulkan W> specifies that memory will be allocated for the devices in J:: deviceMask. R W V U S T T R W V U S W V ULNone("#%&'-./1789;=>?FHIMSUVX_dghklmq  `vulkanYVkFenceImportFlagBits - Bitmask specifying additional parameters of fence payload importSee Also b cvulkan cW 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. ` c a b b ` c a cMNone("#%&'-./1789;=>?FHIMSUVX_dghklmq%X lvulkanYVkExternalSemaphoreHandleTypeFlagBits - Bitmask of valid external semaphore handle types DescriptionNoteHandles of type  p 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:; Handle type  P:: driverUUID  P:: deviceUUID   t l Must match l Must match   s l Must match l Must match   r l Must match l Must match   q l Must match l Must match   p l No restriction l No restriction   o l No restriction l No restriction -External semaphore handle types compatibilitySee Also n, , , , R, , ,  ovulkan o specifies a handle to a Zircon event object. It can be used with any native API that accepts a Zircon event handle. Zircon event handles are created with ZX_RIGHTS_BASIC and ZX_RIGHTS_SIGNALZ rights. Vulkan on Fuchsia uses only the ZX_EVENT_SIGNALED bit when signaling or waiting. pvulkan pM 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. qvulkan q% specifies an NT handle returned by  ID3D12Device::CreateSharedHandle' referring to a Direct3D 12 fence, or  ID3D11Device5::,S~ by a Direct3D 11 fence. It owns a reference to the underlying synchronization primitive associated with the Direct3D fence. rvulkan rw 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. svulkan sl 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. tvulkan t~ 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. l t s r q p o m n u u n l t s r q p o m t s r q p oQNone("#%&'-./1789;=>?FHIMSUVX_dghklmq2vulkanfVkExportSemaphoreCreateInfo - Structure specifying handle types that can be exported from a semaphore Valid Usage2VUID-VkExportSemaphoreCreateInfo-handleTypes-01124 The bits in  handleTypes must2 be supported and compatible, as reported by RbValid Usage (Implicit),VUID-VkExportSemaphoreCreateInfo-sType-sType sType must be 6VUID-VkExportSemaphoreCreateInfo-handleTypes-parameter  handleTypes must be a valid combination of MT valuesSee Also n, C vulkan handleTypes is a bitmask of MT@ 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. ~ CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE 9 : < ; ~ CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE 9 : < < ;NNone("#%&'-./1789;=>?FHIMSUVX_dghklmqK ONone("#%&'-./1789;=>?FHIMSUVX_dghklmqR2 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‡ 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    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 U=) and that prevent incompatible usage of dma-bufs (such as P and P).See Also, , , , , , , , P, P, U, V, W, X 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 Y* 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 0 is a Zircon handle to a virtual memory object. 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.  PNone("#%&'-./1789;=>?FHIMSUVX_dghklmqa 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 AZ. 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 H and HG to create (or import) a dedicated allocation for the image or buffer. QNone("#%&'-./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_dghklmqvulkan^VkExportFenceCreateInfo - Structure specifying handle types that can be exported from a fence Valid Usage.VUID-VkExportFenceCreateInfo-handleTypes-01446 The bits in  handleTypes must2 be supported and compatible, as reported by N\Valid Usage (Implicit)(VUID-VkExportFenceCreateInfo-sType-sType sType must be 2VUID-VkExportFenceCreateInfo-handleTypes-parameter  handleTypes must be a valid combination of Q] valuesSee Also , C vulkan handleTypes is a bitmask of Q]< 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. CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE ` a c b CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE ` a c c bRNone("#%&'-./1789;=>?FHIMSUVX_dghklmq*W SNone("#%&'-./1789;=>?FHIMSUVX_dghklmq0 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.  TNone("#%&'-./1789;=>?FHIMSUVX_dghklmq5 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_dghklmq9^vulkan0VkCommandPoolTrimFlags - 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:p E I H G F   % & 0 / . - , + * ) ( ' 9 : < ; R S W V U T ` a c b l m t s r q p o n u UNone("#%&'-./1789;=>?FHIMSUVX_dghklmqS vulkanDVkSubpassDescriptionFlagBits - Bitmask specifying usage of a subpass DescriptionNoteWShader resolve operations allow for custom resolve operations, but overdrawing pixels may7 have a performance and/or power cost. Furthermore, since the content 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 operation which sources these undefined values also has undefined result value.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. vulkan  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. vulkan @ specifies that the subpass performs shader resolve operations.              'None("#%&'-./1789;=>?FHIMSUVX_dghklmq[AevulkanfVkStencilFaceFlagBits - Bitmask specifying sets of stencil state for which to update the compare maskSee Alsof 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.e    f  fe       VNone("#%&'-./1789;=>?FHIMSUVX_dghklmq` vulkan[VkSparseMemoryBindFlagBits - Bitmask specifying usage of a sparse memory binding operationSee Also  vulkan H specifies that the memory being bound is only for the metadata aspect.         WNone("#%&'-./1789;=>?FHIMSUVX_dghklmqj 'vulkanfVkSparseImageFormatFlagBits - Bitmask specifying additional information about a sparse image resourceSee Also ) *vulkan *U 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. +vulkan + 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. ,vulkan ,N specifies that the image uses a single mip tail region for all array layers. ' , + * ( ) ) ' , + * ( , + *&None("#%&'-./1789;=>?FHIMSUVX_dghklmq~cvulkan;VkShaderStageFlagBits - Bitmask specifying a pipeline stage DescriptionNote ? 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`, d, a 6vulkan 6$ specifies the ray generation stage. 7vulkan 7 specifies the any-hit stage. 8vulkan 8! specifies the closest hit stage. 9vulkan 9 specifies the miss stage. :vulkan :" specifies the intersection stage. ;vulkan ; specifies the callable stage. <vulkan < specifies the task stage. =vulkan = specifies the mesh stage. >vulkan > 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. ?vulkan ?y is a combination of bits used as shorthand to specify all graphics stages defined above (excluding the compute stage). @vulkan @ specifies the compute stage. Avulkan A specifies the fragment stage. Bvulkan B specifies the geometry stage. Cvulkan C. specifies the tessellation evaluation stage. Dvulkan D+ specifies the tessellation control stage. Evulkan E specifies the vertex stage.c E D C B A @ ? > = < ; : 9 8 7 6 5d#dc E D C B A @ ? > = < ; : 9 8 7 6 5 E D C B A @ ? > = < ; : 9 8 7 6None("#%&'-./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 AlsoCvulkanVkPhysicalDeviceSubgroupSizeControlPropertiesEXT - 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 T 9, 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 Alsod, CvulkanVkPhysicalDeviceSubgroupSizeControlFeaturesEXT - 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  2 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  2 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 Alsop, C QvulkanVVUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-requiredSubgroupSize-02760 requiredSubgroupSize must be a power-of-two integerVVUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-requiredSubgroupSize-02761 requiredSubgroupSize must be greater or equal to fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-min-subgroup-sizeminSubgroupSizeVVUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-requiredSubgroupSize-02762 requiredSubgroupSize must be less than or equal to fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroup-sizemaxSubgroupSize Svulkanlimits-min-subgroup-size minSubgroupSize9 is the minimum subgroup size supported by this device. minSubgroupSizeB is at least one if any of the physical device s queues support \b or \c. 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. Tvulkanlimits-max-subgroup-size maxSubgroupSize9 is the maximum subgroup size supported by this device. maxSubgroupSizeB is at least one if any of the physical device s queues support \b or \c. 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. Uvulkan"limits-max-subgroups-per-workgroup maxComputeWorkgroupSubgroupsY is the maximum number of subgroups supported by the implementation within a workgroup. Vvulkan$limits-required-subgroup-size-stages requiredSubgroupSizeStagesY is a bitfield of what shader stages support having a required subgroup size specified. Xvulkanfeatures-subgroupSizeControl subgroupSizeControl[ indicates whether the implementation supports controlling shader subgroup sizes via the cd flag and the  structure. Yvulkanfeatures-computeFullSubgroups computeFullSubgroupsf indicates whether the implementation supports requiring full subgroups in compute shaders via the ce flag. P Q R S T U V W X Y N O Z [ W X Y R S T U V P Q O [ N ZENone("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanaVkPhysicalDeviceSubgroupProperties - 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 T 9, 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 Alsop, d, C,  ' ovulkanextension-limits-subgroup-size  subgroupSize9 is the default number of invocations in each subgroup.  subgroupSize@ is at least 1 if any of the physical device s queues support \b or \c.  subgroupSize is a power-of-two. pvulkanlimits-subgroup-supportedStages supportedStages is a bitfield of &f% 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 &g: bit set if any of the physical device s queues support \c. qvulkan"limits-subgroupSupportedOperations supportedOperations 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  0: bit set if any of the physical device s queues support \b or \c. rvulkan)limits-subgroup-quadOperationsInAllStages quadOperationsInAllStages# 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. n o p q rCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE % & 0 / . - , + * ) ( ' n o p q rCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE % & 0 / . - , + * ) ( 0 / . - , + * ) ( 'XNone("#%&'-./1789;=>?FHIMSUVX_dghklmq y z { { y zYNone("#%&'-./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<  ZNone("#%&'-./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 vulkansamplers-subsamplesampler  B specifies that the sampler will read from an image created with flags containing h. 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, l, 0, , , T*, 7W, b, , i, ?j 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 bba [None("#%&'-./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.  \None("#%&'-./1789;=>?FHIMSUVX_dghklmqF 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 k bit. (see  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-protected-memoryProtected Memory,). If the physical device supports the protectedMemory2 feature, at least one of its queue families 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_dghklmq` _vulkanAVkQueryType - Specify the type of queries managed by a query poolSee Also:q, l, m, n 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!acceleration structure size query for use with l or n. vulkan  specifies a lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-copying/serialization acceleration structure size query vulkan  specifies a  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-copying!acceleration structure size query for use with m. 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_dghklmqk]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.] ^ ^] ]None("#%&'-./1789;=>?FHIMSUVX_dghklmqo vulkan0VkQueryPoolCreateFlags - Reserved for future use Description Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also:q  ^None("#%&'-./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 Also\vulkan specifies the precision of  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-occlusionocclusion queries.[\\[ None("#%&'-./1789;=>?FHIMSUVX_dghklmq Zvulkan4VkPrimitiveTopology - 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 Also7T, ovulkan 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.vulkan 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.vulkan 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.vulkan 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.vulkan specifies a series of  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-fansconnected triangle primitives6 with all triangles sharing a common vertex. If the VK_KHR_portability_subset extension is enabled, and :: triangleFans is .C, then triangle fans are not supported by the implementation, and  must not be used.vulkan 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.vulkan specifies a series of  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-listsseparate triangle primitives.vulkan 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.vulkan specifies a series of  `https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-line-listsseparate line primitives.vulkan specifies a series of  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-point-listsseparate point primitives. ZZ_None("#%&'-./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["vulkan"# 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 " 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 "$ mode using the triangle s vertices.#vulkan#6 specifies that polygon vertices are drawn as points.$vulkan$: specifies that polygon edges are drawn as line segments.%vulkan%] specifies that polygons are rendered using the polygon rasterization rules in this section. %$#"!  %$#"!%$#"`None("#%&'-./1789;=>?FHIMSUVX_dghklmq+,vulkan<VkPipelineViewportStateCreateFlags - Reserved for future use Description,Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also7h,-,-aNone("#%&'-./1789;=>?FHIMSUVX_dghklmq/6vulkan?VkPipelineVertexInputStateCreateFlags - Reserved for future use Description6Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also7d6767bNone("#%&'-./1789;=>?FHIMSUVX_dghklmq4T@vulkan@VkPipelineTessellationStateCreateFlags - Reserved for future use Description@Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also7b@A@ANone("#%&'-./1789;=>?FHIMSUVX_dghklmqt8Xvulkan<VkPipelineStageFlagBits - Bitmask specifying pipeline stages DescriptionTThese values all have the same value/meaning as the equivalently named values for p.See Also, Y, , qKvulkanKz specifies the stage of the pipeline where vertex attribute output values are written to the transform feedback buffers.LvulkanL_ specifies the stage of the pipeline where the predicate of conditional rendering is consumed.MvulkanM specifies the execution of , r, m , s, , t, u, v, and l.NvulkanNA specifies the execution of the ray tracing shader stages, via  , w, or PvulkanP! specifies the task shader stage.QvulkanQ! specifies the mesh shader stage.RvulkanRQ 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.SvulkanSb specifies the stage of the pipeline where device-side preprocessing for generated commands via x is handled.TvulkanT" specifies no stages of execution.UvulkanU\ specifies all operations performed by all commands supported on the queue it is used with.VvulkanVb specifies the execution of all graphics pipeline stages, and is equivalent to the logical OR of:dPQcba`_^]\[LKyRWvulkanW 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.XvulkanX is equivalent to U with z set to 0} when specified in the first synchronization scope, but specifies no stage of execution when specified in the second scope.Yvulkan(synchronization-pipeline-stages-transfer Y# specifies the following commands: All  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands, including { and |} and ~ All  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clearsclear commands", with the exception of ZvulkanZ. specifies the execution of a compute shader.[vulkan[ 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.\vulkan\ 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.]vulkan] 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.^vulkan^& specifies the fragment shader stage._vulkan_& specifies the geometry shader stage.`vulkan`5 specifies the tessellation evaluation shader stage.avulkana2 specifies the tessellation control shader stage.bvulkanb# specifies the vertex shader stage.cvulkancR specifies the stage of the pipeline where vertex and index buffers are consumed.dvulkand specifies the stage of the pipeline where Draw/DispatchIndirect/TraceRaysIndirect data structures are consumed. This stage also includes reading commands written by .evulkane is equivalent to U with z set to 0} when specified in the second synchronization scope, but specifies no stage of execution when specified in the first scope.Xedcba`_^]\[ZYXWVUTSRQPONMLKJY9YXedcba`_^]\[ZYXWVUTSRQPONMLKJedcba`_^]\[ZYXWVUTSRQPONMLKcNone("#%&'-./1789;=>?FHIMSUVX_dghklmqnvulkanaVkPipelineShaderStageCreateFlagBits - Bitmask controlling how a pipeline shader stage is created DescriptionNoteIf q and r 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 Alsopqvulkanq 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.rvulkanr$ specifies that the subgroup sizes must? be launched with all invocations active in the compute stage.nrqoppnrqorqdNone("#%&'-./1789;=>?FHIMSUVX_dghklmqX{vulkanAVkPipelineRasterizationStateCreateFlags - Reserved for future use Description{Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also7[{|{|eNone("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkan?VkPipelineMultisampleStateCreateFlags - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also7WfNone("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkan5VkPipelineLayoutCreateFlags - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also9UgNone("#%&'-./1789;=>?FHIMSUVX_dghklmqdvulkanAVkPipelineInputAssemblyStateCreateFlags - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also7ThNone("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkan;VkPipelineDynamicStateCreateFlags - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also7LiNone("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkan@VkPipelineDepthStencilStateCreateFlags - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also7JjNone("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanHVkPipelineCreateFlagBits - Bitmask controlling how a pipeline is created DescriptionQ 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 V< structure. This is available in ray tracing 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.. specifies that the shader group handles canR be saved and reused on a subsequent run (e.g. for trace capture and replay).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 8.'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)kNone("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkan>VkPipelineColorBlendStateCreateFlags - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also7DlNone("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkan<VkPipelineCacheHeaderVersion - Encode pipeline cache versionSee Also8, 8vulkan. specifies version one of the pipeline cache.mNone("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanVVkPipelineCacheCreateFlagBits - Bitmask specifying the behavior of the pipeline cacheSee Alsovulkan7 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_dghklmqWvulkanVVkPipelineBindPoint - Specify the bind point of a pipeline object to a command bufferSee AlsoI, m, n, , 6, c, , , , vulkan. specifies binding as a ray tracing pipeline.vulkan) specifies binding as a compute pipeline.vulkan* specifies binding as a graphics pipeline.WWnNone("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkan6VkPhysicalDeviceType - 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 vulkanG - 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_dghklmq.VvulkanBVkObjectType - Specify an enumeration to track object handle types Description' V" ; Vulkan Handle Type ) 4 : Unknown/Undefined Handle  3  /  2  /  1  /  0  /  /  /  .  /  -  /  ,  /  +  /  *  /   )  /  (  /  '  /  &  /  %  /  $  /  #  /F  "  /  !  /     /    /    /    /    /    /     C     C    p    p    p    p    p    p    p    p    p    p    p    p    p V and Vulkan Handle RelationshipSee Also$, %, @, , +V43210/.-,+*)('&%$#"!    TV43210/.-,+*)('&%$#"!    43210/.-,+*)('&%$#"!   None("#%&'-./1789;=>?FHIMSUVX_dghklmq|1vulkanVkPhysicalDeviceDeviceMemoryReportFeaturesEXT - Structure describing whether device memory report callback 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 a value indicating whether the feature is supported.  can also be used in the pNext chain of  2 to enable the feature.Valid Usage (Implicit)See Alsop, Cvulkan_VkDeviceMemoryReportCallbackDataEXT - Structure specifying parameters returned to the callback DescriptionmemoryObjectId= is used to avoid double-counting on the same memory object.6If an internally-allocated device memory object or a / cannot be exported, memoryObjectId must be unique in the /.6If an internally-allocated device memory object or a / supports being exported, memoryObjectId must be unique system wide.*If an internal device memory object or a /3 is backed by an imported external memory object, memoryObjectId must be unique system wide.Note^This structure should only be considered valid during the lifetime of the triggered callback.For W and U events,  objectHandleR usually will not yet exist when the application or tool receives the callback.  objectHandle will only exist when the create or allocate call that triggered the event returns, and if the allocation or import ends up failing  objectHandle won t ever exist.Valid Usage (Implicit)See Also?, A, n, V, CvulkanfVkDeviceDeviceMemoryReportCreateInfoEXT - Register device memory report callbacks for a Vulkan device Description The callback may0 be called from multiple threads simultaneously. The callback must3 be called only once by the implementation when a ? event occurs.NoteiThe callback could be called from a background thread other than the thread calling the Vulkan commands.Valid Usage (Implicit)See Also=, A, C=vulkanaPFN_vkDeviceMemoryReportCallbackEXT - Application-defined device memory report callback function Description The callback must' not make calls to any Vulkan commands.See Also?vulkanSVkDeviceMemoryReportEventTypeEXT - Events that can occur on a device memory objectSee AlsoDvulkanflags" is 0 and reserved for future use.Evulkantype is a ?5 type specifying the type of event reported in this  structure.FvulkanmemoryObjectIdG is the unique id for the underlying memory object as described below.Gvulkansize/ is the size of the memory object in bytes. If type is W, U or S, size is a valid n value. Otherwise, size is undefined.Hvulkan objectType is a V_ value specifying the type of the object associated with this device memory report event. If type is W, V, U, T or S,  objectType is a valid V enum. Otherwise,  objectType is undefined.Ivulkan objectHandleE is the object this device memory report event is attributed to. If type is W, V, U or T,  objectHandle7 is 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-types+VkObjectType and Vulkan Handle Relationship table. Otherwise,  objectHandle is undefined.Jvulkan heapIndexM describes which memory heap this device memory allocation is made from. If type is W or S,  heapIndex2 corresponds to one of the valid heaps from the   structure. Otherwise,  heapIndex is undefined.Lvulkanflags" is 0 and reserved for future use.>VUID-VkDeviceDeviceMemoryReportCreateInfoEXT-flags-zerobitmask flags must be 0MvulkanpfnUserCallback. is the application callback function to call.FVUID-VkDeviceDeviceMemoryReportCreateInfoEXT-pfnUserCallback-parameter pfnUserCallback must be a valid = valueNvulkan pUserData+ is user data to be passed to the callback.@VUID-VkDeviceDeviceMemoryReportCreateInfoEXT-pUserData-parameter  pUserData must be a pointer valuePvulkanfeatures-deviceMemoryReport deviceMemoryReporth indicates whether the implementation supports the ability to register device memory report callbacks.SvulkanSf specifies this event corresponds to the failed allocation of an internal device memory object or a /.TvulkanTL specifies this event is the release of an imported external memory object.UvulkanUN specifies this event corresponds to the import of an external memory object.VvulkanVm specifies this event corresponds to the deallocation of an internally-allocated device memory object or a /.WvulkanW_ specifies this event corresponds to the allocation of an internal device memory object or a /. OPCGDEFHIJKLMN;<=>?WVUTS@ABQR%OPKLMNCGDEFHIJAB?WVUTS@WVUTS=><R;QoNone("#%&'-./1789;=>?FHIMSUVX_dghklmq wvulkanKVkMemoryPropertyFlagBits - Bitmask specifying properties for a memory type Description(For any memory allocated with both the  and the {, 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 Alsoyzvulkanz 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 z set and any of  set, or  set, or ~ set.{vulkan{v bit specifies that device accesses to allocations of this memory type are automatically made available and visible.|vulkan| bit specifies that memory allocated with this type is not cached on the device. Uncached device memory is always device coherent.}vulkan}[ bit specifies that the memory type only allows device access to the memory. Memory types must not have both } and 1 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.~vulkan~ 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.vulkan8 bit specifies that the host cache management commands 3 and 3m are not needed to flush host writes to the device or make device writes visible to the host, respectively.vulkan5 bit specifies that memory allocated with this type can" be mapped for host access using 3.vulkan 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 p set. w~}|{zxyyw~}|{zx~}|{zNone("#%&'-./1789;=>?FHIMSUVX_dghklmq2Uvulkan*VkMemoryMapFlags - Reserved for future use DescriptionUQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also3UUpNone("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanDVkMemoryHeapFlagBits - Bitmask specifying attribute flags for a heapSee Alsovulkan 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.vulkanR 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.qNone("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkan*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    s " d    s "( d    (s "( d)    (s " d)    d    s "( d    s    s "( d    (s "' d)    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 Also7D"rNone("#%&'-./1789;=>?FHIMSUVX_dghklmqԫvulkan*VkInternalAllocationType - Allocation typeSee Also-, -vulkanF specifies that the allocation is intended for execution by the host.-None("#%&'-./1789;=>?FHIMSUVX_dghklmq lvulkanKPFN_vkVoidFunction - Placeholder function pointer type returned by queriesSee Also ,  vulkan=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  ), 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 lm lmsNone("#%&'-./1789;=>?FHIMSUVX_dghklmq!vulkan/VkInstanceCreateFlags - 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&Tvulkan*VkIndexType - Type of index buffer indicesSee Also, , q, , 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.T TtNone("#%&'-./1789;=>?FHIMSUVX_dghklmq!vulkan"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,  uNone("#%&'-./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 F for the primary command buffer that the render pass is recorded intoNone("#%&'-./1789;=>?FHIMSUVX_dghklmqD" RvulkanDVkImageUsageFlagBits - Bitmask specifying intended usage of an imageSee AlsoSvulkan 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 / slot of type 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 o (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 /.vulkan specifies that the image can be used to create a /9 suitable for use as a color or resolve attachment in a /.vulkan specifies that the image can be used to create a / suitable for occupying a / slot of type .vulkan specifies that the image can be used to create a / suitable for occupying a / slot either of type  or , 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. RSSR`None("#%&'-./1789;=>?FHIMSUVX_dghklmqb%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 T.. When this structure is not included in the pNext chain of T then the implicit value of  stencilUsage matches that of T::usage. Valid Usage5VUID-VkImageStencilUsageCreateInfo-stencilUsage-02539 If  stencilUsage includes  , it must" not include bits other than  or Valid Usage (Implicit).VUID-VkImageStencilUsageCreateInfo-sType-sType sType must be 9VUID-VkImageStencilUsageCreateInfo-stencilUsage-parameter  stencilUsage must be a valid combination of  values?VUID-VkImageStencilUsageCreateInfo-stencilUsage-requiredbitmask  stencilUsage must not be 0See AlsoS, Cvulkan stencilUsage is a bitmask of C describing the intended usage of the stencil aspect of the image.%CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE%CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEvNone("#%&'-./1789;=>?FHIMSUVX_dghklmq{*None("#%&'-./1789;=>?FHIMSUVX_dghklmqQvulkan3VkImageType - Specifies the type of an image objectSee Also0, T, T*,  ,  7, ?jvulkan% specifies a three-dimensional image.vulkan# specifies a two-dimensional image. vulkan # specifies a one-dimensional image.Q Q  None("#%&'-./1789;=>?FHIMSUVX_dghklmqPvulkanDVkImageTiling - Specifies the tiling arrangement of data in an imageSee Also0, T, T*,  ,  7, ?j(vulkan(5 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 { or z, and can be queried with .)vulkan)u 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).P*)('P*)('*)(None("#%&'-./1789;=>?FHIMSUVX_dghklmqOvulkan6VkImageLayout - 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 6~ (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   structure (see  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates).See Also6, c, h, 6, c, h, , , , ,  , 0, 5, , , , |, , , , , , ~2vulkan2) 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 as a sampled image, combined image/sampler, or input attachment. It is equivalent to 5 and 6.3vulkan3) 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 as a sampled image, combined image/sampler, or input attachment. It is equivalent to 4 and 7.4vulkan4 specifies a layout for the depth aspect of a depth/stencil format image allowing read and write access as a depth attachment.5vulkan5 specifies a layout for the depth aspect of a depth/stencil format image allowing read-only access as a depth attachment or in shaders as a sampled image, combined image/sampler, or input attachment.6vulkan6 specifies a layout for the stencil aspect of a depth/stencil format image allowing read and write access as a stencil attachment.7vulkan7 specifies a layout for the stencil aspect of a depth/stencil format image allowing read-only access as a stencil attachment or in shaders as a sampled image, combined image/sampler, or input attachment.8vulkan8 mustS only be used for presenting a presentable image for display. A swapchain s image must1 be transitioned to this layout before calling , and must7 be transitioned away from this layout after calling .9vulkan93 is valid only for shared presentable images, and must* be used for any usage the image supports.;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  usage bit enabled.<vulkan< specifies a layout allowing read only access as an attachment, or in shaders as a sampled image, combined image/sampler, or input attachment.=vulkan= specifies a layout that mustA only be used with attachment accesses in the graphics pipeline.>vulkan>> specifies that an image s memory is in a defined layout and can] be populated by data, but that it has not yet been initialized by the driver. Image memory cannot0 be transitioned into this layout. This layout can be used as the  initialLayout member of 0. 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  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  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  usage bit enabled.AvulkanA specifies a layout allowing read-only access in a shader as a sampled image, combined image/sampler, or input attachment. This layout is valid only for image subresources of images created with the  or  usage bit enabled.BvulkanB 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 as a sampled image, combined image/sampler, or input attachment. It is equivalent to 5 and 7.CvulkanC 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 4 and 6.DvulkanD must5 only be used as a color or resolve attachment in a /P. This layout is valid only for image subresources of images created with the  usage bit enabled.EvulkanE% supports all types of device access.FvulkanF5 specifies that the layout is unknown. Image memory cannot/ be transitioned into this layout. This layout can be used as the  initialLayout member of 0. This layout can be used in place of the current image layout in a layout transition, but doing so will cause the contents of the image s memory to be undefined.OFEDCBA@?>=<;:987654321,OFEDCBA@?>=<;:987654321FEDCBA@?>=<;:98765432hNone("#%&'-./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  2 to enable the feature.Valid Usage (Implicit)See Alsop, C=vulkanTVkAttachmentReferenceStencilLayout - Structure specifying an attachment descriptionValid Usage (Implicit)See AlsoO, C>vulkanVVkAttachmentDescriptionStencilLayout - Structure specifying an attachment descriptionValid Usage (Implicit)See AlsoO, CNvulkanstencilInitialLayoutv is the layout the stencil aspect of the attachment image subresource will be in when a render pass instance begins.DVUID-VkAttachmentDescriptionStencilLayout-stencilInitialLayout-03308 stencilInitialLayout must not be D, 4, 5, C, B, 3, or 2HVUID-VkAttachmentDescriptionStencilLayout-stencilInitialLayout-parameter stencilInitialLayout must be a valid O valueOvulkanstencilFinalLayout is the layout the stencil aspect of the attachment image subresource will be transitioned to when a render pass instance ends.BVUID-VkAttachmentDescriptionStencilLayout-stencilFinalLayout-03309 stencilFinalLayout must not be D, 4, 5, C, B, 3, or 2BVUID-VkAttachmentDescriptionStencilLayout-stencilFinalLayout-03310 stencilFinalLayout must not be F or >FVUID-VkAttachmentDescriptionStencilLayout-stencilFinalLayout-parameter stencilFinalLayout must be a valid O valueQvulkan stencilLayout is a O\ value specifying the layout the stencil aspect of the attachment uses during the subpass.;VUID-VkAttachmentReferenceStencilLayout-stencilLayout-03318  stencilLayout must not be F, >, D, 4, 5, C, B, 3, 2, or 8?VUID-VkAttachmentReferenceStencilLayout-stencilLayout-parameter  stencilLayout must be a valid O valueSvulkan.extension-features-separateDepthStencilLayouts separateDepthStencilLayouts2 indicates whether the implementation supports a 5. for a depth/stencil image with only one of x or x set, and whether 4, 5, 6, or 7 can be used.O1FEDCBA@?>=<;:98765432<RS=PQ>MNOCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE<RS=PQ>MNOO1FEDCBA@?>=<;:98765432FEDCBA@?>=<;:98765432CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEwNone("#%&'-./1789;=>?FHIMSUVX_dghklmq-)fghijklmnopqrssrqponmjihglfkNone("#%&'-./1789;=>?FHIMSUVX_dghklmqMvulkanMVkImageCreateFlagBits - 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 AlsoNuvulkanue 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  a structure whose  handleTypes member is not 0, it is as if u is set.vvulkanv specifies that the image can' be used with a non-zero value of the splitInstanceBindRegionCount member of a K structure passed into Ge. This flag also has the effect of making the image use the standard sparse image block dimensions.wvulkanw specifies that the image can be used to create a / of type t or t.xvulkanx6 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.yvulkany 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.zvulkanz0 specifies that the image is a protected image.{vulkan{! 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.|vulkan| 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.}vulkan}? 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.~vulkan~ 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:hImage data read as an image sampler will have undefined values if the sampler was not created with flags containing Zl or was not sampled through the use of a combined image sampler with an immutable sampler in  .Image data read with an input attachment will have undefined values 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 E 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 ZD.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 .5. Otherwise, values of image data are undefined.{Image contents outside of the render area take on undefined values if the image is stored as a render pass attachment.vulkan specifies that the image can be used to create a / of type t or t.vulkan 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,  specifies that a / can be created of a plane of the image.vulkan 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  flagvulkan specifies that the image canR be partially backed using sparse memory binding. Images created with this flag must also be created with the  flag.vulkanF specifies that the image will be backed using sparse memory binding.M~}|{zyxwvutN!NM~}|{zyxwvut~}|{zyxwvuKNone("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanYVkBindImageMemoryDeviceGroupInfo - 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 q_ 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 p 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 p 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 Usage<VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01633 At least one of deviceIndexCount and splitInstanceBindRegionCount must be zero<VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01634 deviceIndexCount mustU either be zero or equal to the number of physical devices in the logical device:VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-01635 All elements of pDeviceIndices must be valid device indicesHVUID-VkBindImageMemoryDeviceGroupInfo-splitInstanceBindRegionCount-01636 splitInstanceBindRegionCount must] either be zero or equal to the number of physical devices in the logical device squaredEVUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-01637 Elements of pSplitInstanceBindRegions7 that correspond to the same instance of an image must not overlap2VUID-VkBindImageMemoryDeviceGroupInfo-offset-01638 The offset.x member of any element of pSplitInstanceBindRegions must: be a multiple of the sparse image block width (? ::imageGranularity.width/) of all non-metadata aspects of the image2VUID-VkBindImageMemoryDeviceGroupInfo-offset-01639 The offset.y member of any element of pSplitInstanceBindRegions must; be a multiple of the sparse image block height (? ::imageGranularity.height/) of all non-metadata aspects of the image2VUID-VkBindImageMemoryDeviceGroupInfo-extent-01640 The  extent.width member of any element of pSplitInstanceBindRegions mustm 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 subresource2VUID-VkBindImageMemoryDeviceGroupInfo-extent-01641 The  extent.height member of any element of pSplitInstanceBindRegions mustn 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)1VUID-VkBindImageMemoryDeviceGroupInfo-sType-sType sType must be Q>VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-parameter If deviceIndexCount is not 0, pDeviceIndices must( be a valid pointer to an array of deviceIndexCount uint32_t valuesIVUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-parameter If splitInstanceBindRegionCount is not 0, pSplitInstanceBindRegions must( be a valid pointer to an array of splitInstanceBindRegionCount q structuresSee Alsoq, CvulkanZVkBindBufferMemoryDeviceGroupInfo - 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 p 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 p 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 Usage=VUID-VkBindBufferMemoryDeviceGroupInfo-deviceIndexCount-01606 deviceIndexCount mustU either be zero or equal to the number of physical devices in the logical device;VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-01607 All elements of pDeviceIndices must be valid device indicesValid Usage (Implicit)2VUID-VkBindBufferMemoryDeviceGroupInfo-sType-sType sType must be P?VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-parameter If deviceIndexCount is not 0, pDeviceIndices must( be a valid pointer to an array of deviceIndexCount uint32_t valuesSee AlsoCMt~}|{zyxwvuNCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFECD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEMt~}|{zyxwvu~}|{zyxwvuNxNone("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkan\VkImageAspectFlagBits - Bitmask specifying which aspects of an image are included in a viewSee AlsoX, , Xvulkan specifies plane 0 of a  multi-planar image format.vulkan specifies plane 1 of a  multi-planar image format.vulkan specifies plane 2 of a  multi-planar image format.vulkan specifies  memory plane 0.vulkan specifies  memory plane 1.vulkan specifies  memory plane 2.vulkan specifies  memory plane 3.vulkan2 specifies the metadata aspect, used for sparse  Zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememorysparse resource operations.vulkan specifies the stencil aspect.vulkan specifies the depth aspect.vulkan specifies the color aspect.UNone("#%&'-./1789;=>?FHIMSUVX_dghklmqQ 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 , CvulkantVkPipelineTessellationDomainOriginStateCreateInfo - Structure specifying the orientation of the tessellation domain DescriptionIf the  structure is included in the pNext chain of 7be, it controls the origin of the tessellation domain. If this structure is not present, it is as if  domainOrigin were .Valid Usage (Implicit)See AlsoC, 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 T 9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Also, C vulkanqVkInputAttachmentAspectReference - Structure specifying a subpass/input attachment pair and an aspect mask that can be read.Valid Usage (Implicit)See Also,  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 AlsoS, Cvulkan domainOrigin is a @ value controlling the origin of the tessellation domain space.MVUID-VkPipelineTessellationDomainOriginStateCreateInfo-domainOrigin-parameter  domainOrigin must be a valid  valuevulkanusageD is a bitmask describing the allowed usages of the image view. See * for a description of the supported bits./VUID-VkImageViewUsageCreateInfo-usage-parameter usage must be a valid combination of  values5VUID-VkImageViewUsageCreateInfo-usage-requiredbitmask usage must not be 0vulkanextension-limits-pointClipping pointClippingBehavior 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.LVUID-VkRenderPassInputAttachmentAspectCreateInfo-pAspectReferences-parameter pAspectReferences must$ be a valid pointer to an array of aspectReferenceCount valid   structuresvulkansubpass is an index into the  pSubpasses array of the parent 6~ 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.6VUID-VkInputAttachmentAspectReference-aspectMask-01964  aspectMask must not include x6VUID-VkInputAttachmentAspectReference-aspectMask-02250  aspectMask must not include &VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT for any index i:VUID-VkInputAttachmentAspectReference-aspectMask-parameter  aspectMask must be a valid combination of x values@VUID-VkInputAttachmentAspectReference-aspectMask-requiredbitmask  aspectMask must not be 0/Mt~}|{zyxwvuNO1FEDCBA@?>=<;:98765432  CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEB  O1FEDCBA@?>=<;:98765432FEDCBA@?>=<;:98765432CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEMt~}|{zyxwvu~}|{zyxwvuNyNone("#%&'-./1789;=>?FHIMSUVX_dghklmqlNone("#%&'-./1789;=>?FHIMSUVX_dghklmqtLvulkan8VkFrontFace - 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.LLzNone("#%&'-./1789;=>?FHIMSUVX_dghklmqyvulkanGVkFramebufferCreateFlagBits - Bitmask specifying framebuffer propertiesSee Alsovulkanw specifies that image views are not specified, and only attachment compatibility information will be provided via a gi structure.{None("#%&'-./1789;=>?FHIMSUVX_dghklmqS[vulkanLVkFormatFeatureFlagBits - 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  6::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 { and | commands. specifies that an image can be used as dstImage for the { and | commands. 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 8 . If / is also set, an image can be used as the srcImage to { and | 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 2. Otherwise both  xChromaOffset and  yChromaOffset must be 2. 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 2. Otherwise both  xChromaOffset and  yChromaOffset must be 2. 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.# specifies that an image view can be used as a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment. An implementation mustI not set this feature for formats that with numeric type other than *UINT , or set it as a buffer feature.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  descriptor. specifies that the format can& be used to create a buffer view that can be bound to a  descriptor.= specifies that atomic operations are supported on  with this format. specifies that the format can1 be used as a vertex attribute format (7::format). specifies that the format can9 be used as the vertex format when creating an  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structureacceleration structure (:: vertexFormat). This format canG also be used as the vertex format in host memory when doing  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#host-acceleration-structurehost acceleration structure builds.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 2. Otherwise both  xChromaOffset and  yChromaOffset must be 2. 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 . vulkan y specifies that the format can do linear sampler filtering (min/magFilter) whilst sampler Y 2CBCR conversion is enabled. vulkan M 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 2. Otherwise both  xChromaOffset and  yChromaOffset must be 2. 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 the format can0 be used as the vertex format when creating an  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structureacceleration structure (:: vertexFormat). This format can? also be used as the vertex format in host memory when doing  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#host-acceleration-structurehost acceleration structure builds.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 an image view can be used as a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment. An implementation mustE not set this feature for formats that with numeric type other than *UINT , or set it as a buffer feature.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 8. If + is also set, an image can be used as the srcImage to { and | 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 { and | commands.vulkan specifies that an image can be used as srcImage for the { and | commands.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  with this format.vulkan specifies that the format can& be used to create a buffer view that can be bound to a  descriptor.vulkan specifies that the format can& be used to create a buffer view that can be bound to a  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.      9            ^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 .Valid Usage (Implicit)See Also, C#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 T 9, it is filled with the implementation-dependent limits.If "filterMinmaxSingleComponentFormats is ., the following formats must support the  feature with , 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 Alsop, C*vulkan reductionMode is a @ value controlling how texture filtering combines texel values.=VUID-VkSamplerReductionModeCreateInfo-reductionMode-parameter  reductionMode must be a valid  value,vulkan3extension-limits-filterMinmaxSingleComponentFormats "filterMinmaxSingleComponentFormatsd is a boolean value indicating whether a minimum set of required formats support min/max filtering.-vulkan2extension-limits-filterMinmaxImageComponentMapping !filterMinmaxImageComponentMapping is a boolean value indicating whether the implementation supports non-identity component mapping of the image when doing min/max filtering.")*#+,-CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE       #+,-")*CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE            |None("#%&'-./1789;=>?FHIMSUVX_dghklmq :;<=>?@ABCDEF FEDCBA>=<;@:?None("#%&'-./1789;=>?FHIMSUVX_dghklmqbKvulkan"VkFormat - Available image formatsSee Also, , 6, c, , gi, q, 0, f}, , 1, T, T*, , X, , , 7,  ,  6, T, ,  7, ?jHvulkanH 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 i coordinate in byte 2, and an 8-bit R component in byte 3. This format only supports images 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.IvulkanI 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. This format only supports images 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.JvulkanJ# 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 x for the G plane, x for the B plane, and xg for the R plane. This format only supports images with a width and height that is a multiple of two.KvulkanK# 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 x for the G plane, and xh for the BR plane. This format only supports images with a width and height that is a multiple of two.LvulkanL# 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 x for the G plane, x for the B plane, and x\ for the R plane. This format only supports images with a width that is a multiple of two.MvulkanM# 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 x for the G plane, and x] for the BR plane. This format only supports images with a width that is a multiple of two.NvulkanN# 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 x for the G plane, x for the B plane, and x for the R plane.OvulkanO 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.PvulkanP 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.QvulkanQ 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.RvulkanR 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. This format only supports images 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.SvulkanS 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 i9 coordinate in the top 10 bits of the word in bytes 6..7, with the bottom 6 bits of each word unused. This format only supports images 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.TvulkanT# 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 x for the G plane, x for the B plane, and xg for the R plane. This format only supports images with a width and height that is a multiple of two.UvulkanU# 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 x for the G plane, and xh for the BR plane. This format only supports images with a width and height that is a multiple of two.VvulkanV# 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 x for the G plane, x for the B plane, and x\ for the R plane. This format only supports images with a width that is a multiple of two.WvulkanW# 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 x for the G plane, and x] for the BR plane. This format only supports images with a width that is a multiple of two.XvulkanX# 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 x for the G plane, x for the B plane, and x for the R plane.YvulkanY 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.ZvulkanZ 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. This format only supports images 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 i9 coordinate in the top 12 bits of the word in bytes 6..7, with the bottom 4 bits of each word unused. This format only supports images 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 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 x for the G plane, x for the B plane, and xg for the R plane. This format only supports images with a width and height that is a multiple of two._vulkan_# 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 x for the G plane, and xh for the BR plane. This format only supports images with a width and height that is a multiple of two.`vulkan`# 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 x for the G plane, x for the B plane, and x\ for the R plane. This format only supports images with a width that is a multiple of two.avulkana# 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 x for the G plane, and x] for the BR plane. This format only supports images with a width that is a multiple of two.bvulkanb# 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 x for the G plane, x for the B plane, and x for the R plane.cvulkanc 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 i- coordinate in the word in bytes 4..5, and a 16-bit R component in the word in bytes 6..7. This format only supports images 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.dvulkand 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. This format only supports images 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.evulkane# 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 x for the G plane, x for the B plane, and xg for the R plane. This format only supports images with a width and height that is a multiple of two.fvulkanf# 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 x for the G plane, and xh for the BR plane. This format only supports images with a width and height that is a multiple of two.gvulkang# 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 x for the G plane, x for the B plane, and x\ for the R plane. This format only supports images with a width that is a multiple of two.hvulkanh# 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 x for the G plane, and x] for the BR plane. This format only supports images with a width that is a multiple of two.ivulkani# 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 x for the G plane, x for the B plane, and x for the R plane.jvulkanj specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes an 84 rectangle of unsigned normalized RGBA texel data.kvulkank specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data.lvulkanl specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes an 84 rectangle of unsigned normalized RGBA texel data.mvulkanm specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data.nvulkann 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.ovulkano 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.pvulkanp 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.qvulkanq 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.rvulkanr 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.svulkans 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.tvulkant 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.uvulkanu 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.vvulkanv 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.wvulkanw 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.xvulkanx 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.yvulkany 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.zvulkanz 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.{vulkan{ 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.|vulkan| 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.}vulkan} 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.~vulkan~ 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.vulkan 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.vulkan specifies a four-component, 16-bit packed unsigned normalized format that has a 4-bit A component in bits 12..15, a 4-bit R component in bits 8..11, a 4-bit G component in bits 4..7, and a 4-bit B component in bits 0..3.vulkan specifies a four-component, 16-bit packed unsigned normalized format that has a 4-bit A component in bits 12..15, a 4-bit B component in bits 8..11, a 4-bit G component in bits 4..7, and a 4-bit R component in bits 0..3.vulkan 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.vulkan specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 1212 rectangle of unsigned normalized RGBA texel data.vulkan 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.vulkan specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 1210 rectangle of unsigned normalized RGBA texel data.vulkan 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.vulkan specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 1010 rectangle of unsigned normalized RGBA texel data.vulkan 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.vulkan specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 108 rectangle of unsigned normalized RGBA texel data.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 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.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.vulkan 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.vulkan specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes an 85 rectangle of unsigned normalized RGBA texel data.vulkan 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.vulkan specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 66 rectangle of unsigned normalized RGBA texel data.vulkan 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.vulkan specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 65 rectangle of unsigned normalized RGBA texel data.vulkan 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.vulkan specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 55 rectangle of unsigned normalized RGBA texel data.vulkan 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.vulkan specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 54 rectangle of unsigned normalized RGBA texel data.vulkan 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.vulkan specifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data.vulkan 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.vulkan 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.vulkan specifies a one-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 44 rectangle of signed normalized red texel data.vulkan specifies a one-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized red texel data.vulkan 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.vulkan 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.vulkan 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.vulkan 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.vulkan 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.vulkan 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.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 sRGB nonlinear encoding applied to the RGB components.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.vulkan 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..vulkan.d specifies a one-component, 8-bit signed scaled integer format that has a single 8-bit R component./vulkan/f specifies a one-component, 8-bit unsigned scaled integer format that has a single 8-bit R component.0vulkan0` specifies a one-component, 8-bit signed normalized format that has a single 8-bit R component.1vulkan1b specifies a one-component, 8-bit unsigned normalized format that has a single 8-bit R component.2vulkan2 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.3vulkan3 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.4vulkan4 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.5vulkan5 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.6vulkan6 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.7vulkan7 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.8vulkan8 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.9vulkan9 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.K:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGK:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHG:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHNone("#%&'-./1789;=>?FHIMSUVX_dghklmq!vulkanWVkPhysicalDeviceASTCDecodeFeaturesEXT - 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 Alsop, Cvulkan[VkImageViewASTCDecodeModeEXT - Structure describing the ASTC decode mode for an image view Valid Usage2VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02230  decodeMode must be one of ,  , or 2VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02231 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 2VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02232 If  decodeMode is  the image view must3 not include blocks using any of the ASTC HDR modes.VUID-VkImageViewASTCDecodeModeEXT-format-04084 format 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)-VUID-VkImageViewASTCDecodeModeEXT-sType-sType sType must be 6VUID-VkImageViewASTCDecodeModeEXT-decodeMode-parameter  decodeMode must be a valid K valueSee AlsoK, CDvulkan&features-astc-decodeModeSharedExponent decodeModeSharedExponentU indicates whether the implementation supports decoding ASTC compressed formats to  internal precision.Fvulkan decodeModeD is the intermediate format used to decode ASTC compressed formats. CDEFABGH EFCDBHAGfNone("#%&'-./1789;=>?FHIMSUVX_dghklmq7vulkan4VkImageFormatListCreateInfo - 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 7% structure were not included in the pNext list of 0.Valid Usage (Implicit),VUID-VkImageFormatListCreateInfo-sType-sType sType must be 7VUID-VkImageFormatListCreateInfo-pViewFormats-parameter If viewFormatCount is not 0,  pViewFormats must( be a valid pointer to an array of viewFormatCount valid K valuesSee AlsoK, CVvulkan pViewFormats. is an array which lists of all formats which can, be used when creating views of this image.7UVCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE7UVCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE}None("#%&'-./1789;=>?FHIMSUVX_dghklmq[\]^_``]\_[^None("#%&'-./1789;=>?FHIMSUVX_dghklmqJvulkan3VkFilter - 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, |cvulkanc specifies linear filtering.dvulkand specifies nearest filtering.JdcbaJdcbadcbNone("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanVVkPhysicalDeviceImageViewImageFormatInfoEXT - Structure for providing image view typeValid Usage (Implicit)See Also, Cvulkan{VkFilterCubicImageViewImageFormatPropertiesEXT - Structure for querying cubic filtering capabilities of an image view typeValid Usage (Implicit)?VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-sType-sType sType must be g Valid Usage?VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-pNext-02627 If the pNext chain of the T~ structure includes a  structure, the pNext chain of the T structure must include a  structure with an  imageViewType that is compatible with  imageTypeSee Alsop, Cnvulkan 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.ovulkanfilterCubicMinmax8 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.qvulkan imageViewType is a . value specifying the type of the image view.HVUID-VkPhysicalDeviceImageViewImageFormatInfoEXT-imageViewType-parameter  imageViewType must be a valid  value pqmnoklrstu utpqmnolskr~None("#%&'-./1789;=>?FHIMSUVX_dghklmq UvulkanQVkFenceCreateFlagBits - Bitmask specifying initial state and behavior of a fenceSee Alsovulkanu specifies that the fence object is created in the signaled state. Otherwise, it is created in the unsignaled state.None("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkan0VkEventCreateFlagBits - Event creation flag bits DescriptionmVK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR specifies that host event commands will not be used with this event.See AlsoNone("#%&'-./1789;=>?FHIMSUVX_dghklmq iJvulkanSVkDynamicState - Indicate which dynamic state is taken from dynamic state commandsSee Also7Lvulkan specifies that the pViewportScalings state in j will be ignored and must be set dynamically with = before any draws are performed with a pipeline state with j member viewportScalingEnable set to .vulkan specifies that the pDiscardRectangles state in K 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 K.vulkan 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 _.vulkanZ specifies that the default stack size computation for the pipeline will be ignored and must be set dynamically with - before any ray tracing calls are performed.vulkan specifies that the pShadingRatePalettes state in g will be ignored and must be set dynamically with  before any draw commands.vulkan3 specifies that the coarse sample order state in e will be ignored and must be set dynamically with  before any draw commands.vulkan specifies that the pExclusiveScissors state in f 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 f.vulkan specifies that state in R and Q will be ignored and must be set dynamically with  or  before any draw commands.vulkan specifies that the lineStippleFactor and lineStipplePattern state in Z will be ignored and must be set dynamically with = before any draws are performed with a pipeline state with Z member stippledLineEnable set to ..vulkan specifies that the cullMode state in 7[ will be ignored and must be set dynamically with  before any draw commands.vulkan specifies that the  frontFace state in 7[ will be ignored and must be set dynamically with  before any draw commands.vulkan specifies that the topology state in 7T 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 o before any draw commands.vulkan specifies that the  viewportCount and  pViewports state in 7h will be ignored and must be set dynamically with  before any draw call.vulkan specifies that the  scissorCount and  pScissors state in 7h will be ignored and must be set dynamically with  before any draw call.vulkan specifies that the stride state in 7 will be ignored and must be set dynamically with  before any draw call.vulkan specifies that the depthTestEnable state in 7J will be ignored and must be set dynamically with  before any draw call.vulkan specifies that the depthWriteEnable state in 7J will be ignored and must be set dynamically with  before any draw call.vulkan specifies that the depthCompareOp state in 7J will be ignored and must be set dynamically with  before any draw call.vulkan specifies that the depthBoundsTestEnable state in 7J will be ignored and must be set dynamically with  before any draw call.vulkan specifies that the stencilTestEnable state in 7J will be ignored and must be set dynamically with  before any draw call.vulkan specifies that the failOp, passOp,  depthFailOp, and  compareOp states in 7J for both front and back will be ignored and must be set dynamically with = before any draws are performed with a pipeline state with 7J member stencilTestEnable set to .vulkan specifies that the  reference state in 7J for both front and back will be ignored and must be set dynamically with = before any draws are performed with a pipeline state with 7J member stencilTestEnable set to .vulkan specifies that the  writeMask state in 7J for both front and back will be ignored and must be set dynamically with = before any draws are performed with a pipeline state with 7J member stencilTestEnable set to .vulkan specifies that the  compareMask state in 7J for both front and back will be ignored and must be set dynamically with = before any draws are performed with a pipeline state with 7J member stencilTestEnable set to .vulkan specifies that the minDepthBounds and maxDepthBounds states of 7J will be ignored and must be set dynamically with  = before any draws are performed with a pipeline state with 7J member depthBoundsTestEnable set to ..vulkan specifies that the blendConstants state in 7D 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 7h 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 7h.vulkan specifies that the  pViewports state in 7h 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 7h. >None("#%&'-./1789;=>?FHIMSUVX_dghklmq nvulkanFVkDeviceQueueCreateFlagBits - Bitmask specifying behavior of the queueSee Alsovulkan? specifies that the device queue is a protected-capable queue.None("#%&'-./1789;=>?FHIMSUVX_dghklmq rvulkan-VkDeviceCreateFlags - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also 2None("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkanJVkDescriptorType - 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. specifies a  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-mutabledescriptor of mutable type.2When a descriptor set is updated via elements of  , 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  :: pImageInfo is accessed.For ,  , or  , only the  imageView and  imageLayout! members of each element of  :: pImageInfo are accessed.For +, all members of each element of  :: pImageInfo are accessed.For , ,  , or +, all members of each element of  :: pBufferInfo are accessed.For  or , each element of  ::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  structure in the pNext chain of  $. 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  structure in the pNext chain of  $. 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  structure in the pNext chain of  .See Also ,  , I, , $,   $None("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkan{VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE - Structure describing whether the mutable descriptor type is supportedMembersThe members of the , structure describe the following features: Descriptionfeatures-mutableDescriptorType mutableDescriptorType( indicates that the implementation must support using the  of \ with at least the following descriptor types, where any combination of the types must be supported:Additionally, mutableDescriptorType indicates that: Non-uniform descriptor indexing must/ be supported if all descriptor types in a  for I have the corresponding non-uniform indexing features enabled in \.FB with descriptorType of  relaxes the list of required descriptor types to the descriptor types which have the corresponding update-after-bind feature enabled in \.(Dynamically uniform descriptor indexing must/ be supported if all descriptor types in a  for > have the corresponding dynamic indexing features enabled. must be supported. must be supported.Valid Usage (Implicit)CVUID-VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE-sType-sType sType must be See Alsop, CvulkanoVkMutableDescriptorTypeListVALVE - Structure describing descriptor types that a given descriptor may mutate to Valid Usage?VUID-VkMutableDescriptorTypeListVALVE-descriptorTypeCount-04597 descriptorTypeCount must not be 0. if the corresponding binding is of <VUID-VkMutableDescriptorTypeListVALVE-pDescriptorTypes-04598 pDescriptorTypes must( be a valid pointer to an array of descriptorTypeCount valid, unique - values if the given binding is of  type?VUID-VkMutableDescriptorTypeListVALVE-descriptorTypeCount-04599 descriptorTypeCount must be 02 if the corresponding binding is not of <VUID-VkMutableDescriptorTypeListVALVE-pDescriptorTypes-04600 pDescriptorTypes must not contain <VUID-VkMutableDescriptorTypeListVALVE-pDescriptorTypes-04601 pDescriptorTypes must not contain <VUID-VkMutableDescriptorTypeListVALVE-pDescriptorTypes-04602 pDescriptorTypes must not contain <VUID-VkMutableDescriptorTypeListVALVE-pDescriptorTypes-04603 pDescriptorTypes must not contain AValid Usage (Implicit)@VUID-VkMutableDescriptorTypeListVALVE-pDescriptorTypes-parameter If descriptorTypeCount is not 0, pDescriptorTypes must( be a valid pointer to an array of descriptorTypeCount valid  valuesSee Also, vulkanVkMutableDescriptorTypeCreateInfoVALVE - Structure describing the list of possible active descriptor types for mutable type descriptors DescriptionIf mutableDescriptorTypeListCount6 is zero or if this structure is not included in the pNext chain, the / for each element is considered to be zero or NULLD for each member. Otherwise, the descriptor set layout binding at  .:: pBindings([i] uses the descriptor type lists in ::pMutableDescriptorTypeLists[i].Valid Usage (Implicit)7VUID-VkMutableDescriptorTypeCreateInfoVALVE-sType-sType sType must be QVUID-VkMutableDescriptorTypeCreateInfoVALVE-pMutableDescriptorTypeLists-parameter If mutableDescriptorTypeListCount is not 0, pMutableDescriptorTypeLists must( be a valid pointer to an array of mutableDescriptorTypeListCount valid  structuresSee Also, CvulkanpMutableDescriptorTypeLists is a pointer to an array of  structures.vulkanpDescriptorTypes is NULL or a pointer to an array of descriptorTypeCount K values which define which descriptor types a given binding may mutate to.  None("#%&'-./1789;=>?FHIMSUVX_dghklmq!QvulkanZVkDescriptorSetLayoutCreateFlagBits - Bitmask specifying descriptor set layout propertiesSee Alsovulkan3 specifies that descriptor sets using this layout must8 be allocated from a descriptor pool created with the 9 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 . vulkan 3 specifies that descriptor sets using this layout must8 be allocated from a descriptor pool created with the  bit set. Descriptor set layouts created with this bit have no expressable limit for maximum number of descriptors per-stage. Host descriptor sets are limited only by available host memory, but mayB be limited for implementation specific reasons. Implementations mayz limit the number of supported descriptors to UpdateAfterBind limits or non-UpdateAfterBind limits, whichever is larger.       None("#%&'-./1789;=>?FHIMSUVX_dghklmq!Ivulkan4VkDescriptorPoolResetFlags - Reserved for future use DescriptionIQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also IINone("#%&'-./1789;=>?FHIMSUVX_dghklmq!9vulkanfVkDescriptorPoolCreateFlagBits - Bitmask specifying certain supported operations on a descriptor poolSee Alsovulkan: specifies that descriptor sets allocated from this pool can include bindings with the FB\ bit set. It is valid to allocate descriptor sets that have bindings that do not set the FB bit from a pool that has  set. vulkan  specifies that this descriptor pool and the descriptor sets allocated from it reside entirely in host memory and cannot be bound. Descriptor sets allocated from this pool are partially exempt from the external synchronization requirement in N and  Ow. Descriptor sets and their descriptors can be updated concurrently in different threads, though the same descriptor must- not be updated concurrently by two threads.!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_dghklmq"h3vulkanVkPhysicalDeviceDescriptorIndexingProperties - 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 T 9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alsop, CvulkanVkPhysicalDeviceDescriptorIndexingFeatures - 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  2 to enable features.Valid Usage (Implicit)See Alsop, CvulkanVkDescriptorSetVariableDescriptorCountLayoutSupport - 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 AlsoCvulkanVkDescriptorSetVariableDescriptorCountAllocateInfo - 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 A 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 UsagePVUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-descriptorSetCount-03045 If descriptorSetCount is not zero, descriptorSetCount must equal  ,::descriptorSetCountIVUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-pSetLayouts-03046 If  ,:: 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)CVUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-sType-sType sType must be SVUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-pDescriptorCounts-parameter If descriptorSetCount is not 0, pDescriptorCounts must( be a valid pointer to an array of descriptorSetCount uint32_t valuesSee AlsoC vulkanuVkDescriptorSetLayoutBindingFlagsCreateInfo - 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 UsageCVUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-bindingCount-03002 If  bindingCount is not zero,  bindingCount must equal  .:: bindingCount<VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-flags-03003 If  .::flags includes  , then all elements of  pBindingFlags must not include  ,  , or  DVUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-pBindingFlags-03004 If an element of  pBindingFlags includes  ', then all other elements of  .:: pBindings must have a smaller value of bindingdVUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingUniformBufferUpdateAfterBind-03005 If ::-descriptorBindingUniformBufferUpdateAfterBind= is not enabled, all bindings with descriptor type  must not use  cVUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingSampledImageUpdateAfterBind-03006 If ::,descriptorBindingSampledImageUpdateAfterBind= is not enabled, all bindings with descriptor type , , or  must not use  cVUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingStorageImageUpdateAfterBind-03007 If ::,descriptorBindingStorageImageUpdateAfterBind= is not enabled, all bindings with descriptor type  must not use  dVUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingStorageBufferUpdateAfterBind-03008 If ::-descriptorBindingStorageBufferUpdateAfterBind= is not enabled, all bindings with descriptor type  must not use  iVUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingUniformTexelBufferUpdateAfterBind-03009 If ::2descriptorBindingUniformTexelBufferUpdateAfterBind= is not enabled, all bindings with descriptor type  must not use  iVUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingStorageTexelBufferUpdateAfterBind-03010 If ::2descriptorBindingStorageTexelBufferUpdateAfterBind= is not enabled, all bindings with descriptor type  must not use  iVUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingInlineUniformBlockUpdateAfterBind-02211 If ::2descriptorBindingInlineUniformBlockUpdateAfterBind= is not enabled, all bindings with descriptor type A must not use  lVUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingAccelerationStructureUpdateAfterBind-03570 If ::5descriptorBindingAccelerationStructureUpdateAfterBind= is not enabled, all bindings with descriptor type  or  must not use  ;VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-None-03011- All bindings with descriptor type , , or  must not use  `VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingUpdateUnusedWhilePending-03012 If ::)descriptorBindingUpdateUnusedWhilePending& is not enabled, all elements of  pBindingFlags must not include  VVUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingPartiallyBound-03013 If ::descriptorBindingPartiallyBound& is not enabled, all elements of  pBindingFlags must not include  _VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingVariableDescriptorCount-03014 If ::(descriptorBindingVariableDescriptorCount& is not enabled, all elements of  pBindingFlags must not include  DVUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-pBindingFlags-03015 If an element of  pBindingFlags includes  , that element s descriptorType must not be  or Valid Usage (Implicit)<VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-sType-sType sType must be HVUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-pBindingFlags-parameter If  bindingCount is not 0,  pBindingFlags must( be a valid pointer to an array of  bindingCount valid combinations of   valuesSee Also , C+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 A 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.1vulkan8extension-limits-maxUpdateAfterBindDescriptorsInAllPools '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.2vulkanAextension-limits-shaderUniformBufferArrayNonUniformIndexingNative 0shaderUniformBufferArrayNonUniformIndexingNativeu 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.3vulkan@extension-limits-shaderSampledImageArrayNonUniformIndexingNative /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.4vulkanAextension-limits-shaderStorageBufferArrayNonUniformIndexingNative 0shaderStorageBufferArrayNonUniformIndexingNativeu 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.5vulkan@extension-limits-shaderStorageImageArrayNonUniformIndexingNative /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.6vulkanCextension-limits-shaderInputAttachmentArrayNonUniformIndexingNative 2shaderInputAttachmentArrayNonUniformIndexingNativew 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.7vulkan2extension-limits-robustBufferAccessUpdateAfterBind !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.8vulkan)extension-limits-quadDivergentImplicitLod quadDivergentImplicitLod 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.9vulkan=extension-limits-maxPerStageDescriptorUpdateAfterBindSamplers ,maxPerStageDescriptorUpdateAfterBindSamplers is similar to maxPerStageDescriptorSamplersK but counts descriptors from descriptor sets created with or without the  bit set.:vulkanCextension-limits-maxPerStageDescriptorUpdateAfterBindUniformBuffers 2maxPerStageDescriptorUpdateAfterBindUniformBuffers is similar to #maxPerStageDescriptorUniformBuffersK but counts descriptors from descriptor sets created with or without the  bit set.;vulkanCextension-limits-maxPerStageDescriptorUpdateAfterBindStorageBuffers 2maxPerStageDescriptorUpdateAfterBindStorageBuffers is similar to #maxPerStageDescriptorStorageBuffersK but counts descriptors from descriptor sets created with or without the  bit set.<vulkanBextension-limits-maxPerStageDescriptorUpdateAfterBindSampledImages 1maxPerStageDescriptorUpdateAfterBindSampledImages is similar to "maxPerStageDescriptorSampledImagesK but counts descriptors from descriptor sets created with or without the  bit set.=vulkanBextension-limits-maxPerStageDescriptorUpdateAfterBindStorageImages 1maxPerStageDescriptorUpdateAfterBindStorageImages is similar to "maxPerStageDescriptorStorageImagesK but counts descriptors from descriptor sets created with or without the  bit set.>vulkanEextension-limits-maxPerStageDescriptorUpdateAfterBindInputAttachments 4maxPerStageDescriptorUpdateAfterBindInputAttachments is similar to %maxPerStageDescriptorInputAttachmentsK but counts descriptors from descriptor sets created with or without the  bit set.?vulkan4extension-limits-maxPerStageUpdateAfterBindResources #maxPerStageUpdateAfterBindResources is similar to maxPerStageResourcesK but counts descriptors from descriptor sets created with or without the  bit set.@vulkan8extension-limits-maxDescriptorSetUpdateAfterBindSamplers 'maxDescriptorSetUpdateAfterBindSamplers is similar to maxDescriptorSetSamplersK but counts descriptors from descriptor sets created with or without the  bit set.Avulkan>extension-limits-maxDescriptorSetUpdateAfterBindUniformBuffers -maxDescriptorSetUpdateAfterBindUniformBuffers is similar to maxDescriptorSetUniformBuffersK but counts descriptors from descriptor sets created with or without the  bit set.BvulkanEextension-limits-maxDescriptorSetUpdateAfterBindUniformBuffersDynamic 4maxDescriptorSetUpdateAfterBindUniformBuffersDynamic is similar to %maxDescriptorSetUniformBuffersDynamicK but counts descriptors from descriptor sets created with or without the  bit set. While an application canL allocate dynamic uniform buffer descriptors from a pool created with the ", bindings for these descriptors mustS not be present in any descriptor set layout that includes bindings created with  .Cvulkan>extension-limits-maxDescriptorSetUpdateAfterBindStorageBuffers -maxDescriptorSetUpdateAfterBindStorageBuffers is similar to maxDescriptorSetStorageBuffersK but counts descriptors from descriptor sets created with or without the  bit set.DvulkanEextension-limits-maxDescriptorSetUpdateAfterBindStorageBuffersDynamic 4maxDescriptorSetUpdateAfterBindStorageBuffersDynamic is similar to %maxDescriptorSetStorageBuffersDynamicK but counts descriptors from descriptor sets created with or without the  bit set. While an application canL allocate dynamic storage buffer descriptors from a pool created with the ", bindings for these descriptors mustS not be present in any descriptor set layout that includes bindings created with  .Evulkan=extension-limits-maxDescriptorSetUpdateAfterBindSampledImages ,maxDescriptorSetUpdateAfterBindSampledImages is similar to maxDescriptorSetSampledImagesK but counts descriptors from descriptor sets created with or without the  bit set.Fvulkan=extension-limits-maxDescriptorSetUpdateAfterBindStorageImages ,maxDescriptorSetUpdateAfterBindStorageImages is similar to maxDescriptorSetStorageImagesK but counts descriptors from descriptor sets created with or without the  bit set.Gvulkan@extension-limits-maxDescriptorSetUpdateAfterBindInputAttachments /maxDescriptorSetUpdateAfterBindInputAttachments is similar to  maxDescriptorSetInputAttachmentsK but counts descriptors from descriptor sets created with or without the  bit set.Ivulkan<extension-features-shaderInputAttachmentArrayDynamicIndexing )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  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.Jvulkan?extension-features-shaderUniformTexelBufferArrayDynamicIndexing ,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  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.Kvulkan?extension-features-shaderStorageTexelBufferArrayDynamicIndexing ,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  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.Lvulkan=extension-features-shaderUniformBufferArrayNonUniformIndexing *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  or  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.Mvulkan<extension-features-shaderSampledImageArrayNonUniformIndexing )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 , , or  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.Nvulkan=extension-features-shaderStorageBufferArrayNonUniformIndexing *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  or  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.Ovulkan<extension-features-shaderStorageImageArrayNonUniformIndexing )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  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.Pvulkan?extension-features-shaderInputAttachmentArrayNonUniformIndexing ,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  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.QvulkanBextension-features-shaderUniformTexelBufferArrayNonUniformIndexing /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  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.RvulkanBextension-features-shaderStorageTexelBufferArrayNonUniformIndexing /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  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.Svulkan@extension-features-descriptorBindingUniformBufferUpdateAfterBind -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 .Tvulkan?extension-features-descriptorBindingSampledImageUpdateAfterBind ,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 , , or .Uvulkan?extension-features-descriptorBindingStorageImageUpdateAfterBind ,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 .Vvulkan@extension-features-descriptorBindingStorageBufferUpdateAfterBind -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 .WvulkanEextension-features-descriptorBindingUniformTexelBufferUpdateAfterBind 2descriptorBindingUniformTexelBufferUpdateAfterBind 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 .XvulkanEextension-features-descriptorBindingStorageTexelBufferUpdateAfterBind 2descriptorBindingStorageTexelBufferUpdateAfterBind 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 .Yvulkan<extension-features-descriptorBindingUpdateUnusedWhilePending )descriptorBindingUpdateUnusedWhilePending indicates whether the implementation supports updating descriptors while the set is in use. If this feature is not enabled,   must not be used.Zvulkan2extension-features-descriptorBindingPartiallyBound 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,   must not be used.[vulkan;extension-features-descriptorBindingVariableDescriptorCount (descriptorBindingVariableDescriptorCount indicates whether the implementation supports descriptor sets with a variable-sized last binding. If this feature is not enabled,   must not be used.\vulkan)extension-features-runtimeDescriptorArray 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.`` FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\*+,- ./CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE   ! {HIJKLMNOPQRSTUVWXYZ[\0123456789:;<=>?@ABCDEFG ./,-*+CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE` FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!! !      None("#%&'-./1789;=>?FHIMSUVX_dghklmq"Rwxyz{|}~~}|{zyxwNone("#%&'-./1789;=>?FHIMSUVX_dghklmq"<Gvulkan[VkDependencyFlagBits - Bitmask specifying how execution and memory dependencies are formedSee AlsoHvulkan" specifies that dependencies are  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-device-local-dependenciesnon-device-local dependency.vulkan 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.vulkan& specifies that dependencies will be  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regionsframebuffer-local.GH HGWNone("#%&'-./1789;=>?FHIMSUVX_dghklmq#c' 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  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 U 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 U 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 Usage<VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-00841 Each view index must- not be set in more than one element of pCorrelationMasksValid Usage (Implicit)0VUID-VkRenderPassMultiviewCreateInfo-sType-sType sType must be f9VUID-VkRenderPassMultiviewCreateInfo-pViewMasks-parameter If  subpassCount is not 0,  pViewMasks must( be a valid pointer to an array of  subpassCount uint32_t values;VUID-VkRenderPassMultiviewCreateInfo-pViewOffsets-parameter If dependencyCount is not 0,  pViewOffsets must( be a valid pointer to an array of dependencyCount int32_t values@VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-parameter If correlationMaskCount is not 0, pCorrelationMasks must( be a valid pointer to an array of correlationMaskCount uint32_t valuesSee AlsoCvulkanwVkPhysicalDeviceMultiviewProperties - 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 T 9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See AlsoCvulkanwVkPhysicalDeviceMultiviewFeatures - Structure describing multiview features that can be supported by an implementationMembersThe members of the , structure describe the following features: Descriptionextension-features-multiview  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.extension-features-multiview-gs multiviewGeometryShaderm 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.!extension-features-multiview-tess multiviewTessellationShaderm 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  2 to enable the features. Valid UsageDVUID-VkPhysicalDeviceMultiviewFeatures-multiviewGeometryShader-00580 If multiviewGeometryShader is enabled then  multiview must also be enabledHVUID-VkPhysicalDeviceMultiviewFeatures-multiviewTessellationShader-00581 If multiviewTessellationShader is enabled then  multiview must also be enabledValid Usage (Implicit)2VUID-VkPhysicalDeviceMultiviewFeatures-sType-sType sType must be gSee Alsop, Cvulkan 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.vulkan 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.vulkanpCorrelationMasks is a pointer to an array of correlationMaskCount+ view masks indicating sets of views that may+ be more efficient to render concurrently.vulkan&extension-limits-maxMultiviewViewCount maxMultiviewViewCount2 is one greater than the maximum view index that can be used in a subpass.vulkan*extension-limits-maxMultiviewInstanceIndex maxMultiviewInstanceIndex 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.GH CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEGHNone("#%&'-./1789;=>?FHIMSUVX_dghklmq#|e  None("#%&'-./1789;=>?FHIMSUVX_dghklmq#Evulkan9VkCullModeFlagBits - Bitmask controlling triangle culling Description[Following culling, fragments are produced for any triangles which have not been discarded.See AlsoFvulkan, specifies that all triangles are discarded.vulkan3 specifies that back-facing triangles are discardedvulkan5 specifies that front-facing triangles are discardedvulkan* specifies that no triangles are discardedEF FENone("#%&'-./1789;=>?FHIMSUVX_dghklmq#Ivulkan8VkComponentSwizzle - 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 Also1 vulkanS 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# Dvulkan)VkCompareOp - Stencil comparison functionSee Also7J, =, 7, , vulkan+ 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. DDNone("#%&'-./1789;=>?FHIMSUVX_dghklmq#BvulkanRVkCommandPoolResetFlagBits - Bitmask controlling behavior of a command pool resetSee AlsoCvulkanr specifies that resetting a command pool recycles all of the resources from the command pool back to the system.BCCBNone("#%&'-./1789;=>?FHIMSUVX_dghklmq#vulkanSVkCommandPoolCreateFlagBits - 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. None("#%&'-./1789;=>?FHIMSUVX_dghklmq#vulkanTVkCommandBufferUsageFlagBits - 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#@vulkanVVkCommandBufferResetFlagBits - Bitmask controlling behavior of a command buffer resetSee AlsoAvulkanT 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.@AA@None("#%&'-./1789;=>?FHIMSUVX_dghklmq#FvulkanBVkCommandBufferLevel - Enumerant specifying a command buffer levelSee Also vulkan& specifies a secondary command buffer.vulkan$ specifies a primary command buffer.None("#%&'-./1789;=>?FHIMSUVX_dghklmq#%vulkan_VkColorComponentFlagBits - Bitmask controlling which components are written to the framebuffer DescriptionUThe color write mask operation is applied regardless of whether blending is enabled.See Also'(vulkan( 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.%+*)(&' '%+*)(&+*)(None("#%&'-./1789;=>?FHIMSUVX_dghklmq#4vulkan1VkBufferViewCreateFlags - Reserved for future use Description4Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also4545None("#%&'-./1789;=>?FHIMSUVX_dghklmq$ {>vulkanDVkBufferUsageFlagBits - Bitmask specifying allowed usage of a bufferSee Also@AvulkanA specifies that the buffer can3 be used to retrieve a buffer device address via b#C and use that address to access the buffer s memory from a shader.BvulkanBd specifies that the buffer is suitable for using for binding as a transform feedback buffer with .CvulkanCL specifies that the buffer is suitable for using as a counter buffer with  and .DvulkanD; specifies that the buffer is suitable for passing as the buffer parameter to $.EvulkanEL specifies that the buffer is suitable for use as a read-only input to an  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-buildingacceleration structure build.FvulkanFA specifies that the buffer is suitable for storage space for a p.GvulkanG6 specifies that the buffer is suitable for use as a  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shader-binding-tableShader Binding Table.HvulkanH; 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 , or sequencesCountBuffer or sequencesIndexBuffer or preprocessedBuffer member of mIvulkanII specifies that the buffer is suitable for passing as an element of the pBuffers array to .JvulkanJ; specifies that the buffer is suitable for passing as the buffer parameter to .KvulkanK specifies that the buffer can be used in a   suitable for occupying a / slot either of type  or .LvulkanL specifies that the buffer can be used in a   suitable for occupying a / slot either of type  or .MvulkanM specifies that the buffer can be used to create a / suitable for occupying a / slot of type .NvulkanN specifies that the buffer can be used to create a / suitable for occupying a / slot of type .OvulkanO specifies that the buffer can3 be used as the destination of a transfer command.PvulkanP 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).>PONMLKJIHGFEDCBA?@#@>PONMLKJIHGFEDCBA?PONMLKJIHGFEDCBANone("#%&'-./1789;=>?FHIMSUVX_dghklmq$"EYvulkanNVkBufferCreateFlagBits - 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 Also[\vulkan\2 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.Y`_^]\Z[ [Y`_^]\Z`_^]\None("#%&'-./1789;=>?FHIMSUVX_dghklmq$2 ivulkan=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=kvulkank indicates that a  structure is present in the =::pNext? chain which contains the color data in floating-point format.lvulkanl indicates that a  structure is present in the =::pNext8 chain which contains the color data in integer format.mvulkanm3 specifies an opaque, integer format, white color.nvulkann: specifies an opaque, floating-point format, white color.ovulkano3 specifies an opaque, integer format, black color.pvulkanp: specifies an opaque, floating-point format, black color.qvulkanq7 specifies a transparent, integer format, black color.rvulkanr> specifies a transparent, floating-point format, black color. irqponmlkjirqponmlkjrqponmlkNone("#%&'-./1789;=>?FHIMSUVX_dghklmq$d/yvulkan+VkBlendOp - Framebuffer blending operations DescriptionNThe semantics of each basic blend operations is described in the table below: y  RGB Components  Alpha Component   } R = Rs0 Sr + Rd Dr G = Gs0 Sg + Gd Dg B = Bs0 Sb + Bd Db k A = As0 Sa + Ad Da   } R = Rs0 Sr - Rd Dr G = Gs0 Sg - Gd Dg B = Bs0 Sb - Bd Db k A = As0 Sa - Ad Da   } R = Rd Dr - Rs0 Sr G = Gd Dg - Gs0 Sg B = Bd Db - Bs0 Sb k A = Ad Da - As0 Sa  P > R = min(Rs0,Rd) G = min(Gs0,Gd) B = min(Bs0,Bd) 5 A = min(As0,Ad)  P > 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 Also75y~}|{zhy~}|{z~}|{None("#%&'-./1789;=>?FHIMSUVX_dghklmq$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)    (0,0,0)  0    (1,1,1)  1    (Rs0,Gs0,Bs0)  As0    (1-Rs0,1-Gs0,1-Bs0)  1-As0    (Rd,Gd,Bd)  Ad    (1-Rd,1-Gd,1-Bd)  1-Ad    (As0,As0,As0)  As0    (1-As0,1-As0,1-As0)  1-As0    (Ad,Ad,Ad)  Ad    (1-Ad,1-Ad,1-Ad)  1-Ad    (Rc,Gc,Bc)  Ac    (1-Rc,1-Gc,1-Bc)  1-Ac    (Ac,Ac,Ac)  Ac    (1-Ac,1-Ac,1-Ac)  1-Ac  1 + (f,f,f); f = min(As0,1-Ad)  1    (Rs1,Gs1,Bs1)  As1    (1-Rs1,1-Gs1,1-Bs1)  1-As1    (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(None("#%&'-./1789;=>?FHIMSUVX_dghklmq$vulkan`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, cvulkan\ 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.vulkanT 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 &.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 J.None("#%&'-./1789;=>?FHIMSUVX_dghklmq$Hvulkan\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%vulkangVkAccessFlagBits - Bitmask specifying memory access types that will participate in a memory dependency DescriptionSThese values all have the same value/meaning as the equivalently named values for (.Certain 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.g Access flag j Supported pipeline stages    ) , *  O  +  D  +     ,, -, ., E, /, 0, 1, 2, or 3     * , ,, -, ., E, /, 0, 1, 2, or 3     ,, -, ., E, /, 0, 1, 2, or 3   D  2   D  4  C  4    5, or 6    5, or 6    7$ or *    7$ or *  P  8&  O  8&  N j Any  M j Any  4  4  ?  9  >  9  ;  :  ;  y  =  <  5  <    <, )    ,, -, E, /, 0, 1, 2, 3, ., or *  9  *  <   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.vulkanl specifies read access to an acceleration structure as part of a trace, build, or copy command, or to an  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-scratch%acceleration structure scratch buffer as part of a build command.vulkan: specifies write access to an acceleration structure or  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-scratch%acceleration structure scratch buffer% as part of a build or copy command.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 / inputs to x.vulkan specifies writes to the / preprocess outputs in x.vulkan specifies no accesses.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 .vulkanx specifies read access to indirect command data read as part of an indirect build, trace, drawing or dispatch command.      =          =None("#%&'-./1789;=>?FHIMSUVX_dghklmq%*@ABCDEFGHIJadcbKG:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHLMt~}|{zyxwvuNO1FEDCBA@?>=<;:98765432P'*)(Q RSTUV 43210/.-,+*)('&%$#"!   WXJedcba`_^]\[ZYXWVUTSRQPONMLKYZ[\] ^_ ` FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!a bc 5 E D C B A @ ? > = < ; : 9 8 7 6de    fgh:<; &%$#"!-.3210/CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE           ' ( , + * ) y z {  !%$#",-67@Anorqp{|wx~}|{zy        ! %&+*)('45>?PONMLKJIHGFEDCBA@YZ`_^]\[ijrqponmlkyz~}|{     None("#%&'-./1789;=>?FHIMSUVX_dghklmq%vulkan^VkAllocationCallbacks - Structure containing callback function pointers for memory allocation Valid Usage.VUID-VkAllocationCallbacks-pfnAllocation-00632  pfnAllocation must1 be a valid pointer to a valid user-defined 0VUID-VkAllocationCallbacks-pfnReallocation-00633 pfnReallocation must1 be a valid pointer to a valid user-defined (VUID-VkAllocationCallbacks-pfnFree-00634 pfnFree must6 be a valid pointer to a valid user-defined 6VUID-VkAllocationCallbacks-pfnInternalAllocation-00635 If either of pfnInternalAllocation or pfnInternalFree is not NULL , both must be valid callbacksSee Also, , , , , 3>, ?, @, A, B, C,  D, 7<, E, F, G,  H,  I, IJ, K,  $, L, M, N, *O, ,S, 6P, 79, Q, R, 0S, T, 1, U,  V, W, X, 8, 9Y, Z, :[, :, ;, 6\, c], ^, =_, X`, a, #b, <c, >d, e, f, ", g, h, i, j, k, l, m, n, o, p,  q, r, s, t,  u,  v, Iw, x,  y, *z, ,{, 6|, 0}, 1~, ,  , 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 A.Avulkan1VK_NULL_HANDLE - Reserved non-valid object handleSee Also!No cross-references are available8pXkj%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU;U@?>=<;:T9S8R7Q6P5O4N3M2L1K0J/I.H-G,F+E*D)C(BA'%&pXkjkjNone("#%&'-./1789;=>?FHIMSUVX_dghklmq&%-GVWXYWYVX-GNone("#%&'-./1789;=>?FHIMSUVX_dghklmq&vulkaniVkPhysicalDeviceMemoryBudgetPropertiesEXT - 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  ::memoryHeapCount. The  heapBudget value must+ be non-zero for array elements less than  ::memoryHeapCount. The  heapBudget value must be less than or equal to  ::size for each heap.Valid Usage (Implicit)See Alson, C]vulkan heapBudget is an array of 4 n 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 4 n 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.\]^Z[_`\]^[`Z_eNone("#%&'-./1789;=>?FHIMSUVX_dghklmq&,0 5vulkanZVkPhysicalDeviceDriverProperties - 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 Also6, , C6vulkantVkConformanceVersion - Structure containing the conformance test suite version the implementation is compliant withSee Also5, [gvulkandriverID> is a unique identifier for the driver of the physical device.hvulkan driverName is an array of * charL containing a null-terminated UTF-8 string which is the name of the driver.ivulkan driverInfo is an array of ) charZ containing a null-terminated UTF-8 string with additional information about the driver.jvulkanconformanceVersionW is the version of the Vulkan conformance test this driver is conformant against (see 6).lvulkanmajor; is the major version number of the conformance test suite.mvulkanminor; is the minor version number of the conformance test suite.nvulkansubminor> is the subminor version number of the conformance test suite.ovulkanpatch; is the patch version number of the conformance test suite. 5fghij6klmonCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE)*CD6klmon5fghijCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE*D)CNone("#%&'-./1789;=>?FHIMSUVX_dghklmq&E{|}~~}|{ONone("#%&'-./1789;=>?FHIMSUVX_dghklmq&evulkanYVkExternalMemoryImageCreateInfo - Specify that an image may be backed by external memoryMembersNoteA  structure with a non-zero  handleType field 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, CvulkanZVkExternalMemoryBufferCreateInfo - Specify that a buffer may be backed by external memoryMembersNoteA  structure with a non-zero  handleTypes field 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, CvulkanXVkExportMemoryAllocateInfo - Specify exportable handle types for a device memory object Valid Usage1VUID-VkExportMemoryAllocateInfo-handleTypes-00656 The bits in  handleTypes must2 be supported and compatible, as reported by P^ or P[Valid Usage (Implicit)+VUID-VkExportMemoryAllocateInfo-sType-sType sType must be |5VUID-VkExportMemoryAllocateInfo-handleTypes-parameter  handleTypes must be a valid combination of A valuesSee Also, Cvulkan 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 zero, or a bitmask of A6 specifying one or more external memory handle types.;VUID-VkExternalMemoryBufferCreateInfo-handleTypes-parameter  handleTypes must be a valid combination of A valuesvulkan handleTypes is zero, or a bitmask of A6 specifying one or more external memory handle types.:VUID-VkExternalMemoryImageCreateInfo-handleTypes-parameter  handleTypes must be a valid combination of A values ` FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE.H1CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE` FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!.HNone("#%&'-./1789;=>?FHIMSUVX_dghklmq&  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, Cvulkan@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, Cvulkan(For error reporting an invalid extensionvulkansType? is the structure type of the structure being iterated through.vulkanpNext is NULL: or a pointer to the next structure in a structure chain.vulkansType? is the structure type of the structure being iterated through.vulkanpNext is NULL: or a pointer to the next structure in a structure chain.vulkanView the head and tail of a  , see Equivalent to (,)vulkanaA pattern synonym to separate the head of a struct chain from the tail, use in conjunction with  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{..} :& ()) vulkanFForget which extensions a pointed-to struct has by casting the pointervulkan5Add 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)vulkan Consume a  valuevulkan,Write the C representation of some extended aN and use the pointer, the pointer must not be returned from the continuation.vulkan[Given some memory for the head of the chain, allocate and poke the tail and run an action.vulkanRGiven 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 inferencevulkanJPointer 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     76None'"#%&'-./1789;=>?FHIMSUVX_ghklmq&vulkan A version of getInstanceProcAddr; which can be called with a null pointer for the instance.+-.,/RZ:;0<ELJKCFDGXAB=>@?S\]I[QYOVM546N327981HPW()* !"     #%$&'qTUfghde     vw|}!^~tursz{xypb_`ac%#"$(')&ljknomi *+6-./345201879jcabZ\]_[^`efvVXWwxydPQi{~noRS:?A>@=<;tusrpq|}BDEFCkHIJKNOLMlmGghzYTU,*+6-./345201879jcabZ\]_[^`efvVXWwxydPQi{~noRS:?A>@=<;tusrpq|}BDEFCkHIJKNOLMlmGghzYTU,+-.,/RZ:;0<ELJKCFDGXAB=>@?S\]I[QYOVM546N327981HPW()* !"     #%$&'qTUfghde     vw|}!^~tursz{xypb_`ac%#"$(')&ljknomi None("#%&'-./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 F'. 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@See Also!No cross-references are available/None("#%&'-./1789;=>?FHIMSUVX_dghklmq',vvulkan8VkShaderModule - Opaque handle to a shader module objectSee Also7`, >d, >wvulkan1VkSemaphore - Opaque handle to a semaphore objectSee Also, ?, , , , l, , , , m, , m, ;, , <c, <, m, xvulkan-VkSampler - Opaque handle to a sampler objectSee Also ,  , , =_, =yvulkan4VkRenderPass - Opaque handle to a render pass objectSee Also , 6k, 7r, }, 6\, c], ^, 6, 6zvulkan;An opaque type for representing pointers to VkQueue handles{vulkan)VkQueue - Opaque handle to a queue objectSee Also;, D, , , , ?, , , , , ;, , ;|vulkan2VkQueryPool - Opaque handle to a query pool objectSee Also, , , , , , l, m, q, , :[, :, :, ], }vulkan<VkPipelineLayout - Opaque handle to a pipeline layout objectSee Also7, I, 7r, , w, x, , , , , 9Y, 9~vulkan:VkPipelineCache - Opaque handle to a pipeline cache objectSee Also7<, 79, 8, :, ;, 8, 8, 8vulkan/VkPipeline - Opaque handle to a pipeline objectSee Also7, m, n, 7r, s, M, S, V, w, x, , , , 7<, 79, :, ;, 7, , , , , avulkanDAn opaque type for representing pointers to VkPhysicalDevice handlesvulkan<VkPhysicalDevice - Opaque handle to a physical device objectSee AlsoL8, L, , ,  $, M, +, 2, ,  , , , , , , , , , , , , , P, , N, ,  , R, ,  , T, ,  6, T, , ,  7, T, ,  , T, , i, ,  , T, , ,  , T, , #, ?j, T, , , , , , , , , , , , , , , , , , vulkan>An opaque type for representing pointers to VkInstance handlesvulkan0VkInstance - Opaque handle to an instance objectSee AlsoA, E, F, L, N, Q, R, T,  V, W, X, #b, f, h, i, j, k, l, , r, s,  , , L, ,  ,  , vulkan3VkImageView - Opaque handle to an image view objectSee Also , 6k, , g|, , 1, 1~, vulkan*VkImage - Opaque handle to an image objectSee AlsoG, , , , , (, 5, , S, S, 1, H, , ?, ?, 4, |, , , , , , ~, 0S, 0}, , 4, ?, 0, vulkan5VkFramebuffer - Opaque handle to a framebuffer objectSee Also , }, 6P, 6|vulkan)VkFence - Opaque handle to a fence objectSee Also, d, e, , , , ,S, ,{, ,, ?, ;, , , , ,, ,vulkan*VkEvent - Opaque handle to an event objectSee Also, , , , , , *O, *z, *, *, *vulkan<An opaque type for representing pointers to VkDevice handlesvulkan+VkDevice - Opaque handle to a device objectSee Also, , , , , ,  , 3>, , 4, G, , 4, G, , , , , ,  , ?, @, B, C,  D, 7<, G,  H,  I, IJ, K,  $, *O, ,S, 6P, 79, 0S, 1, U, 8, 9Y, Z, :[, :, ;, 6\, c], ^, =_, X`, a, <c, >d, e, ", g,  ,  ,  , m, n, o, p,  q, t,  u,  v, Iw, x,  y, *z, ,{, 6|, 0}, 1~, , 7, 8, 9, , :, 6, =, X, , <, >, , , ; , , 3, ,  , 3, , , , , , b#, , , 4, S, , b, , , , , V,  , !, J", #, $, %, &, 3, bR, ',  , ;, D, *, (, ,, ), *, , 4, S+, ,, ?, S-, ., 0, , /, 0, 1, U, V, 2,  3, W, 4, X, 5, 6, 8, , 7, , , :, , , , , 8, 6, m, , 9, :, ;, a, <, , =, >, ?, @, A, B, C, D, 3, 3, 8, E, , , F, G, H,  I,  , *, ,, ], , J, K, *, L, r, , mM, N, ^, _, O, 3P, IQ, N,  O, ,, mR, S, nvulkan8VkDeviceMemory - Opaque handle to a device memory objectSee Also, G, G, b>, 3, , , , , ?, ?, , , 3>, 4, 4, 3, 3,  3, 3, 3PvulkanGVkDescriptorSetLayout - Opaque handle to a descriptor set layout objectSee Also ,, I, 9U,  I,  vvulkan:VkDescriptorSet - Opaque handle to a descriptor set objectSee Also ,  ,  , ,  , IQ, Nvulkan<VkDescriptorPool - Opaque handle to a descriptor pool objectSee Also ,,  H,  u,  ,  vulkan6VkCommandPool - Opaque handle to a command pool objectSee Also ,  D,  q, ,  I, ^, _vulkanCAn opaque type for representing pointers to VkCommandBuffer handlesvulkan:VkCommandBuffer - Opaque handle to a command buffer objectSee Also, ;, , ", $, T, , , , cU, V, , , , , , , , , , |, {, , , s, , , , t, r, u, W, X, , Y, , Z, , [, v, , \, ], ^, _, J, `, , a, b, , , , , , , , , , , , c, d, e, , , , cf, g, , , , , h, , ci, j, k, l, x, , , , , , , ~, },  , m, , ,  ,  , , , , , Jn, o, , , , , , , , ,  , p, q, r, o, , , , , , , , , ,  , , , , , w, , , , , l, m, , , q, , , , !vulkan4VkBufferView - Opaque handle to a buffer view objectSee Also , C, pvulkan+VkBuffer - Opaque handle to a buffer objectSee Also, G, b, 5, , S, , , , , , (,  , m, o, q, , H, ?s, 4, , , , , , , W, , , , , , , , , , , , , , , , , , , , , , B, o, 4Avwxyz{|}~A{zv}xw|y~None("#%&'-./1789;=>?FHIMSUVX_dghklmq'T)svulkan^VkWin32KeyedMutexAcquireReleaseInfoNV - use Windows keyex mutex mechanism to synchronize workValid Usage (Implicit)6VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-sType-sType sType must be BVUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireSyncs-parameter If  acquireCount is not 0,  pAcquireSyncs must( be a valid pointer to an array of  acquireCount valid  handlesAVUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireKeys-parameter If  acquireCount is not 0,  pAcquireKeys must( be a valid pointer to an array of  acquireCount uint64_t valuesPVUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireTimeoutMilliseconds-parameter If  acquireCount is not 0, pAcquireTimeoutMilliseconds must( be a valid pointer to an array of  acquireCount uint32_t valuesBVUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseSyncs-parameter If  releaseCount is not 0,  pReleaseSyncs must( be a valid pointer to an array of  releaseCount valid  handlesAVUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseKeys-parameter If  releaseCount is not 0,  pReleaseKeys must( be a valid pointer to an array of  releaseCount uint64_t values7VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-commonparent Both of the elements of  pAcquireSyncs, and the elements of  pReleaseSyncs7 that are valid handles of non-ignored parameters mustD have been created, allocated, or retrieved from the same /See Also, CWvulkan pAcquireSyncs is a pointer to an array of 9 objects which were imported from Direct3D 11 resources.Xvulkan 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.YvulkanpAcquireTimeoutMillisecondsc is a pointer to an array of timeout values, in millisecond units, for each acquire specified in  pAcquireKeys.Zvulkan 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. sVWXYZ[TU\] sVWXYZ[U]T\None("#%&'-./1789;=>?FHIMSUVX_dghklmq(E evulkanDVkCoarseSampleOrderTypeNV - Shading rate image sample ordering typesSee Alsoh, fvulkanLVkShadingRatePaletteNV - Structure specifying a single shading rate paletteValid Usage (Implicit)See Alsog, e, gvulkan{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 UsageLVUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02054 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 1LVUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02055  viewportCount must be less than or equal to  :: maxViewportsUVUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-shadingRateImageEnable-02056 If shadingRateImageEnable is .,  viewportCount must! be greater or equal to the  viewportCount member of 7hValid Usage (Implicit)DVUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-sType-sType sType must be USee Alsop, f, ChvulkanVkPipelineViewportCoarseSampleOrderStateCreateInfoNV - 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 tt, the contents of this structure (if present) are ignored, and the coverage sample order is instead specified by . Valid UsageOVUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-02072 If sampleOrderType is not , customSamplerOrderCount must be 0SVUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-02234 The array pCustomSampleOrders mustC not contain two structures with matching values for both the  shadingRate and  sampleCount membersValid Usage (Implicit)EVUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sType-sType sType must be XSVUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-parameter sampleOrderType must be a valid e valueWVUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-parameter If customSampleOrderCount is not 0, pCustomSampleOrders must( be a valid pointer to an array of customSampleOrderCount valid k structuresSee Alsok, e, CivulkanVkPhysicalDeviceShadingRateImagePropertiesNV - Structure describing shading rate image limits that can be supported by an implementationMembersThe members of the iX 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 i structure is included in the pNext chain of T 9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alsou, CjvulkanVkPhysicalDeviceShadingRateImageFeaturesNV - Structure describing shading rate image features that can be supported by an implementationMembersThe members of the j, 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 j structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported. j can also be included in the pNext chain of  2 to enable features.Valid Usage (Implicit)See Alsop, CkvulkancVkCoarseSampleOrderCustomNV - 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 Usage2VUID-VkCoarseSampleOrderCustomNV-shadingRate-02073  shadingRate mustI be a shading rate that generates fragments with more than one pixel2VUID-VkCoarseSampleOrderCustomNV-sampleCount-02074  sampleCount must1 correspond to a sample count enumerated in %u- whose corresponding bit is set in  ::$framebufferNoAttachmentsSampleCounts:VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02075 sampleLocationCount must! be equal to the product of  sampleCount, the fragment width for  shadingRate#, and the fragment height for  shadingRate:VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02076 sampleLocationCount must, be less than or equal to the value of i::shadingRateMaxCoarseSamples7VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-02077 The array pSampleLocations mustJ contain exactly one entry for every combination of valid values for pixelX, pixelY, and sample in the structure kValid Usage (Implicit)6VUID-VkCoarseSampleOrderCustomNV-shadingRate-parameter  shadingRate must be a valid e value;VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-parameter pSampleLocations must( be a valid pointer to an array of sampleLocationCount l structures@VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-arraylength sampleLocationCount must be greater than 0See Alsol, h, e, lvulkan`VkCoarseSampleLocationNV - Structure specifying parameters controlling shading rate image usage Valid UsageSee AlsokevulkanDVkShadingRatePaletteEntryNV - 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 Alsok, fhvulkansampleOrderType\ specifies the mechanism used to order coverage samples in fragments larger than one pixel.ivulkanpCustomSampleOrders is a pointer to an array of customSampleOrderCount k structures, each of which specifies the coverage sample order for a single combination of fragment area and coverage sample count.kvulkan 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.lvulkan sampleCount{ identifies the per-pixel coverage sample count for the combination of fragment area and coverage sample count to control.mvulkanpSampleLocations is a pointer to an array of lL structures specifying the location of each sample in the custom ordering.ovulkanpixelX is added to the x coordinate of the upper-leftmost pixel of each fragment to identify the pixel containing the coverage sample.*VUID-VkCoarseSampleLocationNV-pixelX-02078 pixelX must4 be less than the width (in pixels) of the fragmentpvulkanpixelY is added to the y coordinate of the upper-leftmost pixel of each fragment to identify the pixel containing the coverage sample.*VUID-VkCoarseSampleLocationNV-pixelY-02079 pixelY must5 be less than the height (in pixels) of the fragmentqvulkansampleB is the number of the coverage sample in the pixel identified by pixelX and pixelY.*VUID-VkCoarseSampleLocationNV-sample-02080 sample mustV be less than the number of coverage samples in each pixel belonging to the fragmentsvulkanlimits-shading-rate-texel-size shadingRateTexelSizez indicates the width and height of the portion of the framebuffer corresponding to each texel in the shading rate image.tvulkan limits-shading-rate-palette-size shadingRatePaletteSizeX indicates the maximum number of palette entries supported for the shading rate image.uvulkan&limits-shading-rate-max-coarse-samples shadingRateMaxCoarseSamples5 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.wvulkanfeatures-shadingRateImage shadingRateImage 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.xvulkan%features-shadingRateCoarseSampleOrder shadingRateCoarseSampleOrder indicates that the implementation supports a user-configurable ordering of coverage samples in fragments larger than one pixel.zvulkanshadingRateImageEnableR specifies whether shading rate image and palettes are used during rasterization.{vulkanpShadingRatePalettes is a pointer to an array of f{ 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 e9 enums defining the shading rate for each palette entry.@VUID-VkShadingRatePaletteNV-pShadingRatePaletteEntries-parameter pShadingRatePaletteEntries must$ be a valid pointer to an array of shadingRatePaletteEntryCount valid e 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 h 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+VUID-vkCmdBindShadingRateImageNV-None-02058 The  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature must be enabled0VUID-vkCmdBindShadingRateImageNV-imageView-02059 If  imageView is not 8, it must be a valid  handle of type t or t0VUID-vkCmdBindShadingRateImageNV-imageView-02060 If  imageView is not 8, it must have a format of 0VUID-vkCmdBindShadingRateImageNV-imageView-02061 If  imageView is not 8, it must have been created with a usage value including v0VUID-vkCmdBindShadingRateImageNV-imageView-02062 If  imageView is not 8,  imageLayout must match the actual O* of each subresource accessible from  imageView- at the time the subresource is accessed2VUID-vkCmdBindShadingRateImageNV-imageLayout-02063 If  imageView is not 8,  imageLayout must be : or EValid Usage (Implicit)8VUID-vkCmdBindShadingRateImageNV-commandBuffer-parameter  commandBuffer must be a valid  handle4VUID-vkCmdBindShadingRateImageNV-imageView-parameter If  imageView is not 8,  imageView must be a valid  handle6VUID-vkCmdBindShadingRateImageNV-imageLayout-parameter  imageLayout must be a valid O value8VUID-vkCmdBindShadingRateImageNV-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state6VUID-vkCmdBindShadingRateImageNV-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations-VUID-vkCmdBindShadingRateImageNV-commonparent Both 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 / 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, O, vulkan[vkCmdSetViewportShadingRatePaletteNV - Set shading rate image palettes on a command buffer Valid Usage4VUID-vkCmdSetViewportShadingRatePaletteNV-None-02064 The  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature must be enabled=VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02067 The sum of  firstViewport and  viewportCount must be between 1 and  :: maxViewports, inclusive=VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02068 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=VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-02069 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)AVUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-parameter  commandBuffer must be a valid  handleHVUID-vkCmdSetViewportShadingRatePaletteNV-pShadingRatePalettes-parameter pShadingRatePalettes must( be a valid pointer to an array of  viewportCount valid f structuresAVUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state?VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsCVUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-arraylength  viewportCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, fvulkanXvkCmdSetCoarseSampleOrderNV - 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 Usage6VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-02081 If sampleOrderType is not , customSamplerOrderCount must be 0:VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-02235 The array pCustomSampleOrders mustC not contain two structures with matching values for both the  shadingRate and  sampleCount membersValid Usage (Implicit)8VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-parameter  commandBuffer must be a valid  handle:VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-parameter sampleOrderType must be a valid e value>VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-parameter If customSampleOrderCount is not 0, pCustomSampleOrders must( be a valid pointer to an array of customSampleOrderCount valid k structures8VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state6VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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 Alsok, e, 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 8Q, 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 f4 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 k structures, each of which specifies the coverage sample order for a single combination of fragment area and coverage sample count.9edf|}gy{zhghiirstujvwxkjklmlnopqbcef~If|}gy{zjvwxirstulnopqkjklmhghiefedcb~None("#%&'-./1789;=>?FHIMSUVX_dghklmq);\vulkan|VkPipelineViewportExclusiveScissorStateCreateInfoNV - Structure specifying parameters controlling exclusive scissor testing DescriptionIf the w/ dynamic state is enabled for a pipeline, the pExclusiveScissors member is ignored.'When this structure is included in the pNext chain of 7rb, 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 UsageTVUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02027 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 1TVUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02028 exclusiveScissorCount must be less than or equal to  :: maxViewportsTVUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02029 exclusiveScissorCount must be 0& or greater than or equal to the  viewportCount member of 7hValid Usage (Implicit)DVUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-sType-sType sType must be {See Alsoq, C]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  2 to enable the feature.Valid Usage (Implicit)See Alsop, CvulkanpExclusiveScissors is a pointer to an array of q3 structures defining exclusive scissor rectangles.vulkanfeatures-exclusiveScissor exclusiveScissorH indicates that the implementation supports the exclusive scissor test.vulkan^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 w set in 7L::pDynamicStates. Valid Usage*VUID-vkCmdSetExclusiveScissorNV-None-02031 The  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissorexclusive scissor feature must be enabled;VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02034 The sum of firstExclusiveScissor and exclusiveScissorCount must be between 1 and  :: maxViewports, inclusive;VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02035 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;VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-02036 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 1'VUID-vkCmdSetExclusiveScissorNV-x-02037 The x and y members of offset in each member of pExclusiveScissors must" be greater than or equal to 0,VUID-vkCmdSetExclusiveScissorNV-offset-02038 Evaluation of (offset.x +  extent.width) for each member of pExclusiveScissors must2 not cause a signed integer addition overflow,VUID-vkCmdSetExclusiveScissorNV-offset-02039 Evaluation of (offset.y +  extent.height) for each member of pExclusiveScissors must2 not cause a signed integer addition overflowValid Usage (Implicit)7VUID-vkCmdSetExclusiveScissorNV-commandBuffer-parameter  commandBuffer must be a valid  handle<VUID-vkCmdSetExclusiveScissorNV-pExclusiveScissors-parameter pExclusiveScissors must( be a valid pointer to an array of exclusiveScissorCount q structures7VUID-vkCmdSetExclusiveScissorNV-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state5VUID-vkCmdSetExclusiveScissorNV-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsAVUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-arraylength exclusiveScissorCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, qvulkan 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 q3 structures defining exclusive scissor rectangles. \] ]\None("#%&'-./1789;=>?FHIMSUVX_dghklmq-b7GvulkanVVkPhysicalDeviceMeshShaderPropertiesNV - Structure describing mesh shading propertiesMembersThe members of the GC structure describe the following implementation-dependent limits: DescriptionIf the G structure is included in the pNext chain of T 9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See AlsoCHvulkan}VkPhysicalDeviceMeshShaderFeaturesNV - Structure describing mesh shading features that can be supported by an implementation DescriptionIf the H structure is included in the pNext chain of TK, it is filled with a value indicating whether the feature is supported. H can also be included in pNext chain of  2 to enable the features.Valid Usage (Implicit)See Alsop, CIvulkan[VkDrawMeshTasksIndirectCommandNV - Structure specifying a mesh tasks draw indirect command DescriptionThe members of I= have the same meaning as the similarly named parameters of . Valid UsageSee Alsovulkan taskCountp is the number of local workgroups to dispatch in the X dimension. Y and Z dimension are implicitly set to one.5VUID-VkDrawMeshTasksIndirectCommandNV-taskCount-02175  taskCount must be less than or equal to G::maxDrawMeshTasksCountvulkan firstTask. is the X component of the first workgroup ID.vulkanmaxDrawMeshTasksCount1 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.vulkanmaxTaskWorkGroupInvocations 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.vulkanmaxTaskWorkGroupSize[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.vulkanmaxTaskTotalMemorySizem is the maximum number of bytes that the task shader can use in total for shared and output memory combined.vulkanmaxTaskOutputCountP is the maximum number of output tasks a single task shader workgroup can emit.vulkanmaxMeshWorkGroupInvocations 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.vulkanmaxMeshWorkGroupSize[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.vulkanfeatures-taskShader  taskShader7 indicates whether the task shader stage is supported.vulkanfeatures-meshShader  meshShader7 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 Usage)VUID-vkCmdDrawMeshTasksNV-magFilter-04553 If a / created with  magFilter or  minFilter equal to  and  compareEnable equal to . is used to sample a /> 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 {'.*VUID-vkCmdDrawMeshTasksNV-mipmapMode-04770 If a / created with  mipmapMode equal to 8 and  compareEnable equal to . is used to sample a /> 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 {'$VUID-vkCmdDrawMeshTasksNV-None-02691 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 {x$VUID-vkCmdDrawMeshTasksNV-None-02692 If 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 +VUID-vkCmdDrawMeshTasksNV-filterCubic-02694 Any / being sampled with " as a result of this command must have a tyE and format that supports cubic filtering, as specified by f:: filterCubic returned by T1VUID-vkCmdDrawMeshTasksNV-filterCubicMinmax-02695 Any / being sampled with + with a reduction mode of either +z or +{" as a result of this command must have a tyi and format that supports cubic filtering together with minmax filtering, as specified by f::filterCubicMinmax returned by T%VUID-vkCmdDrawMeshTasksNV-flags-02696 Any /  created with a 0::flags containing * sampled as a result of this command must only be sampled using a 9| of 9}$VUID-vkCmdDrawMeshTasksNV-None-02697 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 n. at the same pipeline bind point, with a /F! that is compatible for set n , with the /F! used to create the current /, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???$VUID-vkCmdDrawMeshTasksNV-None-02698< For each push constant that is statically used by the /X bound to the pipeline bind point used by this command, a push constant value must= have been set for the same pipeline bind point, with a /F6 that is compatible for push constants, with the /F! used to create the current /, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???$VUID-vkCmdDrawMeshTasksNV-None-02699C 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 command$VUID-vkCmdDrawMeshTasksNV-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command-VUID-vkCmdDrawMeshTasksNV-commandBuffer-02701 If 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 dynamic$VUID-vkCmdDrawMeshTasksNV-None-02859 There musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the /f object bound to the pipeline bind point used by this command, since that pipeline was bound$VUID-vkCmdDrawMeshTasksNV-None-02702 If the /S object bound to the pipeline bind point used by this command accesses a /> object that uses unnormalized coordinates, that sampler must% not be used to sample from any /  with a / of the type t~, t, t, t or t, in any shader stage$VUID-vkCmdDrawMeshTasksNV-None-02703 If the /S object bound to the pipeline bind point used by this command accesses 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 stage$VUID-vkCmdDrawMeshTasksNV-None-02704 If the /S object bound to the pipeline bind point used by this command accesses 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$VUID-vkCmdDrawMeshTasksNV-None-02705 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$VUID-vkCmdDrawMeshTasksNV-None-02706 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 point-VUID-vkCmdDrawMeshTasksNV-commandBuffer-02707 If  commandBufferJ 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 resource$VUID-vkCmdDrawMeshTasksNV-None-04115 If 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.,VUID-vkCmdDrawMeshTasksNV-OpImageWrite-04469 If a / is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction mustC have at least as many components as the buffer view s format.+VUID-vkCmdDrawMeshTasksNV-SampledType-04470 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.+VUID-vkCmdDrawMeshTasksNV-SampledType-04471 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.+VUID-vkCmdDrawMeshTasksNV-SampledType-04472 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.+VUID-vkCmdDrawMeshTasksNV-SampledType-04473 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.7VUID-vkCmdDrawMeshTasksNV-sparseImageInt64Atomics-04474 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, / $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.7VUID-vkCmdDrawMeshTasksNV-sparseImageInt64Atomics-04475 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.*VUID-vkCmdDrawMeshTasksNV-renderPass-02684 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 7r, structure specified when creating the / bound to 'VUID-vkCmdDrawMeshTasksNV-subpass-026853 The subpass index of the current render pass must be equal to the subpass member of the 7r, structure specified when creating the / bound to $VUID-vkCmdDrawMeshTasksNV-None-026869 Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor set$VUID-vkCmdDrawMeshTasksNV-None-04584H Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass chapter9VUID-vkCmdDrawMeshTasksNV-maxMultiviewInstanceIndex-02688p If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to W::maxMultiviewInstanceIndex5VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-02689; If 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-VUID-vkCmdDrawMeshTasksNV-viewportCount-03417E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the ' dynamic state enabled, then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the 7h:: scissorCount of the pipeline,VUID-vkCmdDrawMeshTasksNV-scissorCount-03418E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the ' dynamic state enabled, then  mustY have been called in the current command buffer prior to this draw command, and the  scissorCount parameter of  must match the 7h:: viewportCount of the pipeline-VUID-vkCmdDrawMeshTasksNV-viewportCount-03419J If the bound graphics pipeline state was created with both the  and , 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 -VUID-vkCmdDrawMeshTasksNV-viewportCount-04137E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the > dynamic state enabled, then the bound graphics pipeline must" have been created with j:: viewportCount greater or equal to the  viewportCount) parameter in the last call to -VUID-vkCmdDrawMeshTasksNV-viewportCount-04138E If the bound graphics pipeline state was created with the  and & dynamic states enabled then the  viewportCount) parameter in the last call to  must! be greater than or equal to the  viewportCount) parameter in the last call to -VUID-vkCmdDrawMeshTasksNV-viewportCount-04139E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the > dynamic state enabled, then the bound graphics pipeline must" have been created with g:: viewportCount greater or equal to the  viewportCount) parameter in the last call to -VUID-vkCmdDrawMeshTasksNV-viewportCount-04140E If the bound graphics pipeline state was created with the  and & dynamic states enabled then the  viewportCount) parameter in the last call to  must! be greater than or equal to the  viewportCount) parameter in the last call to ;VUID-vkCmdDrawMeshTasksNV-VkPipelineVieportCreateInfo-04141E If the bound graphics pipeline state was created with the 4 dynamic state enabled and an instance of i chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with i:: viewportCount greater or equal to the  viewportCount) parameter in the last call to ;VUID-vkCmdDrawMeshTasksNV-VkPipelineVieportCreateInfo-04142E If the bound graphics pipeline state was created with the 4 dynamic state enabled and an instance of f chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with f::exclusiveScissorCount greater or equal to the  viewportCount) parameter in the last call to 1VUID-vkCmdDrawMeshTasksNV-primitiveTopology-03420E If the bound graphics pipeline state was created with the & dynamic state enabled then o mustY have been called in the current command buffer prior to this draw command, and the primitiveTopology parameter of o 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 7T::topology stateQVUID-vkCmdDrawMeshTasksNV-primitiveFragmentShadingRateWithMultipleViewports-04552 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewportsY limit is not supported, the bound graphics pipeline was created with the k dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR built-in, then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must be 1+VUID-vkCmdDrawMeshTasksNV-blendEnable-04727 If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features do not contain {, then the  blendEnable1 member of the corresponding element of the  pAttachments member of pColorBlendState must be .4VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-04740] If rasterization is not disabled in the bound graphics pipeline, and neither the @ nor the # extensions are enabled, then 7W::rasterizationSamples@ mustO be the same as the current subpass color and/or depth/stencil attachments)VUID-vkCmdDrawMeshTasksNV-taskCount-02119  taskCount must$ be less than or equal to G::maxDrawMeshTasksCountValid Usage (Implicit)1VUID-vkCmdDrawMeshTasksNV-commandBuffer-parameter  commandBuffer must be a valid  handle1VUID-vkCmdDrawMeshTasksNV-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state/VUID-vkCmdDrawMeshTasksNV-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations$VUID-vkCmdDrawMeshTasksNV-renderpass This command must5 only be called inside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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 I structures. If  drawCount is less than or equal to one, stride is ignored. Valid Usage1VUID-vkCmdDrawMeshTasksIndirectNV-magFilter-04553 If a / created with  magFilter or  minFilter equal to  and  compareEnable equal to . is used to sample a /> 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 {'62VUID-vkCmdDrawMeshTasksIndirectNV-mipmapMode-04770 If a / created with  mipmapMode equal to 8 and  compareEnable equal to . is used to sample a /> 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 {',VUID-vkCmdDrawMeshTasksIndirectNV-None-02691 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 {x,VUID-vkCmdDrawMeshTasksIndirectNV-None-02692 If 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 3VUID-vkCmdDrawMeshTasksIndirectNV-filterCubic-02694 Any / being sampled with " as a result of this command must have a tyE and format that supports cubic filtering, as specified by f:: filterCubic returned by T9VUID-vkCmdDrawMeshTasksIndirectNV-filterCubicMinmax-02695 Any / being sampled with + with a reduction mode of either +z or +{" as a result of this command must have a tyi and format that supports cubic filtering together with minmax filtering, as specified by f::filterCubicMinmax returned by T-VUID-vkCmdDrawMeshTasksIndirectNV-flags-02696 Any /  created with a 0::flags containing * sampled as a result of this command must only be sampled using a 9| of 9},VUID-vkCmdDrawMeshTasksIndirectNV-None-02697 For each set n% that is statically used by the /S bound to the pipeline bind point used by this command, a descriptor set must have been bound to n. at the same pipeline bind point, with a /F! that is compatible for set n , with the /F! used to create the current /, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???,VUID-vkCmdDrawMeshTasksIndirectNV-None-02698A 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 /F6 that is compatible for push constants, with the /F! used to create the current /, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???,VUID-vkCmdDrawMeshTasksIndirectNV-None-02699C 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 command,VUID-vkCmdDrawMeshTasksIndirectNV-None-02700 A valid pipeline must9 be bound to the pipeline bind point used by this command5VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02701 If 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 dynamic,VUID-vkCmdDrawMeshTasksIndirectNV-None-02859 There musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the /f object bound to the pipeline bind point used by this command, since that pipeline was bound,VUID-vkCmdDrawMeshTasksIndirectNV-None-02702 If the /S object bound to the pipeline bind point used by this command accesses a /> object that uses unnormalized coordinates, that sampler must% not be used to sample from any /  with a / of the type t~, t, t, t or t, in any shader stage,VUID-vkCmdDrawMeshTasksIndirectNV-None-02703 If the /S object bound to the pipeline bind point used by this command accesses 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 stage,VUID-vkCmdDrawMeshTasksIndirectNV-None-02704 If the /S object bound to the pipeline bind point used by this command accesses 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,VUID-vkCmdDrawMeshTasksIndirectNV-None-02705 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,VUID-vkCmdDrawMeshTasksIndirectNV-None-02706 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 point5VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02707 If  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 resource,VUID-vkCmdDrawMeshTasksIndirectNV-None-04115 If 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.4VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWrite-04469 If a / is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction mustC have at least as many components as the buffer view s format.3VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04470 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.3VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04471 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.3VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04472 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.3VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04473 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.?VUID-vkCmdDrawMeshTasksIndirectNV-sparseImageInt64Atomics-04474 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, / $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.?VUID-vkCmdDrawMeshTasksIndirectNV-sparseImageInt64Atomics-04475 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.2VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-02684 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 7r, structure specified when creating the / bound to /VUID-vkCmdDrawMeshTasksIndirectNV-subpass-026853 The subpass index of the current render pass must be equal to the subpass member of the 7r, structure specified when creating the / bound to ,VUID-vkCmdDrawMeshTasksIndirectNV-None-026869 Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor set,VUID-vkCmdDrawMeshTasksIndirectNV-None-04584H Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass chapterAVUID-vkCmdDrawMeshTasksIndirectNV-maxMultiviewInstanceIndex-02688p If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to W::maxMultiviewInstanceIndex=VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-02689; If 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 set5VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03417E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the ' dynamic state enabled, then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the 7h:: scissorCount of the pipeline4VUID-vkCmdDrawMeshTasksIndirectNV-scissorCount-03418E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the ' dynamic state enabled, then  mustY have been called in the current command buffer prior to this draw command, and the  scissorCount parameter of  must match the 7h:: viewportCount of the pipeline5VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03419J If the bound graphics pipeline state was created with both the  and , 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 5VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04137E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the > dynamic state enabled, then the bound graphics pipeline must" have been created with j:: viewportCount greater or equal to the  viewportCount) parameter in the last call to 5VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04138E If the bound graphics pipeline state was created with the  and & dynamic states enabled then the  viewportCount) parameter in the last call to  must! be greater than or equal to the  viewportCount) parameter in the last call to 5VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04139E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the > dynamic state enabled, then the bound graphics pipeline must" have been created with g:: viewportCount greater or equal to the  viewportCount) parameter in the last call to 5VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04140E If the bound graphics pipeline state was created with the  and & dynamic states enabled then the  viewportCount) parameter in the last call to  must! be greater than or equal to the  viewportCount) parameter in the last call to CVUID-vkCmdDrawMeshTasksIndirectNV-VkPipelineVieportCreateInfo-04141E If the bound graphics pipeline state was created with the 4 dynamic state enabled and an instance of i chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with i:: viewportCount greater or equal to the  viewportCount) parameter in the last call to CVUID-vkCmdDrawMeshTasksIndirectNV-VkPipelineVieportCreateInfo-04142E If the bound graphics pipeline state was created with the 4 dynamic state enabled and an instance of f chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with f::exclusiveScissorCount greater or equal to the  viewportCount) parameter in the last call to 9VUID-vkCmdDrawMeshTasksIndirectNV-primitiveTopology-03420E If the bound graphics pipeline state was created with the & dynamic state enabled then o mustY have been called in the current command buffer prior to this draw command, and the primitiveTopology parameter of o 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 7T::topology stateYVUID-vkCmdDrawMeshTasksIndirectNV-primitiveFragmentShadingRateWithMultipleViewports-04552 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewportsY limit is not supported, the bound graphics pipeline was created with the k dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR built-in, then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must be 13VUID-vkCmdDrawMeshTasksIndirectNV-blendEnable-04727 If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features do not contain {, then the  blendEnable1 member of the corresponding element of the  pAttachments member of pColorBlendState must be .<VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-04740] If rasterization is not disabled in the bound graphics pipeline, and neither the @ nor the # extensions are enabled, then 7W::rasterizationSamples@ mustO be the same as the current subpass color and/or depth/stencil attachments.VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02708 If buffer is non-sparse then it must7 be bound completely and contiguously to a single / object.VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02709 buffer must& have been created with the  bit set.VUID-vkCmdDrawMeshTasksIndirectNV-offset-02710 offset must be a multiple of 45VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02711  commandBuffer must" not be a protected command buffer1VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02718 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 11VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02719  drawCount must be less than or equal to  ::maxDrawIndirectCount1VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02146 If  drawCount is greater than 1, stride must be a multiple of 4 and must' be greater than or equal to sizeof(I)1VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02156 If  drawCount is equal to 1, (offset + sizeof(I)) must+ be less than or equal to the size of buffer1VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02157 If  drawCount is greater than 1, (stride ( drawCount - 1) + offset + sizeof(I)) must+ be less than or equal to the size of bufferValid Usage (Implicit)9VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-parameter  commandBuffer must be a valid  handle2VUID-vkCmdDrawMeshTasksIndirectNV-buffer-parameter buffer must be a valid  handle9VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state7VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations,VUID-vkCmdDrawMeshTasksIndirectNV-renderpass This command must5 only be called inside of a render pass instance.VUID-vkCmdDrawMeshTasksIndirectNV-commonparent Both 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 / 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, , nvulkanrvkCmdDrawMeshTasksIndirectCountNV - 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 Usage6VUID-vkCmdDrawMeshTasksIndirectCountNV-magFilter-04553 If a / created with  magFilter or  minFilter equal to  and  compareEnable equal to . is used to sample a /> 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 {';7VUID-vkCmdDrawMeshTasksIndirectCountNV-mipmapMode-04770 If a / created with  mipmapMode equal to 8 and  compareEnable equal to . is used to sample a /> 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 {'1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02691 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 {x1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02692 If 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 8VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubic-02694 Any / being sampled with " as a result of this command must have a tyE and format that supports cubic filtering, as specified by f:: filterCubic returned by T>VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubicMinmax-02695 Any / being sampled with + with a reduction mode of either +z or +{" as a result of this command must have a tyi and format that supports cubic filtering together with minmax filtering, as specified by f::filterCubicMinmax returned by T2VUID-vkCmdDrawMeshTasksIndirectCountNV-flags-02696 Any /  created with a 0::flags containing * sampled as a result of this command must only be sampled using a 9| of 9}1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02697 For each set n% that is statically used by the /S bound to the pipeline bind point used by this command, a descriptor set must have been bound to n. at the same pipeline bind point, with a /F! that is compatible for set n , with the /F! used to create the current /, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02698A 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 /F6 that is compatible for push constants, with the /F! used to create the current /, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02699C 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 command1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02700 A valid pipeline must9 be bound to the pipeline bind point used by this command:VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02701 If 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 dynamic1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02859 There musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the /f object bound to the pipeline bind point used by this command, since that pipeline was bound1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02702 If the /S object bound to the pipeline bind point used by this command accesses a /> object that uses unnormalized coordinates, that sampler must% not be used to sample from any /  with a / of the type t~, t, t, t or t, in any shader stage1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02703 If the /S object bound to the pipeline bind point used by this command accesses 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 stage1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02704 If the /S object bound to the pipeline bind point used by this command accesses 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 stage1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02705 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 point1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02706 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 point:VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02707 If  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 resource1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04115 If 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.9VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWrite-04469 If a / is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction mustC have at least as many components as the buffer view s format.8VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04470 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.8VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04471 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.8VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04472 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.8VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04473 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.DVUID-vkCmdDrawMeshTasksIndirectCountNV-sparseImageInt64Atomics-04474 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, / $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.DVUID-vkCmdDrawMeshTasksIndirectCountNV-sparseImageInt64Atomics-04475 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.7VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-02684 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 7r, structure specified when creating the / bound to 4VUID-vkCmdDrawMeshTasksIndirectCountNV-subpass-026853 The subpass index of the current render pass must be equal to the subpass member of the 7r1 structure specified when creating the / bound to 1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-026869 Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor set1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04584H Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass chapterFVUID-vkCmdDrawMeshTasksIndirectCountNV-maxMultiviewInstanceIndex-02688p If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to W::maxMultiviewInstanceIndexBVUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-02689; If 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:VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03417E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the ' dynamic state enabled, then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the 7h:: scissorCount of the pipeline9VUID-vkCmdDrawMeshTasksIndirectCountNV-scissorCount-03418E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the ' dynamic state enabled, then  mustY have been called in the current command buffer prior to this draw command, and the  scissorCount parameter of  must match the 7h:: viewportCount of the pipeline:VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03419J If the bound graphics pipeline state was created with both the  and , 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 :VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04137E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the > dynamic state enabled, then the bound graphics pipeline must" have been created with j:: viewportCount greater or equal to the  viewportCount) parameter in the last call to :VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04138E If the bound graphics pipeline state was created with the  and & dynamic states enabled then the  viewportCount) parameter in the last call to  must! be greater than or equal to the  viewportCount) parameter in the last call to :VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04139E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the > dynamic state enabled, then the bound graphics pipeline must" have been created with g:: viewportCount greater or equal to the  viewportCount) parameter in the last call to :VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04140E If the bound graphics pipeline state was created with the  and & dynamic states enabled then the  viewportCount) parameter in the last call to  must! be greater than or equal to the  viewportCount) parameter in the last call to HVUID-vkCmdDrawMeshTasksIndirectCountNV-VkPipelineVieportCreateInfo-04141E If the bound graphics pipeline state was created with the 4 dynamic state enabled and an instance of i chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with i:: viewportCount greater or equal to the  viewportCount) parameter in the last call to HVUID-vkCmdDrawMeshTasksIndirectCountNV-VkPipelineVieportCreateInfo-04142E If the bound graphics pipeline state was created with the 4 dynamic state enabled and an instance of f chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with f::exclusiveScissorCount greater or equal to the  viewportCount) parameter in the last call to >VUID-vkCmdDrawMeshTasksIndirectCountNV-primitiveTopology-03420E If the bound graphics pipeline state was created with the & dynamic state enabled then o mustY have been called in the current command buffer prior to this draw command, and the primitiveTopology parameter of o 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 7T::topology state^VUID-vkCmdDrawMeshTasksIndirectCountNV-primitiveFragmentShadingRateWithMultipleViewports-04552 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewportsY limit is not supported, the bound graphics pipeline was created with the k dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR built-in, then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must be 18VUID-vkCmdDrawMeshTasksIndirectCountNV-blendEnable-04727 If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features do not contain {, then the  blendEnable1 member of the corresponding element of the  pAttachments member of pColorBlendState must be .AVUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-04740] If rasterization is not disabled in the bound graphics pipeline, and neither the @ nor the # extensions are enabled, then 7W::rasterizationSamples@ mustO be the same as the current subpass color and/or depth/stencil attachments3VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02708 If buffer is non-sparse then it must7 be bound completely and contiguously to a single / object3VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02709 buffer must! have been created with the  bit set3VUID-vkCmdDrawMeshTasksIndirectCountNV-offset-02710 offset must be a multiple of 4:VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02711  commandBuffer must" not be a protected command buffer8VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02714 If  countBuffer is non-sparse then it must7 be bound completely and contiguously to a single / object8VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02715  countBuffer must! have been created with the  bit set>VUID-vkCmdDrawMeshTasksIndirectCountNV-countBufferOffset-02716 countBufferOffset must be a multiple of 48VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02717 The count stored in  countBuffer must be less than or equal to  ::maxDrawIndirectCount>VUID-vkCmdDrawMeshTasksIndirectCountNV-countBufferOffset-04129 (countBufferOffset + sizeof (uint32_t)) must+ be less than or equal to the size of  countBuffer1VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04445 If  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectCountdrawIndirectCount# is not enabled this function must not be used3VUID-vkCmdDrawMeshTasksIndirectCountNV-stride-02182 stride must be a multiple of 4 and must" be greater than or equal to sizeof(I)9VUID-vkCmdDrawMeshTasksIndirectCountNV-maxDrawCount-02183 If  maxDrawCount is greater than or equal to 1, (stride ( maxDrawCount - 1) + offset + sizeof(I)) must+ be less than or equal to the size of buffer8VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02191 If the count stored in  countBuffer is equal to 1, (offset + sizeof(I)) must+ be less than or equal to the size of buffer8VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02192 If the count stored in  countBuffer is greater than 1, (stride ( drawCount - 1) + offset + sizeof(I)) must+ be less than or equal to the size of bufferValid Usage (Implicit)>VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-parameter  commandBuffer must be a valid  handle7VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-parameter buffer must be a valid  handle<VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-parameter  countBuffer must be a valid  handle>VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state<VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations1VUID-vkCmdDrawMeshTasksIndirectCountNV-renderpass This command must0 only be called inside of a render pass instance3VUID-vkCmdDrawMeshTasksIndirectCountNV-commonparent Each 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 / 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, , nvulkan 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.GHIHGINone("#%&'-./1789;=>?FHIMSUVX_dghklmq-vulkan^VkQueueFamilyCheckpointPropertiesNV - return structure for queue family checkpoint info query Description?Additional queue family information can be queried by setting Tv::pNext to point to a  structure.Valid Usage (Implicit)See AlsoY, CvulkanHVkCheckpointDataNV - 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 T.Valid Usage (Implicit)See AlsoX, C,  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)1VUID-vkCmdSetCheckpointNV-commandBuffer-parameter  commandBuffer must be a valid  handle1VUID-vkCmdSetCheckpointNV-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state/VUID-vkCmdSetCheckpointNV-commandBuffer-cmdpool The / that  commandBuffer was allocated from must7 support graphics, compute, or transfer operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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 Also vulkan@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 Usage+VUID-vkGetQueueCheckpointDataNV-queue-02025 The device that queue belongs to must be in the lost stateValid Usage (Implicit)/VUID-vkGetQueueCheckpointDataNV-queue-parameter queue must be a valid { handle>VUID-vkGetQueueCheckpointDataNV-pCheckpointDataCount-parameter pCheckpointDataCount must be a valid pointer to a uint32_t value9VUID-vkGetQueueCheckpointDataNV-pCheckpointData-parameter! If 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, { vulkan 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 {> object the caller would like to retrieve checkpoint data for     None("#%&'-./1789;=>?FHIMSUVX_dghklmq-vulkan[VkDedicatedAllocationMemoryAllocateInfoNV - Specify a dedicated memory allocation resource Valid Usage:VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00649 At least one of image and buffer must be 8:VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00650 If image is not 8, the image must have been created with ::dedicatedAllocation equal to .;VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00651 If buffer is not 8, the buffer must have been created with ::dedicatedAllocation equal to .:VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00652 If image is not 8, 3::allocationSize must equal the 4::size of the image;VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00653 If buffer is not 8, 3::allocationSize must equal the 4::size of the buffer:VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00654 If image is not 8 and 3C 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 memory;VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00655 If buffer is not 8 and 3C 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):VUID-VkDedicatedAllocationMemoryAllocateInfoNV-sType-sType sType must be >VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-parameter If image is not 8, image must be a valid  handle?VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-parameter If buffer is not 8, buffer must be a valid  handle;VUID-VkDedicatedAllocationMemoryAllocateInfoNV-commonparent Both of buffer, and image7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same /See Also, , CvulkangVkDedicatedAllocationImageCreateInfoNV - 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 UsageEVUID-VkDedicatedAllocationImageCreateInfoNV-dedicatedAllocation-00994 If dedicatedAllocation is ., 0::flags must not include , , or Valid Usage (Implicit)7VUID-VkDedicatedAllocationImageCreateInfoNV-sType-sType sType must be See Alsop, CvulkanhVkDedicatedAllocationBufferCreateInfoNV - Specify that a buffer is bound to a dedicated memory resourceValid Usage (Implicit)See Alsop, Cvulkanimage is 8= or a handle of an image which this memory will be bound to.vulkanbuffer is 8= 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.BvulkannVkPipelineCoverageReductionStateCreateInfoNV - Structure specifying parameters controlling coverage reduction DescriptionIf this structure is not present, or if the extension is not enabled, 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 F.If the VK_AMD_mixed_attachment_samples1 extension is enabled, then it is as if the coverageReductionMode is E.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)=VUID-VkPipelineCoverageReductionStateCreateInfoNV-sType-sType sType must be CVUID-VkPipelineCoverageReductionStateCreateInfoNV-flags-zerobitmask flags must be 0QVUID-VkPipelineCoverageReductionStateCreateInfoNV-coverageReductionMode-parameter coverageReductionMode must be a valid 5 valueSee Also5, 7, CvulkanVkPhysicalDeviceCoverageReductionModeFeaturesNV - 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  2 to enable the feature.Valid Usage (Implicit)See Alsop, CvulkancVkFramebufferMixedSamplesCombinationNV - Structure specifying a supported sample count combinationValid Usage (Implicit)See Also5, a, b, C, G5vulkan?VkCoverageReductionModeNV - Specify the coverage reduction modeSee Also, 7vulkanGVkPipelineCoverageReductionStateCreateFlagsNV - Reserved for future use Description7Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also:vulkancoverageReductionMode is a 5/ 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 5O value controlling how color sample coverage is generated from pixel coverage.Bvulkanfeatures-coverageReductionMode coverageReductionModeO 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.EvulkanE specifies that for color samples present in the color attachments, a color sample is covered if the pixel coverage sample with the same  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index; i is covered; other pixel coverage samples are discarded.FvulkanF specifies that each color sample will be associated with an implementation-dependent subset of samples in the pixel coverage. If any of those associated samples are covered, the color sample is covered.GvulkannvkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV - 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 A will be returned instead of F> to indicate that not all the supported values were returned.Valid Usage (Implicit)_VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-physicalDevice-parameter physicalDevice must be a valid  handlebVUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-pCombinationCount-parameter pCombinationCount must be a valid pointer to a uint32_t value^VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-pCombinations-parameter! If 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-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, GvulkanphysicalDeviceE is the physical device from which to query the set of combinations.>?@AB9:;<=345FE678CDGGAB>?@9:;<=785FE6FE4D3CNone("#%&'-./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 T 9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alsod, CvulkanVkPhysicalDeviceCooperativeMatrixFeaturesNV - 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  2 to enable features.Valid Usage (Implicit)See Alsop, CvulkanUVkCooperativeMatrixPropertiesNV - 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 .At least one entry in the list must& have power of two values for all of MSize, KSize, and NSize.Valid Usage (Implicit)See Alsoj, l, C, jvulkanDVkComponentTypeNV - Specify SPIR-V cooperative matrix component typeSee Alsolvulkan VkScopeNV - Specify SPIR-V scope Description5All enum values match the corresponding SPIR-V value.See AlsoovulkanMSize/ is the number of rows in matrices A, C, and D.pvulkanNSize. is the number of columns in matrices B, C, D.qvulkanKSize; is the number of columns in matrix A and rows in matrix B.rvulkanAType, is the component type of matrix A, of type j.4VUID-VkCooperativeMatrixPropertiesNV-AType-parameter AType must be a valid j valuesvulkanBType, is the component type of matrix B, of type j.4VUID-VkCooperativeMatrixPropertiesNV-BType-parameter BType must be a valid j valuetvulkanCType, is the component type of matrix C, of type j.4VUID-VkCooperativeMatrixPropertiesNV-CType-parameter CType must be a valid j valueuvulkanDType, is the component type of matrix D, of type j.4VUID-VkCooperativeMatrixPropertiesNV-DType-parameter DType must be a valid j valuevvulkanscope/ is the scope of all the matrix types, of type l.4VUID-VkCooperativeMatrixPropertiesNV-scope-parameter scope must be a valid l valuexvulkan'limits-cooperativeMatrixSupportedStages  cooperativeMatrixSupportedStages is a bitfield of &fW describing the shader stages that cooperative matrix instructions are supported in.  cooperativeMatrixSupportedStages will have the &g: bit set if any of the physical device s queues support \c.zvulkanfeatures-cooperativeMatrix cooperativeMatrix1 indicates that the implementation supports the CooperativeMatrixNV SPIR-V capability.{vulkan,features-cooperativeMatrixRobustBufferAccess #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.vulkan corresponds to SPIR-V  Workgroup scope.vulkan corresponds to SPIR-V / scope.vulkan}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, A will be returned instead of FV, to indicate that not all the available cooperative matrix properties were returned.Valid Usage (Implicit)NVUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-physicalDevice-parameter physicalDevice must be a valid  handleNVUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t valueKVUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pProperties-parameter! If 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-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, vulkanphysicalDevice is the physical device.)wxyz{nopqrstuvhij~klm|}8yz{wxnopqrstuvlmj~k~i}h|None("#%&'-./1789;=>?FHIMSUVX_dghklmq. vulkan6VkViewportWScalingNV - Structure specifying a viewportSee Also, vulkanVkPipelineViewportWScalingStateCreateInfoNV - Structure specifying parameters of a newly created pipeline viewport W scaling stateValid Usage (Implicit)See Alsop, C,  vulkanviewportWScalingEnable controls whether viewport W scaling is enabled.vulkan 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.JVUID-VkPipelineViewportWScalingStateCreateInfoNV-viewportCount-arraylength  viewportCount must be greater than 0vulkanpViewportWScalings 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 Usage3VUID-vkCmdSetViewportWScalingNV-firstViewport-01324 The sum of  firstViewport and  viewportCount must be between 1 and  :: maxViewports, inclusiveValid Usage (Implicit)7VUID-vkCmdSetViewportWScalingNV-commandBuffer-parameter  commandBuffer must be a valid  handle<VUID-vkCmdSetViewportWScalingNV-pViewportWScalings-parameter pViewportWScalings must( be a valid pointer to an array of  viewportCount   structures7VUID-vkCmdSetViewportWScalingNV-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state5VUID-vkCmdSetViewportWScalingNV-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations9VUID-vkCmdSetViewportWScalingNV-viewportCount-arraylength  viewportCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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.  None("#%&'-./1789;=>?FHIMSUVX_dghklmq/q  vulkanRVkImageViewHandleInfoNVX - Structure specifying the image view for handle queries Valid Usage2VUID-VkImageViewHandleInfoNVX-descriptorType-02654 descriptorType must be , , or +VUID-VkImageViewHandleInfoNVX-sampler-02655 sampler must be a valid x if descriptorType is -VUID-VkImageViewHandleInfoNVX-imageView-02656 If descriptorType is  or , the image that  imageView was created from must& have been created with the  usage bit set-VUID-VkImageViewHandleInfoNVX-imageView-02657 If descriptorType is , the image that  imageView was created from must& have been created with the  usage bit setValid Usage (Implicit))VUID-VkImageViewHandleInfoNVX-sType-sType sType must be )VUID-VkImageViewHandleInfoNVX-pNext-pNext pNext must be NULL1VUID-VkImageViewHandleInfoNVX-imageView-parameter  imageView must be a valid  handle6VUID-VkImageViewHandleInfoNVX-descriptorType-parameter descriptorType must be a valid  value/VUID-VkImageViewHandleInfoNVX-sampler-parameter If sampler is not 8, sampler must be a valid x handle*VUID-VkImageViewHandleInfoNVX-commonparent Both of  imageView , and sampler7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Also, , x, C,  vulkanYVkImageViewAddressPropertiesNVX - Structure specifying the image view for handle queriesValid Usage (Implicit)See Alsoo, n, C, vulkan deviceAddress) is the device address of the image view.vulkansize6 is the size in bytes of the image view device memory.vulkan imageView is the image view to query.vulkandescriptorType7 is the type of descriptor for which to query a handle.vulkansamplerK is the sampler to combine with the image view when generating the handle.vulkanZvkGetImageViewHandleNVX - Get the handle for an image view for a specific descriptor typeValid Usage (Implicit)See Also,  vulkanBvkGetImageViewAddressNVX - Get the device address of an image view Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@4See Also, ,  vulkandevice0 is the logical device that owns the image view.-VUID-vkGetImageViewHandleNVX-device-parameter device must be a valid  handlevulkanpInfo6 describes the image view to query and type of handle.,VUID-vkGetImageViewHandleNVX-pInfo-parameter pInfo must be a valid pointer to a valid   structurevulkandevice0 is the logical device that owns the image view..VUID-vkGetImageViewAddressNVX-device-parameter device must be a valid  handlevulkan imageView is a handle to the image view.1VUID-vkGetImageViewAddressNVX-imageView-parameter  imageView must be a valid  handle.VUID-vkGetImageViewAddressNVX-imageView-parent  imageView must2 have been created, allocated, or retrieved from device    None("#%&'-./1789;=>?FHIMSUVX_dghklmq/=vulkancVkWin32KeyedMutexAcquireReleaseInfoKHR - Use the Windows keyed mutex mechanism to synchronize work Valid Usage?VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-00081 Each member of  pAcquireSyncs and  pReleaseSyncs must9 be a device memory object imported by setting :: handleType to A or AValid Usage (Implicit)7VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-sType-sType sType must be CVUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-parameter If  acquireCount is not 0,  pAcquireSyncs must( be a valid pointer to an array of  acquireCount valid  handlesBVUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireKeys-parameter If  acquireCount is not 0,  pAcquireKeys must( be a valid pointer to an array of  acquireCount uint64_t valuesFVUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireTimeouts-parameter If  acquireCount is not 0, pAcquireTimeouts must( be a valid pointer to an array of  acquireCount uint32_t valuesCVUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseSyncs-parameter If  releaseCount is not 0,  pReleaseSyncs must( be a valid pointer to an array of  releaseCount valid  handlesBVUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseKeys-parameter If  releaseCount is not 0,  pReleaseKeys must( be a valid pointer to an array of  releaseCount uint64_t values8VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-commonparent Both of the elements of  pAcquireSyncs, and the elements of  pReleaseSyncs7 that are valid handles of non-ignored parameters mustD have been created, allocated, or retrieved from the same /See Also, Cvulkan 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/K0vulkaniVkPipelineLibraryCreateInfoKHR - Structure specifying pipeline libraries to use when creating a pipeline Valid Usage4VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-03381 Each element of  pLibraries must have been created with jValid Usage (Implicit)/VUID-VkPipelineLibraryCreateInfoKHR-sType-sType sType must be /VUID-VkPipelineLibraryCreateInfoKHR-pNext-pNext pNext must be NULL8VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-parameter If  libraryCount is not 0,  pLibraries must( be a valid pointer to an array of  libraryCount valid  handlesSee Also, w, Cvulkan pLibrariesD is an array of pipeline libraries to use when creating a pipeline.None("#%&'-./1789;=>?FHIMSUVX_dghklmq0vulkan3VkPipelineInfoKHR - Structure describing a pipelineValid Usage (Implicit)See Also, C, vulkaneVkPipelineExecutableStatisticKHR - Structure describing a compile-time pipeline executable statisticValid Usage (Implicit)See Also, , C, 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 Alsod, C, 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 A. 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 Alsop, C, vulkanVkPipelineExecutableInfoKHR - Structure describing a pipeline executable to query for associated statistics or internal representationsValid Usage (Implicit)See Also, C, , 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  2 to enable features.Valid Usage (Implicit)See Alsop, CvulkanYVkPipelineExecutableStatisticFormatKHR - Enum describing a pipeline executable statisticSee Alsovulkanname is an array of 6 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 6 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 6 chard containing a null-terminated UTF-8 string which is a short human readable name for this statistic.vulkan description is an array of 6 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.3VUID-VkPipelineExecutableInfoKHR-pipeline-parameter pipeline must be a valid  handle vulkanexecutableIndex] is the index of the executable to query in the array of executable properties returned by .6VUID-VkPipelineExecutableInfoKHR-executableIndex-03275 executableIndex must9 be less than the number of executables associated with pipeline as returned in the pExecutableCount parameter of  vulkanstages is a bitmask of &fo indicating which shader stages (if any) were principally used as inputs to compile this pipeline executable. vulkanname is an array of 6 chare containing a null-terminated UTF-8 string which is a short human readable name for this executable. vulkan description is an array of 6 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.)VUID-VkPipelineInfoKHR-pipeline-parameter pipeline must be a valid  handlevulkanfeatures-pipelineExecutableInfo pipelineExecutableInfo 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 A. Valid UsageFVUID-vkGetPipelineExecutablePropertiesKHR-pipelineExecutableInfo-03270  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineExecutableInfopipelineExecutableInfo must be enabled8VUID-vkGetPipelineExecutablePropertiesKHR-pipeline-03271 pipeline member of  pPipelineInfo must have been created with deviceValid Usage (Implicit):VUID-vkGetPipelineExecutablePropertiesKHR-device-parameter device must be a valid  handleAVUID-vkGetPipelineExecutablePropertiesKHR-pPipelineInfo-parameter  pPipelineInfo must$ be a valid pointer to a valid  structureDVUID-vkGetPipelineExecutablePropertiesKHR-pExecutableCount-parameter pExecutableCount must be a valid pointer to a uint32_t value?VUID-vkGetPipelineExecutablePropertiesKHR-pProperties-parameter! If 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-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , vulkanivkGetPipelineExecutableStatisticsKHR - 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 A. Valid UsageFVUID-vkGetPipelineExecutableStatisticsKHR-pipelineExecutableInfo-03272  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineExecutableInfopipelineExecutableInfo must be enabled8VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03273 pipeline member of pExecutableInfo must have been created with device8VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03274 pipeline member of pExecutableInfo must have been created with jValid Usage (Implicit):VUID-vkGetPipelineExecutableStatisticsKHR-device-parameter device must be a valid  handleCVUID-vkGetPipelineExecutableStatisticsKHR-pExecutableInfo-parameter pExecutableInfo must$ be a valid pointer to a valid  structureCVUID-vkGetPipelineExecutableStatisticsKHR-pStatisticCount-parameter pStatisticCount must be a valid pointer to a uint32_t value?VUID-vkGetPipelineExecutableStatisticsKHR-pStatistics-parameter! If the value referenced by pStatisticCount is not 0 , and  pStatistics is not NULL,  pStatistics must( be a valid pointer to an array of pStatisticCount  structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , vulkanlvkGetPipelineExecutableInternalRepresentationsKHR - 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 A.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 UsageSVUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipelineExecutableInfo-03276  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineExecutableInfopipelineExecutableInfo must be enabledEVUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03277 pipeline member of pExecutableInfo must have been created with deviceEVUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03278 pipeline member of pExecutableInfo must have been created with jValid Usage (Implicit)GVUID-vkGetPipelineExecutableInternalRepresentationsKHR-device-parameter device must be a valid  handlePVUID-vkGetPipelineExecutableInternalRepresentationsKHR-pExecutableInfo-parameter pExecutableInfo must$ be a valid pointer to a valid  structure]VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pInternalRepresentationCount-parameter pInternalRepresentationCount must be a valid pointer to a uint32_t valueYVUID-vkGetPipelineExecutableInternalRepresentationsKHR-pInternalRepresentations-parameter! If 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-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See 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.0     4     None("#%&'-./1789;=>?FHIMSUVX_dghklmq0Ϭ6vulkanpVkQueryPoolPerformanceCreateInfoKHR - Structure specifying parameters of a newly created performance query pool Valid Usage?VUID-VkQueryPoolPerformanceCreateInfoKHR-queueFamilyIndex-03236 queueFamilyIndex must1 be a valid queue family index of the deviceKVUID-VkQueryPoolPerformanceCreateInfoKHR-performanceCounterQueryPools-03237 The  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-performanceCounterQueryPoolsperformanceCounterQueryPools feature must be enabled>VUID-VkQueryPoolPerformanceCreateInfoKHR-pCounterIndices-03321 Each element of pCounterIndices must3 be in the range of counters reported by ( for the queue family specified in queueFamilyIndexValid Usage (Implicit)4VUID-VkQueryPoolPerformanceCreateInfoKHR-sType-sType sType must be  BVUID-VkQueryPoolPerformanceCreateInfoKHR-pCounterIndices-parameter pCounterIndices must( be a valid pointer to an array of counterIndexCount uint32_t valuesFVUID-VkQueryPoolPerformanceCreateInfoKHR-counterIndexCount-arraylength counterIndexCount must be greater than 0See AlsoC, vulkanxVkPhysicalDevicePerformanceQueryPropertiesKHR - Structure describing performance query properties for an implementationMembersThe members of the G structure describe the following implementation-dependent properties:Valid Usage (Implicit)If the  structure is included in the pNext chain of T =, it is filled with the implementation-dependent properties.See Alsop, CvulkansVkPhysicalDevicePerformanceQueryFeaturesKHR - Structure describing performance query support for an implementationValid Usage (Implicit)See Alsop, CvulkanrVkPerformanceQuerySubmitInfoKHR - Structure indicating which counter pass index is active for performance queries DescriptionIf the ;::pNextX chain does not include this structure, the batch defaults to use counter pass index 0.Valid Usage (Implicit)See AlsoCvulkanJVkPerformanceCounterKHR - Structure providing information about a counterValid Usage (Implicit)See AlsoR, N, P, C, vulkancVkPerformanceCounterDescriptionKHR - Structure providing more detailed information about a counterValid Usage (Implicit)See AlsoM, C, vulkan^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 AlsoJ, C, Hvulkan;VkAcquireProfilingLockFlagBitsKHR - Reserved for future useSee AlsoJKvulkan]VkPerformanceCounterDescriptionFlagBitsKHR - Bitmask specifying usage behavior for a counterSee AlsoMNvulkan@VkPerformanceCounterStorageKHR - Supported counter storage typesSee AlsoPvulkan:VkPerformanceCounterUnitKHR - Supported counter unit typesSee AlsoRvulkan<VkPerformanceCounterScopeKHR - Supported counter scope typesSee Also\vulkancounterPassIndex. specifies which counter pass index is active.;VUID-VkPerformanceQuerySubmitInfoKHR-counterPassIndex-03221 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.4VUID-VkAcquireProfilingLockInfoKHR-flags-zerobitmask flags must be 0_vulkantimeout` indicates how long the function waits, in nanoseconds, if the profiling lock is not available.avulkanqueueFamilyIndexF is the queue family index to create this performance query pool for.bvulkanpCounterIndices# is the array of indices into the :: pCounters+ to enable in this performance query pool.dvulkanflags is a bitmask of K0 indicating the usage behavior for the counter.evulkanname is an array of size 6P, containing a null-terminated UTF-8 string specifying the name of the counter.fvulkancategory is an array of size 6T, containing a null-terminated UTF-8 string specifying the category of the counter.gvulkan description is an array of size 6W, containing a null-terminated UTF-8 string specifying the description of the counter.ivulkanunit is a P8 specifying the unit that the counter data will record.jvulkanscope is a R3 specifying the scope that the counter belongs to.kvulkanstorage is a N; specifying the storage type that the counter s data uses.lvulkanuuid is an array of size 9r, containing 8-bit values that represent a universally unique identifier for the counter of the physical device.nvulkanallowCommandBufferQueryCopies is .> if the performance query pools are allowed to be used with .pvulkan%features-performanceCounterQueryPools performanceCounterQueryPoolsQ indicates whether the implementation supports performance counter query pools.qvulkan-features-performanceCounterMultipleQueryPools $performanceCounterMultipleQueryPools indicates whether the implementation supports using multiple performance query pools in a primary command buffer and secondary command buffers executed within it.tvulkantg specifies that concurrently recording the counter while other submitted command buffers are running may& impact the accuracy of the recording.uvulkanu' specifies that recording the counter may' have a noticeable performance impact.vvulkanv? - the performance counter storage is a 64-bit floating-point.wvulkanw? - the performance counter storage is a 32-bit floating-point.xvulkanxA - the performance counter storage is a 64-bit unsigned integer.yvulkanyA - the performance counter storage is a 32-bit unsigned integer.zvulkanz? - the performance counter storage is a 64-bit signed integer.{vulkan{? - the performance counter storage is a 32-bit signed integer.|vulkan|6 - the performance counter unit is a value of cycles.}vulkan}: - the performance counter unit is a value of hertz (Hz).~vulkan~8 - the performance counter unit is a value of amps (A).vulkan9 - the performance counter unit is a value of volts (V).vulkan9 - the performance counter unit is a value of watts (W).vulkanE - the performance counter unit is a temperature reported in Kelvin.vulkan7 - the performance counter unit is a value of bytes/s.vulkan5 - the performance counter unit is a value of bytes.vulkan@ - the performance counter unit is a value of nanoseconds (ns).vulkan5 - the performance counter unit is a percentage (%).vulkan9 - 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.vulkanF - 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 A will be returned instead of F.Valid Usage (Implicit)]VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-physicalDevice-parameter physicalDevice must be a valid  handle\VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-pCounterCount-parameter  pCounterCount must be a valid pointer to a uint32_t valueXVUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-pCounters-parameter! If the value referenced by  pCounterCount is not 0 , and  pCounters is not NULL,  pCounters must( be a valid pointer to an array of  pCounterCount  structurescVUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-pCounterDescriptions-parameter! If the value referenced by  pCounterCount is not 0 , and pCounterDescriptions is not NULL, pCounterDescriptions must( be a valid pointer to an array of  pCounterCount  structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?>See Also, , vulkanvkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR - Reports the number of passes require for a performance query pool type DescriptionThe pPerformanceQueryCreateInfo member ::queueFamilyIndex must be a queue family of physicalDeviceJ. The number of passes required to capture the counters specified in the pPerformanceQueryCreateInfo member :: pCounters is returned in  pNumPasses.Valid Usage (Implicit)See Also, 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@DSee Also, vulkan7vkReleaseProfilingLockKHR - Releases the profiling lock Valid Usage+VUID-vkReleaseProfilingLockKHR-device-03235 The profiling lock of device must7 have been held via a previous successful call to Valid Usage (Implicit)/VUID-vkReleaseProfilingLockKHR-device-parameter device must be a valid  handleSee AlsovulkanphysicalDeviceo 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.UVUID-vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR-physicalDevice-parameter physicalDevice must be a valid  handlevulkanpPerformanceQueryCreateInfo is a pointer to a 1 of the performance query that is to be created.bVUID-vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR-pPerformanceQueryCreateInfo-parameter pPerformanceQueryCreateInfo must be a valid pointer to a valid  structurevulkandevice" is the logical device to profile./VUID-vkAcquireProfilingLockKHR-device-parameter device must be a valid  handlevulkanpInfo is a pointer to a Q structure which contains information about how the profiling is to be acquired..VUID-vkAcquireProfilingLockKHR-pInfo-parameter pInfo must be a valid pointer to a valid  structurevulkandevice- is the logical device to cease profiling on.T`abmnopq[\hijklcedgf]_^FGHIJKutLMN{zyxwvOP~}|QRSTUVWXYZrsjopqmnhijklcedgf`ab]_^[\TUVWXYZRSP~}|Q~}|N{zyxwvO{zyxwvMKutLutJHIGsFrNone("#%&'-./1789;=>?FHIMSUVX_dghklmq1` vulkanUVkSemaphoreGetFdInfoKHR - Structure describing a POSIX FD semaphore export operation DescriptionGThe properties of the file descriptor returned depend on the value of  handleType. See  lV for a description of the properties of the defined external semaphore handle types. Valid Usage-VUID-VkSemaphoreGetFdInfoKHR-handleType-01132  handleType must! have been included in QY:: handleTypes when  semaphore s current payload was created,VUID-VkSemaphoreGetFdInfoKHR-semaphore-01133  semaphore muste 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 Rb::exportFromImportedHandleTypes for  handleType-VUID-VkSemaphoreGetFdInfoKHR-handleType-01134 If  handleTypef 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  semaphore-VUID-VkSemaphoreGetFdInfoKHR-handleType-01135 If  handleTypeM 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-VUID-VkSemaphoreGetFdInfoKHR-handleType-01136  handleType must2 be defined as a POSIX file descriptor handle-VUID-VkSemaphoreGetFdInfoKHR-handleType-03253 If  handleTypeM refers to a handle type with copy payload transference semantics,  semaphore must have been created with a * of *-VUID-VkSemaphoreGetFdInfoKHR-handleType-03254 If  handleTypeM 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)(VUID-VkSemaphoreGetFdInfoKHR-sType-sType sType must be (VUID-VkSemaphoreGetFdInfoKHR-pNext-pNext pNext must be NULL0VUID-VkSemaphoreGetFdInfoKHR-semaphore-parameter  semaphore must be a valid w handle1VUID-VkSemaphoreGetFdInfoKHR-handleType-parameter  handleType must be a valid  l valueSee Also l, w, C, vulkanaVkImportSemaphoreFdInfoKHR - Structure specifying POSIX file descriptor to import to a semaphore DescriptionThe handle types supported by  handleType are: Handle Type % Transference + Permanence Supported  M  Reference  Temporary,Permanent  M  Copy  Temporary Handle Types Supported by  Valid Usage0VUID-VkImportSemaphoreFdInfoKHR-handleType-01143  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 table(VUID-VkImportSemaphoreFdInfoKHR-fd-01544 fd 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 compatibility0VUID-VkImportSemaphoreFdInfoKHR-handleType-03263 If  handleType is M , the <::flags field must( match that of the semaphore from which fd was exported0VUID-VkImportSemaphoreFdInfoKHR-handleType-03264 If  handleType is M, the m:: semaphoreType field must( match that of the semaphore from which fd was exported+VUID-VkImportSemaphoreFdInfoKHR-flags-03323 If flags contains J, the m:: semaphoreType( field of the semaphore from which fd was exported must not be *If  handleType is M, 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 w\ 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 M from a w which is signaled.Valid Usage (Implicit)+VUID-VkImportSemaphoreFdInfoKHR-sType-sType sType must be +VUID-VkImportSemaphoreFdInfoKHR-pNext-pNext pNext must be NULL3VUID-VkImportSemaphoreFdInfoKHR-semaphore-parameter  semaphore must be a valid w handle/VUID-VkImportSemaphoreFdInfoKHR-flags-parameter flags must% be a valid combination of J values4VUID-VkImportSemaphoreFdInfoKHR-handleType-parameter  handleType must be a valid  l valueHost SynchronizationHost access to  semaphore must be externally synchronizedSee Also l, w,  ;, C, 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 JO 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure7@See 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@"See Also, vulkandeviceB is the logical device that created the semaphore being exported.)VUID-vkGetSemaphoreFdKHR-device-parameter device must be a valid  handlevulkan pGetFdInfo is a pointer to a : structure containing parameters of the export operation.-VUID-vkGetSemaphoreFdKHR-pGetFdInfo-parameter  pGetFdInfo must be a valid pointer to a valid  structurevulkandevice2 is the logical device that created the semaphore.,VUID-vkImportSemaphoreFdKHR-device-parameter device must be a valid  handlevulkanpImportSemaphoreFdInfo is a pointer to a ; structure specifying the semaphore and import parameters.<VUID-vkImportSemaphoreFdKHR-pImportSemaphoreFdInfo-parameter pImportSemaphoreFdInfo must be a valid pointer to a valid  structureNone("#%&'-./1789;=>?FHIMSUVX_dghklmq1 vulkanRVkMemoryGetFdInfoKHR - 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 3::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, , C, vulkanHVkMemoryFdPropertiesKHR - Properties of External Memory File DescriptorsValid Usage (Implicit)See AlsoC, 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 must not perform any operations on the file descriptor after a successful import. The imported memory object holds a reference to its payload. Applications can import the same payload 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 Usage-VUID-VkImportMemoryFdInfoKHR-handleType-00667 If  handleType is not 0, it must. be supported for import, as reported by P^ or P[%VUID-VkImportMemoryFdInfoKHR-fd-00668 The memory from which fd was exported mustB have been created on the same underlying physical device as device-VUID-VkImportMemoryFdInfoKHR-handleType-00669 If  handleType is not 0, it must be  .-VUID-VkImportMemoryFdInfoKHR-handleType-00670 If  handleType is not 0, fd must) be a valid POSIX file descriptor handle.%VUID-VkImportMemoryFdInfoKHR-fd-01746 The 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-compatibility%VUID-VkImportMemoryFdInfoKHR-fd-01520 fd 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)(VUID-VkImportMemoryFdInfoKHR-sType-sType sType must be 1VUID-VkImportMemoryFdInfoKHR-handleType-parameter If  handleType is not 0,  handleType must be a valid  valueSee Also, Cvulkanmemory= is the memory object from which the handle will be exported.*VUID-VkMemoryGetFdInfoKHR-memory-parameter memory must be a valid  handlevulkan handleType! is the type of handle requested.*VUID-VkMemoryGetFdInfoKHR-handleType-00671  handleType must have been included in OU:: handleTypes when memory was created*VUID-VkMemoryGetFdInfoKHR-handleType-00672  handleType must. be defined as a POSIX file descriptor handle.VUID-VkMemoryGetFdInfoKHR-handleType-parameter  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 holding a reference to the memory object s payload and transfer ownership of the file descriptor 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure7@See Also, vulkanPvkGetMemoryFdPropertiesKHR - Get Properties of External Memory File Descriptors Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@"See Also, , vulkandeviceF is the logical device that created the device memory being exported.&VUID-vkGetMemoryFdKHR-device-parameter device must be a valid  handlevulkan pGetFdInfo is a pointer to a : structure containing parameters of the export operation.*VUID-vkGetMemoryFdKHR-pGetFdInfo-parameter  pGetFdInfo must be a valid pointer to a valid  structurevulkandevice. is the logical device that will be importing fd.0VUID-vkGetMemoryFdPropertiesKHR-device-parameter device must be a valid  handlevulkan handleType is the type of the handle fd.0VUID-vkGetMemoryFdPropertiesKHR-handleType-00674  handleType must not be 4VUID-vkGetMemoryFdPropertiesKHR-handleType-parameter  handleType must be a valid  valuevulkanfd& is the handle which will be imported.(VUID-vkGetMemoryFdPropertiesKHR-fd-00673 fd must@ be an external memory handle created outside of the Vulkan APINone("#%&'-./1789;=>?FHIMSUVX_dghklmq20R vulkanVkImportFenceFdInfoKHR - (None) DescriptionThe handle types supported by  handleType are: Handle Type % Transference + Permanence Supported  Q  Reference  Temporary,Permanent  Q  Copy  Temporary Handle Types Supported by  Valid Usage,VUID-VkImportFenceFdInfoKHR-handleType-01464  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 table$VUID-VkImportFenceFdInfoKHR-fd-01541 fd 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 Q, 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 Q from a  which is signaled.Valid Usage (Implicit)'VUID-VkImportFenceFdInfoKHR-sType-sType sType must be  'VUID-VkImportFenceFdInfoKHR-pNext-pNext pNext must be NULL+VUID-VkImportFenceFdInfoKHR-fence-parameter fence must be a valid  handle+VUID-VkImportFenceFdInfoKHR-flags-parameter flags must% be a valid combination of L values0VUID-VkImportFenceFdInfoKHR-handleType-parameter  handleType must be a valid   valueHost SynchronizationHost access to fence must be externally synchronizedSee Also , ,  b, C, %vulkanMVkFenceGetFdInfoKHR - 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)VUID-VkFenceGetFdInfoKHR-handleType-01453  handleType must! have been included in MS:: handleTypes when fence s current payload was created)VUID-VkFenceGetFdInfoKHR-handleType-01454 If  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$VUID-VkFenceGetFdInfoKHR-fence-01455 fence muste 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 N\::exportFromImportedHandleTypes for  handleType)VUID-VkFenceGetFdInfoKHR-handleType-01456  handleType must2 be defined as a POSIX file descriptor handleValid Usage (Implicit)$VUID-VkFenceGetFdInfoKHR-sType-sType sType must be  $VUID-VkFenceGetFdInfoKHR-pNext-pNext pNext must be NULL(VUID-VkFenceGetFdInfoKHR-fence-parameter fence must be a valid  handle-VUID-VkFenceGetFdInfoKHR-handleType-parameter  handleType must be a valid   valueSee Also , , C, $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 LJ 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 Q( 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure7@See Also, %vulkan@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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@"See Also, $vulkandevice= is the logical device that created the fence being exported.%VUID-vkGetFenceFdKHR-device-parameter device must be a valid  handlevulkan pGetFdInfo is a pointer to a : structure containing parameters of the export operation.)VUID-vkGetFenceFdKHR-pGetFdInfo-parameter  pGetFdInfo must be a valid pointer to a valid  structure%vulkandevice. is the logical device that created the fence.(VUID-vkImportFenceFdKHR-device-parameter device must be a valid  handlevulkanpImportFenceFdInfo is a pointer to a 7 structure specifying the fence and import parameters.4VUID-vkImportFenceFdKHR-pImportFenceFdInfo-parameter pImportFenceFdInfo must be a valid pointer to a valid  structure! "#$%$%! #"None("#%&'-./1789;=>?FHIMSUVX_dghklmq5#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 Also4, C$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 T H, it is filled with the implementation-dependent limits and properties.Valid Usage (Implicit)See Alsop, n, C%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  2 to enable features.Valid Usage (Implicit)See Alsop, C4vulkanKVkPipelineRasterizationStateStreamCreateFlagsEXT - Reserved for future use Description4Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also#7vulkanflags is reserved for future use.FVUID-VkPipelineRasterizationStateStreamCreateInfoEXT-flags-zerobitmask flags must be 08vulkanrasterizationStream1 is the vertex stream selected for rasterization.NVUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02325 rasterizationStream must be less than $::maxTransformFeedbackStreamsNVUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02326 rasterizationStream must be zero if $::*transformFeedbackRasterizationStreamSelect is .:vulkan"limits-maxTransformFeedbackStreams maxTransformFeedbackStreamsf is the maximum number of vertex streams that can be output from geometry shaders declared with the GeometryStreams6 capability. If the implementation does not support %::geometryStreams then maxTransformFeedbackStreams must be set to 1.;vulkan"limits-maxTransformFeedbackBuffers maxTransformFeedbackBuffers is the maximum number of transform feedback buffers that can be bound for capturing shader outputs from the last vertex processing stage.<vulkan%limits-maxTransformFeedbackBufferSize maxTransformFeedbackBufferSize] is the maximum size that can be specified when binding a buffer for transform feedback in I.=vulkan)limits-maxTransformFeedbackStreamDataSize "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)limits-maxTransformFeedbackBufferDataSize "maxTransformFeedbackBufferDataSizew is the maximum amount of data in bytes for each vertex that can be captured to a specific transform feedback buffer.?vulkan+limits-maxTransformFeedbackBufferDataStride $maxTransformFeedbackBufferDataStrideJ is the maximum stride between each capture of vertex data to the buffer.@vulkanlimits-transformFeedbackQueries transformFeedbackQueries. is true if the implementation supports the # query type. transformFeedbackQueries# is false if queries of this type cannot be created.Avulkan-limits-transformFeedbackStreamsLinesTriangles &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.Bvulkan1limits-transformFeedbackRasterizationStreamSelect *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.Cvulkanlimits-transformFeedbackDraw transformFeedbackDraw- is true if the implementation supports the P" function otherwise the function must not be called.Evulkanfeatures-transformFeedback transformFeedbackV indicates whether the implementation supports transform feedback and shader modules can declare the TransformFeedback capability.Fvulkanfeatures-geometryStreams geometryStreams4 indicates whether the implementation supports the GeometryStreams SPIR-V capability.Ivulkan[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 UsageAVUID-vkCmdBindTransformFeedbackBuffersEXT-transformFeedback-02355 %::transformFeedback must be enabled <VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02356  firstBinding must be less than $::maxTransformFeedbackBuffers<VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02357 The sum of  firstBinding and  bindingCount must$ be less than or equal to $::maxTransformFeedbackBuffers8VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02358 All elements of pOffsets must< be less than the size of the corresponding element in pBuffers8VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02359 All elements of pOffsets must be a multiple of 48VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02360 All elements of pBuffers must! have been created with the  flag5VUID-vkCmdBindTransformFeedbackBuffersEXT-pSize-02361 If the optional pSize% array is specified, each element of pSizes must either be (, or be less than or equal to $::maxTransformFeedbackBufferSize6VUID-vkCmdBindTransformFeedbackBuffersEXT-pSizes-02362 All elements of pSizes must be either H, or less than or equal to the size of the corresponding buffer in pBuffers8VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02363 All elements of pOffsets plus pSizes , where the pSizes, element is not , mustG be less than or equal to the size of the corresponding buffer in pBuffers8VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02364 Each element of pBuffers that is non-sparse must7 be bound completely and contiguously to a single / object4VUID-vkCmdBindTransformFeedbackBuffersEXT-None-02365 Transform feedback must not be active when the I command is recordedValid Usage (Implicit)AVUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-parameter  commandBuffer must be a valid  handle<VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-parameter pBuffers must# be a valid pointer to an array of  bindingCount valid  handles<VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-parameter pOffsets must# be a valid pointer to an array of  bindingCount n valuesAVUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state?VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsBVUID-vkCmdBindTransformFeedbackBuffersEXT-bindingCount-arraylength  bindingCount must be greater than 06VUID-vkCmdBindTransformFeedbackBuffersEXT-commonparent Both 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 / 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, , nJvulkanVvkCmdBeginTransformFeedbackEXT - 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;VUID-vkCmdBeginTransformFeedbackEXT-transformFeedback-02366 %::transformFeedback must be enabled .VUID-vkCmdBeginTransformFeedbackEXT-None-02367 Transform feedback must not be active<VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02368 firstCounterBuffer must be less than $::maxTransformFeedbackBuffers<VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02369 The sum of firstCounterBuffer and counterBufferCount must$ be less than or equal to $::maxTransformFeedbackBuffers<VUID-vkCmdBeginTransformFeedbackEXT-counterBufferCount-02607 If 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 8?VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-02370= For each buffer handle in the array, if it is not 8 it must` reference a buffer large enough to hold 4 bytes at the corresponding offset from the pCounterBufferOffsets array8VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffer-02371 If pCounterBuffer is NULL, then pCounterBufferOffsets must also be NULL9VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffers-02372$ For each buffer handle in the pCounterBuffers array that is not 8 it must have been created with a usage value containing .VUID-vkCmdBeginTransformFeedbackEXT-None-04128F The last vertex processing stage of the bound graphics pipeline must" have been declared with the Xfb execution mode.VUID-vkCmdBeginTransformFeedbackEXT-None-02373 Transform feedback mustI not be made active in a render pass instance with multiview enabledValid Usage (Implicit);VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-parameter  commandBuffer must be a valid  handleCVUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-parameter If counterBufferCount is not 0, and pCounterBufferOffsets is not NULL, pCounterBufferOffsets must( be a valid pointer to an array of counterBufferCount n values;VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state9VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations.VUID-vkCmdBeginTransformFeedbackEXT-renderpass This command must5 only be called inside of a render pass instance0VUID-vkCmdBeginTransformFeedbackEXT-commonparent Both of  commandBuffer, and the elements of pCounterBuffers7 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 / 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, , nKvulkan>This function will call the supplied action between calls to J and L Note that L@ is *not* called if an exception is thrown by the inner action.LvulkanVvkCmdEndTransformFeedbackEXT - Make transform feedback inactive in the command buffer Valid Usage9VUID-vkCmdEndTransformFeedbackEXT-transformFeedback-02374 %::transformFeedback must be enabled,VUID-vkCmdEndTransformFeedbackEXT-None-02375 Transform feedback must be active:VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02376 firstCounterBuffer must be less than $::maxTransformFeedbackBuffers:VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02377 The sum of firstCounterBuffer and counterBufferCount must$ be less than or equal to $::maxTransformFeedbackBuffers:VUID-vkCmdEndTransformFeedbackEXT-counterBufferCount-02608 If 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 8=VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-02378= For each buffer handle in the array, if it is not 8 it must` reference a buffer large enough to hold 4 bytes at the corresponding offset from the pCounterBufferOffsets array6VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffer-02379 If pCounterBuffer is NULL, then pCounterBufferOffsets must also be NULL7VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffers-02380$ For each buffer handle in the pCounterBuffers array that is not 8 it must have been created with a usage value containing Valid Usage (Implicit)9VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-parameter  commandBuffer must be a valid  handleAVUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-parameter If counterBufferCount is not 0, and pCounterBufferOffsets is not NULL, pCounterBufferOffsets must( be a valid pointer to an array of counterBufferCount n values9VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state7VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations,VUID-vkCmdEndTransformFeedbackEXT-renderpass This command must5 only be called inside of a render pass instance.VUID-vkCmdEndTransformFeedbackEXT-commonparent Both of  commandBuffer, and the elements of pCounterBuffers7 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 / 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, , nMvulkan2vkCmdBeginQueryIndexedEXT - Begin an indexed query DescriptionThe M# command operates the same as the = command, except that it also accepts a query type specific index parameter. Valid Usage)VUID-vkCmdBeginQueryIndexedEXT-None-00807& All queries used by the command must be unavailable.VUID-vkCmdBeginQueryIndexedEXT-queryType-02804 The  queryType used to create  queryPool must not be #.VUID-vkCmdBeginQueryIndexedEXT-queryType-04728 The  queryType used to create  queryPool must not be # or #.VUID-vkCmdBeginQueryIndexedEXT-queryType-04729 The  queryType used to create  queryPool must not be #.VUID-vkCmdBeginQueryIndexedEXT-queryType-00800 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 *VUID-vkCmdBeginQueryIndexedEXT-query-00802 query must, be less than the number of queries in  queryPool.VUID-vkCmdBeginQueryIndexedEXT-queryType-00803 If the  queryType used to create  queryPool was # , the / that  commandBuffer was allocated from must support graphics operations.VUID-vkCmdBeginQueryIndexedEXT-queryType-00804 If the  queryType used to create  queryPool was # and any of the pipelineStatistics( indicate graphics operations, the / that  commandBuffer was allocated from must support graphics operations.VUID-vkCmdBeginQueryIndexedEXT-queryType-00805 If the  queryType used to create  queryPool was # and any of the pipelineStatistics' indicate compute operations, the / that  commandBuffer was allocated from must support compute operations2VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-01885  commandBuffer must" not be a protected command buffer*VUID-vkCmdBeginQueryIndexedEXT-query-00808: If 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  queryPool.VUID-vkCmdBeginQueryIndexedEXT-queryPool-04753 If the  queryPool was created with the same  queryType as that of another  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive query within  commandBuffer, then index must3 not match the index used for the active query.VUID-vkCmdBeginQueryIndexedEXT-queryType-02338 If the  queryType used to create  queryPool was # the / that  commandBuffer was allocated from must support graphics operations.VUID-vkCmdBeginQueryIndexedEXT-queryType-02339 If the  queryType used to create  queryPool was # the index parameter must be less than $::maxTransformFeedbackStreams.VUID-vkCmdBeginQueryIndexedEXT-queryType-02340 If the  queryType used to create  queryPool was not # the index must be zero.VUID-vkCmdBeginQueryIndexedEXT-queryType-02341 If the  queryType used to create  queryPool was # then $::transformFeedbackQueries must be supported.VUID-vkCmdBeginQueryIndexedEXT-queryPool-03223 If  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  commandBuffer.VUID-vkCmdBeginQueryIndexedEXT-queryPool-03224 If  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  commandBuffer.VUID-vkCmdBeginQueryIndexedEXT-queryPool-03225 If  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 instance.VUID-vkCmdBeginQueryIndexedEXT-queryPool-03226 If  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-performanceCounterMultipleQueryPools$performanceCounterMultipleQueryPools feature must be enabled)VUID-vkCmdBeginQueryIndexedEXT-None-02863 If  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)6VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-parameter  commandBuffer must be a valid  handle2VUID-vkCmdBeginQueryIndexedEXT-queryPool-parameter  queryPool must be a valid | handle.VUID-vkCmdBeginQueryIndexedEXT-flags-parameter flags must% be a valid combination of [ values6VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state4VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operations+VUID-vkCmdBeginQueryIndexedEXT-commonparent Both 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 / 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, \, |Nvulkan>This function will call the supplied action between calls to M and O Note that O@ is *not* called if an exception is thrown by the inner action.Ovulkan&vkCmdEndQueryIndexedEXT - Ends a query DescriptionThe O# command operates the same as the = command, except that it also accepts a query type specific index parameter. Valid Usage'VUID-vkCmdEndQueryIndexedEXT-None-02342& All queries used by the command must be fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive(VUID-vkCmdEndQueryIndexedEXT-query-02343 query must, be less than the number of queries in  queryPool0VUID-vkCmdEndQueryIndexedEXT-commandBuffer-02344  commandBuffer must" not be a protected command buffer(VUID-vkCmdEndQueryIndexedEXT-query-02345 If O: 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  queryPool,VUID-vkCmdEndQueryIndexedEXT-queryType-02346 If the  queryType used to create  queryPool was # the index parameter must be less than $::maxTransformFeedbackStreams,VUID-vkCmdEndQueryIndexedEXT-queryType-02347 If the  queryType used to create  queryPool was not # the index must be zero,VUID-vkCmdEndQueryIndexedEXT-queryType-02723 If the  queryType used to create  queryPool was # index must equal the index used to begin the queryValid Usage (Implicit)4VUID-vkCmdEndQueryIndexedEXT-commandBuffer-parameter  commandBuffer must be a valid  handle0VUID-vkCmdEndQueryIndexedEXT-queryPool-parameter  queryPool must be a valid | handle4VUID-vkCmdEndQueryIndexedEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state2VUID-vkCmdEndQueryIndexedEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operations)VUID-vkCmdEndQueryIndexedEXT-commonparent Both 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 / 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, |PvulkanvkCmdDrawIndirectByteCountEXT - 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 a 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 Usage2VUID-vkCmdDrawIndirectByteCountEXT-magFilter-04553 If a / created with  magFilter or  minFilter equal to  and  compareEnable equal to . is used to sample a /> 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 {'73VUID-vkCmdDrawIndirectByteCountEXT-mipmapMode-04770 If a / created with  mipmapMode equal to 8 and  compareEnable equal to . is used to sample a /> 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 {'-VUID-vkCmdDrawIndirectByteCountEXT-None-02691 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 {x-VUID-vkCmdDrawIndirectByteCountEXT-None-02692 If 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 4VUID-vkCmdDrawIndirectByteCountEXT-filterCubic-02694 Any / being sampled with " as a result of this command must have a tyE and format that supports cubic filtering, as specified by f:: filterCubic returned by T:VUID-vkCmdDrawIndirectByteCountEXT-filterCubicMinmax-02695 Any / being sampled with + with a reduction mode of either +z or +{" as a result of this command must have a tyi and format that supports cubic filtering together with minmax filtering, as specified by f::filterCubicMinmax returned by T.VUID-vkCmdDrawIndirectByteCountEXT-flags-02696 Any /  created with a 0::flags containing * sampled as a result of this command must only be sampled using a 9| of 9}-VUID-vkCmdDrawIndirectByteCountEXT-None-02697 For each set n% that is statically used by the /S bound to the pipeline bind point used by this command, a descriptor set must have been bound to n. at the same pipeline bind point, with a /F! that is compatible for set n , with the /F! used to create the current /, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???-VUID-vkCmdDrawIndirectByteCountEXT-None-02698A 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 /F6 that is compatible for push constants, with the /F! used to create the current /, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???-VUID-vkCmdDrawIndirectByteCountEXT-None-02699C 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 command-VUID-vkCmdDrawIndirectByteCountEXT-None-02700 A valid pipeline must9 be bound to the pipeline bind point used by this command6VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02701 If 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 dynamic-VUID-vkCmdDrawIndirectByteCountEXT-None-02859 There musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the /f object bound to the pipeline bind point used by this command, since that pipeline was bound-VUID-vkCmdDrawIndirectByteCountEXT-None-02702 If the /S object bound to the pipeline bind point used by this command accesses a /> object that uses unnormalized coordinates, that sampler must% not be used to sample from any /  with a / of the type t~, t, t, t or t, in any shader stage-VUID-vkCmdDrawIndirectByteCountEXT-None-02703 If the /S object bound to the pipeline bind point used by this command accesses 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 stage-VUID-vkCmdDrawIndirectByteCountEXT-None-02704 If the /S object bound to the pipeline bind point used by this command accesses 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-VUID-vkCmdDrawIndirectByteCountEXT-None-02705 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-VUID-vkCmdDrawIndirectByteCountEXT-None-02706 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 point6VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02707 If  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 resource-VUID-vkCmdDrawIndirectByteCountEXT-None-04115 If 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.5VUID-vkCmdDrawIndirectByteCountEXT-OpImageWrite-04469 If a / is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction mustC have at least as many components as the buffer view s format.4VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04470 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.4VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04471 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.4VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04472 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.4VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04473 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.@VUID-vkCmdDrawIndirectByteCountEXT-sparseImageInt64Atomics-04474 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, / $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.@VUID-vkCmdDrawIndirectByteCountEXT-sparseImageInt64Atomics-04475 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.3VUID-vkCmdDrawIndirectByteCountEXT-renderPass-02684 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 7r, structure specified when creating the / bound to 0VUID-vkCmdDrawIndirectByteCountEXT-subpass-026853 The subpass index of the current render pass must be equal to the subpass member of the 7r, structure specified when creating the / bound to -VUID-vkCmdDrawIndirectByteCountEXT-None-026869 Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor set-VUID-vkCmdDrawIndirectByteCountEXT-None-04584H Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass chapterBVUID-vkCmdDrawIndirectByteCountEXT-maxMultiviewInstanceIndex-02688p If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to W::maxMultiviewInstanceIndex>VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-02689; If 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 set6VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03417E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the ' dynamic state enabled, then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the 7h:: scissorCount of the pipeline5VUID-vkCmdDrawIndirectByteCountEXT-scissorCount-03418E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the ' dynamic state enabled, then  mustY have been called in the current command buffer prior to this draw command, and the  scissorCount parameter of  must match the 7h:: viewportCount of the pipeline6VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03419J If the bound graphics pipeline state was created with both the  and , 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 6VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04137E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the > dynamic state enabled, then the bound graphics pipeline must" have been created with j:: viewportCount greater or equal to the  viewportCount) parameter in the last call to 6VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04138E If the bound graphics pipeline state was created with the  and & dynamic states enabled then the  viewportCount) parameter in the last call to  must! be greater than or equal to the  viewportCount) parameter in the last call to 6VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04139E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the > dynamic state enabled, then the bound graphics pipeline must" have been created with g:: viewportCount greater or equal to the  viewportCount) parameter in the last call to 6VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04140E If the bound graphics pipeline state was created with the  and & dynamic states enabled then the  viewportCount) parameter in the last call to  must! be greater than or equal to the  viewportCount) parameter in the last call to DVUID-vkCmdDrawIndirectByteCountEXT-VkPipelineVieportCreateInfo-04141E If the bound graphics pipeline state was created with the 4 dynamic state enabled and an instance of i chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with i:: viewportCount greater or equal to the  viewportCount) parameter in the last call to DVUID-vkCmdDrawIndirectByteCountEXT-VkPipelineVieportCreateInfo-04142E If the bound graphics pipeline state was created with the 4 dynamic state enabled and an instance of f chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with f::exclusiveScissorCount greater or equal to the  viewportCount) parameter in the last call to :VUID-vkCmdDrawIndirectByteCountEXT-primitiveTopology-03420E If the bound graphics pipeline state was created with the & dynamic state enabled then o mustY have been called in the current command buffer prior to this draw command, and the primitiveTopology parameter of o 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 7T::topology stateZVUID-vkCmdDrawIndirectByteCountEXT-primitiveFragmentShadingRateWithMultipleViewports-04552 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewportsY limit is not supported, the bound graphics pipeline was created with the k dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR built-in, then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must be 14VUID-vkCmdDrawIndirectByteCountEXT-blendEnable-04727 If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features do not contain {, then the  blendEnable1 member of the corresponding element of the  pAttachments member of pColorBlendState must be .=VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-04740] If rasterization is not disabled in the bound graphics pipeline, and neither the @ nor the # extensions are enabled, then 7W::rasterizationSamples@ mustO be the same as the current subpass color and/or depth/stencil attachments-VUID-vkCmdDrawIndirectByteCountEXT-None-04007 All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must have either valid or 8 buffers bound-VUID-vkCmdDrawIndirectByteCountEXT-None-04008 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 8-VUID-vkCmdDrawIndirectByteCountEXT-None-02721D 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???:VUID-vkCmdDrawIndirectByteCountEXT-transformFeedback-02287 %::transformFeedback must be enabled>VUID-vkCmdDrawIndirectByteCountEXT-transformFeedbackDraw-02288 The implementation must support $::transformFeedbackDraw5VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-02289  vertexStride must2 be greater than 0 and less than or equal to  ::$maxTransformFeedbackBufferDataStride6VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-04567 If  counterBuffer is non-sparse then it must7 be bound completely and contiguously to a single / object6VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-02290  counterBuffer must! have been created with the  bit set<VUID-vkCmdDrawIndirectByteCountEXT-counterBufferOffset-04568 counterBufferOffset must be a multiple of 46VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02646  commandBuffer must" not be a protected command bufferValid Usage (Implicit):VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-parameter  commandBuffer must be a valid  handle:VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-parameter  counterBuffer must be a valid  handle:VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state8VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations-VUID-vkCmdDrawIndirectByteCountEXT-renderpass This command must5 only be called inside of a render pass instance/VUID-vkCmdDrawIndirectByteCountEXT-commonparent Both of  commandBuffer, and  counterBuffer must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, , nIvulkan 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.Jvulkan 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 LN 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 8z, 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.Lvulkan 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 JX call to resume transform feedback capture from this position. It can also be used by P1 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.Mvulkan 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.Ovulkan 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.Pvulkan 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."#678$9:;<=>?@ABC%DEF2345GHIJKLMNOP"IJKLMNOP%DEF$9:;<=>?@ABC#678453H2GNone("#%&'-./1789;=>?FHIMSUVX_dghklmq5"vulkanYVkPhysicalDeviceToolPropertiesEXT - Structure providing information about an active toolValid Usage (Implicit)See AlsoC, o, mvulkanMVkToolPurposeFlagBitsEXT - Bitmask specifying the purposes of an active toolSee AlsooqvulkannameD is a null-terminated UTF-8 string containing the name of the tool.rvulkanversionG is a null-terminated UTF-8 string containing the version of the tool.svulkanpurposes is a bitmask of m9 which is populated with purposes supported by the tool.tvulkan descriptionI is a null-terminated UTF-8 string containing a description of the tool.uvulkanlayer 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.xvulkanxh specifies that the tool reports additional information to the application via callbacks specified by E or Fyvulkany# 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 labelszvulkanzd specifies that the tool modifies the API features/limits/extensions presented to the application.{vulkan{o specifies that the tool provides additional API features/extensions on top of the underlying implementation.|vulkan| 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)BVUID-vkGetPhysicalDeviceToolPropertiesEXT-physicalDevice-parameter physicalDevice must be a valid  handle>VUID-vkGetPhysicalDeviceToolPropertiesEXT-pToolCount-parameter  pToolCount must be a valid pointer to a uint32_t valueCVUID-vkGetPhysicalDeviceToolPropertiesEXT-pToolProperties-parameter! If 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-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@See Also, "vulkanphysicalDeviceA is the handle to the physical device to query for active tools."pqutrsklm~}|{zyxnovw"pqutrsom~}|{zyxn~}|{zyxlwkvNone("#%&'-./1789;=>?FHIMSUVX_dghklmq6vulkanVkSubpassSampleLocationsEXT - 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 Usage;VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-01526 sampleLocationsPerPixel must$ be a bit value that is set in ::sampleLocationSampleCounts8VUID-VkSampleLocationsInfoEXT-sampleLocationsCount-01527 sampleLocationsCount must equal sampleLocationsPerPixel sampleLocationGridSize.width sampleLocationGridSize.heightValid Usage (Implicit))VUID-VkSampleLocationsInfoEXT-sType-sType sType must be +8VUID-VkSampleLocationsInfoEXT-pSampleLocations-parameter If sampleLocationsCount is not 0, pSampleLocations must( be a valid pointer to an array of sampleLocationsCount  structuresSee Also, u, , a, , C, , vulkanPVkSampleLocationEXT - 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)8VUID-VkRenderPassSampleLocationsBeginInfoEXT-sType-sType sType must be ,XVUID-VkRenderPassSampleLocationsBeginInfoEXT-pAttachmentInitialSampleLocations-parameter If %attachmentInitialSampleLocationsCount is not 0, !pAttachmentInitialSampleLocations must( be a valid pointer to an array of %attachmentInitialSampleLocationsCount valid  structuresRVUID-VkRenderPassSampleLocationsBeginInfoEXT-pPostSubpassSampleLocations-parameter If postSubpassSampleLocationsCount is not 0, pPostSubpassSampleLocations must( be a valid pointer to an array of postSubpassSampleLocationsCount valid  structuresSee Also, C, vulkancVkPipelineSampleLocationsStateCreateInfoEXT - Structure specifying sample locations for a pipelineValid Usage (Implicit)See Alsop, , CvulkanVkPhysicalDeviceSampleLocationsPropertiesEXT - 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 T 9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alsop, u, b, CvulkanVkMultisamplePropertiesEXT - Structure returning information about sample count specific additional multisampling capabilitiesValid Usage (Implicit)See Alsou, C, vulkanVkAttachmentSampleLocationsEXT - 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, vulkanmaxSampleLocationGridSizeB is the maximum size of the pixel grid in which sample locations can vary.vulkan!limits-sampleLocationSampleCounts sampleLocationSampleCounts is a bitmask of aB indicating the sample counts supporting custom sample locations.vulkan limits-maxSampleLocationGridSize maxSampleLocationGridSizeB is the maximum size of the pixel grid in which sample locations can2 vary that is supported for all sample counts in sampleLocationSampleCounts.vulkan$limits-sampleLocationCoordinateRange sampleLocationCoordinateRange;[2] is the range of supported sample location coordinates.vulkan!limits-sampleLocationSubPixelBits sampleLocationSubPixelBitsC is the number of bits of subpixel precision for sample locations.vulkanlimits-variableSampleLocations variableSampleLocationsx 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.vulkansampleLocationsEnable8 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.vulkansampleLocationsInfo9 is the sample locations to use during rasterization if sampleLocationsEnable is .1 and the graphics pipeline is not created with .NVUID-VkPipelineSampleLocationsStateCreateInfoEXT-sampleLocationsInfo-parameter sampleLocationsInfo must be a valid  structurevulkan!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.vulkanpPostSubpassSampleLocations 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.3VUID-VkSubpassSampleLocationsEXT-subpassIndex-01532  subpassIndex must be less than the  subpassCount specified in 6~ the render pass specified by }:: renderPass was created withvulkansampleLocationsInfo 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.>VUID-VkSubpassSampleLocationsEXT-sampleLocationsInfo-parameter sampleLocationsInfo must be a valid  structurevulkanattachmentIndexR is the index of the attachment for which the sample locations state is provided.9VUID-VkAttachmentSampleLocationsEXT-attachmentIndex-01531 attachmentIndex must be less than the attachmentCount specified in 6~ the render pass specified by }:: renderPass was created withvulkansampleLocationsInfo 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.AVUID-VkAttachmentSampleLocationsEXT-sampleLocationsInfo-parameter sampleLocationsInfo must be a valid  structurevulkansampleLocationsPerPixel is a a< value specifying the number of sample locations per pixel.vulkansampleLocationGridSizeP is the size of the sample location grid to select custom sample locations for.vulkanpSampleLocations is a pointer to an array of sampleLocationsCount  structures.vulkanx7 is the horizontal coordinate of the sample s location.vulkany5 is the vertical coordinate of the sample s location.vulkanCvkCmdSetSampleLocationsEXT - Set the dynamic sample locations state Valid Usage=VUID-vkCmdSetSampleLocationsEXT-sampleLocationsPerPixel-01529 The sampleLocationsPerPixel member of pSampleLocationsInfo must equal the rasterizationSamples member of the 7WA structure the bound graphics pipeline has been created with=VUID-vkCmdSetSampleLocationsEXT-variableSampleLocations-01530 If ::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)7VUID-vkCmdSetSampleLocationsEXT-commandBuffer-parameter  commandBuffer must be a valid  handle>VUID-vkCmdSetSampleLocationsEXT-pSampleLocationsInfo-parameter pSampleLocationsInfo must$ be a valid pointer to a valid  structure7VUID-vkCmdSetSampleLocationsEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state5VUID-vkCmdSetSampleLocationsEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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{vkGetPhysicalDeviceMultisamplePropertiesEXT - Report sample count specific multisampling capabilities of a physical deviceValid Usage (Implicit)See Also, , avulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanpSampleLocationsInfo& is the sample locations state to set.vulkanphysicalDeviceW is the physical device from which to query the additional multisampling capabilities.IVUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-physicalDevice-parameter physicalDevice must be a valid  handlevulkansamples3 is the sample count to query the capabilities for.BVUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-samples-parameter samples must be a valid a value))None("#%&'-./1789;=>?FHIMSUVX_dghklmq7gvulkanVkPipelineRasterizationLineStateCreateInfoEXT - Structure specifying parameters of a newly created pipeline line rasterization state Valid UsageNVUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-02768 If lineRasterizationMode is , then the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rectangularLinesrectangularLines feature must be enabledNVUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-02769 If lineRasterizationMode is , then the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bresenhamLinesbresenhamLines feature must be enabledNVUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-02770 If lineRasterizationMode is , then the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bresenhamLines smoothLines feature must be enabledKVUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02771 If 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 enabledKVUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02772 If 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 enabledKVUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02773 If 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 enabledKVUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02774 If 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  :: strictLines must be .Valid Usage (Implicit)>VUID-VkPipelineRasterizationLineStateCreateInfoEXT-sType-sType sType must be RVUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-parameter lineRasterizationMode must be a valid  valueSee Alsop, , CvulkanVkPhysicalDeviceLineRasterizationPropertiesEXT - 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 T 9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See AlsoCvulkanVkPhysicalDeviceLineRasterizationFeaturesEXT - 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  2 to enable the feature.Valid Usage (Implicit)See Alsop, Cvulkan5VkLineRasterizationModeEXT - 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.vulkan limits-lineSubPixelPrecisionBits lineSubPixelPrecisionBitsf 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.vulkanfeatures-rectangularLines rectangularLines1 indicates whether the implementation supports  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-linesrectangular line rasterization.vulkanfeatures-bresenhamLines bresenhamLines1 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.vulkanfeatures-smoothLines  smoothLines1 indicates whether the implementation supports  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-smoothsmooth line rasterization.vulkan!features-stippledRectangularLines stippledRectangularLines1 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  :: strictLines is ..vulkanfeatures-stippledBresenhamLines stippledBresenhamLines1 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.vulkanfeatures-stippledSmoothLines stippledSmoothLines1 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  :: 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 Usage3VUID-vkCmdSetLineStippleEXT-lineStippleFactor-02776 lineStippleFactor must be in the range [1,256]Valid Usage (Implicit)3VUID-vkCmdSetLineStippleEXT-commandBuffer-parameter  commandBuffer must be a valid  handle3VUID-vkCmdSetLineStippleEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state1VUID-vkCmdSetLineStippleEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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_dghklmq78vulkanVkPhysicalDeviceExternalMemoryHostPropertiesEXT - 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 T 9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alson, CvulkanNVkMemoryHostPointerPropertiesEXT - 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 AlsoC, 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 payload 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 payload into multiple instances of Vulkan and multiple times into a given Vulkan instance. However, implementations mayj fail to import the same payload 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 .Whether device memory objects imported from a host pointer hold a reference to their payload is undefined. As such, the application mustu ensure that the imported memory range remains valid and accessible for the lifetime of the imported memory object. Valid Usage6VUID-VkImportMemoryHostPointerInfoEXT-handleType-01747 If  handleType is not 0, it must3 be supported for import, as reported in P6VUID-VkImportMemoryHostPointerInfoEXT-handleType-01748 If  handleType is not 0, it must be   or  8VUID-VkImportMemoryHostPointerInfoEXT-pHostPointer-01749  pHostPointer must5 be a pointer aligned to an integer multiple of ::minImportedHostPointerAlignment6VUID-VkImportMemoryHostPointerInfoEXT-handleType-01750 If  handleType is  ,  pHostPointer must be a pointer to allocationSize, number of bytes of host memory, where allocationSize is the member of the 3, structure this structure is chained to6VUID-VkImportMemoryHostPointerInfoEXT-handleType-01751 If  handleType is  ,  pHostPointer must be a pointer to allocationSize; number of bytes of host mapped foreign memory, where allocationSize is the member of the 3, structure this structure is chained toValid Usage (Implicit)1VUID-VkImportMemoryHostPointerInfoEXT-sType-sType sType must be i:VUID-VkImportMemoryHostPointerInfoEXT-handleType-parameter  handleType must be a valid  valueSee Also, Cvulkan&limits-minImportedHostPointerAlignment minImportedHostPointerAlignment 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 Usage9VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01752  handleType must be   or  ;VUID-vkGetMemoryHostPointerPropertiesEXT-pHostPointer-01753  pHostPointer must5 be a pointer aligned to an integer multiple of ::minImportedHostPointerAlignment9VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01754 If  handleType is  ,  pHostPointer must be a pointer to host memory9VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01755 If  handleType is  ,  pHostPointer must+ be a pointer to host mapped foreign memoryValid Usage (Implicit)9VUID-vkGetMemoryHostPointerPropertiesEXT-device-parameter device must be a valid  handle=VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-parameter  handleType must be a valid  valueOVUID-vkGetMemoryHostPointerPropertiesEXT-pMemoryHostPointerProperties-parameter pMemoryHostPointerProperties must be a valid pointer to a  structure Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@"See 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_dghklmq8 vulkanVVkPipelineDiscardRectangleStateCreateInfoEXT - Structure specifying discard rectangle DescriptionIf the / dynamic state is enabled for a pipeline, the pDiscardRectangles member is ignored.'When this structure is included in the pNext chain of 7rb, 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", $, q, CvulkanVkPhysicalDeviceDiscardRectanglePropertiesEXT - 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 T 9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See AlsoC"vulkan>VkDiscardRectangleModeEXT - Specify the discard rectangle modeSee Also$vulkanGVkPipelineDiscardRectangleStateCreateFlagsEXT - 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.CVUID-VkPipelineDiscardRectangleStateCreateInfoEXT-flags-zerobitmask flags must be 0(vulkandiscardRectangleMode is a "Q value determining whether the discard rectangle test is inclusive or exclusive.PVUID-VkPipelineDiscardRectangleStateCreateInfoEXT-discardRectangleMode-parameter discardRectangleMode must be a valid " value)vulkanpDiscardRectangles is a pointer to an array of q) structures defining discard rectangles.+vulkanlimits-maxDiscardRectangles maxDiscardRectangles: is the maximum number of active discard rectangles that can be specified..vulkan.9 specifies that the discard rectangle test is exclusive./vulkan/9 specifies that the discard rectangle test is inclusive.0vulkan@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  set in 7L::pDynamicStates. Valid Usage<VUID-vkCmdSetDiscardRectangleEXT-firstDiscardRectangle-00585 The sum of firstDiscardRectangle and discardRectangleCount must$ be less than or equal to ::maxDiscardRectangles(VUID-vkCmdSetDiscardRectangleEXT-x-00587 The x and y member of offset in each q element of pDiscardRectangles must be greater than or equal to 0-VUID-vkCmdSetDiscardRectangleEXT-offset-00588 Evaluation of (offset.x +  extent.width) in each q element of pDiscardRectangles must2 not cause a signed integer addition overflow-VUID-vkCmdSetDiscardRectangleEXT-offset-00589 Evaluation of (offset.y +  extent.height) in each q element of pDiscardRectangles must2 not cause a signed integer addition overflowValid Usage (Implicit)8VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-parameter  commandBuffer must be a valid  handle=VUID-vkCmdSetDiscardRectangleEXT-pDiscardRectangles-parameter pDiscardRectangles must( be a valid pointer to an array of discardRectangleCount q structures8VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state6VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsBVUID-vkCmdSetDiscardRectangleEXT-discardRectangleCount-arraylength discardRectangleCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, q0vulkan 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 q+ structures specifying discard rectangles.&')(*+ !"/.#$%,-00*+&')($%"/.#/.!- ,None("#%&'-./1789;=>?FHIMSUVX_dghklmq8ijvulkanVkPhysicalDeviceConditionalRenderingFeaturesEXT - 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  2 to enable the features.Valid Usage (Implicit)See Alsop, Cvulkan[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 Usage4VUID-VkConditionalRenderingBeginInfoEXT-buffer-01981 If buffer is non-sparse then it must7 be bound completely and contiguously to a single / object4VUID-VkConditionalRenderingBeginInfoEXT-buffer-01982 buffer must! have been created with the  bit set4VUID-VkConditionalRenderingBeginInfoEXT-offset-01983 offset must be less than the size of buffer by at least 32 bits4VUID-VkConditionalRenderingBeginInfoEXT-offset-01984 offset must be a multiple of 4Valid Usage (Implicit)3VUID-VkConditionalRenderingBeginInfoEXT-sType-sType sType must be 3VUID-VkConditionalRenderingBeginInfoEXT-pNext-pNext pNext must be NULL8VUID-VkConditionalRenderingBeginInfoEXT-buffer-parameter buffer must be a valid  handle7VUID-VkConditionalRenderingBeginInfoEXT-flags-parameter flags must be a valid combination of K valuesSee Also, M, n, C, ZvulkanmVkCommandBufferInheritanceConditionalRenderingInfoEXT - Structure specifying command buffer inheritance info Description9If this structure is not present, the behavior is as if conditionalRenderingEnable is .. Valid Usage[VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-conditionalRenderingEnable-01977 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)FVUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-sType-sType sType must be See Alsop, CKvulkanRVkConditionalRenderingFlagBitsEXT - Specify the behavior of conditional renderingSee AlsoMOvulkanfeatures-conditionalRendering conditionalRendering7 specifies whether conditional rendering is supported.Pvulkan&features-inheritedConditionalRendering inheritedConditionalRendering/ specifies whether a secondary command buffer canR be executed while conditional rendering is active in the primary command buffer.RvulkanconditionalRenderingEnable& 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.Tvulkanbuffer@ is a buffer containing the predicate for conditional rendering.Uvulkanoffset is the byte offset into buffer! where the predicate is located.Vvulkanflags is a bitmask of M3 specifying the behavior of conditional rendering.YvulkanY 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.ZvulkanZvkCmdBeginConditionalRenderingEXT - Define the beginning of a conditional rendering block Valid Usage1VUID-vkCmdBeginConditionalRenderingEXT-None-01980 Conditional rendering must not already be jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-renderingactiveValid Usage (Implicit)>VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-parameter  commandBuffer must be a valid  handleKVUID-vkCmdBeginConditionalRenderingEXT-pConditionalRenderingBegin-parameter pConditionalRenderingBegin must$ be a valid pointer to a valid  structure>VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state<VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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 Z 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 Usage/VUID-vkCmdEndConditionalRenderingEXT-None-01985 Conditional rendering must be jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-renderingactive/VUID-vkCmdEndConditionalRenderingEXT-None-01986- 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/VUID-vkCmdEndConditionalRenderingEXT-None-01987- 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)<VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-parameter  commandBuffer must be a valid  handle<VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state:VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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 AlsoZvulkan 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.NOPSUVTQRIJKYLMWXZ[\Z[\SUVTQRNOPMKYLYJXIWNone("#%&'-./1789;=>?FHIMSUVX_dghklmq9! vulkan(VkTimeDomainEXT - Supported time domains DescriptionNoteAn implementation supporting VK_EXT_calibrated_timestamps, will use the same time domain for all its /( so that timestamp values reported for 4 can be matched to any timestamp captured through q or  . 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, vulkaniVkCalibratedTimestampInfoEXT - Structure specifying the input parameters of a calibrated timestamp queryValid Usage (Implicit)See AlsoC, , {vulkan timeDomain is a ` value specifying the time domain from which the calibrated timestamp value should be returned.2VUID-VkCalibratedTimestampInfoEXT-timeDomain-02354  timeDomain must be one of the  values returned by 6VUID-VkCalibratedTimestampInfoEXT-timeDomain-parameter  timeDomain must be a valid  value~vulkan~- 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:vulkan 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:vulkan 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:vulkan specifies the device time domain. Timestamp values in this time domain use the same units and are comparable with device timestamp values captured using q or 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.vulkanRvkGetPhysicalDeviceCalibrateableTimeDomainsEXT - 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, A will be returned instead of F> to indicate that not all the available values were returned.Valid Usage (Implicit)LVUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-physicalDevice-parameter physicalDevice must be a valid  handleNVUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-pTimeDomainCount-parameter pTimeDomainCount must be a valid pointer to a uint32_t valueJVUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-pTimeDomains-parameter! If 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-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, vulkan:vkGetCalibratedTimestampsEXT - Query calibrated timestamps DescriptionNoteThe maximum deviation may vary between calls to  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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, vulkanphysicalDeviceS is the physical device from which to query the set of calibrateable time domains.vulkandevice1 is the logical device used to perform the query.2VUID-vkGetCalibratedTimestampsEXT-device-parameter 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.;VUID-vkGetCalibratedTimestampsEXT-pTimestampInfos-parameter pTimestampInfos must$ be a valid pointer to an array of timestampCount valid  structures~yz{wx|}z{~y~x}w|None("#%&'-./1789;=>?FHIMSUVX_dghklmq9xvulkanHVkShaderInfoTypeAMD - Enum specifying which type of shader info to querySee Alsovulkan`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 , 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, dvulkanbVkShaderResourceUsageAMD - Resource usage information about a particular shader within a pipelineSee AlsovulkanshaderStageMaskL are the combination of logical shader stages contained within this shader.vulkan resourceUsage is a N structure describing internal physical device resources used by this shader.vulkannumPhysicalVgprsq is the maximum number of vector instruction general-purpose registers (VGPRs) available to the physical device.vulkannumPhysicalSgprsq is the maximum number of scalar instruction general-purpose registers (SGPRs) available to the physical device.vulkannumAvailableVgprsF is the maximum limit of VGPRs made available to the shader compiler.vulkannumAvailableSgprsF is the maximum limit of SGPRs made available to the shader compiler.vulkancomputeWorkGroupSizeG is the local workgroup size of this shader in { X, Y, Z } dimensions.vulkan numUsedVgprsT is the number of vector instruction general-purpose registers used by this shader.vulkan numUsedSgprsT is the number of scalar instruction general-purpose registers used by this shader.vulkanldsSizePerLocalWorkGroup? is the maximum local data store size per work group in bytes.vulkanldsUsageSizeInBytes? is the LDS usage size in bytes per work group by this shader.vulkanscratchMemUsageInBytes6 is the scratch memory usage in bytes by this shader.vulkan9 specifies that human-readable dissassembly of a shader.vulkanE specifies that implementation-specific information will be queried.vulkanC specifies that device resources used by a shader will be queried.vulkanAvkGetShaderInfoAMD - 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  will return A.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 9.LIf information is successfully and fully queried, the function will return F.For infoType , 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 , 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 J, are left to the vendor and are not further specified by this extension.Valid Usage (Implicit)(VUID-vkGetShaderInfoAMD-device-parameter device must be a valid  handle*VUID-vkGetShaderInfoAMD-pipeline-parameter pipeline must be a valid  handle-VUID-vkGetShaderInfoAMD-shaderStage-parameter  shaderStage must be a valid c value*VUID-vkGetShaderInfoAMD-infoType-parameter infoType must be a valid  value+VUID-vkGetShaderInfoAMD-pInfoSize-parameter  pInfoSize must be a valid pointer to a size_t value'VUID-vkGetShaderInfoAMD-pInfo-parameter! If the value referenced by  pInfoSize is not 0, and pInfo is not NULL, pInfo must( be a valid pointer to an array of  pInfoSize bytes'VUID-vkGetShaderInfoAMD-pipeline-parent pipeline 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-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure9@See Also, , , cvulkandevice 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.None("#%&'-./1789;=>?FHIMSUVX_dghklmq9vulkanVvkCmdWriteBufferMarkerAMD - 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 E, and the pipeline stages for identifying the synchronization scope must include both  pipelineStage and Y.Note Similar to qX, 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 Usage2VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04074  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 2VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04075 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 _2VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04076 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 a or `2VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04077 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 L2VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04078 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 R2VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04079 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 K2VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04080 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 Q or P2VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04081 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 O.VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01798  dstOffset must+ be less than or equal to the size of  dstBuffer minus 4.VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01799  dstBuffer must" have been created with  usage flag.VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01800 If  dstBuffer is non-sparse then it must7 be bound completely and contiguously to a single / object.VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01801  dstOffset must be a multiple of 4Valid Usage (Implicit)6VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-parameter  commandBuffer must be a valid  handle6VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-parameter  pipelineStage must be a valid X value2VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-parameter  dstBuffer must be a valid  handle6VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state4VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-cmdpool The / that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations+VUID-vkCmdWriteBufferMarkerAMD-commonparent Both 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 / 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, , n, 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_dghklmq:iCvulkandVkTimelineSemaphoreSubmitInfo - Structure specifying signal and wait values for timeline semaphores DescriptionIf the semaphore in ;::pWaitSemaphores or ;::pSignalSemaphores corresponding to an entry in pWaitSemaphoreValues or pSignalSemaphoreValues' respectively was not created with a  of , the implementation must ignore the value in the pWaitSemaphoreValues or pSignalSemaphoreValues entry.Valid Usage (Implicit).VUID-VkTimelineSemaphoreSubmitInfo-sType-sType sType must be AVUID-VkTimelineSemaphoreSubmitInfo-pWaitSemaphoreValues-parameter If waitSemaphoreValueCount is not 0, and pWaitSemaphoreValues is not NULL, pWaitSemaphoreValues must( be a valid pointer to an array of waitSemaphoreValueCount uint64_t valuesCVUID-VkTimelineSemaphoreSubmitInfo-pSignalSemaphoreValues-parameter If signalSemaphoreValueCount is not 0 , and pSignalSemaphoreValues is not NULL, pSignalSemaphoreValues must# be a valid pointer to an array of signalSemaphoreValueCount uint64_t valuesSee AlsoCDvulkanZVkSemaphoreWaitInfo - Structure containing information about the semaphore wait condition Valid Usage*VUID-VkSemaphoreWaitInfo-pSemaphores-03256 All of the elements of  pSemaphores must4 reference a semaphore that was created with a  of Valid Usage (Implicit)$VUID-VkSemaphoreWaitInfo-sType-sType sType must be $VUID-VkSemaphoreWaitInfo-pNext-pNext pNext must be NULL(VUID-VkSemaphoreWaitInfo-flags-parameter flags must% be a valid combination of   values.VUID-VkSemaphoreWaitInfo-pSemaphores-parameter  pSemaphores must# be a valid pointer to an array of semaphoreCount valid w handles*VUID-VkSemaphoreWaitInfo-pValues-parameter pValues must( be a valid pointer to an array of semaphoreCount uint64_t values3VUID-VkSemaphoreWaitInfo-semaphoreCount-arraylength semaphoreCount must be greater than 0See Alsow,  , C, , SEvulkanWVkSemaphoreTypeCreateInfo - Structure specifying the type of a newly created semaphoreValid Usage (Implicit)*VUID-VkSemaphoreTypeCreateInfo-sType-sType sType must be 6VUID-VkSemaphoreTypeCreateInfo-semaphoreType-parameter  semaphoreType must be a valid  value Valid Usage6VUID-VkSemaphoreTypeCreateInfo-timelineSemaphore-03252 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 2VUID-VkSemaphoreTypeCreateInfo-semaphoreType-03279 If  semaphoreType is ,  initialValue must be zeroIf no E structure is included in the pNext chain of <3, then the created semaphore will have a default  of .See Also, CFvulkan\VkSemaphoreSignalInfo - Structure containing information about a semaphore signal operationValid Usage (Implicit)See Alsow, C, , NGvulkanVkPhysicalDeviceTimelineSemaphoreProperties - Structure describing timeline semaphore properties that can be supported by an implementationMembersThe members of the GC structure describe the following implementation-dependent limits:Valid Usage (Implicit)See AlsoCHvulkanVkPhysicalDeviceTimelineSemaphoreFeatures - Structure describing timeline semaphore features that can be supported by an implementationMembersThe members of the H, structure describe the following features: DescriptionIf the H structure is included in the pNext chain of TK, it is filled with values indicating whether each feature is supported. H can also be included in the pNext chain of  2 to enable features.Valid Usage (Implicit)See Alsop, Cvulkan semaphore* is the handle of the semaphore to signal.*VUID-VkSemaphoreSignalInfo-semaphore-03257  semaphore must have been created with a  of .VUID-VkSemaphoreSignalInfo-semaphore-parameter  semaphore must be a valid w handlevulkanvalue is the value to signal.&VUID-VkSemaphoreSignalInfo-value-03258 value must> have a value greater than the current value of the semaphore&VUID-VkSemaphoreSignalInfo-value-03259 value mustC be less than the value of any pending semaphore signal operations&VUID-VkSemaphoreSignalInfo-value-03260 value 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 ;::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 ;::pSignalSemaphores to set when signaled.vulkan semaphoreType is a - value specifying the type of the semaphore.vulkan initialValue! is the initial payload value if  semaphoreType is .vulkan4extension-limits-maxTimelineSemaphoreValueDifference #maxTimelineSemaphoreValueDifference indicates the maximum difference allowed by the implementation between the current value of a timeline semaphore and any pending signal or wait operations.vulkan$extension-features-timelineSemaphore timelineSemaphore/ indicates whether semaphores created with a  of  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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?=See Also, w5Fvulkan'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 until the condition is satisfied or the timeout# has expired, whichever is sooner.If timeout is zero, then [ does not wait, but simply returns information about the current state of the semaphore. Dm will be returned in this case if the condition is not satisfied, even though no actual wait was performed.)If the condition is satisfied before the timeout has expired,  returns F. Otherwise,  returns D after the timeout has expired.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 F or =. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessFD  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?=See Also, Dvulkan 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, Fvulkandevice/ is the logical device that owns the semaphore.0VUID-vkGetSemaphoreCounterValue-device-parameter device must be a valid  handlevulkan semaphore) is the handle of the semaphore to query./VUID-vkGetSemaphoreCounterValue-semaphore-03255  semaphore must have been created with a  of 3VUID-vkGetSemaphoreCounterValue-semaphore-parameter  semaphore must be a valid w handle0VUID-vkGetSemaphoreCounterValue-semaphore-parent  semaphore must2 have been created, allocated, or retrieved from device5Fvulkandevice/ is the logical device that owns the semaphore.&VUID-vkWaitSemaphores-device-parameter device must be a valid  handlevulkan pWaitInfo is a pointer to a D< structure containing information about the wait condition.)VUID-vkWaitSemaphores-pWaitInfo-parameter  pWaitInfo must be a valid pointer to a valid D 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.&VUID-vkWaitSemaphores-device-parameter device must be a valid  handlevulkan pWaitInfo is a pointer to a D< structure containing information about the wait condition.)VUID-vkWaitSemaphores-pWaitInfo-parameter  pWaitInfo must be a valid pointer to a valid D 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.&VUID-vkWaitSemaphores-device-parameter device must be a valid  handlevulkan pWaitInfo is a pointer to a D< structure containing information about the wait condition.)VUID-vkWaitSemaphores-pWaitInfo-parameter  pWaitInfo must be a valid pointer to a valid D 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.'VUID-vkSignalSemaphore-device-parameter device must be a valid  handlevulkan pSignalInfo is a pointer to a F> structure containing information about the signal operation.,VUID-vkSignalSemaphore-pSignalInfo-parameter  pSignalInfo must be a valid pointer to a valid F structureCDEFGHCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE HGECDFCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE None("#%&'-./1789;=>?FHIMSUVX_dghklmq:/        gNone("#%&'-./1789;=>?FHIMSUVX_dghklmq; 8vulkandVkRenderPassAttachmentBeginInfo - Structure specifying images to be used as framebuffer attachments Valid Usage7VUID-VkRenderPassAttachmentBeginInfo-pAttachments-03218 Each element of  pAttachments must only specify a single mip level7VUID-VkRenderPassAttachmentBeginInfo-pAttachments-03219 Each element of  pAttachments must1 have been created with the identity swizzle7VUID-VkRenderPassAttachmentBeginInfo-pAttachments-04114 Each element of  pAttachments must have been created with 1::viewType not equal to t~Valid Usage (Implicit)0VUID-VkRenderPassAttachmentBeginInfo-sType-sType sType must be ;VUID-VkRenderPassAttachmentBeginInfo-pAttachments-parameter If attachmentCount is not 0,  pAttachments must( be a valid pointer to an array of attachmentCount valid  handlesSee Also, C9vulkangVkPhysicalDeviceImagelessFramebufferFeatures - Structure indicating support for imageless framebuffersMembersThe members of the 9, structure describe the following features: DescriptionIf the 9 structure is included in the pNext chain of TJ, it is filled with values indicating whether the feature is supported. 9 can also be included in the pNext chain of  2 to enable this feature.Valid Usage (Implicit)See Alsop, C:vulkantVkFramebufferAttachmentsCreateInfo - Structure specifying parameters of images that will be used with a framebufferValid Usage (Implicit)3VUID-VkFramebufferAttachmentsCreateInfo-sType-sType sType must be GVUID-VkFramebufferAttachmentsCreateInfo-pAttachmentImageInfos-parameter If attachmentImageInfoCount is not 0, pAttachmentImageInfos must# be a valid pointer to an array of attachmentImageInfoCount valid ; structuresSee Also;, C;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 8, mustH be created with parameters that are identical to those specified here.Valid Usage (Implicit)1VUID-VkFramebufferAttachmentImageInfo-sType-sType sType must be 1VUID-VkFramebufferAttachmentImageInfo-pNext-pNext pNext must be NULL5VUID-VkFramebufferAttachmentImageInfo-flags-parameter flags must be a valid combination of  values5VUID-VkFramebufferAttachmentImageInfo-usage-parameter usage must be a valid combination of  values;VUID-VkFramebufferAttachmentImageInfo-usage-requiredbitmask usage must not be 0<VUID-VkFramebufferAttachmentImageInfo-pViewFormats-parameter If viewFormatCount is not 0,  pViewFormats must( be a valid pointer to an array of viewFormatCount valid K valuesSee AlsoK, :, N, S, Cvulkan 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 , matching the value of 0::flagsB used to create an image that will be used with this framebuffer.vulkanusage is a bitmask of , 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 f}C::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.vulkan'extension-features-imagelessFramebuffer imagelessFramebufferw indicates that the implementation supports specifying the image view for attachments at render pass begin time via 8.8 9:;CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE9:;8 CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFENone("#%&'-./1789;=>?FHIMSUVX_dghklmq; ,-./012345678 8765410/.-3,2None("#%&'-./1789;=>?FHIMSUVX_dghklmq=b9vulkan\vkCmdDrawIndirectCount - Perform an indirect draw with the draw count sourced from a buffer Description9 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 Usage+VUID-vkCmdDrawIndirectCount-magFilter-04553 If a / created with  magFilter or  minFilter equal to  and  compareEnable equal to . is used to sample a /> 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 {'>,VUID-vkCmdDrawIndirectCount-mipmapMode-04770 If a / created with  mipmapMode equal to 8 and  compareEnable equal to . is used to sample a /> 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 {'&VUID-vkCmdDrawIndirectCount-None-02691 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 {x&VUID-vkCmdDrawIndirectCount-None-02692 If 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 -VUID-vkCmdDrawIndirectCount-filterCubic-02694 Any / being sampled with " as a result of this command must have a tyE and format that supports cubic filtering, as specified by f:: filterCubic returned by T3VUID-vkCmdDrawIndirectCount-filterCubicMinmax-02695 Any / being sampled with + with a reduction mode of either +z or +{" as a result of this command must have a tyi and format that supports cubic filtering together with minmax filtering, as specified by f::filterCubicMinmax returned by T'VUID-vkCmdDrawIndirectCount-flags-02696 Any /  created with a 0::flags containing * sampled as a result of this command must only be sampled using a 9| of 9}&VUID-vkCmdDrawIndirectCount-None-02697 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 n. at the same pipeline bind point, with a /F! that is compatible for set n , with the /F! used to create the current /, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???&VUID-vkCmdDrawIndirectCount-None-02698< For each push constant that is statically used by the /X bound to the pipeline bind point used by this command, a push constant value must= have been set for the same pipeline bind point, with a /F6 that is compatible for push constants, with the /F! used to create the current /, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???&VUID-vkCmdDrawIndirectCount-None-02699C 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 command&VUID-vkCmdDrawIndirectCount-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command/VUID-vkCmdDrawIndirectCount-commandBuffer-02701 If 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 dynamic&VUID-vkCmdDrawIndirectCount-None-02859 There musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the /f object bound to the pipeline bind point used by this command, since that pipeline was bound&VUID-vkCmdDrawIndirectCount-None-02702 If the /S object bound to the pipeline bind point used by this command accesses a /> object that uses unnormalized coordinates, that sampler must% not be used to sample from any /  with a / of the type t~, t, t, t or t, in any shader stage&VUID-vkCmdDrawIndirectCount-None-02703 If the /S object bound to the pipeline bind point used by this command accesses 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 stage&VUID-vkCmdDrawIndirectCount-None-02704 If the /S object bound to the pipeline bind point used by this command accesses 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&VUID-vkCmdDrawIndirectCount-None-02705 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&VUID-vkCmdDrawIndirectCount-None-02706 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 point/VUID-vkCmdDrawIndirectCount-commandBuffer-02707 If  commandBufferJ 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 resource&VUID-vkCmdDrawIndirectCount-None-04115 If 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..VUID-vkCmdDrawIndirectCount-OpImageWrite-04469 If a / is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction mustC have at least as many components as the buffer view s format.-VUID-vkCmdDrawIndirectCount-SampledType-04470 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.-VUID-vkCmdDrawIndirectCount-SampledType-04471 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.-VUID-vkCmdDrawIndirectCount-SampledType-04472 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.-VUID-vkCmdDrawIndirectCount-SampledType-04473 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.9VUID-vkCmdDrawIndirectCount-sparseImageInt64Atomics-04474 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, / $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.9VUID-vkCmdDrawIndirectCount-sparseImageInt64Atomics-04475 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.,VUID-vkCmdDrawIndirectCount-renderPass-02684 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 7r, structure specified when creating the / bound to )VUID-vkCmdDrawIndirectCount-subpass-026853 The subpass index of the current render pass must be equal to the subpass member of the 7r, structure specified when creating the / bound to &VUID-vkCmdDrawIndirectCount-None-026869 Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor set&VUID-vkCmdDrawIndirectCount-None-04584H Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass chapter;VUID-vkCmdDrawIndirectCount-maxMultiviewInstanceIndex-02688p If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to W::maxMultiviewInstanceIndex7VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-02689; If 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/VUID-vkCmdDrawIndirectCount-viewportCount-03417E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the ' dynamic state enabled, then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the 7h:: scissorCount of the pipeline.VUID-vkCmdDrawIndirectCount-scissorCount-03418E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the ' dynamic state enabled, then  mustY have been called in the current command buffer prior to this draw command, and the  scissorCount parameter of  must match the 7h:: viewportCount of the pipeline/VUID-vkCmdDrawIndirectCount-viewportCount-03419J If the bound graphics pipeline state was created with both the  and , 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 /VUID-vkCmdDrawIndirectCount-viewportCount-04137E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the > dynamic state enabled, then the bound graphics pipeline must" have been created with j:: viewportCount greater or equal to the  viewportCount) parameter in the last call to /VUID-vkCmdDrawIndirectCount-viewportCount-04138E If the bound graphics pipeline state was created with the  and & dynamic states enabled then the  viewportCount) parameter in the last call to  must! be greater than or equal to the  viewportCount) parameter in the last call to /VUID-vkCmdDrawIndirectCount-viewportCount-04139E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the > dynamic state enabled, then the bound graphics pipeline must" have been created with g:: viewportCount greater or equal to the  viewportCount) parameter in the last call to /VUID-vkCmdDrawIndirectCount-viewportCount-04140E If the bound graphics pipeline state was created with the  and & dynamic states enabled then the  viewportCount) parameter in the last call to  must! be greater than or equal to the  viewportCount) parameter in the last call to =VUID-vkCmdDrawIndirectCount-VkPipelineVieportCreateInfo-04141E If the bound graphics pipeline state was created with the 4 dynamic state enabled and an instance of i chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with i:: viewportCount greater or equal to the  viewportCount) parameter in the last call to =VUID-vkCmdDrawIndirectCount-VkPipelineVieportCreateInfo-04142E If the bound graphics pipeline state was created with the 4 dynamic state enabled and an instance of f chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with f::exclusiveScissorCount greater or equal to the  viewportCount) parameter in the last call to 3VUID-vkCmdDrawIndirectCount-primitiveTopology-03420E If the bound graphics pipeline state was created with the & dynamic state enabled then o mustY have been called in the current command buffer prior to this draw command, and the primitiveTopology parameter of o 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 7T::topology stateSVUID-vkCmdDrawIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-04552 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewportsY limit is not supported, the bound graphics pipeline was created with the k dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR built-in, then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must be 1-VUID-vkCmdDrawIndirectCount-blendEnable-04727 If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features do not contain {, then the  blendEnable1 member of the corresponding element of the  pAttachments member of pColorBlendState must be .6VUID-vkCmdDrawIndirectCount-rasterizationSamples-04740] If rasterization is not disabled in the bound graphics pipeline, and neither the @ nor the # extensions are enabled, then 7W::rasterizationSamples@ mustO be the same as the current subpass color and/or depth/stencil attachments&VUID-vkCmdDrawIndirectCount-None-04007 All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must have either valid or 8 buffers bound&VUID-vkCmdDrawIndirectCount-None-04008 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 8&VUID-vkCmdDrawIndirectCount-None-02721D For a given vertex buffer binding, any attribute data fetched musta 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???(VUID-vkCmdDrawIndirectCount-buffer-02708 If buffer is non-sparse then it must7 be bound completely and contiguously to a single / object(VUID-vkCmdDrawIndirectCount-buffer-02709 buffer must& have been created with the  bit set(VUID-vkCmdDrawIndirectCount-offset-02710 offset must be a multiple of 4/VUID-vkCmdDrawIndirectCount-commandBuffer-02711  commandBuffer must" not be a protected command buffer-VUID-vkCmdDrawIndirectCount-countBuffer-02714 If  countBuffer is non-sparse then it must7 be bound completely and contiguously to a single / object-VUID-vkCmdDrawIndirectCount-countBuffer-02715  countBuffer must& have been created with the  bit set3VUID-vkCmdDrawIndirectCount-countBufferOffset-02716 countBufferOffset must be a multiple of 4-VUID-vkCmdDrawIndirectCount-countBuffer-02717 The count stored in  countBuffer must be less than or equal to  ::maxDrawIndirectCount3VUID-vkCmdDrawIndirectCount-countBufferOffset-04129 (countBufferOffset + sizeof (uint32_t)) must+ be less than or equal to the size of  countBuffer&VUID-vkCmdDrawIndirectCount-None-04445 If  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectCountdrawIndirectCount# is not enabled this function must not be used(VUID-vkCmdDrawIndirectCount-stride-03110 stride must be a multiple of 4 and must) be greater than or equal to sizeof(5).VUID-vkCmdDrawIndirectCount-maxDrawCount-03111 If  maxDrawCount" is greater than or equal to 1, (stride ( maxDrawCount - 1) + offset + sizeof(5)) must& be less than or equal to the size of buffer-VUID-vkCmdDrawIndirectCount-countBuffer-03121 If the count stored in  countBuffer is equal to 1, (offset + sizeof(5)) must+ be less than or equal to the size of buffer-VUID-vkCmdDrawIndirectCount-countBuffer-03122 If the count stored in  countBuffer is greater than 1, (stride ( drawCount - 1) + offset + sizeof(5)) must& be less than or equal to the size of bufferValid Usage (Implicit)3VUID-vkCmdDrawIndirectCount-commandBuffer-parameter  commandBuffer must be a valid  handle,VUID-vkCmdDrawIndirectCount-buffer-parameter buffer must be a valid  handle1VUID-vkCmdDrawIndirectCount-countBuffer-parameter  countBuffer must be a valid  handle3VUID-vkCmdDrawIndirectCount-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state1VUID-vkCmdDrawIndirectCount-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations&VUID-vkCmdDrawIndirectCount-renderpass This command must5 only be called inside of a render pass instance(VUID-vkCmdDrawIndirectCount-commonparent Each of buffer,  commandBuffer, and  countBuffer must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, , n:vulkankvkCmdDrawIndexedIndirectCount - 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 Usage2VUID-vkCmdDrawIndexedIndirectCount-magFilter-04553 If a / created with  magFilter or  minFilter equal to  and  compareEnable equal to . is used to sample a /> 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 {'>3VUID-vkCmdDrawIndexedIndirectCount-mipmapMode-04770 If a / created with  mipmapMode equal to 8 and  compareEnable equal to . is used to sample a /> 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 {'-VUID-vkCmdDrawIndexedIndirectCount-None-02691 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 {x-VUID-vkCmdDrawIndexedIndirectCount-None-02692 If 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 4VUID-vkCmdDrawIndexedIndirectCount-filterCubic-02694 Any / being sampled with " as a result of this command must have a tyE and format that supports cubic filtering, as specified by f:: filterCubic returned by T:VUID-vkCmdDrawIndexedIndirectCount-filterCubicMinmax-02695 Any / being sampled with + with a reduction mode of either +z or +{" as a result of this command must have a tyi and format that supports cubic filtering together with minmax filtering, as specified by f::filterCubicMinmax returned by T.VUID-vkCmdDrawIndexedIndirectCount-flags-02696 Any /  created with a 0::flags containing * sampled as a result of this command must only be sampled using a 9| of 9}-VUID-vkCmdDrawIndexedIndirectCount-None-02697 For each set n% that is statically used by the /S bound to the pipeline bind point used by this command, a descriptor set must have been bound to n. at the same pipeline bind point, with a /F! that is compatible for set n , with the /F! used to create the current /, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???-VUID-vkCmdDrawIndexedIndirectCount-None-02698A 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 /F6 that is compatible for push constants, with the /F! used to create the current /, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???-VUID-vkCmdDrawIndexedIndirectCount-None-02699C 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 command-VUID-vkCmdDrawIndexedIndirectCount-None-02700 A valid pipeline must9 be bound to the pipeline bind point used by this command6VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02701 If 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 dynamic-VUID-vkCmdDrawIndexedIndirectCount-None-02859 There musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the /f object bound to the pipeline bind point used by this command, since that pipeline was bound-VUID-vkCmdDrawIndexedIndirectCount-None-02702 If the /S object bound to the pipeline bind point used by this command accesses a /> object that uses unnormalized coordinates, that sampler must% not be used to sample from any /  with a / of the type t~, t, t, t or t, in any shader stage-VUID-vkCmdDrawIndexedIndirectCount-None-02703 If the /S object bound to the pipeline bind point used by this command accesses 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 stage-VUID-vkCmdDrawIndexedIndirectCount-None-02704 If the /S object bound to the pipeline bind point used by this command accesses 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-VUID-vkCmdDrawIndexedIndirectCount-None-02705 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-VUID-vkCmdDrawIndexedIndirectCount-None-02706 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 point6VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02707 If  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 resource-VUID-vkCmdDrawIndexedIndirectCount-None-04115 If 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.5VUID-vkCmdDrawIndexedIndirectCount-OpImageWrite-04469 If a / is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction mustC have at least as many components as the buffer view s format.4VUID-vkCmdDrawIndexedIndirectCount-SampledType-04470 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.4VUID-vkCmdDrawIndexedIndirectCount-SampledType-04471 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.4VUID-vkCmdDrawIndexedIndirectCount-SampledType-04472 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.4VUID-vkCmdDrawIndexedIndirectCount-SampledType-04473 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.@VUID-vkCmdDrawIndexedIndirectCount-sparseImageInt64Atomics-04474 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, / $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.@VUID-vkCmdDrawIndexedIndirectCount-sparseImageInt64Atomics-04475 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.3VUID-vkCmdDrawIndexedIndirectCount-renderPass-02684 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 7r, structure specified when creating the / bound to 0VUID-vkCmdDrawIndexedIndirectCount-subpass-026853 The subpass index of the current render pass must be equal to the subpass member of the 7r, structure specified when creating the / bound to -VUID-vkCmdDrawIndexedIndirectCount-None-026869 Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor set-VUID-vkCmdDrawIndexedIndirectCount-None-04584H Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass chapterBVUID-vkCmdDrawIndexedIndirectCount-maxMultiviewInstanceIndex-02688p If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to W::maxMultiviewInstanceIndex>VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-02689; If 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 set6VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03417E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the ' dynamic state enabled, then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the 7h:: scissorCount of the pipeline5VUID-vkCmdDrawIndexedIndirectCount-scissorCount-03418E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the ' dynamic state enabled, then  mustY have been called in the current command buffer prior to this draw command, and the  scissorCount parameter of  must match the 7h:: viewportCount of the pipeline6VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03419J If the bound graphics pipeline state was created with both the  and , 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 6VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04137E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the > dynamic state enabled, then the bound graphics pipeline must" have been created with j:: viewportCount greater or equal to the  viewportCount) parameter in the last call to 6VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04138E If the bound graphics pipeline state was created with the  and & dynamic states enabled then the  viewportCount) parameter in the last call to  must! be greater than or equal to the  viewportCount) parameter in the last call to 6VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04139E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the > dynamic state enabled, then the bound graphics pipeline must" have been created with g:: viewportCount greater or equal to the  viewportCount) parameter in the last call to 6VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04140E If the bound graphics pipeline state was created with the  and & dynamic states enabled then the  viewportCount) parameter in the last call to  must! be greater than or equal to the  viewportCount) parameter in the last call to DVUID-vkCmdDrawIndexedIndirectCount-VkPipelineVieportCreateInfo-04141E If the bound graphics pipeline state was created with the 4 dynamic state enabled and an instance of i chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with i:: viewportCount greater or equal to the  viewportCount) parameter in the last call to DVUID-vkCmdDrawIndexedIndirectCount-VkPipelineVieportCreateInfo-04142E If the bound graphics pipeline state was created with the 4 dynamic state enabled and an instance of f chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with f::exclusiveScissorCount greater or equal to the  viewportCount) parameter in the last call to :VUID-vkCmdDrawIndexedIndirectCount-primitiveTopology-03420E If the bound graphics pipeline state was created with the & dynamic state enabled then o mustY have been called in the current command buffer prior to this draw command, and the primitiveTopology parameter of o 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 7T::topology stateZVUID-vkCmdDrawIndexedIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-04552 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewportsY limit is not supported, the bound graphics pipeline was created with the k dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR built-in, then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must be 14VUID-vkCmdDrawIndexedIndirectCount-blendEnable-04727 If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features do not contain {, then the  blendEnable1 member of the corresponding element of the  pAttachments member of pColorBlendState must be .=VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-04740] If rasterization is not disabled in the bound graphics pipeline, and neither the @ nor the # extensions are enabled, then 7W::rasterizationSamples@ mustO be the same as the current subpass color and/or depth/stencil attachments-VUID-vkCmdDrawIndexedIndirectCount-None-04007 All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must have either valid or 8 buffers bound-VUID-vkCmdDrawIndexedIndirectCount-None-04008 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 8-VUID-vkCmdDrawIndexedIndirectCount-None-02721D 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???/VUID-vkCmdDrawIndexedIndirectCount-buffer-02708 If buffer is non-sparse then it must7 be bound completely and contiguously to a single / object/VUID-vkCmdDrawIndexedIndirectCount-buffer-02709 buffer must& have been created with the  bit set/VUID-vkCmdDrawIndexedIndirectCount-offset-02710 offset must be a multiple of 46VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02711  commandBuffer must" not be a protected command buffer4VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02714 If  countBuffer is non-sparse then it must7 be bound completely and contiguously to a single / object4VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02715  countBuffer must! have been created with the  bit set:VUID-vkCmdDrawIndexedIndirectCount-countBufferOffset-02716 countBufferOffset must be a multiple of 44VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02717 The count stored in  countBuffer must be less than or equal to  ::maxDrawIndirectCount:VUID-vkCmdDrawIndexedIndirectCount-countBufferOffset-04129 (countBufferOffset + sizeof (uint32_t)) must+ be less than or equal to the size of  countBuffer-VUID-vkCmdDrawIndexedIndirectCount-None-04445 If  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectCountdrawIndirectCount# is not enabled this function must not be used/VUID-vkCmdDrawIndexedIndirectCount-stride-03142 stride must be a multiple of 4 and must) be greater than or equal to sizeof(5)5VUID-vkCmdDrawIndexedIndirectCount-maxDrawCount-03143 If  maxDrawCount is greater than or equal to 1, (stride ( maxDrawCount - 1) + offset + sizeof(5)) must& be less than or equal to the size of buffer4VUID-vkCmdDrawIndexedIndirectCount-countBuffer-03153 If count stored in  countBuffer is equal to 1, (offset + sizeof(5)) must& be less than or equal to the size of buffer4VUID-vkCmdDrawIndexedIndirectCount-countBuffer-03154 If count stored in  countBuffer is greater than 1, (stride ( drawCount - 1) + offset + sizeof(5)) must& be less than or equal to the size of bufferValid Usage (Implicit):VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-parameter  commandBuffer must be a valid  handle3VUID-vkCmdDrawIndexedIndirectCount-buffer-parameter buffer must be a valid  handle8VUID-vkCmdDrawIndexedIndirectCount-countBuffer-parameter  countBuffer must be a valid  handle:VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state8VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations-VUID-vkCmdDrawIndexedIndirectCount-renderpass This command must5 only be called inside of a render pass instance/VUID-vkCmdDrawIndexedIndirectCount-commonparent Each of buffer,  commandBuffer, and  countBuffer must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, , n9vulkan 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.9:9:None("#%&'-./1789;=>?FHIMSUVX_dghklmq=;<=>?@?@<>;=None("#%&'-./1789;=>?FHIMSUVX_dghklmq=ABCDEFEFBDACbNone("#%&'-./1789;=>?FHIMSUVX_dghklmq>'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 T 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  2 to enable features.Valid Usage (Implicit)See Alsop, C(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 UI 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 UY 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 AlsoC)vulkanhVkDeviceMemoryOpaqueCaptureAddressInfo - Structure specifying the memory object to query an address forValid Usage (Implicit)See Also, C, U, '*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 S? 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 A, 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 AlsoC+vulkanTVkBufferDeviceAddressInfo - Structure specifying the buffer to query an address for Valid Usage+VUID-VkBufferDeviceAddressInfo-buffer-02600 If buffer6 is non-sparse and was not created with the ] flag, then it must7 be bound completely and contiguously to a single  object+VUID-VkBufferDeviceAddressInfo-buffer-02601 buffer must" have been created with AValid Usage (Implicit)*VUID-VkBufferDeviceAddressInfo-sType-sType sType must be *VUID-VkBufferDeviceAddressInfo-pNext-pNext pNext must be NULL/VUID-VkBufferDeviceAddressInfo-buffer-parameter buffer must be a valid  handleSee Also, C, T, , , S, Hvulkanmemory5 specifies the memory whose address is being queried.8VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-memory-03336 memory must have been allocated with  U<VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-memory-parameter memory must be a valid  handleJvulkanopaqueCaptureAddressD is the opaque capture address requested for the memory allocation.LvulkanopaqueCaptureAddress9 is the opaque capture address requested for the buffer.Nvulkanbuffer5 specifies the buffer whose address is being queried.Pvulkan&extension-features-bufferDeviceAddress bufferDeviceAddress indicates that the implementation supports accessing buffer memory in shaders as storage buffers via an address queried from T.Qvulkan3extension-features-bufferDeviceAddressCaptureReplay  bufferDeviceAddressCaptureReplay indicates that the implementation supports saving and reusing buffer and device addresses, e.g. for trace capture and replay.Rvulkan1extension-features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice1 indicates that the implementation supports the bufferDeviceAddress , rayTracingPipeline and rayQuery 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.SvulkanNvkGetBufferOpaqueCaptureAddress - 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/VUID-vkGetBufferOpaqueCaptureAddress-None-03326 The  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressbufferDeviceAddress feature must be enabled1VUID-vkGetBufferOpaqueCaptureAddress-device-03327 If 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)5VUID-vkGetBufferOpaqueCaptureAddress-device-parameter device must be a valid  handle4VUID-vkGetBufferOpaqueCaptureAddress-pInfo-parameter pInfo must be a valid pointer to a valid + structureSee Also+, Tvulkan7vkGetBufferDeviceAddress - 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 Usage7VUID-vkGetBufferDeviceAddress-bufferDeviceAddress-03324 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 enabled*VUID-vkGetBufferDeviceAddress-device-03325 If 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).VUID-vkGetBufferDeviceAddress-device-parameter device must be a valid  handle-VUID-vkGetBufferDeviceAddress-pInfo-parameter pInfo must$ be a valid pointer to a valid + structureSee Also+, Uvulkan[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 Usage5VUID-vkGetDeviceMemoryOpaqueCaptureAddress-None-03334 The  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressbufferDeviceAddress feature must be enabled7VUID-vkGetDeviceMemoryOpaqueCaptureAddress-device-03335 If 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);VUID-vkGetDeviceMemoryOpaqueCaptureAddress-device-parameter device must be a valid  handle:VUID-vkGetDeviceMemoryOpaqueCaptureAddress-pInfo-parameter pInfo must$ be a valid pointer to a valid ) structureSee Also, )Svulkandevice6 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.Tvulkandevice6 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.Uvulkandevice? 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.J` FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!'OPQR(IJ)GH*KL+MNCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE R S W V U T>?PONMLKJIHGFEDCBA@YZ`_^]\[STUsSTU'OPQR+MN*KL(IJ)GHCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE` FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!>?PONMLKJIHGFEDCBAPONMLKJIHGFEDCBA@YZ`_^]\`_^]\[ R S W V U W V U TNone("#%&'-./1789;=>?FHIMSUVX_dghklmq>htuvwxyz{|}~~}zyxwvu|t{None("#%&'-./1789;=>?FHIMSUVX_dghklmq>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  2 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 Alsop, CvulkanMVkBufferDeviceAddressCreateInfoEXT - 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 / 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  errors.Valid Usage (Implicit)See Alsoo, Cvulkan deviceAddress0 is the device address requested for the buffer.vulkanfeatures-bufferDeviceAddressEXT bufferDeviceAddress indicates that the implementation supports accessing buffer memory in shaders as storage buffers via an address queried from .vulkan,features-bufferDeviceAddressCaptureReplayEXT  bufferDeviceAddressCaptureReplayu indicates that the implementation supports saving and reusing buffer addresses, e.g. for trace capture and replay.vulkan*features-bufferDeviceAddressMultiDeviceEXT bufferDeviceAddressMultiDevice1 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.]None("#%&'-./1789;=>?FHIMSUVX_dghklmq?x!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  2 to enable features.Valid Usage (Implicit)See Alsop, Cvulkan!extension-features-hostQueryReset hostQueryResetS 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 VUID-vkResetQueryPool-None-02665 The  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-hostQueryResethostQueryReset feature must be enabled&VUID-vkResetQueryPool-firstQuery-02666  firstQuery must, be less than the number of queries in  queryPool&VUID-vkResetQueryPool-firstQuery-02667 The sum of  firstQuery and  queryCount must8 be less than or equal to the number of queries in  queryPool&VUID-vkResetQueryPool-firstQuery-02741> Submitted commands that refer to the range specified by  firstQuery and  queryCount in  queryPool must have completed execution&VUID-vkResetQueryPool-firstQuery-02742( 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)&VUID-vkResetQueryPool-device-parameter device must be a valid  handle)VUID-vkResetQueryPool-queryPool-parameter  queryPool must be a valid | handle&VUID-vkResetQueryPool-queryPool-parent  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.!CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE!CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFENone("#%&'-./1789;=>?FHIMSUVX_dghklmq?*None("#%&'-./1789;=>?FHIMSUVX_dghklmq?HUvulkan'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  I, 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)'VUID-vkTrimCommandPool-device-parameter device must be a valid  handle,VUID-vkTrimCommandPool-commandPool-parameter  commandPool must be a valid  handle(VUID-vkTrimCommandPool-flags-zerobitmask flags must be 0)VUID-vkTrimCommandPool-commandPool-parent  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.[Mt~}|{zyxwvuN` FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!        ` FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!Mt~}|{zyxwvu~}|{zyxwvuN            None("#%&'-./1789;=>?FHIMSUVX_dghklmq?M  PNone("#%&'-./1789;=>?FHIMSUVX_dghklmq?vulkanWVkPhysicalDeviceIDProperties - Structure specifying IDs related to the physical device Description deviceUUID is an array of 9 uint8_tI values representing a universally unique identifier for the device. driverUUID is an array of 9 uint8_td values representing a universally unique identifier for the driver build in use by the device. deviceLUID is an array of 8 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 implementors 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)-VUID-VkPhysicalDeviceIDProperties-sType-sType sType must be ySee Alsop, CvulkanbVkPhysicalDeviceExternalImageFormatInfo - Structure specifying external image creation parameters DescriptionIf  handleType is 0, T 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 T returns $.Valid Usage (Implicit)8VUID-VkPhysicalDeviceExternalImageFormatInfo-sType-sType sType must be uAVUID-VkPhysicalDeviceExternalImageFormatInfo-handleType-parameter If  handleType is not 0,  handleType must be a valid  valueSee Also, CvulkanUVkPhysicalDeviceExternalBufferInfo - Structure specifying buffer creation parametersValid Usage (Implicit)See Also[, @, , C, , vulkan[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 T~ 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, CvulkanYVkExternalBufferProperties - Structure specifying supported external handle capabilitiesValid Usage (Implicit)See Also, C, , vulkanexternalMemoryProperties is a  structure specifying various capabilities of the external handle type when used with the specified buffer creation parameters.vulkanflags is a bitmask of D describing additional parameters of the buffer, corresponding to ::flags.7VUID-VkPhysicalDeviceExternalBufferInfo-flags-parameter flags must be a valid combination of  valuesvulkanusage is a bitmask of A describing the intended usage of the buffer, corresponding to ::usage.7VUID-VkPhysicalDeviceExternalBufferInfo-usage-parameter usage must be a valid combination of  values=VUID-VkPhysicalDeviceExternalBufferInfo-usage-requiredbitmask usage 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.<VUID-VkPhysicalDeviceExternalBufferInfo-handleType-parameter  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.IVUID-vkGetPhysicalDeviceExternalBufferProperties-physicalDevice-parameter physicalDevice must be a valid  handlevulkanpExternalBufferInfo is a pointer to a @ structure describing the parameters that would be consumed by B.NVUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferInfo-parameter pExternalBufferInfo must be a valid pointer to a valid  structure CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE 8RCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE 8RNone("#%&'-./1789;=>?FHIMSUVX_dghklmq?E          NNone("#%&'-./1789;=>?FHIMSUVX_dghklmq@vulkanTVkPhysicalDeviceExternalFenceInfo - 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 , C, , vulkanZVkExternalFenceProperties - 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 ,  , C, , vulkanexportFromImportedHandleTypes 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.;VUID-VkPhysicalDeviceExternalFenceInfo-handleType-parameter  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.HVUID-vkGetPhysicalDeviceExternalFenceProperties-physicalDevice-parameter physicalDevice must be a valid  handlevulkanpExternalFenceInfo is a pointer to a A structure describing the parameters that would be consumed by ,S.LVUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceInfo-parameter pExternalFenceInfo must be a valid pointer to a valid  structureCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE None("#%&'-./1789;=>?FHIMSUVX_dghklmq@0F+,-./0123456789:;<=<;:98765=210/.-,4+3LNone("#%&'-./1789;=>?FHIMSUVX_dghklmq@zvulkanXVkPhysicalDeviceGroupProperties - Structure specifying physical device group propertiesValid Usage (Implicit)See Alsop, /, C, D, 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 Usage9VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00375 Each element of pPhysicalDevices must be unique9VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00376 All elements of pPhysicalDevices must3 be in the same device group as enumerated by D<VUID-VkDeviceGroupDeviceCreateInfo-physicalDeviceCount-00377 If physicalDeviceCount is not 0, the physicalDevice parameter of  $ must be an element of pPhysicalDevicesValid Usage (Implicit).VUID-VkDeviceGroupDeviceCreateInfo-sType-sType sType must be S=VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-parameter If physicalDeviceCount is not 0, pPhysicalDevices must( be a valid pointer to an array of physicalDeviceCount valid / handlesSee Also/, C?vulkanpPhysicalDevicesY is a pointer to an array of physical device handles belonging to the same device group.AvulkanphysicalDeviceCount0 is the number of physical devices in the group.BvulkanphysicalDevices is an array of + /D handles representing all physical devices in the group. The first physicalDeviceCount& elements of the array will be valid.CvulkansubsetAllocation} specifies whether logical devices created from the group support allocating device memory on a subset of devices, via the  deviceMask member of the J. 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 ..Dvulkan{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, A will be returned instead of FF, to indicate that not all the available device groups were returned.Every physical device must be in exactly one device group.Valid Usage (Implicit)7VUID-vkEnumeratePhysicalDeviceGroups-instance-parameter instance must be a valid  handleHVUID-vkEnumeratePhysicalDeviceGroups-pPhysicalDeviceGroupCount-parameter pPhysicalDeviceGroupCount must be a valid pointer to a uint32_t valueMVUID-vkEnumeratePhysicalDeviceGroups-pPhysicalDeviceGroupProperties-parameter! If 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-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?>See Also, Dvulkaninstance; is a handle to a Vulkan instance previously created with  V.@ABC>?CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE+EDD@ABC>?CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE+ENone("#%&'-./1789;=>?FHIMSUVX_dghklmq@ NOPQRSTUVWX WVUTXQPOSNRJNone("#%&'-./1789;=>?FHIMSUVX_dghklmqB6vulkanaVkMemoryAllocateFlagsInfo - Structure controlling how many instances of memory will be allocated DescriptionIf  WD is not set, the number of instances allocated depends on whether p! is set in the memory heap. If p[ 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 pD 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 Usage/VUID-VkMemoryAllocateFlagsInfo-deviceMask-00675 If  W is set,  deviceMask must be a valid device mask/VUID-VkMemoryAllocateFlagsInfo-deviceMask-00676 If  W is set,  deviceMask must not be zeroValid Usage (Implicit)*VUID-VkMemoryAllocateFlagsInfo-sType-sType sType must be K.VUID-VkMemoryAllocateFlagsInfo-flags-parameter flags must% be a valid combination of  R valuesSee Also T, CvulkanwVkDeviceGroupSubmitInfo - 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 Usage5VUID-VkDeviceGroupSubmitInfo-waitSemaphoreCount-00082 waitSemaphoreCount must equal ;::waitSemaphoreCount5VUID-VkDeviceGroupSubmitInfo-commandBufferCount-00083 commandBufferCount must equal ;::commandBufferCount7VUID-VkDeviceGroupSubmitInfo-signalSemaphoreCount-00084 signalSemaphoreCount must equal ;::signalSemaphoreCount>VUID-VkDeviceGroupSubmitInfo-pWaitSemaphoreDeviceIndices-00085 All elements of pWaitSemaphoreDeviceIndices and pSignalSemaphoreDeviceIndices must be valid device indices<VUID-VkDeviceGroupSubmitInfo-pCommandBufferDeviceMasks-00086 All elements of pCommandBufferDeviceMasks must be valid device masksValid Usage (Implicit)(VUID-VkDeviceGroupSubmitInfo-sType-sType sType must be NBVUID-VkDeviceGroupSubmitInfo-pWaitSemaphoreDeviceIndices-parameter If waitSemaphoreCount is not 0, pWaitSemaphoreDeviceIndices must# be a valid pointer to an array of waitSemaphoreCount uint32_t values@VUID-VkDeviceGroupSubmitInfo-pCommandBufferDeviceMasks-parameter If commandBufferCount is not 0, pCommandBufferDeviceMasks must# be a valid pointer to an array of commandBufferCount uint32_t valuesDVUID-VkDeviceGroupSubmitInfo-pSignalSemaphoreDeviceIndices-parameter If signalSemaphoreCount is not 0, pSignalSemaphoreDeviceIndices must( be a valid pointer to an array of signalSemaphoreCount uint32_t valuesSee AlsoCvulkankVkDeviceGroupRenderPassBeginInfo - 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 }:: renderArean, and provide a render area specific to each physical device. These render areas serve the same purpose as }:: 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, }:: renderArea# is used for all physical devices. Valid Usage6VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00905  deviceMask must be a valid device mask value6VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00906  deviceMask must not be zero6VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00907  deviceMask must= be a subset of the command buffer s initial device maskAVUID-VkDeviceGroupRenderPassBeginInfo-deviceRenderAreaCount-00908 deviceRenderAreaCount mustU either be zero or equal to the number of physical devices in the logical deviceValid Usage (Implicit)1VUID-VkDeviceGroupRenderPassBeginInfo-sType-sType sType must be LBVUID-VkDeviceGroupRenderPassBeginInfo-pDeviceRenderAreas-parameter If deviceRenderAreaCount is not 0, pDeviceRenderAreas must( be a valid pointer to an array of deviceRenderAreaCount q structuresSee Alsoq, CvulkanWVkDeviceGroupCommandBufferBeginInfo - 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 AlsoCvulkanMVkDeviceGroupBindSparseInfo - 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 Usage:VUID-VkDeviceGroupBindSparseInfo-resourceDeviceIndex-01118 resourceDeviceIndex and memoryDeviceIndex must" both be valid device indices8VUID-VkDeviceGroupBindSparseInfo-memoryDeviceIndex-011191 Each memory allocation bound in this batch must% have allocated an instance for memoryDeviceIndexValid Usage (Implicit),VUID-VkDeviceGroupBindSparseInfo-sType-sType sType must be OSee AlsoCZvulkanresourceDeviceIndexG is a device index indicating which instance of the resource is bound.[vulkanmemoryDeviceIndex^ is a device index indicating which instance of the memory the resource instance is bound to.]vulkanpWaitSemaphoreDeviceIndices is a pointer to an array of waitSemaphoreCounty device indices indicating which physical device executes the semaphore wait operation in the corresponding element of ;::pWaitSemaphores.^vulkanpCommandBufferDeviceMasks is a pointer to an array of commandBufferCountm device masks indicating which physical devices execute the command buffer in the corresponding element of ;::pCommandBuffers]. A physical device executes the command buffer if the corresponding bit is set in the mask._vulkanpSignalSemaphoreDeviceIndices is a pointer to an array of signalSemaphoreCount{ device indices indicating which physical device executes the semaphore signal operation in the corresponding element of ;::pSignalSemaphores.avulkan deviceMask: is the initial value of the command buffer s device mask.9VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00106  deviceMask must be a valid device mask value9VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00107  deviceMask must not be zerocvulkan deviceMask1 is the device mask for the render pass instance.dvulkanpDeviceRenderAreas is a pointer to an array of q? structures defining the render area for each physical device.fvulkanflags is a bitmask of  R controlling the allocation.gvulkan deviceMaskN is a mask of physical devices in the logical device, indicating that memory must/ be allocated on each device in the mask, if  W is set in flags.ivulkanVvkGetDeviceGroupPeerMemoryFeatures - Query supported peer memory features of a deviceValid Usage (Implicit)See Also, jvulkan;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(VUID-vkCmdSetDeviceMask-deviceMask-00108  deviceMask must" be a valid device mask value(VUID-vkCmdSetDeviceMask-deviceMask-00109  deviceMask must not be zero(VUID-vkCmdSetDeviceMask-deviceMask-00110  deviceMask must9 not include any set bits that were not in the :: deviceMask3 value when the command buffer began recording(VUID-vkCmdSetDeviceMask-deviceMask-00111 If j/ is called inside a render pass instance,  deviceMask must9 not include any set bits that were not in the :: deviceMask9 value when the render pass instance began recordingValid Usage (Implicit)/VUID-vkCmdSetDeviceMask-commandBuffer-parameter  commandBuffer must be a valid  handle/VUID-vkCmdSetDeviceMask-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state-VUID-vkCmdSetDeviceMask-commandBuffer-cmdpool The / that  commandBuffer was allocated from must7 support graphics, compute, or transfer operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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 Alsokvulkan/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 Usage&VUID-vkCmdDispatchBase-magFilter-04553 If a / created with  magFilter or  minFilter equal to  and  compareEnable equal to . is used to sample a /> 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 {'!'VUID-vkCmdDispatchBase-mipmapMode-04770 If a / created with  mipmapMode equal to 8 and  compareEnable equal to . is used to sample a /> 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 {'!VUID-vkCmdDispatchBase-None-02691 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 {x!VUID-vkCmdDispatchBase-None-02692 If 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 (VUID-vkCmdDispatchBase-filterCubic-02694 Any / being sampled with " as a result of this command must have a tyE and format that supports cubic filtering, as specified by f:: filterCubic returned by T.VUID-vkCmdDispatchBase-filterCubicMinmax-02695 Any / being sampled with + with a reduction mode of either +z or +{" as a result of this command must have a tyi and format that supports cubic filtering together with minmax filtering, as specified by f::filterCubicMinmax returned by T"VUID-vkCmdDispatchBase-flags-02696 Any /  created with a 0::flags containing * sampled as a result of this command must only be sampled using a 9| of 9}!VUID-vkCmdDispatchBase-None-02697 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 n. at the same pipeline bind point, with a /F! that is compatible for set n , with the /F! used to create the current /, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???!VUID-vkCmdDispatchBase-None-02698< For each push constant that is statically used by the /X bound to the pipeline bind point used by this command, a push constant value must= have been set for the same pipeline bind point, with a /F6 that is compatible for push constants, with the /F! used to create the current /, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???!VUID-vkCmdDispatchBase-None-02699C 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 command!VUID-vkCmdDispatchBase-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command*VUID-vkCmdDispatchBase-commandBuffer-02701 If 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 dynamic!VUID-vkCmdDispatchBase-None-02859 There musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the /f object bound to the pipeline bind point used by this command, since that pipeline was bound!VUID-vkCmdDispatchBase-None-02702 If the /S object bound to the pipeline bind point used by this command accesses a /> object that uses unnormalized coordinates, that sampler must% not be used to sample from any /  with a / of the type t~, t, t, t or t, in any shader stage!VUID-vkCmdDispatchBase-None-02703 If the /S object bound to the pipeline bind point used by this command accesses 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 stage!VUID-vkCmdDispatchBase-None-02704 If the /S object bound to the pipeline bind point used by this command accesses 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!VUID-vkCmdDispatchBase-None-02705 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!VUID-vkCmdDispatchBase-None-02706 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 point*VUID-vkCmdDispatchBase-commandBuffer-02707 If  commandBufferJ 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 resource!VUID-vkCmdDispatchBase-None-04115 If 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.)VUID-vkCmdDispatchBase-OpImageWrite-04469 If a / is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction mustC have at least as many components as the buffer view s format.(VUID-vkCmdDispatchBase-SampledType-04470 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.(VUID-vkCmdDispatchBase-SampledType-04471 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.(VUID-vkCmdDispatchBase-SampledType-04472 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.(VUID-vkCmdDispatchBase-SampledType-04473 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.4VUID-vkCmdDispatchBase-sparseImageInt64Atomics-04474 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, / $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.4VUID-vkCmdDispatchBase-sparseImageInt64Atomics-04475 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, /$ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.'VUID-vkCmdDispatchBase-baseGroupX-00421  baseGroupX must be less than  ::maxComputeWorkGroupCount[0]'VUID-vkCmdDispatchBase-baseGroupX-00422  baseGroupX must be less than  ::maxComputeWorkGroupCount[1]'VUID-vkCmdDispatchBase-baseGroupZ-00423  baseGroupZ must be less than  ::maxComputeWorkGroupCount[2](VUID-vkCmdDispatchBase-groupCountX-00424  groupCountX must$ be less than or equal to  ::maxComputeWorkGroupCount[0] minus  baseGroupX(VUID-vkCmdDispatchBase-groupCountY-00425  groupCountY must$ be less than or equal to  ::maxComputeWorkGroupCount[1] minus  baseGroupY(VUID-vkCmdDispatchBase-groupCountZ-00426  groupCountZ must$ be less than or equal to  ::maxComputeWorkGroupCount[2] minus  baseGroupZ'VUID-vkCmdDispatchBase-baseGroupX-00427 If any of  baseGroupX,  baseGroupY, or  baseGroupZ4 are not zero, then the bound compute pipeline must! have been created with the h flagValid Usage (Implicit).VUID-vkCmdDispatchBase-commandBuffer-parameter  commandBuffer must be a valid  handle.VUID-vkCmdDispatchBase-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state,VUID-vkCmdDispatchBase-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support compute operations!VUID-vkCmdDispatchBase-renderpass This command must6 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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 Alsoivulkandevice, is the logical device that owns the memory.8VUID-vkGetDeviceGroupPeerMemoryFeatures-device-parameter device must be a valid  handlevulkan heapIndexE is the index of the memory heap from which the memory is allocated.7VUID-vkGetDeviceGroupPeerMemoryFeatures-heapIndex-00691  heapIndex must be less than memoryHeapCountvulkanlocalDeviceIndexM is the device index of the physical device that performs the memory access.>VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00692 localDeviceIndex must be a valid device index>VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00694 localDeviceIndex must not equal remoteDeviceIndexvulkanremoteDeviceIndexN is the device index of the physical device that the memory is allocated for.?VUID-vkGetDeviceGroupPeerMemoryFeatures-remoteDeviceIndex-00693 remoteDeviceIndex must be a valid device indexjvulkan commandBuffer9 is command buffer whose current device mask is modified.vulkan deviceMask- is the new value of the current device mask.kvulkan 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..GH E I H G Fefg\]^_bcd`aYZ[CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE R S W V U Thijk6ijkhefgbcd`a\]^_YZ[CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEGH E I H G F I H G F R S W V U W V U THNone("#%&'-./1789;=>?FHIMSUVX_dghklmqBvulkanuVkMemoryDedicatedRequirements - 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 B> 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 P in P[::/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 0S= 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 T in P^::/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).VUID-VkMemoryDedicatedRequirements-sType-sType sType must be ISee Alsop, CvulkanOVkMemoryDedicatedAllocateInfo - Specify a dedicated memory allocation resource Valid Usage.VUID-VkMemoryDedicatedAllocateInfo-image-01432 At least one of image and buffer must be 8 .VUID-VkMemoryDedicatedAllocateInfo-image-02964 If image is not 8F and the memory is not an imported Android Hardware Buffer, 3::allocationSize must equal the 4::size of the image.VUID-VkMemoryDedicatedAllocateInfo-image-01434 If image is not 8, image must% have been created without  set in 0::flags/VUID-VkMemoryDedicatedAllocateInfo-buffer-02965 If buffer is not 8F and the memory is not an imported Android Hardware Buffer, 3::allocationSize must equal the 4::size of the buffer/VUID-VkMemoryDedicatedAllocateInfo-buffer-01436 If buffer is not 8, buffer must% have been created without  set in ::flags.VUID-VkMemoryDedicatedAllocateInfo-image-01876 If image is not 8 and 3> defines a memory import operation with handle type A, A, A, A, A, or Ab, 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 memory/VUID-VkMemoryDedicatedAllocateInfo-buffer-01877 If buffer is not 8 and 3> defines a memory import operation with handle type A, A, A, A, A, or Ab, 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 memory.VUID-VkMemoryDedicatedAllocateInfo-image-01878 If image is not 8 and 3> 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 memory/VUID-VkMemoryDedicatedAllocateInfo-buffer-01879 If buffer is not 8 and 3> 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 memory.VUID-VkMemoryDedicatedAllocateInfo-image-01797 If image is not 8, image must& not have been created with  set in 0::flags.VUID-VkMemoryDedicatedAllocateInfo-image-04751 If image is not 8 and 3> 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 memory/VUID-VkMemoryDedicatedAllocateInfo-buffer-04752 If buffer is not 8 and 3> 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 memoryValid Usage (Implicit).VUID-VkMemoryDedicatedAllocateInfo-sType-sType sType must be J2VUID-VkMemoryDedicatedAllocateInfo-image-parameter If image is not 8, image must be a valid  handle3VUID-VkMemoryDedicatedAllocateInfo-buffer-parameter If buffer is not 8, buffer must be a valid  handle/VUID-VkMemoryDedicatedAllocateInfo-commonparent Both of buffer , and image2 that are valid handles of non-ignored parameters mustD have been created, allocated, or retrieved from the same /See Also, , Cvulkanimage is 8= or a handle of an image which this memory will be bound to.vulkanbuffer is 8= or a handle of a buffer which this memory will be bound to.vulkanprefersDedicatedAllocation 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.vulkanrequiresDedicatedAllocationF specifies that a dedicated allocation is required for this resource.CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFECD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFENone("#%&'-./1789;=>?FHIMSUVX_dghklmqBپDNone("#%&'-./1789;=>?FHIMSUVX_dghklmqC vulkanQVkProtectedSubmitInfo - Structure indicating whether the submission is protected Valid Usage0VUID-VkProtectedSubmitInfo-protectedSubmit-018166 If the protected memory feature is not enabled, protectedSubmit must not be .Valid Usage (Implicit)&VUID-VkProtectedSubmitInfo-sType-sType sType must be jSee Alsop, CvulkanVkPhysicalDeviceProtectedMemoryProperties - Structure describing protected memory properties that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of T O, it is filled with a value indicating the implementation-dependent behavior.Valid Usage (Implicit)See Alsop, CvulkanVkPhysicalDeviceProtectedMemoryFeatures - 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 Alsop, CvulkanXVkDeviceQueueInfo2 - 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  B instance. If no matching flagsF were specified at device creation time, then the handle returned in pQueue must be NULL.Valid Usage (Implicit)See Also, C, vulkanflags is a = value indicating the flags used to create the device queue.'VUID-VkDeviceQueueInfo2-flags-parameter flags must be a valid combination of  valuesvulkanqueueFamilyIndex> is the index of the queue family to which the queue belongs..VUID-VkDeviceQueueInfo2-queueFamilyIndex-01842 queueFamilyIndex must3 be one of the queue family indices specified when device was created, via the  B structurevulkan queueIndexA is the index within this queue family of the queue to retrieve.(VUID-VkDeviceQueueInfo2-queueIndex-01843  queueIndex mustW 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  B 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.vulkan"extension-features-protectedMemory protectedMemory2 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 ;::pNextB chain does not include this structure, the batch is unprotected.vulkan4vkGetDeviceQueue2 - Get a queue handle from a deviceValid Usage (Implicit)See Also, , {vulkandevice+ is the logical device that owns the queue.'VUID-vkGetDeviceQueue2-device-parameter device must be a valid  handlevulkan pQueueInfo is a pointer to a G structure, describing the parameters used to create the device queue.+VUID-vkGetDeviceQueue2-pQueueInfo-parameter  pQueueInfo must be a valid pointer to a valid  structure3Mt~}|{zyxwvuNCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE wx~}|{zyYZ`_^]\[CCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE wx~}|{z~}|{zyYZ`_^]\`_^]\[Mt~}|{zyxwvu~}|{zyxwvuNCNone("#%&'-./1789;=>?FHIMSUVX_dghklmqC0vulkandVkSamplerYcbcrConversion - Opaque handle to a device-specific sampler Y 2CBCR conversion descriptionSee AlsoX, X`, a, X, vulkanKVkDescriptorUpdateTemplate - Opaque handle to a descriptor update templateSee Also, IJ, K, Iw, x, IQ, N(x{}({}xpNone("#%&'-./1789;=>?FHIMSUVX_dghklmqC KvulkanAVkValidationCacheEXT - Opaque handle to a validation cache objectSee Also, g, , >, ELvulkan4VkSwapchainKHR - 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  , and before it is released by G. This includes transitioning the image layout and rendering commands.An application can* acquire use of a presentable image with Q. 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 /, 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, , , l, , , , e, ", , 5, 8, <, , =, F, L, rMvulkan0VkSurfaceKHR - Opaque handle to a surface object DescriptionThe VK_KHR_surface extension declares the M1 object, and provides a function for destroying MY objects. Separate platform-specific extensions each provide a function for creating a M 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., , A, L, N, Q, R, T, W, X, #b, f, h, i, j, k, l, , &, , , , , , NvulkanBVkPrivateDataSlotEXT - Opaque handle to a private data slot objectSee AlsoZ, , , OvulkanOVkPerformanceConfigurationINTEL - Device configuration for performance queriesSee Also, , GPvulkanQVkIndirectCommandsLayoutNV - Opaque handle to an indirect commands layout objectSee Alsom, n, U, Qvulkan9VkDisplayModeKHR - Opaque handle to a display mode objectSee Also, K, P, M, Rvulkan0VkDisplayKHR - Opaque handle to a display objectSee Also, , , , M, , , , , , , , Svulkan-VkDeferredOperationKHR - A deferred operation DescriptioneThis handle refers to a tracking structure which manages the execution state for a deferred command.See Also, , ,  , G, :,  , t, , TvulkanDVkDebugUtilsMessengerEXT - 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 AlsoF, sUvulkanKVkDebugReportCallbackEXT - Opaque handle to a debug report callback objectSee AlsoE, rVvulkanNVkAccelerationStructureNV - Opaque handle to an acceleration structure objectSee Also, , , , r, m, @, n, WvulkanOVkAccelerationStructureKHR - Opaque handle to an acceleration structure objectSee Also, , , , , , l, ?, m, nXvwxy{|}~KLMNOPQRSTUVWXPKWVOSNRQMLUT{v}xw|y~#None("#%&'-./1789;=>?FHIMSUVX_dghklmqC vulkanlVkScreenSurfaceCreateInfoQNX - Structure specifying parameters of a newly created QNX Screen surface objectValid Usage (Implicit)See Also>, C, F>vulkan7VkScreenSurfaceCreateFlagsQNX - Reserved for future use Description>Q is a bitmask type for setting a mask, but is currently reserved for future use.See AlsoAvulkanflags is reserved for future use.3VUID-VkScreenSurfaceCreateInfoQNX-flags-zerobitmask flags must be 0Bvulkancontext and window are QNX Screen context and window to associate the surface with./VUID-VkScreenSurfaceCreateInfoQNX-context-04741 context must point to a valid QNX Screen struct _screen_contextCvulkan.VUID-VkScreenSurfaceCreateInfoQNX-window-04742 window must point to a valid QNX Screen struct _screen_windowFvulkan%vkCreateScreenSurfaceQNX - Create a M object for a QNX Screen windowValid Usage (Implicit)0VUID-vkCreateScreenSurfaceQNX-instance-parameter instance must be a valid  handle3VUID-vkCreateScreenSurfaceQNX-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure2VUID-vkCreateScreenSurfaceQNX-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure0VUID-vkCreateScreenSurfaceQNX-pSurface-parameter pSurface 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , , MGvulkangvkGetPhysicalDeviceScreenPresentationSupportQNX - Query physical device for presentation to QNX Screen Description This platform-specific function can( be called prior to creating a surface.Valid Usage (Implicit)See AlsoFvulkaninstance/ 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).GvulkanphysicalDevice is the physical device.MVUID-vkGetPhysicalDeviceScreenPresentationSupportQNX-physicalDevice-parameter physicalDevice must be a valid  handlevulkanqueueFamilyIndex is the queue family index.KVUID-vkGetPhysicalDeviceScreenPresentationSupportQNX-queueFamilyIndex-04743 queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by   for the given physicalDevicevulkanwindow is the QNX Screen window object.EVUID-vkGetPhysicalDeviceScreenPresentationSupportQNX-window-parameter window must be a valid pointer to a  valueM@ACB;<=>?DEFGFG@ACB>?=E<D;MNone("#%&'-./1789;=>?FHIMSUVX_dghklmqCZvulkan:vkAcquireWinrtDisplayNV - Acquire access to a VkDisplayKHR DescriptioneAll permissions necessary to control the display are granted to the Vulkan instance associated with physicalDeviced until the display is released or the application is terminated. Permission to access the display mayF be revoked by events that cause Windows 10 itself to lose access to displayH. If this has happened, operations which require access to the display must? fail with an appropriate error code. If permission to access display8 has already been acquired by another entity, the call must return the error code >.Note+The Vulkan instance acquires control of a  Shttps://docs.microsoft.com/en-us/uwp/api/windows.devices.display.core.displaytarget7 winrt::Windows::Devices::Display::Core::DisplayTarget , by performing an operation equivalent to  ehttps://docs.microsoft.com/en-us/uwp/api/windows.devices.display.core.displaymanager.tryacquiretargetK winrt::Windows::Devices::Display::Core::DisplayManager.TryAcquireTarget()  on the DisplayTarget .Note_One example of when Windows 10 loses access to a display is when the display is hot-unplugged.NoteMOne example of when a display has already been acquired by another entity is when the Windows desktop compositor (DWM) is in control of the display. Beginning with Windows 10 version 2004 it is possible to cause DWM to release a display by using the Advanced display settings  sub-page of the Display settings  control panel. Zb does not itself cause DWM to release a display; this action must be performed outside of Vulkan. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@=>See AlsoR, [vulkanTvkGetWinrtDisplayNV - Query the VkDisplayKHR corresponding to a WinRT DisplayTarget DescriptionIf there is no R corresponding to deviceRelativeId on physicalDevice, 8 must be returned in pDisplay. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@=>See AlsoR, ZvulkanphysicalDevice' The physical device the display is on.5VUID-vkAcquireWinrtDisplayNV-physicalDevice-parameter physicalDevice must be a valid  handlevulkandisplay4 The display the caller wishes to control in Vulkan..VUID-vkAcquireWinrtDisplayNV-display-parameter display must be a valid R handle+VUID-vkAcquireWinrtDisplayNV-display-parent display must2 have been created, allocated, or retrieved from physicalDevice[vulkanphysicalDevice; The physical device on which to query the display handle.1VUID-vkGetWinrtDisplayNV-physicalDevice-parameter physicalDevice must be a valid  handlevulkandeviceRelativeId The value of the  ehttps://docs.microsoft.com/en-us/uwp/api/windows.devices.display.core.displaytarget.adapterrelativeid AdapterRelativeId  property of a  Shttps://docs.microsoft.com/en-us/uwp/api/windows.devices.display.core.displaytarget DisplayTarget  that is enumerated by a  Thttps://docs.microsoft.com/en-us/uwp/api/windows.devices.display.core.displayadapter DisplayAdapter  with an  Whttps://docs.microsoft.com/en-us/uwp/api/windows.devices.display.core.displayadapter.id Id  property matching the  deviceLUID property of a P for physicalDevice.RVWXYZ[Z[WYVXRNone("#%&'-./1789;=>?FHIMSUVX_dghklmqD vulkan_VkViSurfaceCreateInfoNN - Structure specifying parameters of a newly created VI surface objectValid Usage (Implicit)See AlsoC, ^, e^vulkan2VkViSurfaceCreateFlagsNN - Reserved for future use Description^Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also avulkanflags is reserved for future use..VUID-VkViSurfaceCreateInfoNN-flags-zerobitmask flags must be 0bvulkanwindow is the nn::vi::NativeWindowHandle for the nn::vi::Layer% with which to associate the surface.)VUID-VkViSurfaceCreateInfoNN-window-01318 window must be a valid nn::vi::NativeWindowHandleevulkanvkCreateViSurfaceNN - Create a M 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)+VUID-vkCreateViSurfaceNN-instance-parameter instance must be a valid  handle.VUID-vkCreateViSurfaceNN-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid   structure-VUID-vkCreateViSurfaceNN-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure+VUID-vkCreateViSurfaceNN-pSurface-parameter pSurface 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?&See Also, , M,  evulkaninstance5 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). M `ab\]^_cde e `ab^_]d\cMNone("#%&'-./1789;=>?FHIMSUVX_dghklmqDCvulkanfVkMacOSSurfaceCreateInfoMVK - Structure specifying parameters of a newly created macOS surface object Valid Usage,VUID-VkMacOSSurfaceCreateInfoMVK-pView-04144 If pView is a  object, it must be a valid .,VUID-VkMacOSSurfaceCreateInfoMVK-pView-01317 If pView is an NSView object, it must be a valid NSView, must be backed by a CALayer object of type  , and | must be called on the main thread.Valid Usage (Implicit),VUID-VkMacOSSurfaceCreateInfoMVK-sType-sType sType must be ,VUID-VkMacOSSurfaceCreateInfoMVK-pNext-pNext pNext must be NULL2VUID-VkMacOSSurfaceCreateInfoMVK-flags-zerobitmask flags must be 0See Alsou, C, |uvulkan6VkMacOSSurfaceCreateFlagsMVK - Reserved for future use DescriptionuQ is a bitmask type for setting a mask, but is currently reserved for future use.See Alsoxvulkanflags is reserved for future use.yvulkanpView is a reference to either a  object or an NSView object.|vulkanJvkCreateMacOSSurfaceMVK - Create a VkSurfaceKHR object for a macOS NSView ParametersNoteThe |@ function is considered deprecated and has been superseded by X from the VK_EXT_metal_surface extension. Descriptioninstance5 is the instance with which to associate the surface. pCreateInfo is a pointer to a X structure containing parameters affecting the creation of the surface object. 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).pSurface is a pointer to a M= handle in which the created surface object is returned.Valid Usage (Implicit)/VUID-vkCreateMacOSSurfaceMVK-instance-parameter instance must be a valid  handle2VUID-vkCreateMacOSSurfaceMVK-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure1VUID-vkCreateMacOSSurfaceMVK-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure/VUID-vkCreateMacOSSurfaceMVK-pSurface-parameter pSurface 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?&See Also, , , M Mwxystuvz{| |wxyuvt{szMNone("#%&'-./1789;=>?FHIMSUVX_dghklmqDlvulkanbVkIOSSurfaceCreateInfoMVK - Structure specifying parameters of a newly created iOS surface object Valid Usage*VUID-VkIOSSurfaceCreateInfoMVK-pView-04143 If pView is a  object, it must be a valid .*VUID-VkIOSSurfaceCreateInfoMVK-pView-01316 If pView is a UIView object, it must be a valid UIView, must be backed by a CALayer object of type  , and  must be called on the main thread.Valid Usage (Implicit)*VUID-VkIOSSurfaceCreateInfoMVK-sType-sType sType must be *VUID-VkIOSSurfaceCreateInfoMVK-pNext-pNext pNext must be NULL0VUID-VkIOSSurfaceCreateInfoMVK-flags-zerobitmask flags must be 0See Also, C, vulkan4VkIOSSurfaceCreateFlagsMVK - 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.vulkanpView is a reference to either a  object or a UIView object.vulkanFvkCreateIOSSurfaceMVK - Create a VkSurfaceKHR object for an iOS UIView ParametersNoteThe @ function is considered deprecated and has been superseded by X from the VK_EXT_metal_surface extension. Descriptioninstance5 is the instance with which to associate the surface. pCreateInfo is a pointer to a S structure containing parameters affecting the creation of the surface object. 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).pSurface is a pointer to a M= handle in which the created surface object is returned.Valid Usage (Implicit)-VUID-vkCreateIOSSurfaceMVK-instance-parameter instance must be a valid  handle0VUID-vkCreateIOSSurfaceMVK-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure/VUID-vkCreateIOSSurfaceMVK-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure-VUID-vkCreateIOSSurfaceMVK-pSurface-parameter pSurface 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?&See Also, , , M M MNone("#%&'-./1789;=>?FHIMSUVX_dghklmqDvulkandVkXlibSurfaceCreateInfoKHR - Structure specifying parameters of a newly created Xlib surface objectValid Usage (Implicit)See AlsoC, , vulkan5VkXlibSurfaceCreateFlagsKHR - 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.1VUID-VkXlibSurfaceCreateInfoKHR-flags-zerobitmask flags must be 0vulkandpy is a pointer to an Xlib  connection to the X server.)VUID-VkXlibSurfaceCreateInfoKHR-dpy-01313 dpy must point to a valid Xlib vulkanwindow is an Xlib  to associate the surface with.,VUID-VkXlibSurfaceCreateInfoKHR-window-01314 window must be a valid Xlib vulkan"vkCreateXlibSurfaceKHR - Create a M> object for an X11 window, using the Xlib client-side libraryValid Usage (Implicit).VUID-vkCreateXlibSurfaceKHR-instance-parameter instance must be a valid  handle1VUID-vkCreateXlibSurfaceKHR-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure0VUID-vkCreateXlibSurfaceKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure.VUID-vkCreateXlibSurfaceKHR-pSurface-parameter pSurface 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , M, vulkanpvkGetPhysicalDeviceXlibPresentationSupportKHR - 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 Alsovulkaninstance/ 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).vulkanphysicalDevice is the physical device.KVUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-physicalDevice-parameter physicalDevice must be a valid  handlevulkanqueueFamilyIndex is the queue family index.IVUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-queueFamilyIndex-01315 queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by   for the given physicalDevicevulkandpy is a pointer to an Xlib  connection to the server.@VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-dpy-parameter dpy must be a valid pointer to a  valueMMNone("#%&'-./1789;=>?FHIMSUVX_dghklmqDmvulkanbVkXcbSurfaceCreateInfoKHR - Structure specifying parameters of a newly created Xcb surface objectValid Usage (Implicit)See AlsoC, , 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.0VUID-VkXcbSurfaceCreateInfoKHR-flags-zerobitmask flags must be 0vulkan connection is a pointer to an xcb_connection_t to the X server./VUID-VkXcbSurfaceCreateInfoKHR-connection-01310  connection must point to a valid X11 xcb_connection_tvulkanwindow is the  xcb_window_t3 for the X11 window to associate the surface with.+VUID-VkXcbSurfaceCreateInfoKHR-window-01311 window must be a valid X11  xcb_window_tvulkan!vkCreateXcbSurfaceKHR - Create a M< object for a X11 window, using the XCB client-side libraryValid Usage (Implicit)-VUID-vkCreateXcbSurfaceKHR-instance-parameter instance must be a valid  handle0VUID-vkCreateXcbSurfaceKHR-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure/VUID-vkCreateXcbSurfaceKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure-VUID-vkCreateXcbSurfaceKHR-pSurface-parameter pSurface 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , M, 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.JVUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-physicalDevice-parameter physicalDevice must be a valid  handlevulkanqueueFamilyIndex is the queue family index.HVUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-queueFamilyIndex-01312 queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by   for the given physicalDevicevulkan connection is a pointer to an xcb_connection_t to the X server.FVUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-connection-parameter  connection must be a valid pointer to an xcb_connection_t valuevulkan visual_id is an X11 visual (xcb_visualid_t).MMNone("#%&'-./1789;=>?FHIMSUVX_dghklmqDvulkanfVkWin32SurfaceCreateInfoKHR - Structure specifying parameters of a newly created Win32 surface objectValid Usage (Implicit)See AlsoC, , 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.2VUID-VkWin32SurfaceCreateInfoKHR-flags-zerobitmask flags must be 0vulkan hinstance is the Win32 / for the window to associate the surface with.0VUID-VkWin32SurfaceCreateInfoKHR-hinstance-01307  hinstance must be a valid Win32 vulkanhwnd is the Win32 . for the window to associate the surface with.+VUID-VkWin32SurfaceCreateInfoKHR-hwnd-01308 hwnd must be a valid Win32 vulkan$vkCreateWin32SurfaceKHR - Create a M" object for an Win32 native windowValid Usage (Implicit)/VUID-vkCreateWin32SurfaceKHR-instance-parameter instance must be a valid  handle2VUID-vkCreateWin32SurfaceKHR-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure1VUID-vkCreateWin32SurfaceKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure/VUID-vkCreateWin32SurfaceKHR-pSurface-parameter pSurface 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , M, 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.LVUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-physicalDevice-parameter physicalDevice must be a valid  handlevulkanqueueFamilyIndex is the queue family index.JVUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-queueFamilyIndex-01309 queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by   for the given physicalDeviceMMNone("#%&'-./1789;=>?FHIMSUVX_dghklmqE,vulkanjVkWaylandSurfaceCreateInfoKHR - Structure specifying parameters of a newly created Wayland surface objectValid Usage (Implicit)See AlsoC, , 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.4VUID-VkWaylandSurfaceCreateInfoKHR-flags-zerobitmask flags must be 0vulkandisplay and surface are pointers to the Wayland  wl_display and  wl_surface to associate the surface with.0VUID-VkWaylandSurfaceCreateInfoKHR-display-01304 display must point to a valid Wayland  wl_displayvulkan0VUID-VkWaylandSurfaceCreateInfoKHR-surface-01305 surface must point to a valid Wayland  wl_surfacevulkan&vkCreateWaylandSurfaceKHR - Create a M object for a Wayland windowValid Usage (Implicit)1VUID-vkCreateWaylandSurfaceKHR-instance-parameter instance must be a valid  handle4VUID-vkCreateWaylandSurfaceKHR-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure3VUID-vkCreateWaylandSurfaceKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure1VUID-vkCreateWaylandSurfaceKHR-pSurface-parameter pSurface 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , M, 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.NVUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-physicalDevice-parameter physicalDevice must be a valid  handlevulkanqueueFamilyIndex is the queue family index.LVUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-queueFamilyIndex-01306 queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by   for the given physicalDevicevulkandisplay is a pointer to the  wl_display' associated with a Wayland compositor.GVUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-display-parameter display must be a valid pointer to a  wl_display valueMMNone("#%&'-./1789;=>?FHIMSUVX_dghklmqF:vulkan<VkPresentModeKHR - presentation mode supported for a surface DescriptionThe supported A 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   K  ::supportedUsageFlagsM   J  ::supportedUsageFlagsM   I  ::supportedUsageFlagsM   H  ::supportedUsageFlagsM   F  :: sharedPresentSupportedUsageFlags   G  :: sharedPresentSupportedUsageFlags Presentable image usage queriesNote%For reference, the mode indicated by  Iu is equivalent to the behavior of {wgl|glX|egl}SwapBuffers with a swap interval of 1, while the mode indicated by  H 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, ,  QvulkanXVkSurfaceFormatKHR - Structure describing a supported swapchain format-color space pairSee Also , K, ,  PvulkanJVkSurfaceCapabilitiesKHR - Structure describing capabilities of a surface DescriptionNote9Supported usage flags of a presentable image when using  F or  G% presentation mode are provided by :: sharedPresentSupportedUsageFlags.NoteFormulas such as min(N,  maxImageCount) are not correct, since  maxImageCount may be zero.See Also , u, S, ,  ,  ,  O vulkanNVkSurfaceTransformFlagBitsKHR - presentation transforms supported on a deviceSee Also! , ", P, !, , ,  ,  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  L was used. Starting in the 2016-05-13 updates to the extension branches, matching release 1.0.13 of the core API specification,  E{ 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  8 was misnamed . 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.0030186 vulkanformat is a K0 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 ( representing the ways the application can9 use the presentable images of a swapchain created with  set to  K,  J,  I or  H+ for the surface on the specified device.  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. -vulkan -8 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. 0vulkan 0? specifies that image content is rotated 90 degrees clockwise. 1vulkan 1F specifies that image content is presented without being transformed. 2vulkan 2u: 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. 3vulkan 3H: 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. 4vulkan 4: 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. 5vulkan 5: 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. 6vulkan 6l specifies support for the Display-P3 color space to be displayed using an sRGB-like EOTF (defined below). 7vulkan 7Z specifies support for the extended sRGB color space to be displayed using a linear EOTF. 8vulkan 8W specifies support for the Display-P3 color space to be displayed using a linear EOTF. 9vulkan 9 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. :vulkan :R specifies support for the BT709 color space to be displayed using a linear EOTF. ;vulkan ;X specifies support for the BT709 color space to be displayed using the SMPTE 170M EOTF. <vulkan <S 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. Avulkan AZ specifies support for the AdobeRGB color space to be displayed using the Gamma 2.2 EOTF. Bvulkan B specifies that color components are used as is . This is intended to allow applications to supply data for color spaces not described here. Cvulkan CY specifies support for the extended sRGB color space to be displayed using an sRGB EOTF. Dvulkan D specifies support for the display s native color space. This matches the color space expectations of AMD s FreeSync2 standard, for displays supporting it. Evulkan E- specifies support for the sRGB color space. Fvulkan F~ 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. Gvulkan G~ 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. Hvulkan HN 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. Ivulkan I{ 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. Jvulkan J{ 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. Kvulkan K 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. Mvulkan3vkDestroySurfaceKHR - Destroy a VkSurfaceKHR object Description Destroying a M 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 Usage&VUID-vkDestroySurfaceKHR-surface-01266 All p objects created for surface must) have been destroyed prior to destroying surface&VUID-vkDestroySurfaceKHR-surface-01267 If  were provided when surface1 was created, a compatible set of callbacks must be provided here&VUID-vkDestroySurfaceKHR-surface-01268 If no  were provided when surface was created,  pAllocator must be NULLValid Usage (Implicit)+VUID-vkDestroySurfaceKHR-instance-parameter instance must be a valid  handle*VUID-vkDestroySurfaceKHR-surface-parameter If surface is not 8, surface must be a valid M handle-VUID-vkDestroySurfaceKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure'VUID-vkDestroySurfaceKHR-surface-parent If surface is a valid handle, it must6 have been created, allocated, or retrieved from instanceHost SynchronizationHost access to surface must be externally synchronizedSee Also, , M NvulkanJvkGetPhysicalDeviceSurfaceSupportKHR - Query if presentation is supported Valid Usage@VUID-vkGetPhysicalDeviceSurfaceSupportKHR-queueFamilyIndex-01269 queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by   for the given physicalDeviceValid Usage (Implicit)BVUID-vkGetPhysicalDeviceSurfaceSupportKHR-physicalDevice-parameter physicalDevice must be a valid  handle;VUID-vkGetPhysicalDeviceSurfaceSupportKHR-surface-parameter surface must be a valid M handle>VUID-vkGetPhysicalDeviceSurfaceSupportKHR-pSupported-parameter  pSupported must be a valid pointer to a p value6VUID-vkGetPhysicalDeviceSurfaceSupportKHR-commonparent Both of physicalDevice, and surface must? 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?%See Alsop, , M OvulkanFvkGetPhysicalDeviceSurfaceCapabilitiesKHR - Query surface capabilitiesValid Usage (Implicit)GVUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-physicalDevice-parameter physicalDevice must be a valid  handle@VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-surface-parameter surface must be a valid M handleMVUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-pSurfaceCapabilities-parameter pSurfaceCapabilities must be a valid pointer to a  structure;VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-commonparent Both 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?%See Also, , M PvulkanPvkGetPhysicalDeviceSurfaceFormatsKHR - 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, A will be returned instead of F> 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 .If pSurfaceFormats# includes an entry whose value for  colorSpace is  E and whose value for formatn is a UNORM (or SRGB) format and the corresponding SRGB (or UNORM) format is a color renderable format for , then pSurfaceFormats must0 also contain an entry with the same value for  colorSpace and format4 equal to the corresponding SRGB (or UNORM) format. Valid Usage7VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-02739 surface must be supported by physicalDevice, as reported by  N2 or an equivalent platform-specific mechanismValid Usage (Implicit)BVUID-vkGetPhysicalDeviceSurfaceFormatsKHR-physicalDevice-parameter physicalDevice must be a valid  handle;VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-parameter surface must be a valid M handleGVUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormatCount-parameter pSurfaceFormatCount must be a valid pointer to a uint32_t valueCVUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormats-parameter! If the value referenced by pSurfaceFormatCount is not 0 , and pSurfaceFormats is not NULL, pSurfaceFormats must( be a valid pointer to an array of pSurfaceFormatCount  structures6VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-commonparent Both of physicalDevice, and surface must? 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-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?%See Also, , M QvulkanOvkGetPhysicalDeviceSurfacePresentModesKHR - 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, A will be returned instead of F> to indicate that not all the available values were returned.Valid Usage (Implicit)GVUID-vkGetPhysicalDeviceSurfacePresentModesKHR-physicalDevice-parameter physicalDevice must be a valid  handle@VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-surface-parameter surface must be a valid M handleJVUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModeCount-parameter pPresentModeCount must be a valid pointer to a uint32_t valueFVUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModes-parameter! If 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;VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-commonparent Both 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-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?%See Also, , M Mvulkaninstance, 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). NvulkanphysicalDevice is the physical device.vulkanqueueFamilyIndex is the queue family.vulkansurface is the surface. OvulkanphysicalDevicee 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. PvulkanphysicalDevicee 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. QvulkanphysicalDevicee 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.IM K J I H G F         ! " # $ % &    1 0 / . - , + * )    5 4 3 2    E D C B A @ ? > = < ; : 9 8 7 6  ' ( L M N O P Ql M N O P Q L     ! " # $ % &    K J I H G F  K J I H G F  E D C B A @ ? > = < ; : 9 8 7 6  E D C B A @ ? > = < ; : 9 8 7 6   5 4 3 2  5 4 3 2   1 0 / . - , + * )  1 0 / . - , + * )  (  'M"None("#%&'-./1789;=>?FHIMSUVX_dghklmqF>~vulkancVkCopyCommandTransformInfoQCOM - Structure describing transform parameters of rotated copy commandValid Usage (Implicit)See AlsoC,   |vulkan transform is a  / value describing the transform to be applied.3VUID-VkCopyCommandTransformInfoQCOM-transform-04560  transform must be  1,  0,  /, or  .~ { |   1 0 / . - , + * )  y z } ~~ { | z ~ y }   1 0 / . - , + * ) 1 0 / . - , + * ) !None("#%&'-./1789;=>?FHIMSUVX_dghklmqF>|vulkaniVkRenderPassTransformBeginInfoQCOM - Structure describing transform parameters of a render pass instance Valid Usage7VUID-VkRenderPassTransformBeginInfoQCOM-transform-02871  transform must be  1,  0,  /, or  .3VUID-VkRenderPassTransformBeginInfoQCOM-flags-02872 The  renderpass must have been created with 6~::flags containing [Valid Usage (Implicit)3VUID-VkRenderPassTransformBeginInfoQCOM-sType-sType sType must be See AlsoC,  }vulkanVkCommandBufferInheritanceRenderPassTransformInfoQCOM - 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 Alsoq, C,   vulkan transform is a  B value describing the transform to be applied to the render pass.JVUID-VkCommandBufferInheritanceRenderPassTransformInfoQCOM-transform-02864  transform must be  1,  0,  /, or  . vulkan renderArea; is the render area that is affected by the command buffer. vulkan transform is a  @ value describing the transform to be applied to rasterization.| }   1 0 / . - , + * )  | }   1 0 / . - , + * ) 1 0 / . - , + * ) None("#%&'-./1789;=>?FHIMSUVX_dghklmqJ)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 G 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 7.pQueueFamilyIndicesq is a pointer to an array of queue family indices having access to the images(s) of the swapchain when imageSharingMode is 7. 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 k, 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 8G, 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 8,  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 8. Upon calling   with an  oldSwapchain that is not 8, 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 M 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 Usage+VUID-VkSwapchainCreateInfoKHR-surface-01270 surface mustL be a surface that is supported by the device as determined using 1VUID-VkSwapchainCreateInfoKHR-minImageCount-01272  minImageCount must9 be less than or equal to the value returned in the  maxImageCount member of the  ! structure returned by & for the surface if the returned  maxImageCount is not zero/VUID-VkSwapchainCreateInfoKHR-presentMode-02839 If  presentMode is not  F nor  G , then  minImageCount must< be greater than or equal to the value returned in the  minImageCount member of the  ! structure returned by  for the surface1VUID-VkSwapchainCreateInfoKHR-minImageCount-01383  minImageCount must be 1 if  presentMode is either  F or  G/VUID-VkSwapchainCreateInfoKHR-imageFormat-01273  imageFormat and imageColorSpace must match the format and  colorSpace0 members, respectively, of one of the " structures returned by  for the surface/VUID-VkSwapchainCreateInfoKHR-imageExtent-01274  imageExtent must be between minImageExtent and maxImageExtent, inclusive, where minImageExtent and maxImageExtent are members of the  ! structure returned by  for the surface/VUID-VkSwapchainCreateInfoKHR-imageExtent-01689  imageExtent members width and height must both be non-zero4VUID-VkSwapchainCreateInfoKHR-imageArrayLayers-01275 imageArrayLayers must be greater than 0$ and less than or equal to the maxImageArrayLayers member of the  ! structure returned by  for the surface/VUID-VkSwapchainCreateInfoKHR-presentMode-01427 If  presentMode is  K,  J,  I or  H,  imageUsage must> be a subset of the supported usage flags present in the supportedUsageFlags member of the  ! structure returned by  for surface.VUID-VkSwapchainCreateInfoKHR-imageUsage-01384 If  presentMode is  F or  G,  imageUsage must> be a subset of the supported usage flags present in the  sharedPresentSupportedUsageFlags member of the ! structure returned by  for surface4VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01277 If imageSharingMode is 7, pQueueFamilyIndices must( be a valid pointer to an array of queueFamilyIndexCount uint32_t values4VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01278 If imageSharingMode is 7, queueFamilyIndexCount must be greater than 14VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01428 If imageSharingMode is 7, each element of pQueueFamilyIndices must be unique and must be less than pQueueFamilyPropertyCount returned by either   or T for the physicalDevice that was used to create device0VUID-VkSwapchainCreateInfoKHR-preTransform-01279  preTransform must# be one of the bits present in the supportedTransforms member of the  ! structure returned by  for the surface2VUID-VkSwapchainCreateInfoKHR-compositeAlpha-01280 compositeAlpha must( be one of the bits present in the supportedCompositeAlpha member of the  ! structure returned by  for the surface/VUID-VkSwapchainCreateInfoKHR-presentMode-01281  presentMode must be one of the  values returned by  for the surface7VUID-VkSwapchainCreateInfoKHR-physicalDeviceCount-014292 If the logical device was created with L8::physicalDeviceCount equal to 1, flags must not contain  0VUID-VkSwapchainCreateInfoKHR-oldSwapchain-01933 If  oldSwapchain is not 8,  oldSwapchain mustN be a non-retired swapchain associated with native window referred to by surface/VUID-VkSwapchainCreateInfoKHR-imageFormat-01778 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  7)VUID-VkSwapchainCreateInfoKHR-flags-03168 If flags contains   then the pNext chain must include a 7 structure with a viewFormatCount greater than zero and  pViewFormats must have an element equal to  imageFormat)VUID-VkSwapchainCreateInfoKHR-pNext-04099 If a 7$ structure was included in the pNext chain and 7::viewFormatCount2 is not zero then all of the formats in 7:: 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 table)VUID-VkSwapchainCreateInfoKHR-flags-04100 If flags does not contain   and the pNext chain include a 7 structure then 7::viewFormatCount must be 0 or 1)VUID-VkSwapchainCreateInfoKHR-flags-03187 If flags contains   , then ::supportsProtected must be . in the ! structure returned by  for surface)VUID-VkSwapchainCreateInfoKHR-pNext-02679 If the pNext chain includes a  structure with its fullScreenExclusive member set to  , and surface was created using j , a  structure must be included in the pNext chainValid Usage (Implicit))VUID-VkSwapchainCreateInfoKHR-sType-sType sType must be )VUID-VkSwapchainCreateInfoKHR-pNext-pNext 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 Y*VUID-VkSwapchainCreateInfoKHR-sType-unique The sType" value of each struct in the pNext chain must be unique-VUID-VkSwapchainCreateInfoKHR-flags-parameter flags must be a valid combination of   values/VUID-VkSwapchainCreateInfoKHR-surface-parameter surface must be a valid M handle3VUID-VkSwapchainCreateInfoKHR-imageFormat-parameter  imageFormat must be a valid K value7VUID-VkSwapchainCreateInfoKHR-imageColorSpace-parameter imageColorSpace must be a valid   value2VUID-VkSwapchainCreateInfoKHR-imageUsage-parameter  imageUsage must be a valid combination of  values8VUID-VkSwapchainCreateInfoKHR-imageUsage-requiredbitmask  imageUsage must not be 08VUID-VkSwapchainCreateInfoKHR-imageSharingMode-parameter imageSharingMode must be a valid  value4VUID-VkSwapchainCreateInfoKHR-preTransform-parameter  preTransform must be a valid   value6VUID-VkSwapchainCreateInfoKHR-compositeAlpha-parameter compositeAlpha must be a valid   value3VUID-VkSwapchainCreateInfoKHR-presentMode-parameter  presentMode must be a valid  value4VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parameter If  oldSwapchain is not 8,  oldSwapchain must be a valid L handle1VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parent If  oldSwapchain is a valid handle, it must6 have been created, allocated, or retrieved from surface*VUID-VkSwapchainCreateInfoKHR-commonparent Both of  oldSwapchain , and surface7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same /See Alsop,  ,  , u, K, S, , , C, M,  ,  , L, e,  vulkanKVkPresentInfoKHR - Structure describing parameters of a queue presentation DescriptionBefore an application can& present an image, the image s layout must be transitioned to the 1 layout, or for a shared presentable image the  layout.Note!When transitioning the image to  or ^, 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 5 should be set to 0 , and the  dstStageMask parameter should be set to . Valid Usage)VUID-VkPresentInfoKHR-pImageIndices-01430 Each element of  pImageIndices musty be the index of a presentable image acquired from the swapchain specified by the corresponding element of the  pSwapchains, array, and the presented image subresource must be in the  or = layout at the time the operation is executed on a Valid Usage (Implicit)!VUID-VkPresentInfoKHR-sType-sType sType must be !VUID-VkPresentInfoKHR-pNext-pNext 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 ="VUID-VkPresentInfoKHR-sType-unique The sType" value of each struct in the pNext chain must be unique/VUID-VkPresentInfoKHR-pWaitSemaphores-parameter If waitSemaphoreCount is not 0, pWaitSemaphores must( be a valid pointer to an array of waitSemaphoreCount valid w handles+VUID-VkPresentInfoKHR-pSwapchains-parameter  pSwapchains must( be a valid pointer to an array of swapchainCount valid L handles-VUID-VkPresentInfoKHR-pImageIndices-parameter  pImageIndices must# be a valid pointer to an array of swapchainCount uint32_t values(VUID-VkPresentInfoKHR-pResults-parameter If pResults is not NULL, pResults must( be a valid pointer to an array of swapchainCount ` values0VUID-VkPresentInfoKHR-swapchainCount-arraylength swapchainCount must be greater than 0"VUID-VkPresentInfoKHR-commonparent Both of the elements of  pSwapchains, and the elements of pWaitSemaphores7 that are valid handles of non-ignored parameters mustD have been created, allocated, or retrieved from the same /See Also`, w, C, L,  vulkanXVkImageSwapchainCreateInfoKHR - Specify that an image will be bound to swapchain memory Valid Usage2VUID-VkImageSwapchainCreateInfoKHR-swapchain-00995 If  swapchain is not 8, 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).VUID-VkImageSwapchainCreateInfoKHR-sType-sType sType must be 6VUID-VkImageSwapchainCreateInfoKHR-swapchain-parameter If  swapchain is not 8,  swapchain must be a valid L handleSee AlsoC, LvulkanjVkDeviceGroupSwapchainCreateInfoKHR - 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, CvulkaneVkDeviceGroupPresentInfoKHR - 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 Usage5VUID-VkDeviceGroupPresentInfoKHR-swapchainCount-01297 swapchainCount must equal 0 or ::swapchainCount+VUID-VkDeviceGroupPresentInfoKHR-mode-01298 If mode is  , then each element of  pDeviceMasks mustF have exactly one bit set, and the corresponding element of :: presentMask must be non-zero+VUID-VkDeviceGroupPresentInfoKHR-mode-01299 If 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 :: presentMask+VUID-VkDeviceGroupPresentInfoKHR-mode-01300 If mode is  , then each element of  pDeviceMasks mustQ have a value for which all set bits are set in one of the elements of :: presentMask+VUID-VkDeviceGroupPresentInfoKHR-mode-01301 If mode is  0, then for each bit set in each element of  pDeviceMasks$, the corresponding element of :: presentMask must be non-zero3VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-01302# The value of each element of  pDeviceMasks must, be equal to the device mask passed in :: deviceMask, when the image index was last acquired+VUID-VkDeviceGroupPresentInfoKHR-mode-01303 mode must- have exactly one bit set, and that bit must have been included in ::modesValid Usage (Implicit),VUID-VkDeviceGroupPresentInfoKHR-sType-sType sType must be 7VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-parameter If swapchainCount is not 0,  pDeviceMasks must( be a valid pointer to an array of swapchainCount uint32_t values/VUID-VkDeviceGroupPresentInfoKHR-mode-parameter mode must be a valid  valueSee Also, CvulkanWVkDeviceGroupPresentCapabilitiesKHR - 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, C,  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 Usage7VUID-VkBindImageMemorySwapchainInfoKHR-imageIndex-01644  imageIndex must& be less than the number of images in  swapchainValid Usage (Implicit)2VUID-VkBindImageMemorySwapchainInfoKHR-sType-sType sType must be :VUID-VkBindImageMemorySwapchainInfoKHR-swapchain-parameter  swapchain must be a valid L handleHost SynchronizationHost access to  swapchain must be externally synchronizedSee AlsoC, LvulkanKVkAcquireNextImageInfoKHR - 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.VUID-VkAcquireNextImageInfoKHR-swapchain-01675  swapchain must! not be in the retired state.VUID-VkAcquireNextImageInfoKHR-semaphore-01288 If  semaphore is not 8 it must be unsignaled.VUID-VkAcquireNextImageInfoKHR-semaphore-01781 If  semaphore is not 8 it must@ not have any uncompleted signal or wait operations pending*VUID-VkAcquireNextImageInfoKHR-fence-01289 If fence is not 8 it must be unsignaled and mustg not be associated with any other queue command that has not yet completed execution on that queue.VUID-VkAcquireNextImageInfoKHR-semaphore-01782  semaphore and fence must not both be equal to 8/VUID-VkAcquireNextImageInfoKHR-deviceMask-01290  deviceMask must be a valid device mask/VUID-VkAcquireNextImageInfoKHR-deviceMask-01291  deviceMask must not be zero.VUID-VkAcquireNextImageInfoKHR-semaphore-03266  semaphore must have a * of *Valid Usage (Implicit)*VUID-VkAcquireNextImageInfoKHR-sType-sType sType must be *VUID-VkAcquireNextImageInfoKHR-pNext-pNext pNext must be NULL2VUID-VkAcquireNextImageInfoKHR-swapchain-parameter  swapchain must be a valid L handle2VUID-VkAcquireNextImageInfoKHR-semaphore-parameter If  semaphore is not 8,  semaphore must be a valid w handle.VUID-VkAcquireNextImageInfoKHR-fence-parameter If fence is not 8, fence must be a valid  handle+VUID-VkAcquireNextImageInfoKHR-commonparent Each 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, w, C, L,  vulkanEVkSwapchainCreateFlagBitsKHR - Bitmask controlling swapchain creationSee Also vulkanmodes+ is a bitfield of modes that the swapchain can be used with.8VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-parameter modes must be a valid combination of  values>VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-requiredbitmask modes 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. vulkan swapchain< is a non-retired swapchain from which an image is acquired. vulkantimeoutR specifies how long the function waits, in nanoseconds, if no image is available. vulkan semaphore is 8 or a semaphore to signal. vulkanfence is 8 or a fence to signal. vulkan deviceMask{ is a mask of physical devices for which the swapchain image will be ready to use when the semaphore or fence is signaled. vulkan swapchain is 8 or a swapchain handle. vulkan imageIndex is an image index within  swapchain. vulkan swapchain is 8= or a handle of a swapchain that the image will be bound to. vulkan 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. vulkanmodes is a bitmask of A indicating which device group presentation modes are supported. vulkanpNext is NULL6 or a pointer to a structure extending this structure. vulkanpWaitSemaphores is NULL or a pointer to an array of w objects with waitSemaphoreCountX entries, and specifies the semaphores to wait for before issuing the present request. vulkan pSwapchains is a pointer to an array of L objects with swapchainCount entries. A given swapchain must) not appear in this list more than once. vulkan 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. vulkanpResults 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. vulkanpNext is NULL6 or a pointer to a structure extending this structure. vulkanflags is a bitmask of  2 indicating parameters of the swapchain creation. vulkansurface is the surface onto which the swapchain will present images. If the creation succeeds, the swapchain becomes associated with surface. vulkan 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. vulkan imageFormat is a KJ 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 . vulkan H specifies that images created from the swapchain are protected images. vulkan B specifies that images created from the swapchain (i.e. with the  swapchain member of ! set to this swapchain s handle) must use . 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 7 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. vulkan F 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. When the M in ! is a display surface, then the p in display surface s P" is associated with a particular p. Swapchain creation may fail if that p8 is not acquired by the application. In this scenario > is returned.Valid Usage (Implicit)*VUID-vkCreateSwapchainKHR-device-parameter device must be a valid  handle/VUID-vkCreateSwapchainKHR-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure.VUID-vkCreateSwapchainKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure.VUID-vkCreateSwapchainKHR-pSwapchain-parameter  pSwapchain must be a valid pointer to a L 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?=%&>See Also, , , L vulkan=A convenience wrapper to make a compatible pair of calls to   and  To ensure that   is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last 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 M, 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*VUID-vkDestroySwapchainKHR-swapchain-012823 All uses of presentable images acquired from  swapchain must have completed execution*VUID-vkDestroySwapchainKHR-swapchain-01283 If  were provided when  swapchain1 was created, a compatible set of callbacks must be provided here*VUID-vkDestroySwapchainKHR-swapchain-01284 If no  were provided when  swapchain was created,  pAllocator must be NULLValid Usage (Implicit)+VUID-vkDestroySwapchainKHR-device-parameter device must be a valid  handle.VUID-vkDestroySwapchainKHR-swapchain-parameter If  swapchain is not 8,  swapchain must be a valid L handle/VUID-vkDestroySwapchainKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure'VUID-vkDestroySwapchainKHR-commonparent Both of device , and  swapchain2 that are valid handles of non-ignored parameters mustD have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  swapchain must be externally synchronizedSee Also, , L vulkan]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, A will be returned instead of F> to indicate that not all the available values were returned.Valid Usage (Implicit)-VUID-vkGetSwapchainImagesKHR-device-parameter device must be a valid  handle0VUID-vkGetSwapchainImagesKHR-swapchain-parameter  swapchain must be a valid L handle;VUID-vkGetSwapchainImagesKHR-pSwapchainImageCount-parameter pSwapchainImageCount must be a valid pointer to a uint32_t value7VUID-vkGetSwapchainImagesKHR-pSwapchainImages-parameter! If the value referenced by pSwapchainImageCount is not 0 , and pSwapchainImages is not NULL, pSwapchainImages must( be a valid pointer to an array of pSwapchainImageCount  handles)VUID-vkGetSwapchainImagesKHR-commonparent Both of device , and  swapchain must? 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-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , L5Gvulkan,acquireNextImageKHR with selectable safeness vulkanSvkAcquireNextImageKHR - Retrieve the index of the next available presentable image Valid Usage*VUID-vkAcquireNextImageKHR-swapchain-01285  swapchain must! not be in the retired state*VUID-vkAcquireNextImageKHR-semaphore-01286 If  semaphore is not 8 it must be unsignaled*VUID-vkAcquireNextImageKHR-semaphore-01779 If  semaphore is not 8 it must@ not have any uncompleted signal or wait operations pending&VUID-vkAcquireNextImageKHR-fence-01287 If fence is not 8 it must be unsignaled and mustg not be associated with any other queue command that has not yet completed execution on that queue*VUID-vkAcquireNextImageKHR-semaphore-01780  semaphore and fence must not both be equal to 8*VUID-vkAcquireNextImageKHR-swapchain-01802u If 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  with the surface used to create  swapchain, timeout must not be  UINT64_MAX*VUID-vkAcquireNextImageKHR-semaphore-03265  semaphore must have a * of *Valid Usage (Implicit)+VUID-vkAcquireNextImageKHR-device-parameter device must be a valid  handle.VUID-vkAcquireNextImageKHR-swapchain-parameter  swapchain must be a valid L handle.VUID-vkAcquireNextImageKHR-semaphore-parameter If  semaphore is not 8,  semaphore must be a valid w handle*VUID-vkAcquireNextImageKHR-fence-parameter If fence is not 8, fence must be a valid  handle0VUID-vkAcquireNextImageKHR-pImageIndex-parameter  pImageIndex must be a valid pointer to a uint32_t value+VUID-vkAcquireNextImageKHR-semaphore-parent If  semaphore is a valid handle, it must6 have been created, allocated, or retrieved from device'VUID-vkAcquireNextImageKHR-fence-parent If fence is a valid handle, it must6 have been created, allocated, or retrieved from device'VUID-vkAcquireNextImageKHR-commonparent Both of device , and  swapchain2 that are valid handles of non-ignored parameters mustD 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-successcodesSuccessFDE'  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?=(%.See Also, , w, L vulkan A variant of   which makes a *safe* FFI call vulkan3vkQueuePresentKHR - 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 Usage(VUID-vkQueuePresentKHR-pSwapchains-01292 Each 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 (VUID-vkQueuePresentKHR-pSwapchains-01293! If more than one member of  pSwapchainsi was created from a display surface, all display surfaces referenced that refer to the same display must use the same display mode,VUID-vkQueuePresentKHR-pWaitSemaphores-01294j When a semaphore wait operation referring to a binary semaphore defined by the elements of the pWaitSemaphores member of  pPresentInfo executes on queue , there must1 be no other queues waiting on the same semaphore,VUID-vkQueuePresentKHR-pWaitSemaphores-01295 All elements of the pWaitSemaphores member of  pPresentInfo 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 execution,VUID-vkQueuePresentKHR-pWaitSemaphores-03267 All elements of the pWaitSemaphores member of  pPresentInfo must be created with a * of *,VUID-vkQueuePresentKHR-pWaitSemaphores-03268 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  1., 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 , . 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)&VUID-vkQueuePresentKHR-queue-parameter queue must be a valid { handle-VUID-vkQueuePresentKHR-pPresentInfo-parameter  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-successcodesSuccessF'  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?=(%.See Also, { vulkan`vkGetDeviceGroupPresentCapabilitiesKHR - Query present capabilities from other physical devices Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See 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)<VUID-vkGetDeviceGroupSurfacePresentModesKHR-device-parameter device must be a valid  handle=VUID-vkGetDeviceGroupSurfacePresentModesKHR-surface-parameter surface must be a valid M handle<VUID-vkGetDeviceGroupSurfacePresentModesKHR-pModes-parameter pModes must be a valid pointer to a  value8VUID-vkGetDeviceGroupSurfacePresentModesKHR-commonparent Both 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?%See Also, , M5Hvulkan-acquireNextImage2KHR with selectable safeness vulkanTvkAcquireNextImage2KHR - Retrieve the index of the next available presentable image Valid Usage+VUID-vkAcquireNextImage2KHR-swapchain-01803y If 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  with the surface used to create  swapchain, the timeout member of  pAcquireInfo must not be  UINT64_MAXValid Usage (Implicit),VUID-vkAcquireNextImage2KHR-device-parameter device must be a valid  handle2VUID-vkAcquireNextImage2KHR-pAcquireInfo-parameter  pAcquireInfo must be a valid pointer to a valid  structure1VUID-vkAcquireNextImage2KHR-pImageIndex-parameter  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-successcodesSuccessFDE'  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?=(%.See Also,  vulkan A variant of   which makes a *safe* FFI call vulkanfvkGetPhysicalDevicePresentRectanglesKHR - 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, A will be returned instead of F> 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)EVUID-vkGetPhysicalDevicePresentRectanglesKHR-physicalDevice-parameter physicalDevice must be a valid  handle>VUID-vkGetPhysicalDevicePresentRectanglesKHR-surface-parameter surface must be a valid M handleAVUID-vkGetPhysicalDevicePresentRectanglesKHR-pRectCount-parameter  pRectCount must be a valid pointer to a uint32_t value=VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRects-parameter! If the value referenced by  pRectCount is not 0, and pRects is not NULL, pRects must( be a valid pointer to an array of  pRectCount q structures9VUID-vkGetPhysicalDevicePresentRectanglesKHR-commonparent Both of physicalDevice, 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-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, q, M 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.5Gvulkandevice 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 8 or a semaphore to signal.vulkanfence is 8 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 8 or a semaphore to signal.vulkanfence is 8 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 8 or a semaphore to signal.vulkanfence is 8 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.<VUID-vkGetDeviceGroupPresentCapabilitiesKHR-device-parameter device must be a valid  handle vulkandevice is the logical device.vulkansurface is the surface.5Hvulkandevice 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.LM  K J I H G F           1 0 / . - , + * )    5 4 3 2    8 E D C B A @ ? > = < ; : 9 7 6 ݪ          ML  K J I H G F K J I H G F   8 E D C B A @ ? > = < ; : 9 7 6 8 E D C B A @ ? > = < ; : 9 7 6   5 4 3 2 5 4 3 2    1 0 / . - , + * ) 1 0 / . - , + * ) None("#%&'-./1789;=>?FHIMSUVX_dghklmqJG !!!! !!!! None("#%&'-./1789;=>?FHIMSUVX_dghklmqJ   8 E D C B A @ ? > = < ; : 9 7 6!!!! !!'!!!! !!   8 E D C B A @ ? > = < ; : 9 7 6 8 E D C B A @ ? > = < ; : 9 7 6None("#%&'-./1789;=>?FHIMSUVX_dghklmqJvulkanoVkSharedPresentSurfaceCapabilitiesKHR - structure describing capabilities of a surface for shared presentationValid Usage (Implicit)See AlsoS, C!%vulkan sharedPresentSupportedUsageFlags is a bitmask of ( representing the ways the application canA use the shared presentable image from a swapchain created with  set to  F or  G, for the surface on the specified device.  must, be included in the set but implementations may support additional usages.!(vulkan2vkGetSwapchainStatusKHR - Get a swapchain s statusValid Usage (Implicit)-VUID-vkGetSwapchainStatusKHR-device-parameter device must be a valid  handle0VUID-vkGetSwapchainStatusKHR-swapchain-parameter  swapchain must be a valid L handle)VUID-vkGetSwapchainStatusKHR-commonparent Both of device , and  swapchain must? 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-successcodesSuccessF'  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?=(%.See Also, L!(vulkandevice is the device associated with  swapchain.vulkan swapchain is the swapchain to query.L!$!%  K J I H G F!"!#!&!'!(!(!$!%!#!'!"!&L  K J I H G F K J I H G FNone("#%&'-./1789;=>?FHIMSUVX_dghklmqJ2 vulkanNVkSurfaceFormat2KHR - Structure describing a supported swapchain format tupleValid Usage (Implicit)See AlsoC, , !<vulkanKVkSurfaceCapabilities2KHR - Structure describing capabilities of a surfaceValid Usage (Implicit)*VUID-VkSurfaceCapabilities2KHR-sType-sType sType must be *VUID-VkSurfaceCapabilities2KHR-pNext-pNext 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 Z, , , or +VUID-VkSurfaceCapabilities2KHR-sType-unique The sType" value of each struct in the pNext chain must be uniqueSee AlsoC, , !;vulkankVkPhysicalDeviceSurfaceInfo2KHR - Structure specifying a surface and related swapchain creation parameters DescriptionThe members of " correspond to the arguments to , 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 Usage0VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-02672 If the pNext chain includes a  structure with its fullScreenExclusive member set to  , and surface was created using j , a  structure must be included in the pNext chainValid Usage (Implicit)0VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-sType sType must be 0VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-pNext 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 1VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-unique The sType" value of each struct in the pNext chain must be unique6VUID-VkPhysicalDeviceSurfaceInfo2KHR-surface-parameter surface must be a valid M handleSee AlsoC, M, %, !;, !<, !2vulkan surfaceFormat is a ` structure describing a format-color space pair that is compatible with the specified surface.!4vulkanpNext is NULL6 or a pointer to a structure extending this structure.!5vulkansurfaceCapabilities is a A structure describing the capabilities of the specified surface.!7vulkanpNext is NULL6 or a pointer to a structure extending this structure.!8vulkansurface; is the surface that will be associated with the swapchain.!;vulkandvkGetPhysicalDeviceSurfaceCapabilities2KHR - Reports capabilities of a surface on a physical device Description!; behaves similarly to , with the ability to specify extended inputs via chained input structures, and to return extended information via chained output structures. Valid Usage;VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-02671 If a # structure is included in the pNext chain of pSurfaceCapabilities , a  structure must be included in the pNext chain of  pSurfaceInfoValid Usage (Implicit)HVUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-physicalDevice-parameter physicalDevice must be a valid  handleFVUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceInfo-parameter  pSurfaceInfo must$ be a valid pointer to a valid  structureNVUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceCapabilities-parameter pSurfaceCapabilities must be a valid pointer to a  structure Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?%See Also, , !<vulkanQvkGetPhysicalDeviceSurfaceFormats2KHR - Query color formats supported by surface Description!< behaves similarly to ', 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, A will be returned instead of F> to indicate that not all the available values were returned. Valid Usage=VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-02740 pSurfaceInfo->surface must be supported by physicalDevice, as reported by 2 or an equivalent platform-specific mechanismValid Usage (Implicit)CVUID-vkGetPhysicalDeviceSurfaceFormats2KHR-physicalDevice-parameter physicalDevice must be a valid  handleAVUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-parameter  pSurfaceInfo must$ be a valid pointer to a valid  structureHVUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormatCount-parameter pSurfaceFormatCount must be a valid pointer to a uint32_t valueDVUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormats-parameter! If the value referenced by pSurfaceFormatCount is not 0 , and pSurfaceFormats is not NULL, pSurfaceFormats must( be a valid pointer to an array of pSurfaceFormatCount  structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?%See Also, , !;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 Y 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 Y structure describing the surface and other fixed parameters that would be consumed by ".HM!1!2!3!4!5!6!7!8        ! " # $ % &   1 0 / . - , + * )    5 4 3 2    8 E D C B A @ ? > = < ; : 9 7 6!/!0!9!:!;! = < ; : 9 7 6 8 E D C B A @ ? > = < ; : 9 7 6   5 4 3 2 5 4 3 2    1 0 / . - , + * ) 1 0 / . - , + * ) None("#%&'-./1789;=>?FHIMSUVX_dghklmqJuvulkanaVkDisplayPresentInfoKHR - 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 Usage*VUID-VkDisplayPresentInfoKHR-srcRect-01257 srcRect mustU specify a rectangular region that is a subset of the image being presented*VUID-VkDisplayPresentInfoKHR-dstRect-01258 dstRect must; specify a rectangular region that is a subset of the  visibleRegionF parameter of the display mode the swapchain being presented uses4VUID-VkDisplayPresentInfoKHR-persistentContent-01259 If the persistentContent member of the ! structure returned by 9 for the display the present operation targets then  persistent must be .Valid Usage (Implicit)(VUID-VkDisplayPresentInfoKHR-sType-sType sType must be See Alsop, q, C!OvulkansrcRect2 is a rectangular region of pixels to present. It must/ be a subset of the image being presented. If T is not specified, this region will be assumed to be the entire presentable image.!PvulkandstRectX is a rectangular region within the visible region of the swapchain s display mode. If 5 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.!Qvulkan 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 5 is not specified, persistent mode will not be used.!TvulkanWvkCreateSharedSwapchainsKHR - Create multiple swapchains that share presentable images Description!T 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 h. After destroying one or more of the swapchains, the remaining swapchains and the presentable images can continue to be used.Valid Usage (Implicit)1VUID-vkCreateSharedSwapchainsKHR-device-parameter device must be a valid  handle7VUID-vkCreateSharedSwapchainsKHR-pCreateInfos-parameter  pCreateInfos must( be a valid pointer to an array of swapchainCount valid  structures5VUID-vkCreateSharedSwapchainsKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure6VUID-vkCreateSharedSwapchainsKHR-pSwapchains-parameter  pSwapchains must( be a valid pointer to an array of swapchainCount L handles;VUID-vkCreateSharedSwapchainsKHR-swapchainCount-arraylength swapchainCount 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?)=%See Also, , , L!Tvulkandevice, 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).SLM!N!O!P!Q  K J I H G F   1 0 / . - , + * )    5 4 3 2    8 E D C B A @ ? > = < ; : 9 7 6 !L!M!R!S!Ty!T!N!O!P!Q!M!S!L!RML   K J I H G F K J I H G F   8 E D C B A @ ? > = < ; : 9 7 6 8 E D C B A @ ? > = < ; : 9 7 6   5 4 3 2 5 4 3 2    1 0 / . - , + * ) 1 0 / . - , + * )  None("#%&'-./1789;=>?FHIMSUVX_dghklmqL;J2vulkanpVkDisplaySurfaceCreateInfoKHR - 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 Usage3VUID-VkDisplaySurfaceCreateInfoKHR-planeIndex-01252  planeIndex mustf be less than the number of display planes supported by the device as determined by calling !=VUID-VkDisplaySurfaceCreateInfoKHR-planeReorderPossible-01253 If the planeReorderPossible member of the  structure returned by !' 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 !; otherwise planeStackIndex must equal the currentStackIndex member of  returned by !- for the display plane corresponding to  displayMode2VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01254 If  alphaMode is ! then  globalAlpha must be between 0 and 1 , inclusive2VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01255  alphaMode must# be one of the bits present in the supportedAlpha member of - for the display plane corresponding to  displayMode.VUID-VkDisplaySurfaceCreateInfoKHR-width-01256 The width and height members of  imageExtent must be less than or equal to  ::maxImageDimension2DValid Usage (Implicit).VUID-VkDisplaySurfaceCreateInfoKHR-sType-sType sType must be .VUID-VkDisplaySurfaceCreateInfoKHR-pNext-pNext pNext must be NULL4VUID-VkDisplaySurfaceCreateInfoKHR-flags-zerobitmask flags must be 08VUID-VkDisplaySurfaceCreateInfoKHR-displayMode-parameter  displayMode must be a valid Q handle6VUID-VkDisplaySurfaceCreateInfoKHR-transform-parameter  transform must be a valid   value6VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-parameter  alphaMode must be a valid !\ valueSee AlsoQ, !\, !_, u, C,  , !vulkanJVkDisplayPropertiesKHR - 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 Alsop, R, O, u,  , !vulkanLVkDisplayPlanePropertiesKHR - Structure describing display plane propertiesSee AlsoR, L, !vulkanbVkDisplayPlaneCapabilitiesKHR - 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. The value supportedAlpha must contain at least one valid !\ bit.These values indicate the limits of the implementation s individual fields. Not all combinations of values within the offset and extent ranges returned in ] are guaranteed to be supported. Presentation requests specifying unsupported combinations may fail.See Also!^, J, u, s, !vulkanJVkDisplayModePropertiesKHR - Structure describing display mode propertiesSee AlsoQ, , H, !vulkandVkDisplayModeParametersKHR - Structure describing display parameters associated with a display mode DescriptionNote0For example, a 60Hz display mode would report a  refreshRate of 60,000. Valid Usage+VUID-VkDisplayModeParametersKHR-width-01990 The width member of  visibleRegion must be greater than 0,VUID-VkDisplayModeParametersKHR-height-01991 The height member of  visibleRegion must be greater than 01VUID-VkDisplayModeParametersKHR-refreshRate-01992  refreshRate must be greater than 0See Also, , uvulkandVkDisplayModeCreateInfoKHR - Structure specifying parameters of a newly created display mode objectValid Usage (Implicit)See Also!a, , C, !!\vulkan4VkDisplayPlaneAlphaFlagBitsKHR - Alpha blending typeSee Also!^, !_vulkan8VkDisplaySurfaceCreateFlagsKHR - Reserved for future use Description!_Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also!avulkan5VkDisplayModeCreateFlagsKHR - Reserved for future use Description!aQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also!dvulkanflags! is reserved for future use, and must be zero.!evulkan displayMode is a QA handle specifying the mode to use when displaying this surface.!fvulkan planeIndex, is the plane on which this surface appears.!gvulkanplaneStackIndex is the z-order of the plane.!hvulkan transform is a  [ value specifying the transformation to apply to images as part of the scanout operation.!ivulkan globalAlpha6 is the global alpha value. This value is ignored if  alphaMode is not !.!jvulkan alphaMode is a !\5 value specifying the type of alpha blending to use.!kvulkan imageExtent= The size of the presentable images to use with the surface.!mvulkansupportedAlpha is a bitmask of !\0 describing the supported alpha blending modes.!nvulkanminSrcPositionZ is the minimum source rectangle offset supported by this plane using the specified mode.!ovulkanmaxSrcPosition_ 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.!pvulkan minSrcExtentX is the minimum source rectangle size supported by this plane using the specified mode.!qvulkan maxSrcExtentX is the maximum source rectangle size supported by this plane using the specified mode.!rvulkanminDstPosition, 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.!wvulkanflags! is reserved for future use, and must be zero.1VUID-VkDisplayModeCreateInfoKHR-flags-zerobitmask flags must be 0!xvulkan parameters is a  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 >.4VUID-VkDisplayModeCreateInfoKHR-parameters-parameter  parameters must be a valid  structure!zvulkan displayMode is a handle to the display mode described in this structure. This handle will be valid for the lifetime of the Vulkan instance.!{vulkan parameters is a > structure describing the display parameters associated with  displayMode.!}vulkan visibleRegion) is the 2D extents of the visible region.!~vulkan refreshRate is a uint32_tV that is the number of times the display is refreshed each second multiplied by 1000.!vulkancurrentDisplay 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 8.!vulkancurrentStackIndexY is the current z-order of the plane. This will be between 0 and the value returned by ! in pPropertyCount.!vulkandisplay 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.!vulkan 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.!vulkanphysicalDimensions` describes the physical width and height of the visible portion of the display, in millimeters.!vulkanphysicalResolutionI describes the physical, native, or preferred resolution of the display.!vulkansupportedTransforms is a bitmask of  < describing which transforms are supported by this display.!vulkanplaneReorderPossible* 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.!vulkanpersistentContentg 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.!vulkan! is equivalent to !p, except the source alpha values are assumed to be premultiplied into the source image s other color channels.!vulkan! 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.!vulkan!& specifies that a global alpha value mustF be specified that will be applied to all pixels in the source image.!vulkan!< specifies that the source image will be treated as opaque.!vulkanYvkGetPhysicalDeviceDisplayPropertiesKHR - 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, A will be returned instead of F> to indicate that not all the available values were returned.Valid Usage (Implicit)EVUID-vkGetPhysicalDeviceDisplayPropertiesKHR-physicalDevice-parameter physicalDevice must be a valid  handleEVUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t valueBVUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pProperties-parameter! If 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-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, !vulkanJvkGetPhysicalDeviceDisplayPlanePropertiesKHR - 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)JVUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-physicalDevice-parameter physicalDevice must be a valid  handleJVUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t valueGVUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pProperties-parameter! If 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-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, !vulkanTvkGetDisplayPlaneSupportedDisplaysKHR - 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, A will be returned instead of F> to indicate that not all the available values were returned. Valid Usage;VUID-vkGetDisplayPlaneSupportedDisplaysKHR-planeIndex-01249  planeIndex mustf be less than the number of display planes supported by the device as determined by calling !Valid Usage (Implicit)CVUID-vkGetDisplayPlaneSupportedDisplaysKHR-physicalDevice-parameter physicalDevice must be a valid  handleBVUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplayCount-parameter  pDisplayCount must be a valid pointer to a uint32_t value>VUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplays-parameter! If the value referenced by  pDisplayCount is not 0, and  pDisplays is not NULL,  pDisplays must( be a valid pointer to an array of  pDisplayCount R handles Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See AlsoR, !vulkanZvkGetDisplayModePropertiesKHR - 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, A will be returned instead of F> to indicate that not all the available values were returned.Valid Usage (Implicit);VUID-vkGetDisplayModePropertiesKHR-physicalDevice-parameter physicalDevice must be a valid  handle4VUID-vkGetDisplayModePropertiesKHR-display-parameter display must be a valid R handle;VUID-vkGetDisplayModePropertiesKHR-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t value8VUID-vkGetDisplayModePropertiesKHR-pProperties-parameter! If the value referenced by pPropertyCount is not 0, and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount  structures1VUID-vkGetDisplayModePropertiesKHR-display-parent display 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-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See AlsoR, , !vulkan.vkCreateDisplayModeKHR - Create a display modeValid Usage (Implicit)4VUID-vkCreateDisplayModeKHR-physicalDevice-parameter physicalDevice must be a valid  handle-VUID-vkCreateDisplayModeKHR-display-parameter display must be a valid R handle1VUID-vkCreateDisplayModeKHR-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure0VUID-vkCreateDisplayModeKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure+VUID-vkCreateDisplayModeKHR-pMode-parameter pMode must be a valid pointer to a Q handle*VUID-vkCreateDisplayModeKHR-display-parent display 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?>See Also, R, , Q, !vulkanVvkGetDisplayPlaneCapabilitiesKHR - Query capabilities of a mode and plane combinationValid Usage (Implicit)>VUID-vkGetDisplayPlaneCapabilitiesKHR-physicalDevice-parameter physicalDevice must be a valid  handle4VUID-vkGetDisplayPlaneCapabilitiesKHR-mode-parameter mode must be a valid Q handle=VUID-vkGetDisplayPlaneCapabilitiesKHR-pCapabilities-parameter  pCapabilities must be a valid pointer to a  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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See AlsoQ, , !vulkan+vkCreateDisplayPlaneSurfaceKHR - Create a M1 structure representing a display plane and modeValid Usage (Implicit)6VUID-vkCreateDisplayPlaneSurfaceKHR-instance-parameter instance must be a valid  handle9VUID-vkCreateDisplayPlaneSurfaceKHR-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure8VUID-vkCreateDisplayPlaneSurfaceKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure6VUID-vkCreateDisplayPlaneSurfaceKHR-pSurface-parameter pSurface 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , , M!vulkanphysicalDevice is a physical device.!vulkanphysicalDevice is a physical device.!vulkanphysicalDevice 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].!vulkanphysicalDevice( is the physical device associated with display.vulkandisplay is the display to query.!vulkanphysicalDevice( is the physical device associated with display.vulkandisplay1 is the display to create an additional mode for.vulkan pCreateInfo is a . 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 [ 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).VMQR!c!h!d!f!k!e!g!i!j!!!!!!!!!!!!l!m!n!o!p!q!r!s!t!u!y!z!{!|!}!~!v!w!x   1 0 / . - , + * ) !Z![!\!!!!!]!^!_!`!a!b!!!!!!!!!c!!!!!!!!!!!!!!!!!!!|!}!~!y!z!{!v!w!x!l!m!n!o!p!q!r!s!t!u!c!h!d!f!k!e!g!i!j!a!b!_!`!^!\!!!!!]!!!!![!!Z!RQM   1 0 / . - , + * ) 1 0 / . - , + * ) None("#%&'-./1789;=>?FHIMSUVX_dghklmqLvulkanKVkDisplayProperties2KHR - Structure describing an available display deviceValid Usage (Implicit)See Also, C, !vulkanOVkDisplayPlaneProperties2KHR - Structure describing an available display planeValid Usage (Implicit)See Also, C, !vulkanZVkDisplayPlaneInfo2KHR - 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 ! correspond to the arguments to , with sType and pNext added for extensibility.Valid Usage (Implicit)'VUID-VkDisplayPlaneInfo2KHR-sType-sType sType must be 'VUID-VkDisplayPlaneInfo2KHR-pNext-pNext pNext must be NULL*VUID-VkDisplayPlaneInfo2KHR-mode-parameter mode must be a valid Q handleHost SynchronizationHost access to mode must be externally synchronizedSee AlsoQ, C, !vulkangVkDisplayPlaneCapabilities2KHR - Structure describing the capabilities of a mode and plane combinationValid Usage (Implicit)See Also, C, !vulkanMVkDisplayModeProperties2KHR - Structure describing an available display modeValid Usage (Implicit)See Also, C, !!vulkan capabilities is a  structure.!vulkanmodeX is the display mode the application intends to program when using the specified plane.!vulkandisplayModeProperties is a  structure.!vulkandisplayPlaneProperties is a  structure.!vulkandisplayProperties is a  structure.!vulkanZvkGetPhysicalDeviceDisplayProperties2KHR - Query information about the available displays Description! behaves similarly to R, with the ability to return extended information via chained output structures.Valid Usage (Implicit)FVUID-vkGetPhysicalDeviceDisplayProperties2KHR-physicalDevice-parameter physicalDevice must be a valid  handleFVUID-vkGetPhysicalDeviceDisplayProperties2KHR-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t valueCVUID-vkGetPhysicalDeviceDisplayProperties2KHR-pProperties-parameter! If 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-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, !vulkanfvkGetPhysicalDeviceDisplayPlaneProperties2KHR - Query information about the available display planes. Description! behaves similarly to R, with the ability to return extended information via chained output structures.Valid Usage (Implicit)KVUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-physicalDevice-parameter physicalDevice must be a valid  handleKVUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t valueHVUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-pProperties-parameter! If 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-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, !vulkanVvkGetDisplayModeProperties2KHR - Query information about the available display modes. Description! behaves similarly to Q, with the ability to return extended information via chained output structures.Valid Usage (Implicit)<VUID-vkGetDisplayModeProperties2KHR-physicalDevice-parameter physicalDevice must be a valid  handle5VUID-vkGetDisplayModeProperties2KHR-display-parameter display must be a valid R handle<VUID-vkGetDisplayModeProperties2KHR-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t value9VUID-vkGetDisplayModeProperties2KHR-pProperties-parameter! If the value referenced by pPropertyCount is not 0, and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount  structures2VUID-vkGetDisplayModeProperties2KHR-display-parent display 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-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See AlsoR, , !vulkanWvkGetDisplayPlaneCapabilities2KHR - Query capabilities of a mode and plane combination Description! behaves similarly to , 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , !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.?VUID-vkGetDisplayPlaneCapabilities2KHR-physicalDevice-parameter physicalDevice must be a valid  handlevulkanpDisplayPlaneInfo is a pointer to a * structure describing the plane and mode.BVUID-vkGetDisplayPlaneCapabilities2KHR-pDisplayPlaneInfo-parameter pDisplayPlaneInfo must be a valid pointer to a valid  structureOQR!!!!!!!!!!!!l!m!n!o!p!q!r!s!t!u!y!z!{!|!}!~!!!!!!!!!!!   1 0 / . - , + * ) !\!]!!!!!^!!!!!!!!\!!!!!!!!!!!!!!!!!!!RQ!!!!!!!!!!!!|!}!~!y!z!{!l!m!n!o!p!q!r!s!t!u!\!]!!!!!!!!!^   1 0 / . - , + * ) 1 0 / . - , + * ) None("#%&'-./1789;=>?FHIMSUVX_dghklmqL7QLM       !!"""""""""" " " " " """"""""""""""""""X"""""""""""""""" """" " """""""""!" !" ML        None("#%&'-./1789;=>?FHIMSUVX_dghklmqM,"$vulkanAvkCreateDeferredOperationKHR - Create a deferred operation handleValid Usage (Implicit)2VUID-vkCreateDeferredOperationKHR-device-parameter device must be a valid  handle6VUID-vkCreateDeferredOperationKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure>VUID-vkCreateDeferredOperationKHR-pDeferredOperation-parameter pDeferredOperation 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@See Also, S, "%vulkan=A convenience wrapper to make a compatible pair of calls to "$ and "&To ensure that "& is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument."&vulkanCvkDestroyDeferredOperationKHR - Destroy a deferred operation handle Valid Usage2VUID-vkDestroyDeferredOperationKHR-operation-03434 If  were provided when  operation1 was created, a compatible set of callbacks must be provided here2VUID-vkDestroyDeferredOperationKHR-operation-03435 If no  were provided when  operation was created,  pAllocator must be NULL2VUID-vkDestroyDeferredOperationKHR-operation-03436  operation must be completedValid Usage (Implicit)3VUID-vkDestroyDeferredOperationKHR-device-parameter device must be a valid  handle6VUID-vkDestroyDeferredOperationKHR-operation-parameter If  operation is not 8,  operation must be a valid S handle7VUID-vkDestroyDeferredOperationKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure3VUID-vkDestroyDeferredOperationKHR-operation-parent If  operation is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  operation must be externally synchronizedSee Also, S, "'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 0) 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 AlsoS, "(vulkanKvkGetDeferredOperationResultKHR - Query the result of a deferred operation Description#If no command has been deferred on  operation, "( returns F.&If the deferred operation is pending, "( returns E.vIf the deferred operation is complete, it returns the appropriate return value from the original command. This value must be one of the `g 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-successcodesSuccessFESee AlsoS, ")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 F indicates that  operation is complete. The application should use "( to retrieve the result of  operation.A return value of 0 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 F.3If multiple threads have concurrently invoked ")7 on the same operation, then at least one of them must( complete the operation and return F.Valid Usage (Implicit)0VUID-vkDeferredOperationJoinKHR-device-parameter device must be a valid  handle3VUID-vkDeferredOperationJoinKHR-operation-parameter  operation must be a valid S handle0VUID-vkDeferredOperationJoinKHR-operation-parent  operation must1 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF0/  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See AlsoS, "$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.=VUID-vkGetDeferredOperationMaxConcurrencyKHR-device-parameter device must be a valid  handlevulkan operation) is the deferred operation to be queried.@VUID-vkGetDeferredOperationMaxConcurrencyKHR-operation-parameter  operation must be a valid S handle=VUID-vkGetDeferredOperationMaxConcurrencyKHR-operation-parent  operation must2 have been created, allocated, or retrieved from device"(vulkandevice is the device which owns  operation.5VUID-vkGetDeferredOperationResultKHR-device-parameter device must be a valid  handlevulkan operation9 is the operation whose deferred result is being queried.8VUID-vkGetDeferredOperationResultKHR-operation-parameter  operation must be a valid S handle5VUID-vkGetDeferredOperationResultKHR-operation-parent  operation must1 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. S" "!"""#"$"%"&"'"(") "$"%"&"'"(")"!"#" ""SNone("#%&'-./1789;=>?FHIMSUVX_dghklmqMZwvulkanjVkAndroidSurfaceCreateInfoKHR - Structure specifying parameters of a newly created Android surface objectValid Usage (Implicit)See Also"-, C, "4"-vulkan8VkAndroidSurfaceCreateFlagsKHR - Reserved for future use Description"-Q is a bitmask type for setting a mask, but is currently reserved for future use.See Alsow"0vulkanflags is reserved for future use.4VUID-VkAndroidSurfaceCreateInfoKHR-flags-zerobitmask flags must be 0"1vulkanwindow is a pointer to the "* to associate the surface with./VUID-VkAndroidSurfaceCreateInfoKHR-window-01248 window must point to a valid Android "*"4vulkan&vkCreateAndroidSurfaceKHR - Create a M% 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 M canA exist at a time for a given window. Similarly, a native window cannot be used by both a M and  EGLSurface simultaneously.If successful, "4 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)1VUID-vkCreateAndroidSurfaceKHR-instance-parameter instance must be a valid  handle4VUID-vkCreateAndroidSurfaceKHR-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid w structure3VUID-vkCreateAndroidSurfaceKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure1VUID-vkCreateAndroidSurfaceKHR-pSurface-parameter pSurface 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?&See Also, w, , M"4vulkaninstance/ is the instance to associate the surface with.vulkan pCreateInfo is a pointer to a wO 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).Mw"/"0"1"*"+","-"."2"3"4"4w"/"0"1"-".","3"+"2"*MNone("#%&'-./1789;=>?FHIMSUVX_dghklmqN$Pvulkan@VkPerformanceParameterTypeINTEL - Parameters that can be queriedSee Also"|QvulkanuVkQueryPoolPerformanceQueryCreateInfoINTEL - Structure specifying parameters to create a pool of performance queriesMembers5To create a pool for Intel performance queries, set :q:: queryType to # and add a Q structure to the pNext chain of the :q structure.Valid Usage (Implicit)See Also"K, CRvulkanZVkPerformanceValueINTEL - Container for value and types of parameters that can be queriedValid Usage (Implicit)+VUID-VkPerformanceValueINTEL-type-parameter type must be a valid "F value2VUID-VkPerformanceValueINTEL-valueString-parameter If type is "h, the  valueString member of data must" be a null-terminated UTF-8 stringSee Also"O, "F, "|SvulkanUVkPerformanceStreamMarkerInfoINTEL - Structure specifying stream performance markers Valid Usage4VUID-VkPerformanceStreamMarkerInfoINTEL-marker-027350 The value written by the application into marker must. only used the valid bits as reported by "| with the "mValid Usage (Implicit)3VUID-VkPerformanceStreamMarkerInfoINTEL-sType-sType sType must be 3VUID-VkPerformanceStreamMarkerInfoINTEL-pNext-pNext pNext must be NULLSee AlsoC, "wTvulkan:VkPerformanceOverrideInfoINTEL - Performance override infoValid Usage (Implicit)See Alsop, "I, C, "xUvulkanGVkPerformanceMarkerInfoINTEL - Structure specifying performance markersValid Usage (Implicit)See AlsoC, "vVvulkanaVkPerformanceConfigurationAcquireInfoINTEL - Acquire a configuration to capture performance dataValid Usage (Implicit)See Also"M, C, "yWvulkanbVkInitializePerformanceApiInfoINTEL - Structure specifying parameters of initialize of the deviceValid Usage (Implicit)See AlsoC, "t"FvulkanHVkPerformanceValueTypeINTEL - Type of the parameters that can be queriedSee AlsoR"Ivulkan:VkPerformanceOverrideTypeINTEL - Performance override typeSee AlsoT"KvulkanZVkQueryPoolSamplingModeINTEL - Enum specifying how performance queries should be capturedSee AlsoQ"MvulkanGVkPerformanceConfigurationTypeINTEL - Type of performance configurationSee AlsoV"Vvulkantype is one of the "M: type of performance configuration that will be acquired.>VUID-VkPerformanceConfigurationAcquireInfoINTEL-type-parameter type must be a valid "M value"Xvulkantype is the particular "I to set.2VUID-VkPerformanceOverrideInfoINTEL-type-parameter type must be a valid "I value"Yvulkanenable) defines whether the override is enabled."Zvulkan 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."`vulkanperformanceCountersSampling6 describe how performance queries should be captured.UVUID-VkQueryPoolPerformanceQueryCreateInfoINTEL-performanceCountersSampling-parameter performanceCountersSampling must be a valid "K value"bvulkan pUserData# is a pointer for application data."dvulkantype is a "F1 value specifying the type of the returned data."evulkandata is a "O2 union specifying the value of the returned data."mvulkan"mR has a 32 bits integer result which tells how many bits can be written into the R value."nvulkan"nM has a boolean result which tells whether hardware counters can be captured."ovulkan"o stalls the stream of commands until all previously emitted commands have completed and all caches been flushed and invalidated."pvulkan"p+ turns all rendering operations into noop."qvulkan"q5 is the default mode in which the application calls  and  to record performance data."tvulkanNvkInitializePerformanceApiINTEL - Initialize a device for performance queries Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure7@See Also, W"uvulkanRvkUninitializePerformanceApiINTEL - Uninitialize a device for performance queriesValid Usage (Implicit)See Also"vvulkan(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);VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-parameter  commandBuffer must be a valid  handle9VUID-vkCmdSetPerformanceMarkerINTEL-pMarkerInfo-parameter  pMarkerInfo must$ be a valid pointer to a valid U structure;VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state9VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-cmdpool The / that  commandBuffer was allocated from must7 support graphics, compute, or transfer operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure7@See Also, U"wvulkan.vkCmdSetPerformanceStreamMarkerINTEL - MarkersValid Usage (Implicit)AVUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-parameter  commandBuffer must be a valid  handle?VUID-vkCmdSetPerformanceStreamMarkerINTEL-pMarkerInfo-parameter  pMarkerInfo must$ be a valid pointer to a valid S structureAVUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state?VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-cmdpool The / that  commandBuffer was allocated from must7 support graphics, compute, or transfer operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure7@See Also, S"xvulkan@vkCmdSetPerformanceOverrideINTEL - Performance override settings Valid Usage9VUID-vkCmdSetPerformanceOverrideINTEL-pOverrideInfo-02736  pOverrideInfo must not be used with a "I( that is not reported available by "|Valid Usage (Implicit)=VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-parameter  commandBuffer must be a valid  handle=VUID-vkCmdSetPerformanceOverrideINTEL-pOverrideInfo-parameter  pOverrideInfo must$ be a valid pointer to a valid T structure=VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state;VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-cmdpool The / that  commandBuffer was allocated from must7 support graphics, compute, or transfer operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure7@See Also, T"yvulkanRvkAcquirePerformanceConfigurationINTEL - Acquire the performance query capability Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure7@See Also, V, O"zvulkan]vkReleasePerformanceConfigurationINTEL - Release a configuration to capture performance data Valid Usage?VUID-vkReleasePerformanceConfigurationINTEL-configuration-02737  configuration mustg 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 stateValid Usage (Implicit)<VUID-vkReleasePerformanceConfigurationINTEL-device-parameter device must be a valid  handleCVUID-vkReleasePerformanceConfigurationINTEL-configuration-parameter If  configuration is not 8,  configuration must be a valid O handle@VUID-vkReleasePerformanceConfigurationINTEL-configuration-parent If  configuration is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  configuration must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure7@See Also, O"{vulkanAvkQueueSetPerformanceConfigurationINTEL - Set a performance queryValid Usage (Implicit)<VUID-vkQueueSetPerformanceConfigurationINTEL-queue-parameter queue must be a valid { handleDVUID-vkQueueSetPerformanceConfigurationINTEL-configuration-parameter  configuration must be a valid O handle9VUID-vkQueueSetPerformanceConfigurationINTEL-commonparent Both 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure7@See AlsoO, {"|vulkanNvkGetPerformanceParameterINTEL - Query performance capabilities of the device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure7@See Also, P, R"tvulkandevice, is the logical device used for the queries.5VUID-vkInitializePerformanceApiINTEL-device-parameter device must be a valid  handlevulkanpInitializeInfo is a pointer to a W1 structure specifying initialization parameters.>VUID-vkInitializePerformanceApiINTEL-pInitializeInfo-parameter pInitializeInfo must be a valid pointer to a valid W structure"uvulkandevice, is the logical device used for the queries.7VUID-vkUninitializePerformanceApiINTEL-device-parameter device must be a valid  handle"xvulkan commandBuffer6 is the command buffer where the override takes place.vulkan pOverrideInfo is a pointer to a T0 structure selecting the parameter to override."yvulkandeviceQ is the logical device that the performance query commands will be submitted to.<VUID-vkAcquirePerformanceConfigurationINTEL-device-parameter device must be a valid  handlevulkan pAcquireInfo is a pointer to a VA structure, specifying the performance configuration to acquire.BVUID-vkAcquirePerformanceConfigurationINTEL-pAcquireInfo-parameter  pAcquireInfo must be a valid pointer to a valid V structure"zvulkandeviceB is the device associated to the configuration object to release.vulkan configuration( is the configuration object to release."{vulkanqueue6 is the queue on which the configuration will be used.vulkan configuration is the configuration to use."|vulkandevice is the logical device to query.4VUID-vkGetPerformanceParameterINTEL-device-parameter device must be a valid  handlevulkan parameter is the parameter to query.7VUID-vkGetPerformanceParameterINTEL-parameter-parameter  parameter must be a valid P valueEOP"n"m"HQ"_"`R"c"e"dS"["\T"W"X"Z"YU"]"^V"U"VW"a"b"C"D"E"F"l"k"j"i"h"G"I"p"o"J"K"q"L"M"r"N"O"P"Q"R"S"T"f"g"s"t"u"v"w"x"y"z"{"|"}P"t"u"v"w"x"y"z"{"|"sR"c"e"dW"a"bQ"_"`U"]"^S"["\T"W"X"Z"YV"U"V"O"P"Q"R"S"T"}"M"r"N"r"K"q"L"q"I"p"o"J"p"oP"n"m"H"n"m"F"l"k"j"i"h"G"l"k"j"i"h"E"D"g"C"fONone("#%&'-./1789;=>?FHIMSUVX_dghklmqO[<vulkanQVkRefreshCycleDurationGOOGLE - Structure containing the RC duration of a displaySee Also"=vulkanLVkPresentTimesInfoGOOGLE - The earliest time each image should be presented Valid Usage2VUID-VkPresentTimesInfoGOOGLE-swapchainCount-01247 swapchainCount must be the same value as l::swapchainCount , where l is included in the pNext chain of this = structureValid Usage (Implicit))VUID-VkPresentTimesInfoGOOGLE-sType-sType sType must be .VUID-VkPresentTimesInfoGOOGLE-pTimes-parameter If pTimes is not NULL, pTimes must( be a valid pointer to an array of swapchainCount > structures8VUID-VkPresentTimesInfoGOOGLE-swapchainCount-arraylength swapchainCount must be greater than 0See Also>, C>vulkanAVkPresentTimeGOOGLE - The earliest time image should be presentedSee Also=?vulkanlVkPastPresentationTimingGOOGLE - 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 ?< 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 l:: pImageIndices array."vulkan presentID@ is an application-provided value that was given to a previous  command via >:: presentID (see below). It can< be used to uniquely identify a previous present with the  command."vulkandesiredPresentTime@ is an application-provided value that was given to a previous  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 c 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)5VUID-vkGetRefreshCycleDurationGOOGLE-device-parameter device must be a valid  handle8VUID-vkGetRefreshCycleDurationGOOGLE-swapchain-parameter  swapchain must be a valid L handleGVUID-vkGetRefreshCycleDurationGOOGLE-pDisplayTimingProperties-parameter pDisplayTimingProperties must be a valid pointer to a < structure1VUID-vkGetRefreshCycleDurationGOOGLE-commonparent Both of device, and  swapchain must? 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@=%See Also, <, L"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, A will be returned instead of F> to indicate that not all the available values were returned.Valid Usage (Implicit)7VUID-vkGetPastPresentationTimingGOOGLE-device-parameter device must be a valid  handle:VUID-vkGetPastPresentationTimingGOOGLE-swapchain-parameter  swapchain must be a valid L handleIVUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimingCount-parameter pPresentationTimingCount must be a valid pointer to a uint32_t valueEVUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimings-parameter! If the value referenced by pPresentationTimingCount is not 0 , and pPresentationTimings is not NULL, pPresentationTimings must# be a valid pointer to an array of pPresentationTimingCount ? structures3VUID-vkGetPastPresentationTimingGOOGLE-commonparent Both of device, and  swapchain must? 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-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@=(%See Also, ?, L"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.L<""=""">"""?""""""""""""""<""?""""""=""">"""""""LNone("#%&'-./1789;=>?FHIMSUVX_dghklmqO37vulkanVkStreamDescriptorSurfaceCreateInfoGGP - Structure specifying parameters of a newly created Google Games Platform stream surface objectValid Usage (Implicit)See Also", C, ""vulkanAVkStreamDescriptorSurfaceCreateFlagsGGP - Reserved for future use Description"Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also7"vulkanflags is reserved for future use.=VUID-VkStreamDescriptorSurfaceCreateInfoGGP-flags-zerobitmask flags must be 0"vulkanstreamDescriptor is a "G referring to the GGP stream descriptor to associate with the surface.BVUID-VkStreamDescriptorSurfaceCreateInfoGGP-streamDescriptor-02681 streamDescriptor must be a valid ""vulkan/vkCreateStreamDescriptorSurfaceGGP - Create a M+ object for a Google Games Platform streamValid Usage (Implicit):VUID-vkCreateStreamDescriptorSurfaceGGP-instance-parameter instance must be a valid  handle=VUID-vkCreateStreamDescriptorSurfaceGGP-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid 7 structure<VUID-vkCreateStreamDescriptorSurfaceGGP-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure:VUID-vkCreateStreamDescriptorSurfaceGGP-pSurface-parameter pSurface 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?&See Also, , 7, M"vulkaninstance/ is the instance to associate with the surface.vulkan pCreateInfo is a pointer to a 7R 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).M7""""""""""""7""""""""""MNone("#%&'-./1789;=>?FHIMSUVX_dghklmqOU5vulkanrVkImagePipeSurfaceCreateInfoFUCHSIA - Structure specifying parameters of a newly created ImagePipe surface objectValid Usage (Implicit)See Also# , C, ## vulkan>VkImagePipeSurfaceCreateFlagsFUCHSIA - Reserved for future use Description# Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also5#vulkanflags is reserved for future use.:VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-flags-zerobitmask flags must be 0#vulkanimagePipeHandle is a  zx_handle_t; referring to the ImagePipe to associate with the surface.>VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-imagePipeHandle-00000 imagePipeHandle must be a valid  zx_handle_t#vulkan,vkCreateImagePipeSurfaceFUCHSIA - Create a M object for a Fuchsia ImagePipeValid Usage (Implicit)7VUID-vkCreateImagePipeSurfaceFUCHSIA-instance-parameter instance must be a valid  handle:VUID-vkCreateImagePipeSurfaceFUCHSIA-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid 5 structure9VUID-vkCreateImagePipeSurfaceFUCHSIA-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure7VUID-vkCreateImagePipeSurfaceFUCHSIA-pSurface-parameter pSurface 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, 5, , M#vulkaninstance/ is the instance to associate with the surface.vulkan pCreateInfo is a pointer to a 5P 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).M45# ### # # # ####5# ### # # ## #4MNone("#%&'-./1789;=>?FHIMSUVX_dghklmqOM 2vulkannVkSemaphoreGetZirconHandleInfoFUCHSIA - Structure describing a Zircon event handle semaphore export operation DescriptionKThe properties of the Zircon event handle returned depend on the value of  handleType. See  lV for a description of the properties of the defined external semaphore handle types. Valid Usage;VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04758  handleType must have been included in QY:: handleTypes when  semaphore s current payload was created.:VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-semaphore-04759  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 Rb::exportFromImportedHandleTypes for  handleType.;VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04760 If  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  semaphore.;VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04761 If  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.;VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04762  handleType must% be defined as a Zircon event handle.:VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-semaphore-04763  semaphore must have been created with a * of *.Valid Usage (Implicit)6VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-sType-sType sType must be 6VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-pNext-pNext pNext must be NULL>VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-semaphore-parameter  semaphore must be a valid w handle?VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-parameter  handleType must be a valid  l valueSee Also l, w, C, #-3vulkanmVkImportSemaphoreZirconHandleInfoFUCHSIA - Structure specifying Zircon event handle to import to a semaphore DescriptionThe handle types supported by  handleType are: Handle Type % Transference + Permanence Supported  M  Reference  Temporary,Permanent Handle Types Supported by 3 Valid Usage>VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-handleType-04765  handleType must! be a value included in the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphore-handletypes-zircon-handleHandle Types Supported by table.@VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-zirconHandle-04766  zirconHandle 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 compatibility.@VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-zirconHandle-04767  zirconHandle must have ZX_RIGHTS_BASIC and ZX_RIGHTS_SIGNAL rights.AVUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-semaphoreType-04768 The m:: semaphoreType field must not be *.Valid Usage (Implicit)9VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-sType-sType sType must be 9VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-pNext-pNext pNext must be NULLAVUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-semaphore-parameter  semaphore must be a valid w handle=VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-flags-parameter flags must be a valid combination of J valuesBVUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-handleType-parameter  handleType must be a valid  l valueHost SynchronizationHost access to  semaphore must be externally synchronizedSee Also l, w,  ;, C, #.#$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 JO specifying additional parameters for the semaphore payload import operation.#)vulkan handleType specifies the type of  zirconHandle.#*vulkan zirconHandle" is the external handle to import.#-vulkanNvkGetSemaphoreZirconHandleFUCHSIA - Get a Zircon event handle for a semaphore Description Each call to #- must} create a Zircon event handle and transfer ownership of it to the application. To avoid leaking resources, the application mustK release ownership of the Zircon event handle when it is no longer needed.NoteOwnership can be released in many ways. For example, the application can call zx_handle_close() on the file descriptor, or transfer ownership back to Vulkan by using the file descriptor to import a semaphore payload.1Exporting a Zircon event 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 State. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure7@See Also, 2#.vulkanUvkImportSemaphoreZirconHandleFUCHSIA - Import a semaphore from a Zircon event handle DescriptionImporting a semaphore payload from a Zircon event handle transfers ownership of the handle from the application to the Vulkan implementation. The application mustE not perform any operations on the handle 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@"See Also, 3#-vulkandeviceB is the logical device that created the semaphore being exported.7VUID-vkGetSemaphoreZirconHandleFUCHSIA-device-parameter device must be a valid  handlevulkanpGetZirconHandleInfo is a pointer to a 2: structure containing parameters of the export operation.EVUID-vkGetSemaphoreZirconHandleFUCHSIA-pGetZirconHandleInfo-parameter pGetZirconHandleInfo must be a valid pointer to a valid 2 structure#.vulkandevice2 is the logical device that created the semaphore.:VUID-vkImportSemaphoreZirconHandleFUCHSIA-device-parameter device must be a valid  handlevulkan pImportSemaphoreZirconHandleInfo is a pointer to a 3; structure specifying the semaphore and import parameters.TVUID-vkImportSemaphoreZirconHandleFUCHSIA-pImportSemaphoreZirconHandleInfo-parameter  pImportSemaphoreZirconHandleInfo must be a valid pointer to a valid 3 structure2###$#%3#&#(#*#'#)4#!#"#+#,#-#.#-#.3#&#(#*#'#)2###$#%#"#,#!#+4None("#%&'-./1789;=>?FHIMSUVX_dghklmqP K /vulkanfVkMemoryZirconHandlePropertiesFUCHSIA - Structure specifying Zircon handle compatible external memoryValid Usage (Implicit)See AlsoC, #H0vulkanoVkMemoryGetZirconHandleInfoFUCHSIA - Structure specifying export parameters for Zircon handle to device memoryValid Usage (Implicit)See Also, , C, #G1vulkantVkImportMemoryZirconHandleInfoFUCHSIA - Structure specifying import parameters for Zircon handle to external memory Valid Usage;VUID-VkImportMemoryZirconHandleInfoFUCHSIA-handleType-04771  handleType must be  .7VUID-VkImportMemoryZirconHandleInfoFUCHSIA-handle-04772 handle! must be a valid VMO handle.Valid Usage (Implicit)6VUID-VkImportMemoryZirconHandleInfoFUCHSIA-sType-sType sType must be ?VUID-VkImportMemoryZirconHandleInfoFUCHSIA-handleType-parameter If  handleType is not 0,  handleType must be a valid  valueSee Also, C#>vulkanmemory the  being exported.8VUID-VkMemoryGetZirconHandleInfoFUCHSIA-memory-parameter memory must be a valid  handle#?vulkan handleType) is the type of the handle pointed to by  pZirconHandle as retrieved by the call to #G.8VUID-VkMemoryGetZirconHandleInfoFUCHSIA-handleType-04775  handleType must be  .8VUID-VkMemoryGetZirconHandleInfoFUCHSIA-handleType-04776  handleType must have been included in the  handleTypes field of the OU3 structure when the external memory was allocated.<VUID-VkMemoryGetZirconHandleInfoFUCHSIA-handleType-parameter  handleType must be a valid  value#AvulkanmemoryTypeBitsg a bitmask containing one bit set for every memory type which the specified handle can be imported as.#Cvulkan handleType is the type of handle.#Dvulkanhandle is a  zx_handle_t( (Zircon) handle to the external memory.#GvulkanSvkGetMemoryZirconHandleFUCHSIA - Get a Zircon handle for an external memory object Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure7@See Also, 0#HvulkanhvkGetMemoryZirconHandlePropertiesFUCHSIA - Get a Zircon handle properties for an external memory object Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure"See Also, , /#Gvulkandevice is the VkDevice.4VUID-vkGetMemoryZirconHandleFUCHSIA-device-parameter device must be a valid  handlevulkanpGetZirconHandleInfo is a pointer to a 0 structure.BVUID-vkGetMemoryZirconHandleFUCHSIA-pGetZirconHandleInfo-parameter pGetZirconHandleInfo must be a valid pointer to a valid 0 structure#Hvulkandevice is the VkDevice.>VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-device-parameter device must be a valid  handlevulkan handleType is the type of  zirconHandle>VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-handleType-04773  handleType must be  .BVUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-handleType-parameter  handleType must be a valid  valuevulkan zirconHandle is a  zx_handle_t+ (Zircon) handle to the external resource.@VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-zirconHandle-04774  zirconHandle must reference a valid VMO./#@#A0#=#?#>1#B#D#C4#;#<#E#F#G#H#G#H1#B#D#C/#@#A0#=#?#>#<#F#;#E4None("#%&'-./1789;=>?FHIMSUVX_dghklmqP6&vulkaneVkValidationCacheCreateInfoEXT - Structure specifying parameters of a newly created validation cache Valid Usage9VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01534 If initialDataSize is not 0, it must be equal to the size of  pInitialData, as returned by #m when  pInitialData was originally retrieved9VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01535 If initialDataSize is not 0,  pInitialData must2 have been retrieved from a previous call to #mValid Usage (Implicit)/VUID-VkValidationCacheCreateInfoEXT-sType-sType sType must be Q/VUID-VkValidationCacheCreateInfoEXT-pNext-pNext pNext must be NULL5VUID-VkValidationCacheCreateInfoEXT-flags-zerobitmask flags must be 0:VUID-VkValidationCacheCreateInfoEXT-pInitialData-parameter If initialDataSize is not 0,  pInitialData must( be a valid pointer to an array of initialDataSize bytesSee AlsoC, #_, #j'vulkankVkShaderModuleValidationCacheCreateInfoEXT - Specify validation cache to use during shader module creationValid Usage (Implicit)See AlsoC, K#]vulkanCVkValidationCacheHeaderVersionEXT - Encode validation cache versionSee Also#j, #m#_vulkan9VkValidationCacheCreateFlagsEXT - Reserved for future use Description#_Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also&#bvulkanvalidationCache 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).IVUID-VkShaderModuleValidationCacheCreateInfoEXT-validationCache-parameter validationCache must be a valid K handle#dvulkanflags is reserved for future use.#evulkaninitialDataSize is the number of bytes in  pInitialData. If initialDataSize7 is zero, the validation cache will initially be empty.#fvulkan 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.#ivulkan#i0 specifies version one of the validation cache.#jvulkan;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 #m. 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 >d' command by adding this object to the > structure s pNext chain. If a ' object is included in the >::pNext chain, and its validationCache field is not 8, 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 >d command.Valid Usage (Implicit)0VUID-vkCreateValidationCacheEXT-device-parameter device must be a valid  handle5VUID-vkCreateValidationCacheEXT-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid & structure4VUID-vkCreateValidationCacheEXT-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure:VUID-vkCreateValidationCacheEXT-pValidationCache-parameter pValidationCache must be a valid pointer to a K handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@See Also, , &, K#kvulkan=A convenience wrapper to make a compatible pair of calls to #j and #lTo ensure that #l is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.#lvulkan?vkDestroyValidationCacheEXT - Destroy a validation cache object Valid Usage6VUID-vkDestroyValidationCacheEXT-validationCache-01537 If  were provided when validationCache1 was created, a compatible set of callbacks must be provided here6VUID-vkDestroyValidationCacheEXT-validationCache-01538 If no  were provided when validationCache was created,  pAllocator must be NULLValid Usage (Implicit)1VUID-vkDestroyValidationCacheEXT-device-parameter device must be a valid  handle:VUID-vkDestroyValidationCacheEXT-validationCache-parameter If validationCache is not 8, validationCache must be a valid K handle5VUID-vkDestroyValidationCacheEXT-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure7VUID-vkDestroyValidationCacheEXT-validationCache-parent If validationCache is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to validationCache must be externally synchronizedSee Also, , K#mvulkanHvkGetValidationCacheDataEXT - 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 #m will return A. Any data written to pData is valid and can be provided as the  pInitialData member of the & structure passed to #j. Two calls to #m 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 * Meaning # 0  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 #]\ value written as a stream of bytes, with the least significant byte first # 8  |  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 #iThe 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)1VUID-vkGetValidationCacheDataEXT-device-parameter device must be a valid  handle:VUID-vkGetValidationCacheDataEXT-validationCache-parameter validationCache must be a valid K handle4VUID-vkGetValidationCacheDataEXT-pDataSize-parameter  pDataSize must be a valid pointer to a size_t value0VUID-vkGetValidationCacheDataEXT-pData-parameter! If the value referenced by  pDataSize is not 0, and pData is not NULL, pData must# be a valid pointer to an array of  pDataSize bytes7VUID-vkGetValidationCacheDataEXT-validationCache-parent validationCache 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-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, K#nvulkanJvkMergeValidationCachesEXT - 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 Usage.VUID-vkMergeValidationCachesEXT-dstCache-01536 dstCache must- not appear in the list of source cachesValid Usage (Implicit)0VUID-vkMergeValidationCachesEXT-device-parameter device must be a valid  handle2VUID-vkMergeValidationCachesEXT-dstCache-parameter dstCache must be a valid K handle4VUID-vkMergeValidationCachesEXT-pSrcCaches-parameter  pSrcCaches must# be a valid pointer to an array of  srcCacheCount valid K handles9VUID-vkMergeValidationCachesEXT-srcCacheCount-arraylength  srcCacheCount must be greater than 0/VUID-vkMergeValidationCachesEXT-dstCache-parent dstCache must6 have been created, allocated, or retrieved from device1VUID-vkMergeValidationCachesEXT-pSrcCaches-parent Each 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, K#jvulkandevice@ 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.#lvulkandeviceB 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.#mvulkandevice6 is the logical device that owns the validation cache.vulkanvalidationCache/ is the validation cache to retrieve data from.#nvulkandevice> 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.K&#c#d#e#f'#a#b#[#\#]#i#^#_#`#g#h#j#k#l#m#n#j#k#l#m#n&#c#d#e#f'#a#b#_#`#]#i#^#i#\#h#[#gKNone("#%&'-./1789;=>?FHIMSUVX_dghklmqQA vulkangVkPrivateDataSlotCreateInfoEXT - Structure specifying the parameters of private data slot constructionValid Usage (Implicit)See Also#, C, #vulkanVVkPhysicalDevicePrivateDataFeaturesEXT - 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  2 to enable the features.Valid Usage (Implicit)See Alsop, Cvulkan=VkDevicePrivateDataCreateInfoEXT - Reserve private data slotsValid Usage (Implicit)See AlsoC#vulkanmVkPrivateDataSlotCreateFlagBitsEXT - Bitmask specifying additional parameters for private data slot creationSee Also##vulkanfeatures-privateData  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.#vulkanflags is a bitmask of #? specifying additional parameters of the new private data slot5VUID-VkPrivateDataSlotCreateInfoEXT-flags-zerobitmask flags must be 0#vulkanprivateDataSlotRequestCount# is the amount of slots to reserve.#vulkanCvkCreatePrivateDataSlotEXT - Create a slot for private data storage Valid Usage1VUID-vkCreatePrivateDataSlotEXT-privateData-04564 The  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-privateData privateData feature must be enabledValid Usage (Implicit)0VUID-vkCreatePrivateDataSlotEXT-device-parameter device must be a valid  handle5VUID-vkCreatePrivateDataSlotEXT-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure4VUID-vkCreatePrivateDataSlotEXT-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure:VUID-vkCreatePrivateDataSlotEXT-pPrivateDataSlot-parameter pPrivateDataSlot must be a valid pointer to a N handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@See Also, , , N#vulkan=A convenience wrapper to make a compatible pair of calls to # and #To ensure that # is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.#vulkan9vkDestroyPrivateDataSlotEXT - Destroy a private data slot Valid Usage6VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-04062 If  were provided when privateDataSlot1 was created, a compatible set of callbacks must be provided here6VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-04063 If no  were provided when privateDataSlot was created,  pAllocator must be NULLValid Usage (Implicit)1VUID-vkDestroyPrivateDataSlotEXT-device-parameter device must be a valid  handle:VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-parameter If privateDataSlot is not 8, privateDataSlot must be a valid N handle5VUID-vkDestroyPrivateDataSlotEXT-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure7VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-parent If privateDataSlot is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to privateDataSlot must be externally synchronizedSee Also, , N#vulkan9vkSetPrivateDataEXT - Associate data with a Vulkan object Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@See Also, V, N#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 p objects on which #i has not previously been called. This erratum is exclusive to the Android platform and objects of type p.Valid Usage (Implicit)See Also, V, N#vulkandeviced 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.)VUID-vkSetPrivateDataEXT-device-parameter device must be a valid  handlevulkan objectType is a V7 specifying the type of object to associate data with.-VUID-vkSetPrivateDataEXT-objectType-parameter  objectType must be a valid V valuevulkan objectHandle2 is a handle to the object to associate data with.+VUID-vkSetPrivateDataEXT-objectHandle-04016  objectHandle must be device or a child of device+VUID-vkSetPrivateDataEXT-objectHandle-04017  objectHandle must) be a valid handle to an object of type  objectTypevulkanprivateDataSlot is a handle to a N. specifying location of private data storage.2VUID-vkSetPrivateDataEXT-privateDataSlot-parameter privateDataSlot must be a valid N handle/VUID-vkSetPrivateDataEXT-privateDataSlot-parent privateDataSlot must1 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 object)VUID-vkGetPrivateDataEXT-device-parameter device must be a valid  handlevulkan objectType is a V8 specifying the type of object data is associated with.)VUID-vkGetPrivateDataEXT-objectType-04018  objectType must be 1%, or an object type whose parent is -VUID-vkGetPrivateDataEXT-objectType-parameter  objectType must be a valid V valuevulkan objectHandle3 is a handle to the object data is associated with.vulkanprivateDataSlot is a handle to a N6 specifying location of private data pointer storage.2VUID-vkGetPrivateDataEXT-privateDataSlot-parameter privateDataSlot must be a valid N handle/VUID-vkGetPrivateDataEXT-privateDataSlot-parent privateDataSlot must1 have been created, allocated, or retrieved from deviceN####################################NNone("#%&'-./1789;=>?FHIMSUVX_dghklmqQ`>vulkanfVkMetalSurfaceCreateInfoEXT - 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.2VUID-VkMetalSurfaceCreateInfoEXT-flags-zerobitmask flags must be 0#vulkanpLayer is a reference to a #+ object representing a renderable surface.#vulkanGvkCreateMetalSurfaceEXT - Create a VkSurfaceKHR object for CAMetalLayerValid Usage (Implicit)/VUID-vkCreateMetalSurfaceEXT-instance-parameter instance must be a valid  handle2VUID-vkCreateMetalSurfaceEXT-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure1VUID-vkCreateMetalSurfaceEXT-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure/VUID-vkCreateMetalSurfaceEXT-pSurface-parameter pSurface 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?&See Also, , , M#vulkaninstance5 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).M######################MNone("#%&'-./1789;=>?FHIMSUVX_dghklmqQ}vulkanlVkHeadlessSurfaceCreateInfoEXT - Structure specifying parameters of a newly created headless surface objectValid Usage (Implicit)See Also#, C, ##vulkan9VkHeadlessSurfaceCreateFlagsEXT - 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.5VUID-VkHeadlessSurfaceCreateInfoEXT-flags-zerobitmask flags must be 0#vulkan0vkCreateHeadlessSurfaceEXT - Create a headless M objectValid Usage (Implicit)2VUID-vkCreateHeadlessSurfaceEXT-instance-parameter instance must be a valid  handle5VUID-vkCreateHeadlessSurfaceEXT-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure4VUID-vkCreateHeadlessSurfaceEXT-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure2VUID-vkCreateHeadlessSurfaceEXT-pSurface-parameter pSurface 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , , M#vulkaninstance/ 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). M######### #########MNone("#%&'-./1789;=>?FHIMSUVX_dghklmqQ% 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 AlsoC, , ##vulkandisplayPrimaryRedD is the reference monitor s red primary in chromaticity coordinates#vulkandisplayPrimaryGreenF is the reference monitor s green primary in chromaticity coordinates#vulkandisplayPrimaryBlueE is the reference monitor s blue primary in chromaticity coordinates#vulkan whitePointD is the reference monitor s white-point in chromaticity coordinates#vulkan maxLuminance: is the maximum luminance of the reference monitor in nits#vulkan minLuminance: is the minimum luminance of the reference monitor 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))VUID-vkSetHdrMetadataEXT-device-parameter device must be a valid  handle.VUID-vkSetHdrMetadataEXT-pSwapchains-parameter  pSwapchains must# be a valid pointer to an array of swapchainCount valid L handles,VUID-vkSetHdrMetadataEXT-pMetadata-parameter  pMetadata must( be a valid pointer to an array of swapchainCount valid  structures3VUID-vkSetHdrMetadataEXT-swapchainCount-arraylength swapchainCount must be greater than 0%VUID-vkSetHdrMetadataEXT-commonparent Both of device, and the elements of  pSwapchains must? have been created, allocated, or retrieved from the same /See Also, , L#vulkandevice; is the logical device where the swapchain(s) were created.vulkan pSwapchains is a pointer to an array of swapchainCount L handles.vulkan pMetadata is a pointer to an array of swapchainCount  structures.L##################################LNone("#%&'-./1789;=>?FHIMSUVX_dghklmqRvulkanVkSurfaceFullScreenExclusiveWin32InfoEXT - 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 AlsoCvulkaniVkSurfaceFullScreenExclusiveInfoEXT - 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$, CvulkansVkSurfaceCapabilitiesFullScreenExclusiveEXT - Structure describing full screen exclusive capabilities of a surface DescriptionThis structure can be included in the pNext chain of = 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 Alsop, C$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.<VUID-VkSurfaceFullScreenExclusiveWin32InfoEXT-hmonitor-02673 hmonitor must be a valid $$ vulkanfullScreenExclusive is a $A value specifying the preferred full-screen transition behavior.FVUID-VkSurfaceFullScreenExclusiveInfoEXT-fullScreenExclusive-parameter 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 M, with the ability to specify extended inputs via chained input structures.Valid Usage (Implicit)HVUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-physicalDevice-parameter physicalDevice must be a valid  handleFVUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pSurfaceInfo-parameter  pSurfaceInfo must$ be a valid pointer to a valid  structureKVUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pPresentModeCount-parameter pPresentModeCount must be a valid pointer to a uint32_t valueGVUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pPresentModes-parameter! If 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-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?%See Also, , $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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?%See Also, , $vulkanYvkAcquireFullScreenExclusiveModeEXT - Acquire full-screen exclusive mode for a swapchain Valid Usage8VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02674  swapchain must not be in the retired state8VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02675  swapchain must$ be a swapchain created with a  structure, with fullScreenExclusive set to $ 8VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02676  swapchain must0 not currently have exclusive full-screen accessA return value of F 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)9VUID-vkAcquireFullScreenExclusiveModeEXT-device-parameter device must be a valid  handle<VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-parameter  swapchain must be a valid L handle5VUID-vkAcquireFullScreenExclusiveModeEXT-commonparent Both of device, and  swapchain must? 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?>%See Also, L$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, L$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 Y structure describing the surface and other fixed parameters that would be consumed by ".$vulkandevice is the logical device.=VUID-vkGetDeviceGroupSurfacePresentModes2EXT-device-parameter device must be a valid  handlevulkan pSurfaceInfo is a pointer to a Y structure describing the surface and other fixed parameters that would be consumed by ".CVUID-vkGetDeviceGroupSurfacePresentModes2EXT-pSurfaceInfo-parameter  pSurfaceInfo must be a valid pointer to a valid  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.8VUID-vkReleaseFullScreenExclusiveModeEXT-swapchain-02677  swapchain must not be in the retired state8VUID-vkReleaseFullScreenExclusiveModeEXT-swapchain-02678  swapchain must be a swapchain created with a  structure, with fullScreenExclusive set to $ /LM$$$ $ $$!6!7!8  K J I H G F $$$$$$$$ $$ $ $$$$=$$$$$ $ $$$$$$$$$ $$$$$ $$ $$ $ML!6!7!8  K J I H G F K J I H G F None("#%&'-./1789;=>?FHIMSUVX_dghklmqR@vulkan<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 , u, S, C, ,  ,  , $A$;vulkansupportedSurfaceCounters is a bitmask of 1 indicating the supported surface counter types.=VUID-VkSurfaceCapabilities2EXT-supportedSurfaceCounters-01246 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.$AvulkanGvkGetPhysicalDeviceSurfaceCapabilities2EXT - Query surface capabilities Description$A behaves similarly to Z, with the ability to return extended information by adding extending structures to the pNext chain of its pSurfaceCapabilities parameter.Valid Usage (Implicit)HVUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-physicalDevice-parameter physicalDevice must be a valid  handleAVUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-surface-parameter surface must be a valid M handleNVUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-pSurfaceCapabilities-parameter pSurfaceCapabilities must be a valid pointer to a  structure<VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-commonparent Both 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?%See Also, , M$AvulkanphysicalDevicee 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.-M$>$/$0$1$2$3$4$5$6$7$8$9$:$;   1 0 / . - , + * )    5 4 3 2 $-$.$<$=$?$@$A;$A$@$?$0$1$2$3$4$5$6$7$8$9$:$;$>$/$>$.$=$-$<M   5 4 3 2 5 4 3 2    1 0 / . - , + * ) 1 0 / . - , + * ) None("#%&'-./1789;=>?FHIMSUVX_dghklmqRvulkanFVkSwapchainCounterCreateInfoEXT - Specify the surface counters desired Valid Usage:VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-01244 The bits in surfaceCounters must be supported by ::surface, as reported by Valid Usage (Implicit)0VUID-VkSwapchainCounterCreateInfoEXT-sType-sType sType must be >VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-parameter surfaceCounters must be a valid combination of  valuesSee AlsoC, vulkan=VkDisplayPowerInfoEXT - Describe the power state of a displayValid Usage (Implicit)See Also$U, C, $fvulkan:VkDisplayEventInfoEXT - Describe a display event to createValid Usage (Implicit)See Also$Q, C, $hvulkan8VkDeviceEventInfoEXT - Describe a device event to createValid Usage (Implicit)See Also$S, C, $g$QvulkanAVkDisplayEventTypeEXT - Events that can occur on a display objectSee Also$Svulkan?VkDeviceEventTypeEXT - Events that can occur on a device objectSee Also$Uvulkan<VkDisplayPowerStateEXT - Possible power states for a displaySee Also$XvulkansurfaceCounters is a bitmask of : specifying surface counters to enable for the swapchain.$Zvulkan displayEvent is a $Q- specifying when the fence will be signaled.1VUID-VkDisplayEventInfoEXT-displayEvent-parameter  displayEvent must be a valid $Q value$\vulkan/VUID-VkDeviceEventInfoEXT-deviceEvent-parameter  deviceEvent must be a valid $S value$^vulkan powerState is a $U6 value specifying the new power state of the display./VUID-VkDisplayPowerInfoEXT-powerState-parameter  powerState must be a valid $U value$avulkan$a specifies that the fence is signaled when the first pixel of the next display refresh cycle leaves the display engine for the display.$bvulkan$b| 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.$cvulkan$c* specifies that the display is powered on.$dvulkan$dI specifies that the display is put into a low power mode, from which it may be able to transition back to $c" more quickly than if it were in $e . This state may be the same as $e.$evulkan$e- specifies that the display is powered down.$fvulkan;vkDisplayPowerControlEXT - Set the power state of a displayValid Usage (Implicit).VUID-vkDisplayPowerControlEXT-device-parameter device must be a valid  handle/VUID-vkDisplayPowerControlEXT-display-parameter display must be a valid R handle9VUID-vkDisplayPowerControlEXT-pDisplayPowerInfo-parameter pDisplayPowerInfo must$ be a valid pointer to a valid  structure*VUID-vkDisplayPowerControlEXT-commonparent Both of device , and display must? 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@See Also, R, $gvulkanDvkRegisterDeviceEventEXT - Signal a fence when a device event occursValid Usage (Implicit).VUID-vkRegisterDeviceEventEXT-device-parameter device must be a valid  handle8VUID-vkRegisterDeviceEventEXT-pDeviceEventInfo-parameter pDeviceEventInfo must$ be a valid pointer to a valid  structure2VUID-vkRegisterDeviceEventEXT-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure.VUID-vkRegisterDeviceEventEXT-pFence-parameter pFence must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@See Also, , , $hvulkanFvkRegisterDisplayEventEXT - Signal a fence when a display event occursValid Usage (Implicit)/VUID-vkRegisterDisplayEventEXT-device-parameter device must be a valid  handle0VUID-vkRegisterDisplayEventEXT-display-parameter display must be a valid R handle:VUID-vkRegisterDisplayEventEXT-pDisplayEventInfo-parameter pDisplayEventInfo must$ be a valid pointer to a valid  structure3VUID-vkRegisterDisplayEventEXT-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure/VUID-vkRegisterDisplayEventEXT-pFence-parameter pFence must be a valid pointer to a  handle+VUID-vkRegisterDisplayEventEXT-commonparent Both of device , and display must? 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@See Also, , , R, $ivulkanGvkGetSwapchainCounterEXT - 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-VUID-vkGetSwapchainCounterEXT-swapchain-01245& One or more present commands on  swapchain must4 have been processed by the presentation engineValid Usage (Implicit).VUID-vkGetSwapchainCounterEXT-device-parameter device must be a valid  handle1VUID-vkGetSwapchainCounterEXT-swapchain-parameter  swapchain must be a valid L handle/VUID-vkGetSwapchainCounterEXT-counter-parameter counter must be a valid  value5VUID-vkGetSwapchainCounterEXT-pCounterValue-parameter  pCounterValue must be a valid pointer to a uint64_t value*VUID-vkGetSwapchainCounterEXT-commonparent Both of device , and  swapchain must? 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@=(See Also, , L$fvulkandevice% 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.$gvulkandevice( 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.$hvulkandevice% 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.$ivulkandevice is the  associated with  swapchain.vulkan swapchain8 is the swapchain from which to query the counter value.vulkancounter is the counter to query.'LR$W$X$]$^$Y$Z$[$\$/$>$O$P$Q$a$R$S$b$T$U$e$d$c$V$_$`$f$g$h$i-$f$g$h$i$]$^$[$\$Y$Z$W$X$U$e$d$c$V$e$d$c$S$b$T$b$Q$a$R$a$P$`$O$_RL$/$>$>None("#%&'-./1789;=>?FHIMSUVX_dghklmqRvulkanlVkDirectFBSurfaceCreateInfoEXT - Structure specifying parameters of a newly created DirectFB surface objectValid Usage (Implicit)See Also$, C, $$vulkan9VkDirectFBSurfaceCreateFlagsEXT - 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.5VUID-VkDirectFBSurfaceCreateInfoEXT-flags-zerobitmask flags must be 0$vulkandfb is a pointer to the  main interface of DirectFB.-VUID-VkDirectFBSurfaceCreateInfoEXT-dfb-04117 dfb must point to a valid DirectFB $vulkansurface is a pointer to a $ surface interface.1VUID-VkDirectFBSurfaceCreateInfoEXT-surface-04118 surface must point to a valid DirectFB $$vulkan'vkCreateDirectFBSurfaceEXT - Create a M object for a DirectFB surfaceValid Usage (Implicit)2VUID-vkCreateDirectFBSurfaceEXT-instance-parameter instance must be a valid  handle5VUID-vkCreateDirectFBSurfaceEXT-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure4VUID-vkCreateDirectFBSurfaceEXT-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure2VUID-vkCreateDirectFBSurfaceEXT-pSurface-parameter pSurface 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , , M$vulkanivkGetPhysicalDeviceDirectFBPresentationSupportEXT - 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$vulkaninstance/ 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.OVUID-vkGetPhysicalDeviceDirectFBPresentationSupportEXT-physicalDevice-parameter physicalDevice must be a valid  handlevulkanqueueFamilyIndex is the queue family index.MVUID-vkGetPhysicalDeviceDirectFBPresentationSupportEXT-queueFamilyIndex-04119 queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by   for the given physicalDevicevulkandfb is a pointer to the  main interface of DirectFB.DVUID-vkGetPhysicalDeviceDirectFBPresentationSupportEXT-dfb-parameter dfb must be a valid pointer to an  valueM$$$$$$$$$$$$$$$$$$$$$$$$$$MNone("#%&'-./1789;=>?FHIMSUVX_dghklmqR$vulkan@vkReleaseDisplayEXT - Release access to an acquired VkDisplayKHR Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessFSee AlsoR, $vulkanphysicalDevice' The physical device the display is on.1VUID-vkReleaseDisplayEXT-physicalDevice-parameter physicalDevice must be a valid  handlevulkandisplay# The display to release control of.*VUID-vkReleaseDisplayEXT-display-parameter display must be a valid R handle'VUID-vkReleaseDisplayEXT-display-parent display must2 have been created, allocated, or retrieved from physicalDeviceR$$$$$$$$$$RNone("#%&'-./1789;=>?FHIMSUVX_dghklmqT4vulkanoVkDebugUtilsMessageTypeFlagBitsEXT - 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 AlsoV, C, $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 Usage3VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02589 If  objectType is ,  objectHandle must not be 83VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02590 If  objectType is not ,  objectHandle must be 8; 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).VUID-VkDebugUtilsObjectNameInfoEXT-sType-sType sType must be .VUID-VkDebugUtilsObjectNameInfoEXT-pNext-pNext pNext must be NULL7VUID-VkDebugUtilsObjectNameInfoEXT-objectType-parameter  objectType must be a valid V value8VUID-VkDebugUtilsObjectNameInfoEXT-pObjectName-parameter If  pObjectName is not NULL,  pObjectName must' be a null-terminated UTF-8 stringSee Also, V, C, $vulkanhVkDebugUtilsMessengerCreateInfoEXT - Structure specifying parameters of a newly created debug messenger Description For each T 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 T 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 T 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 Tm 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$, , , $, C, $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 {6 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)5VUID-VkDebugUtilsMessengerCallbackDataEXT-sType-sType sType must be 5VUID-VkDebugUtilsMessengerCallbackDataEXT-pNext-pNext pNext must be NULL;VUID-VkDebugUtilsMessengerCallbackDataEXT-flags-zerobitmask flags must be 0BVUID-VkDebugUtilsMessengerCallbackDataEXT-pMessageIdName-parameter If pMessageIdName is not NULL, pMessageIdName must' be a null-terminated UTF-8 string<VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessage-parameter pMessage must" be a null-terminated UTF-8 string@VUID-VkDebugUtilsMessengerCallbackDataEXT-pQueueLabels-parameter If queueLabelCount is not 0,  pQueueLabels must( be a valid pointer to an array of queueLabelCount valid  structuresAVUID-VkDebugUtilsMessengerCallbackDataEXT-pCmdBufLabels-parameter If cmdBufLabelCount is not 0,  pCmdBufLabels must( be a valid pointer to an array of cmdBufLabelCount valid  structures<VUID-VkDebugUtilsMessengerCallbackDataEXT-pObjects-parameter If  objectCount is not 0, pObjects must( be a valid pointer to an array of  objectCount valid  structuresSee Also, $, , C, $vulkan;VkDebugUtilsLabelEXT - Specify parameters of a label regionValid Usage (Implicit)See Also, C, $, $, $, $$vulkan]PFN_vkDebugUtilsMessengerCallbackEXT - Application-defined debug messenger callback function DescriptionThe callback returns a pE, which is interpreted in a layer-specified manner. The application should always return .. The .1 value is reserved for use in layer development. Valid Usage4VUID-PFN_vkDebugUtilsMessengerCallbackEXT-None-04769 The callback must' not make calls to any Vulkan commands.See Also$vulkanCVkDebugUtilsMessengerCallbackDataFlagsEXT - Reserved for future use Description$Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also$vulkan=VkDebugUtilsMessengerCreateFlagsEXT - 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 0 and is reserved for future use.$vulkanpMessageIdName 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.$vulkanmessageIdNumber 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.$vulkanpMessage> is a null-terminated string detailing the trigger conditions.$vulkan pQueueLabels is NULL or a pointer to an array of  active in the current {4 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.$vulkan 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.$vulkanpObjects 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.$vulkanflags is 0 and is reserved for future use.9VUID-VkDebugUtilsMessengerCreateInfoEXT-flags-zerobitmask flags must be 0$vulkanmessageSeverity is a bitmask of O specifying which severity of event(s) will cause this callback to be called.AVUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-parameter messageSeverity must be a valid combination of  valuesGVUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-requiredbitmask messageSeverity must not be 0$vulkan messageType is a bitmask of J specifying which type of event(s) will cause this callback to be called.=VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-parameter  messageType must be a valid combination of  valuesCVUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-requiredbitmask  messageType must not be 0$vulkanpfnUserCallback. is the application callback function to call.=VUID-VkDebugUtilsMessengerCreateInfoEXT-pfnUserCallback-01914 pfnUserCallback must be a valid $AVUID-VkDebugUtilsMessengerCreateInfoEXT-pfnUserCallback-parameter pfnUserCallback must be a valid $ value$vulkan pUserData+ is user data to be passed to the callback.$vulkan pLabelNameR is a pointer to a null-terminated UTF-8 string containing the name of the label..VUID-VkDebugUtilsLabelEXT-pLabelName-parameter  pLabelName must# be a null-terminated UTF-8 string$vulkancolore 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 V0 specifying the type of the object to be named.2VUID-VkDebugUtilsObjectTagInfoEXT-objectType-01908  objectType must not be 6VUID-VkDebugUtilsObjectTagInfoEXT-objectType-parameter  objectType must be a valid V value$vulkan objectHandle is the object to be tagged.4VUID-VkDebugUtilsObjectTagInfoEXT-objectHandle-01910  objectHandle must6 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.5VUID-VkDebugUtilsObjectTagInfoEXT-tagSize-arraylength 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.0VUID-VkDebugUtilsObjectTagInfoEXT-pTag-parameter pTag must$ be a valid pointer to an array of tagSize bytes$vulkan objectType is a V0 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  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 Usage1VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02587 pNameInfo->objectType must not be 1VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02588 pNameInfo->objectHandle must not be 8Valid Usage (Implicit)2VUID-vkSetDebugUtilsObjectNameEXT-device-parameter device must be a valid  handle5VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-parameter  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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, $vulkan@vkSetDebugUtilsObjectTagEXT - Attach arbitrary data to an objectValid Usage (Implicit)1VUID-vkSetDebugUtilsObjectTagEXT-device-parameter device must be a valid  handle3VUID-vkSetDebugUtilsObjectTagEXT-pTagInfo-parameter pTagInfo 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See 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, {$vulkan?vkQueueEndDebugUtilsLabelEXT - Close a queue debug label region Description The calls to $ and $ must be matched and balanced. Valid Usage,VUID-vkQueueEndDebugUtilsLabelEXT-None-01911 There must be an outstanding $ command prior to the $ on the queueValid Usage (Implicit)1VUID-vkQueueEndDebugUtilsLabelEXT-queue-parameter queue must be a valid { 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 Also{$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, {$vulkanGvkCmdBeginDebugUtilsLabelEXT - Open a command buffer debug label regionValid Usage (Implicit)9VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-parameter  commandBuffer must be a valid  handle6VUID-vkCmdBeginDebugUtilsLabelEXT-pLabelInfo-parameter  pLabelInfo must$ be a valid pointer to a valid  structure9VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state7VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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 Usage3VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01912 There must be an outstanding $ command prior to the $ on the queue that  commandBuffer is submitted to3VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01913 If  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)7VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-parameter  commandBuffer must be a valid  handle7VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state5VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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):VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-parameter  commandBuffer must be a valid  handle7VUID-vkCmdInsertDebugUtilsLabelEXT-pLabelInfo-parameter  pLabelInfo must$ be a valid pointer to a valid  structure:VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state8VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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)6VUID-vkCreateDebugUtilsMessengerEXT-instance-parameter instance must be a valid  handle9VUID-vkCreateDebugUtilsMessengerEXT-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure8VUID-vkCreateDebugUtilsMessengerEXT-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure8VUID-vkCreateDebugUtilsMessengerEXT-pMessenger-parameter  pMessenger 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@The 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, , T, $vulkan=A convenience wrapper to make a compatible pair of calls to $ and $To ensure that $ is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.$vulkanBvkDestroyDebugUtilsMessengerEXT - Destroy a debug messenger object Valid Usage4VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01915 If  were provided when  messenger1 was created, a compatible set of callbacks must be provided here4VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01916 If no  were provided when  messenger was created,  pAllocator must be NULLValid Usage (Implicit)7VUID-vkDestroyDebugUtilsMessengerEXT-instance-parameter instance must be a valid  handle8VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parameter If  messenger is not 8,  messenger must be a valid T handle9VUID-vkDestroyDebugUtilsMessengerEXT-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure5VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parent If  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, T, $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 Usage2VUID-vkSubmitDebugUtilsMessageEXT-objectType-02591 The  objectType member of each element of pCallbackData->pObjects must not be Valid Usage (Implicit)4VUID-vkSubmitDebugUtilsMessageEXT-instance-parameter instance must be a valid  handle;VUID-vkSubmitDebugUtilsMessageEXT-messageSeverity-parameter messageSeverity must be a valid  value8VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-parameter  messageTypes must be a valid combination of  values>VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-requiredbitmask  messageTypes must not be 09VUID-vkSubmitDebugUtilsMessageEXT-pCallbackData-parameter  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.3VUID-vkQueueBeginDebugUtilsLabelEXT-queue-parameter queue must be a valid { handlevulkan pLabelInfo is a pointer to a > structure specifying parameters of the label region to open.8VUID-vkQueueBeginDebugUtilsLabelEXT-pLabelInfo-parameter  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.4VUID-vkQueueInsertDebugUtilsLabelEXT-queue-parameter queue must be a valid { handlevulkan pLabelInfo is a pointer to a 9 structure specifying parameters of the label to insert.9VUID-vkQueueInsertDebugUtilsLabelEXT-pLabelInfo-parameter  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 T 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.FT$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$M$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$TNone("#%&'-./1789;=>?FHIMSUVX_dghklmqU$vulkanAVkDebugReportObjectTypeEXT - Specify the type of an object handle Description'  4 Vulkan Handle Type  %T 3 Unknown/Undefined Handle  %S    %R  /  %Q  /  %P  /  %O  /  %N  /  %M  /  %L  /  %K  /  %J  /   %I  /  %H  /  %G  /  %F  /  %E  /  %D  /  %C  /F  %B  /  %A  /  %@  /  %?  /  %>  /  %=  /  %<  /  %;  /  %:  p  %9  p  %8  U  %7  p  %6  p  %1  C  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 U 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 U) 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 Un 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%', , C, %]%'vulkanRPFN_vkDebugReportCallbackEXT - Application-defined debug report callback function Description The callback must not call %_.The callback returns a pE, 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 8. If  objectType is not %T and object is not 8, 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.7VUID-VkDebugReportCallbackCreateInfoEXT-flags-parameter flags must be a valid combination of  values%-vulkan pfnCallback. is the application callback function to call.=VUID-VkDebugReportCallbackCreateInfoEXT-pfnCallback-parameter  pfnCallback must be a valid %' value%.vulkan pUserData+ is user data to be passed to the callback.%Uvulkan%UF specifies diagnostic information from the implementation and layers.%Vvulkan%V[ specifies that the application has violated a valid usage condition of the specification.%Wvulkan%WA specifies a potentially non-optimal use of Vulkan, e.g. using  when setting 6::loadOp to  would have worked.%Xvulkan%X 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.%Yvulkan%Yo 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)6VUID-vkCreateDebugReportCallbackEXT-instance-parameter instance must be a valid  handle9VUID-vkCreateDebugReportCallbackEXT-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure8VUID-vkCreateDebugReportCallbackEXT-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure7VUID-vkCreateDebugReportCallbackEXT-pCallback-parameter  pCallback 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@See Also, , U, %^vulkan=A convenience wrapper to make a compatible pair of calls to %] and %_To ensure that %_ is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.%_vulkanHvkDestroyDebugReportCallbackEXT - Destroy a debug report callback object Valid Usage3VUID-vkDestroyDebugReportCallbackEXT-instance-01242 If  were provided when callback1 was created, a compatible set of callbacks must be provided here3VUID-vkDestroyDebugReportCallbackEXT-instance-01243 If no  were provided when callback was created,  pAllocator must be NULLValid Usage (Implicit)7VUID-vkDestroyDebugReportCallbackEXT-instance-parameter instance must be a valid  handle7VUID-vkDestroyDebugReportCallbackEXT-callback-parameter If callback is not 8, callback must be a valid U handle9VUID-vkDestroyDebugReportCallbackEXT-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure4VUID-vkDestroyDebugReportCallbackEXT-callback-parent If callback is a valid handle, it must6 have been created, allocated, or retrieved from instanceHost SynchronizationHost access to callback must be externally synchronizedSee Also, U, %`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 Usage)VUID-vkDebugReportMessageEXT-object-01241 object must be a Vulkan object or 8-VUID-vkDebugReportMessageEXT-objectType-01498 If  objectType is not %T and object is not 8, 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)/VUID-vkDebugReportMessageEXT-instance-parameter instance must be a valid  handle,VUID-vkDebugReportMessageEXT-flags-parameter flags must be a valid combination of  values2VUID-vkDebugReportMessageEXT-flags-requiredbitmask flags must not be 01VUID-vkDebugReportMessageEXT-objectType-parameter  objectType must be a valid  value3VUID-vkDebugReportMessageEXT-pLayerPrefix-parameter  pLayerPrefix must" be a null-terminated UTF-8 string/VUID-vkDebugReportMessageEXT-pMessage-parameter pMessage 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 U 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 82 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.BU%T%S%R%Q%P%O%N%M%L%K%J%I%H%G%F%E%D%C%B%A%@%?%>%=%<%;%:%9%8%7%6%5%4%3%2%1%)%Y%X%W%V%U%*%+%,%.%-%%%&%'%(%/%0%Z%[%\%]%^%_%`k%]%^%_%`%\%[%Z%+%,%.%-%Y%X%W%V%U%*%Y%X%W%V%U%T%S%R%Q%P%O%N%M%L%K%J%I%H%G%F%E%D%C%B%A%@%?%>%=%<%;%:%9%8%7%6%5%4%3%2%1%)%T%S%R%Q%P%O%N%M%L%K%J%I%H%G%F%E%D%C%B%A%@%?%>%=%<%;%:%9%8%7%6%5%4%3%2%1%'%(%&%0%%%/UNone("#%&'-./1789;=>?FHIMSUVX_dghklmq^sYvulkanFVkGeometryTypeKHR - Enum specifying which type of geometry is providedSee Alson, pZvulkan?VkAccelerationStructureTypeKHR - Type of acceleration structureSee Alsou, r[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 Also\]vulkan2VkGeometryInstanceFlagBitsKHR - Instance flag bits Description& and & must not be used in the same flag.See Also^_vulkanPVkGeometryFlagBitsKHR - Bitmask specifying additional parameters for a geometrySee Also`avulkanEVkCopyAccelerationStructureModeKHR - Acceleration structure copy modeSee Alsoj, i, h, rbvulkanOVkAccelerationStructureCompatibilityKHR - Acceleration structure compatibilitySee Also&cvulkanGVkAccelerationStructureBuildTypeKHR - Acceleration structure build typeSee Also&dvulkankVkWriteDescriptorSetAccelerationStructureKHR - Structure specifying acceleration structure descriptor info Valid UsageRVUID-VkWriteDescriptorSetAccelerationStructureKHR-accelerationStructureCount-02236 accelerationStructureCount must be equal to descriptorCount in the extended structureOVUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-03579% Each acceleration structure in pAccelerationStructures must have been created with a type of % or %OVUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-03580 If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor- feature is not enabled, each member of pAccelerationStructures must not be 8Valid Usage (Implicit)=VUID-VkWriteDescriptorSetAccelerationStructureKHR-sType-sType sType must be 4SVUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-parameter pAccelerationStructures must( be a valid pointer to an array of accelerationStructureCount valid or 8 W handlesXVUID-VkWriteDescriptorSetAccelerationStructureKHR-accelerationStructureCount-arraylength accelerationStructureCount must be greater than 0See AlsoW, CevulkanOVkTransformMatrixKHR - Structure specifying a 3x4 affine transformation matrix Valid Usage&VUID-VkTransformMatrixKHR-matrix-03799! The first three columns of matrix must define an invertible 3x3 matrixSee AlsolfvulkanrVkPhysicalDeviceAccelerationStructurePropertiesKHR - Properties of the physical device for acceleration structure DescriptionIf the f structure is included in the pNext chain of T 9, 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 AlsoCgvulkanVkPhysicalDeviceAccelerationStructureFeaturesKHR - Structure describing the acceleration structure 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 TJ, it is filled with values indicating whether the feature is supported. g can also be used in the pNext chain of  2 to enable the features.Valid Usage (Implicit)See Alsop, ChvulkandVkCopyMemoryToAccelerationStructureInfoKHR - Parameters for deserializing an acceleration structure Valid Usage:VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-03413 mode must be %;VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pInfo-03414 The data in src mustX have a format compatible with the destination physical device as returned by &9VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-03746 dst must have been created with a sizeB greater than or equal to that used to serialize the data in srcValid Usage (Implicit);VUID-VkCopyMemoryToAccelerationStructureInfoKHR-sType-sType sType must be >;VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pNext-pNext pNext must be NULL=VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-parameter dst must be a valid W handle>VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-parameter mode must be a valid a valueSee AlsoW, a, %, C, &, &ivulkanbVkCopyAccelerationStructureToMemoryInfoKHR - Parameters for serializing an acceleration structure Valid Usage9VUID-VkCopyAccelerationStructureToMemoryInfoKHR-dst-03561 The memory pointed to by dst must8 be at least as large as the serialization size of src, as reported by & or & with a query type of  :VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-03412 mode must be %Valid Usage (Implicit);VUID-VkCopyAccelerationStructureToMemoryInfoKHR-sType-sType sType must be =;VUID-VkCopyAccelerationStructureToMemoryInfoKHR-pNext-pNext pNext must be NULL=VUID-VkCopyAccelerationStructureToMemoryInfoKHR-src-parameter src must be a valid W handle>VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-parameter mode must be a valid a valueSee AlsoW, a, %, C, & , & jvulkanVVkCopyAccelerationStructureInfoKHR - Parameters for copying an acceleration structure Valid Usage2VUID-VkCopyAccelerationStructureInfoKHR-mode-03410 mode must be % or %1VUID-VkCopyAccelerationStructureInfoKHR-src-03411 If mode is %, src must have been built with &4VUID-VkCopyAccelerationStructureInfoKHR-buffer-03718 The buffer used to create src must be bound to device memory4VUID-VkCopyAccelerationStructureInfoKHR-buffer-03719 The buffer used to create dst must be bound to device memoryValid Usage (Implicit)3VUID-VkCopyAccelerationStructureInfoKHR-sType-sType sType must be <3VUID-VkCopyAccelerationStructureInfoKHR-pNext-pNext pNext must be NULL5VUID-VkCopyAccelerationStructureInfoKHR-src-parameter src must be a valid W handle5VUID-VkCopyAccelerationStructureInfoKHR-dst-parameter dst must be a valid W handle6VUID-VkCopyAccelerationStructureInfoKHR-mode-parameter mode must be a valid a value4VUID-VkCopyAccelerationStructureInfoKHR-commonparent Both of dst, and src must? have been created, allocated, or retrieved from the same See AlsoW, a, C, & , & kvulkanSVkAccelerationStructureVersionInfoKHR - Acceleration structure version information DescriptionNote pVersionData is a pointer to an array of 2*S uint8_t values instead of two S arrays as the expected use case for this member is to be pointed at the header of an previously serialized acceleration structure (via &  or & ]) that is loaded in memory. Using arrays would necessitate extra memory copies of the UUIDs.Valid Usage (Implicit)See AlsoC, &lvulkanVkAccelerationStructureInstanceKHR - 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^, emvulkanVkAccelerationStructureGeometryTrianglesDataKHR - Structure specifying a triangle geometry in a bottom-level acceleration structure DescriptionNote)Unlike the stride for vertex buffers in 7/ for graphics pipelines which must not exceed maxVertexInputBindingStride,  vertexStrideT for acceleration structure geometry is instead restricted to being a 32-bit value.Valid Usage (Implicit)See Also%, %, n, K, T, CnvulkanpVkAccelerationStructureGeometryKHR - Structure specifying geometries to be built into an acceleration structure Valid Usage:VUID-VkAccelerationStructureGeometryKHR-geometryType-03541 If  geometryType is %, the aabbs member of geometry must be a valid p structure:VUID-VkAccelerationStructureGeometryKHR-geometryType-03542 If  geometryType is %, the  triangles member of geometry must be a valid m structure:VUID-VkAccelerationStructureGeometryKHR-geometryType-03543 If  geometryType is %, the  instances member of geometry must be a valid o structureValid Usage (Implicit)3VUID-VkAccelerationStructureGeometryKHR-sType-sType sType must be :3VUID-VkAccelerationStructureGeometryKHR-pNext-pNext pNext must be NULL>VUID-VkAccelerationStructureGeometryKHR-geometryType-parameter  geometryType must be a valid Y value;VUID-VkAccelerationStructureGeometryKHR-triangles-parameter If  geometryType is %, the  triangles member of geometry must be a valid m structure7VUID-VkAccelerationStructureGeometryKHR-aabbs-parameter If  geometryType is %, the aabbs member of geometry must be a valid p structure;VUID-VkAccelerationStructureGeometryKHR-instances-parameter If  geometryType is %, the  instances member of geometry must be a valid o structure7VUID-VkAccelerationStructureGeometryKHR-flags-parameter flags must be a valid combination of _ valuesSee Alsou, %, `, Y, CovulkanVkAccelerationStructureGeometryInstancesDataKHR - Structure specifying a geometry consisting of instances of other acceleration structuresValid Usage (Implicit)See Also%, p, %, CpvulkanVkAccelerationStructureGeometryAabbsDataKHR - Structure specifying axis-aligned bounding box geometry in a bottom-level acceleration structureValid Usage (Implicit)See Also%, %, n, CqvulkanvVkAccelerationStructureDeviceAddressInfoKHR - Structure specifying the acceleration structure to query an address forValid Usage (Implicit)See AlsoW, C, &rvulkan|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 placed on an identically created buffer and at the same offset. Applications should avoid creating acceleration structures with application-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 Q, and QF to all buffers used as storage for an acceleration structure where  deviceAddress is not zero. During capture the tool 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. Applications should3 create an acceleration structure with a specific Z other than %.xIf the acceleration structure will be the target of a build operation, the required size for an acceleration structure can be queried with &R. If the acceleration structure is going to be the target of a compacting copy, & or & can0 be used to obtain the compacted size required. Valid Usage=VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-03612 If  deviceAddress is not zero,  createFlags must include %;VUID-VkAccelerationStructureCreateInfoKHR-createFlags-03613 If  createFlags includes %, g::"accelerationStructureCaptureReplay must be .6VUID-VkAccelerationStructureCreateInfoKHR-buffer-03614 buffer must have been created with a usage value containing 6VUID-VkAccelerationStructureCreateInfoKHR-buffer-03615 buffer must! not have been created with 6VUID-VkAccelerationStructureCreateInfoKHR-offset-03616 The sum of offset and size must be less than the size of buffer6VUID-VkAccelerationStructureCreateInfoKHR-offset-03734 offset must be a multiple of 256 bytesValid Usage (Implicit)5VUID-VkAccelerationStructureCreateInfoKHR-sType-sType sType must be A5VUID-VkAccelerationStructureCreateInfoKHR-pNext-pNext pNext must be NULL?VUID-VkAccelerationStructureCreateInfoKHR-createFlags-parameter  createFlags must be a valid combination of %} values:VUID-VkAccelerationStructureCreateInfoKHR-buffer-parameter buffer must be a valid  handle8VUID-VkAccelerationStructureCreateInfoKHR-type-parameter type must be a valid Z valueSee Also%, Z, , o, n, C, &svulkanjVkAccelerationStructureBuildSizesInfoKHR - Structure specifying build sizes for an acceleration structureValid Usage (Implicit)See Alson, C, &tvulkan{VkAccelerationStructureBuildRangeInfoKHR - Structure specifying build offsets and counts for acceleration structure builds DescriptionWThe primitive count and primitive offset are interpreted differently depending on the Y 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 m:: 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 m:: vertexData, starting at an offset of primitiveOffset + m:: vertexStride  firstVertex. A single e structure is consumed from m:: 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 v# structures are consumed from p::data , starting at an offset of primitiveOffset.For geometries of type %, primitiveCount0 is the number of acceleration structures. primitiveCount l( structures are consumed from o::data , starting at an offset of primitiveOffset. Valid UsageCVUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03656 For geometries of type %0, if the geometry uses indices, the offset primitiveOffset from m:: indexData must0 be a multiple of the element size of m:: indexTypeCVUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03657 For geometries of type %7, if the geometry doesn t use indices, the offset primitiveOffset from m:: vertexData must2 be a multiple of the component size of m:: vertexFormatCVUID-VkAccelerationStructureBuildRangeInfoKHR-transformOffset-03658 For geometries of type %, the offset transformOffset from m:: transformData must be a multiple of 16CVUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03659 For geometries of type %, the offset primitiveOffset from p::data must be a multiple of 8CVUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03660 For geometries of type %, the offset primitiveOffset from o::data must be a multiple of 16See Also&, &uvulkan}VkAccelerationStructureBuildGeometryInfoKHR - Structure specifying the geometry data used to build an acceleration structure Description Only one of  pGeometries or  ppGeometries can be a valid pointer, the other must be NULL. Each element of the non-NULLN array describes the data used to build each acceleration structure geometry.!The index of each element of the  pGeometries or  ppGeometries members of uq is used as the /geometry index/ during ray traversal. The geometry index is available in ray shaders via the  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-raygeometryindexRayGeometryIndexKHR built-in , and is  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shader-binding-table-hit-shader-indexingHused to determine hit and intersection shaders executed during traversal;. The geometry index is available to ray queries via the )OpRayQueryGetIntersectionGeometryIndexKHR instruction. Valid Usage;VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03654 type must not be % BVUID-VkAccelerationStructureBuildGeometryInfoKHR-pGeometries-03788 Only one of  pGeometries or  ppGeometries can$ be a valid pointer, the other must be NULL;VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03789 If type is % , the  geometryType member of elements of either  pGeometries or  ppGeometries must be %;VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03790 If type is %,  geometryCount must be 1;VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03791 If type is % the  geometryType member of elements of either  pGeometries or  ppGeometries must not be %;VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03792 If type is % then the  geometryType# member of each geometry in either  pGeometries or  ppGeometries must be the same;VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03793 If type is % then  geometryCount must be less than or equal to f::maxGeometryCount;VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03794 If type is % and the  geometryType member of either  pGeometries or  ppGeometries is %3, the total number of AABBs in all geometries must be less than or equal to f::maxPrimitiveCount;VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03795 If type is % and the  geometryType member of either  pGeometries or  ppGeometries is %7, the total number of triangles in all geometries must be less than or equal to f::maxPrimitiveCount<VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-03796 If flags has the & bit set, then it must not have the % bit setValid Usage (Implicit)<VUID-VkAccelerationStructureBuildGeometryInfoKHR-sType-sType sType must be 5<VUID-VkAccelerationStructureBuildGeometryInfoKHR-pNext-pNext pNext must be NULL?VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-parameter type must be a valid Z value@VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-parameter flags must be a valid combination of [ valuesFVUID-VkAccelerationStructureBuildGeometryInfoKHR-pGeometries-parameter If  geometryCount is not 0, and  pGeometries is not NULL,  pGeometries must( be a valid pointer to an array of  geometryCount valid n structuresGVUID-VkAccelerationStructureBuildGeometryInfoKHR-ppGeometries-parameter If  geometryCount is not 0, and  ppGeometries is not NULL,  ppGeometries must( be a valid pointer to an array of  geometryCount valid pointers to valid n structures=VUID-VkAccelerationStructureBuildGeometryInfoKHR-commonparent Both of dstAccelerationStructure, and srcAccelerationStructure7 that are valid handles of non-ignored parameters mustD have been created, allocated, or retrieved from the same See Alson, W, Z, \, %z, %, C, &, &, &, &vvulkan_VkAabbPositionsKHR - Structure specifying two opposing corners of an axis-aligned bounding box Valid UsageSee Also!No cross-references are available%zvulkan]VkBuildAccelerationStructureModeKHR - Enum specifying the type of build operation to performSee Alsou%}vulkanxVkAccelerationStructureCreateFlagBitsKHR - Bitmask specifying additional creation parameters for acceleration structureSee Also%%vulkanaccelerationStructureSize% is the size in bytes required in a W" for a build or update operation.%vulkanupdateScratchSizeL is the size in bytes required in a scratch buffer for an update operation.%vulkanbuildScratchSizeJ is the size in bytes required in a scratch buffer for a build operation.%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 aH 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 aH 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 aH value that specifies additional operations to perform during the copy.%vulkan pVersionDataP is a pointer to the version header of an acceleration structure as defined in & AVUID-VkAccelerationStructureVersionInfoKHR-pVersionData-parameter  pVersionData must$ be a valid pointer to an array of 2*S uint8_t values%vulkanaccelerationStructureF specifies the acceleration structure whose address is being queried.PVUID-VkAccelerationStructureDeviceAddressInfoKHR-accelerationStructure-parameter accelerationStructure must be a valid W handle%vulkan transform is a eT structure describing a transformation to be applied to the acceleration structure.%vulkaninstanceCustomIndexJ is 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%vulkanmask< is an 8-bit visibility mask for the geometry. The instance may only be hit if rayMask & instance.mask != 0%vulkan&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%vulkanflags is an 8-bit mask of ]# values to apply to this instance.7VUID-VkAccelerationStructureInstanceKHR-flags-parameter flags must be a valid combination of ] values%vulkanaccelerationStructureReference is either:9a device address containing the value obtained from & or R (used by device operations which reference acceleration structures) or,a WO object (used by host operations which reference acceleration structures).%vulkanminX< is the x position of one opposing corner of a bounding box."VUID-VkAabbPositionsKHR-minX-03546 minX must be less than or equal to maxX%vulkanminY< is the y position of one opposing corner of a bounding box."VUID-VkAabbPositionsKHR-minY-03547 minY must be less than or equal to maxY%vulkanminZ< is the z position of one opposing corner of a bounding box."VUID-VkAabbPositionsKHR-minZ-03548 minZ must be less than or equal to maxZ%vulkanmaxXB is the x position of the other opposing corner of a bounding box.%vulkanmaxYB is the y position of the other opposing corner of a bounding box.%vulkanmaxZB is the z position of the other opposing corner of a bounding box.%vulkan createFlags is a bitmask of %}J specifying additional creation parameters of the acceleration structure.%vulkanbufferC is the buffer on which the acceleration structure will be stored.%vulkanoffsett is an offset in bytes from the base address of the buffer at which the acceleration structure will be stored, and must be a multiple of 256.%vulkansize5 is the size required for the acceleration structure.%vulkantype is a ZK value specifying the type of acceleration structure that will be created.%vulkan deviceAddressI is the device address requested for the acceleration structure if the  yhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureCaptureReplay"accelerationStructureCaptureReplay feature is being used.%vulkanprimitiveCountW defines the number of primitives for a corresponding acceleration structure geometry.%vulkanprimitiveOffsetM defines an offset in bytes into the memory where primitive data is defined.%vulkan firstVertexG is the index of the first vertex to build from for triangle geometry.%vulkantransformOffsetQ defines an offset in bytes into the memory where a transform matrix is defined.%vulkantype is a ZB value specifying the type of acceleration structure being built.%vulkanflags is a bitmask of [A specifying additional parameters of the acceleration structure.%vulkanmode is a %z4 value specifying the type of operation to perform.%vulkansrcAccelerationStructureP points to an existing acceleration structure that is to be used to update the dst acceleration structure when mode is %.%vulkandstAccelerationStructure< points to the target acceleration structure for the build.%vulkan pGeometries is a pointer to an array of n structures.%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 n refers to.%vulkangeometry is a %D union describing the geometry data for the relevant geometry type.%vulkanflags is a bitmask of _N values describing additional properties of how the geometry should be built.%vulkanarrayOfPointers specifies whether data4 is used as an array of addresses or just an array.%vulkandataW is either the address of an array of device or host addresses referencing individual l structures if arrayOfPointers is .!, or the address of an array of l structures.%vulkandata3 is a device or host address to memory containing vY structures containing position data for each axis-aligned bounding box in the geometry.%vulkanstride. is the stride in bytes between each entry in data. The stride must be a multiple of 8.=VUID-VkAccelerationStructureGeometryAabbsDataKHR-stride-03545 stride must be a multiple of 8=VUID-VkAccelerationStructureGeometryAabbsDataKHR-stride-03820 stride must be less than or equal to 232-1%vulkan vertexFormat is the K of each vertex element.GVUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-03797  vertexFormat must support the { in  ::bufferFeatures as returned by TKVUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-parameter  vertexFormat must be a valid K value%vulkan vertexDataQ is a device or host address to memory containing vertex data for this geometry.%vulkan vertexStride, is the stride in bytes between each vertex.GVUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexStride-03735  vertexStride mustB be a multiple of the size in bytes of the smallest component of  vertexFormatGVUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexStride-03819  vertexStride must be less than or equal to 232-1%vulkan maxVertexb is the highest index of a vertex that will be addressed by a build command using this structure.%vulkan indexType is the T of each index element.DVUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-03798  indexType must be , , or HVUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-parameter  indexType must be a valid T value%vulkan indexDataP is a device or host address to memory containing index data for this geometry.%vulkan transformDataN is a device or host address to memory containing an optional reference to a eZ structure defining a transformation that should be applied to vertices in this geometry.%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.%vulkan2limits-maxPerStageDescriptorAccelerationStructures +maxPerStageDescriptorAccelerationStructures@ is the maximum number of acceleration structure bindings that cano be accessible to a single shader stage in a pipeline layout. Descriptor bindings with a descriptor type of e count against this limit. Only descriptor bindings in descriptor set layouts created without the @# bit set count against this limit.%vulkanAlimits-maxPerStageDescriptorUpdateAfterBindAccelerationStructures :maxPerStageDescriptorUpdateAfterBindAccelerationStructures is similar to +maxPerStageDescriptorAccelerationStructuresS but counts descriptor bindings from descriptor sets created with or without the @ bit set.%vulkan-limits-maxDescriptorSetAccelerationStructures &maxDescriptorSetAccelerationStructuresC is the maximum number of acceleration structure descriptors 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 e count against this limit. Only descriptor bindings in descriptor set layouts created without the @# bit set count against this limit.%vulkan<limits-maxDescriptorSetUpdateAfterBindAccelerationStructures 5maxDescriptorSetUpdateAfterBindAccelerationStructures is similar to &maxDescriptorSetAccelerationStructuresS but counts descriptor bindings from descriptor sets created with or without the @ bit set.%vulkan5limits-minAccelerationStructureScratchOffsetAlignment .minAccelerationStructureScratchOffsetAlignment is the minimum required] alignment, in bytes, for scratch data passed in to an acceleration structure build command.%vulkanfeatures-accelerationStructure accelerationStructure` indicates whether the implementation supports the acceleration structure functionality. See  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structureAcceleration Structures.%vulkan+features-accelerationStructureCaptureReplay "accelerationStructureCaptureReplay indicates whether the implementation supports saving and reusing acceleration structure device addresses, e.g. for trace capture and replay.%vulkan+features-accelerationStructureIndirectBuild "accelerationStructureIndirectBuildf indicates whether the implementation supports indirect acceleration structure build commands, e.g. &.%vulkan*features-accelerationStructureHostCommands !accelerationStructureHostCommandsa indicates whether the implementation supports host side acceleration structure commands, e.g. &, & , & , &, &.%vulkan>features-descriptorBindingAccelerationStructureUpdateAfterBind 5descriptorBindingAccelerationStructureUpdateAfterBind indicates whether the implementation supports updating acceleration structure descriptors after a set is bound. If this feature is not enabled, FB must not be used with .%vulkanpAccelerationStructures+ are the acceleration structures to update.%vulkan% when the pVersion9 version acceleration structure is not compatibile with device.%vulkan% when the pVersion4 version acceleration structure is compatibile with device.%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%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%e is an acceleration structure whose type is determined at build time used for special circumstances.%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% specifies that the destination acceleration structure will be built using data in a source acceleration structure, updated by the specified geometries.%vulkan%f specifies that the destination acceleration structure will be built using the specified geometries.%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 mustF have been created with a size at least as large as that returned by & or &= 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%6 specifies that the acceleration structure s address can* be saved and reused on a subsequent run.%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 UsageBVUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02442+ All submitted commands that refer to accelerationStructure must have completed executionBVUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02443 If  were provided when accelerationStructure1 was created, a compatible set of callbacks must be provided hereBVUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02444 If no  were provided when accelerationStructure was created,  pAllocator must be NULLValid Usage (Implicit)7VUID-vkDestroyAccelerationStructureKHR-device-parameter device must be a valid  handleFVUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parameter If accelerationStructure is not 8, accelerationStructure must be a valid W handle;VUID-vkDestroyAccelerationStructureKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structureCVUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parent If accelerationStructure is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to accelerationStructure must be externally synchronizedSee AlsoW, , & vulkanBvkCmdCopyAccelerationStructureKHR - Copy an acceleration structure Description Accesses to pInfo->src and pInfo->dst must be  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized with the *  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagespipeline stage and an  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type of  or  as appropriate. Valid Usage3VUID-vkCmdCopyAccelerationStructureKHR-buffer-03737 The buffer used to create pInfo->src must be bound to device memory3VUID-vkCmdCopyAccelerationStructureKHR-buffer-03738 The buffer used to create pInfo->dst must be bound to device memoryValid Usage (Implicit)>VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-parameter  commandBuffer must be a valid  handle6VUID-vkCmdCopyAccelerationStructureKHR-pInfo-parameter pInfo must$ be a valid pointer to a valid j structure>VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state<VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support compute operations1VUID-vkCmdCopyAccelerationStructureKHR-renderpass This command must1 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, j& vulkanLvkCopyAccelerationStructureKHR - Copy an acceleration structure on the host Description'This command fulfills the same task as &  but is executed by the host. Valid Usage;VUID-vkCopyAccelerationStructureKHR-deferredOperation-03677 If deferredOperation is not 8 , it must be a valid S object;VUID-vkCopyAccelerationStructureKHR-deferredOperation-03678D Any previous deferred operation that was associated with deferredOperation must be complete0VUID-vkCopyAccelerationStructureKHR-buffer-03727 The buffer used to create pInfo->src must, be bound to host-visible device memory0VUID-vkCopyAccelerationStructureKHR-buffer-03728 The buffer used to create pInfo->dst must, be bound to host-visible device memoryKVUID-vkCopyAccelerationStructureKHR-accelerationStructureHostCommands-03582 The  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureHostCommands#::accelerationStructureHostCommands feature must be enabled0VUID-vkCopyAccelerationStructureKHR-buffer-03780 The buffer used to create pInfo->src mustG be bound to memory that was not allocated with multiple instances0VUID-vkCopyAccelerationStructureKHR-buffer-03781 The buffer used to create pInfo->dst mustG be bound to memory that was not allocated with multiple instancesValid Usage (Implicit)4VUID-vkCopyAccelerationStructureKHR-device-parameter device must be a valid  handle?VUID-vkCopyAccelerationStructureKHR-deferredOperation-parameter If deferredOperation is not 8, deferredOperation must be a valid S handle3VUID-vkCopyAccelerationStructureKHR-pInfo-parameter pInfo must$ be a valid pointer to a valid j structure<VUID-vkCopyAccelerationStructureKHR-deferredOperation-parent If deferredOperation 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-successcodesSuccessF12  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Alsoj, S, & vulkan\vkCmdCopyAccelerationStructureToMemoryKHR - Copy an acceleration structure to device memory Description Accesses to pInfo->src must be  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized with the *  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagespipeline stage and an  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type of '. Accesses to the buffer indicated by pInfo->dst.deviceAddress must be synchronized with the *( pipeline stage and an access type of .+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 &.AThe defined header structure for the serialized data consists of:S bytes of data matching P:: driverUUIDSL 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 r::sizeA 64-bit integer of the count of the number of acceleration structure handles following. This will be zero for a bottom-level acceleration structure. For top-level acceleration structures this number is implementation-dependent; the number of and ordering of the handles may not match the instance descriptions which were used to build the acceleration structure.;The corresponding handles matching the values returned by & or T 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. The serialized data is written to the buffer (or read from the buffer) according to the host endianness. Valid Usage:VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03739 pInfo->dst.deviceAddress mustD be a valid device address for a buffer bound to device memory.:VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03740 pInfo->dst.deviceAddress must be aligned to 256 bytes:VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03741" If the buffer pointed to by pInfo->dst.deviceAddress is non-sparse then it must7 be bound completely and contiguously to a single / object9VUID-vkCmdCopyAccelerationStructureToMemoryKHR-None-03559 The buffer used to create pInfo->src must be bound to device memoryValid Usage (Implicit)FVUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-parameter  commandBuffer must be a valid  handle>VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-parameter pInfo must$ be a valid pointer to a valid i structureFVUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateDVUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support compute operations9VUID-vkCmdCopyAccelerationStructureToMemoryKHR-renderpass This command must1 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, i& vulkanYvkCopyAccelerationStructureToMemoryKHR - Serialize an acceleration structure on the host Description(This command fulfills the same task as &  but is executed by the host.+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 &. Valid UsageCVUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-03677 If deferredOperation is not 8, it must be a valid S objectCVUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-03678D Any previous deferred operation that was associated with deferredOperation must be complete8VUID-vkCopyAccelerationStructureToMemoryKHR-buffer-03731 The buffer used to create pInfo->src must, be bound to host-visible device memory7VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-03732 pInfo->dst.hostAddress must be a valid host pointer7VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-03751 pInfo->dst.hostAddress must be aligned to 16 bytesSVUID-vkCopyAccelerationStructureToMemoryKHR-accelerationStructureHostCommands-03584 The  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureHostCommands#::accelerationStructureHostCommands feature must be enabled8VUID-vkCopyAccelerationStructureToMemoryKHR-buffer-03783 The buffer used to create pInfo->src mustG be bound to memory that was not allocated with multiple instancesValid Usage (Implicit)<VUID-vkCopyAccelerationStructureToMemoryKHR-device-parameter device must be a valid  handleGVUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-parameter If deferredOperation is not 8, deferredOperation must be a valid S handle;VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-parameter pInfo must$ be a valid pointer to a valid i structureDVUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-parent If deferredOperation 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-successcodesSuccessF12  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Alsoi, S, &vulkan\vkCmdCopyMemoryToAccelerationStructureKHR - Copy device memory to an acceleration structure Description Accesses to pInfo->dst must be  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized with the *  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagespipeline stage and an  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type of '. Accesses to the buffer indicated by pInfo->src.deviceAddress must be synchronized with the *( pipeline stage and an access type of .DThis command can accept acceleration structures produced by either &  or & .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 Usage:VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03742 pInfo->src.deviceAddress mustD be a valid device address for a buffer bound to device memory.:VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03743 pInfo->src.deviceAddress must be aligned to 256 bytes:VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03744" If the buffer pointed to by pInfo->src.deviceAddress is non-sparse then it must7 be bound completely and contiguously to a single / object;VUID-vkCmdCopyMemoryToAccelerationStructureKHR-buffer-03745 The buffer used to create pInfo->dst must be bound to device memoryValid Usage (Implicit)FVUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-parameter  commandBuffer must be a valid  handle>VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-parameter pInfo must$ be a valid pointer to a valid h structureFVUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateDVUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support compute operations9VUID-vkCmdCopyMemoryToAccelerationStructureKHR-renderpass This command must1 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, h&vulkan[vkCopyMemoryToAccelerationStructureKHR - Deserialize an acceleration structure on the host Description(This command fulfills the same task as & but is executed by the host.DThis command can accept acceleration structures produced by either &  or & . Valid UsageCVUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-03677 If deferredOperation is not 8, it must be a valid S objectCVUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-03678D Any previous deferred operation that was associated with deferredOperation must be complete7VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-03729 pInfo->src.hostAddress must be a valid host pointer7VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-03750 pInfo->src.hostAddress must be aligned to 16 bytes8VUID-vkCopyMemoryToAccelerationStructureKHR-buffer-03730 The buffer used to create pInfo->dst must, be bound to host-visible device memorySVUID-vkCopyMemoryToAccelerationStructureKHR-accelerationStructureHostCommands-03583 The  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureHostCommands#::accelerationStructureHostCommands feature must be enabled8VUID-vkCopyMemoryToAccelerationStructureKHR-buffer-03782 The buffer used to create pInfo->dst mustG be bound to memory that was not allocated with multiple instancesValid Usage (Implicit)<VUID-vkCopyMemoryToAccelerationStructureKHR-device-parameter device must be a valid  handleGVUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-parameter If deferredOperation is not 8, deferredOperation must be a valid S handle;VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-parameter pInfo must$ be a valid pointer to a valid h structureDVUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-parent If deferredOperation 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-successcodesSuccessF12  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Alsoh, S, &vulkanqvkCmdWriteAccelerationStructuresPropertiesKHR - Write acceleration structure result parameters to query results. Description:Accesses to any of the acceleration structures listed in pAccelerationStructures must be  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized with the *  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagespipeline stage and an  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type of . Valid UsageBVUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-02493  queryPool must have been created with a  queryType matching  queryTypeBVUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-02494 The queries identified by  queryPool and  firstQuery must be  unavailable?VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-buffer-03736 The buffer4 used to create each acceleration structure in pAccelerationStructures must be bound to device memoryOVUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431% All acceleration structures in pAccelerationStructures must have been built with & if  queryType is  BVUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-03432  queryType must be   or  Valid Usage (Implicit)JVUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-parameter  commandBuffer must be a valid  handleTVUID-vkCmdWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter pAccelerationStructures must( be a valid pointer to an array of accelerationStructureCount valid W handlesFVUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-parameter  queryType must be a valid _ valueFVUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-parameter  queryPool must be a valid | handleJVUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateHVUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support compute operations=VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-renderpass This command must1 only be called outside of a render pass instanceYVUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength accelerationStructureCount must be greater than 0?VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commonparent Each 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 / 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 AlsoW, , |, _&vulkan`vkWriteAccelerationStructuresPropertiesKHR - Query acceleration structure meta-data on the host Description(This command fulfills the same task as & but is executed by the host. Valid UsageLVUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431% All acceleration structures in pAccelerationStructures must have been built with & if  queryType is   ?VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03432  queryType must be   or  ?VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03448 If  queryType is   , then stride must# be a multiple of the size of n?VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03449 If  queryType is   , then data must point to a n?VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03450 If  queryType is   , then stride must# be a multiple of the size of n?VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03451 If  queryType is   , then data must point to a n>VUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-03452 dataSize must" be greater than or equal to accelerationStructureCount*stride<VUID-vkWriteAccelerationStructuresPropertiesKHR-buffer-03733 The buffer4 used to create each acceleration structure in pAccelerationStructures must, be bound to host-visible device memoryWVUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructureHostCommands-03585 The  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureHostCommands#::accelerationStructureHostCommands feature must be enabled<VUID-vkWriteAccelerationStructuresPropertiesKHR-buffer-03784 The buffer4 used to create each acceleration structure in pAccelerationStructures mustG be bound to memory that was not allocated with multiple instancesValid Usage (Implicit)@VUID-vkWriteAccelerationStructuresPropertiesKHR-device-parameter device must be a valid  handleQVUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter pAccelerationStructures must( be a valid pointer to an array of accelerationStructureCount valid W handlesCVUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-parameter  queryType must be a valid _ value?VUID-vkWriteAccelerationStructuresPropertiesKHR-pData-parameter pData must# be a valid pointer to an array of dataSize bytesVVUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength accelerationStructureCount must be greater than 0DVUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-arraylength dataSize must be greater than 0NVUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parent Each 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See AlsoW, , _&vulkanvkGetDeviceAccelerationStructureCompatibilityKHR - Check if a serialized acceleration structure is compatible with the current device Valid UsageNVUID-vkGetDeviceAccelerationStructureCompatibilityKHR-rayTracingPipeline-03661 The  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipelinerayTracingPipeline or  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQueryrayQuery feature must be enabledValid Usage (Implicit)FVUID-vkGetDeviceAccelerationStructureCompatibilityKHR-device-parameter device must be a valid  handleLVUID-vkGetDeviceAccelerationStructureCompatibilityKHR-pVersionInfo-parameter  pVersionInfo must$ be a valid pointer to a valid k structureNVUID-vkGetDeviceAccelerationStructureCompatibilityKHR-pCompatibility-parameter pCompatibility must be a valid pointer to a b valueSee Alsob, k, &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 r.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 UsageAVUID-vkCreateAccelerationStructureKHR-accelerationStructure-03611 The  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureaccelerationStructure feature must be enabled9VUID-vkCreateAccelerationStructureKHR-deviceAddress-03488 If r:: deviceAddress is not zero, the  yhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureCaptureReplay"accelerationStructureCaptureReplay feature must be enabled2VUID-vkCreateAccelerationStructureKHR-device-03489 If 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)6VUID-vkCreateAccelerationStructureKHR-device-parameter device must be a valid  handle;VUID-vkCreateAccelerationStructureKHR-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid r structure:VUID-vkCreateAccelerationStructureKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structureFVUID-vkCreateAccelerationStructureKHR-pAccelerationStructure-parameter pAccelerationStructure 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@See Alsor, W, , &vulkan=A convenience wrapper to make a compatible pair of calls to & and & To ensure that &  is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.&vulkanEvkCmdBuildAccelerationStructuresKHR - 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.MAccesses to the acceleration structure scratch buffers as identified by the u! scratchData buffer device addresses must be  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized with the *  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagespipeline stage and an  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type of  or #. Similarly for accesses to each u!srcAccelerationStructure and u!dstAccelerationStructure.EAccesses to other input buffers as identified by any used values of m! vertexData, m! indexData, m! transformData, p!data, and o!data must be  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized with the *  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagespipeline stage and an  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type of . Valid Usage3VUID-vkCmdBuildAccelerationStructuresKHR-mode-04628 The mode member of each element of pInfos must be a valid %z value?GVUID-vkCmdBuildAccelerationStructuresKHR-srcAccelerationStructure-04629 If the srcAccelerationStructure member of any element of pInfos is not 8 , the srcAccelerationStructure member must be a valid W handle5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-04630 For each element of pInfos , if its mode member is % , its srcAccelerationStructure member must not be 85VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03403 The srcAccelerationStructure member of any element of pInfos must9 not be the same acceleration structure as the dstAccelerationStructure member of any other element of pInfosGVUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03698 The dstAccelerationStructure member of any element of pInfos must4 not be the same acceleration structure as the dstAccelerationStructure member of any other element of pInfosGVUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03800 The dstAccelerationStructure member of any element of pInfos must be a valid W handle5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03699 For each element of pInfos , if its type member is % , its dstAccelerationStructure member must( have been created with a value of r::type equal to either % or %5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03700 For each element of pInfos , if its type member is % , its dstAccelerationStructure member must( have been created with a value of r::type equal to either % or %5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03663 For each element of pInfos , if its mode member is %,  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-primsinactive primitives in its srcAccelerationStructure member must not be made active5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03664 For each element of pInfos , if its mode member is % , active primitives in its srcAccelerationStructure member must not be made shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-primsinactive3VUID-vkCmdBuildAccelerationStructuresKHR-None-03407 The dstAccelerationStructure member of any element of pInfos must not be referenced by the geometry.instances.data member of any element of  pGeometries or  ppGeometries with a  geometryType of % in any other element of pInfosGVUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03701& The range of memory backing the dstAccelerationStructure member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the srcAccelerationStructure% member of any other element of pInfos with a mode equal to %(, which is accessed by this commandGVUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03702& The range of memory backing the dstAccelerationStructure member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the dstAccelerationStructure% member of any other element of pInfos#, which is accessed by this commandGVUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03703& The range of memory backing the dstAccelerationStructure member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the  scratchData member of any element of pInfosE (including the same element), which is accessed by this command:VUID-vkCmdBuildAccelerationStructuresKHR-scratchData-03704& The range of memory backing the  scratchData member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the  scratchData% member of any other element of pInfos#, which is accessed by this command:VUID-vkCmdBuildAccelerationStructuresKHR-scratchData-03705& The range of memory backing the  scratchData member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the srcAccelerationStructure member of any element of pInfos with a mode equal to %E (including the same element), which is accessed by this commandGVUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03706& The range of memory backing the dstAccelerationStructure member of any element of pInfos" that is accessed by this command mustW not overlap the memory backing any acceleration structure referenced by the geometry.instances.data member of any element of  pGeometries or  ppGeometries with a  geometryType of % in any other element of pInfos(, which is accessed by this command5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03666 For each element of pInfos , if its mode member is % , its srcAccelerationStructure member must not be 85VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03667 For each element of pInfos , if its mode member is % , its srcAccelerationStructure member must" have been built before with & set in u::flags5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03668 For each element of pInfos , if its mode member is % , its srcAccelerationStructure and dstAccelerationStructure members must either be the same W, or not have any ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasingmemory aliasing5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03758 For each element of pInfos , if its mode member is %, its  geometryCount member must3 have the same value which was specified when srcAccelerationStructure was last built.5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03759 For each element of pInfos , if its mode member is %, its flags member must3 have the same value which was specified when srcAccelerationStructure was last built.5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03760 For each element of pInfos , if its mode member is %, its type member must3 have the same value which was specified when srcAccelerationStructure was last built.5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03761 For each element of pInfos , if its mode member is %, then for each n# structure referred to by its  pGeometries or  ppGeometries members, its  geometryType member must3 have the same value which was specified when srcAccelerationStructure was last built.5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03762 For each element of pInfos , if its mode member is %, then for each n# structure referred to by its  pGeometries or  ppGeometries members, its flags member must8 have the same value which was specified when srcAccelerationStructure was last built.5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03763 For each element of pInfos , if its mode member is %, then for each n# structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is %, its geometry.triangles.vertexFormat member must3 have the same value which was specified when srcAccelerationStructure was last built.5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03764 For each element of pInfos , if its mode member is %, then for each n# structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is %, its geometry.triangles.maxVertex member must3 have the same value which was specified when srcAccelerationStructure was last built.5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03765 For each element of pInfos , if its mode member is %, then for each n# structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is %, its geometry.triangles.indexType member must3 have the same value which was specified when srcAccelerationStructure was last built.5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03766 For each element of pInfos , if its mode member is %, then for each n# structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is %, if its  geometry.triangles.transformData member was NULL when srcAccelerationStructure& was last built, then it must be NULL.5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03767 For each element of pInfos , if its mode member is %, then for each n# structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is %, if its  geometry.triangles.transformData member was not NULL when srcAccelerationStructure) was last built, then it may not be NULL.5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03768 For each element of pInfos , if its mode member is %, then for each n# structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is %, and geometry.triangles.indexType is not q, then the value of each index referenced index must be the same as the corresponding index value when srcAccelerationStructure was last built.=VUID-vkCmdBuildAccelerationStructuresKHR-primitiveCount-03769 For each t& referenced by this command, its primitiveCount member must3 have the same value which was specified when srcAccelerationStructure was last built.:VUID-vkCmdBuildAccelerationStructuresKHR-firstVertex-03770 For each tW referenced by this command, if the corresponding geometry uses indices, its  firstVertex member must3 have the same value which was specified when srcAccelerationStructure was last built.5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03801 For each element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of %, the corresponding ppBuildRangeInfos[i][j].primitiveCount must$ be less than or equal to f::maxInstanceCount5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03707 For each element of pInfos, the buffer used to create its dstAccelerationStructure member must be bound to device memory5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03708 For each element of pInfos , if its mode member is % the buffer used to create its srcAccelerationStructure member must be bound to device memory5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03709 For each element of pInfos, the bufferC used to create each acceleration structure referenced by the geometry.instances.data member of any element of  pGeometries or  ppGeometries with a  geometryType of % must be bound to device memory5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03671 If pInfos[i].mode is %, all addresses between pInfos[i].scratchData.deviceAddress and pInfos[i].scratchData.deviceAddress + N - 1 must] be in the buffer device address range of the same buffer, where N is given by the buildScratchSize member of the s( structure returned from a call to & with an identical u# structure and primitive count5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03672 If pInfos[i].mode is %, all addresses between pInfos[i].scratchData.deviceAddress and pInfos[i].scratchData.deviceAddress + N - 1 must] be in the buffer device address range of the same buffer, where N is given by the updateScratchSize member of the s( structure returned from a call to & with an identical u# structure and primitive count7VUID-vkCmdBuildAccelerationStructuresKHR-geometry-03673M The buffers from which the buffer device addresses for all of the geometry.triangles.vertexData, geometry.triangles.indexData,  geometry.triangles.transformData, geometry.aabbs.data , and geometry.instances.data members of all pInfos[i]. pGeometries and pInfos[i]. ppGeometries must! have been created with the  usage flag5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03674; The buffer from which the buffer device address pInfos[i].scratchData.deviceAddress is queried must" have been created with  usage flag5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03802 For each element of pInfos, its scratchData.deviceAddress member must3 be a valid device address obtained from b#5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03803 For each element of pInfos, if scratchData.deviceAddress4 is the address of a non-sparse buffer then it must7 be bound completely and contiguously to a single / object5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03710 For each element of pInfos, its scratchData.deviceAddress member must be a multiple of f::.minAccelerationStructureScratchOffsetAlignment5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03804 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of %, +geometry.triangles.vertexData.deviceAddress must3 be a valid device address obtained from b#5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03805 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of % , if +geometry.triangles.vertexData.deviceAddress4 is the address of a non-sparse buffer then it must7 be bound completely and contiguously to a single / object5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03711 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of %, +geometry.triangles.vertexData.deviceAddress mustV be aligned to the size in bytes of the smallest component of the format in  vertexFormat5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03806 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of % , if geometry.triangles.indexType is not , *geometry.triangles.indexData.deviceAddress must3 be a valid device address obtained from b#5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03807 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of % , if geometry.triangles.indexType is not  , if *geometry.triangles.indexData.deviceAddress4 is the address of a non-sparse buffer then it must7 be bound completely and contiguously to a single / object5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03712 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of %, and with geometry.triangles.indexType not equal to , *geometry.triangles.indexData.deviceAddress must5 be aligned to the size in bytes of the type in  indexType5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03808 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of % , if .geometry.triangles.transformData.deviceAddress is not 0 , it must. be a valid device address obtained from b#5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03809 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of % , if .geometry.triangles.transformData.deviceAddress4 is the address of a non-sparse buffer then it must7 be bound completely and contiguously to a single / object5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03810 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of % , if .geometry.triangles.transformData.deviceAddress is not 0 , it must be aligned to 16 bytes5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03811 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of %, !geometry.aabbs.data.deviceAddress must3 be a valid device address obtained from b#5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03812 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of % , if !geometry.aabbs.data.deviceAddress4 is the address of a non-sparse buffer then it must7 be bound completely and contiguously to a single / object5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03714 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of %, !geometry.aabbs.data.deviceAddress must be aligned to 8 bytes5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03715 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of % , if geometry.arrayOfPointers is ., %geometry.instances.data.deviceAddress must be aligned to 16 bytes5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03716 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of % , if geometry.arrayOfPointers is ., %geometry.instances.data.deviceAddress must be aligned to 8 bytes5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03717 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of % , if geometry.arrayOfPointers is ., each element of %geometry.instances.data.deviceAddress in device memory must be aligned to 16 bytes5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03813 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of %, %geometry.instances.data.deviceAddress must3 be a valid device address obtained from b#5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03814 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of % , if %geometry.instances.data.deviceAddress4 is the address of a non-sparse buffer then it must7 be bound completely and contiguously to a single / object5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03815 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of % , each l::accelerationStructureReference value in %geometry.instances.data.deviceAddress mustF be a valid device address containing a value obtained from &5VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03675 For each pInfos[i], dstAccelerationStructure must( have been created with a value of r::sized greater than or equal to the memory size required by the build operation, as returned by & with  pBuildInfo = pInfos&[i] and with each element of the pMaxPrimitiveCounts4 array greater than or equal to the equivalent ppBuildRangeInfos[i][j].primitiveCount values for j in [0,pInfos[i]. geometryCount)@VUID-vkCmdBuildAccelerationStructuresKHR-ppBuildRangeInfos-03676 Each element of ppBuildRangeInfos[i] must( be a valid pointer to an array of pInfos[i]. geometryCount t structuresValid Usage (Implicit)@VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-parameter  commandBuffer must be a valid  handle9VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-parameter pInfos must# be a valid pointer to an array of  infoCount valid u structuresDVUID-vkCmdBuildAccelerationStructuresKHR-ppBuildRangeInfos-parameter ppBuildRangeInfos must( be a valid pointer to an array of  infoCount t structures@VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state>VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support compute operations3VUID-vkCmdBuildAccelerationStructuresKHR-renderpass This command must1 only be called outside of a render pass instance>VUID-vkCmdBuildAccelerationStructuresKHR-infoCount-arraylength  infoCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, t, &vulkanzvkCmdBuildAccelerationStructuresIndirectKHR - Build an acceleration structure with some parameters provided on the device DescriptionAccesses to acceleration structures, scratch buffers, vertex buffers, index buffers, and instance buffers must be synchronized as with &.Accesses to any element of pIndirectDeviceAddresses must be  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized with the *  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagespipeline stage and an  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type of . Valid Usage;VUID-vkCmdBuildAccelerationStructuresIndirectKHR-mode-04628 The mode member of each element of pInfos must be a valid %z valueGOVUID-vkCmdBuildAccelerationStructuresIndirectKHR-srcAccelerationStructure-04629 If the srcAccelerationStructure member of any element of pInfos is not 8 , the srcAccelerationStructure member must be a valid W handle=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-04630 For each element of pInfos , if its mode member is % , its srcAccelerationStructure member must not be 8=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03403 The srcAccelerationStructure member of any element of pInfos must9 not be the same acceleration structure as the dstAccelerationStructure member of any other element of pInfosOVUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03698 The dstAccelerationStructure member of any element of pInfos must4 not be the same acceleration structure as the dstAccelerationStructure member of any other element of pInfosOVUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03800 The dstAccelerationStructure member of any element of pInfos must be a valid W handle=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03699 For each element of pInfos , if its type member is % , its dstAccelerationStructure member must( have been created with a value of r::type equal to either % or %=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03700 For each element of pInfos , if its type member is % , its dstAccelerationStructure member must( have been created with a value of r::type equal to either % or %=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03663 For each element of pInfos , if its mode member is %,  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-primsinactive primitives in its srcAccelerationStructure member must not be made active=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03664 For each element of pInfos , if its mode member is % , active primitives in its srcAccelerationStructure member must not be made shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-primsinactive;VUID-vkCmdBuildAccelerationStructuresIndirectKHR-None-03407 The dstAccelerationStructure member of any element of pInfos must not be referenced by the geometry.instances.data member of any element of  pGeometries or  ppGeometries with a  geometryType of % in any other element of pInfosOVUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03701& The range of memory backing the dstAccelerationStructure member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the srcAccelerationStructure% member of any other element of pInfos with a mode equal to %(, which is accessed by this commandOVUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03702& The range of memory backing the dstAccelerationStructure member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the dstAccelerationStructure% member of any other element of pInfos#, which is accessed by this commandOVUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03703& The range of memory backing the dstAccelerationStructure member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the  scratchData member of any element of pInfosE (including the same element), which is accessed by this commandBVUID-vkCmdBuildAccelerationStructuresIndirectKHR-scratchData-03704& The range of memory backing the  scratchData member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the  scratchData% member of any other element of pInfos#, which is accessed by this commandBVUID-vkCmdBuildAccelerationStructuresIndirectKHR-scratchData-03705& The range of memory backing the  scratchData member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the srcAccelerationStructure member of any element of pInfos with a mode equal to %E (including the same element), which is accessed by this commandOVUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03706& The range of memory backing the dstAccelerationStructure member of any element of pInfos" that is accessed by this command mustW not overlap the memory backing any acceleration structure referenced by the geometry.instances.data member of any element of  pGeometries or  ppGeometries with a  geometryType of % in any other element of pInfos(, which is accessed by this command=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03666 For each element of pInfos , if its mode member is % , its srcAccelerationStructure member must not be 8=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03667 For each element of pInfos , if its mode member is % , its srcAccelerationStructure member must" have been built before with & set in u::flags=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03668 For each element of pInfos , if its mode member is % , its srcAccelerationStructure and dstAccelerationStructure members must either be the same W, or not have any ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasingmemory aliasing=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03758 For each element of pInfos , if its mode member is %, its  geometryCount member must3 have the same value which was specified when srcAccelerationStructure was last built.=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03759 For each element of pInfos , if its mode member is %, its flags member must3 have the same value which was specified when srcAccelerationStructure was last built.=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03760 For each element of pInfos , if its mode member is %, its type member must3 have the same value which was specified when srcAccelerationStructure was last built.=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03761 For each element of pInfos , if its mode member is %, then for each n# structure referred to by its  pGeometries or  ppGeometries members, its  geometryType member must3 have the same value which was specified when srcAccelerationStructure was last built.=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03762 For each element of pInfos , if its mode member is %, then for each n# structure referred to by its  pGeometries or  ppGeometries members, its flags member must8 have the same value which was specified when srcAccelerationStructure was last built.=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03763 For each element of pInfos , if its mode member is %, then for each n# structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is %, its geometry.triangles.vertexFormat member must3 have the same value which was specified when srcAccelerationStructure was last built.=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03764 For each element of pInfos , if its mode member is %, then for each n# structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is %, its geometry.triangles.maxVertex member must3 have the same value which was specified when srcAccelerationStructure was last built.=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03765 For each element of pInfos , if its mode member is %, then for each n# structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is %, its geometry.triangles.indexType member must3 have the same value which was specified when srcAccelerationStructure was last built.=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03766 For each element of pInfos , if its mode member is %, then for each n# structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is %, if its  geometry.triangles.transformData member was NULL when srcAccelerationStructure& was last built, then it must be NULL.=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03767 For each element of pInfos , if its mode member is %, then for each n# structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is %, if its  geometry.triangles.transformData member was not NULL when srcAccelerationStructure) was last built, then it may not be NULL.=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03768 For each element of pInfos , if its mode member is %, then for each n# structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is %, and geometry.triangles.indexType is not q, then the value of each index referenced index must be the same as the corresponding index value when srcAccelerationStructure was last built.EVUID-vkCmdBuildAccelerationStructuresIndirectKHR-primitiveCount-03769 For each t& referenced by this command, its primitiveCount member must3 have the same value which was specified when srcAccelerationStructure was last built.BVUID-vkCmdBuildAccelerationStructuresIndirectKHR-firstVertex-03770 For each tW referenced by this command, if the corresponding geometry uses indices, its  firstVertex member must3 have the same value which was specified when srcAccelerationStructure was last built.=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03801 For each element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of %, the corresponding ppMaxPrimitiveCounts[i][j] must be less than or equal to f::maxInstanceCount=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03707 For each element of pInfos, the buffer used to create its dstAccelerationStructure member must be bound to device memory=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03708 For each element of pInfos , if its mode member is % the buffer used to create its srcAccelerationStructure member must be bound to device memory=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03709 For each element of pInfos, the bufferC used to create each acceleration structure referenced by the geometry.instances.data member of any element of  pGeometries or  ppGeometries with a  geometryType of % must be bound to device memory=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03671 If pInfos[i].mode is %, all addresses between pInfos[i].scratchData.deviceAddress and pInfos[i].scratchData.deviceAddress + N - 1 must] be in the buffer device address range of the same buffer, where N is given by the buildScratchSize member of the s( structure returned from a call to & with an identical u# structure and primitive count=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03672 If pInfos[i].mode is %, all addresses between pInfos[i].scratchData.deviceAddress and pInfos[i].scratchData.deviceAddress + N - 1 must] be in the buffer device address range of the same buffer, where N is given by the updateScratchSize member of the s( structure returned from a call to & with an identical u# structure and primitive count?VUID-vkCmdBuildAccelerationStructuresIndirectKHR-geometry-03673M The buffers from which the buffer device addresses for all of the geometry.triangles.vertexData, geometry.triangles.indexData,  geometry.triangles.transformData, geometry.aabbs.data , and geometry.instances.data members of all pInfos[i]. pGeometries and pInfos[i]. ppGeometries must! have been created with the  usage flag=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03674; The buffer from which the buffer device address pInfos[i].scratchData.deviceAddress is queried must" have been created with  usage flag=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03802 For each element of pInfos, its scratchData.deviceAddress member must. be a valid device address obtained from b#=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03803 For each element of pInfos, if scratchData.deviceAddress4 is the address of a non-sparse buffer then it must7 be bound completely and contiguously to a single / object=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03710 For each element of pInfos, its scratchData.deviceAddress member must be a multiple of f::.minAccelerationStructureScratchOffsetAlignment=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03804 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of %, +geometry.triangles.vertexData.deviceAddress must3 be a valid device address obtained from b#=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03805 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of % , if +geometry.triangles.vertexData.deviceAddress4 is the address of a non-sparse buffer then it must7 be bound completely and contiguously to a single / object=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03711 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of %, +geometry.triangles.vertexData.deviceAddress mustV be aligned to the size in bytes of the smallest component of the format in  vertexFormat=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03806 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of %, if geometry.triangles.indexType is not , *geometry.triangles.indexData.deviceAddress must3 be a valid device address obtained from b#=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03807 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of %, if geometry.triangles.indexType is not  , if *geometry.triangles.indexData.deviceAddress4 is the address of a non-sparse buffer then it must7 be bound completely and contiguously to a single / object=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03712 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of %, and with geometry.triangles.indexType not equal to , *geometry.triangles.indexData.deviceAddress must5 be aligned to the size in bytes of the type in  indexType=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03808 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of % , if .geometry.triangles.transformData.deviceAddress is not 0 , it must. be a valid device address obtained from b#=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03809 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of % , if .geometry.triangles.transformData.deviceAddress4 is the address of a non-sparse buffer then it must7 be bound completely and contiguously to a single / object=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03810 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of % , if .geometry.triangles.transformData.deviceAddress is not 0 , it must be aligned to 16 bytes=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03811 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of %, !geometry.aabbs.data.deviceAddress must. be a valid device address obtained from b#=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03812 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of %, if !geometry.aabbs.data.deviceAddress4 is the address of a non-sparse buffer then it must< be bound completely and contiguously to a single / object=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03714 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of %, !geometry.aabbs.data.deviceAddress must be aligned to 8 bytes=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03715 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of %, if geometry.arrayOfPointers is ., %geometry.instances.data.deviceAddress must be aligned to 16 bytes=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03716 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of %, if geometry.arrayOfPointers is ., %geometry.instances.data.deviceAddress must be aligned to 8 bytes=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03717 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of %, if geometry.arrayOfPointers is ., each element of %geometry.instances.data.deviceAddress in device memory must be aligned to 16 bytes=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03813 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of %, %geometry.instances.data.deviceAddress must3 be a valid device address obtained from b#=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03814 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of % , if %geometry.instances.data.deviceAddress4 is the address of a non-sparse buffer then it must7 be bound completely and contiguously to a single / object=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03815 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of % , each l::accelerationStructureReference value in %geometry.instances.data.deviceAddress mustF be a valid device address containing a value obtained from &OVUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03645 For any element of pIndirectDeviceAddressesE, if the buffer from which it was queried is non-sparse then it must< be bound completely and contiguously to a single / objectOVUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03646 For any element of pIndirectDeviceAddresses'[i], all device addresses between pIndirectDeviceAddresses [i] and pIndirectDeviceAddresses[i] + (pInfos[i]!geometryCount pIndirectStrides [i]) - 1 must> be in the buffer device address range of the same bufferOVUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03647 For any element of pIndirectDeviceAddresses,, the buffer from which it was queried must! have been created with the  bit setOVUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03648 Each element of pIndirectDeviceAddresses must be a multiple of 4GVUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectStrides-03787 Each element of pIndirectStrides must be a multiple of 4DVUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-03649  commandBuffer must" not be a protected command bufferYVUID-vkCmdBuildAccelerationStructuresIndirectKHR-accelerationStructureIndirectBuild-03650 The  yhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureIndirectBuild$::accelerationStructureIndirectBuild feature must be enabledOVUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03651 Each t- structure referenced by any element of pIndirectDeviceAddresses must be a valid t structure=VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03652 pInfos[i].dstAccelerationStructure must( have been created with a value of r::sized greater than or equal to the memory size required by the build operation, as returned by & with  pBuildInfo = pInfos[i] and pMaxPrimitiveCounts = ppMaxPrimitiveCounts[i]KVUID-vkCmdBuildAccelerationStructuresIndirectKHR-ppMaxPrimitiveCounts-03653 Each ppMaxPrimitiveCounts[i][j] must* be greater than or equal to the the primitiveCount value specified by the t structure located at pIndirectDeviceAddresses[i] + (j pIndirectStrides[i])Valid Usage (Implicit)HVUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-parameter  commandBuffer must be a valid  handleAVUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-parameter pInfos must# be a valid pointer to an array of  infoCount valid u structuresSVUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-parameter pIndirectDeviceAddresses must( be a valid pointer to an array of  infoCount o valuesKVUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectStrides-parameter pIndirectStrides must( be a valid pointer to an array of  infoCount uint32_t valuesOVUID-vkCmdBuildAccelerationStructuresIndirectKHR-ppMaxPrimitiveCounts-parameter ppMaxPrimitiveCounts must( be a valid pointer to an array of  infoCount uint32_t valuesHVUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateFVUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support compute operations;VUID-vkCmdBuildAccelerationStructuresIndirectKHR-renderpass This command must1 only be called outside of a render pass instanceFVUID-vkCmdBuildAccelerationStructuresIndirectKHR-infoCount-arraylength  infoCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, , o&vulkanOvkBuildAccelerationStructuresKHR - Build an acceleration structure on the host Description(This command fulfills the same task as & but is executed by the host.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. Valid Usage0VUID-vkBuildAccelerationStructuresKHR-mode-04628 The mode member of each element of pInfos must be a valid %z value4DVUID-vkBuildAccelerationStructuresKHR-srcAccelerationStructure-04629 If the srcAccelerationStructure member of any element of pInfos is not 8 , the srcAccelerationStructure member must be a valid W handle2VUID-vkBuildAccelerationStructuresKHR-pInfos-04630 For each element of pInfos , if its mode member is % , its srcAccelerationStructure member must not be 82VUID-vkBuildAccelerationStructuresKHR-pInfos-03403 The srcAccelerationStructure member of any element of pInfos must9 not be the same acceleration structure as the dstAccelerationStructure member of any other element of pInfosDVUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03698 The dstAccelerationStructure member of any element of pInfos must4 not be the same acceleration structure as the dstAccelerationStructure member of any other element of pInfosDVUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03800 The dstAccelerationStructure member of any element of pInfos must be a valid W handle2VUID-vkBuildAccelerationStructuresKHR-pInfos-03699 For each element of pInfos , if its type member is % , its dstAccelerationStructure member must( have been created with a value of r::type equal to either % or %2VUID-vkBuildAccelerationStructuresKHR-pInfos-03700 For each element of pInfos , if its type member is % , its dstAccelerationStructure member must( have been created with a value of r::type equal to either % or %2VUID-vkBuildAccelerationStructuresKHR-pInfos-03663 For each element of pInfos , if its mode member is %,  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-primsinactive primitives in its srcAccelerationStructure member must not be made active2VUID-vkBuildAccelerationStructuresKHR-pInfos-03664 For each element of pInfos , if its mode member is % , active primitives in its srcAccelerationStructure member must not be made shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-primsinactive0VUID-vkBuildAccelerationStructuresKHR-None-03407 The dstAccelerationStructure member of any element of pInfos must not be referenced by the geometry.instances.data member of any element of  pGeometries or  ppGeometries with a  geometryType of % in any other element of pInfosDVUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03701& The range of memory backing the dstAccelerationStructure member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the srcAccelerationStructure% member of any other element of pInfos with a mode equal to %(, which is accessed by this commandDVUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03702& The range of memory backing the dstAccelerationStructure member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the dstAccelerationStructure% member of any other element of pInfos#, which is accessed by this commandDVUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03703& The range of memory backing the dstAccelerationStructure member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the  scratchData member of any element of pInfosE (including the same element), which is accessed by this command7VUID-vkBuildAccelerationStructuresKHR-scratchData-03704& The range of memory backing the  scratchData member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the  scratchData% member of any other element of pInfos#, which is accessed by this command7VUID-vkBuildAccelerationStructuresKHR-scratchData-03705& The range of memory backing the  scratchData member of any element of pInfos" that is accessed by this command must) not overlap the memory backing the srcAccelerationStructure member of any element of pInfos with a mode equal to %E (including the same element), which is accessed by this commandDVUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03706& The range of memory backing the dstAccelerationStructure member of any element of pInfos" that is accessed by this command mustW not overlap the memory backing any acceleration structure referenced by the geometry.instances.data member of any element of  pGeometries or  ppGeometries with a  geometryType of % in any other element of pInfos(, which is accessed by this command2VUID-vkBuildAccelerationStructuresKHR-pInfos-03666 For each element of pInfos , if its mode member is % , its srcAccelerationStructure member must not be 82VUID-vkBuildAccelerationStructuresKHR-pInfos-03667 For each element of pInfos , if its mode member is % , its srcAccelerationStructure member must" have been built before with & set in u::flags2VUID-vkBuildAccelerationStructuresKHR-pInfos-03668 For each element of pInfos , if its mode member is % , its srcAccelerationStructure and dstAccelerationStructure members must either be the same W, or not have any ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasingmemory aliasing2VUID-vkBuildAccelerationStructuresKHR-pInfos-03758 For each element of pInfos , if its mode member is %, its  geometryCount member must3 have the same value which was specified when srcAccelerationStructure was last built.2VUID-vkBuildAccelerationStructuresKHR-pInfos-03759 For each element of pInfos , if its mode member is %, its flags member must3 have the same value which was specified when srcAccelerationStructure was last built.2VUID-vkBuildAccelerationStructuresKHR-pInfos-03760 For each element of pInfos , if its mode member is %, its type member must3 have the same value which was specified when srcAccelerationStructure was last built.2VUID-vkBuildAccelerationStructuresKHR-pInfos-03761 For each element of pInfos , if its mode member is %, then for each n# structure referred to by its  pGeometries or  ppGeometries members, its  geometryType member must3 have the same value which was specified when srcAccelerationStructure was last built.2VUID-vkBuildAccelerationStructuresKHR-pInfos-03762 For each element of pInfos , if its mode member is %, then for each n# structure referred to by its  pGeometries or  ppGeometries members, its flags member must8 have the same value which was specified when srcAccelerationStructure was last built.2VUID-vkBuildAccelerationStructuresKHR-pInfos-03763 For each element of pInfos , if its mode member is %, then for each n# structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is %, its geometry.triangles.vertexFormat member must3 have the same value which was specified when srcAccelerationStructure was last built.2VUID-vkBuildAccelerationStructuresKHR-pInfos-03764 For each element of pInfos , if its mode member is %, then for each n# structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is %, its geometry.triangles.maxVertex member must3 have the same value which was specified when srcAccelerationStructure was last built.2VUID-vkBuildAccelerationStructuresKHR-pInfos-03765 For each element of pInfos , if its mode member is %, then for each n# structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is %, its geometry.triangles.indexType member must3 have the same value which was specified when srcAccelerationStructure was last built.2VUID-vkBuildAccelerationStructuresKHR-pInfos-03766 For each element of pInfos , if its mode member is %, then for each n# structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is %, if its  geometry.triangles.transformData member was NULL when srcAccelerationStructure& was last built, then it must be NULL.2VUID-vkBuildAccelerationStructuresKHR-pInfos-03767 For each element of pInfos , if its mode member is %, then for each n# structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is %, if its  geometry.triangles.transformData member was not NULL when srcAccelerationStructure) was last built, then it may not be NULL.2VUID-vkBuildAccelerationStructuresKHR-pInfos-03768 For each element of pInfos , if its mode member is %, then for each n# structure referred to by its  pGeometries or  ppGeometries members, if  geometryType is %, and geometry.triangles.indexType is not q, then the value of each index referenced index must be the same as the corresponding index value when srcAccelerationStructure was last built.:VUID-vkBuildAccelerationStructuresKHR-primitiveCount-03769 For each t& referenced by this command, its primitiveCount member must3 have the same value which was specified when srcAccelerationStructure was last built.7VUID-vkBuildAccelerationStructuresKHR-firstVertex-03770 For each tR referenced by this command, if the corresponding geometry uses indices, its  firstVertex member must3 have the same value which was specified when srcAccelerationStructure was last built.2VUID-vkBuildAccelerationStructuresKHR-pInfos-03801 For each element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of %, the corresponding ppBuildRangeInfos[i][j].primitiveCount must$ be less than or equal to f::maxInstanceCount2VUID-vkBuildAccelerationStructuresKHR-pInfos-03675 For each pInfos[i], dstAccelerationStructure must( have been created with a value of r::sized greater than or equal to the memory size required by the build operation, as returned by & with  pBuildInfo = pInfos&[i] and with each element of the pMaxPrimitiveCounts4 array greater than or equal to the equivalent ppBuildRangeInfos[i][j].primitiveCount values for j in [0,pInfos[i]. geometryCount)=VUID-vkBuildAccelerationStructuresKHR-ppBuildRangeInfos-03676 Each element of ppBuildRangeInfos[i] must( be a valid pointer to an array of pInfos[i]. geometryCount t structures=VUID-vkBuildAccelerationStructuresKHR-deferredOperation-03677 If deferredOperation is not 8 , it must be a valid S object=VUID-vkBuildAccelerationStructuresKHR-deferredOperation-03678D Any previous deferred operation that was associated with deferredOperation must be complete2VUID-vkBuildAccelerationStructuresKHR-pInfos-03722 For each element of pInfos, the buffer used to create its dstAccelerationStructure member must, be bound to host-visible device memory2VUID-vkBuildAccelerationStructuresKHR-pInfos-03723 For each element of pInfos , if its mode member is % the buffer used to create its srcAccelerationStructure member must, be bound to host-visible device memory2VUID-vkBuildAccelerationStructuresKHR-pInfos-03724 For each element of pInfos, the bufferC used to create each acceleration structure referenced by the geometry.instances.data member of any element of  pGeometries or  ppGeometries with a  geometryType of % must, be bound to host-visible device memoryMVUID-vkBuildAccelerationStructuresKHR-accelerationStructureHostCommands-03581 The  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureHostCommands#::accelerationStructureHostCommands feature must be enabled2VUID-vkBuildAccelerationStructuresKHR-pInfos-03725 If pInfos[i].mode is %, all addresses between pInfos[i].scratchData.hostAddress and pInfos[i].scratchData.hostAddress + N - 1 must4 be valid host memory, where N is given by the buildScratchSize member of the s( structure returned from a call to & with an identical u# structure and primitive count2VUID-vkBuildAccelerationStructuresKHR-pInfos-03726 If pInfos[i].mode is %, all addresses between pInfos[i].scratchData.hostAddress and pInfos[i].scratchData.hostAddress + N - 1 must4 be valid host memory, where N is given by the updateScratchSize member of the s( structure returned from a call to & with an identical u# structure and primitive count2VUID-vkBuildAccelerationStructuresKHR-pInfos-03771 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of %, )geometry.triangles.vertexData.hostAddress must be a valid host address2VUID-vkBuildAccelerationStructuresKHR-pInfos-03772 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of % , if geometry.triangles.indexType is not , (geometry.triangles.indexData.hostAddress must be a valid host address2VUID-vkBuildAccelerationStructuresKHR-pInfos-03773 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of % , if ,geometry.triangles.transformData.hostAddress is not 0, it must be a valid host address2VUID-vkBuildAccelerationStructuresKHR-pInfos-03774 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of %, geometry.aabbs.data.hostAddress must be a valid host address2VUID-vkBuildAccelerationStructuresKHR-pInfos-03775 For each element of pInfos, the buffer used to create its dstAccelerationStructure member mustG be bound to memory that was not allocated with multiple instances2VUID-vkBuildAccelerationStructuresKHR-pInfos-03776 For each element of pInfos , if its mode member is % the buffer used to create its srcAccelerationStructure member mustG be bound to memory that was not allocated with multiple instances2VUID-vkBuildAccelerationStructuresKHR-pInfos-03777 For each element of pInfos, the bufferC used to create each acceleration structure referenced by the geometry.instances.data member of any element of  pGeometries or  ppGeometries with a  geometryType of % mustG be bound to memory that was not allocated with multiple instances2VUID-vkBuildAccelerationStructuresKHR-pInfos-03778 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of %, #geometry.instances.data.hostAddress must be a valid host address2VUID-vkBuildAccelerationStructuresKHR-pInfos-03779 For any element of pInfos[i]. pGeometries or pInfos[i]. ppGeometries with a  geometryType of % , each l::accelerationStructureReference value in #geometry.instances.data.hostAddress must be a valid W objectValid Usage (Implicit)6VUID-vkBuildAccelerationStructuresKHR-device-parameter device must be a valid  handleAVUID-vkBuildAccelerationStructuresKHR-deferredOperation-parameter If deferredOperation is not 8, deferredOperation must be a valid S handle6VUID-vkBuildAccelerationStructuresKHR-pInfos-parameter pInfos must# be a valid pointer to an array of  infoCount valid u structuresAVUID-vkBuildAccelerationStructuresKHR-ppBuildRangeInfos-parameter ppBuildRangeInfos must( be a valid pointer to an array of  infoCount t structures;VUID-vkBuildAccelerationStructuresKHR-infoCount-arraylength  infoCount must be greater than 0>VUID-vkBuildAccelerationStructuresKHR-deferredOperation-parent If deferredOperation 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-successcodesSuccessF12  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Alsou, t, S, &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 r:: deviceAddress, the return value will be the same address.1If the acceleration structure was created with a type of % the returned address mustN be consistent with the relative offset to other acceleration structures of type of % allocated with the same A. That is, the difference in returned addresses between the two mustW be the same as the difference in offsets provided at acceleration structure creation.Note*The acceleration structure device address may be different from the buffer device address corresponding to the acceleration structure s start offset in its storage buffer for acceleration structure types other than %. Valid Usage<VUID-vkGetAccelerationStructureDeviceAddressKHR-device-03504 If 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)@VUID-vkGetAccelerationStructureDeviceAddressKHR-device-parameter device must be a valid  handle?VUID-vkGetAccelerationStructureDeviceAddressKHR-pInfo-parameter pInfo must$ be a valid pointer to a valid q structureSee Alsoq, &vulkancvkGetAccelerationStructureBuildSizesKHR - Retrieve the required size for an acceleration structure DescriptionThe srcAccelerationStructure, dstAccelerationStructure, and mode members of  pBuildInfo are ignored. Any % members of  pBuildInfo/ are ignored by this command, except that the  hostAddress member of m:: transformData% will be examined to check if it is NULL.+An acceleration structure created with the accelerationStructureSize@ returned by this command supports any build or update with a u structure and array of t1 structures subject to the following properties:/The build command is a host build command, and  buildType is % or %1The build command is a device build command, and  buildType is % or %For u:Its type, and flags- members are equal to those specified in  pBuildInfo. geometryCount0 is less than or equal to that specified in  pBuildInfo.For each element of either  pGeometries or  ppGeometries at a given index, its  geometryType* member is equal to that specified in  pBuildInfo.For each element of either  pGeometries or  ppGeometries at a given index, with a  geometryType member equal to %, the  vertexFormat and  indexType members of geometry.triangles9 are equal to those specified in the same element in  pBuildInfo.For each element of either  pGeometries or  ppGeometries at a given index, with a  geometryType member equal to %, the  maxVertex member of geometry.trianglesD is less than or equal to that specified in the same element in  pBuildInfo.For each element of either  pGeometries or  ppGeometries at a given index, with a  geometryType member equal to %', if the applicable address in the  transformData member of geometry.triangles is not NULL, the corresponding transformData.hostAddress parameter in  pBuildInfo is not NULL. For each t corresponding to the u:Its primitiveCountB member is less than or equal to the corresponding element of pMaxPrimitiveCounts.Similarly, the updateScratchSize6 value will support any build command specifying the % mode& under the above conditions, and the buildScratchSize7 value will support any build command specifying the % mode under the above conditions. Valid UsageEVUID-vkGetAccelerationStructureBuildSizesKHR-rayTracingPipeline-03617 The  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipelinerayTracingPipeline or  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQueryrayQuery feature must be enabled9VUID-vkGetAccelerationStructureBuildSizesKHR-device-03618 If 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 enabled=VUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-03619 If pBuildInfo->geometryCount is not 0, pMaxPrimitiveCounts must( be a valid pointer to an array of pBuildInfo->geometryCount uint32_t values=VUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-03785 If pBuildInfo->pGeometries or pBuildInfo->ppGeometries has a  geometryType of % , each pMaxPrimitiveCounts[i] must be less than or equal to f::maxInstanceCountValid Usage (Implicit)=VUID-vkGetAccelerationStructureBuildSizesKHR-device-parameter device must be a valid  handle@VUID-vkGetAccelerationStructureBuildSizesKHR-buildType-parameter  buildType must be a valid c valueAVUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-parameter  pBuildInfo must$ be a valid pointer to a valid u structureJVUID-vkGetAccelerationStructureBuildSizesKHR-pMaxPrimitiveCounts-parameter If pMaxPrimitiveCounts is not NULL, pMaxPrimitiveCounts must( be a valid pointer to an array of pBuildInfo->geometryCount uint32_t values@VUID-vkGetAccelerationStructureBuildSizesKHR-pSizeInfo-parameter  pSizeInfo must be a valid pointer to a s structureSee Alsou, s, c, & 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.& vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanpInfo is a pointer to a j( structure defining the copy operation.& vulkandevice6 is the device which owns the acceleration structures.vulkandeferredOperation is an optional S to  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations-requestingrequest deferral for this command.vulkanpInfo is a pointer to a j( structure defining the copy operation.& vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanpInfo is an a pointer to a i( structure defining the copy operation.& vulkandevice is the device which owns pInfo->src.vulkandeferredOperation is an optional S to  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations-requestingrequest deferral for this command.vulkanpInfo is a pointer to a i( structure defining the copy operation.&vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanpInfo is a pointer to a h( structure defining the copy operation.&vulkandevice is the device which owns  pInfo->dst.vulkandeferredOperation is an optional S to  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations-requestingrequest deferral for this command.vulkanpInfo is a pointer to a h( 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.&vulkandevice: is the device which owns the acceleration structures in pAccelerationStructures.vulkanpAccelerationStructuresJ points to an array of existing previously built acceleration structures.vulkan queryType is a _. value specifying the property to be queried.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.vulkanstrideG is the stride in bytes between results for individual queries within pData.&vulkandevice, is the device to check the version against.vulkan pVersionInfo points to the k2 version information to check against the device.&vulkandeviceG is the logical device that creates the acceleration structure object.vulkan pCreateInfo is a pointer to a rT 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 uM structures defining the geometry used to build each acceleration structure.vulkanppBuildRangeInfos is an array of  infoCount pointers to arrays of t structures. Each ppBuildRangeInfos[i] is an array of pInfos[i]. geometryCount te 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.vulkanpInfos is an array of  infoCount uM structures defining the geometry used to build each acceleration structure.vulkanpIndirectDeviceAddresses is an array of  infoCount) buffer device addresses which point to pInfos[i]! geometryCount te structures defining dynamic offsets to the addresses where geometry data is stored, as defined by pInfos[i].vulkanpIndirectStrides is an array of  infoCount# byte strides between elements of pIndirectDeviceAddresses.vulkanppMaxPrimitiveCounts is an array of  infoCount arrays of pInfo[i]! geometryCountj values indicating the maximum number of primitives that will be built by this command for each geometry.&vulkandevice is the 8 for which the acceleration structures are being built.vulkandeferredOperation is an optional S to  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations-requestingrequest deferral for this command.vulkanpInfos is a pointer to an array of  infoCount uM structures defining the geometry used to build each acceleration structure.vulkanppBuildRangeInfos is an array of  infoCount pointers to arrays of t structures. Each ppBuildRangeInfos[i] is an array of pInfos[i]. geometryCount te structures defining dynamic offsets to the addresses where geometry data is stored, as defined by pInfos[i].&vulkandeviceF is the logical device that the accelerationStructure was created on.vulkanpInfo is a pointer to a qN structure specifying the acceleration structure to retrieve an address for.&vulkandeviceR is the logical device that will be used for creating the acceleration structure.vulkan buildTypeL defines whether host or device operations (or both) are being queried for.vulkan pBuildInfo is a pointer to a u7 structure describing parameters of a build operation.vulkanpMaxPrimitiveCounts is a pointer to an array of pBuildInfo->geometryCount uint32_tD values defining the number of primitives built into each geometry.SW%)%T%S%R%Q%P%O%N%M%L%K%J%I%H%G%F%E%D%C%B%A%@%?%>%=%<%;%:%9%8%7%6%5%4%3%2%1Y%%%%xZ%%%%y[&&&%%%\]&&&&%^_&&%`a%%%%%|b%%%vc%%%%wd%%e%%%%f%%%%%%%%%g%%%%%%h%%%%i%%%%j%%%%k%%l%%%%%%%m%%%%%%%%n%%%%o%%%p%%%q%%r%%%%%%%s%%%%t%%%%%u%%%%%%%%v%%%%%%%%t%u%z%%%{%}%%~%%%%%%%%%%%%%& & & & & &&&&&&&&&&&&/& & & & & &&&&&&&&&&&&d%%g%%%%%%f%%%%%%%%%m%%%%%%%%p%%%o%%%n%%%%u%%%%%%%%t%%%%%r%%%%%%%v%%%%%%%e%%%%l%%%%%%%q%%k%%j%%%%i%%%%h%%%%s%%%%%%%%%%%%%%^]&&&&%&&&&`_&&%&&\[&&&%%%&&&%%%%}%%~%a%%%%%|%%%%%z%%%{%%Z%%%%y%%%Y%%%%x%%%c%%%%w%%%b%%%v%%%u%%t%WS%)%T%S%R%Q%P%O%N%M%L%K%J%I%H%G%F%E%D%C%B%A%@%?%>%=%<%;%:%9%8%7%6%5%4%3%2%1%T%S%R%Q%P%O%N%M%L%K%J%I%H%G%F%E%D%C%B%A%@%?%>%=%<%;%:%9%8%7%6%5%4%3%2%1None("#%&'-./1789;=>?FHIMSUVX_dghklmq_vulkanSVkDebugMarkerObjectTagInfoEXT - 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, C, &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, C, &vulkanRVkDebugMarkerMarkerInfoEXT - Specify parameters of a command buffer marker regionValid Usage (Implicit)See AlsoC, &, &&vulkan pMarkerNameS is a pointer to a null-terminated UTF-8 string containing the name of the marker.5VUID-VkDebugMarkerMarkerInfoEXT-pMarkerName-parameter  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.3VUID-VkDebugMarkerObjectTagInfoEXT-objectType-01493  objectType must not be %T7VUID-VkDebugMarkerObjectTagInfoEXT-objectType-parameter  objectType must be a valid  value&vulkanobject is the object to be tagged./VUID-VkDebugMarkerObjectTagInfoEXT-object-01494 object must not be 8/VUID-VkDebugMarkerObjectTagInfoEXT-object-01495 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.6VUID-VkDebugMarkerObjectTagInfoEXT-tagSize-arraylength 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.1VUID-VkDebugMarkerObjectTagInfoEXT-pTag-parameter 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.4VUID-VkDebugMarkerObjectNameInfoEXT-objectType-01490  objectType must not be %T8VUID-VkDebugMarkerObjectNameInfoEXT-objectType-parameter  objectType must be a valid  value&vulkanobject is the object to be named.0VUID-VkDebugMarkerObjectNameInfoEXT-object-01491 object must not be 80VUID-VkDebugMarkerObjectNameInfoEXT-object-01492 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.9VUID-VkDebugMarkerObjectNameInfoEXT-pObjectName-parameter  pObjectName must" be a null-terminated UTF-8 string&vulkanFvkDebugMarkerSetObjectNameEXT - Give a user-friendly name to an objectValid Usage (Implicit)3VUID-vkDebugMarkerSetObjectNameEXT-device-parameter device must be a valid  handle6VUID-vkDebugMarkerSetObjectNameEXT-pNameInfo-parameter  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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, &vulkanAvkDebugMarkerSetObjectTagEXT - Attach arbitrary data to an objectValid Usage (Implicit)2VUID-vkDebugMarkerSetObjectTagEXT-device-parameter device must be a valid  handle4VUID-vkDebugMarkerSetObjectTagEXT-pTagInfo-parameter pTagInfo 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, &vulkan>vkCmdDebugMarkerBeginEXT - Open a command buffer marker regionValid Usage (Implicit)5VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-parameter  commandBuffer must be a valid  handle3VUID-vkCmdDebugMarkerBeginEXT-pMarkerInfo-parameter  pMarkerInfo must be a valid pointer to a valid  structure5VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state3VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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=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 & and & must be matched and balanced. Valid Usage/VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01239 There must be an outstanding & command prior to the & on the queue that  commandBuffer is submitted to/VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01240 If  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)3VUID-vkCmdDebugMarkerEndEXT-commandBuffer-parameter  commandBuffer must be a valid  handle3VUID-vkCmdDebugMarkerEndEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state1VUID-vkCmdDebugMarkerEndEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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&vulkanGvkCmdDebugMarkerInsertEXT - Insert a marker label into a command bufferValid Usage (Implicit)6VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-parameter  commandBuffer must be a valid  handle4VUID-vkCmdDebugMarkerInsertEXT-pMarkerInfo-parameter  pMarkerInfo must be a valid pointer to a valid  structure6VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state4VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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.&vulkan 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.&vulkan commandBuffer; is the command buffer into which the command is recorded.&vulkan 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.?&&&&&&&&&&&&&%)%T%S%R%Q%P%O%N%M%L%K%J%I%H%G%F%E%D%C%B%A%@%?%>%=%<%;%:%9%8%7%6%5%4%3%2%1&&&&&&&&&c&&&&&&&&&&&&&&&&&&&&&&%)%T%S%R%Q%P%O%N%M%L%K%J%I%H%G%F%E%D%C%B%A%@%?%>%=%<%;%:%9%8%7%6%5%4%3%2%1%T%S%R%Q%P%O%N%M%L%K%J%I%H%G%F%E%D%C%B%A%@%?%>%=%<%;%:%9%8%7%6%5%4%3%2%1None("#%&'-./1789;=>?FHIMSUVX_dghklmq_(&vulkanEvkAcquireXlibDisplayEXT - 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@>See AlsoR, &vulkanYvkGetRandROutputDisplayEXT - Query the VkDisplayKHR corresponding to an X11 RandR Output DescriptionIf there is no R corresponding to rrOutput on physicalDevice, 8 must be returned in pDisplay. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@See AlsoR, &vulkanphysicalDevice' The physical device the display is on.5VUID-vkAcquireXlibDisplayEXT-physicalDevice-parameter physicalDevice must be a valid  handlevulkandpy4 A connection to the X11 server that currently owns display.*VUID-vkAcquireXlibDisplayEXT-dpy-parameter dpy must be a valid pointer to a  valuevulkandisplay4 The display the caller wishes to control in Vulkan..VUID-vkAcquireXlibDisplayEXT-display-parameter display must be a valid R handle+VUID-vkAcquireXlibDisplayEXT-display-parent display must2 have been created, allocated, or retrieved from physicalDevice&vulkanphysicalDevice4 The physical device to query the display handle on.8VUID-vkGetRandROutputDisplayEXT-physicalDevice-parameter physicalDevice must be a valid  handlevulkandpy+ A connection to the X11 server from which rrOutput was queried.-VUID-vkGetRandROutputDisplayEXT-dpy-parameter dpy must be a valid pointer to a  valuevulkanrrOutput An X11 RandR output ID. R&&&&&& &&&&&&RrNone("#%&'-./1789;=>?FHIMSUVX_dghklmq_=YvulkanVkSwapchainDisplayNativeHdrCreateInfoAMD - 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 j@, meaning local dimming is initially enabled for the swapchain.Valid Usage (Implicit)9VUID-VkSwapchainDisplayNativeHdrCreateInfoAMD-sType-sType sType must be  Valid UsageFVUID-VkSwapchainDisplayNativeHdrCreateInfoAMD-localDimmingEnable-04449 It is only valid to set localDimmingEnable to j if Z::localDimmingSupport is supportedSee Alsop, CZvulkanvVkDisplayNativeHdrSurfaceCapabilitiesAMD - Structure describing display native HDR specific capabilities of a surfaceValid Usage (Implicit)See Alsop, C&vulkanlocalDimmingEnable? specifies whether local dimming is enabled for the swapchain.&vulkanlocalDimmingSupportC specifies whether the surface supports local dimming. If this is j, Y canq be used to explicitly enable or disable local dimming for the surface. Local dimming may also be overriden by &' during the lifetime of the swapchain.&vulkan(vkSetLocalDimmingAMD - Set Local DimmingValid Usage (Implicit)*VUID-vkSetLocalDimmingAMD-device-parameter device must be a valid  handle-VUID-vkSetLocalDimmingAMD-swapChain-parameter  swapChain must be a valid L handle&VUID-vkSetLocalDimmingAMD-commonparent Both of device , and  swapChain must? have been created, allocated, or retrieved from the same / Valid Usage3VUID-vkSetLocalDimmingAMD-localDimmingSupport-04618 Z::localDimmingSupport must be supportedSee Alsop, , L&vulkandevice is the device associated with  swapChain.vulkan swapChain handle to enable local dimming.vulkanlocalDimmingEnable? specifies whether local dimming is enabled for the swapchain.LY&&Z&&   8 E D C B A @ ? > = < ; : 9 7 6&&&&&/&Z&&Y&&&&&&L   8 E D C B A @ ? > = < ; : 9 7 6 8 E D C B A @ ? > = < ; : 9 7 6INone("#%&'-./1789;=>?FHIMSUVX_dghklmq`vulkaniVkDescriptorUpdateTemplateEntry - Describes a single descriptor update of the descriptor update template Valid Usage5VUID-VkDescriptorUpdateTemplateEntry-dstBinding-00354  dstBinding must be a valid binding in the descriptor set layout implicitly specified when using a descriptor update template to update descriptors:VUID-VkDescriptorUpdateTemplateEntry-dstArrayElement-00355 dstArrayElement 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-consecutive5VUID-VkDescriptorUpdateTemplateEntry-descriptor-02226 If  descriptor type is A, dstArrayElement must be an integer multiple of 45VUID-VkDescriptorUpdateTemplateEntry-descriptor-02227 If  descriptor type is A, descriptorCount must be an integer multiple of 4Valid Usage (Implicit)=VUID-VkDescriptorUpdateTemplateEntry-descriptorType-parameter descriptorType must be a valid  valueSee Also, vulkanuVkDescriptorUpdateTemplateCreateInfo - Structure specifying parameters of a newly created descriptor update template Valid Usage<VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00350 If  templateType is , descriptorSetLayout must be a valid  handle<VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00351 If  templateType is , pipelineBindPoint must be a valid W value<VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00352 If  templateType is , pipelineLayout must be a valid } handle<VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00353 If  templateType is , set musts be the unique set number in the pipeline layout that uses a descriptor set layout that was created with <VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-04615 If  templateType is , descriptorSetLayout must& not contain a binding with type Valid Usage (Implicit)5VUID-VkDescriptorUpdateTemplateCreateInfo-sType-sType sType must be t5VUID-VkDescriptorUpdateTemplateCreateInfo-pNext-pNext pNext must be NULL;VUID-VkDescriptorUpdateTemplateCreateInfo-flags-zerobitmask flags must be 0LVUID-VkDescriptorUpdateTemplateCreateInfo-pDescriptorUpdateEntries-parameter pDescriptorUpdateEntries must( be a valid pointer to an array of descriptorUpdateEntryCount valid  structures@VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-parameter  templateType must be a valid  valuePVUID-VkDescriptorUpdateTemplateCreateInfo-descriptorUpdateEntryCount-arraylength descriptorUpdateEntryCount must be greater than 06VUID-VkDescriptorUpdateTemplateCreateInfo-commonparent Both of descriptorSetLayout, and pipelineLayout7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Also,  , , , W, }, C, ' , K&vulkanflags is reserved for future use.&vulkanpDescriptorUpdateEntries is a pointer to an array of X structures describing the descriptors to be updated by the descriptor update template.'vulkan 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.'vulkandescriptorSetLayout 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 .'vulkanpipelineBindPoint is a Wc indicating the type of the pipeline that will use the descriptors. This parameter is ignored if  templateType is not 'vulkanpipelineLayout is a }D object used to program the bindings. This parameter is ignored if  templateType is not 'vulkansett is the set number of the descriptor set in the pipeline layout that will be updated. This parameter is ignored if  templateType is not 'vulkan dstBindingQ is the descriptor binding to update when using this descriptor update template.'vulkandstArrayElement4 is the starting element in the array belonging to  dstBinding*. If the descriptor binding identified by  dstBinding has a descriptor type of A then dstArrayElement. specifies the starting byte offset to update.'vulkandescriptorCount- 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  1 above. If the descriptor binding identified by  dstBinding has a descriptor type of A 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.' vulkandescriptorType is a ( specifying the type of the descriptor.' vulkanoffsetH is the offset in bytes of the first binding in the raw data structure.' vulkanstride 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 A 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.' vulkanKvkCreateDescriptorUpdateTemplate - Create a new descriptor update templateValid Usage (Implicit)6VUID-vkCreateDescriptorUpdateTemplate-device-parameter device must be a valid  handle;VUID-vkCreateDescriptorUpdateTemplate-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure:VUID-vkCreateDescriptorUpdateTemplate-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structureIVUID-vkCreateDescriptorUpdateTemplate-pDescriptorUpdateTemplate-parameter pDescriptorUpdateTemplate must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , , ' vulkan=A convenience wrapper to make a compatible pair of calls to '  and 'To ensure that ' is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.'vulkanPvkDestroyDescriptorUpdateTemplate - Destroy a descriptor update template object Valid Usage@VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00356 If  were provided when descriptorSetLayout1 was created, a compatible set of callbacks must be provided here@VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00357 If no  were provided when descriptorSetLayout was created,  pAllocator must be NULLValid Usage (Implicit)7VUID-vkDestroyDescriptorUpdateTemplate-device-parameter device must be a valid  handleIVUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parameter If descriptorUpdateTemplate is not 8, descriptorUpdateTemplate must be a valid  handle;VUID-vkDestroyDescriptorUpdateTemplate-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structureFVUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parent If descriptorUpdateTemplate is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to descriptorUpdateTemplate must be externally synchronizedSee Also, , 'vulkanlvkUpdateDescriptorSetWithTemplate - Update the contents of a descriptor set object using an update template Valid Usage2VUID-vkUpdateDescriptorSetWithTemplate-pData-01685 pData mustT be a valid pointer to a memory containing one or more valid instances of  ,   , or / in a layout defined by descriptorUpdateTemplate when it was created with ' Valid Usage (Implicit)7VUID-vkUpdateDescriptorSetWithTemplate-device-parameter device must be a valid  handle>VUID-vkUpdateDescriptorSetWithTemplate-descriptorSet-parameter  descriptorSet must be a valid  handleIVUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parameter descriptorUpdateTemplate must be a valid  handleFVUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parent descriptorUpdateTemplate 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, , ' vulkandeviceD 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 '.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.'vulkandeviceS 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.'vulkandevice8 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  ,  , or / structures or p or p( handles used to write the descriptors.5V 43210/.-,+*)('&%$#"!   '' ' ' '''&'&&''''CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE ' ' ''K' ' '''' ' ' '''&'&&'''' CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEV 43210/.-,+*)('&%$#"!   43210/.-,+*)('&%$#"!   9None("#%&'-./1789;=>?FHIMSUVX_dghklmqb1 vulkan@VkPushConstantRange - Structure specifying a push constant rangeValid Usage (Implicit)See Also, dvulkankVkPipelineLayoutCreateInfo - Structure specifying the parameters of a newly created pipeline layout object Valid Usage4VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286 setLayoutCount must be less than or equal to  ::maxBoundDescriptorSets)4VUID-VkPipelineLayoutCreateInfo-descriptorType-03016Y The total number of descriptors in descriptor set layouts created without the @ bit set with a descriptorType of  and G accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to  ::maxPerStageDescriptorSamplers4VUID-VkPipelineLayoutCreateInfo-descriptorType-03017Y The total number of descriptors in descriptor set layouts created without the @ bit set with a descriptorType of  and G accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to  ::#maxPerStageDescriptorUniformBuffers4VUID-VkPipelineLayoutCreateInfo-descriptorType-03018Y The total number of descriptors in descriptor set layouts created without the @ bit set with a descriptorType of  and G accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to  ::#maxPerStageDescriptorStorageBuffers4VUID-VkPipelineLayoutCreateInfo-descriptorType-03019Y The total number of descriptors in descriptor set layouts created without the @ bit set with a descriptorType of , , and G accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to  ::"maxPerStageDescriptorSampledImages4VUID-VkPipelineLayoutCreateInfo-descriptorType-03020Y The total number of descriptors in descriptor set layouts created without the @ bit set with a descriptorType of , and G accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to  ::"maxPerStageDescriptorStorageImages4VUID-VkPipelineLayoutCreateInfo-descriptorType-03021Y The total number of descriptors in descriptor set layouts created without the @ bit set with a descriptorType of G accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to  ::%maxPerStageDescriptorInputAttachments4VUID-VkPipelineLayoutCreateInfo-descriptorType-02214V The total number of bindings in descriptor set layouts created without the @ bit set with a descriptorType of AG accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to ::(maxPerStageDescriptorInlineUniformBlocks4VUID-VkPipelineLayoutCreateInfo-descriptorType-03022- The total number of descriptors with a descriptorType of  and G accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to \::,maxPerStageDescriptorUpdateAfterBindSamplers4VUID-VkPipelineLayoutCreateInfo-descriptorType-03023- The total number of descriptors with a descriptorType of  and G accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to \::2maxPerStageDescriptorUpdateAfterBindUniformBuffers4VUID-VkPipelineLayoutCreateInfo-descriptorType-03024- The total number of descriptors with a descriptorType of  and G accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to \::2maxPerStageDescriptorUpdateAfterBindStorageBuffers4VUID-VkPipelineLayoutCreateInfo-descriptorType-03025- The total number of descriptors with a descriptorType of , , and G accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to \::1maxPerStageDescriptorUpdateAfterBindSampledImages4VUID-VkPipelineLayoutCreateInfo-descriptorType-03026- The total number of descriptors with a descriptorType of , and G accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to \::1maxPerStageDescriptorUpdateAfterBindStorageImages4VUID-VkPipelineLayoutCreateInfo-descriptorType-03027- The total number of descriptors with a descriptorType of G accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to \::4maxPerStageDescriptorUpdateAfterBindInputAttachments4VUID-VkPipelineLayoutCreateInfo-descriptorType-02215* The total number of bindings with a descriptorType of AG accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to ::7maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks4VUID-VkPipelineLayoutCreateInfo-descriptorType-03028Y The total number of descriptors in descriptor set layouts created without the @ bit set with a descriptorType of  and J accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to  ::maxDescriptorSetSamplers4VUID-VkPipelineLayoutCreateInfo-descriptorType-03029Y The total number of descriptors in descriptor set layouts created without the @ bit set with a descriptorType of J accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to  ::maxDescriptorSetUniformBuffers4VUID-VkPipelineLayoutCreateInfo-descriptorType-03030Y The total number of descriptors in descriptor set layouts created without the @ bit set with a descriptorType of J accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to  ::%maxDescriptorSetUniformBuffersDynamic4VUID-VkPipelineLayoutCreateInfo-descriptorType-03031Y The total number of descriptors in descriptor set layouts created without the @ bit set with a descriptorType of J accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to  ::maxDescriptorSetStorageBuffers4VUID-VkPipelineLayoutCreateInfo-descriptorType-03032Y The total number of descriptors in descriptor set layouts created without the @ bit set with a descriptorType of J accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to  ::%maxDescriptorSetStorageBuffersDynamic4VUID-VkPipelineLayoutCreateInfo-descriptorType-03033Y The total number of descriptors in descriptor set layouts created without the @ bit set with a descriptorType of , , and J accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to  ::maxDescriptorSetSampledImages4VUID-VkPipelineLayoutCreateInfo-descriptorType-03034Y The total number of descriptors in descriptor set layouts created without the @ bit set with a descriptorType of , and J accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to  ::maxDescriptorSetStorageImages4VUID-VkPipelineLayoutCreateInfo-descriptorType-03035Y The total number of descriptors in descriptor set layouts created without the @ bit set with a descriptorType of J accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to  :: maxDescriptorSetInputAttachments4VUID-VkPipelineLayoutCreateInfo-descriptorType-02216V The total number of bindings in descriptor set layouts created without the @ bit set with a descriptorType of AJ accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to ::#maxDescriptorSetInlineUniformBlocks1VUID-VkPipelineLayoutCreateInfo-pSetLayouts-030367 The total number of descriptors of the type  and J accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to \::'maxDescriptorSetUpdateAfterBindSamplers1VUID-VkPipelineLayoutCreateInfo-pSetLayouts-030377 The total number of descriptors of the type J accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to \::-maxDescriptorSetUpdateAfterBindUniformBuffers1VUID-VkPipelineLayoutCreateInfo-pSetLayouts-030387 The total number of descriptors of the type J accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to \::4maxDescriptorSetUpdateAfterBindUniformBuffersDynamic1VUID-VkPipelineLayoutCreateInfo-pSetLayouts-030397 The total number of descriptors of the type J accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to \::-maxDescriptorSetUpdateAfterBindStorageBuffers1VUID-VkPipelineLayoutCreateInfo-pSetLayouts-030407 The total number of descriptors of the type J accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to \::4maxDescriptorSetUpdateAfterBindStorageBuffersDynamic1VUID-VkPipelineLayoutCreateInfo-pSetLayouts-030417 The total number of descriptors of the type , , and J accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to \::,maxDescriptorSetUpdateAfterBindSampledImages1VUID-VkPipelineLayoutCreateInfo-pSetLayouts-030427 The total number of descriptors of the type , and J accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to \::,maxDescriptorSetUpdateAfterBindStorageImages1VUID-VkPipelineLayoutCreateInfo-pSetLayouts-030437 The total number of descriptors of the type J accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to \::/maxDescriptorSetUpdateAfterBindInputAttachments4VUID-VkPipelineLayoutCreateInfo-descriptorType-02217* The total number of bindings with a descriptorType of AJ accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to ::2maxDescriptorSetUpdateAfterBindInlineUniformBlocks9VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-00292 Any two elements of pPushConstantRanges must$ not include the same stage in  stageFlags1VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00293  pSetLayouts mustQ not contain more than one descriptor set layout that was created with  set4VUID-VkPipelineLayoutCreateInfo-descriptorType-03571V The total number of bindings in descriptor set layouts created without the @ bit set with a descriptorType of G accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to ::+maxPerStageDescriptorAccelerationStructures4VUID-VkPipelineLayoutCreateInfo-descriptorType-03572* The total number of bindings with a descriptorType of 7 to any given shader stage across all elements of  pSetLayouts must be less than or equal to :::maxPerStageDescriptorUpdateAfterBindAccelerationStructures4VUID-VkPipelineLayoutCreateInfo-descriptorType-03573V The total number of bindings in descriptor set layouts created without the @ bit set with a descriptorType of J accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to ::&maxDescriptorSetAccelerationStructures4VUID-VkPipelineLayoutCreateInfo-descriptorType-03574* The total number of bindings with a descriptorType of J accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to ::5maxDescriptorSetUpdateAfterBindAccelerationStructures4VUID-VkPipelineLayoutCreateInfo-descriptorType-02381* The total number of bindings with a descriptorType of J accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to ::&maxDescriptorSetAccelerationStructures8VUID-VkPipelineLayoutCreateInfo-pImmutableSamplers-03566 The total number of pImmutableSamplers created with flags containing Z or ZD: 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$::maxDescriptorSetSubsampledSamplers1VUID-VkPipelineLayoutCreateInfo-pSetLayouts-04606 Any element of  pSetLayouts must% not have been created with the  bit setValid Usage (Implicit)+VUID-VkPipelineLayoutCreateInfo-sType-sType sType must be +VUID-VkPipelineLayoutCreateInfo-pNext-pNext pNext must be NULL1VUID-VkPipelineLayoutCreateInfo-flags-zerobitmask flags must be 05VUID-VkPipelineLayoutCreateInfo-pSetLayouts-parameter If setLayoutCount is not 0,  pSetLayouts must( be a valid pointer to an array of setLayoutCount valid  handles=VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-parameter If pushConstantRangeCount is not 0, pPushConstantRanges must( be a valid pointer to an array of pushConstantRangeCount valid  structuresSee Also, , , C, '"'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.-VUID-VkPushConstantRange-stageFlags-parameter  stageFlags must be a valid combination of &f values3VUID-VkPushConstantRange-stageFlags-requiredbitmask  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.%VUID-VkPushConstantRange-offset-00294 offset must be less than  ::maxPushConstantsSize%VUID-VkPushConstantRange-offset-00295 offset must be a multiple of 4'!vulkan#VUID-VkPushConstantRange-size-00296 size must be greater than 0#VUID-VkPushConstantRange-size-00297 size must be a multiple of 4#VUID-VkPushConstantRange-size-00298 size must be less than or equal to  ::maxPushConstantsSize minus offset'"vulkan=vkCreatePipelineLayout - Creates a new pipeline layout objectValid Usage (Implicit),VUID-vkCreatePipelineLayout-device-parameter device must be a valid  handle1VUID-vkCreatePipelineLayout-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure0VUID-vkCreatePipelineLayout-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure5VUID-vkCreatePipelineLayout-pPipelineLayout-parameter pPipelineLayout must be a valid pointer to a } handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , }, '#vulkan=A convenience wrapper to make a compatible pair of calls to '" and '$To ensure that '$ is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.'$vulkan:vkDestroyPipelineLayout - Destroy a pipeline layout object Valid Usage1VUID-vkDestroyPipelineLayout-pipelineLayout-00299 If  were provided when pipelineLayout1 was created, a compatible set of callbacks must be provided here1VUID-vkDestroyPipelineLayout-pipelineLayout-00300 If no  were provided when pipelineLayout was created,  pAllocator must be NULL1VUID-vkDestroyPipelineLayout-pipelineLayout-02004 pipelineLayout 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)-VUID-vkDestroyPipelineLayout-device-parameter device must be a valid  handle5VUID-vkDestroyPipelineLayout-pipelineLayout-parameter If pipelineLayout is not 8, pipelineLayout must be a valid } handle1VUID-vkDestroyPipelineLayout-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure2VUID-vkDestroyPipelineLayout-pipelineLayout-parent If 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_dghklmqb vulkan^VkPipelineCacheCreateInfo - Structure specifying parameters of a newly created pipeline cache Valid Usage4VUID-VkPipelineCacheCreateInfo-initialDataSize-00768 If initialDataSize is not 0, it must be equal to the size of  pInitialData, as returned by '6 when  pInitialData was originally retrieved4VUID-VkPipelineCacheCreateInfo-initialDataSize-00769 If initialDataSize is not 0,  pInitialData must2 have been retrieved from a previous call to '6AVUID-VkPipelineCacheCreateInfo-pipelineCreationCacheControl-02892 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)*VUID-VkPipelineCacheCreateInfo-sType-sType sType must be *VUID-VkPipelineCacheCreateInfo-pNext-pNext pNext must be NULL.VUID-VkPipelineCacheCreateInfo-flags-parameter flags must% be a valid combination of  values5VUID-VkPipelineCacheCreateInfo-pInitialData-parameter If initialDataSize is not 0,  pInitialData must( be a valid pointer to an array of initialDataSize bytesSee Also, C, '3'0vulkanflags is a bitmask of 0 specifying the behavior of the pipeline cache.'1vulkaninitialDataSize is the number of bytes in  pInitialData. If initialDataSize5 is zero, the pipeline cache will initially be empty.'2vulkan 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.'3vulkan4vkCreatePipelineCache - 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 '6. 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 79 :, ;, and 7<E commands. If the pipeline cache passed into these commands is not 8, 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)+VUID-vkCreatePipelineCache-device-parameter device must be a valid  handle0VUID-vkCreatePipelineCache-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure/VUID-vkCreatePipelineCache-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure3VUID-vkCreatePipelineCache-pPipelineCache-parameter pPipelineCache must be a valid pointer to a ~ handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , ~, '4vulkan=A convenience wrapper to make a compatible pair of calls to '3 and '5To ensure that '5 is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.'5vulkan8vkDestroyPipelineCache - Destroy a pipeline cache object Valid Usage/VUID-vkDestroyPipelineCache-pipelineCache-00771 If  were provided when  pipelineCache1 was created, a compatible set of callbacks must be provided here/VUID-vkDestroyPipelineCache-pipelineCache-00772 If no  were provided when  pipelineCache was created,  pAllocator must be NULLValid Usage (Implicit),VUID-vkDestroyPipelineCache-device-parameter device must be a valid  handle3VUID-vkDestroyPipelineCache-pipelineCache-parameter If  pipelineCache is not 8,  pipelineCache must be a valid ~ handle0VUID-vkDestroyPipelineCache-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure0VUID-vkDestroyPipelineCache-pipelineCache-parent If  pipelineCache is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  pipelineCache must be externally synchronizedSee Also, , ~'6vulkanAvkGetPipelineCacheData - 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 '6 will return A. Any data written to pData is valid and can be provided as the  pInitialData member of the  structure passed to '3. Two calls to '6 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 l[ value written as a stream of bytes, with the least significant byte first  8 z 4 V a vendor ID equal to  ::vendorID_ written as a stream of bytes, with the least significant byte first  12 z 4 V a device ID equal to  ::deviceID_ written as a stream of bytes, with the least significant byte first  16  * V a pipeline cache ID equal to  ::pipelineCacheUUID *Layout for pipeline cache header version lThe 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 l$. 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),VUID-vkGetPipelineCacheData-device-parameter device must be a valid  handle3VUID-vkGetPipelineCacheData-pipelineCache-parameter  pipelineCache must be a valid ~ handle/VUID-vkGetPipelineCacheData-pDataSize-parameter  pDataSize must be a valid pointer to a size_t value+VUID-vkGetPipelineCacheData-pData-parameter! If the value referenced by  pDataSize is not 0, and pData is not NULL, pData must# be a valid pointer to an array of  pDataSize bytes0VUID-vkGetPipelineCacheData-pipelineCache-parent  pipelineCache must1 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, ~'7vulkanBvkMergePipelineCaches - 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 Usage)VUID-vkMergePipelineCaches-dstCache-00770 dstCache must- not appear in the list of source cachesValid Usage (Implicit)+VUID-vkMergePipelineCaches-device-parameter device must be a valid  handle-VUID-vkMergePipelineCaches-dstCache-parameter dstCache must be a valid ~ handle/VUID-vkMergePipelineCaches-pSrcCaches-parameter  pSrcCaches must# be a valid pointer to an array of  srcCacheCount valid ~ handles4VUID-vkMergePipelineCaches-srcCacheCount-arraylength  srcCacheCount must be greater than 0*VUID-vkMergePipelineCaches-dstCache-parent dstCache must6 have been created, allocated, or retrieved from device,VUID-vkMergePipelineCaches-pSrcCaches-parent Each 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, ~'3vulkandevice> 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.'5vulkandevice? 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.'6vulkandevice4 is the logical device that owns the pipeline cache.vulkan pipelineCache- is the pipeline cache to retrieve data from.'7vulkandevice< 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.~'/'0'1'2'3'4'5'6'7'3'4'5'6'7'/'0'1'2~4None("#%&'-./1789;=>?FHIMSUVX_dghklmqcvulkan?VkMemoryRequirements - Structure specifying memory requirementsSee Alson, S, 'A, 'C'>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  B structure for the physical device is supported for the resource.'Avulkan\vkGetBufferMemoryRequirements - Returns the memory requirements for specified Vulkan objectValid Usage (Implicit)See Also, , 'Bvulkan:vkBindBufferMemory - Bind device memory to a buffer object Description'B7 is equivalent to passing the same parameters through G to G. Valid Usage$VUID-vkBindBufferMemory-buffer-01029 buffer must. not already be backed by a memory object$VUID-vkBindBufferMemory-buffer-01030 buffer must@ not have been created with any sparse memory binding flags*VUID-vkBindBufferMemory-memoryOffset-01031  memoryOffset must be less than the size of memory$VUID-vkBindBufferMemory-memory-01035 memory mustL have been allocated using one of the memory types allowed in the memoryTypeBits member of the ( structure returned from a call to 'A with buffer*VUID-vkBindBufferMemory-memoryOffset-01036  memoryOffset must$ be an integer multiple of the  alignment member of the ( structure returned from a call to 'A with buffer"VUID-vkBindBufferMemory-size-01037 The size member of the ( structure returned from a call to 'A with buffer must+ be less than or equal to the size of memory minus  memoryOffset$VUID-vkBindBufferMemory-buffer-01444 If buffer: requires a dedicated allocation(as reported by S in H'::requiresDedicatedAllocation for buffer), memory must have been created with H::buffer equal to buffer$VUID-vkBindBufferMemory-memory-01508 If the 3 provided when memory$ was allocated included a H structure in its pNext chain, and H::buffer was not 8, then buffer must equal H::buffer , and  memoryOffset must be zero"VUID-vkBindBufferMemory-None-01898% If buffer was created with the  bit set, the buffer mustQ be bound to a memory object allocated with a memory type that reports o"VUID-vkBindBufferMemory-None-01899% If buffer was created with the  bit not set, the buffer mustS not be bound to a memory object created with a memory type that reports o$VUID-vkBindBufferMemory-buffer-01038 If 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 zero$VUID-vkBindBufferMemory-memory-02726 If the value of OU:: handleTypes used to allocate memory is not 0, it must6 include at least one of the handles set in O_:: handleTypes when buffer was created$VUID-vkBindBufferMemory-memory-02985 If memoryA was created by a memory import operation, that is not  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 created$VUID-vkBindBufferMemory-memory-02986 If memory was created with the ) memory import operation with a non-NULL buffer value, AZ must also have been set in O_:: handleTypes when buffer was created1VUID-vkBindBufferMemory-bufferDeviceAddress-03339 If the b::bufferDeviceAddress feature is enabled and buffer was created with the Q bit set, memory must# have been allocated with the K bit setValid Usage (Implicit)(VUID-vkBindBufferMemory-device-parameter device must be a valid  handle(VUID-vkBindBufferMemory-buffer-parameter buffer must be a valid  handle(VUID-vkBindBufferMemory-memory-parameter memory must be a valid  handle%VUID-vkBindBufferMemory-buffer-parent buffer must6 have been created, allocated, or retrieved from device%VUID-vkBindBufferMemory-memory-parent memory 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , , n'Cvulkan[vkGetImageMemoryRequirements - Returns the memory requirements for specified Vulkan object Valid Usage-VUID-vkGetImageMemoryRequirements-image-01588 image must* not have been created with the  flag set-VUID-vkGetImageMemoryRequirements-image-04004 If image was created with the AZ( external memory handle type, then image must be bound to memoryValid Usage (Implicit)2VUID-vkGetImageMemoryRequirements-device-parameter device must be a valid  handle1VUID-vkGetImageMemoryRequirements-image-parameter image must be a valid  handle?VUID-vkGetImageMemoryRequirements-pMemoryRequirements-parameter pMemoryRequirements must be a valid pointer to a  structure.VUID-vkGetImageMemoryRequirements-image-parent image must6 have been created, allocated, or retrieved from deviceSee Also, , 'Dvulkan9vkBindImageMemory - Bind device memory to an image object Description'D7 is equivalent to passing the same parameters through G to G. Valid Usage"VUID-vkBindImageMemory-image-01044 image must. not already be backed by a memory object"VUID-vkBindImageMemory-image-01045 image must@ not have been created with any sparse memory binding flags)VUID-vkBindImageMemory-memoryOffset-01046  memoryOffset must be less than the size of memory"VUID-vkBindImageMemory-image-01445 If image; requires a dedicated allocation (as reported by S+ in H'::requiresDedicatedAllocation for image), memory must have been created with H::image equal to image#VUID-vkBindImageMemory-memory-02628 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 3 provided when memory$ was allocated included a H structure in its pNext chain, and H::image was not 8, then image must equal H::image and  memoryOffset must be zero#VUID-vkBindImageMemory-memory-02629 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 3 provided when memory$ was allocated included a H structure in its pNext chain, and H::image was not 8 , then  memoryOffset must be zero, and image must be either equal to H::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!VUID-vkBindImageMemory-None-01901$ If image was created with the  bit set, the image mustQ be bound to a memory object allocated with a memory type that reports o!VUID-vkBindImageMemory-None-01902$ If image was created with the  bit not set, the image mustS not be bound to a memory object created with a memory type that reports o"VUID-vkBindImageMemory-image-01050 If 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 zero#VUID-vkBindImageMemory-memory-02728 If the value of OU:: handleTypes used to allocate memory is not 0, it must6 include at least one of the handles set in O`:: handleTypes when image was created#VUID-vkBindImageMemory-memory-02989 If memoryA was created by a memory import operation, that is not  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 created#VUID-vkBindImageMemory-memory-02990 If memory was created with the ) memory import operation with a non-NULL buffer value, AZ must also have been set in O`:: handleTypes when image was created"VUID-vkBindImageMemory-image-01608 image must* not have been created with the  set#VUID-vkBindImageMemory-memory-01047 memory mustL have been allocated using one of the memory types allowed in the memoryTypeBits member of the ( structure returned from a call to 'C with image)VUID-vkBindImageMemory-memoryOffset-01048  memoryOffset must$ be an integer multiple of the  alignment member of the ( structure returned from a call to 'C with image!VUID-vkBindImageMemory-size-01049$ The 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 'C with the same imageValid Usage (Implicit)'VUID-vkBindImageMemory-device-parameter device must be a valid  handle&VUID-vkBindImageMemory-image-parameter image must be a valid  handle'VUID-vkBindImageMemory-memory-parameter memory must be a valid  handle#VUID-vkBindImageMemory-image-parent image must6 have been created, allocated, or retrieved from device$VUID-vkBindImageMemory-memory-parent memory 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , n, 'Avulkandevice, is the logical device that owns the buffer.3VUID-vkGetBufferMemoryRequirements-device-parameter device must be a valid  handlevulkanbuffer is the buffer to query.3VUID-vkGetBufferMemoryRequirements-buffer-parameter buffer must be a valid  handle0VUID-vkGetBufferMemoryRequirements-buffer-parent buffer must2 have been created, allocated, or retrieved from device'Bvulkandevice7 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.'Cvulkandevice+ is the logical device that owns the image.vulkanimage is the image to query.'Dvulkandevice6 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. '='?'>'@'A'B'C'D 'A'B'C'D'='?'>'@2None("#%&'-./1789;=>?FHIMSUVX_dghklmqdvulkan9VkLayerProperties - Structure specifying layer propertiesSee Also'Q, 'P'Lvulkan layerName is an array of 7 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  1 structure to enable this layer for an instance.'Mvulkan 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.'NvulkanimplementationVersion^ is the version of this layer. It is an integer, increasing with backward compatible changes.'Ovulkan description is an array of 6 charT containing a null-terminated UTF-8 string which provides additional details that can2 be used by the application to identify the layer.'Pvulkan_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, A will be returned instead of FI, 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 'P 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)@VUID-vkEnumerateInstanceLayerProperties-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t value=VUID-vkEnumerateInstanceLayerProperties-pProperties-parameter! If 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-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also'QvulkanZvkEnumerateDeviceLayerProperties - 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, A will be returned instead of FI, to indicate that not all the available layer properties were returned.!The list of layers enumerated by 'Q 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 'P.Valid Usage (Implicit)>VUID-vkEnumerateDeviceLayerProperties-physicalDevice-parameter physicalDevice must be a valid  handle>VUID-vkEnumerateDeviceLayerProperties-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t value;VUID-vkEnumerateDeviceLayerProperties-pProperties-parameter! If 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-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, 'K'O'L'M'N'P'Q'P'Q'K'O'L'M'N+None("#%&'-./1789;=>?FHIMSUVX_dghklmqdK_jvulkanDVkExtensionProperties - Structure specifying an extension propertiesSee Also'[, 'Z'Xvulkan extensionName is an array of 7 charO containing a null-terminated UTF-8 string which is the name of the extension.'Yvulkan specVersionc is the version of this extension. It is an integer, incremented with backward compatible changes.'ZvulkangvkEnumerateInstanceExtensionProperties - 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, A will be returned instead of FC, to indicate that not all the available properties were returned.MBecause the list of available layers may change externally between calls to 'Z1, 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)@VUID-vkEnumerateInstanceExtensionProperties-pLayerName-parameter If  pLayerName is not NULL,  pLayerName must' be a null-terminated UTF-8 stringDVUID-vkEnumerateInstanceExtensionProperties-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t valueAVUID-vkEnumerateInstanceExtensionProperties-pProperties-parameter! If 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 structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?;See Alsoj'[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)BVUID-vkEnumerateDeviceExtensionProperties-physicalDevice-parameter physicalDevice must be a valid  handle>VUID-vkEnumerateDeviceExtensionProperties-pLayerName-parameter If  pLayerName is not NULL,  pLayerName must' be a null-terminated UTF-8 stringBVUID-vkEnumerateDeviceExtensionProperties-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t value?VUID-vkEnumerateDeviceExtensionProperties-pProperties-parameter! If 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 structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?;See Alsoj, 'Zvulkan 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.j'W'Y'X'Z'['Z'[j'W'Y'X*None("#%&'-./1789;=>?FHIMSUVX_dghklmqdGivulkanMVkEventCreateInfo - Structure specifying parameters of a newly created eventValid Usage (Implicit)See Also, C, 'c'bvulkanflags is a bitmask of * defining additional creation parameters.&VUID-VkEventCreateInfo-flags-parameter flags must be a valid combination of  values'cvulkan)vkCreateEvent - Create a new event object Description:When created, the event object is in the unsignaled state. Valid UsageVUID-vkCreateEvent-events-04468 If the VK_KHR_portability_subset% extension is enabled, and ::events is .5, then the implementation does not support  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-eventsevents , and 'c must not be used.Valid Usage (Implicit)#VUID-vkCreateEvent-device-parameter device must be a valid  handle(VUID-vkCreateEvent-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid i structure'VUID-vkCreateEvent-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure#VUID-vkCreateEvent-pEvent-parameter pEvent must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , , i'dvulkan=A convenience wrapper to make a compatible pair of calls to 'c and 'eTo ensure that 'e is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.'evulkan(vkDestroyEvent - Destroy an event object Valid UsageVUID-vkDestroyEvent-event-01145+ All submitted commands that refer to event must have completed executionVUID-vkDestroyEvent-event-01146 If  were provided when event1 was created, a compatible set of callbacks must be provided hereVUID-vkDestroyEvent-event-01147 If no  were provided when event was created,  pAllocator must be NULLValid Usage (Implicit)$VUID-vkDestroyEvent-device-parameter device must be a valid  handle#VUID-vkDestroyEvent-event-parameter If event is not 8, event must be a valid  handle(VUID-vkDestroyEvent-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure VUID-vkDestroyEvent-event-parent If event is a valid handle, it must1 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to event must be externally synchronizedSee Also, , 'fvulkan9vkGetEventStatus - Retrieve the status of an event object DescriptionUpon success, 'fH returns the state of the event object with the following return codes:* Status  Meaning  C.  The event specified by event is signaled.  B,  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 'f~ 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-successcodesSuccessCB  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?=See Also, 'gvulkan+vkSetEvent - Set an event to signaled state DescriptionWhen 'gm 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 'g is executed, then 'g5 has no effect, and no event signal operation occurs. Valid UsageVUID-vkSetEvent-event-03941 event must& not have been created with Valid Usage (Implicit) VUID-vkSetEvent-device-parameter device must be a valid  handleVUID-vkSetEvent-event-parameter event must be a valid  handleVUID-vkSetEvent-event-parent event 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, 'hvulkan3vkResetEvent - Reset an event to non-signaled state DescriptionWhen 'hs 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 'h is executed, then 'h8 has no effect, and no event unsignal operation occurs. Valid UsageVUID-vkResetEvent-event-03821 There must. be an execution dependency between  and the execution of any  that includes event in its pEvents parameterVUID-vkResetEvent-event-03822 There must. be an execution dependency between $ and the execution of any  that includes event in its pEvents parameterVUID-vkResetEvent-event-03823 event must& not have been created with Valid Usage (Implicit)"VUID-vkResetEvent-device-parameter device must be a valid  handle!VUID-vkResetEvent-event-parameter event must be a valid  handleVUID-vkResetEvent-event-parent event 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure?See Also, 'cvulkandevice. is the logical device that creates the event.vulkan pCreateInfo is a pointer to a iH 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.'evulkandevice/ 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.'fvulkandevice+ is the logical device that owns the event.&VUID-vkGetEventStatus-device-parameter device must be a valid  handlevulkanevent% is the handle of the event to query.!VUID-vkGetEventStatus-event-03940 event must not have been created with %VUID-vkGetEventStatus-event-parameter event must be a valid  handle"VUID-vkGetEventStatus-event-parent event must2 have been created, allocated, or retrieved from device'gvulkandevice+ is the logical device that owns the event.vulkanevent is the event to set.'hvulkandevice+ is the logical device that owns the event.vulkanevent is the event to reset.i'a'b'c'd'e'f'g'h'c'd'e'f'g'hi'a'b None("#%&'-./1789;=>?FHIMSUVX_dghklmqe5(vulkanZVkCommandPoolCreateInfo - Structure specifying parameters of a newly created command pool Valid Usage(VUID-VkCommandPoolCreateInfo-flags-02860? If the protected memory feature is not enabled, the  bit of flags must not be setValid Usage (Implicit)(VUID-VkCommandPoolCreateInfo-sType-sType sType must be (VUID-VkCommandPoolCreateInfo-pNext-pNext pNext must be NULL,VUID-VkCommandPoolCreateInfo-flags-parameter flags must% be a valid combination of  valuesSee Also, C, 'r'pvulkanflags is a bitmask of P indicating usage behavior for the pool and command buffers allocated from it.'qvulkanqueueFamilyIndex4 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.'rvulkan6vkCreateCommandPool - Create a new command pool object Valid Usage/VUID-vkCreateCommandPool-queueFamilyIndex-01937 pCreateInfo->queueFamilyIndex mustE be the index of a queue family available in the logical device deviceValid Usage (Implicit))VUID-vkCreateCommandPool-device-parameter device must be a valid  handle.VUID-vkCreateCommandPool-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid ( structure-VUID-vkCreateCommandPool-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure/VUID-vkCreateCommandPool-pCommandPool-parameter  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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , (, 'svulkan=A convenience wrapper to make a compatible pair of calls to 'r and 'tTo ensure that 't is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.'tvulkan4vkDestroyCommandPool - 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 Usage+VUID-vkDestroyCommandPool-commandPool-00041 All / 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 state+VUID-vkDestroyCommandPool-commandPool-00042 If  were provided when  commandPool1 was created, a compatible set of callbacks must be provided here+VUID-vkDestroyCommandPool-commandPool-00043 If no  were provided when  commandPool was created,  pAllocator must be NULLValid Usage (Implicit)*VUID-vkDestroyCommandPool-device-parameter device must be a valid  handle/VUID-vkDestroyCommandPool-commandPool-parameter If  commandPool is not 8,  commandPool must be a valid  handle.VUID-vkDestroyCommandPool-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure,VUID-vkDestroyCommandPool-commandPool-parent If  commandPool is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  commandPool must be externally synchronizedSee Also, , 'uvulkan)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 Usage)VUID-vkResetCommandPool-commandPool-00040 All / 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)(VUID-vkResetCommandPool-device-parameter device must be a valid  handle-VUID-vkResetCommandPool-commandPool-parameter  commandPool must be a valid  handle'VUID-vkResetCommandPool-flags-parameter flags must% be a valid combination of B values*VUID-vkResetCommandPool-commandPool-parent  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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure?See Also, C, 'rvulkandevice5 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.'tvulkandevice6 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.'uvulkandevice2 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.('o'p'qBC'r's't'u'r's't'u('o'p'qBCNone("#%&'-./1789;=>?FHIMSUVX_dghklmqeL vulkanXVkBufferViewCreateInfo - Structure specifying parameters of a newly created buffer view Valid Usage(VUID-VkBufferViewCreateInfo-offset-00925 offset must be less than the size of buffer 'VUID-VkBufferViewCreateInfo-range-00928 If range is not equal to , range must be greater than 0'VUID-VkBufferViewCreateInfo-range-00929 If range is not equal to , range must8 be an integer multiple of the texel block size of format'VUID-VkBufferViewCreateInfo-range-00930 If 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  ::maxTexelBufferElements(VUID-VkBufferViewCreateInfo-offset-00931 If range is not equal to  , the sum of offset and range must& be less than or equal to the size of buffer'VUID-VkBufferViewCreateInfo-range-04059 If range is equal to >, the number of texel buffer elements given by (# (size - offsetM) / (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  ::maxTexelBufferElements(VUID-VkBufferViewCreateInfo-buffer-00932 buffer must have been created with a usage' value containing at least one of  or (VUID-VkBufferViewCreateInfo-buffer-00933 If buffer was created with usage containing , format mustG be supported for uniform texel buffers, as specified by the { flag in  ::bufferFeatures returned by  6(VUID-VkBufferViewCreateInfo-buffer-00934 If buffer was created with usage containing , format mustG be supported for storage texel buffers, as specified by the { flag in  ::bufferFeatures returned by  6(VUID-VkBufferViewCreateInfo-buffer-00935 If buffer is non-sparse then it must7 be bound completely and contiguously to a single / object(VUID-VkBufferViewCreateInfo-offset-02749 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  ::minTexelBufferOffsetAlignment(VUID-VkBufferViewCreateInfo-buffer-02750 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 , offset must% be a multiple of the lesser of 1::&storageTexelBufferOffsetAlignmentBytes or, if 1::,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(VUID-VkBufferViewCreateInfo-buffer-02751 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 , offset must% be a multiple of the lesser of 1::&uniformTexelBufferOffsetAlignmentBytes or, if 1::,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)'VUID-VkBufferViewCreateInfo-sType-sType sType must be "'VUID-VkBufferViewCreateInfo-pNext-pNext pNext must be NULL-VUID-VkBufferViewCreateInfo-flags-zerobitmask flags must be 0,VUID-VkBufferViewCreateInfo-buffer-parameter buffer must be a valid  handle,VUID-VkBufferViewCreateInfo-format-parameter format must be a valid K valueSee Also, 4, n, K, C, ''}vulkanflags is reserved for future use.'~vulkanbuffer is a $ on which the view will be created.'vulkanformat is a K; 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)(VUID-vkCreateBufferView-device-parameter device must be a valid  handle-VUID-vkCreateBufferView-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure,VUID-vkCreateBufferView-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure'VUID-vkCreateBufferView-pView-parameter pView must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , , 'vulkan=A convenience wrapper to make a compatible pair of calls to ' and 'To ensure that ' is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.'vulkan2vkDestroyBufferView - Destroy a buffer view object Valid Usage)VUID-vkDestroyBufferView-bufferView-00936+ All submitted commands that refer to  bufferView must have completed execution)VUID-vkDestroyBufferView-bufferView-00937 If  were provided when  bufferView1 was created, a compatible set of callbacks must be provided here)VUID-vkDestroyBufferView-bufferView-00938 If no  were provided when  bufferView was created,  pAllocator must be NULLValid Usage (Implicit))VUID-vkDestroyBufferView-device-parameter device must be a valid  handle-VUID-vkDestroyBufferView-bufferView-parameter If  bufferView is not 8,  bufferView must be a valid  handle-VUID-vkDestroyBufferView-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure*VUID-vkDestroyBufferView-bufferView-parent If  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.'|'''}'~'45'''''''|'''}'~'45RNone("#%&'-./1789;=>?FHIMSUVX_dghklmqeیvulkan\VkPhysicalDeviceExternalSemaphoreInfo - Structure specifying semaphore creation parameters.Valid Usage (Implicit)6VUID-VkPhysicalDeviceExternalSemaphoreInfo-sType-sType sType must be 6VUID-VkPhysicalDeviceExternalSemaphoreInfo-pNext-pNext pNext must be NULL* or a pointer to a valid instance of E7VUID-VkPhysicalDeviceExternalSemaphoreInfo-sType-unique The sType value of each struct in the pNext chain must be unique?VUID-VkPhysicalDeviceExternalSemaphoreInfo-handleType-parameter  handleType must be a valid  l valueSee Also l, C, ', vulkanbVkExternalSemaphoreProperties - 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 ,  n, C, ', 'vulkanexportFromImportedHandleTypes is a bitmask of  l, specifying which types of imported handle  handleType can be exported from.'vulkancompatibleHandleTypes is a bitmask of  l 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  l_ 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.LVUID-vkGetPhysicalDeviceExternalSemaphoreProperties-physicalDevice-parameter physicalDevice must be a valid  handlevulkanpExternalSemaphoreInfo is a pointer to a A structure describing the parameters that would be consumed by <c.TVUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreInfo-parameter pExternalSemaphoreInfo must be a valid pointer to a valid  structure'''''''CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE l m t s r q p o n '''''''''CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE l m t s r q p o t s r q p o n None("#%&'-./1789;=>?FHIMSUVX_dghklmqe''''''''''''''''''''''''''''''''''''''''GNone("#%&'-./1789;=>?FHIMSUVX_dghklmqf vulkanLVkBindImageMemoryInfo - Structure specifying how to bind an image to memory Valid Usage&VUID-VkBindImageMemoryInfo-image-01044 image must. not already be backed by a memory object&VUID-VkBindImageMemoryInfo-image-01045 image must@ not have been created with any sparse memory binding flags-VUID-VkBindImageMemoryInfo-memoryOffset-01046  memoryOffset must be less than the size of memory&VUID-VkBindImageMemoryInfo-image-01445 If image; requires a dedicated allocation (as reported by S+ in H'::requiresDedicatedAllocation for image), memory must have been created with H::image equal to image'VUID-VkBindImageMemoryInfo-memory-02628 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 3 provided when memory$ was allocated included a H structure in its pNext chain, and H::image was not 8, then image must equal H::image and  memoryOffset must be zero'VUID-VkBindImageMemoryInfo-memory-02629 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 3 provided when memory$ was allocated included a H structure in its pNext chain, and H::image was not 8 , then  memoryOffset must be zero, and image must be either equal to H::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%VUID-VkBindImageMemoryInfo-None-01901) 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 o%VUID-VkBindImageMemoryInfo-None-01902) 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 o&VUID-VkBindImageMemoryInfo-image-01050 If 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 zero'VUID-VkBindImageMemoryInfo-memory-02728 If the value of OU:: handleTypes used to allocate memory is not 0, it must6 include at least one of the handles set in O`:: handleTypes when image was created'VUID-VkBindImageMemoryInfo-memory-02989 If memoryA was created by a memory import operation, that is not  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 created'VUID-VkBindImageMemoryInfo-memory-02990 If memory was created with the ) memory import operation with a non-NULL buffer value, AZ must also have been set in O`:: handleTypes when image was created&VUID-VkBindImageMemoryInfo-pNext-01615 If 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 4- structure returned from a call to S+ with image&VUID-VkBindImageMemoryInfo-pNext-01616 If the pNext$ chain does not include a  structure,  memoryOffset must$ be an integer multiple of the  alignment member of the 4- structure returned from a call to S+ with image&VUID-VkBindImageMemoryInfo-pNext-01617 If 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 4- structure returned from a call to S+ with the same image&VUID-VkBindImageMemoryInfo-pNext-01618 If the pNext chain includes a  structure, image must! have been created with the { bit set&VUID-VkBindImageMemoryInfo-pNext-01619 If the pNext chain includes a  structure, memory mustG have been allocated using one of the memory types allowed in the memoryTypeBits member of the 4- structure returned from a call to S+ with image and where :: planeAspect corresponds to the X:: planeAspect in the S structure s pNext chain&VUID-VkBindImageMemoryInfo-pNext-01620 If the pNext chain includes a  structure,  memoryOffset must$ be an integer multiple of the  alignment member of the 4- structure returned from a call to S+ with image and where :: planeAspect corresponds to the X:: planeAspect in the S structure s pNext chain&VUID-VkBindImageMemoryInfo-pNext-01621 If 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 4- structure returned from a call to S+ with the same image and where :: planeAspect corresponds to the X:: planeAspect in the S structure s pNext chain&VUID-VkBindImageMemoryInfo-pNext-01626 If the pNext chain includes a " structure, all instances of memory specified by ::pDeviceIndices must have been allocated&VUID-VkBindImageMemoryInfo-pNext-01627 If the pNext chain includes a  structure, and ::splitInstanceBindRegionCount is not zero, then image must! have been created with the v bit set&VUID-VkBindImageMemoryInfo-pNext-01628 If the pNext chain includes a & structure, all elements of ::pSplitInstanceBindRegions must= be valid rectangles contained within the dimensions of image&VUID-VkBindImageMemoryInfo-pNext-01629 If 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 image&VUID-VkBindImageMemoryInfo-image-01630 If image8 was created with a valid swapchain handle in :: swapchain, then the pNext chain must include a 4 structure containing the same swapchain handle&VUID-VkBindImageMemoryInfo-pNext-01631 If the pNext chain includes a  structure, memory must be 8&VUID-VkBindImageMemoryInfo-pNext-01632 If the pNext$ chain does not include a  structure, memory must be a valid  handleValid Usage (Implicit)&VUID-VkBindImageMemoryInfo-sType-sType sType must be G&VUID-VkBindImageMemoryInfo-pNext-pNext 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 'VUID-VkBindImageMemoryInfo-sType-unique The sType" value of each struct in the pNext chain must be unique*VUID-VkBindImageMemoryInfo-image-parameter image must be a valid  handle'VUID-VkBindImageMemoryInfo-commonparent Both of image , and memory2 that are valid handles of non-ignored parameters mustD have been created, allocated, or retrieved from the same See Also, n, , C, ', vulkanMVkBindBufferMemoryInfo - Structure specifying how to bind a buffer to memory Valid Usage(VUID-VkBindBufferMemoryInfo-buffer-01029 buffer must. not already be backed by a memory object(VUID-VkBindBufferMemoryInfo-buffer-01030 buffer must@ not have been created with any sparse memory binding flags.VUID-VkBindBufferMemoryInfo-memoryOffset-01031  memoryOffset must be less than the size of memory(VUID-VkBindBufferMemoryInfo-memory-01035 memory mustL have been allocated using one of the memory types allowed in the memoryTypeBits member of the 4- structure returned from a call to 4 with buffer.VUID-VkBindBufferMemoryInfo-memoryOffset-01036  memoryOffset must be an integer multiple of the  alignment member of the 4- structure returned from a call to 4 with buffer&VUID-VkBindBufferMemoryInfo-size-01037 The size member of the 4- structure returned from a call to 4 with buffer must& be less than or equal to the size of memory minus  memoryOffset(VUID-VkBindBufferMemoryInfo-buffer-01444 If buffer: requires a dedicated allocation(as reported by S in H'::requiresDedicatedAllocation for buffer), memory must have been created with H::buffer equal to buffer(VUID-VkBindBufferMemoryInfo-memory-01508 If the 3 provided when memory$ was allocated included a H structure in its pNext chain, and H::buffer was not 8, then buffer must equal H::buffer , and  memoryOffset must be zero&VUID-VkBindBufferMemoryInfo-None-01898* If buffer was created with the  bit set, the buffer mustQ be bound to a memory object allocated with a memory type that reports o&VUID-VkBindBufferMemoryInfo-None-01899* If buffer was created with the  bit not set, the buffer mustS not be bound to a memory object created with a memory type that reports o(VUID-VkBindBufferMemoryInfo-buffer-01038 If 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 zero(VUID-VkBindBufferMemoryInfo-memory-02726 If the value of OU:: handleTypes used to allocate memory is not 0, it must6 include at least one of the handles set in O_:: handleTypes when buffer was created(VUID-VkBindBufferMemoryInfo-memory-02985 If memoryA was created by a memory import operation, that is not  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 created(VUID-VkBindBufferMemoryInfo-memory-02986 If memory was created with the ) memory import operation with a non-NULL buffer value, AZ must also have been set in O_:: handleTypes when buffer was created5VUID-VkBindBufferMemoryInfo-bufferDeviceAddress-03339 If the b::bufferDeviceAddress feature is enabled and buffer was created with the Q bit set, memory must# have been allocated with the K bit set'VUID-VkBindBufferMemoryInfo-pNext-01605 If the pNext chain includes a " structure, all instances of memory specified by ::pDeviceIndices must have been allocatedValid Usage (Implicit)'VUID-VkBindBufferMemoryInfo-sType-sType sType must be F'VUID-VkBindBufferMemoryInfo-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of (VUID-VkBindBufferMemoryInfo-sType-unique The sType" value of each struct in the pNext chain must be unique,VUID-VkBindBufferMemoryInfo-buffer-parameter buffer must be a valid  handle,VUID-VkBindBufferMemoryInfo-memory-parameter memory must be a valid  handle(VUID-VkBindBufferMemoryInfo-commonparent Both of buffer , and memory must? have been created, allocated, or retrieved from the same See Also, , n, C, ', '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 4::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 4::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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See 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 Usage(VUID-vkBindImageMemory2-pBindInfos-02858 If any ::image was created with { then all planes of ::image must( be bound individually in separate  pBindInfos(VUID-vkBindImageMemory2-pBindInfos-04006  pBindInfos must< not refer to the same image subresource more than onceValid Usage (Implicit)(VUID-vkBindImageMemory2-device-parameter device must be a valid  handle,VUID-vkBindImageMemory2-pBindInfos-parameter  pBindInfos must( be a valid pointer to an array of  bindInfoCount valid  structures1VUID-vkBindImageMemory2-bindInfoCount-arraylength  bindInfoCount must be greater than 0 Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, 'vulkandevice8 is the logical device that owns the buffers and memory.)VUID-vkBindBufferMemory2-device-parameter device must be a valid  handlevulkan pBindInfos is a pointer to an array of  bindInfoCount 2 structures describing buffers and memory to bind.-VUID-vkBindBufferMemory2-pBindInfos-parameter  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. Mt~}|{zyxwvuN''''''''''CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE''''''''''''''CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEMt~}|{zyxwvu~}|{zyxwvuNNone("#%&'-./1789;=>?FHIMSUVX_dghklmqg ''''''''''' '''''''''''?None("#%&'-./1789;=>?FHIMSUVX_dghklmqh-vulkanHVkSparseMemoryBind - Structure specifying a sparse memory bind operation DescriptionThe  binding range [resourceOffset, resourceOffset + size&) has different constraints based on flags. If flags contains  , 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  ,.If flags does not contain  , the binding range must be within the range [0,4::size). Valid Usage$VUID-VkSparseMemoryBind-memory-01096 If memory is not 8, 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-association$VUID-VkSparseMemoryBind-memory-01097 If memory is not 8, memory mustA not have been created with a memory type that reports o bit set"VUID-VkSparseMemoryBind-size-01098 size must be greater than 0,VUID-VkSparseMemoryBind-resourceOffset-01099 resourceOffset must& be less than the size of the resource"VUID-VkSparseMemoryBind-size-01100 size must> be less than or equal to the size of the resource minus resourceOffset*VUID-VkSparseMemoryBind-memoryOffset-01101  memoryOffset must be less than the size of memory"VUID-VkSparseMemoryBind-size-01102 size must+ be less than or equal to the size of memory minus  memoryOffset$VUID-VkSparseMemoryBind-memory-02730 If memory was created with OU:: 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 created$VUID-VkSparseMemoryBind-memory-02731 If memorye 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)(VUID-VkSparseMemoryBind-memory-parameter If memory is not 8, memory must be a valid  handle'VUID-VkSparseMemoryBind-flags-parameter flags must% be a valid combination of   valuesSee Also, n, , ,  vulkan^VkSparseImageOpaqueMemoryBindInfo - Structure specifying sparse image opaque memory bind info Valid Usage3VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-01103 If the flags member of any element of pBinds contains  !, the binding range defined must> be within the mip tail region of the metadata aspect of imageValid Usage (Implicit)6VUID-VkSparseImageOpaqueMemoryBindInfo-image-parameter image must be a valid  handle7VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-parameter pBinds must# be a valid pointer to an array of  bindCount valid  structures<VUID-VkSparseImageOpaqueMemoryBindInfo-bindCount-arraylength  bindCount must be greater than 0See Also, , vulkanXVkSparseImageMemoryRequirements - Structure specifying sparse image memory requirementsSee Alson, , S, 'vulkanQVkSparseImageMemoryBindInfo - Structure specifying sparse image memory bind info Valid Usage2VUID-VkSparseImageMemoryBindInfo-subresource-01722 The subresource.mipLevel member of each element of pBinds must be less than the  mipLevels specified in 0 when image was created2VUID-VkSparseImageMemoryBindInfo-subresource-01723 The subresource.arrayLayer member of each element of pBinds must be less than the  arrayLayers specified in 0 when image was created,VUID-VkSparseImageMemoryBindInfo-image-02901 image must" have been created with  setValid Usage (Implicit)0VUID-VkSparseImageMemoryBindInfo-image-parameter image must be a valid  handle1VUID-VkSparseImageMemoryBindInfo-pBinds-parameter pBinds must( be a valid pointer to an array of  bindCount valid  structures6VUID-VkSparseImageMemoryBindInfo-bindCount-arraylength  bindCount must be greater than 0See Also, , vulkanGVkSparseImageMemoryBind - Structure specifying sparse image memory bind Valid Usage)VUID-VkSparseImageMemoryBind-memory-01104 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 )VUID-VkSparseImageMemoryBind-memory-01105 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.VUID-VkSparseImageMemoryBind-subresource-01106  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))VUID-VkSparseImageMemoryBind-offset-01107 offset.x must: be a multiple of the sparse image block width (::imageGranularity.width) of the image)VUID-VkSparseImageMemoryBind-extent-01108  extent.width mustW 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 subresource)VUID-VkSparseImageMemoryBind-offset-01109 offset.y must; be a multiple of the sparse image block height (::imageGranularity.height) of the image)VUID-VkSparseImageMemoryBind-extent-01110  extent.height mustX 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 subresource)VUID-VkSparseImageMemoryBind-offset-01111 offset.z must: be a multiple of the sparse image block depth (::imageGranularity.depth) of the image)VUID-VkSparseImageMemoryBind-extent-01112  extent.depth mustW 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 subresource)VUID-VkSparseImageMemoryBind-memory-02732 If memory was created with OU:: handleTypes not equal to 0(, at least one handle type it contained must! also have been set in O`:: handleTypes when the image was created)VUID-VkSparseImageMemoryBind-memory-02733 If memorye 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)2VUID-VkSparseImageMemoryBind-subresource-parameter  subresource must be a valid  structure-VUID-VkSparseImageMemoryBind-memory-parameter If memory is not 8, memory must be a valid  handle,VUID-VkSparseImageMemoryBind-flags-parameter flags must% be a valid combination of   valuesSee Also, n, t, , r, ,  vulkanTVkSparseImageFormatProperties - Structure specifying sparse image format propertiesSee Alsot, ,  ), T, , 'vulkanZVkSparseBufferMemoryBindInfo - Structure specifying a sparse buffer memory bind operationValid Usage (Implicit)See Also, , vulkan>VkImageSubresource - Structure specifying an image subresourceValid Usage (Implicit)See Also, , 0vulkanBVkBindSparseInfo - Structure specifying a sparse binding operation Valid Usage+VUID-VkBindSparseInfo-pWaitSemaphores-03246 If any element of pWaitSemaphores or pSignalSemaphores was created with a * of * then the pNext chain must include a C structure!VUID-VkBindSparseInfo-pNext-03247 If the pNext. chain of this structure includes a C# structure and any element of pWaitSemaphores was created with a * of * then its waitSemaphoreValueCount member must equal waitSemaphoreCount!VUID-VkBindSparseInfo-pNext-03248 If the pNext. chain of this structure includes a C# structure and any element of pSignalSemaphores was created with a * of * then its signalSemaphoreValueCount member must equal signalSemaphoreCount-VUID-VkBindSparseInfo-pSignalSemaphores-03249 For each element of pSignalSemaphores created with a * of *( the corresponding element of C::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 executed+VUID-VkBindSparseInfo-pWaitSemaphores-03250 For each element of pWaitSemaphores created with a * of *( the corresponding element of C::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#maxTimelineSemaphoreValueDifference-VUID-VkBindSparseInfo-pSignalSemaphores-03251 For each element of pSignalSemaphores created with a * of *( the corresponding element of C::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)!VUID-VkBindSparseInfo-sType-sType sType must be (!VUID-VkBindSparseInfo-pNext-pNext 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 C"VUID-VkBindSparseInfo-sType-unique The sType" value of each struct in the pNext chain must be unique/VUID-VkBindSparseInfo-pWaitSemaphores-parameter If waitSemaphoreCount is not 0, pWaitSemaphores must( be a valid pointer to an array of waitSemaphoreCount valid w handles,VUID-VkBindSparseInfo-pBufferBinds-parameter If bufferBindCount is not 0,  pBufferBinds must( be a valid pointer to an array of bufferBindCount valid  structures1VUID-VkBindSparseInfo-pImageOpaqueBinds-parameter If imageOpaqueBindCount is not 0, pImageOpaqueBinds must( be a valid pointer to an array of imageOpaqueBindCount valid  structures+VUID-VkBindSparseInfo-pImageBinds-parameter If imageBindCount is not 0,  pImageBinds must( be a valid pointer to an array of imageBindCount valid  structures1VUID-VkBindSparseInfo-pSignalSemaphores-parameter If signalSemaphoreCount is not 0, pSignalSemaphores must( be a valid pointer to an array of signalSemaphoreCount valid w handles"VUID-VkBindSparseInfo-commonparent Both 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 Alsow, , , , C, ('vulkanpNext is NULL6 or a pointer to a structure extending this structure.'vulkanpWaitSemaphores 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.'vulkan pBufferBinds is a pointer to an array of  structures.'vulkanpImageOpaqueBinds is a pointer to an array of A structures, indicating opaque sparse image bindings to perform.'vulkan pImageBinds is a pointer to an array of : structures, indicating sparse image bindings to perform.'vulkanpSignalSemaphores 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.'vulkanimage is the  object to be bound'vulkanpBinds is a pointer to an array of  structures'vulkanimage is the  object to be bound.'vulkanpBinds is a pointer to an array of  structures.'vulkanbuffer is the  object to be bound.2VUID-VkSparseBufferMemoryBindInfo-buffer-parameter buffer must be a valid  handle'vulkanpBinds is a pointer to array of  structures.2VUID-VkSparseBufferMemoryBindInfo-pBinds-parameter pBinds must$ be a valid pointer to an array of  bindCount valid  structures'vulkan subresource is the image aspect% and region of interest in the image.'vulkanoffsetN are the coordinates of the first texel within the image subresource to bind.'vulkanextentW 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.'vulkanmemory is the D object that the sparse image blocks of the image are bound to. If memory is 8', the sparse image blocks are unbound.'vulkan memoryOffset is an offset into  object. If memory is 8, 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 8, the range is unbound.'vulkan memoryOffset is the offset into the + object to bind the resource range to. If memory is 8, this value is ignored.'vulkanflags is a bitmask of  , specifying usage of the binding operation.'vulkan aspectMask is a  selecting the image aspect.,VUID-VkImageSubresource-aspectMask-parameter  aspectMask must be a valid combination of  values2VUID-VkImageSubresource-aspectMask-requiredbitmask  aspectMask must not be 0'vulkanmipLevel selects the mipmap level.'vulkan arrayLayer selects the array layer.'vulkanimageMipTailFirstLodY is the first mip level at which image subresources are included in the mip tail region.'vulkanimageMipTailSize; is the memory size (in bytes) of the mip tail region. If formatProperties.flags contains  ,, 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.'vulkanimageMipTailOffset( is the opaque memory offset used with  to bind the mip tail region(s).'vulkanimageMipTailStride? is the offset stride between each array-layer s mip tail, if formatProperties.flags does not contain  ,% (otherwise the value is undefined).'vulkan aspectMask is a bitmask @ specifying which aspects of the image the properties apply to.'vulkanimageGranularitya is the width, height, and depth of the sparse image block in texels or compressed texel blocks.'vulkanflags is a bitmask of  '> specifying additional information about the sparse resource.'vulkanVvkGetImageSparseMemoryRequirements - 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 4::sizeB than would be obtained by adding together memory sizes for all  returned by '. This mayf occur when the implementation requires unused padding in the address range describing the resource.Valid Usage (Implicit)8VUID-vkGetImageSparseMemoryRequirements-device-parameter device must be a valid  handle7VUID-vkGetImageSparseMemoryRequirements-image-parameter image must be a valid  handleOVUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirementCount-parameter pSparseMemoryRequirementCount must be a valid pointer to a uint32_t valueKVUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirements-parameter! If the value referenced by pSparseMemoryRequirementCount is not 0, and pSparseMemoryRequirements is not NULL, pSparseMemoryRequirements must( be a valid pointer to an array of pSparseMemoryRequirementCount  structures4VUID-vkGetImageSparseMemoryRequirements-image-parent image must1 have been created, allocated, or retrieved from deviceSee Also, , 'vulkanqvkGetPhysicalDeviceSparseImageFormatProperties - 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  | . Valid UsageAVUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-01094 samples must$ be a bit value that is set in  :: sampleCounts returned by  7 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)LVUID-vkGetPhysicalDeviceSparseImageFormatProperties-physicalDevice-parameter physicalDevice must be a valid  handleDVUID-vkGetPhysicalDeviceSparseImageFormatProperties-format-parameter format must be a valid K valueBVUID-vkGetPhysicalDeviceSparseImageFormatProperties-type-parameter type must be a valid Q valueEVUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-parameter samples must be a valid a valueCVUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-parameter usage must be a valid combination of R valuesIVUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-requiredbitmask usage must not be 0DVUID-vkGetPhysicalDeviceSparseImageFormatProperties-tiling-parameter tiling must be a valid P valueLVUID-vkGetPhysicalDeviceSparseImageFormatProperties-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t valueIVUID-vkGetPhysicalDeviceSparseImageFormatProperties-pProperties-parameter! If 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 AlsoK, P, Q, S, , a, (vulkanBvkQueueBindSparse - Bind device memory to a sparse resource object 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  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 ( 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 Usage"VUID-vkQueueBindSparse-fence-01113 If fence is not 8, fence must be unsignaled"VUID-vkQueueBindSparse-fence-01114 If fence is not 8, fence mustl not be associated with any other queue command that has not yet completed execution on that queue.VUID-vkQueueBindSparse-pSignalSemaphores-01115 Each element of the pSignalSemaphores member of each element of  pBindInfo musta be unsignaled when the semaphore signal operation it defines is executed on the device,VUID-vkQueueBindSparse-pWaitSemaphores-01116i When 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 semaphore,VUID-vkQueueBindSparse-pWaitSemaphores-01117 All 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 execution,VUID-vkQueueBindSparse-pWaitSemaphores-03245 All 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)&VUID-vkQueueBindSparse-queue-parameter queue must be a valid { handle*VUID-vkQueueBindSparse-pBindInfo-parameter If  bindInfoCount is not 0,  pBindInfo must( be a valid pointer to an array of  bindInfoCount valid  structures&VUID-vkQueueBindSparse-fence-parameter If fence is not 8, fence must be a valid  handle VUID-vkQueueBindSparse-queuetype The queue must' support sparse binding operations#VUID-vkQueueBindSparse-commonparent Both of fence, and queue7 that are valid handles of non-ignored parameters mustD 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?=See Also, , {'vulkandevice+ is the logical device that owns the image.vulkanimage is the , object to get the memory requirements for.'vulkanphysicalDeviceK 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.(vulkanqueueG 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 8, it defines a  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signalingfence signal operation.O'''''''''''''''''''''''''''''''''''''''''''     ' ( , + * )''(^''(''''''''''''''''''''''''''''''''''''''''''' ' ( , + * , + * )     SNone("#%&'-./1789;=>?FHIMSUVX_dghklmqivulkan)VkSparseImageMemoryRequirements2 - (None)Valid Usage (Implicit)See Also, C, (;, .vulkan@VkMemoryRequirements2 - Structure specifying memory requirementsValid Usage (Implicit)&VUID-VkMemoryRequirements2-sType-sType sType must be W&VUID-VkMemoryRequirements2-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of 'VUID-VkMemoryRequirements2-sType-unique The sType" value of each struct in the pNext chain must be uniqueSee Also, C, (9, , *, (:, ,vulkan-VkImageSparseMemoryRequirementsInfo2 - (None)Valid Usage (Implicit)See Also, C, (;, .vulkan'VkImageMemoryRequirementsInfo2 - (None) Valid Usage/VUID-VkImageMemoryRequirementsInfo2-image-01589 If image was created with a  multi-planar format and the  flag, there must be a  included in the pNext chain of the  structure/VUID-VkImageMemoryRequirementsInfo2-image-02279 If image was created with  and with , then there must be a  included in the pNext chain of the  structure/VUID-VkImageMemoryRequirementsInfo2-image-01590 If image$ was not created with the  flag, there must not be a  included in the pNext chain of the  structure/VUID-VkImageMemoryRequirementsInfo2-image-02280 If image: was created with a single-plane format and with any tiling other than , then there must not be a  included in the pNext chain of the  structure/VUID-VkImageMemoryRequirementsInfo2-image-01897 If image was created with the AZ( external memory handle type, then image must be bound to memoryValid Usage (Implicit)/VUID-VkImageMemoryRequirementsInfo2-sType-sType sType must be U/VUID-VkImageMemoryRequirementsInfo2-pNext-pNext pNext must be NULL* or a pointer to a valid instance of 0VUID-VkImageMemoryRequirementsInfo2-sType-unique The sType" value of each struct in the pNext chain must be unique3VUID-VkImageMemoryRequirementsInfo2-image-parameter image must be a valid  handleSee Also, C, (:, ,vulkan(VkBufferMemoryRequirementsInfo2 - (None)Valid Usage (Implicit)See Also, C, (9, (.vulkanmemoryRequirements is a C structure describing the memory requirements of the sparse image.(0vulkanpNext is NULL6 or a pointer to a structure extending this structure.(1vulkanmemoryRequirements is a ? structure describing the memory requirements of the resource.(3vulkanimage is the image to query.9VUID-VkImageSparseMemoryRequirementsInfo2-image-parameter image must be a valid  handle(5vulkanpNext is NULL6 or a pointer to a structure extending this structure.(6vulkanimage is the image to query.(8vulkanbuffer is the buffer to query.5VUID-VkBufferMemoryRequirementsInfo2-buffer-parameter buffer must be a valid  handle(9vulkan]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)9VUID-vkGetImageSparseMemoryRequirements2-device-parameter device must be a valid  handle8VUID-vkGetImageSparseMemoryRequirements2-pInfo-parameter pInfo must$ be a valid pointer to a valid  structurePVUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirementCount-parameter pSparseMemoryRequirementCount must be a valid pointer to a uint32_t valueLVUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirements-parameter! If 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, , (9vulkandevice, is the logical device that owns the buffer.4VUID-vkGetBufferMemoryRequirements2-device-parameter device must be a valid  handlevulkanpInfo is a pointer to a M structure containing parameters required for the memory requirements query.3VUID-vkGetBufferMemoryRequirements2-pInfo-parameter pInfo must be a valid pointer to a valid  structure(:vulkandevice+ is the logical device that owns the image.3VUID-vkGetImageMemoryRequirements2-device-parameter device must be a valid  handlevulkanpInfo is a pointer to a M structure containing parameters required for the memory requirements query.2VUID-vkGetImageMemoryRequirements2-pInfo-parameter 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.(-(.(/(0(1(2(3(4(5(6(7(8CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE(9(:(;(9(:(;(7(8(4(5(6(2(3(/(0(1(-(.CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFENone("#%&'-./1789;=>?FHIMSUVX_dghklmqi(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(c(b(a(`(_(d(e(f(\([(Z(Y(X(^(W(]>None("#%&'-./1789;=>?FHIMSUVX_dghklmqi(vulkan\VkShaderModuleCreateInfo - Structure specifying parameters of a newly created shader module Valid Usage,VUID-VkShaderModuleCreateInfo-codeSize-01085 codeSize must be greater than 0 )VUID-VkShaderModuleCreateInfo-pCode-01376 If pCode# is a pointer to SPIR-V code, codeSize must be a multiple of 4)VUID-VkShaderModuleCreateInfo-pCode-01377 pCode 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 specification)VUID-VkShaderModuleCreateInfo-pCode-01378 If 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 appendix)VUID-VkShaderModuleCreateInfo-pCode-01379 If pCode$ is a pointer to GLSL code, it must( be valid GLSL code written to the GL_KHR_vulkan_glsl GLSL extension specification)VUID-VkShaderModuleCreateInfo-pCode-01089 pCode must declare the Shader capability for SPIR-V code)VUID-VkShaderModuleCreateInfo-pCode-01090 pCode musta 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 appendix)VUID-VkShaderModuleCreateInfo-pCode-01091 If pCode: 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 satisfied)VUID-VkShaderModuleCreateInfo-pCode-04146 pCode mustg not declare any SPIR-V extension that is not supported by the API, as described by the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-extensions Extension section of the  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilitiesSPIR-V Environment appendix)VUID-VkShaderModuleCreateInfo-pCode-04147 If pCode? declares any of the SPIR-V extensions listed in the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-extensions-tableSPIR-V Environment6 appendix, one of the corresponding requirements must be satisfiedValid Usage (Implicit))VUID-VkShaderModuleCreateInfo-sType-sType sType must be )VUID-VkShaderModuleCreateInfo-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of '*VUID-VkShaderModuleCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique/VUID-VkShaderModuleCreateInfo-flags-zerobitmask flags must be 0-VUID-VkShaderModuleCreateInfo-pCode-parameter pCode must( be a valid pointer to an array of \textrm{codeSize} \over 4 uint32_t valuesSee Also {, C, (k(hvulkanpNext is NULL6 or a pointer to a structure extending this structure.(ivulkanflags is reserved for future use.(jvulkanpCode 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.(kvulkan9vkCreateShaderModule - 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)*VUID-vkCreateShaderModule-device-parameter device must be a valid  handle/VUID-vkCreateShaderModule-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure.VUID-vkCreateShaderModule-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure1VUID-vkCreateShaderModule-pShaderModule-parameter  pShaderModule 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?+See Also, , v, (lvulkan=A convenience wrapper to make a compatible pair of calls to (k and (mTo ensure that (m is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.(mvulkan/vkDestroyShaderModule - Destroy a shader module DescriptionA shader module canJ be destroyed while pipelines created using its shaders are still in use. Valid Usage-VUID-vkDestroyShaderModule-shaderModule-01092 If  were provided when  shaderModule1 was created, a compatible set of callbacks must be provided here-VUID-vkDestroyShaderModule-shaderModule-01093 If no  were provided when  shaderModule was created,  pAllocator must be NULLValid Usage (Implicit)+VUID-vkDestroyShaderModule-device-parameter device must be a valid  handle1VUID-vkDestroyShaderModule-shaderModule-parameter If  shaderModule is not 8,  shaderModule must be a valid v handle/VUID-vkDestroyShaderModule-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure.VUID-vkDestroyShaderModule-shaderModule-parent If  shaderModule is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  shaderModule must be externally synchronizedSee Also, , v(kvulkandevice6 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.(mvulkandevice7 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. v(g(i(h(j y z {(k(l(m (k(l(m(g(i(h(jv y z {=None("#%&'-./1789;=>?FHIMSUVX_dghklmqjvulkanQVkSamplerCreateInfo - Structure specifying parameters of a newly created sampler Description(Mapping of OpenGL to Vulkan filter modes magFilter values of d and c 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 c 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 = c or  minFilter = d, 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   structure.NoteFor historical reasons, if maxSamplerAllocationCount0 is exceeded, some implementations may return 7. Exceeding this limit will result in undefined behavior, and an application should not rely on the use of the returned error code in order to identify when the limit is reached.Since x5 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 Usage)VUID-VkSamplerCreateInfo-mipLodBias-01069 The absolute value of  mipLodBias must be less than or equal to  ::maxSamplerLodBias0VUID-VkSamplerCreateInfo-samplerMipLodBias-04467 If the VK_KHR_portability_subset extension is enabled, and ::samplerMipLodBias is .,  mipLodBias must be zero.%VUID-VkSamplerCreateInfo-maxLod-01973 maxLod must" be greater than or equal to minLod/VUID-VkSamplerCreateInfo-anisotropyEnable-01070 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 ./VUID-VkSamplerCreateInfo-anisotropyEnable-01071 If anisotropyEnable is .,  maxAnisotropy must be between 1.0 and  ::maxSamplerAnisotropy, inclusive(VUID-VkSamplerCreateInfo-minFilter-01645 If  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 {,  minFilter and  magFilter must2 be equal to the sampler Y 2CBCR conversion s  chromaFilter6VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01072 If unnormalizedCoordinates is .,  minFilter and  magFilter must be equal6VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01073 If unnormalizedCoordinates is .,  mipmapMode must be 6VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01074 If unnormalizedCoordinates is ., minLod and maxLod must be zero6VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01075 If unnormalizedCoordinates is .,  addressModeU and  addressModeV must each be either  or 6VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01076 If unnormalizedCoordinates is ., anisotropyEnable must be .6VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01077 If unnormalizedCoordinates is .,  compareEnable must be .+VUID-VkSamplerCreateInfo-addressModeU-01078 If any of  addressModeU,  addressModeV or  addressModeW are ,  borderColor must be a valid i value+VUID-VkSamplerCreateInfo-addressModeU-01646 If  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 .#VUID-VkSamplerCreateInfo-None-01647! The sampler reduction mode must be set to + if  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversion is enabled+VUID-VkSamplerCreateInfo-addressModeU-01079 If  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 ,VUID-VkSamplerCreateInfo-compareEnable-01080 If  compareEnable is .,  compareOp must be a valid D value(VUID-VkSamplerCreateInfo-magFilter-01081 If either  magFilter or  minFilter is , anisotropyEnable must be .,VUID-VkSamplerCreateInfo-compareEnable-01423 If  compareEnable is ., the  reductionMode member of " must be +$VUID-VkSamplerCreateInfo-flags-02574 If flags includes   , then  minFilter and  magFilter must be equal$VUID-VkSamplerCreateInfo-flags-02575 If flags includes   , then  mipmapMode must be $VUID-VkSamplerCreateInfo-flags-02576 If flags includes   , then minLod and maxLod must be zero$VUID-VkSamplerCreateInfo-flags-02577 If flags includes   , then  addressModeU and  addressModeV must each be either  or $VUID-VkSamplerCreateInfo-flags-02578 If flags includes   , then anisotropyEnable must be .$VUID-VkSamplerCreateInfo-flags-02579 If flags includes   , then  compareEnable must be .$VUID-VkSamplerCreateInfo-flags-02580 If flags includes   , then unnormalizedCoordinates must be .*VUID-VkSamplerCreateInfo-borderColor-04011 If  borderColor is one of k or l, then a  must be present in the pNext chain1VUID-VkSamplerCreateInfo-customBorderColors-04085 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 k or l*VUID-VkSamplerCreateInfo-borderColor-04442 If  borderColor is one of k or l, and ::format is not , ::customBorderColor must0 be within the range of values representable in format.#VUID-VkSamplerCreateInfo-None-04012E The maximum number of samplers with custom border colors which canb 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)$VUID-VkSamplerCreateInfo-sType-sType sType must be  $VUID-VkSamplerCreateInfo-pNext-pNext 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 %VUID-VkSamplerCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique(VUID-VkSamplerCreateInfo-flags-parameter flags must% be a valid combination of   values,VUID-VkSamplerCreateInfo-magFilter-parameter  magFilter must be a valid J value,VUID-VkSamplerCreateInfo-minFilter-parameter  minFilter must be a valid J value-VUID-VkSamplerCreateInfo-mipmapMode-parameter  mipmapMode must be a valid  value/VUID-VkSamplerCreateInfo-addressModeU-parameter  addressModeU must be a valid  value/VUID-VkSamplerCreateInfo-addressModeV-parameter  addressModeV must be a valid  value/VUID-VkSamplerCreateInfo-addressModeW-parameter  addressModeW must be a valid  valueSee Alsop, i, D, J, ,  , , C, ((tvulkanpNext is NULL6 or a pointer to a structure extending this structure.(uvulkanflags is a bitmask of  2 describing additional parameters of the sampler.(vvulkan magFilter is a J@ value specifying the magnification filter to apply to lookups.(wvulkan minFilter is a J? value specifying the minification filter to apply to lookups.(xvulkan mipmapMode is a 9 value specifying the mipmap filter to apply to lookups.(yvulkan addressModeU is a R value specifying the addressing mode for outside [0..1] range for U coordinate.(zvulkan 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.(|vulkansamplers-mipLodBias  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.(}vulkansamplers-maxAnisotropy anisotropyEnable 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 Dk 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 is used to clamp the  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-level-of-detail-operation!minimum of the computed LOD value.(vulkanmaxLod is used to clamp the  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-level-of-detail-operation!maximum of the computed LOD value,. To avoid clamping the maximum value, set maxLod to the constant .(vulkan borderColor is a i6 value specifying the predefined border color to use.(vulkan samplers-unnormalizedCoordinates unnormalizedCoordinatest 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 t or t.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 Usage4VUID-vkCreateSampler-maxSamplerAllocationCount-04110 There must be less than  ::maxSamplerAllocationCount8 VkSampler objects currently created on the device.Valid Usage (Implicit)%VUID-vkCreateSampler-device-parameter device must be a valid  handle*VUID-vkCreateSampler-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure)VUID-vkCreateSampler-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure'VUID-vkCreateSampler-pSampler-parameter pSampler 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , x, (vulkan=A convenience wrapper to make a compatible pair of calls to ( and (To ensure that ( is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.(vulkan+vkDestroySampler - Destroy a sampler object Valid Usage#VUID-vkDestroySampler-sampler-01082+ All submitted commands that refer to sampler must have completed execution#VUID-vkDestroySampler-sampler-01083 If  were provided when sampler1 was created, a compatible set of callbacks must be provided here#VUID-vkDestroySampler-sampler-01084 If no  were provided when sampler was created,  pAllocator must be NULLValid Usage (Implicit)&VUID-vkDestroySampler-device-parameter device must be a valid  handle'VUID-vkDestroySampler-sampler-parameter If sampler is not 8, sampler must be a valid x handle*VUID-vkDestroySampler-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure$VUID-vkDestroySampler-sampler-parent If sampler is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to sampler must be externally synchronizedSee Also, , x(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.7Jadcbx(s(u(t(v(w(x(y(z({(|(}(~(((((( ijrqponmlk(((K((((s(u(t(v(w(x(y(z({(|(}(~((((((xijrqponmlkrqponmlkJadcbdcb <None("#%&'-./1789;=>?FHIMSUVX_dghklmqjvulkanUVkSemaphoreCreateInfo - Structure specifying parameters of a newly created semaphoreValid Usage (Implicit)&VUID-VkSemaphoreCreateInfo-sType-sType sType must be &&VUID-VkSemaphoreCreateInfo-pNext-pNext 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 E'VUID-VkSemaphoreCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique,VUID-VkSemaphoreCreateInfo-flags-zerobitmask flags must be 0See Also , C, ((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)'VUID-vkCreateSemaphore-device-parameter device must be a valid  handle,VUID-vkCreateSemaphore-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure+VUID-vkCreateSemaphore-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure+VUID-vkCreateSemaphore-pSemaphore-parameter  pSemaphore 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , w, (vulkan=A convenience wrapper to make a compatible pair of calls to ( and (To ensure that ( is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.(vulkan/vkDestroySemaphore - Destroy a semaphore object Valid Usage'VUID-vkDestroySemaphore-semaphore-01137* All submitted batches that refer to  semaphore must have completed execution'VUID-vkDestroySemaphore-semaphore-01138 If  were provided when  semaphore1 was created, a compatible set of callbacks must be provided here'VUID-vkDestroySemaphore-semaphore-01139 If no  were provided when  semaphore was created,  pAllocator must be NULLValid Usage (Implicit)(VUID-vkDestroySemaphore-device-parameter device must be a valid  handle+VUID-vkDestroySemaphore-semaphore-parameter If  semaphore is not 8,  semaphore must be a valid w handle,VUID-vkDestroySemaphore-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure(VUID-vkDestroySemaphore-semaphore-parent If  semaphore is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  semaphore must be externally synchronizedSee Also, , w(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. w((( ((( ((((((w ;None("#%&'-./1789;=>?FHIMSUVX_dghklmql)uvulkan<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 Usage'VUID-VkSubmitInfo-pCommandBuffers-00075 Each element of pCommandBuffers must# not have been allocated with  )VUID-VkSubmitInfo-pWaitDstStageMask-00076 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 _)VUID-VkSubmitInfo-pWaitDstStageMask-00077 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 a or `)VUID-VkSubmitInfo-pWaitDstStageMask-00078 Each element of pWaitDstStageMask must not include W'VUID-VkSubmitInfo-pWaitSemaphores-03239 If any element of pWaitSemaphores or pSignalSemaphores was created with a * of *, then the pNext chain must include a C structureVUID-VkSubmitInfo-pNext-03240 If the pNext. chain of this structure includes a C# structure and any element of pWaitSemaphores was created with a * of *, then its waitSemaphoreValueCount member must equal waitSemaphoreCountVUID-VkSubmitInfo-pNext-03241 If the pNext. chain of this structure includes a C# structure and any element of pSignalSemaphores was created with a * of *, then its signalSemaphoreValueCount member must equal signalSemaphoreCount)VUID-VkSubmitInfo-pSignalSemaphores-03242 For each element of pSignalSemaphores created with a * of *( the corresponding element of C::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 executed'VUID-VkSubmitInfo-pWaitSemaphores-03243 For each element of pWaitSemaphores created with a * of *( the corresponding element of C::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#maxTimelineSemaphoreValueDifference)VUID-VkSubmitInfo-pSignalSemaphores-03244 For each element of pSignalSemaphores created with a * of *( the corresponding element of C::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)VUID-VkSubmitInfo-pWaitDstStageMask-02089 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 Q)VUID-VkSubmitInfo-pWaitDstStageMask-02090 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 PVUID-VkSubmitInfo-pNext-04120 If the pNext6 chain of this structure does not include a  structure with protectedSubmit set to . , then each element of the pCommandBuffers array must! be an unprotected command bufferVUID-VkSubmitInfo-pNext-04148 If the pNext. chain of this structure includes a  structure with protectedSubmit set to . , then each element of the pCommandBuffers array must be a protected command bufferValid Usage (Implicit)VUID-VkSubmitInfo-sType-sType sType must be +VUID-VkSubmitInfo-pNext-pNext 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 , , , , C, , or sVUID-VkSubmitInfo-sType-unique The sType" value of each struct in the pNext chain must be unique+VUID-VkSubmitInfo-pWaitSemaphores-parameter If waitSemaphoreCount is not 0, pWaitSemaphores must( be a valid pointer to an array of waitSemaphoreCount valid w handles-VUID-VkSubmitInfo-pWaitDstStageMask-parameter If waitSemaphoreCount is not 0, pWaitDstStageMask must( be a valid pointer to an array of waitSemaphoreCount valid combinations of X values3VUID-VkSubmitInfo-pWaitDstStageMask-requiredbitmask Each element of pWaitDstStageMask must not be 0+VUID-VkSubmitInfo-pCommandBuffers-parameter If commandBufferCount is not 0, pCommandBuffers must( be a valid pointer to an array of commandBufferCount valid / handles-VUID-VkSubmitInfo-pSignalSemaphores-parameter If signalSemaphoreCount is not 0, pSignalSemaphores must( be a valid pointer to an array of signalSemaphoreCount valid w handlesVUID-VkSubmitInfo-commonparent Each 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/, Y, w, C, ((vulkanpNext is NULL6 or a pointer to a structure extending this structure.(vulkanpWaitSemaphores is a pointer to an array of w 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 /! handles to execute in the batch.(vulkanpSignalSemaphores is a pointer to an array of w 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  B? set to zero. To get queues that were created with a non-zero flags parameter use D. Valid Usage,VUID-vkGetDeviceQueue-queueFamilyIndex-00384 queueFamilyIndex must3 be one of the queue family indices specified when device was created, via the  B structure&VUID-vkGetDeviceQueue-queueIndex-00385  queueIndex must_ be less than the number of queues created for the specified queue family index when device was created, via the  queueCount member of the  B structure!VUID-vkGetDeviceQueue-flags-01841  B::flags must! have been set to zero when device was createdValid Usage (Implicit)&VUID-vkGetDeviceQueue-device-parameter device must be a valid  handle&VUID-vkGetDeviceQueue-pQueue-parameter pQueue must be a valid pointer to a { handleSee Also, {(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 ! 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 UsageVUID-vkQueueSubmit-fence-00063 If fence is not 8, fence must be unsignaledVUID-vkQueueSubmit-fence-00064 If fence is not 8, fence mustl not be associated with any other queue command that has not yet completed execution on that queue(VUID-vkQueueSubmit-pCommandBuffers-00065 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*VUID-vkQueueSubmit-pWaitDstStageMask-000664 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 stages*VUID-vkQueueSubmit-pSignalSemaphores-00067 Each element of the pSignalSemaphores member of any element of pSubmits musta be unsignaled when the semaphore signal operation it defines is executed on the device(VUID-vkQueueSubmit-pWaitSemaphores-00068i When 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 semaphore(VUID-vkQueueSubmit-pWaitSemaphores-03238 All 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 execution(VUID-vkQueueSubmit-pCommandBuffers-00070 Each 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 state(VUID-vkQueueSubmit-pCommandBuffers-00071 If any element of the pCommandBuffers member of any element of pSubmits% was not recorded with the  , it must not be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state(VUID-vkQueueSubmit-pCommandBuffers-00072 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(VUID-vkQueueSubmit-pCommandBuffers-00073 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  , it must not be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state(VUID-vkQueueSubmit-pCommandBuffers-00074 Each element of the pCommandBuffers member of each element of pSubmits must! have been allocated from a /1 that was created for the same queue family queue belongs to!VUID-vkQueueSubmit-pSubmits-02207 If 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(VUID-vkQueueSubmit-pCommandBuffers-032200 If a command recorded into any element of pCommandBuffers was a  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 buffers!VUID-vkQueueSubmit-pSubmits-02808 Any resource created with 70 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 executed!VUID-vkQueueSubmit-pSubmits-04626 Any resource created with 74 that is accessed by an operation specified by pSubmits must( have included the queue family of queue at resource creation timeValid Usage (Implicit)"VUID-vkQueueSubmit-queue-parameter queue must be a valid { handle%VUID-vkQueueSubmit-pSubmits-parameter If  submitCount is not 0, pSubmits must# be a valid pointer to an array of  submitCount valid  structures"VUID-vkQueueSubmit-fence-parameter If fence is not 8, fence must be a valid  handleVUID-vkQueueSubmit-commonparent Both of fence, and queue7 that are valid handles of non-ignored parameters mustD 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?=See Also, {, 5Ivulkan&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)$VUID-vkQueueWaitIdle-queue-parameter queue must be a valid { 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?=See Also{(vulkan A variant of ( which makes a *safe* FFI call5Jvulkan'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)&VUID-vkDeviceWaitIdle-device-parameter device must be a valid  handleHost SynchronizationHost access to all { objects created from device must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?=See 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 8, it defines a  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signalingfence signal operation.5Ivulkanqueue is the queue on which to wait.(vulkanqueue is the queue on which to wait.(vulkanqueue is the queue on which to wait.5Jvulkandevice is the logical device to idle.(vulkandevice is the logical device to idle.(vulkandevice is the logical device to idle./XJedcba`_^]\[ZYXWVUTSRQPONMLKY{((((((((((((J(((((((((((({XJedcba`_^]\[ZYXWVUTSRQPONMLKedcba`_^]\[ZYXWVUTSRQPONMLKY:None("#%&'-./1789;=>?FHIMSUVX_dghklmql vulkanVVkQueryPoolCreateInfo - Structure specifying parameters of a newly created query pool DescriptionpipelineStatistics is ignored if  queryType is not  . Valid Usage*VUID-VkQueryPoolCreateInfo-queryType-00791 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  *VUID-VkQueryPoolCreateInfo-queryType-00792 If  queryType is  , pipelineStatistics must be a valid combination of   values*VUID-VkQueryPoolCreateInfo-queryType-03222 If  queryType is   , the pNext chain must" include a structure of type +VUID-VkQueryPoolCreateInfo-queryCount-02763  queryCount must be greater than 0Valid Usage (Implicit)&VUID-VkQueryPoolCreateInfo-sType-sType sType must be $&VUID-VkQueryPoolCreateInfo-pNext-pNext 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 Q'VUID-VkQueryPoolCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique,VUID-VkQueryPoolCreateInfo-flags-zerobitmask flags must be 0.VUID-VkQueryPoolCreateInfo-queryType-parameter  queryType must be a valid _ valueSee Also ,  , _, C, ((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)'VUID-vkCreateQueryPool-device-parameter device must be a valid  handle,VUID-vkCreateQueryPool-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure+VUID-vkCreateQueryPool-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure+VUID-vkCreateQueryPool-pQueryPool-parameter  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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , |, (vulkan=A convenience wrapper to make a compatible pair of calls to ( and (To ensure that ( is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.(vulkan0vkDestroyQueryPool - Destroy a query pool object Valid Usage'VUID-vkDestroyQueryPool-queryPool-00793+ All submitted commands that refer to  queryPool must have completed execution'VUID-vkDestroyQueryPool-queryPool-00794 If  were provided when  queryPool1 was created, a compatible set of callbacks must be provided here'VUID-vkDestroyQueryPool-queryPool-00795 If no  were provided when  queryPool was created,  pAllocator must be NULLValid Usage (Implicit)(VUID-vkDestroyQueryPool-device-parameter device must be a valid  handle+VUID-vkDestroyQueryPool-queryPool-parameter If  queryPool is not 8,  queryPool must be a valid | handle,VUID-vkDestroyQueryPool-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure(VUID-vkDestroyQueryPool-queryPool-parent If  queryPool is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  queryPool must be externally synchronizedSee Also, , |(vulkanXvkGetQueryPoolResults - 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, (& is guaranteed to succeed and return F 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 ( 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 ( returns E3. 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 , , and K 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+VUID-vkGetQueryPoolResults-firstQuery-00813  firstQuery must, be less than the number of queries in  queryPool &VUID-vkGetQueryPoolResults-flags-02827 If   is not set in flags, then pData and stride must be multiples of 4&VUID-vkGetQueryPoolResults-flags-02828 If   is not set in flags and the  queryType used to create  queryPool was not   , then pData and stride must be multiples of 4&VUID-vkGetQueryPoolResults-flags-00815 If   is set in flags then pData and stride must be multiples of 8*VUID-vkGetQueryPoolResults-queryType-03229 If the  queryType used to create  queryPool was   , then pData and stride must" be multiples of the size of *VUID-vkGetQueryPoolResults-queryType-04519 If the  queryType used to create  queryPool was   , then stride must! be large enough to contain ::counterIndexCount used to create  queryPool times the size of .+VUID-vkGetQueryPoolResults-firstQuery-00816 The sum of  firstQuery and  queryCount must8 be less than or equal to the number of queries in  queryPool)VUID-vkGetQueryPoolResults-dataSize-00817 dataSize 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-memorylayouthere*VUID-vkGetQueryPoolResults-queryType-00818 If the  queryType used to create  queryPool was  , flags must not contain  *VUID-vkGetQueryPoolResults-queryType-03230 If the  queryType used to create  queryPool was  , flags must not contain  ,   or  *VUID-vkGetQueryPoolResults-queryType-03231 If the  queryType used to create  queryPool was   , the  queryPool mustL have been recorded once for each pass as retrieved via a call to Valid Usage (Implicit)+VUID-vkGetQueryPoolResults-device-parameter device must be a valid  handle.VUID-vkGetQueryPoolResults-queryPool-parameter  queryPool must be a valid | handle*VUID-vkGetQueryPoolResults-pData-parameter pData must( be a valid pointer to an array of dataSize bytes*VUID-vkGetQueryPoolResults-flags-parameter flags must% be a valid combination of ] values/VUID-vkGetQueryPoolResults-dataSize-arraylength dataSize must be greater than 0+VUID-vkGetQueryPoolResults-queryPool-parent  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-successcodesSuccessFE  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?=See Also, n, |, ^(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.(vulkandevice4 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.(vulkandevice0 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./] ^_ |(((((( ((((G((((((((((| _ ] ^ 7None("#%&'-./1789;=>?FHIMSUVX_dghklmqrBvulkan,VkViewport - Structure specifying a viewport DescriptionNoteDespite their names, minDepth can* be less than, equal to, or greater than maxDepth.!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 UsageVUID-VkViewport-width-01770 width must be greater than 0.0 VUID-VkViewport-width-01771 width must$ be less than or equal to  ::maxViewportDimensions[0]VUID-VkViewport-height-01773 The absolute value of height must$ be less than or equal to  ::maxViewportDimensions[1]VUID-VkViewport-x-01774 x must" be greater than or equal to viewportBoundsRange[0]VUID-VkViewport-x-01232 (x + width) must be less than or equal to viewportBoundsRange[1]VUID-VkViewport-y-01775 y must" be greater than or equal to viewportBoundsRange[0]VUID-VkViewport-y-01776 y must be less than or equal to viewportBoundsRange[1]VUID-VkViewport-y-01777 (y + height) must" be greater than or equal to viewportBoundsRange[0]VUID-VkViewport-y-01233 (y + height) must be less than or equal to viewportBoundsRange[1]VUID-VkViewport-minDepth-01234 Unless VK_EXT_depth_range_unrestricted extension is enabled minDepth must be between 0.0 and 1.0 , inclusiveVUID-VkViewport-maxDepth-01235 Unless 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 description Valid Usage2VUID-VkVertexInputBindingDescription-binding-00618 binding must be less than  ::maxVertexInputBindings1VUID-VkVertexInputBindingDescription-stride-00619 stride must$ be less than or equal to  ::maxVertexInputBindingStride1VUID-VkVertexInputBindingDescription-stride-04456 If the VK_KHR_portability_subset extension is enabled, stride must7 be a multiple of, and at least as large as, ::$minVertexInputBindingStrideAlignment.Valid Usage (Implicit)8VUID-VkVertexInputBindingDescription-inputRate-parameter  inputRate must be a valid  valueSee Also, vulkan\VkVertexInputAttributeDescription - Structure specifying vertex input attribute description Valid Usage5VUID-VkVertexInputAttributeDescription-location-00620 location must be less than  ::maxVertexInputAttributes4VUID-VkVertexInputAttributeDescription-binding-00621 binding must be less than  ::maxVertexInputBindings3VUID-VkVertexInputAttributeDescription-offset-00622 offset must be less than or equal to  ::maxVertexInputAttributeOffset3VUID-VkVertexInputAttributeDescription-format-00623 format must@ be allowed as a vertex buffer format, as specified by the { flag in  ::bufferFeatures returned by  6NVUID-VkVertexInputAttributeDescription-vertexAttributeAccessBeyondStride-04457 If the VK_KHR_portability_subset extension is enabled, and ::!vertexAttributeAccessBeyondStride is . , the sum of offset> plus the size of the vertex attribute data described by format must not be greater than stride in the  referenced in binding.Valid Usage (Implicit)7VUID-VkVertexInputAttributeDescription-format-parameter format must be a valid K valueSee AlsoK, vulkan?VkStencilOpState - Structure specifying stencil operation stateValid Usage (Implicit)See AlsoD, , gvulkanKVkSpecializationMapEntry - 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 Usage.VUID-VkSpecializationMapEntry-constantID-00776 For 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 pSee Alsovulkan?VkSpecializationInfo - Structure specifying specialization info Description pMapEntries is a pointer to a  structure. Valid Usage&VUID-VkSpecializationInfo-offset-00773 The offset member of each element of  pMapEntries must be less than dataSize+VUID-VkSpecializationInfo-pMapEntries-00774 The size member of each element of  pMapEntries must be less than or equal to dataSize minus offsetValid Usage (Implicit)/VUID-VkSpecializationInfo-pMapEntries-parameter If  mapEntryCount is not 0,  pMapEntries must( be a valid pointer to an array of  mapEntryCount valid  structures)VUID-VkSpecializationInfo-pData-parameter If 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:VUID-VkPipelineViewportStateCreateInfo-viewportCount-01216 If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  viewportCount must not be greater than 1 9VUID-VkPipelineViewportStateCreateInfo-scissorCount-01217 If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  scissorCount must not be greater than 1:VUID-VkPipelineViewportStateCreateInfo-viewportCount-01218  viewportCount must be less than or equal to  :: maxViewports9VUID-VkPipelineViewportStateCreateInfo-scissorCount-01219  scissorCount must be less than or equal to  :: maxViewports.VUID-VkPipelineViewportStateCreateInfo-x-02821 The x and y members of offset member of any element of  pScissors must" be greater than or equal to 03VUID-VkPipelineViewportStateCreateInfo-offset-02822 Evaluation of (offset.x +  extent.width) mustF not cause a signed integer addition overflow for any element of  pScissors3VUID-VkPipelineViewportStateCreateInfo-offset-02823 Evaluation of (offset.y +  extent.height) mustF not cause a signed integer addition overflow for any element of  pScissors9VUID-VkPipelineViewportStateCreateInfo-scissorCount-04134= If the graphics pipeline is being created without  and  set then  scissorCount and  viewportCount must be identical:VUID-VkPipelineViewportStateCreateInfo-viewportCount-04135: If the graphics pipeline is being created with  set then  viewportCount must be 0, otherwise it must be greater than 09VUID-VkPipelineViewportStateCreateInfo-scissorCount-04136: If the graphics pipeline is being created with  set then  scissorCount must be 0, otherwise it must be greater than 0CVUID-VkPipelineViewportStateCreateInfo-viewportWScalingEnable-01726 If the viewportWScalingEnable member of a  structure included in the pNext chain is ., the  viewportCount member of the  structure must" be greater than or equal to :: viewportCountValid Usage (Implicit)2VUID-VkPipelineViewportStateCreateInfo-sType-sType sType must be 2VUID-VkPipelineViewportStateCreateInfo-pNext-pNext 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 h, \, g, r, or 3VUID-VkPipelineViewportStateCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique8VUID-VkPipelineViewportStateCreateInfo-flags-zerobitmask flags must be 0See Also, ,, q, C, vulkanvVkPipelineVertexInputStateCreateInfo - Structure specifying parameters of a newly created pipeline vertex input state Valid UsageMVUID-VkPipelineVertexInputStateCreateInfo-vertexBindingDescriptionCount-00613 vertexBindingDescriptionCount must be less than or equal to  ::maxVertexInputBindingsOVUID-VkPipelineVertexInputStateCreateInfo-vertexAttributeDescriptionCount-00614 vertexAttributeDescriptionCount must be less than or equal to  ::maxVertexInputAttributes7VUID-VkPipelineVertexInputStateCreateInfo-binding-00615 For every binding# specified by each element of pVertexAttributeDescriptions, a  must exist in pVertexBindingDescriptions with the same value of bindingJVUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-00616 All elements of pVertexBindingDescriptions must' describe distinct binding numbersLVUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-00617 All elements of pVertexAttributeDescriptions must+ describe distinct attribute locationsValid Usage (Implicit)5VUID-VkPipelineVertexInputStateCreateInfo-sType-sType sType must be 5VUID-VkPipelineVertexInputStateCreateInfo-pNext-pNext pNext must be NULL* or a pointer to a valid instance of +6VUID-VkPipelineVertexInputStateCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique;VUID-VkPipelineVertexInputStateCreateInfo-flags-zerobitmask flags must be 0NVUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-parameter If vertexBindingDescriptionCount is not 0, pVertexBindingDescriptions must( be a valid pointer to an array of vertexBindingDescriptionCount valid  structuresPVUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-parameter If vertexAttributeDescriptionCount is not 0, pVertexAttributeDescriptions must( be a valid pointer to an array of vertexAttributeDescriptionCount valid  structuresSee Also, t, 6, C, , vulkanwVkPipelineTessellationStateCreateInfo - Structure specifying parameters of a newly created pipeline tessellation state Valid UsageCVUID-VkPipelineTessellationStateCreateInfo-patchControlPoints-01214 patchControlPoints must: be greater than zero and less than or equal to  ::maxTessellationPatchSizeValid Usage (Implicit)6VUID-VkPipelineTessellationStateCreateInfo-sType-sType sType must be 6VUID-VkPipelineTessellationStateCreateInfo-pNext-pNext pNext must be NULL* or a pointer to a valid instance of 7VUID-VkPipelineTessellationStateCreateInfo-sType-unique The sType value of each struct in the pNext chain must be unique<VUID-VkPipelineTessellationStateCreateInfo-flags-zerobitmask flags must be 0See Also, t, @, CvulkankVkPipelineShaderStageCreateInfo - Structure specifying parameters of a newly created pipeline shader stage Valid Usage0VUID-VkPipelineShaderStageCreateInfo-stage-00704 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  B0VUID-VkPipelineShaderStageCreateInfo-stage-00705 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  D or  C0VUID-VkPipelineShaderStageCreateInfo-stage-02091 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  =0VUID-VkPipelineShaderStageCreateInfo-stage-02092 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  <0VUID-VkPipelineShaderStageCreateInfo-stage-00706 stage must not be  ? , or  >0VUID-VkPipelineShaderStageCreateInfo-pName-00707 pName must be the name of an  OpEntryPoint in module+ with an execution model that matches stage;VUID-VkPipelineShaderStageCreateInfo-maxClipDistances-00708j If 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  ::maxClipDistances;VUID-VkPipelineShaderStageCreateInfo-maxCullDistances-00709j If 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  ::maxCullDistancesJVUID-VkPipelineShaderStageCreateInfo-maxCombinedClipAndCullDistances-00710l If 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  ::maxCombinedClipAndCullDistances=VUID-VkPipelineShaderStageCreateInfo-maxSampleMaskWords-00711o If the identified entry point includes any variable in its interface that is declared with the W BuiltIn decoration, that variable must* not have an array size greater than  ::maxSampleMaskWords0VUID-VkPipelineShaderStageCreateInfo-stage-00712 If stage is  E", the identified entry point mustM not include any input variable in its interface that is decorated with  CullDistance0VUID-VkPipelineShaderStageCreateInfo-stage-00713 If stage is  D or  C-, 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  ::maxTessellationPatchSize0VUID-VkPipelineShaderStageCreateInfo-stage-00714 If stage is  B", 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  ::maxGeometryOutputVertices0VUID-VkPipelineShaderStageCreateInfo-stage-00715 If stage is  B", 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  ::maxGeometryShaderInvocations0VUID-VkPipelineShaderStageCreateInfo-stage-02596 If stageR 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 primitive0VUID-VkPipelineShaderStageCreateInfo-stage-02597 If stageR 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 primitive0VUID-VkPipelineShaderStageCreateInfo-stage-00718 If stage is  A", the identified entry point mustG not include any output variables in its interface decorated with  CullDistance0VUID-VkPipelineShaderStageCreateInfo-stage-00719 If stage is  A0, and the identified entry point writes to  FragDepth in any execution path, it must write to  FragDepth in all execution paths0VUID-VkPipelineShaderStageCreateInfo-stage-01511 If stage is  A0, and the identified entry point writes to FragStencilRefEXT in any execution path, it must write to FragStencilRefEXT in all execution paths0VUID-VkPipelineShaderStageCreateInfo-stage-02093 If stage is  =", 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 ::maxMeshOutputVertices0VUID-VkPipelineShaderStageCreateInfo-stage-02094 If stage is  =", 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 ::maxMeshOutputPrimitives0VUID-VkPipelineShaderStageCreateInfo-flags-02784 If flags has the q flag set, the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroupSizeControlsubgroupSizeControl feature must be enabled0VUID-VkPipelineShaderStageCreateInfo-flags-02785 If flags has the r flag set, the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-computeFullSubgroupscomputeFullSubgroups feature must be enabled0VUID-VkPipelineShaderStageCreateInfo-pNext-02754 If a # structure is included in the pNext chain, flags must not have the q flag set0VUID-VkPipelineShaderStageCreateInfo-pNext-02755 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-stagesrequiredSubgroupSizeStages0VUID-VkPipelineShaderStageCreateInfo-pNext-02756 If a # structure is included in the pNext chain and stage is  @., 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-workgroupmaxComputeWorkgroupSubgroups0VUID-VkPipelineShaderStageCreateInfo-pNext-02757 If a # structure is included in the pNext chain, and flags has the rQ flag set, the local workgroup size in the X dimension of the pipeline must be a multiple of ::requiredSubgroupSize0VUID-VkPipelineShaderStageCreateInfo-flags-02758 If flags has both the r and qR 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-sizemaxSubgroupSize0VUID-VkPipelineShaderStageCreateInfo-flags-02759 If flags has the r flag set and flags does not have the q 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 subgroupSize1VUID-VkPipelineShaderStageCreateInfo-module-04145. The SPIR-V code that was used to create module must# be valid as described by the  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirv-specKhronos SPIR-V Specification: after applying the specializations provided in pSpecializationInfoU, if any, and then converting all specialization constants into fixed constants.Valid Usage (Implicit)0VUID-VkPipelineShaderStageCreateInfo-sType-sType sType must be 0VUID-VkPipelineShaderStageCreateInfo-pNext-pNext pNext must be NULL* or a pointer to a valid instance of 1VUID-VkPipelineShaderStageCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique4VUID-VkPipelineShaderStageCreateInfo-flags-parameter flags must be a valid combination of n values4VUID-VkPipelineShaderStageCreateInfo-stage-parameter stage must be a valid c value5VUID-VkPipelineShaderStageCreateInfo-module-parameter module must be a valid v handle4VUID-VkPipelineShaderStageCreateInfo-pName-parameter pName must" be a null-terminated UTF-8 stringBVUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-parameter If pSpecializationInfo is not NULL, pSpecializationInfo must$ be a valid pointer to a valid  structureSee Also, , t, p, w, x, v, c, , CvulkanyVkPipelineRasterizationStateCreateInfo - Structure specifying parameters of a newly created pipeline rasterization state DescriptionThe application can also add a q 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 UsageBVUID-VkPipelineRasterizationStateCreateInfo-depthClampEnable-00782 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 .=VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01507 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 % or "=VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01414 If the VK_NV_fill_rectangle extension is not enabled,  polygonMode must not be "?VUID-VkPipelineRasterizationStateCreateInfo-pointPolygons-04458 If the VK_KHR_portability_subset extension is enabled, and :: pointPolygons is . , and rasterizerDiscardEnable is .,  polygonMode must not be #.Valid Usage (Implicit)7VUID-VkPipelineRasterizationStateCreateInfo-sType-sType sType must be 7VUID-VkPipelineRasterizationStateCreateInfo-pNext-pNext Each pNext5 member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , , , q, or #8VUID-VkPipelineRasterizationStateCreateInfo-sType-unique The sType value of each struct in the pNext chain must be unique=VUID-VkPipelineRasterizationStateCreateInfo-flags-zerobitmask flags must be 0AVUID-VkPipelineRasterizationStateCreateInfo-polygonMode-parameter  polygonMode must be a valid   value>VUID-VkPipelineRasterizationStateCreateInfo-cullMode-parameter cullMode must be a valid combination of E values?VUID-VkPipelineRasterizationStateCreateInfo-frontFace-parameter  frontFace must be a valid L valueSee Alsop, F, L, , {,  , CvulkanuVkPipelineMultisampleStateCreateInfo - 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 UsageCVUID-VkPipelineMultisampleStateCreateInfo-sampleShadingEnable-00784 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 .@VUID-VkPipelineMultisampleStateCreateInfo-alphaToOneEnable-00785 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 .@VUID-VkPipelineMultisampleStateCreateInfo-minSampleShading-00786 minSampleShading must be in the range [0,1]DVUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-01415 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)5VUID-VkPipelineMultisampleStateCreateInfo-sType-sType sType must be 5VUID-VkPipelineMultisampleStateCreateInfo-pNext-pNext 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 >, , 8, or 6VUID-VkPipelineMultisampleStateCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique;VUID-VkPipelineMultisampleStateCreateInfo-flags-zerobitmask flags must be 0HVUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-parameter rasterizationSamples must be a valid a value?VUID-VkPipelineMultisampleStateCreateInfo-pSampleMask-parameter If  pSampleMask is not NULL,  pSampleMask must- be a valid pointer to an array of 4\lceil{\mathit{rasterizationSamples} \over 32}\rceil W valuesSee Alsop, , , a, W, CvulkanzVkPipelineInputAssemblyStateCreateInfo - 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 Usage:VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00428 If topology is , , , ,  or , primitiveRestartEnable must be .:VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00429 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 , ,  or :VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00430 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 >VUID-VkPipelineInputAssemblyStateCreateInfo-triangleFans-04452 If the VK_KHR_portability_subset extension is enabled, and :: triangleFans is ., topology must not be .Valid Usage (Implicit)7VUID-VkPipelineInputAssemblyStateCreateInfo-sType-sType sType must be 7VUID-VkPipelineInputAssemblyStateCreateInfo-pNext-pNext pNext must be NULL=VUID-VkPipelineInputAssemblyStateCreateInfo-flags-zerobitmask flags must be 0>VUID-VkPipelineInputAssemblyStateCreateInfo-topology-parameter topology must be a valid Z valueSee Alsop, , , Z, CvulkanmVkPipelineDynamicStateCreateInfo - Structure specifying parameters of a newly created pipeline dynamic state Valid Usage:VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-01442 Each element of pDynamicStates must be uniqueValid Usage (Implicit)1VUID-VkPipelineDynamicStateCreateInfo-sType-sType sType must be 1VUID-VkPipelineDynamicStateCreateInfo-pNext-pNext pNext must be NULL7VUID-VkPipelineDynamicStateCreateInfo-flags-zerobitmask flags must be 0>VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-parameter If dynamicStateCount is not 0, pDynamicStates must( be a valid pointer to an array of dynamicStateCount valid  valuesSee Also, , , w, CvulkanxVkPipelineDepthStencilStateCreateInfo - Structure specifying parameters of a newly created pipeline depth stencil state Valid UsageFVUID-VkPipelineDepthStencilStateCreateInfo-depthBoundsTestEnable-00598 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 .GVUID-VkPipelineDepthStencilStateCreateInfo-separateStencilMaskRef-04453 If the VK_KHR_portability_subset extension is enabled, and ::separateStencilMaskRef is ., and the value of ::stencilTestEnable is ., and the value of ::cullMode is , the value of  reference in each of the  structs in front and back must be the same.Valid Usage (Implicit)6VUID-VkPipelineDepthStencilStateCreateInfo-sType-sType sType must be 6VUID-VkPipelineDepthStencilStateCreateInfo-pNext-pNext pNext must be NULL<VUID-VkPipelineDepthStencilStateCreateInfo-flags-zerobitmask flags must be 0CVUID-VkPipelineDepthStencilStateCreateInfo-depthCompareOp-parameter depthCompareOp must be a valid D value:VUID-VkPipelineDepthStencilStateCreateInfo-front-parameter front must be a valid  structure9VUID-VkPipelineDepthStencilStateCreateInfo-back-parameter back must be a valid  structureSee Alsop, D, , , , CvulkantVkPipelineColorBlendStateCreateInfo - 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. The value of attachmentCount mustC be greater than the index of all color attachments that are not  in 6::pColorAttachments or c::pColorAttachments1 for the subpass in which this pipeline is used. Valid Usage;VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605 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<VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00606 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 .<VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00607 If  logicOpEnable is ., logicOp must be a valid  valueValid Usage (Implicit)4VUID-VkPipelineColorBlendStateCreateInfo-sType-sType sType must be 4VUID-VkPipelineColorBlendStateCreateInfo-pNext-pNext pNext must be NULL* or a pointer to a valid instance of 5VUID-VkPipelineColorBlendStateCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique:VUID-VkPipelineColorBlendStateCreateInfo-flags-zerobitmask flags must be 0?VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-parameter If attachmentCount is not 0,  pAttachments must( be a valid pointer to an array of attachmentCount valid  structuresSee Alsop, , , , , CvulkancVkPipelineColorBlendAttachmentState - Structure specifying a pipeline color blend attachment state Valid UsageBVUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-00608 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 , ,  , or  BVUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-00609 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 , ,  , or BVUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-00610 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 , ,  , or BVUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-00611 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 , ,  , or ;VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01406 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  alphaBlendOpLVUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01407 If ::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 attachmentsLVUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01408 If ::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 attachmentsIVUID-VkPipelineColorBlendAttachmentState-advancedBlendAllOperations-01409 If ::advancedBlendAllOperations is ., then  colorBlendOp must not be {, |, }, ~, , , , , , , , , , , , , , , , , , , , , , , , , ,  , or ;VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01410 If  colorBlendOp or  alphaBlendOp is an  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advancedadvanced blend operation , then colorAttachmentCount7 of the subpass this pipeline is compiled against must be less than or equal to "::advancedBlendMaxColorAttachmentsMVUID-VkPipelineColorBlendAttachmentState-constantAlphaColorBlendFactors-04454 If the VK_KHR_portability_subset extension is enabled, and ::constantAlphaColorBlendFactors is ., srcColorBlendFactor must not be  or .MVUID-VkPipelineColorBlendAttachmentState-constantAlphaColorBlendFactors-04455 If the VK_KHR_portability_subset extension is enabled, and ::constantAlphaColorBlendFactors is ., dstColorBlendFactor must not be  or .Valid Usage (Implicit)FVUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-parameter srcColorBlendFactor must be a valid  valueFVUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-parameter dstColorBlendFactor must be a valid  value?VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-parameter  colorBlendOp must be a valid y valueFVUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-parameter srcAlphaBlendFactor must be a valid  valueFVUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-parameter dstAlphaBlendFactor must be a valid  value?VUID-VkPipelineColorBlendAttachmentState-alphaBlendOp-parameter  alphaBlendOp must be a valid y valueAVUID-VkPipelineColorBlendAttachmentState-colorWriteMask-parameter colorWriteMask must be a valid combination of % valuesSee Also, y, p, ', 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 Usage-VUID-VkGraphicsPipelineCreateInfo-flags-00722 If flags contains the  flag, and basePipelineIndex is -1, basePipelineHandle must& be a valid handle to a graphics i-VUID-VkGraphicsPipelineCreateInfo-flags-00723 If flags contains the  flag, and basePipelineHandle is 8, basePipelineIndex must2 be a valid index into the calling command s  pCreateInfos parameter-VUID-VkGraphicsPipelineCreateInfo-flags-00724 If flags contains the  flag, and basePipelineIndex is not -1, basePipelineHandle must be 8-VUID-VkGraphicsPipelineCreateInfo-flags-00725 If flags contains the  flag, and basePipelineHandle is not 8, basePipelineIndex must be -1-VUID-VkGraphicsPipelineCreateInfo-stage-00726 The stage member of each element of pStages must be unique/VUID-VkGraphicsPipelineCreateInfo-pStages-02095. The geometric shader stages provided in pStages must0 be either from the mesh shading pipeline (stage is  < or  =/) or from the primitive shading pipeline (stage is  E,  D,  C, or  B)-VUID-VkGraphicsPipelineCreateInfo-stage-02096 The stage member of one element of pStages must be either  E or  =-VUID-VkGraphicsPipelineCreateInfo-stage-00728 The stage member of each element of pStages must not be  @/VUID-VkGraphicsPipelineCreateInfo-pStages-00729 If pStages7 includes a tessellation control shader stage, it must4 include a tessellation evaluation shader stage/VUID-VkGraphicsPipelineCreateInfo-pStages-00730 If pStages: includes a tessellation evaluation shader stage, it must1 include a tessellation control shader stage/VUID-VkGraphicsPipelineCreateInfo-pStages-00731 If pStagesd includes a tessellation control shader stage and a tessellation evaluation shader stage, pTessellationState must$ be a valid pointer to a valid  structure/VUID-VkGraphicsPipelineCreateInfo-pStages-00732 If pStagesV 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 pipeline/VUID-VkGraphicsPipelineCreateInfo-pStages-00733 If pStages^ 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 mode/VUID-VkGraphicsPipelineCreateInfo-pStages-00734 If pStagesV 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 pipeline/VUID-VkGraphicsPipelineCreateInfo-pStages-00735 If pStagesW 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 size/VUID-VkGraphicsPipelineCreateInfo-pStages-00736 If pStages/ includes tessellation shader stages, the topology member of pInputAssembly must be 0VUID-VkGraphicsPipelineCreateInfo-topology-00737 If the topology member of pInputAssembly is , pStages must# include tessellation shader stages/VUID-VkGraphicsPipelineCreateInfo-pStages-00738 If pStagesr 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 pInputAssembly/VUID-VkGraphicsPipelineCreateInfo-pStages-00739 If pStagesk 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 stages/VUID-VkGraphicsPipelineCreateInfo-pStages-00740 If 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 paths/VUID-VkGraphicsPipelineCreateInfo-pStages-00741 If pStages8 includes a fragment shader stage, its shader code mustA not read from any input attachment that is defined as  in subpass/VUID-VkGraphicsPipelineCreateInfo-pStages-007429 The 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/VUID-VkGraphicsPipelineCreateInfo-subpass-01756+ If rasterization is not disabled and subpass) uses a depth/stencil attachment in  renderPass that has a layout of  or  in the 6 defined by subpass, the depthWriteEnable member of pDepthStencilState must be ./VUID-VkGraphicsPipelineCreateInfo-subpass-01757+ If rasterization is not disabled and subpass) uses a depth/stencil attachment in  renderPass that has a layout of  or  in the 6 defined by subpass, the failOp, passOp and  depthFailOp members of each of the front and back members of pDepthStencilState must be 3VUID-VkGraphicsPipelineCreateInfo-blendEnable-04717h If rasterization is not disabled, then for each color attachment in the subpass, if the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format featuresY of the format of the corresponding attachment description do not contain {, then the  blendEnable1 member of the corresponding element of the  pAttachments member of pColorBlendState must be .7VUID-VkGraphicsPipelineCreateInfo-attachmentCount-00746X If rasterization is not disabled and the subpass uses color attachments, the attachmentCount member of pColorBlendState must be equal to the colorAttachmentCount used to create subpass6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04130 If no element of the pDynamicStates member of  pDynamicState is  or  , the  pViewports member of pViewportState must( be a valid pointer to an array of pViewportState->viewportCount valid  structures6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04131 If no element of the pDynamicStates member of  pDynamicState is  or  , the  pScissors member of pViewportState must( be a valid pointer to an array of pViewportState->scissorCount q structures6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00749F If 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.0?VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00750 If the rasterizerDiscardEnable member of pRasterizationState is ., pViewportState must$ be a valid pointer to a valid  structure?VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00751 If the rasterizerDiscardEnable member of pRasterizationState is ., pMultisampleState must$ be a valid pointer to a valid  structure?VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00752 If the rasterizerDiscardEnable member of pRasterizationState is ., and subpass' uses a depth/stencil attachment, pDepthStencilState must$ be a valid pointer to a valid  structure?VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00753 If the rasterizerDiscardEnable member of pRasterizationState is ., and subpass uses color attachments, pColorBlendState must$ be a valid pointer to a valid  structure?VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-04493 If the rasterizerDiscardEnable member of pRasterizationState is ., !pColorBlendState->attachmentCount mustK be greater than the index of all color attachments that are not  for the subpass index in  renderPass6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00754P If 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.06VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-02510 If 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 , inclusive6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01521 If no element of the pDynamicStates member of  pDynamicState is , 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 i with a samples parameter equaling rasterizationSamples6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01522 If no element of the pDynamicStates member of  pDynamicState is , 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 i with a samples parameter equaling rasterizationSamples6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01523 If no element of the pDynamicStates member of  pDynamicState is , and the sampleLocationsEnable member of a  structure included in the pNext chain of pMultisampleState is ., +sampleLocationsInfo.sampleLocationsPerPixel must equal rasterizationSamples=VUID-VkGraphicsPipelineCreateInfo-sampleLocationsEnable-01524 If 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 InterpolateAtSample.VUID-VkGraphicsPipelineCreateInfo-layout-00756 layout must be  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent$ with all shaders specified in pStages/VUID-VkGraphicsPipelineCreateInfo-subpass-00757 If 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 attachments/VUID-VkGraphicsPipelineCreateInfo-subpass-01505 If 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 attachments/VUID-VkGraphicsPipelineCreateInfo-subpass-01411 If 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 attachment/VUID-VkGraphicsPipelineCreateInfo-subpass-01412 If the VK_NV_framebuffer_mixed_samples# extension is enabled, and if subpass% has any color attachments, then the rasterizationSamples member of pMultisampleState mustP be greater than or equal to the sample count for those subpass attachments=VUID-VkGraphicsPipelineCreateInfo-coverageReductionMode-02722 If 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 /VUID-VkGraphicsPipelineCreateInfo-subpass-00758 If subpassM 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 subpass/VUID-VkGraphicsPipelineCreateInfo-subpass-00759 subpass must be a valid subpass within  renderPass2VUID-VkGraphicsPipelineCreateInfo-renderPass-00760 If 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 shaders2VUID-VkGraphicsPipelineCreateInfo-renderPass-00761 If 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 shader2VUID-VkGraphicsPipelineCreateInfo-renderPass-00762 If 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 output2VUID-VkGraphicsPipelineCreateInfo-renderPass-00763 If the  renderPass) has multiview enabled, then all shaders must/ not include variables decorated with the Layer- built-in decoration in their interfaces-VUID-VkGraphicsPipelineCreateInfo-flags-00764 flags must not contain the J flag/VUID-VkGraphicsPipelineCreateInfo-pStages-01565 If pStagesY 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 attachment.VUID-VkGraphicsPipelineCreateInfo-layout-01688! The number of resources in layoutC accessible to each shader stage that is used by the pipeline must be less than or equal to  ::maxPerStageResources6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01715 If no element of the pDynamicStates member of  pDynamicState is , 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  structures6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04056 If no element of the pDynamicStates member of  pDynamicState is , 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 q structures6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04057 If no element of the pDynamicStates member of  pDynamicState is , and if pViewportState->pNext chain includes a g structure, then its pShadingRatePalettes member must( be a valid pointer to an array of  viewportCount valid  structures6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04058 If no element of the pDynamicStates member of  pDynamicState is , 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 q structures/VUID-VkGraphicsPipelineCreateInfo-pStages-02097 If pStages& includes a vertex shader stage, pVertexInputState must$ be a valid pointer to a valid  structure/VUID-VkGraphicsPipelineCreateInfo-pStages-02098 If pStages& includes a vertex shader stage, pInputAssemblyState must$ be a valid pointer to a valid  structure/VUID-VkGraphicsPipelineCreateInfo-pStages-02317 The Xfb execution mode can/ be specified by only one shader stage in pStages/VUID-VkGraphicsPipelineCreateInfo-pStages-02318 If any shader stage in pStages specifies Xfb execution mode it must) be the last vertex processing stage;VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02319 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" be decorated with identical Stream values that match the rasterizationStream;VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02320 If #::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 be decorated with a Stream value of zero, or must not specify the Stream decoration7VUID-VkGraphicsPipelineCreateInfo-geometryStreams-02321g If the last vertex processing stage is a geometry shader, and that geometry shader uses the GeometryStreams capability, then 6::geometryStreams feature must be enabled,VUID-VkGraphicsPipelineCreateInfo-None-02322@ If there are any mesh shader stages in the pipeline there must5 not be any shader stage in the pipeline with a Xfb execution mode=VUID-VkGraphicsPipelineCreateInfo-lineRasterizationMode-02766 If the lineRasterizationMode member of a  structure included in the pNext chain of pRasterizationState is  or 0 and if rasterization is enabled, then the alphaToCoverageEnable, alphaToOneEnable, and sampleShadingEnable members of pMultisampleState must all be .:VUID-VkGraphicsPipelineCreateInfo-stippledLineEnable-02767 If the stippledLineEnable member of  is . and no element of the pDynamicStates member of  pDynamicState is , then the lineStippleFactor member of  must be in the range [1,256]-VUID-VkGraphicsPipelineCreateInfo-flags-03371 flags must not include -VUID-VkGraphicsPipelineCreateInfo-flags-03372 flags must not include -VUID-VkGraphicsPipelineCreateInfo-flags-03373 flags must not include -VUID-VkGraphicsPipelineCreateInfo-flags-03374 flags must not include -VUID-VkGraphicsPipelineCreateInfo-flags-03375 flags must not include -VUID-VkGraphicsPipelineCreateInfo-flags-03376 flags must not include -VUID-VkGraphicsPipelineCreateInfo-flags-03377 flags must not include -VUID-VkGraphicsPipelineCreateInfo-flags-03577 flags must not include 6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03378 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 , , , , , , , , , ,  , or 6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03379 If  is included in the pDynamicStates array then  viewportCount must be zero6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03380 If  is included in the pDynamicStates array then  scissorCount must be zero6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04132 If  is included in the pDynamicStates array then  must not be present6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04133 If  is included in the pDynamicStates array then  must not be present-VUID-VkGraphicsPipelineCreateInfo-flags-02877 If flags includes , then the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedCommands::deviceGeneratedCommands feature must be enabled-VUID-VkGraphicsPipelineCreateInfo-flags-02966 If flags includes , then all stages must not specify Xfb execution modeDVUID-VkGraphicsPipelineCreateInfo-pipelineCreationCacheControl-02878 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 5VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04494 If  is not included in  pDynamicState->pDynamicStates, ::fragmentSize.width must be greater than or equal to 15VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04495 If  is not included in  pDynamicState->pDynamicStates, ::fragmentSize.height must be greater than or equal to 15VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04496 If  is not included in  pDynamicState->pDynamicStates, ::fragmentSize.width must be a power-of-two value5VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04497 If  is not included in  pDynamicState->pDynamicStates, ::fragmentSize.height must be a power-of-two value5VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04498 If  is not included in  pDynamicState->pDynamicStates, ::fragmentSize.width must be less than or equal to 45VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04499 If  is not included in  pDynamicState->pDynamicStates, ::fragmentSize.height must be less than or equal to 45VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04500 If  is not included in  pDynamicState->pDynamicStates, and the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate#pipelineFragmentShadingRate feature is not enabled, #::fragmentSize.width and ::fragmentSize.height must both be equal to 15VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04501 If  is not included in  pDynamicState->pDynamicStates, and the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-primitiveFragmentShadingRate$primitiveFragmentShadingRate feature is not enabled, :: combinerOps [0] must be 5VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04502 If  is not included in  pDynamicState->pDynamicStates, and the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-attachmentFragmentShadingRate%attachmentFragmentShadingRate feature is not enabled, :: combinerOps [1] must be YVUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04503 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewports# limit is not supported,  is not included in  pDynamicState->pDynamicStates , and :: viewportCount is greater than 1, entry points specified in pStages must not write to the PrimitiveShadingRateKHR built-inYVUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04504 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewports< limit is not supported, and entry points specified in pStages write to the  ViewportIndex built-in, they must not also write to the PrimitiveShadingRateKHR built-inYVUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04505 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewports< limit is not supported, and entry points specified in pStages write to the ViewportMaskNV built-in, they must not also write to the PrimitiveShadingRateKHR built-inPVUID-VkGraphicsPipelineCreateInfo-fragmentShadingRateNonTrivialCombinerOps-04506 If the  }https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-fragmentShadingRateNonTrivialCombinerOps(fragmentShadingRateNonTrivialCombinerOps& limit is not supported and  is not included in  pDynamicState->pDynamicStates, elements of :: combinerOps must be  or 5VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04569 If  is not included in  pDynamicState->pDynamicStates, and the  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentShadingRateEnums fragmentShadingRateEnums feature is not enabled, ;::shadingRateType must be equal to .5VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04570 If  is not included in  pDynamicState->pDynamicStates, and the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate#pipelineFragmentShadingRate feature is not enabled, ;::shadingRate must be equal to .5VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04571 If  is not included in  pDynamicState->pDynamicStates, and the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-primitiveFragmentShadingRate$primitiveFragmentShadingRate feature is not enabled, ;:: combinerOps [0] must be 5VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04572 If  is not included in  pDynamicState->pDynamicStates, and the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-attachmentFragmentShadingRate%attachmentFragmentShadingRate feature is not enabled, ;:: combinerOps [1] must be PVUID-VkGraphicsPipelineCreateInfo-fragmentShadingRateNonTrivialCombinerOps-04573 If the  }https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-fragmentShadingRateNonTrivialCombinerOps(fragmentShadingRateNonTrivialCombinerOps& limit is not supported and  is not included in  pDynamicState->pDynamicStates, elements of ;:: combinerOps must be  or ,VUID-VkGraphicsPipelineCreateInfo-None-04574 If the  thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-supersampleFragmentShadingRates'supersampleFragmentShadingRates feature is not enabled, ;::shadingRate must not be equal to , , , or .,VUID-VkGraphicsPipelineCreateInfo-None-04575 If the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-noInvocationFragmentShadingRates(noInvocationFragmentShadingRates feature is not enabled, ;::shadingRate must not be equal to .6VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03578 All elements of the pDynamicStates member of  pDynamicState must not be Valid Usage (Implicit)-VUID-VkGraphicsPipelineCreateInfo-sType-sType sType must be  -VUID-VkGraphicsPipelineCreateInfo-pNext-pNext 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 &, p, , , ;, , or V.VUID-VkGraphicsPipelineCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique1VUID-VkGraphicsPipelineCreateInfo-flags-parameter flags must% be a valid combination of  values3VUID-VkGraphicsPipelineCreateInfo-pStages-parameter pStages must# be a valid pointer to an array of  stageCount valid  structures?VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-parameter pRasterizationState must$ be a valid pointer to a valid  structure9VUID-VkGraphicsPipelineCreateInfo-pDynamicState-parameter If  pDynamicState is not NULL,  pDynamicState must$ be a valid pointer to a valid  structure2VUID-VkGraphicsPipelineCreateInfo-layout-parameter layout must be a valid } handle6VUID-VkGraphicsPipelineCreateInfo-renderPass-parameter  renderPass must be a valid y handle8VUID-VkGraphicsPipelineCreateInfo-stageCount-arraylength  stageCount must be greater than 0.VUID-VkGraphicsPipelineCreateInfo-commonparent Each 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, , , , , , }, , , , , , , y, C, )@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 Usage,VUID-VkComputePipelineCreateInfo-flags-00697 If flags contains the  flag, and basePipelineIndex is -1, basePipelineHandle must% be a valid handle to a compute ,VUID-VkComputePipelineCreateInfo-flags-00698 If flags contains the  flag, and basePipelineHandle is 8, basePipelineIndex must2 be a valid index into the calling command s  pCreateInfos parameter,VUID-VkComputePipelineCreateInfo-flags-00699 If flags contains the  flag, and basePipelineIndex is not -1, basePipelineHandle must be 8,VUID-VkComputePipelineCreateInfo-flags-00700 If flags contains the  flag, and basePipelineHandle is not 8, basePipelineIndex must be -1,VUID-VkComputePipelineCreateInfo-stage-00701 The stage member of stage must be  @,VUID-VkComputePipelineCreateInfo-stage-007028 The 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 chapter-VUID-VkComputePipelineCreateInfo-layout-00703 layout 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 stage-VUID-VkComputePipelineCreateInfo-layout-01687! The number of resources in layout( accessible to the compute shader stage must$ be less than or equal to  ::maxPerStageResources,VUID-VkComputePipelineCreateInfo-flags-03364 flags must not include ,VUID-VkComputePipelineCreateInfo-flags-03365 flags must not include ,VUID-VkComputePipelineCreateInfo-flags-03366 flags must not include ,VUID-VkComputePipelineCreateInfo-flags-03367 flags must not include ,VUID-VkComputePipelineCreateInfo-flags-03368 flags must not include ,VUID-VkComputePipelineCreateInfo-flags-03369 flags must not include ,VUID-VkComputePipelineCreateInfo-flags-03370 flags must not include ,VUID-VkComputePipelineCreateInfo-flags-03576 flags must not include ,VUID-VkComputePipelineCreateInfo-flags-02874 flags must not include CVUID-VkComputePipelineCreateInfo-pipelineCreationCacheControl-02875 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),VUID-VkComputePipelineCreateInfo-sType-sType sType must be ,VUID-VkComputePipelineCreateInfo-pNext-pNext 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 p or -VUID-VkComputePipelineCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique0VUID-VkComputePipelineCreateInfo-flags-parameter flags must% be a valid combination of  values0VUID-VkComputePipelineCreateInfo-stage-parameter stage must be a valid  structure1VUID-VkComputePipelineCreateInfo-layout-parameter layout must be a valid } handle-VUID-VkComputePipelineCreateInfo-commonparent Both of basePipelineHandle, and layout7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Also, , }, , C, )B(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.(vulkanpRasterizationState is a pointer to a  structure.(vulkanpMultisampleState is a pointer to a G structure, and is ignored if the pipeline has rasterization disabled.(vulkanpDepthStencilState 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.(vulkanpColorBlendState 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.(vulkan 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.(vulkanlayouto is the description of binding locations used by both the pipeline and descriptor sets used with the pipeline.(vulkan 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.(vulkansubpassR is the index of the subpass in the render pass where this pipeline will be used.(vulkanbasePipelineHandle is a pipeline to derive from.(vulkanbasePipelineIndex is an index into the  pCreateInfos0 parameter to use as a pipeline to derive from.(vulkanflags is reserved for future use.(vulkandepthTestEnable controls whether  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth depth testing is enabled.(vulkandepthWriteEnable 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 ..(vulkandepthCompareOp) is the comparison operator used in the  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth depth test.(vulkandepthBoundsTestEnable controls whether  Yhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-dbtdepth bounds testing is enabled.(vulkanstencilTestEnable controls whether  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencilstencil testing is enabled.(vulkanfront and back control the parameters of the  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil stencil test.(vulkanminDepthBounds) 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.(vulkanmaxDepthBounds) 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.(vulkanfailOp is a gN value specifying the action performed on samples that fail the stencil test.&VUID-VkStencilOpState-failOp-parameter failOp must be a valid g value(vulkanpassOp is a g_ value specifying the action performed on samples that pass both the depth and stencil tests.&VUID-VkStencilOpState-passOp-parameter passOp must be a valid g value(vulkan depthFailOp is a gg value specifying the action performed on samples that pass the stencil test and fail the depth test.+VUID-VkStencilOpState-depthFailOp-parameter  depthFailOp must be a valid g value(vulkan compareOp is a DD value specifying the comparison operator used in the stencil test.)VUID-VkStencilOpState-compareOp-parameter  compareOp must be a valid D 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  values specifying which pieces of pipeline state will use the values from dynamic state commands rather than from pipeline state creation info.(vulkanpNext is NULL6 or a pointer to a structure extending this structure.(vulkanflags is reserved for future use.(vulkan logicOpEnable controls whether to apply  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-logicopLogical Operations.(vulkanlogicOp* selects which logical operation to apply.(vulkan pAttachments<: is a pointer to an array of per target attachment states.(vulkanblendConstants 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.(vulkan 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.(vulkansrcColorBlendFactorP selects which blend factor is used to determine the source factors (Sr,Sg,Sb).(vulkandstColorBlendFactorU selects which blend factor is used to determine the destination factors (Dr,Dg,Db).(vulkan colorBlendOpe selects which blend operation is used to calculate the RGB values to write to the color attachment.(vulkansrcAlphaBlendFactorG selects which blend factor is used to determine the source factor Sa.(vulkandstAlphaBlendFactorL selects which blend factor is used to determine the destination factor Da.(vulkan alphaBlendOpf selects which blend operation is use to calculate the alpha values to write to the color attachment.(vulkancolorWriteMask 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.(vulkanpNext is NULL6 or a pointer to a structure extending this structure.(vulkanflags is reserved for future use.(vulkanrasterizationSamples is a a9 specifying the number of samples used in rasterization.(vulkansampleShadingEnable can be used to enable  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshadingSample Shading.(vulkanminSampleShading4 specifies a minimum fraction of sample shading if sampleShadingEnable is set to ..(vulkan pSampleMask is an array of W values used in the  `https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-samplemasksample mask test.(vulkanalphaToCoverageEnable 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.(vulkanalphaToOneEnabler 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 LP 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 q 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 Z6 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 (b and >), and the special index value is either 0xFFFFFFFF when the  indexType parameter of  is equal to  , 0xFF when  indexType is equal to C, or 0xFFFF when  indexType is equal to :. 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.)vulkanbindingA is the binding number which this attribute takes its data from.)vulkanformat3 is the size and type of the vertex attribute data.)vulkanoffsete is a byte offset of this attribute relative to the start of an element in the vertex input binding.) vulkanbinding5 is the binding number that this structure describes.)!vulkanstrideN is the distance in bytes between two consecutive elements within the buffer.)"vulkan inputRate is a s value specifying whether vertex attribute addressing is a function of the vertex index or of the instance index.)$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 n= specifying how the pipeline shader stage will be generated.)-vulkanstage is a c+ value specifying a single pipeline stage.).vulkanmodule is a v. 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.)0vulkanpSpecializationInfo 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.)2vulkan pMapEntries is a pointer to an array of 2 structures which map constant IDs to offsets in pData.)3vulkandataSize is the byte size of the pData buffer.)4vulkanpData8 contains the actual constant values to specialize with.)6vulkan constantID4 is the ID of the specialization constant in SPIR-V.)7vulkanoffsetZ is the byte offset of the specialization constant value within the supplied data buffer.)8vulkansizeX 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 maxDepth& are the depth range for the viewport.)@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 Usage*VUID-vkCreateGraphicsPipelines-flags-00720 If 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 element*VUID-vkCreateGraphicsPipelines-flags-00721 If the flags member of any element of  pCreateInfos contains the  flag, the base pipeline must! have been created with the  flag set2VUID-vkCreateGraphicsPipelines-pipelineCache-02876 If  pipelineCache was created with m?, 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 8 for  pipelineCache.Valid Usage (Implicit)/VUID-vkCreateGraphicsPipelines-device-parameter device must be a valid  handle6VUID-vkCreateGraphicsPipelines-pipelineCache-parameter If  pipelineCache is not 8,  pipelineCache must be a valid ~ handle5VUID-vkCreateGraphicsPipelines-pCreateInfos-parameter  pCreateInfos must( be a valid pointer to an array of createInfoCount valid  structures3VUID-vkCreateGraphicsPipelines-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure3VUID-vkCreateGraphicsPipelines-pPipelines-parameter  pPipelines must# be a valid pointer to an array of createInfoCount  handles:VUID-vkCreateGraphicsPipelines-createInfoCount-arraylength createInfoCount must be greater than 03VUID-vkCreateGraphicsPipelines-pipelineCache-parent If  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-successcodesSuccessF3  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?+See Also, , , , ~)Avulkan=A convenience wrapper to make a compatible pair of calls to )@ and )DTo ensure that )D is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.)Bvulkan@vkCreateComputePipelines - Creates a new compute pipeline object Valid Usage)VUID-vkCreateComputePipelines-flags-00695 If 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 element)VUID-vkCreateComputePipelines-flags-00696 If the flags member of any element of  pCreateInfos contains the  flag, the base pipeline must! have been created with the  flag set1VUID-vkCreateComputePipelines-pipelineCache-02873 If  pipelineCache was created with m?, host access to  pipelineCache must be lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehaviorexternally synchronizedValid Usage (Implicit).VUID-vkCreateComputePipelines-device-parameter device must be a valid  handle5VUID-vkCreateComputePipelines-pipelineCache-parameter If  pipelineCache is not 8,  pipelineCache must be a valid ~ handle4VUID-vkCreateComputePipelines-pCreateInfos-parameter  pCreateInfos must( be a valid pointer to an array of createInfoCount valid  structures2VUID-vkCreateComputePipelines-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure2VUID-vkCreateComputePipelines-pPipelines-parameter  pPipelines must# be a valid pointer to an array of createInfoCount  handles9VUID-vkCreateComputePipelines-createInfoCount-arraylength createInfoCount must be greater than 02VUID-vkCreateComputePipelines-pipelineCache-parent If  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-successcodesSuccessF3  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?+See Also, , , , ~)Cvulkan=A convenience wrapper to make a compatible pair of calls to )B and )DTo ensure that )D is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.)Dvulkan-vkDestroyPipeline - Destroy a pipeline object Valid Usage%VUID-vkDestroyPipeline-pipeline-00765+ All submitted commands that refer to pipeline must have completed execution%VUID-vkDestroyPipeline-pipeline-00766 If  were provided when pipeline1 was created, a compatible set of callbacks must be provided here%VUID-vkDestroyPipeline-pipeline-00767 If no  were provided when pipeline was created,  pAllocator must be NULLValid Usage (Implicit)'VUID-vkDestroyPipeline-device-parameter device must be a valid  handle)VUID-vkDestroyPipeline-pipeline-parameter If pipeline is not 8, pipeline must be a valid  handle+VUID-vkDestroyPipeline-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure&VUID-vkDestroyPipeline-pipeline-parent If 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 8K, 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.)Bvulkandevice: is the logical device that creates the compute pipelines.vulkan pipelineCache is either 8K, 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.)Dvulkandevice2 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.DEFLZc 5 E D C B A @ ? > = < ; : 9 8 7 6dg)9):);)<)=)>)?)) )!)")))))(((((((()5)8)7)6)1)3)4)2))) )) ) ) )))))) ))))*)/),)+)-).)0((())))(((())((((((((())))(((((((((((((((((((((((((((((((((((((((((((((((()#)%)$)&)')())W !%$#",-67@Anorqp{|%&+*)('yz~}|{)@)A)B)C)Db)@)A)B)C)D)9):);)<)=)>)?)5)8)7)6)1)3)4)2)*)/),)+)-).)0)#)%)$)&)')()))) )!)"))))))))))))))) )))))) )) ) ) ((())))(((())((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((({|,-@A67ZD !%$#"%$#"Lyz~}|{~}|{gEFc 5 E D C B A @ ? > = < ; : 9 8 7 6 E D C B A @ ? > = < ; : 9 8 7 6dnorqrqp%&+*)(+*)('WNone("#%&'-./1789;=>?FHIMSUVX_dghklmqvOvulkaniVkSetStateFlagsIndirectCommandNV - Structure specifying input data for a single state flag command tokenSee Also!No cross-references are available vulkanVkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV - Structure describing push descriptor limits that can be supported by an implementationValid Usage (Implicit)See AlsoC!vulkanVkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV - 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  2 to enable the features.Valid Usage (Implicit)See Alsop, C"vulkan]VkIndirectCommandsStreamNV - Structure specifying input streams for generated command tokens Valid Usage,VUID-VkIndirectCommandsStreamNV-buffer-02942 The buffer s usage flag must have the  bit set,VUID-VkIndirectCommandsStreamNV-offset-02943 The offset must be aligned to  ::(minIndirectCommandsBufferOffsetAlignment,VUID-VkIndirectCommandsStreamNV-buffer-02975 If buffer is non-sparse then it must7 be bound completely and contiguously to a single / objectValid Usage (Implicit)0VUID-VkIndirectCommandsStreamNV-buffer-parameter buffer must be a valid  handleSee Also, n, (#vulkandVkIndirectCommandsLayoutTokenNV - Struct specifying the details of an indirect command layout token Valid Usage1VUID-VkIndirectCommandsLayoutTokenNV-stream-02951 stream must be smaller than $:: streamCount 1VUID-VkIndirectCommandsLayoutTokenNV-offset-02952 offset must$ be less than or equal to  ::maxIndirectCommandsTokenOffset4VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02976 If  tokenType is ), vertexBindingUnit mustF stay within device supported limits for the appropriate commands4VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02977 If  tokenType is ), pushconstantPipelineLayout must be valid4VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02978 If  tokenType is ), pushconstantOffset must be a multiple of 44VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02979 If  tokenType is ), pushconstantSize must be a multiple of 44VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02980 If  tokenType is ), pushconstantOffset must be less than  ::maxPushConstantsSize4VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02981 If  tokenType is ), pushconstantSize must be less than or equal to  ::maxPushConstantsSize minus pushconstantOffset4VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02982 If  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 stage4VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02983 If  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 9::pushconstantShaderStageFlags4VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02984 If  tokenType is *, indirectStateFlags must not be 0Valid Usage (Implicit)0VUID-VkIndirectCommandsLayoutTokenNV-sType-sType sType must be 0VUID-VkIndirectCommandsLayoutTokenNV-pNext-pNext pNext must be NULL8VUID-VkIndirectCommandsLayoutTokenNV-tokenType-parameter  tokenType must be a valid ) valueIVUID-VkIndirectCommandsLayoutTokenNV-pushconstantPipelineLayout-parameter If pushconstantPipelineLayout is not 8, pushconstantPipelineLayout must be a valid } handleKVUID-VkIndirectCommandsLayoutTokenNV-pushconstantShaderStageFlags-parameter pushconstantShaderStageFlags must be a valid combination of &f valuesAVUID-VkIndirectCommandsLayoutTokenNV-indirectStateFlags-parameter indirectStateFlags must be a valid combination of ) values:VUID-VkIndirectCommandsLayoutTokenNV-pIndexTypes-parameter If indexTypeCount is not 0,  pIndexTypes must( be a valid pointer to an array of indexTypeCount valid T values?VUID-VkIndirectCommandsLayoutTokenNV-pIndexTypeValues-parameter If indexTypeCount is not 0, pIndexTypeValues must( be a valid pointer to an array of indexTypeCount uint32_t valuesSee Alsop, T, $, ), ), }, d, C$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 UsageAVUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-02930 The pipelineBindPoint must be :VUID-VkIndirectCommandsLayoutCreateInfoNV-tokenCount-02931  tokenCount must be greater than 0 and less than or equal to  ::maxIndirectCommandsTokenCount7VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02932 If 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 type7VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02933 If pTokens contains an entry of * there must1 be only a single element of such token type7VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02934 All state tokens in pTokens must) occur prior work provoking tokens (), ), ))7VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02935 The content of pTokens mustJ include one single work provoking token that is compatible with the pipelineBindPoint;VUID-VkIndirectCommandsLayoutCreateInfoNV-streamCount-02936  streamCount must be greater than 0 and less or equal to  ::maxIndirectCommandsStreamCount>VUID-VkIndirectCommandsLayoutCreateInfoNV-pStreamStrides-02937 each 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)5VUID-VkIndirectCommandsLayoutCreateInfoNV-sType-sType sType must be 5VUID-VkIndirectCommandsLayoutCreateInfoNV-pNext-pNext pNext must be NULL9VUID-VkIndirectCommandsLayoutCreateInfoNV-flags-parameter flags must be a valid combination of ) values?VUID-VkIndirectCommandsLayoutCreateInfoNV-flags-requiredbitmask flags must not be 0EVUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-parameter pipelineBindPoint must be a valid W value;VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-parameter pTokens must# be a valid pointer to an array of  tokenCount valid # structuresBVUID-VkIndirectCommandsLayoutCreateInfoNV-pStreamStrides-parameter pStreamStrides must( be a valid pointer to an array of  streamCount uint32_t values@VUID-VkIndirectCommandsLayoutCreateInfoNV-tokenCount-arraylength  tokenCount must be greater than 0AVUID-VkIndirectCommandsLayoutCreateInfoNV-streamCount-arraylength  streamCount must be greater than 0See Also#, ), W, C, * %vulkancVkGraphicsShaderGroupCreateInfoNV - Structure specifying override parameters for each shader group Valid Usage7VUID-VkGraphicsShaderGroupCreateInfoNV-stageCount-02888 For  stageCount#, the same restrictions as in 7r:: stageCount apply4VUID-VkGraphicsShaderGroupCreateInfoNV-pStages-02889 For pStages#, the same restrictions as in 7r::pStages apply>VUID-VkGraphicsShaderGroupCreateInfoNV-pVertexInputState-02890 For pVertexInputState#, the same restrictions as in 7r::pVertexInputState apply?VUID-VkGraphicsShaderGroupCreateInfoNV-pTessellationState-02891 For pTessellationState#, the same restrictions as in 7r::pTessellationState applyValid Usage (Implicit)2VUID-VkGraphicsShaderGroupCreateInfoNV-sType-sType sType must be 2VUID-VkGraphicsShaderGroupCreateInfoNV-pNext-pNext pNext must be NULL8VUID-VkGraphicsShaderGroupCreateInfoNV-pStages-parameter pStages must# be a valid pointer to an array of  stageCount valid  structures=VUID-VkGraphicsShaderGroupCreateInfoNV-stageCount-arraylength  stageCount must be greater than 0See Also&, , , , C&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@VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-02879  groupCount must be at least 1 and as maximum  ::maxGraphicsShaderGroupCount@VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-02880 The sum of  groupCount3 including those groups added from referenced  pPipelines must also be as maximum  ::maxGraphicsShaderGroupCount=VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02881( The state of the first element of pGroups must4 match its equivalent within the parent s 7r=VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02882 Each element of pGroups mustZ in combination with the rest of the pipeline state yield a valid state configuration=VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02884 All 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 valid=VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02885L Mesh and regular primitive shading stages cannot be mixed across pGroups@VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pPipelines-02886 Each element of  pPipelines must have been created with identical state to the pipeline currently created except the state that can be overridden by %MVUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-deviceGeneratedCommands-02887 The  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedCommands::deviceGeneratedCommands feature must be enabledValid Usage (Implicit);VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-sType-sType sType must be AVUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-parameter pGroups must# be a valid pointer to an array of  groupCount valid % structuresDVUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pPipelines-parameter If  pipelineCount is not 0,  pPipelines must( be a valid pointer to an array of  pipelineCount valid  handlesFVUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-arraylength  groupCount must be greater than 0See Also%, , C'vulkan}VkGeneratedCommandsMemoryRequirementsInfoNV - Structure specifying parameters for the reservation of preprocess buffer space Valid UsageHVUID-VkGeneratedCommandsMemoryRequirementsInfoNV-maxSequencesCount-02907 maxSequencesCount must be less or equal to  ::maxIndirectSequenceCountValid Usage (Implicit)<VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-sType-sType sType must be <VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pNext-pNext pNext must be NULLLVUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipelineBindPoint-parameter pipelineBindPoint must be a valid W valueCVUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipeline-parameter pipeline must be a valid  handleQVUID-VkGeneratedCommandsMemoryRequirementsInfoNV-indirectCommandsLayout-parameter indirectCommandsLayout must be a valid P handle=VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-commonparent Both of indirectCommandsLayout, and pipeline mustD have been created, allocated, or retrieved from the same See AlsoP, , W, C, * (vulkan[VkGeneratedCommandsInfoNV - Structure specifying parameters for the generation of commands Valid Usage-VUID-VkGeneratedCommandsInfoNV-pipeline-02912 The provided pipeline must+ match the pipeline bound at execution time;VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-02913 If the indirectCommandsLayout uses a token of * , then the pipeline must. have been created with multiple shader groups;VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-02914 If the indirectCommandsLayout uses a token of * , then the pipeline must have been created with j set in 7r::flags;VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-02915 If the indirectCommandsLayout uses a token of ), then the pipeline`s } must match the #::pushconstantPipelineLayout0VUID-VkGeneratedCommandsInfoNV-streamCount-02916  streamCount must match the indirectCommandsLayout s  streamCount3VUID-VkGeneratedCommandsInfoNV-sequencesCount-02917 sequencesCount must be less or equal to  ::maxIndirectSequenceCount and '::maxSequencesCount% that was used to determine the preprocessSize5VUID-VkGeneratedCommandsInfoNV-preprocessBuffer-02918 preprocessBuffer must have the  bit set in its usage flag5VUID-VkGeneratedCommandsInfoNV-preprocessOffset-02919 preprocessOffset must be aligned to  ::(minIndirectCommandsBufferOffsetAlignment5VUID-VkGeneratedCommandsInfoNV-preprocessBuffer-02971 If preprocessBuffer is non-sparse then it must7 be bound completely and contiguously to a single / object3VUID-VkGeneratedCommandsInfoNV-preprocessSize-02920 preprocessSize mustJ be at least equal to the memory requirement`s size returned by * ! using the matching inputs (indirectCommandsLayout, & ) as within this structure9VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02921 sequencesCountBuffer cann be set if the actual used count of sequences is sourced from the provided buffer. In that case the sequencesCount serves as upper bound9VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02922 If sequencesCountBuffer is not 8, its usage flag must have the  bit set9VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02923 If sequencesCountBuffer is not 8, sequencesCountOffset must be aligned to  ::&minSequencesCountBufferOffsetAlignment9VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02972 If sequencesCountBuffer is not 8 and is non-sparse then it must7 be bound completely and contiguously to a single / object9VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02924 If indirectCommandsLayout s * is set, sequencesIndexBuffer must be set otherwise it must be 89VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02925 If sequencesIndexBuffer is not 8, its usage flag must have the  bit set9VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02926 If sequencesIndexBuffer is not 8, sequencesIndexOffset must be aligned to  ::&minSequencesIndexBufferOffsetAlignment9VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02973 If sequencesIndexBuffer is not 8 and is non-sparse then it must7 be bound completely and contiguously to a single / objectValid Usage (Implicit)*VUID-VkGeneratedCommandsInfoNV-sType-sType sType must be  *VUID-VkGeneratedCommandsInfoNV-pNext-pNext pNext must be NULL:VUID-VkGeneratedCommandsInfoNV-pipelineBindPoint-parameter pipelineBindPoint must be a valid W value1VUID-VkGeneratedCommandsInfoNV-pipeline-parameter pipeline must be a valid  handle?VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-parameter indirectCommandsLayout must be a valid P handle1VUID-VkGeneratedCommandsInfoNV-pStreams-parameter pStreams must# be a valid pointer to an array of  streamCount valid " structures9VUID-VkGeneratedCommandsInfoNV-preprocessBuffer-parameter preprocessBuffer must be a valid  handle=VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-parameter If sequencesCountBuffer is not 8, sequencesCountBuffer must be a valid  handle=VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-parameter If sequencesIndexBuffer is not 8, sequencesIndexBuffer must be a valid  handle6VUID-VkGeneratedCommandsInfoNV-streamCount-arraylength  streamCount must be greater than 0+VUID-VkGeneratedCommandsInfoNV-commonparent Each 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, n, P, ", , W, C, *, *)vulkanoVkBindVertexBufferIndirectCommandNV - Structure specifying input data for a single vertex buffer command token Valid Usage3VUID-VkBindVertexBufferIndirectCommandNV-None-02949B The buffer s usage flag from which the address was acquired must have the   bit set3VUID-VkBindVertexBufferIndirectCommandNV-None-02950a 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 / objectSee Alsoo*vulkanmVkBindShaderGroupIndirectCommandNV - Structure specifying input data for a single shader group command token Valid Usage2VUID-VkBindShaderGroupIndirectCommandNV-None-02944[ The current bound graphics pipeline, as well as the pipelines it may reference, must have been created with j3VUID-VkBindShaderGroupIndirectCommandNV-index-02945 The index mustb be within range of the accessible shader groups of the current bound graphics pipeline. See *  for further detailsSee Also!No cross-references are available+vulkanmVkBindIndexBufferIndirectCommandNV - Structure specifying input data for a single index buffer command token Valid Usage2VUID-VkBindIndexBufferIndirectCommandNV-None-02946B The buffer s usage flag from which the address was acquired must have the   bit set;VUID-VkBindIndexBufferIndirectCommandNV-bufferAddress-02947 The  bufferAddress must be aligned to the  indexType used2VUID-VkBindIndexBufferIndirectCommandNV-None-02948a 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 / objectValid Usage (Implicit);VUID-VkBindIndexBufferIndirectCommandNV-indexType-parameter  indexType must be a valid T valueSee Alsoo, T)vulkan>VkIndirectCommandsTokenTypeNV - Enum specifying token commands Description'1 Token type B Equivalent command  *  * #  * B -  *    )    )    )    )    )   !Supported indirect command tokensSee Also#)vulkanXVkIndirectStateFlagBitsNV - Bitmask specifiying state that can be altered on the deviceSee Also))vulkanjVkIndirectCommandsLayoutUsageFlagBitsNV - Bitmask specifying allowed usage of an indirect commands layoutSee Also))vulkanpipelineBindPoint is the W of the pipelineK that this buffer memory is intended to be used with during the execution.)vulkanpipeline is the K that this buffer memory is intended to be used with during the execution.)vulkanindirectCommandsLayout is the P6 that this buffer memory is intended to be used with.)vulkanmaxSequencesCountj is the maximum number of sequences that this buffer memory in combination with the other state provided can be used with.)vulkanpipelineBindPoint is the W used for the pipeline.)vulkanpipeline is the / used in the generation and execution process.)vulkanindirectCommandsLayout is the P1 that provides the command sequence to generate.)vulkanpStreams provides an array of "5 that provide the input data for the tokens used in indirectCommandsLayout.)vulkansequencesCount4 is the maximum number of sequences to reserve. If sequencesCountBuffer is 89, this is also the actual number of sequences generated.)vulkanpreprocessBuffer is the _ that is used for preprocessing the input data for execution. If this structure is used with * with its isPreprocessed set to jQ, then the preprocessing step is skipped and data is only read from this buffer.)vulkanpreprocessOffset is the byte offset into preprocessBuffer( where the preprocessed data is stored.)vulkanpreprocessSize% is the maximum byte size within the preprocessBuffer after the preprocessOffset% that is available for preprocessing.)vulkansequencesCountBuffer is a @ in which the actual number of sequences is provided as single uint32_t value.)vulkansequencesCountOffset is the byte offset into sequencesCountBuffer" where the count value is stored.)vulkansequencesIndexBuffer is a , that encodes the used sequence indices as uint32_t array.)vulkansequencesIndexOffset is the byte offset into sequencesIndexBuffer where the index values start.)vulkanflags is a bitmask of )( specifying usage hints of this layout.)vulkanpipelineBindPoint is the W 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.)vulkanvertexBindingUnit/ is used for the vertex buffer binding command.)vulkanvertexDynamicStride} sets if the vertex buffer stride is provided by the binding command rather than the current bound graphics pipeline state.)vulkanpushconstantPipelineLayout is the }% used for the push constant command.)vulkanpushconstantShaderStageFlags@ are the shader stage flags used for the push constant command.)vulkanpushconstantOffset2 is the offset used for the push constant command.)vulkanpushconstantSize0 is the size used for the push constant command.)vulkanindirectStateFlags2 are the active states for the state flag command.)vulkan pIndexTypes is the used T for the corresponding uint32_t value entry in pIndexTypeValues.)vulkanbuffer specifies the F storing the functional arguments for each sequence. These arguments can be written by the device.)vulkanoffset specified an offset into buffer where the arguments start.)vulkandata/ encodes packed state that this command alters.Bit 0: If set represents  , otherwise  )vulkan bufferAddress& specifies a physical address of the  used as vertex input binding.)vulkansizeY is the byte size range which is available for this operation from the provided address.)vulkanstride> 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.)vulkan bufferAddress& specifies a physical address of the  used as index buffer.)vulkansizeY is the byte size range which is available for this operation from the provided address.)vulkan indexType is a TY value specifying how indices are treated. Instead of the Vulkan enum values, a custom uint32_t value can be mapped to an T by specifying the #:: pIndexTypes and #::pIndexTypeValues arrays.)vulkanpGroups is an array of %1 values specifying which state of the original 7r 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 (.)vulkan features-deviceGeneratedCommands deviceGeneratedCommandsh 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 j.*vulkanbvkCmdExecuteGeneratedCommandsNV - Performs the generation and execution of commands on the device Valid Usage4VUID-vkCmdExecuteGeneratedCommandsNV-magFilter-04553 If a / created with  magFilter or  minFilter equal to  and  compareEnable equal to k is used to sample a /> 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 {'55VUID-vkCmdExecuteGeneratedCommandsNV-mipmapMode-04770 If a / created with  mipmapMode equal to 8 and  compareEnable equal to k is used to sample a /> 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 {'/VUID-vkCmdExecuteGeneratedCommandsNV-None-02691 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 {x/VUID-vkCmdExecuteGeneratedCommandsNV-None-02692 If 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 6VUID-vkCmdExecuteGeneratedCommandsNV-filterCubic-02694 Any / being sampled with " as a result of this command must have a tyE and format that supports cubic filtering, as specified by f:: filterCubic returned by T<VUID-vkCmdExecuteGeneratedCommandsNV-filterCubicMinmax-02695 Any / being sampled with + with a reduction mode of either +z or +{" as a result of this command must have a tyi and format that supports cubic filtering together with minmax filtering, as specified by f::filterCubicMinmax returned by T0VUID-vkCmdExecuteGeneratedCommandsNV-flags-02696 Any /  created with a 0::flags containing * sampled as a result of this command must only be sampled using a 9| of 9}/VUID-vkCmdExecuteGeneratedCommandsNV-None-02697 For each set n% that is statically used by the S bound to the pipeline bind point used by this command, a descriptor set must have been bound to n. 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???/VUID-vkCmdExecuteGeneratedCommandsNV-None-02698A 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???/VUID-vkCmdExecuteGeneratedCommandsNV-None-02699C 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 command/VUID-vkCmdExecuteGeneratedCommandsNV-None-02700 A valid pipeline must9 be bound to the pipeline bind point used by this command8VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-02701 If 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 dynamic/VUID-vkCmdExecuteGeneratedCommandsNV-None-02859 There musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the f object bound to the pipeline bind point used by this command, since that pipeline was bound/VUID-vkCmdExecuteGeneratedCommandsNV-None-02702 If the S object bound to the pipeline bind point used by this command accesses a /> object that uses unnormalized coordinates, that sampler must% not be used to sample from any /  with a / of the type t~, t, t, t or t, in any shader stage/VUID-vkCmdExecuteGeneratedCommandsNV-None-02703 If the S object bound to the pipeline bind point used by this command accesses 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 stage/VUID-vkCmdExecuteGeneratedCommandsNV-None-02704 If the S object bound to the pipeline bind point used by this command accesses 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/VUID-vkCmdExecuteGeneratedCommandsNV-None-02705 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/VUID-vkCmdExecuteGeneratedCommandsNV-None-02706 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 point8VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-02707 If  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 resource/VUID-vkCmdExecuteGeneratedCommandsNV-None-04115 If 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.7VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWrite-04469 If a / is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction mustC have at least as many components as the buffer view s format.6VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04470 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.6VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04471 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.6VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04472 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.6VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04473 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.BVUID-vkCmdExecuteGeneratedCommandsNV-sparseImageInt64Atomics-04474 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, / $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.BVUID-vkCmdExecuteGeneratedCommandsNV-sparseImageInt64Atomics-04475 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.5VUID-vkCmdExecuteGeneratedCommandsNV-renderPass-02684 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 7r, structure specified when creating the  bound to 2VUID-vkCmdExecuteGeneratedCommandsNV-subpass-026853 The subpass index of the current render pass must be equal to the subpass member of the 7r1 structure specified when creating the  bound to /VUID-vkCmdExecuteGeneratedCommandsNV-None-026869 Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor set/VUID-vkCmdExecuteGeneratedCommandsNV-None-04584H Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass chapterDVUID-vkCmdExecuteGeneratedCommandsNV-maxMultiviewInstanceIndex-02688p If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to W::maxMultiviewInstanceIndex@VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-02689; If the bound graphics pipeline was created with _::sampleLocationsEnable set to jS and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the  bit set8VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-03417E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the ' dynamic state enabled, then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the 7h:: scissorCount of the pipeline7VUID-vkCmdExecuteGeneratedCommandsNV-scissorCount-03418E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the ' dynamic state enabled, then  mustY have been called in the current command buffer prior to this draw command, and the  scissorCount parameter of  must match the 7h:: viewportCount of the pipeline8VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-03419J If the bound graphics pipeline state was created with both the  and , 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 8VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04137E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the > dynamic state enabled, then the bound graphics pipeline must" have been created with j:: viewportCount greater or equal to the  viewportCount) parameter in the last call to 8VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04138E If the bound graphics pipeline state was created with the  and & dynamic states enabled then the  viewportCount) parameter in the last call to  must! be greater than or equal to the  viewportCount) parameter in the last call to 8VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04139E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the > dynamic state enabled, then the bound graphics pipeline must" have been created with g:: viewportCount greater or equal to the  viewportCount) parameter in the last call to 8VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04140E If the bound graphics pipeline state was created with the  and & dynamic states enabled then the  viewportCount) parameter in the last call to  must! be greater than or equal to the  viewportCount) parameter in the last call to FVUID-vkCmdExecuteGeneratedCommandsNV-VkPipelineVieportCreateInfo-04141E If the bound graphics pipeline state was created with the 4 dynamic state enabled and an instance of i chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with i:: viewportCount greater or equal to the  viewportCount) parameter in the last call to FVUID-vkCmdExecuteGeneratedCommandsNV-VkPipelineVieportCreateInfo-04142E If the bound graphics pipeline state was created with the 4 dynamic state enabled and an instance of f chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with f::exclusiveScissorCount greater or equal to the  viewportCount) parameter in the last call to <VUID-vkCmdExecuteGeneratedCommandsNV-primitiveTopology-03420E If the bound graphics pipeline state was created with the & dynamic state enabled then o mustY have been called in the current command buffer prior to this draw command, and the primitiveTopology parameter of o 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 7T::topology state\VUID-vkCmdExecuteGeneratedCommandsNV-primitiveFragmentShadingRateWithMultipleViewports-04552 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewportsY limit is not supported, the bound graphics pipeline was created with the k dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR built-in, then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must be 16VUID-vkCmdExecuteGeneratedCommandsNV-blendEnable-04727 If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features do not contain {, then the  blendEnable1 member of the corresponding element of the  pAttachments member of pColorBlendState must be k?VUID-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-04740] If rasterization is not disabled in the bound graphics pipeline, and neither the @ nor the # extensions are enabled, then 7W::rasterizationSamples@ mustO be the same as the current subpass color and/or depth/stencil attachments/VUID-vkCmdExecuteGeneratedCommandsNV-None-04007 All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must have either valid or 8 buffers bound/VUID-vkCmdExecuteGeneratedCommandsNV-None-04008 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 8/VUID-vkCmdExecuteGeneratedCommandsNV-None-02721D 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???8VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-02970  commandBuffer must" not be a protected command buffer9VUID-vkCmdExecuteGeneratedCommandsNV-isPreprocessed-02908 If isPreprocessed is j 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 set3VUID-vkCmdExecuteGeneratedCommandsNV-pipeline-02909 (::pipeline must* match the current bound pipeline at (::pipelineBindPoint/VUID-vkCmdExecuteGeneratedCommandsNV-None-02910 Transform feedback must not be activeBVUID-vkCmdExecuteGeneratedCommandsNV-deviceGeneratedCommands-02911 The  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedCommands::deviceGeneratedCommands feature must be enabledValid Usage (Implicit)<VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-parameter  commandBuffer must be a valid  handleEVUID-vkCmdExecuteGeneratedCommandsNV-pGeneratedCommandsInfo-parameter pGeneratedCommandsInfo must$ be a valid pointer to a valid ( structure<VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state:VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operations/VUID-vkCmdExecuteGeneratedCommandsNV-renderpass This command must0 only be called inside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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 Alsop, , (*vulkanSvkCmdPreprocessGeneratedCommandsNV - Performs preprocessing for generated commands Valid Usage;VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-02974  commandBuffer must" not be a protected command bufferDVUID-vkCmdPreprocessGeneratedCommandsNV-pGeneratedCommandsInfo-02927 pGeneratedCommandsInfo`s indirectCommandsLayout must& have been created with the * bit setEVUID-vkCmdPreprocessGeneratedCommandsNV-deviceGeneratedCommands-02928 The  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedCommands::deviceGeneratedCommands feature must be enabledValid Usage (Implicit)?VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-parameter  commandBuffer must be a valid  handleHVUID-vkCmdPreprocessGeneratedCommandsNV-pGeneratedCommandsInfo-parameter pGeneratedCommandsInfo must$ be a valid pointer to a valid ( structure?VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state=VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operations2VUID-vkCmdPreprocessGeneratedCommandsNV-renderpass This command must1 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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 Usage4VUID-vkCmdBindPipelineShaderGroupNV-groupIndex-02893  groupIndex must be 0! or less than the effective &:: groupCount( including the referenced pipelines;VUID-vkCmdBindPipelineShaderGroupNV-pipelineBindPoint-02894 The pipelineBindPoint must be 4VUID-vkCmdBindPipelineShaderGroupNV-groupIndex-02895$ The same restrictions as Z apply as if the bound pipeline was created only with the Shader Group from the  groupIndex informationAVUID-vkCmdBindPipelineShaderGroupNV-deviceGeneratedCommands-02896 The  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedCommands::deviceGeneratedCommands feature must be enabledValid Usage (Implicit);VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-parameter  commandBuffer must be a valid  handle?VUID-vkCmdBindPipelineShaderGroupNV-pipelineBindPoint-parameter pipelineBindPoint must be a valid W value6VUID-vkCmdBindPipelineShaderGroupNV-pipeline-parameter pipeline must be a valid  handle;VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state9VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operations0VUID-vkCmdBindPipelineShaderGroupNV-commonparent Both 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 / 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, , W* vulkanpvkGetGeneratedCommandsMemoryRequirementsNV - Retrieve the buffer allocation requirements for generated commands Valid UsageMVUID-vkGetGeneratedCommandsMemoryRequirementsNV-deviceGeneratedCommands-02906 The  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedCommands::deviceGeneratedCommands feature must be enabledValid Usage (Implicit)@VUID-vkGetGeneratedCommandsMemoryRequirementsNV-device-parameter device must be a valid  handle?VUID-vkGetGeneratedCommandsMemoryRequirementsNV-pInfo-parameter pInfo must$ be a valid pointer to a valid ' structureMVUID-vkGetGeneratedCommandsMemoryRequirementsNV-pMemoryRequirements-parameter pMemoryRequirements must be a valid pointer to a  structureSee Also, ', * vulkanLvkCreateIndirectCommandsLayoutNV - Create an indirect command layout object Valid UsageCVUID-vkCreateIndirectCommandsLayoutNV-deviceGeneratedCommands-02929 The  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedCommands::deviceGeneratedCommands feature must be enabledValid Usage (Implicit)6VUID-vkCreateIndirectCommandsLayoutNV-device-parameter device must be a valid  handle;VUID-vkCreateIndirectCommandsLayoutNV-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid $ structure:VUID-vkCreateIndirectCommandsLayoutNV-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structureGVUID-vkCreateIndirectCommandsLayoutNV-pIndirectCommandsLayout-parameter pIndirectCommandsLayout must be a valid pointer to a P handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , $, P* vulkan=A convenience wrapper to make a compatible pair of calls to *  and * To ensure that *  is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.* vulkanGvkDestroyIndirectCommandsLayoutNV - Destroy an indirect commands layout Valid UsageCVUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02938+ All submitted commands that refer to indirectCommandsLayout must have completed executionCVUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02939 If  were provided when indirectCommandsLayout1 was created, a compatible set of callbacks must be provided hereCVUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02940 If no  were provided when indirectCommandsLayout was created,  pAllocator must be NULLDVUID-vkDestroyIndirectCommandsLayoutNV-deviceGeneratedCommands-02941 The  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedCommands::deviceGeneratedCommands feature must be enabledValid Usage (Implicit)7VUID-vkDestroyIndirectCommandsLayoutNV-device-parameter device must be a valid  handleGVUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-parameter If indirectCommandsLayout is not 8, indirectCommandsLayout must be a valid P handle;VUID-vkDestroyIndirectCommandsLayoutNV-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structureDVUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-parent If indirectCommandsLayout is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to indirectCommandsLayout must be externally synchronizedSee Also, , P*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 kM 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 WF value specifying the bind point to which the pipeline will be 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.tP)) ))))))))))!))")))#)))))))))))))$)))))%))))&)))')))))())))))))))))))))))*))+)))))))***)))))))*)))***))))*** * * * * *** * * * * !)) ))))))))))%))))&)))*))+)))))))))))")))#)))))))))))))$)))))()))))))))))))')))))))***)***))*)*)***))))))***)))))))))PNone("#%&'-./1789;=>?FHIMSUVX_dghklmq{b9vulkan3VkRayTracingShaderGroupTypeKHR - 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, {vulkan-VkShaderGroupShaderKHR - Shader group shadersSee Also*vulkaneVkTraceRaysIndirectCommandKHR - 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 availablevulkanbVkStridedDeviceAddressRegionKHR - Structure specifying a region of device addresses with a stride Valid Usage/VUID-VkStridedDeviceAddressRegionKHR-size-04631 If size) is not zero, all addresses between  deviceAddress and  deviceAddress + size - 1 must> be in the buffer device address range of the same buffer/VUID-VkStridedDeviceAddressRegionKHR-size-04632 If size is not zero, stride must5 be less than the size of the buffer from which  deviceAddress was queriedSee Alsoo, n, *, *vulkanVVkRayTracingShaderGroupCreateInfoKHR - Structure specifying shaders in a shader group Valid Usage4VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03474 If type is * then  generalShader must be a valid index into ::pStages$ referring to a shader of &, &, or &4VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03475 If type is * then closestHitShader,  anyHitShader, and intersectionShader must be (4VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03476 If type is * then intersectionShader must be a valid index into ::pStages$ referring to a shader of &4VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03477 If type is * then intersectionShader must be (@VUID-VkRayTracingShaderGroupCreateInfoKHR-closestHitShader-03478 closestHitShader must be either ( or a valid index into ::pStages$ referring to a shader of &<VUID-VkRayTracingShaderGroupCreateInfoKHR-anyHitShader-03479  anyHitShader must be either ( or a valid index into ::pStages$ referring to a shader of &eVUID-VkRayTracingShaderGroupCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03603 If ::5rayTracingPipelineShaderGroupHandleCaptureReplayMixed is . then pShaderGroupCaptureReplayHandle mustj not be provided if it has not been provided on a previous call to ray tracing pipeline creationeVUID-VkRayTracingShaderGroupCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03604 If ::5rayTracingPipelineShaderGroupHandleCaptureReplayMixed 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)5VUID-VkRayTracingShaderGroupCreateInfoKHR-sType-sType sType must be F5VUID-VkRayTracingShaderGroupCreateInfoKHR-pNext-pNext pNext must be NULL8VUID-VkRayTracingShaderGroupCreateInfoKHR-type-parameter type must be a valid  valueSee Also, , CvulkanxVkRayTracingPipelineInterfaceCreateInfoKHR - Structure specifying additional interface information when using libraries DescriptionmaxPipelineRayPayloadSizeQ is calculated as the maximum number of bytes used by any block declared in the  RayPayloadKHR or IncomingRayPayloadKHR storage classes. maxPipelineRayHitAttributeSizeQ is calculated as the maximum number of bytes used by any block declared in the HitAttributeKHR storage class. 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.Note%There is no explicit upper limit for maxPipelineRayPayloadSize , but in practice it should be kept as small as possible. Similar to invocation local memory, it must be allocated for each shader invocation and for devices which support many simultaneous invocations, this storage can rapidly be exhausted, resulting in failure.Valid Usage (Implicit)See Also, CvulkanlVkRayTracingPipelineCreateInfoKHR - 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 j( 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  pLibraryInfod, 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.*The default stack size for a pipeline if / is not provided is computed as described in  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-pipeline-stackRay Tracing Pipeline Stack. Valid Usage2VUID-VkRayTracingPipelineCreateInfoKHR-flags-03421 If flags contains the j flag, and basePipelineIndex is -1, basePipelineHandle must) be a valid handle to a ray tracing  2VUID-VkRayTracingPipelineCreateInfoKHR-flags-03422 If flags contains the j flag, and basePipelineHandle is 8, basePipelineIndex must2 be a valid index into the calling command s  pCreateInfos parameter2VUID-VkRayTracingPipelineCreateInfoKHR-flags-03423 If flags contains the j flag, and basePipelineIndex is not -1, basePipelineHandle must be 82VUID-VkRayTracingPipelineCreateInfoKHR-flags-03424 If flags contains the j flag, and basePipelineHandle is not 8, basePipelineIndex must be -14VUID-VkRayTracingPipelineCreateInfoKHR-pStages-034269 The 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 chapter3VUID-VkRayTracingPipelineCreateInfoKHR-layout-03427 layout must be  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent$ with all shaders specified in pStages3VUID-VkRayTracingPipelineCreateInfoKHR-layout-03428! The number of resources in layoutC accessible to each shader stage that is used by the pipeline must be less than or equal to  ::maxPerStageResources2VUID-VkRayTracingPipelineCreateInfoKHR-flags-02904 flags must not include jIVUID-VkRayTracingPipelineCreateInfoKHR-pipelineCreationCacheControl-02905 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 j= or j>2VUID-VkRayTracingPipelineCreateInfoKHR-stage-03425 If flags does not include j , the stage# member of at least one element of pStages+, including those implicitly added by  pLibraryInfo, must be &IVUID-VkRayTracingPipelineCreateInfoKHR-maxPipelineRayRecursionDepth-03589 maxPipelineRayRecursionDepth must be less than or equal to ::maxRayRecursionDepth2VUID-VkRayTracingPipelineCreateInfoKHR-flags-03465 If flags includes j, pLibraryInterface must not be NULL9VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03590 If  pLibraryInfo is not NULL and its  libraryCount member is greater than 0, its pLibraryInterface member must not be NULL7VUID-VkRayTracingPipelineCreateInfoKHR-pLibraries-03591 Each element of the  pLibraries member of  pLibraryInfo must* have been created with the value of maxPipelineRayRecursionDepth$ equal to that in this pipeline9VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03592 If  pLibraryInfo is not NULL, each element of its  pLibraries member must have been created with a layout" that is compatible with the layout in this pipeline9VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03593 If  pLibraryInfo is not NULL, each element of its  pLibraries member must+ have been created with values of the maxPipelineRayPayloadSize and maxPipelineRayHitAttributeSize members of pLibraryInterface equal to those in this pipeline2VUID-VkRayTracingPipelineCreateInfoKHR-flags-03594 If flags includes j, each element of the  pLibraries member of  libraries must& have been created with the j bit set2VUID-VkRayTracingPipelineCreateInfoKHR-flags-04718 If flags includes j, each element of the  pLibraries member of  libraries must& have been created with the j bit set2VUID-VkRayTracingPipelineCreateInfoKHR-flags-04719 If flags includes j, each element of the  pLibraries member of  libraries must& have been created with the j bit set2VUID-VkRayTracingPipelineCreateInfoKHR-flags-04720 If flags includes j, each element of the  pLibraries member of  libraries must& have been created with the j bit set2VUID-VkRayTracingPipelineCreateInfoKHR-flags-04721 If flags includes j, each element of the  pLibraries member of  libraries must& have been created with the j bit set2VUID-VkRayTracingPipelineCreateInfoKHR-flags-04722 If flags includes j, each element of the  pLibraries member of  libraries must& have been created with the j bit set2VUID-VkRayTracingPipelineCreateInfoKHR-flags-04723 If flags includes j, each element of the  pLibraries member of  libraries must& have been created with the j bit set9VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03595 If the  VK_KHR_pipeline_library.htmlVK_KHR_pipeline_library extension is not enabled,  pLibraryInfo and pLibraryInterface must be NULL.2VUID-VkRayTracingPipelineCreateInfoKHR-flags-03470 If flags includes j, for any element of pGroups with a type of * or * , the  anyHitShader of that element must not be (2VUID-VkRayTracingPipelineCreateInfoKHR-flags-03471 If flags includes j, for any element of pGroups with a type of * or * , the closestHitShader of that element must not be (IVUID-VkRayTracingPipelineCreateInfoKHR-rayTraversalPrimitiveCulling-03596 If the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTraversalPrimitiveCullingrayTraversalPrimitiveCulling feature is not enabled, flags must not include jIVUID-VkRayTracingPipelineCreateInfoKHR-rayTraversalPrimitiveCulling-03597 If the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTraversalPrimitiveCullingrayTraversalPrimitiveCulling feature is not enabled, flags must not include j2VUID-VkRayTracingPipelineCreateInfoKHR-flags-03598 If flags includes j,  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipelineShaderGroupHandleCaptureReplay0rayTracingPipelineShaderGroupHandleCaptureReplay must be enabled]VUID-VkRayTracingPipelineCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplay-03599 If ::0rayTracingPipelineShaderGroupHandleCaptureReplay is . and the pShaderGroupCaptureReplayHandle member of any element of pGroups is not NULL, flags must include j9VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03600 If  pLibraryInfo is not NULL and its  libraryCount is 0,  stageCount must not be 09VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03601 If  pLibraryInfo is not NULL and its  libraryCount is 0,  groupCount must not be 0;VUID-VkRayTracingPipelineCreateInfoKHR-pDynamicStates-03602 Any element of the pDynamicStates member of  pDynamicState must be Valid Usage (Implicit)2VUID-VkRayTracingPipelineCreateInfoKHR-sType-sType sType must be E 2VUID-VkRayTracingPipelineCreateInfoKHR-pNext-pNext pNext must be NULL* or a pointer to a valid instance of 3VUID-VkRayTracingPipelineCreateInfoKHR-sType-unique The sType" value of each struct in the pNext chain must be unique6VUID-VkRayTracingPipelineCreateInfoKHR-flags-parameter flags must be a valid combination of j values8VUID-VkRayTracingPipelineCreateInfoKHR-pStages-parameter If  stageCount is not 0, pStages must( be a valid pointer to an array of  stageCount valid  structures8VUID-VkRayTracingPipelineCreateInfoKHR-pGroups-parameter If  groupCount is not 0, pGroups must( be a valid pointer to an array of  groupCount valid  structures=VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-parameter If  pLibraryInfo is not NULL,  pLibraryInfo must) be a valid pointer to a valid  structureBVUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInterface-parameter If pLibraryInterface is not NULL, pLibraryInterface must) be a valid pointer to a valid  structure>VUID-VkRayTracingPipelineCreateInfoKHR-pDynamicState-parameter If  pDynamicState is not NULL,  pDynamicState must) be a valid pointer to a valid  structure7VUID-VkRayTracingPipelineCreateInfoKHR-layout-parameter layout must be a valid } handle3VUID-VkRayTracingPipelineCreateInfoKHR-commonparent Both of basePipelineHandle, and layout7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Also, , , }, , , , , C, *vulkandVkPhysicalDeviceRayTracingPipelinePropertiesKHR - Properties of the physical device for ray tracing DescriptionIf the  structure is included in the pNext chain of T 9, 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 AlsoCvulkanVkPhysicalDeviceRayTracingPipelineFeaturesKHR - Structure describing the ray tracing features that can be supported by an implementationMembersThe members of the , structure describe the following features: Descriptionfeatures-rayTracingPipeline rayTracingPipelinej indicates whether the implementation supports the ray tracing pipeline functionality. See  Yhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing Ray Tracing.9features-rayTracingPipelineShaderGroupHandleCaptureReplay 0rayTracingPipelineShaderGroupHandleCaptureReplay indicates whether the implementation supports saving and reusing shader group handles, e.g. for trace capture and replay.>features-rayTracingPipelineShaderGroupHandleCaptureReplayMixed 5rayTracingPipelineShaderGroupHandleCaptureReplayMixed 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.,features-rayTracingPipelineTraceRaysIndirect #rayTracingPipelineTraceRaysIndirect[ indicates whether the implementation supports indirect trace ray commands, e.g. *.%features-rayTraversalPrimitiveCulling rayTraversalPrimitiveCulling9 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  2 to enable the features. Valid UsagenVUID-VkPhysicalDeviceRayTracingPipelineFeaturesKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03575 If 5rayTracingPipelineShaderGroupHandleCaptureReplayMixed is ., 0rayTracingPipelineShaderGroupHandleCaptureReplay must also be .Valid Usage (Implicit)>VUID-VkPhysicalDeviceRayTracingPipelineFeaturesKHR-sType-sType sType must be CSee Alsop, C*mvulkanmaxPipelineRayPayloadSizeJ is the maximum payload size in bytes used by any shader in the pipeline.*nvulkanmaxPipelineRayHitAttributeSizeV is the maximum attribute structure size in bytes used by any shader in the pipeline.TVUID-VkRayTracingPipelineInterfaceCreateInfoKHR-maxPipelineRayHitAttributeSize-03605 maxPipelineRayHitAttributeSize must be less than or equal to ::maxRayHitAttributeSize*pvulkanwidth0 is the width of the ray trace query dimensions..VUID-VkTraceRaysIndirectCommandKHR-width-03638 width must be less than or equal to  ::maxComputeWorkGroupCount[0]  ::maxComputeWorkGroupSize[0].VUID-VkTraceRaysIndirectCommandKHR-width-03641 width height depth must be less than or equal to ::maxRayDispatchInvocationCount*qvulkanheight- is height of the ray trace query dimensions./VUID-VkTraceRaysIndirectCommandKHR-height-03639 height must be less than or equal to  ::maxComputeWorkGroupCount[1]  ::maxComputeWorkGroupSize[1]*rvulkandepth, is depth of the ray trace query dimensions..VUID-VkTraceRaysIndirectCommandKHR-depth-03640 depth must be less than or equal to  ::maxComputeWorkGroupCount[2]  ::maxComputeWorkGroupSize[2]*tvulkan deviceAddress, is the device address (as returned by the b#G command) at which the region starts, or zero if the region is unused.*uvulkanstride1 is the byte stride between consecutive elements.*vvulkansize0 is the size in bytes of the region starting at  deviceAddress.*xvulkanshaderGroupHandleSize$ size in bytes of the shader header.*yvulkanlimits-maxRayRecursionDepth maxRayRecursionDepthN is the maximum number of levels of ray recursion allowed in a trace command.*zvulkanmaxShaderGroupStride[ is the maximum stride in bytes allowed between shader groups in the shader binding table.*{vulkanshaderGroupBaseAlignment is the required> alignment in bytes for the base of the shader binding table.*|vulkan"shaderGroupHandleCaptureReplaySizeh is the number of bytes for the information required to do capture and replay for shader group handles.*}vulkanmaxRayDispatchInvocationCountC is the maximum number of ray generation shader invocations which may be produced by a single * or * command.*~vulkanshaderGroupHandleAlignment is the required9 alignment in bytes for each shader binding table entry.*vulkanmaxRayHitAttributeSize< is the maximum size in bytes for a ray attribute structure*vulkanpNext is NULL6 or a pointer to a structure extending this structure.*vulkanflags is a bitmask of j0 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.*vulkanmaxPipelineRayRecursionDepth 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 pLibraryInfo is a pointer to a 3 structure defining pipeline libraries to include.*vulkanpLibraryInterface is a pointer to a J structure defining additional information when using pipeline libraries.*vulkan 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.*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 ::0rayTracingPipelineShaderGroupHandleCaptureReplay is ..*vulkan*. uses the shader specified in the group with ::intersectionShader*vulkan*. uses the shader specified in the group with :: anyHitShader*vulkan*. uses the shader specified in the group with ::closestHitShader*vulkan*. uses the shader specified in the group with :: generalShader*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.*vulkan5vkCmdTraceRaysKHR - Initialize a ray tracing dispatch Description8When the command is executed, a ray generation group of width height depth rays is assembled. Valid Usage&VUID-vkCmdTraceRaysKHR-magFilter-04553 If a / created with  magFilter or  minFilter equal to  and  compareEnable equal to . is used to sample a /> 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 {'<'VUID-vkCmdTraceRaysKHR-mipmapMode-04770 If a / created with  mipmapMode equal to 8 and  compareEnable equal to . is used to sample a /> 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 {'!VUID-vkCmdTraceRaysKHR-None-02691 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 {x!VUID-vkCmdTraceRaysKHR-None-02692 If 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 (VUID-vkCmdTraceRaysKHR-filterCubic-02694 Any / being sampled with " as a result of this command must have a tyE and format that supports cubic filtering, as specified by f:: filterCubic returned by T.VUID-vkCmdTraceRaysKHR-filterCubicMinmax-02695 Any / being sampled with + with a reduction mode of either +z or +{" as a result of this command must have a tyi and format that supports cubic filtering together with minmax filtering, as specified by f::filterCubicMinmax returned by T"VUID-vkCmdTraceRaysKHR-flags-02696 Any /  created with a 0::flags containing * sampled as a result of this command must only be sampled using a 9| of 9}!VUID-vkCmdTraceRaysKHR-None-02697 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 n. 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???!VUID-vkCmdTraceRaysKHR-None-02698< For each push constant that is statically used by the X bound to the pipeline bind point used by this command, a push constant value must= 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???!VUID-vkCmdTraceRaysKHR-None-02699C 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 command!VUID-vkCmdTraceRaysKHR-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command*VUID-vkCmdTraceRaysKHR-commandBuffer-02701 If 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 dynamic!VUID-vkCmdTraceRaysKHR-None-02859 There musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the f object bound to the pipeline bind point used by this command, since that pipeline was bound!VUID-vkCmdTraceRaysKHR-None-02702 If the S object bound to the pipeline bind point used by this command accesses a /> object that uses unnormalized coordinates, that sampler must% not be used to sample from any /  with a / of the type t~, t, t, t or t, in any shader stage!VUID-vkCmdTraceRaysKHR-None-02703 If the S object bound to the pipeline bind point used by this command accesses 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 stage!VUID-vkCmdTraceRaysKHR-None-02704 If the S object bound to the pipeline bind point used by this command accesses 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!VUID-vkCmdTraceRaysKHR-None-02705 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!VUID-vkCmdTraceRaysKHR-None-02706 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 point*VUID-vkCmdTraceRaysKHR-commandBuffer-02707 If  commandBufferJ 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 resource!VUID-vkCmdTraceRaysKHR-None-04115 If 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.)VUID-vkCmdTraceRaysKHR-OpImageWrite-04469 If a / is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction mustC have at least as many components as the buffer view s format.(VUID-vkCmdTraceRaysKHR-SampledType-04470 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.(VUID-vkCmdTraceRaysKHR-SampledType-04471 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.(VUID-vkCmdTraceRaysKHR-SampledType-04472 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.(VUID-vkCmdTraceRaysKHR-SampledType-04473 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.4VUID-vkCmdTraceRaysKHR-sparseImageInt64Atomics-04474 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, / $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.4VUID-vkCmdTraceRaysKHR-sparseImageInt64Atomics-04475 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, /$ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.!VUID-vkCmdTraceRaysKHR-None-034296 Any shader group handle referenced by this call mustL have been queried from the currently bound ray tracing shader pipeline9VUID-vkCmdTraceRaysKHR-maxPipelineRayRecursionDepth-03679 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 maxPipelineRayRecursionDepth3 used to create the bound ray tracing pipeline6VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03680 If the buffer from which (pRayGenShaderBindingTable->deviceAddress( was queried is non-sparse then it must7 be bound completely and contiguously to a single / object6VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03681 The buffer from which the (pRayGenShaderBindingTable->deviceAddress is queried must! have been created with the  usage flag6VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03682 (pRayGenShaderBindingTable->deviceAddress must be a multiple of ::shaderGroupBaseAlignment!VUID-vkCmdTraceRaysKHR-size-04023 The size member of pRayGenShaderBindingTable must be equal to its stride member4VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03683 If the buffer from which &pMissShaderBindingTable->deviceAddress( was queried is non-sparse then it must7 be bound completely and contiguously to a single / object4VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03684 The buffer from which the &pMissShaderBindingTable->deviceAddress is queried must! have been created with the  usage flag4VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03685 &pMissShaderBindingTable->deviceAddress must be a multiple of ::shaderGroupBaseAlignment#VUID-vkCmdTraceRaysKHR-stride-03686 The stride member of pMissShaderBindingTable must be a multiple of ::shaderGroupHandleAlignment#VUID-vkCmdTraceRaysKHR-stride-04029 The stride member of pMissShaderBindingTable must be less than or equal to ::maxShaderGroupStride3VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03687 If the buffer from which %pHitShaderBindingTable->deviceAddress( was queried is non-sparse then it must7 be bound completely and contiguously to a single / object3VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03688 The buffer from which the %pHitShaderBindingTable->deviceAddress is queried must! have been created with the  usage flag3VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03689 %pHitShaderBindingTable->deviceAddress must be a multiple of ::shaderGroupBaseAlignment#VUID-vkCmdTraceRaysKHR-stride-03690 The stride member of pHitShaderBindingTable must be a multiple of ::shaderGroupHandleAlignment#VUID-vkCmdTraceRaysKHR-stride-04035 The stride member of pHitShaderBindingTable must be less than or equal to ::maxShaderGroupStride8VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03691 If the buffer from which *pCallableShaderBindingTable->deviceAddress( was queried is non-sparse then it must7 be bound completely and contiguously to a single / object8VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03692 The buffer from which the *pCallableShaderBindingTable->deviceAddress is queried must! have been created with the  usage flag8VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03693 *pCallableShaderBindingTable->deviceAddress must be a multiple of ::shaderGroupBaseAlignment#VUID-vkCmdTraceRaysKHR-stride-03694 The stride member of pCallableShaderBindingTable must be a multiple of ::shaderGroupHandleAlignment#VUID-vkCmdTraceRaysKHR-stride-04041 The stride member of pCallableShaderBindingTable must be less than or equal to ::maxShaderGroupStride"VUID-vkCmdTraceRaysKHR-flags-03696C If the currently bound ray tracing pipeline was created with flags that included j , the  deviceAddress member of pHitShaderBindingTable must not be zero"VUID-vkCmdTraceRaysKHR-flags-03697C If the currently bound ray tracing pipeline was created with flags that included j , the  deviceAddress member of pHitShaderBindingTable must not be zero"VUID-vkCmdTraceRaysKHR-flags-03511C If the currently bound ray tracing pipeline was created with flags that included j-, the shader group handle identified by pMissShaderBindingTable must contain a valid miss shader"VUID-vkCmdTraceRaysKHR-flags-03512C If the currently bound ray tracing pipeline was created with flags that included j, entries in pHitShaderBindingTableQ accessed as a result of this command in order to execute an any-hit shader must not be set to zero"VUID-vkCmdTraceRaysKHR-flags-03513C If the currently bound ray tracing pipeline was created with flags that included j, entries in pHitShaderBindingTableT accessed as a result of this command in order to execute a closest hit shader must not be set to zero"VUID-vkCmdTraceRaysKHR-flags-03514C If the currently bound ray tracing pipeline was created with flags that included j, entries in pHitShaderBindingTableV accessed as a result of this command in order to execute an intersection shader must not be set to zero3VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-04735( Any non-zero hit group entries in pHitShaderBindingTable3 accessed by this call from a geometry with a  geometryType of  must have been created with *3VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-04736( Any non-zero hit group entries in pHitShaderBindingTable3 accessed by this call from a geometry with a  geometryType of   must have been created with **VUID-vkCmdTraceRaysKHR-commandBuffer-04625  commandBuffer must' not be a protected command buffer"VUID-vkCmdTraceRaysKHR-width-03626 width must$ be less than or equal to  ::maxComputeWorkGroupCount[0]  ::maxComputeWorkGroupSize[0]#VUID-vkCmdTraceRaysKHR-height-03627 height must$ be less than or equal to  ::maxComputeWorkGroupCount[1]  ::maxComputeWorkGroupSize[1]"VUID-vkCmdTraceRaysKHR-depth-03628 depth must$ be less than or equal to  ::maxComputeWorkGroupCount[2]  ::maxComputeWorkGroupSize[2]"VUID-vkCmdTraceRaysKHR-width-03629 width height depth must be less than or equal to ::maxRayDispatchInvocationCountValid Usage (Implicit).VUID-vkCmdTraceRaysKHR-commandBuffer-parameter  commandBuffer must be a valid  handle:VUID-vkCmdTraceRaysKHR-pRaygenShaderBindingTable-parameter pRaygenShaderBindingTable must$ be a valid pointer to a valid  structure8VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-parameter pMissShaderBindingTable must$ be a valid pointer to a valid  structure7VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-parameter pHitShaderBindingTable must$ be a valid pointer to a valid  structure<VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-parameter pCallableShaderBindingTable must$ be a valid pointer to a valid  structure.VUID-vkCmdTraceRaysKHR-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state,VUID-vkCmdTraceRaysKHR-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support compute operations!VUID-vkCmdTraceRaysKHR-renderpass This command must6 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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 Usage8VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-04619 pipeline must be a ray tracing pipeline:VUID-vkGetRayTracingShaderGroupHandlesKHR-firstGroup-04050  firstGroup must2 be less than the number of shader groups in pipeline:VUID-vkGetRayTracingShaderGroupHandlesKHR-firstGroup-02419 The sum of  firstGroup and  groupCount must> be less than or equal to the number of shader groups in pipeline8VUID-vkGetRayTracingShaderGroupHandlesKHR-dataSize-02420 dataSize must be at least ::shaderGroupHandleSize  groupCount8VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-03482 pipeline must! have not been created with jValid Usage (Implicit):VUID-vkGetRayTracingShaderGroupHandlesKHR-device-parameter device must be a valid  handle<VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-parameter pipeline must be a valid  handle9VUID-vkGetRayTracingShaderGroupHandlesKHR-pData-parameter pData must# be a valid pointer to an array of dataSize bytes>VUID-vkGetRayTracingShaderGroupHandlesKHR-dataSize-arraylength dataSize must be greater than 09VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-parent pipeline 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, *vulkansvkGetRayTracingCaptureReplayShaderGroupHandlesKHR - Query ray tracing capture replay pipeline shader group handles Valid UsageEVUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-04620 pipeline must be a ray tracing pipelineGVUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-firstGroup-04051  firstGroup must2 be less than the number of shader groups in pipelineGVUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-firstGroup-03483 The sum of  firstGroup and  groupCount must> be less than or equal to the number of shader groups in pipelineEVUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-dataSize-03484 dataSize must be at least ::"shaderGroupHandleCaptureReplaySize  groupCountmVUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-rayTracingPipelineShaderGroupHandleCaptureReplay-03606 ::0rayTracingPipelineShaderGroupHandleCaptureReplay must! be enabled to call this functionEVUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-03607 pipeline must have been created with a flags that included jValid Usage (Implicit)GVUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-device-parameter device must be a valid  handleIVUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-parameter pipeline must be a valid  handleFVUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pData-parameter pData must# be a valid pointer to an array of dataSize bytesKVUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-dataSize-arraylength dataSize must be greater than 0FVUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-parent pipeline 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See 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 ::0rayTracingPipelineShaderGroupHandleCaptureReplay is enabled. Valid Usage/VUID-vkCreateRayTracingPipelinesKHR-flags-03415 If the flags member of any element of  pCreateInfos contains the j 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 element/VUID-vkCreateRayTracingPipelinesKHR-flags-03416 If the flags member of any element of  pCreateInfos contains the j flag, the base pipeline must! have been created with the j! flag set/VUID-vkCreateRayTracingPipelinesKHR-flags-03816 flags must not contain the J flag7VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-02903 If  pipelineCache was created with m?, host access to  pipelineCache must be lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehaviorexternally synchronized;VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-03677 If deferredOperation is not 8 , it must be a valid S object;VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-03678D Any previous deferred operation that was associated with deferredOperation must be complete<VUID-vkCreateRayTracingPipelinesKHR-rayTracingPipeline-03586 The  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipelinerayTracingPipeline feature must be enabled;VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-03587 If deferredOperation is not 8 , the flags member of elements of  pCreateInfos must not include j>Valid Usage (Implicit)4VUID-vkCreateRayTracingPipelinesKHR-device-parameter device must be a valid  handle?VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-parameter If deferredOperation is not 8, deferredOperation must be a valid S handle;VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-parameter If  pipelineCache is not 8,  pipelineCache must be a valid ~ handle:VUID-vkCreateRayTracingPipelinesKHR-pCreateInfos-parameter  pCreateInfos must( be a valid pointer to an array of createInfoCount valid  structures8VUID-vkCreateRayTracingPipelinesKHR-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure8VUID-vkCreateRayTracingPipelinesKHR-pPipelines-parameter  pPipelines must( be a valid pointer to an array of createInfoCount  handles?VUID-vkCreateRayTracingPipelinesKHR-createInfoCount-arraylength createInfoCount must be greater than 0<VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-parent If deferredOperation is a valid handle, it must6 have been created, allocated, or retrieved from device8VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-parent If  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-successcodesSuccessF123  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?$See Also, S, , , ~, *vulkan=A convenience wrapper to make a compatible pair of calls to * and )DTo ensure that )D is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.*vulkanGvkCmdTraceRaysIndirectKHR - Initialize an indirect ray tracing dispatch Description* behaves similarly to *J except that the ray trace query dimensions are read by the device from indirectDeviceAddress during execution. Valid Usage.VUID-vkCmdTraceRaysIndirectKHR-magFilter-04553 If a / created with  magFilter or  minFilter equal to  and  compareEnable equal to . is used to sample a /> 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 {'=/VUID-vkCmdTraceRaysIndirectKHR-mipmapMode-04770 If a / created with  mipmapMode equal to 8 and  compareEnable equal to . is used to sample a /> 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 {')VUID-vkCmdTraceRaysIndirectKHR-None-02691 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 {x)VUID-vkCmdTraceRaysIndirectKHR-None-02692 If 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 0VUID-vkCmdTraceRaysIndirectKHR-filterCubic-02694 Any / being sampled with " as a result of this command must have a tyE and format that supports cubic filtering, as specified by f:: filterCubic returned by T6VUID-vkCmdTraceRaysIndirectKHR-filterCubicMinmax-02695 Any / being sampled with + with a reduction mode of either +z or +{" as a result of this command must have a tyi and format that supports cubic filtering together with minmax filtering, as specified by f::filterCubicMinmax returned by T*VUID-vkCmdTraceRaysIndirectKHR-flags-02696 Any /  created with a 0::flags containing * sampled as a result of this command must only be sampled using a 9| of 9})VUID-vkCmdTraceRaysIndirectKHR-None-02697 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 n. 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???)VUID-vkCmdTraceRaysIndirectKHR-None-02698< For each push constant that is statically used by the X bound to the pipeline bind point used by this command, a push constant value must= have been set for the same pipeline bind point, with a }; 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???)VUID-vkCmdTraceRaysIndirectKHR-None-02699C 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 command)VUID-vkCmdTraceRaysIndirectKHR-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command2VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02701 If 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 dynamic)VUID-vkCmdTraceRaysIndirectKHR-None-02859 There musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the f object bound to the pipeline bind point used by this command, since that pipeline was bound)VUID-vkCmdTraceRaysIndirectKHR-None-02702 If the S object bound to the pipeline bind point used by this command accesses a /> object that uses unnormalized coordinates, that sampler must% not be used to sample from any /  with a / of the type t~, t, t, t or t, in any shader stage)VUID-vkCmdTraceRaysIndirectKHR-None-02703 If the S object bound to the pipeline bind point used by this command accesses 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 stage)VUID-vkCmdTraceRaysIndirectKHR-None-02704 If the S object bound to the pipeline bind point used by this command accesses 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)VUID-vkCmdTraceRaysIndirectKHR-None-02705 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)VUID-vkCmdTraceRaysIndirectKHR-None-02706 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 point2VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02707 If  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 resource)VUID-vkCmdTraceRaysIndirectKHR-None-04115 If 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.1VUID-vkCmdTraceRaysIndirectKHR-OpImageWrite-04469 If a / is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction mustC have at least as many components as the buffer view s format.0VUID-vkCmdTraceRaysIndirectKHR-SampledType-04470 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.0VUID-vkCmdTraceRaysIndirectKHR-SampledType-04471 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.0VUID-vkCmdTraceRaysIndirectKHR-SampledType-04472 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.0VUID-vkCmdTraceRaysIndirectKHR-SampledType-04473 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.<VUID-vkCmdTraceRaysIndirectKHR-sparseImageInt64Atomics-04474 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, / $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.<VUID-vkCmdTraceRaysIndirectKHR-sparseImageInt64Atomics-04475 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, /$ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.)VUID-vkCmdTraceRaysIndirectKHR-None-034296 Any shader group handle referenced by this call mustL have been queried from the currently bound ray tracing shader pipelineAVUID-vkCmdTraceRaysIndirectKHR-maxPipelineRayRecursionDepth-03679 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 maxPipelineRayRecursionDepth3 used to create the bound ray tracing pipeline>VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03680 If the buffer from which (pRayGenShaderBindingTable->deviceAddress( was queried is non-sparse then it must7 be bound completely and contiguously to a single / object>VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03681 The buffer from which the (pRayGenShaderBindingTable->deviceAddress is queried must! have been created with the  usage flag>VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03682 (pRayGenShaderBindingTable->deviceAddress must be a multiple of ::shaderGroupBaseAlignment)VUID-vkCmdTraceRaysIndirectKHR-size-04023 The size member of pRayGenShaderBindingTable must be equal to its stride member<VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-03683 If the buffer from which &pMissShaderBindingTable->deviceAddress( was queried is non-sparse then it must7 be bound completely and contiguously to a single / object<VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-03684 The buffer from which the &pMissShaderBindingTable->deviceAddress is queried must! have been created with the  usage flag<VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-03685 &pMissShaderBindingTable->deviceAddress must be a multiple of ::shaderGroupBaseAlignment+VUID-vkCmdTraceRaysIndirectKHR-stride-03686 The stride member of pMissShaderBindingTable must be a multiple of ::shaderGroupHandleAlignment+VUID-vkCmdTraceRaysIndirectKHR-stride-04029 The stride member of pMissShaderBindingTable must be less than or equal to ::maxShaderGroupStride;VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03687 If the buffer from which %pHitShaderBindingTable->deviceAddress( was queried is non-sparse then it must7 be bound completely and contiguously to a single / object;VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03688 The buffer from which the %pHitShaderBindingTable->deviceAddress is queried must! have been created with the  usage flag;VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03689 %pHitShaderBindingTable->deviceAddress must be a multiple of ::shaderGroupBaseAlignment+VUID-vkCmdTraceRaysIndirectKHR-stride-03690 The stride member of pHitShaderBindingTable must be a multiple of ::shaderGroupHandleAlignment+VUID-vkCmdTraceRaysIndirectKHR-stride-04035 The stride member of pHitShaderBindingTable must be less than or equal to ::maxShaderGroupStride@VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03691$ If the buffer from which *pCallableShaderBindingTable->deviceAddress( was queried is non-sparse then it must7 be bound completely and contiguously to a single / object@VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03692% The buffer from which the *pCallableShaderBindingTable->deviceAddress is queried must& have been created with the  usage flag@VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03693 *pCallableShaderBindingTable->deviceAddress must be a multiple of ::shaderGroupBaseAlignment+VUID-vkCmdTraceRaysIndirectKHR-stride-03694 The stride member of pCallableShaderBindingTable must be a multiple of ::shaderGroupHandleAlignment+VUID-vkCmdTraceRaysIndirectKHR-stride-04041 The stride member of pCallableShaderBindingTable must be less than or equal to ::maxShaderGroupStride*VUID-vkCmdTraceRaysIndirectKHR-flags-03696C If the currently bound ray tracing pipeline was created with flags that included j , the  deviceAddress member of pHitShaderBindingTable must not be zero*VUID-vkCmdTraceRaysIndirectKHR-flags-03697C If the currently bound ray tracing pipeline was created with flags that included j , the  deviceAddress member of pHitShaderBindingTable must not be zero*VUID-vkCmdTraceRaysIndirectKHR-flags-03511C If the currently bound ray tracing pipeline was created with flags that included j-, the shader group handle identified by pMissShaderBindingTable must contain a valid miss shader*VUID-vkCmdTraceRaysIndirectKHR-flags-03512C If the currently bound ray tracing pipeline was created with flags that included j, entries in pHitShaderBindingTableQ accessed as a result of this command in order to execute an any-hit shader must not be set to zero*VUID-vkCmdTraceRaysIndirectKHR-flags-03513C If the currently bound ray tracing pipeline was created with flags that included j, entries in pHitShaderBindingTableT accessed as a result of this command in order to execute a closest hit shader must not be set to zero*VUID-vkCmdTraceRaysIndirectKHR-flags-03514C If the currently bound ray tracing pipeline was created with flags that included j, entries in pHitShaderBindingTableV accessed as a result of this command in order to execute an intersection shader must not be set to zero;VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-04735( Any non-zero hit group entries in pHitShaderBindingTable3 accessed by this call from a geometry with a  geometryType of  must have been created with *;VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-04736( Any non-zero hit group entries in pHitShaderBindingTable3 accessed by this call from a geometry with a  geometryType of   must have been created with *:VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03632 If the buffer from which indirectDeviceAddress( was queried is non-sparse then it must7 be bound completely and contiguously to a single / object:VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03633 The buffer from which indirectDeviceAddress was queried must& have been created with the  bit set:VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03634 indirectDeviceAddress must be a multiple of 42VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-03635  commandBuffer must" not be a protected command buffer:VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03636# All device addresses between indirectDeviceAddress and indirectDeviceAddress + sizeof( ) - 1 must9 be in the buffer device address range of the same bufferHVUID-vkCmdTraceRaysIndirectKHR-rayTracingPipelineTraceRaysIndirect-03637 the  zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipelineTraceRaysIndirect%::rayTracingPipelineTraceRaysIndirect feature must be enabledValid Usage (Implicit)6VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-parameter  commandBuffer must be a valid  handleBVUID-vkCmdTraceRaysIndirectKHR-pRaygenShaderBindingTable-parameter pRaygenShaderBindingTable must$ be a valid pointer to a valid  structure@VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-parameter pMissShaderBindingTable must$ be a valid pointer to a valid  structure?VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-parameter pHitShaderBindingTable must$ be a valid pointer to a valid  structureDVUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-parameter pCallableShaderBindingTable must$ be a valid pointer to a valid  structure6VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state4VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support compute operations)VUID-vkCmdTraceRaysIndirectKHR-renderpass This command must6 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, o, *vulkancvkGetRayTracingShaderGroupStackSizeKHR - Query ray tracing pipeline shader group shader stack size DescriptionThe return value is the ray tracing pipeline stack size in bytes for the specified shader as called from the specified shader group. Valid Usage:VUID-vkGetRayTracingShaderGroupStackSizeKHR-pipeline-04622 pipeline must be a ray tracing pipeline7VUID-vkGetRayTracingShaderGroupStackSizeKHR-group-03608 The value of group7 must be less than the number of shader groups in pipeline=VUID-vkGetRayTracingShaderGroupStackSizeKHR-groupShader-03609 The shader identified by  groupShader in group must not be (Valid Usage (Implicit)<VUID-vkGetRayTracingShaderGroupStackSizeKHR-device-parameter device must be a valid  handle>VUID-vkGetRayTracingShaderGroupStackSizeKHR-pipeline-parameter pipeline must be a valid  handleAVUID-vkGetRayTracingShaderGroupStackSizeKHR-groupShader-parameter  groupShader must be a valid  value;VUID-vkGetRayTracingShaderGroupStackSizeKHR-pipeline-parent pipeline must6 have been created, allocated, or retrieved from deviceSee Also, , *vulkan_vkCmdSetRayTracingPipelineStackSizeKHR - Set the dynamic stack size for a ray tracing pipeline DescriptionSee  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-pipeline-stackRay Tracing Pipeline Stack for more on computing pipelineStackSize. Valid UsageCVUID-vkCmdSetRayTracingPipelineStackSizeKHR-pipelineStackSize-03610 pipelineStackSize must be large enough for any dynamic execution through the shaders in the ray tracing pipeline used by a subsequent trace callValid Usage (Implicit)CVUID-vkCmdSetRayTracingPipelineStackSizeKHR-commandBuffer-parameter  commandBuffer must be a valid  handleCVUID-vkCmdSetRayTracingPipelineStackSizeKHR-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateAVUID-vkCmdSetRayTracingPipelineStackSizeKHR-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support compute operations6VUID-vkCmdSetRayTracingPipelineStackSizeKHR-renderpass This command must1 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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 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 x::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.vulkandeferredOperation is an optional S to  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations-requestingrequest deferral for this command.vulkan pipelineCache is either 8K, 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.vulkanindirectDeviceAddress/ is a buffer device address which points to a 4 structure which contains the trace ray parameters.*vulkandevice; is the logical device containing the ray tracing pipeline.vulkanpipelineC is the ray tracing pipeline object containing the shaders groups.vulkangroup+ is the index of the shader group to query.vulkan groupShader/ is the type of shader from the group to query.*vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanpipelineStackSizeE is the stack size to use for subsequent ray tracing trace commands.RS****k*****j*o*p*q*r*s*v*u*t********l*m*n*************w*x*y*z*{*|*}*~*******(B*h*i**********Y**********************************w*x*y*z*{*|*}*~**s*v*u*t*o*p*q*r*l*m*n****k********j*****i**h*S(BNone("#%&'-./1789;=>?FHIMSUVX_dghklmqISJvulkanjVkWriteDescriptorSetAccelerationStructureNV - Structure specifying acceleration structure descriptor info Valid UsageQVUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-03747 accelerationStructureCount must be equal to descriptorCount in the extended structureNVUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-03748% Each acceleration structure in pAccelerationStructures must" have been created with %NVUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-03749 If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor- feature is not enabled, each member of pAccelerationStructures must not be 8Valid Usage (Implicit)<VUID-VkWriteDescriptorSetAccelerationStructureNV-sType-sType sType must be _RVUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-parameter pAccelerationStructures must( be a valid pointer to an array of accelerationStructureCount valid or 8 V handlesWVUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-arraylength accelerationStructureCount must be greater than 0See AlsoV, CKvulkanUVkRayTracingShaderGroupCreateInfoNV - Structure specifying shaders in a shader group Valid Usage3VUID-VkRayTracingShaderGroupCreateInfoNV-type-02413 If type is +J then  generalShader must be a valid index into L::pStages referring to a shader of +W, +T , or +R3VUID-VkRayTracingShaderGroupCreateInfoNV-type-02414 If type is +J then closestHitShader,  anyHitShader, and intersectionShader must be "3VUID-VkRayTracingShaderGroupCreateInfoNV-type-02415 If type is +H then intersectionShader must be a valid index into L::pStages referring to a shader of +S3VUID-VkRayTracingShaderGroupCreateInfoNV-type-02416 If type is +I then intersectionShader must be "?VUID-VkRayTracingShaderGroupCreateInfoNV-closestHitShader-02417 closestHitShader must be either " or a valid index into L::pStages referring to a shader of +U;VUID-VkRayTracingShaderGroupCreateInfoNV-anyHitShader-02418  anyHitShader must be either " or a valid index into L::pStages referring to a shader of +VValid Usage (Implicit)4VUID-VkRayTracingShaderGroupCreateInfoNV-sType-sType sType must be b4VUID-VkRayTracingShaderGroupCreateInfoNV-pNext-pNext pNext must be NULL7VUID-VkRayTracingShaderGroupCreateInfoNV-type-parameter type must be a valid  valueSee AlsoL, , CLvulkankVkRayTracingPipelineCreateInfoNV - 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 Usage1VUID-VkRayTracingPipelineCreateInfoNV-flags-03421 If flags contains the j flag, and basePipelineIndex is -1, basePipelineHandle must) be a valid handle to a ray tracing 1VUID-VkRayTracingPipelineCreateInfoNV-flags-03422 If flags contains the j flag, and basePipelineHandle is 8, basePipelineIndex must2 be a valid index into the calling command s  pCreateInfos parameter1VUID-VkRayTracingPipelineCreateInfoNV-flags-03423 If flags contains the j flag, and basePipelineIndex is not -1, basePipelineHandle must be 81VUID-VkRayTracingPipelineCreateInfoNV-flags-03424 If flags contains the j flag, and basePipelineHandle is not 8, basePipelineIndex must be -13VUID-VkRayTracingPipelineCreateInfoNV-pStages-034269 The 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 chapter2VUID-VkRayTracingPipelineCreateInfoNV-layout-03427 layout must be  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent$ with all shaders specified in pStages2VUID-VkRayTracingPipelineCreateInfoNV-layout-03428! The number of resources in layoutC accessible to each shader stage that is used by the pipeline must be less than or equal to  ::maxPerStageResources1VUID-VkRayTracingPipelineCreateInfoNV-flags-02904 flags must not include jHVUID-VkRayTracingPipelineCreateInfoNV-pipelineCreationCacheControl-02905 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 j= or j>1VUID-VkRayTracingPipelineCreateInfoNV-stage-03425 The stage( member of at least one element of pStages must be  61VUID-VkRayTracingPipelineCreateInfoNV-flags-03456 flags must not include j=VUID-VkRayTracingPipelineCreateInfoNV-maxRecursionDepth-03457 maxRecursionDepth must be less than or equal to M::maxRecursionDepth1VUID-VkRayTracingPipelineCreateInfoNV-flags-03458 flags must not include j1VUID-VkRayTracingPipelineCreateInfoNV-flags-03459 flags must not include j1VUID-VkRayTracingPipelineCreateInfoNV-flags-03460 flags must not include j1VUID-VkRayTracingPipelineCreateInfoNV-flags-03461 flags must not include j1VUID-VkRayTracingPipelineCreateInfoNV-flags-03462 flags must not include j1VUID-VkRayTracingPipelineCreateInfoNV-flags-03463 flags must not include j1VUID-VkRayTracingPipelineCreateInfoNV-flags-03588 flags must not include j1VUID-VkRayTracingPipelineCreateInfoNV-flags-02957 flags must not include both j# and j= at the same timeValid Usage (Implicit)1VUID-VkRayTracingPipelineCreateInfoNV-sType-sType sType must be Y 1VUID-VkRayTracingPipelineCreateInfoNV-pNext-pNext pNext must be NULL* or a pointer to a valid instance of 2VUID-VkRayTracingPipelineCreateInfoNV-sType-unique The sType" value of each struct in the pNext chain must be unique5VUID-VkRayTracingPipelineCreateInfoNV-flags-parameter flags must be a valid combination of j values7VUID-VkRayTracingPipelineCreateInfoNV-pStages-parameter pStages must# be a valid pointer to an array of  stageCount valid  structures7VUID-VkRayTracingPipelineCreateInfoNV-pGroups-parameter pGroups must# be a valid pointer to an array of  groupCount valid K structures6VUID-VkRayTracingPipelineCreateInfoNV-layout-parameter layout must be a valid } handle<VUID-VkRayTracingPipelineCreateInfoNV-stageCount-arraylength  stageCount must be greater than 0<VUID-VkRayTracingPipelineCreateInfoNV-groupCount-arraylength  groupCount must be greater than 02VUID-VkRayTracingPipelineCreateInfoNV-commonparent Both of basePipelineHandle, and layout7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Also, , }, , K, C, +cMvulkan[VkPhysicalDeviceRayTracingPropertiesNV - Properties of the physical device for ray tracing DescriptionIf the M structure is included in the pNext chain of T 9, it is filled with the implementation-dependent limits.#Limits specified by this structure must/ match those specified with the same name in  and .Valid Usage (Implicit)See AlsoCNvulkanjVkGeometryTrianglesNV - Structure specifying a triangle geometry in a bottom-level acceleration structure DescriptionIf  indexType is +KB, 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-VUID-VkGeometryTrianglesNV-vertexOffset-02428  vertexOffset must be less than the size of  vertexData -VUID-VkGeometryTrianglesNV-vertexOffset-02429  vertexOffset must( be a multiple of the component size of  vertexFormat-VUID-VkGeometryTrianglesNV-vertexFormat-02430  vertexFormat must be one of $, %, &, ', ( , or )-VUID-VkGeometryTrianglesNV-vertexStride-03818  vertexStride must be less than or equal to 232-1,VUID-VkGeometryTrianglesNV-indexOffset-02431  indexOffset must be less than the size of  indexData,VUID-VkGeometryTrianglesNV-indexOffset-02432  indexOffset must+ be a multiple of the element size of  indexType*VUID-VkGeometryTrianglesNV-indexType-02433  indexType must be ,  , or +K*VUID-VkGeometryTrianglesNV-indexData-02434  indexData must be 8 if  indexType is +K*VUID-VkGeometryTrianglesNV-indexData-02435  indexData must be a valid  handle if  indexType is not +K+VUID-VkGeometryTrianglesNV-indexCount-02436  indexCount must be 0 if  indexType is +K0VUID-VkGeometryTrianglesNV-transformOffset-02437 transformOffset must be less than the size of  transformData0VUID-VkGeometryTrianglesNV-transformOffset-02438 transformOffset must be a multiple of 16Valid Usage (Implicit)&VUID-VkGeometryTrianglesNV-sType-sType sType must be \&VUID-VkGeometryTrianglesNV-pNext-pNext pNext must be NULL/VUID-VkGeometryTrianglesNV-vertexData-parameter If  vertexData is not 8,  vertexData must be a valid  handle1VUID-VkGeometryTrianglesNV-vertexFormat-parameter  vertexFormat must be a valid K value.VUID-VkGeometryTrianglesNV-indexData-parameter If  indexData is not 8,  indexData must be a valid  handle.VUID-VkGeometryTrianglesNV-indexType-parameter  indexType must be a valid T value2VUID-VkGeometryTrianglesNV-transformData-parameter If  transformData is not 8,  transformData must be a valid  handle'VUID-VkGeometryTrianglesNV-commonparent Each 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, n, K, P, T, COvulkanXVkGeometryNV - Structure specifying a geometry in a bottom-level acceleration structureValid Usage (Implicit)See AlsoT, P, `, Y, CPvulkanZVkGeometryDataNV - Structure specifying geometry in a bottom-level acceleration structureValid Usage (Implicit)See AlsoQ, O, NQvulkantVkGeometryAABBNV - 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 Usage"VUID-VkGeometryAABBNV-offset-02439 offset must be less than the size of aabbData"VUID-VkGeometryAABBNV-offset-02440 offset must be a multiple of 8"VUID-VkGeometryAABBNV-stride-02441 stride must be a multiple of 8Valid Usage (Implicit)!VUID-VkGeometryAABBNV-sType-sType sType must be ]!VUID-VkGeometryAABBNV-pNext-pNext pNext must be NULL(VUID-VkGeometryAABBNV-aabbData-parameter If aabbData is not 8, aabbData must be a valid  handleSee Also, n, P, CRvulkaneVkBindAccelerationStructureMemoryInfoNV - Structure specifying acceleration structure memory binding Valid UsageHVUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-03620 accelerationStructure must. not already be backed by a memory object?VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-03621  memoryOffset must be less than the size of memory9VUID-VkBindAccelerationStructureMemoryInfoNV-memory-03622 memory mustG have been allocated using one of the memory types allowed in the memoryTypeBits member of the 4- structure returned from a call to +\ with accelerationStructure and type of +5?VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-03623  memoryOffset must be an integer multiple of the  alignment member of the 4- structure returned from a call to +\ with accelerationStructure and type of +57VUID-VkBindAccelerationStructureMemoryInfoNV-size-03624 The size member of the 4- structure returned from a call to +\ with accelerationStructure and type of +5 must+ be less than or equal to the size of memory minus  memoryOffsetValid Usage (Implicit)8VUID-VkBindAccelerationStructureMemoryInfoNV-sType-sType sType must be ^8VUID-VkBindAccelerationStructureMemoryInfoNV-pNext-pNext pNext must be NULLLVUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-parameter accelerationStructure must be a valid V handle=VUID-VkBindAccelerationStructureMemoryInfoNV-memory-parameter memory must be a valid  handleEVUID-VkBindAccelerationStructureMemoryInfoNV-pDeviceIndices-parameter If deviceIndexCount is not 0, pDeviceIndices must( be a valid pointer to an array of deviceIndexCount uint32_t values9VUID-VkBindAccelerationStructureMemoryInfoNV-commonparent Both of accelerationStructure, and memory must? have been created, allocated, or retrieved from the same See AlsoV, , n, C, +]SvulkanuVkAccelerationStructureMemoryRequirementsInfoNV - Structure specifying acceleration to query for memory requirementsValid Usage (Implicit)See Also*, V, C, +\TvulkaneVkAccelerationStructureInfoNV - Structure specifying the parameters of acceleration structure object DescriptionTR contains information that is used both for acceleration structure creation with +Y^ and in combination with the actual geometric data to build the acceleration structure with +`. Valid Usage6VUID-VkAccelerationStructureInfoNV-geometryCount-02422  geometryCount must be less than or equal to M::maxGeometryCount 6VUID-VkAccelerationStructureInfoNV-instanceCount-02423  instanceCount must be less than or equal to M::maxInstanceCount9VUID-VkAccelerationStructureInfoNV-maxTriangleCount-024246 The total number of triangles in all geometries must be less than or equal to M::maxTriangleCount-VUID-VkAccelerationStructureInfoNV-type-02425 If type is +E then  geometryCount must be 0-VUID-VkAccelerationStructureInfoNV-type-02426 If type is +D then  instanceCount must be 0-VUID-VkAccelerationStructureInfoNV-type-02786 If type is +D then the  geometryType member of each geometry in  pGeometries must be the same-VUID-VkAccelerationStructureInfoNV-type-04623 type must not be %.VUID-VkAccelerationStructureInfoNV-flags-02592 If flags has the +; bit set, then it must not have the +: bit set0VUID-VkAccelerationStructureInfoNV-scratch-02781 scratch must have been created with +O usage flag5VUID-VkAccelerationStructureInfoNV-instanceData-02782 If  instanceData is not 8,  instanceData must have been created with +O usage flagValid Usage (Implicit).VUID-VkAccelerationStructureInfoNV-sType-sType sType must be c.VUID-VkAccelerationStructureInfoNV-pNext-pNext pNext must be NULL1VUID-VkAccelerationStructureInfoNV-type-parameter type must be a valid * value2VUID-VkAccelerationStructureInfoNV-flags-parameter flags must be a valid combination of * values8VUID-VkAccelerationStructureInfoNV-pGeometries-parameter If  geometryCount is not 0,  pGeometries must( be a valid pointer to an array of  geometryCount valid O structuresSee AlsoU, *, *, O, C, +`Uvulkan{VkAccelerationStructureCreateInfoNV - Structure specifying the parameters of a newly created acceleration structure object Valid Usage<VUID-VkAccelerationStructureCreateInfoNV-compactedSize-02421 If  compactedSize is not 0 then both info.geometryCount and info.instanceCount must be 0Valid Usage (Implicit)4VUID-VkAccelerationStructureCreateInfoNV-sType-sType sType must be Z4VUID-VkAccelerationStructureCreateInfoNV-pNext-pNext pNext must be NULL7VUID-VkAccelerationStructureCreateInfoNV-info-parameter info must be a valid T structureSee AlsoT, n, C, +Y*vulkanaVkAccelerationStructureMemoryRequirementsTypeNV - Acceleration structure memory requirement typeSee AlsoS*vulkanshaderGroupHandleSize$ size in bytes of the shader header.*vulkanlimits-maxRecursionDepth maxRecursionDepthJ is the maximum number of levels of recursion allowed in a trace command.*vulkanmaxShaderGroupStride[ is the maximum stride in bytes allowed between shader groups in the shader binding table.*vulkanshaderGroupBaseAlignment is the required> alignment in bytes for the base of the shader binding table.*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. +5: returns the memory requirements for the object itself. +4O returns the memory requirements for the scratch memory when doing a build. +3O returns the memory requirements for the scratch memory when doing an update.CVUID-VkAccelerationStructureMemoryRequirementsInfoNV-type-parameter type must be a valid * value*vulkanaccelerationStructureF is the acceleration structure to be queried for memory requirements.TVUID-VkAccelerationStructureMemoryRequirementsInfoNV-accelerationStructure-parameter accelerationStructure must be a valid V 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 4::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.+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 TP 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 OU structures containing the scene data being passed into the acceleration structure.+ vulkan geometryType specifies the Y which this geometry refers to.$VUID-VkGeometryNV-geometryType-03503  geometryType must be +G or +F(VUID-VkGeometryNV-geometryType-parameter  geometryType must be a valid Y value+ vulkangeometry, contains the geometry data as described in P.$VUID-VkGeometryNV-geometry-parameter geometry must be a valid P structure+ vulkanflags has _' describing options for this geometry.!VUID-VkGeometryNV-flags-parameter flags must be a valid combination of _ values+vulkan triangles contains triangle data if O:: geometryType is +G.)VUID-VkGeometryDataNV-triangles-parameter  triangles must be a valid N structure+vulkanaabbs- contains axis-aligned bounding box data if O:: geometryType is +F.%VUID-VkGeometryDataNV-aabbs-parameter aabbs must be a valid Q 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 K/ 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 T& 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 j0 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 Kj 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 L::pStages' in the group if the shader group has type of +J, and " otherwise.+.vulkanclosestHitShader7 is the optional index of the closest hit shader from L::pStages' in the group if the shader group has type of +I or +H, and " otherwise.+/vulkan anyHitShader3 is the optional index of the any-hit shader from L::pStages' in the group if the shader group has type of +I or +H, and " otherwise.+0vulkanintersectionShader/ is the index of the intersection shader from L::pStages' in the group if the shader group has type of +H, and " otherwise.+3vulkan+3E requests the memory requirement for scratch space during an update.+4vulkan+4N requests the memory requirement for scratch space during the initial build.+5vulkan+5+ requests the memory requirement for the V backing store.+Xvulkan5vkCompileDeferredNV - Deferred compilation of shaders Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, +YvulkanMvkCreateAccelerationStructureNV - 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 T and  compactedSize in  pCreateInfoV. Populating the data in the object after allocating and binding memory is done with +` and +^.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)5VUID-vkCreateAccelerationStructureNV-device-parameter device must be a valid  handle:VUID-vkCreateAccelerationStructureNV-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid U structure9VUID-vkCreateAccelerationStructureNV-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structureEVUID-vkCreateAccelerationStructureNV-pAccelerationStructure-parameter pAccelerationStructure 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@See AlsoU, V, , +Zvulkan=A convenience wrapper to make a compatible pair of calls to +Y and +[To ensure that +[ is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.+[vulkanLvkDestroyAccelerationStructureNV - Destroy an acceleration structure object Valid UsageAVUID-vkDestroyAccelerationStructureNV-accelerationStructure-03752+ All submitted commands that refer to accelerationStructure must have completed executionAVUID-vkDestroyAccelerationStructureNV-accelerationStructure-03753 If  were provided when accelerationStructure1 was created, a compatible set of callbacks must be provided hereAVUID-vkDestroyAccelerationStructureNV-accelerationStructure-03754 If no  were provided when accelerationStructure was created,  pAllocator must be NULLValid Usage (Implicit)6VUID-vkDestroyAccelerationStructureNV-device-parameter device must be a valid  handleEVUID-vkDestroyAccelerationStructureNV-accelerationStructure-parameter If accelerationStructure is not 8, accelerationStructure must be a valid V handle:VUID-vkDestroyAccelerationStructureNV-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structureBVUID-vkDestroyAccelerationStructureNV-accelerationStructure-parent If accelerationStructure is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to accelerationStructure must be externally synchronizedSee AlsoV, , +\vulkan`vkGetAccelerationStructureMemoryRequirementsNV - Get acceleration structure memory requirementsValid Usage (Implicit)See AlsoS, , +]vulkanHvkBindAccelerationStructureMemoryNV - Bind acceleration structure memory Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See AlsoR, +^vulkanAvkCmdCopyAccelerationStructureNV - Copy an acceleration structure Description Accesses to src and dst must be  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized with the M  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagespipeline stage and an  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type of  or  as appropriate. Valid Usage0VUID-vkCmdCopyAccelerationStructureNV-mode-03410 mode must be % or %/VUID-vkCmdCopyAccelerationStructureNV-src-03411 If mode is %, src must have been built with &2VUID-vkCmdCopyAccelerationStructureNV-buffer-03718 The buffer used to create src must be bound to device memory2VUID-vkCmdCopyAccelerationStructureNV-buffer-03719 The buffer used to create dst must be bound to device memoryValid Usage (Implicit)=VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-parameter  commandBuffer must be a valid  handle3VUID-vkCmdCopyAccelerationStructureNV-dst-parameter dst must be a valid V handle3VUID-vkCmdCopyAccelerationStructureNV-src-parameter src must be a valid V handle4VUID-vkCmdCopyAccelerationStructureNV-mode-parameter mode must be a valid a value=VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state;VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support compute operations0VUID-vkCmdCopyAccelerationStructureNV-renderpass This command must1 only be called outside of a render pass instance2VUID-vkCmdCopyAccelerationStructureNV-commonparent Each 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 / 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 AlsoV, , a+_vulkanpvkCmdWriteAccelerationStructuresPropertiesNV - Write acceleration structure result parameters to query results. Description:Accesses to any of the acceleration structures listed in pAccelerationStructures must be  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized with the M  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagespipeline stage and an  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type of . Valid UsageAVUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-03755  queryPool must have been created with a  queryType matching  queryTypeAVUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-03756 The queries identified by  queryPool and  firstQuery must be  unavailableMVUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructure-03757 accelerationStructure must7 be bound completely and contiguously to a single  object via +]NVUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructures-03431% All acceleration structures in pAccelerationStructures must have been built with & if  queryType is  AVUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-03432  queryType must be  Valid Usage (Implicit)IVUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-parameter  commandBuffer must be a valid  handleSVUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-parameter pAccelerationStructures must( be a valid pointer to an array of accelerationStructureCount valid V handlesEVUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-parameter  queryType must be a valid _ valueEVUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-parameter  queryPool must be a valid | handleIVUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateGVUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support compute operations<VUID-vkCmdWriteAccelerationStructuresPropertiesNV-renderpass This command must1 only be called outside of a render pass instanceXVUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructureCount-arraylength accelerationStructureCount must be greater than 0>VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commonparent Each 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 / 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 AlsoV, , |, _+`vulkanCvkCmdBuildAccelerationStructureNV - Build an acceleration structure Description Accesses to dst, src, and scratch must be  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized with the M  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagespipeline stage and an  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type of  or . Valid Usage:VUID-vkCmdBuildAccelerationStructureNV-geometryCount-02241  geometryCount must be less than or equal to M::maxGeometryCount 0VUID-vkCmdBuildAccelerationStructureNV-dst-02488 dst must( have been created with compatible T where T::type and T::flags are identical, T:: instanceCount and T:: geometryCount for dstL are greater than or equal to the build size and each geometry in T:: pGeometries for dstM has greater than or equal to the number of vertices, indices, and AABBs3VUID-vkCmdBuildAccelerationStructureNV-update-02489 If update is j, src must not be 83VUID-vkCmdBuildAccelerationStructureNV-update-02490 If update is j, src must" have been built before with += set in T::flags3VUID-vkCmdBuildAccelerationStructureNV-update-02491 If update is k, the size member of the 4- structure returned from a call to +\ with S::accelerationStructure set to dst and S::type set to +4 must& be less than or equal to the size of scratch minus  scratchOffset3VUID-vkCmdBuildAccelerationStructureNV-update-02492 If update is j, the size member of the 4- structure returned from a call to +\ with S::accelerationStructure set to dst and S::type set to +3 must& be less than or equal to the size of scratch minus  scratchOffset4VUID-vkCmdBuildAccelerationStructureNV-scratch-03522 scratch must have been created with +O usage flag9VUID-vkCmdBuildAccelerationStructureNV-instanceData-03523 If  instanceData is not 8,  instanceData must have been created with +O usage flagKVUID-vkCmdBuildAccelerationStructureNV-accelerationStructureReference-03786 Each l::accelerationStructureReference value in  instanceData mustA be a valid device address containing a value obtained from +b3VUID-vkCmdBuildAccelerationStructureNV-update-03524 If update is j0, 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-prims3VUID-vkCmdBuildAccelerationStructureNV-update-03525 If update is j2, 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-prims3VUID-vkCmdBuildAccelerationStructureNV-update-03526 If update is j, 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)>VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-parameter  commandBuffer must be a valid  handle 6VUID-vkCmdBuildAccelerationStructureNV-pInfo-parameter pInfo must be a valid pointer to a valid T structure=VUID-vkCmdBuildAccelerationStructureNV-instanceData-parameter If  instanceData is not 8,  instanceData must be a valid  handle4VUID-vkCmdBuildAccelerationStructureNV-dst-parameter dst must be a valid V handle4VUID-vkCmdBuildAccelerationStructureNV-src-parameter If src is not 8, src must be a valid V handle8VUID-vkCmdBuildAccelerationStructureNV-scratch-parameter scratch must be a valid  handle>VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state<VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support compute operations1VUID-vkCmdBuildAccelerationStructureNV-renderpass This command must1 only be called outside of a render pass instance3VUID-vkCmdBuildAccelerationStructureNV-commonparent Each 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 / 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 AlsoT, V, p, , , n+avulkan4vkCmdTraceRaysNV - Initialize a ray tracing dispatch Description8When the command is executed, a ray generation group of width height depth rays is assembled. Valid Usage%VUID-vkCmdTraceRaysNV-magFilter-04553 If a / created with  magFilter or  minFilter equal to  and  compareEnable equal to k is used to sample a /> 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 {'2&VUID-vkCmdTraceRaysNV-mipmapMode-04770 If a / created with  mipmapMode equal to 8 and  compareEnable equal to k is used to sample a /> 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 {' VUID-vkCmdTraceRaysNV-None-02691 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 {x VUID-vkCmdTraceRaysNV-None-02692 If 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 'VUID-vkCmdTraceRaysNV-filterCubic-02694 Any / being sampled with " as a result of this command must have a tyE and format that supports cubic filtering, as specified by f:: filterCubic returned by T-VUID-vkCmdTraceRaysNV-filterCubicMinmax-02695 Any / being sampled with + with a reduction mode of either +z or +{" as a result of this command must have a tyi and format that supports cubic filtering together with minmax filtering, as specified by f::filterCubicMinmax returned by T!VUID-vkCmdTraceRaysNV-flags-02696 Any /  created with a 0::flags containing * sampled as a result of this command must only be sampled using a 9| of 9} VUID-vkCmdTraceRaysNV-None-02697 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 n. 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??? VUID-vkCmdTraceRaysNV-None-02698< For each push constant that is statically used by the X bound to the pipeline bind point used by this command, a push constant value must= 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??? VUID-vkCmdTraceRaysNV-None-02699C 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 command VUID-vkCmdTraceRaysNV-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command)VUID-vkCmdTraceRaysNV-commandBuffer-02701 If 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 dynamic VUID-vkCmdTraceRaysNV-None-02859 There musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the f object bound to the pipeline bind point used by this command, since that pipeline was bound VUID-vkCmdTraceRaysNV-None-02702 If the S object bound to the pipeline bind point used by this command accesses a /> object that uses unnormalized coordinates, that sampler must% not be used to sample from any /  with a / of the type t~, t, t, t or t, in any shader stage VUID-vkCmdTraceRaysNV-None-02703 If the S object bound to the pipeline bind point used by this command accesses 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 stage VUID-vkCmdTraceRaysNV-None-02704 If the S object bound to the pipeline bind point used by this command accesses 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 VUID-vkCmdTraceRaysNV-None-02705 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 VUID-vkCmdTraceRaysNV-None-02706 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 point)VUID-vkCmdTraceRaysNV-commandBuffer-02707 If  commandBufferJ 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 resource VUID-vkCmdTraceRaysNV-None-04115 If 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.(VUID-vkCmdTraceRaysNV-OpImageWrite-04469 If a / is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction mustC have at least as many components as the buffer view s format.'VUID-vkCmdTraceRaysNV-SampledType-04470 If a / with a KS that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.'VUID-vkCmdTraceRaysNV-SampledType-04471 If a / with a Kb that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.'VUID-vkCmdTraceRaysNV-SampledType-04472 If a / with a KS that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.'VUID-vkCmdTraceRaysNV-SampledType-04473 If a / with a Kb that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.3VUID-vkCmdTraceRaysNV-sparseImageInt64Atomics-04474 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, / $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.3VUID-vkCmdTraceRaysNV-sparseImageInt64Atomics-04475 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command. VUID-vkCmdTraceRaysNV-None-034296 Any shader group handle referenced by this call mustL have been queried from the currently bound ray tracing shader pipeline)VUID-vkCmdTraceRaysNV-commandBuffer-04624  commandBuffer must' not be a protected command buffer-VUID-vkCmdTraceRaysNV-maxRecursionDepth-03625 This command musta not cause a trace ray 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 pipeline:VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-04042 If raygenShaderBindingTableBuffer is non-sparse then it must< be bound completely and contiguously to a single  object5VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02455 raygenShaderBindingOffset must be less than the size of raygenShaderBindingTableBuffer5VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02456 raygenShaderBindingOffset must be a multiple of M::shaderGroupBaseAlignment8VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-04043 If missShaderBindingTableBuffer is non-sparse then it must< be bound completely and contiguously to a single  object3VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02457 missShaderBindingOffset must be less than the size of missShaderBindingTableBuffer3VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02458 missShaderBindingOffset must be a multiple of M::shaderGroupBaseAlignment7VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-04044 If hitShaderBindingTableBuffer is non-sparse then it must< be bound completely and contiguously to a single  object2VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02459 hitShaderBindingOffset must be less than the size of hitShaderBindingTableBuffer2VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02460 hitShaderBindingOffset must be a multiple of M::shaderGroupBaseAlignment<VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-04045 If  callableShaderBindingTableBuffer is non-sparse then it must< be bound completely and contiguously to a single  object7VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02461 callableShaderBindingOffset must be less than the size of  callableShaderBindingTableBuffer7VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02462 callableShaderBindingOffset must be a multiple of M::shaderGroupBaseAlignment3VUID-vkCmdTraceRaysNV-missShaderBindingStride-02463 missShaderBindingStride must be a multiple of M::shaderGroupHandleSize2VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02464 hitShaderBindingStride must be a multiple of M::shaderGroupHandleSize7VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02465 callableShaderBindingStride must be a multiple of M::shaderGroupHandleSize3VUID-vkCmdTraceRaysNV-missShaderBindingStride-02466 missShaderBindingStride must be less than or equal to M::maxShaderGroupStride2VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02467 hitShaderBindingStride must be less than or equal to M::maxShaderGroupStride7VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02468 callableShaderBindingStride must be less than or equal to M::maxShaderGroupStride!VUID-vkCmdTraceRaysNV-width-02469 width must$ be less than or equal to  ::maxComputeWorkGroupCount[0]"VUID-vkCmdTraceRaysNV-height-02470 height must$ be less than or equal to  ::maxComputeWorkGroupCount[1]!VUID-vkCmdTraceRaysNV-depth-02471 depth must$ be less than or equal to  ::maxComputeWorkGroupCount[2]Valid Usage (Implicit)-VUID-vkCmdTraceRaysNV-commandBuffer-parameter  commandBuffer must be a valid  handle>VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-parameter raygenShaderBindingTableBuffer must be a valid  handle<VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-parameter If missShaderBindingTableBuffer is not 8, missShaderBindingTableBuffer must be a valid  handle;VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-parameter If hitShaderBindingTableBuffer is not 8, hitShaderBindingTableBuffer must be a valid  handle@VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-parameter If  callableShaderBindingTableBuffer is not 8,  callableShaderBindingTableBuffer must be a valid  handle-VUID-vkCmdTraceRaysNV-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state+VUID-vkCmdTraceRaysNV-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support compute operations VUID-vkCmdTraceRaysNV-renderpass This command must6 only be called outside of a render pass instance"VUID-vkCmdTraceRaysNV-commonparent Each 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 / 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, , n+bvulkanNvkGetAccelerationStructureHandleNV - Get opaque acceleration structure handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See AlsoV, +cvulkanJvkCreateRayTracingPipelinesNV - Creates a new ray tracing pipeline object Valid Usage.VUID-vkCreateRayTracingPipelinesNV-flags-03415 If the flags member of any element of  pCreateInfos contains the j 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 element.VUID-vkCreateRayTracingPipelinesNV-flags-03416 If the flags member of any element of  pCreateInfos contains the j flag, the base pipeline must! have been created with the j! flag set.VUID-vkCreateRayTracingPipelinesNV-flags-03816 flags must not contain the J flag6VUID-vkCreateRayTracingPipelinesNV-pipelineCache-02903 If  pipelineCache was created with m?, host access to  pipelineCache must be lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehaviorexternally synchronizedValid Usage (Implicit)3VUID-vkCreateRayTracingPipelinesNV-device-parameter device must be a valid  handle:VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parameter If  pipelineCache is not 8,  pipelineCache must be a valid ~ handle9VUID-vkCreateRayTracingPipelinesNV-pCreateInfos-parameter  pCreateInfos must( be a valid pointer to an array of createInfoCount valid L structures7VUID-vkCreateRayTracingPipelinesNV-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure7VUID-vkCreateRayTracingPipelinesNV-pPipelines-parameter  pPipelines must( be a valid pointer to an array of createInfoCount  handles>VUID-vkCreateRayTracingPipelinesNV-createInfoCount-arraylength createInfoCount must be greater than 07VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parent If  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-successcodesSuccessF3  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?+See Also, , , ~, L+dvulkan=A convenience wrapper to make a compatible pair of calls to +c and )DTo ensure that )D is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument. +Xvulkandevice; is the logical device containing the ray tracing pipeline.)VUID-vkCompileDeferredNV-device-parameter device must be a valid  handlevulkanpipeline; is the ray tracing pipeline object containing the shaders.'VUID-vkCompileDeferredNV-pipeline-04621 pipeline must be a ray tracing pipeline'VUID-vkCompileDeferredNV-pipeline-02237 pipeline must have been created with j#+VUID-vkCompileDeferredNV-pipeline-parameter pipeline must be a valid  handle(VUID-vkCompileDeferredNV-pipeline-parent pipeline must2 have been created, allocated, or retrieved from devicevulkanshader' is the index of the shader to compile.%VUID-vkCompileDeferredNV-shader-02238 shader must3 not have been called as a deferred compile before+Yvulkandevice6 is the logical device that creates the buffer object.vulkan pCreateInfo is a pointer to a UT 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.+[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.DVUID-vkGetAccelerationStructureMemoryRequirementsNV-device-parameter device must be a valid  handlevulkanpInfoF specifies the acceleration structure to get memory requirements for.CVUID-vkGetAccelerationStructureMemoryRequirementsNV-pInfo-parameter pInfo must be a valid pointer to a valid S structure+]vulkandeviceI is the logical device that owns the acceleration structures and memory.9VUID-vkBindAccelerationStructureMemoryNV-device-parameter device must be a valid  handlevulkan pBindInfos is a pointer to an array of RC structures describing acceleration structures and memory to bind.=VUID-vkBindAccelerationStructureMemoryNV-pBindInfos-parameter  pBindInfos must# be a valid pointer to an array of  bindInfoCount valid R structures+^vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkandst3 is the target acceleration structure for the copy.vulkansrc3 is the source acceleration structure for the copy.vulkanmode is a aD value specifying additional operations to perform during the copy.+_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.vulkanpInfoM contains the shared information for the acceleration structure s structure.vulkan instanceData' is the buffer containing an array of l> 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.+avulkan 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.+bvulkandevice= is the logical device that owns the acceleration structures.8VUID-vkGetAccelerationStructureHandleNV-device-parameter device must be a valid  handlevulkanaccelerationStructure is the acceleration structure.CVUID-vkGetAccelerationStructureHandleNV-accelerationStructure-02787 accelerationStructure must3 be bound completely and contiguously to a single  object via +]GVUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parameter accelerationStructure must be a valid V handleDVUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parent accelerationStructure must2 have been created, allocated, or retrieved from devicevulkandataSize2 is the size in bytes of the buffer pointed to by pData.6VUID-vkGetAccelerationStructureHandleNV-dataSize-02240 dataSize mustH be large enough to contain the result of the query, as described above<VUID-vkGetAccelerationStructureHandleNV-dataSize-arraylength dataSize must be greater than 0vulkanpDataL is a pointer to a user-allocated buffer where the results will be written.7VUID-vkGetAccelerationStructureHandleNV-pData-parameter pData must$ be a valid pointer to an array of dataSize bytes+cvulkandevice> is the logical device that creates the ray tracing pipelines.vulkan pipelineCache is either 8K, 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 L 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.V%)%T%S%R%Q%P%O%N%M%L%K%J%I%H%G%F%E%D%C%B%A%@%?%>%=%<%;%:%9%8%7%6%5%4%3%2%1Y%x%%%Z%y%%%[%&&&%%\]%&&&&^_%&&`a%|%%%%e%%%%l%%%%%%%v%%%%%%%*k***J**K+++,+-+.+/+0L+"+$+#+%+(+)+*+&+'M*********N++++++++++ +!+O+ + + + P+++Q+++++R*++**S***T+++++ U+++(B*****************+5+4+3*+1+2+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=+X+Y+Z+[+\+]+^+_+`+a+b+c+d+W+V+U+T+S+R+Q+P+O+N+M+L+K+J+I+H+G+F+E+D+C+B+A+@+?+>+=+<+;+:+9+8+7+6+eK+++,+-+.+/+0L+"+$+#+%+(+)+*+&+'N++++++++++ +!+Q+++++P+++O+ + + + T+++++ U+++R*++**J**S***M**********+5+4+3*+5+4+3**************+2*+1Vv%%%%%%%e%%%%l%%%%%%%*%)%T%S%R%Q%P%O%N%M%L%K%J%I%H%G%F%E%D%C%B%A%@%?%>%=%<%;%:%9%8%7%6%5%4%3%2%1%T%S%R%Q%P%O%N%M%L%K%J%I%H%G%F%E%D%C%B%A%@%?%>%=%<%;%:%9%8%7%6%5%4%3%2%1]%&&&&&&&&^_%&&&&`[%&&&%%&&&%%\a%|%%%%%%%%Z%y%%%%%%Y%x%%%%%%*k******(BNone("#%&'-./1789;=>?FHIMSUVX_dghklmqEvulkanoVkPhysicalDeviceExtendedDynamicStateFeaturesEXT - 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  2 to enable features.Valid Usage (Implicit)See Alsop, C+vulkanfeatures-extendedDynamicState extendedDynamicStateJ indicates that the implementation supports the following dynamic states: *+,-./012+vulkan0vkCmdSetCullModeEXT - Set the cull mode property Valid Usage#VUID-vkCmdSetCullModeEXT-None-03384 The  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit)0VUID-vkCmdSetCullModeEXT-commandBuffer-parameter  commandBuffer must be a valid  handle+VUID-vkCmdSetCullModeEXT-cullMode-parameter cullMode must% be a valid combination of E values0VUID-vkCmdSetCullModeEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state.VUID-vkCmdSetCullModeEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, F+vulkan2vkCmdSetFrontFaceEXT - Set the front face property Valid Usage$VUID-vkCmdSetFrontFaceEXT-None-03383 The  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit)1VUID-vkCmdSetFrontFaceEXT-commandBuffer-parameter  commandBuffer must be a valid  handle-VUID-vkCmdSetFrontFaceEXT-frontFace-parameter  frontFace must be a valid L value1VUID-vkCmdSetFrontFaceEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state/VUID-vkCmdSetFrontFaceEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, L+vulkan?vkCmdSetPrimitiveTopologyEXT - Set the primitive topology state Valid Usage,VUID-vkCmdSetPrimitiveTopologyEXT-None-03347 The  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit)9VUID-vkCmdSetPrimitiveTopologyEXT-commandBuffer-parameter  commandBuffer must be a valid  handle=VUID-vkCmdSetPrimitiveTopologyEXT-primitiveTopology-parameter primitiveTopology must be a valid Z value9VUID-vkCmdSetPrimitiveTopologyEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state7VUID-vkCmdSetPrimitiveTopologyEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, Z+vulkanCvkCmdSetViewportWithCountEXT - Set the viewport count and viewports Valid Usage,VUID-vkCmdSetViewportWithCountEXT-None-03393 The  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabled5VUID-vkCmdSetViewportWithCountEXT-viewportCount-03394  viewportCount must be between 1 and  :: maxViewports, inclusive5VUID-vkCmdSetViewportWithCountEXT-viewportCount-03395 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)9VUID-vkCmdSetViewportWithCountEXT-commandBuffer-parameter  commandBuffer must be a valid  handle6VUID-vkCmdSetViewportWithCountEXT-pViewports-parameter  pViewports must( be a valid pointer to an array of  viewportCount valid  structures9VUID-vkCmdSetViewportWithCountEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state7VUID-vkCmdSetViewportWithCountEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations;VUID-vkCmdSetViewportWithCountEXT-viewportCount-arraylength  viewportCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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+VUID-vkCmdSetScissorWithCountEXT-None-03396 The  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabled3VUID-vkCmdSetScissorWithCountEXT-scissorCount-03397  scissorCount must be between 1 and  :: maxViewports, inclusive3VUID-vkCmdSetScissorWithCountEXT-scissorCount-03398 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(VUID-vkCmdSetScissorWithCountEXT-x-03399 The x and y members of offset member of any element of  pScissors must" be greater than or equal to 0-VUID-vkCmdSetScissorWithCountEXT-offset-03400 Evaluation of (offset.x +  extent.width) mustF not cause a signed integer addition overflow for any element of  pScissors-VUID-vkCmdSetScissorWithCountEXT-offset-03401 Evaluation of (offset.y +  extent.height) mustF not cause a signed integer addition overflow for any element of  pScissorsValid Usage (Implicit)8VUID-vkCmdSetScissorWithCountEXT-commandBuffer-parameter  commandBuffer must be a valid  handle4VUID-vkCmdSetScissorWithCountEXT-pScissors-parameter  pScissors must# be a valid pointer to an array of  scissorCount q structures8VUID-vkCmdSetScissorWithCountEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state6VUID-vkCmdSetScissorWithCountEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations9VUID-vkCmdSetScissorWithCountEXT-scissorCount-arraylength  scissorCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, q+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 vertex buffer starting from the corresponding elements of pBuffers [i] plus pOffsets[i]. 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 , 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 Usage2VUID-vkCmdBindVertexBuffers2EXT-firstBinding-03355  firstBinding must be less than  ::maxVertexInputBindings 2VUID-vkCmdBindVertexBuffers2EXT-firstBinding-03356 The sum of  firstBinding and  bindingCount must be less than or equal to  ::maxVertexInputBindings.VUID-vkCmdBindVertexBuffers2EXT-pOffsets-03357 All elements of pOffsets must< be less than the size of the corresponding element in pBuffers,VUID-vkCmdBindVertexBuffers2EXT-pSizes-03358 If pSizes is not NULL, all elements of pOffsets plus pSizes mustH be less than or equal to the size of the corresponding element in pBuffers.VUID-vkCmdBindVertexBuffers2EXT-pBuffers-03359 All elements of pBuffers must! have been created with the   flag.VUID-vkCmdBindVertexBuffers2EXT-pBuffers-03360 Each element of pBuffers that is non-sparse must7 be bound completely and contiguously to a single / object.VUID-vkCmdBindVertexBuffers2EXT-pBuffers-04111 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 8.VUID-vkCmdBindVertexBuffers2EXT-pBuffers-04112 If an element of pBuffers is 8), then the corresponding element of pOffsets must be zero.VUID-vkCmdBindVertexBuffers2EXT-pStrides-03361C If the bound pipeline state object was created with the ,! dynamic state enabled then pStrides must not be NULL, otherwise pStrides must be NULL.VUID-vkCmdBindVertexBuffers2EXT-pStrides-03362 If pStrides is not NULL each element of pStrides must$ be less than or equal to  ::maxVertexInputBindingStride.VUID-vkCmdBindVertexBuffers2EXT-pStrides-03363 If 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)7VUID-vkCmdBindVertexBuffers2EXT-commandBuffer-parameter  commandBuffer must be a valid  handle2VUID-vkCmdBindVertexBuffers2EXT-pBuffers-parameter pBuffers must# be a valid pointer to an array of  bindingCount valid  handles2VUID-vkCmdBindVertexBuffers2EXT-pOffsets-parameter pOffsets must# be a valid pointer to an array of  bindingCount n values0VUID-vkCmdBindVertexBuffers2EXT-pSizes-parameter If pSizes is not NULL, pSizes must( be a valid pointer to an array of  bindingCount n values2VUID-vkCmdBindVertexBuffers2EXT-pStrides-parameter If pStrides is not NULL, pStrides must( be a valid pointer to an array of  bindingCount n values7VUID-vkCmdBindVertexBuffers2EXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state5VUID-vkCmdBindVertexBuffers2EXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations8VUID-vkCmdBindVertexBuffers2EXT-bindingCount-arraylength If any of pSizes, or pStrides are not NULL,  bindingCount must be greater than 0,VUID-vkCmdBindVertexBuffers2EXT-commonparent Both 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 / 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+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 - set in 7L::pDynamicStates. Valid Usage*VUID-vkCmdSetDepthTestEnableEXT-None-03352 The  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit)7VUID-vkCmdSetDepthTestEnableEXT-commandBuffer-parameter  commandBuffer must be a valid  handle7VUID-vkCmdSetDepthTestEnableEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state5VUID-vkCmdSetDepthTestEnableEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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 Alsop, +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 . set in 7L::pDynamicStates. Valid Usage+VUID-vkCmdSetDepthWriteEnableEXT-None-03354 The  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit)8VUID-vkCmdSetDepthWriteEnableEXT-commandBuffer-parameter  commandBuffer must be a valid  handle8VUID-vkCmdSetDepthWriteEnableEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state6VUID-vkCmdSetDepthWriteEnableEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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 Alsop, +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 / set in 7L::pDynamicStates. Valid Usage)VUID-vkCmdSetDepthCompareOpEXT-None-03353 The  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit)6VUID-vkCmdSetDepthCompareOpEXT-commandBuffer-parameter  commandBuffer must be a valid  handle7VUID-vkCmdSetDepthCompareOpEXT-depthCompareOp-parameter depthCompareOp must be a valid D value6VUID-vkCmdSetDepthCompareOpEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state4VUID-vkCmdSetDepthCompareOpEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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+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 0 set in 7L::pDynamicStates. Valid Usage0VUID-vkCmdSetDepthBoundsTestEnableEXT-None-03349 The  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit)=VUID-vkCmdSetDepthBoundsTestEnableEXT-commandBuffer-parameter  commandBuffer must be a valid  handle=VUID-vkCmdSetDepthBoundsTestEnableEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state;VUID-vkCmdSetDepthBoundsTestEnableEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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 Alsop, +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 1 set in 7L::pDynamicStates. Valid Usage,VUID-vkCmdSetStencilTestEnableEXT-None-03350 The  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit)9VUID-vkCmdSetStencilTestEnableEXT-commandBuffer-parameter  commandBuffer must be a valid  handle9VUID-vkCmdSetStencilTestEnableEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state7VUID-vkCmdSetStencilTestEnableEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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 Alsop, +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 2 set in 7L::pDynamicStates. Valid Usage$VUID-vkCmdSetStencilOpEXT-None-03351 The  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicStateextendedDynamicState feature must be enabledValid Usage (Implicit)1VUID-vkCmdSetStencilOpEXT-commandBuffer-parameter  commandBuffer must be a valid  handle,VUID-vkCmdSetStencilOpEXT-faceMask-parameter faceMask must% be a valid combination of e values2VUID-vkCmdSetStencilOpEXT-faceMask-requiredbitmask faceMask must not be 0*VUID-vkCmdSetStencilOpEXT-failOp-parameter failOp must be a valid g value*VUID-vkCmdSetStencilOpEXT-passOp-parameter passOp must be a valid g value/VUID-vkCmdSetStencilOpEXT-depthFailOp-parameter  depthFailOp must be a valid g value-VUID-vkCmdSetStencilOpEXT-compareOp-parameter  compareOp must be a valid D value1VUID-vkCmdSetStencilOpEXT-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state/VUID-vkCmdSetStencilOpEXT-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, f, g +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.vulkanpSizesF is an optional array of the size in bytes of vertex data bound from pBuffers.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 gN value specifying the action performed on samples that fail the stencil test.vulkanpassOp is a g_ value specifying the action performed on samples that pass both the depth and stencil tests.vulkan depthFailOp is a gg value specifying the action performed on samples that pass the stencil test and fail the depth test.vulkan compareOp is a DD value specifying the comparison operator used in the stencil test.++++++++++++++++++++++++++++++++++++6None("#%&'-./1789;=>?FHIMSUVX_dghklmq0vulkanAVkSubpassDescription - 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 , 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 D, writes to the corresponding location by a fragment are discarded.If flags does not include   , 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 .Similarly, if flags does not include  , and d::pDepthStencilResolveAttachment is not NULL and does not have the value 5, it corresponds to the depth/stencil attachment in pDepthStencilAttachmentL, and multisample resolve operations for depth and stencil are defined by d::depthResolveMode and d::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 d::depthResolveMode is E3x, then the depth component of the resolve attachment is not written to and its contents are preserved. Similarly, if d::stencilResolveMode is E3l, then the stencil component of the resolve attachment is not written to and its contents are preserved. d::depthResolveMode is ignored if the K of the pDepthStencilResolveAttachment/ does not have a depth component. Similarly, d::stencilResolveMode is ignored if the K 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 M, 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:  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 Usage1VUID-VkSubpassDescription-pipelineBindPoint-00844 pipelineBindPoint must be 4VUID-VkSubpassDescription-colorAttachmentCount-00845 colorAttachmentCount must be less than or equal to  ::maxColorAttachments&VUID-VkSubpassDescription-loadOp-00846 If 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 3VUID-VkSubpassDescription-pResolveAttachments-00847 If pResolveAttachments is not NULL/, for each resolve attachment that is not *, the corresponding color attachment must not be 3VUID-VkSubpassDescription-pResolveAttachments-00848 If pResolveAttachments is not NULL/, for each resolve attachment that is not *, the corresponding color attachment must! not have a sample count of %43VUID-VkSubpassDescription-pResolveAttachments-00849 If pResolveAttachments is not NULL+, each resolve attachment that is not  must" have a sample count of %43VUID-VkSubpassDescription-pResolveAttachments-00850 If pResolveAttachments is not NULL+, each resolve attachment that is not  must have the same K+ as its corresponding color attachment1VUID-VkSubpassDescription-pColorAttachments-01417 All attachments in pColorAttachments that are not  must have the same sample count1VUID-VkSubpassDescription-pInputAttachments-02647 All attachments in pInputAttachments that are not  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 {5 or {61VUID-VkSubpassDescription-pColorAttachments-02648 All attachments in pColorAttachments that are not  must$ have image formats whose  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features contain {53VUID-VkSubpassDescription-pResolveAttachments-02649 All attachments in pResolveAttachments that are not  must$ have image formats whose  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features contain {57VUID-VkSubpassDescription-pDepthStencilAttachment-02650 If pDepthStencilAttachment is not NULL and the attachment is not  then it must& have an image format whose  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features contain {61VUID-VkSubpassDescription-pColorAttachments-01506 If the VK_AMD_mixed_attachment_samples3 extension is enabled, and all attachments in pColorAttachments that are not  mustT have a sample count that is smaller than or equal to the sample count of pDepthStencilAttachment if it is not 7VUID-VkSubpassDescription-pDepthStencilAttachment-01418 If neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples% extensions are enabled, and if pDepthStencilAttachment is not  and any attachments in pColorAttachments are not , they must have the same sample count*VUID-VkSubpassDescription-attachment-00853 The  attachment member of each element of pPreserveAttachments must not be 4VUID-VkSubpassDescription-pPreserveAttachments-00854 Each element of pPreserveAttachments mustK not also be an element of any other member of the subpass description&VUID-VkSubpassDescription-layout-025191 If any attachment is used by more than one  member, then each use must use the same layout$VUID-VkSubpassDescription-None-04437 Each attachment must follow the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#attachment-type-imagelayoutimage layout requirements' specified for its attachment type%VUID-VkSubpassDescription-flags-00856 If flags includes   , it must also include  %VUID-VkSubpassDescription-flags-03341 If flags includes  , and if pResolveAttachments is not NULL$, then each resolve attachment must be %VUID-VkSubpassDescription-flags-03342 If flags includes  , and if !pDepthStencilResolveAttachmentKHR is not NULL1, then the depth/stencil resolve attachment must be %VUID-VkSubpassDescription-flags-03343 If flags includes  , then the subpass must7 be the last subpass in a subpass dependency chain%VUID-VkSubpassDescription-flags-03344 If flags includes  6, then the sample count of the input attachments must equal rasterizationSamples%VUID-VkSubpassDescription-flags-03345 If flags includes  , and if sampleShadingEnable1 is enabled (explicitly or implicitly) then minSampleShading must equal 0.01VUID-VkSubpassDescription-pInputAttachments-02868. If the render pass is created with   each of the elements of pInputAttachments must be 7VUID-VkSubpassDescription-pDepthStencilAttachment-04438 pDepthStencilAttachment and pColorAttachments8 must not contain references to the same attachmentValid Usage (Implicit))VUID-VkSubpassDescription-flags-parameter flags must% be a valid combination of   values5VUID-VkSubpassDescription-pipelineBindPoint-parameter pipelineBindPoint must be a valid W value5VUID-VkSubpassDescription-pInputAttachments-parameter If inputAttachmentCount is not 0, pInputAttachments must( be a valid pointer to an array of inputAttachmentCount valid  structures5VUID-VkSubpassDescription-pColorAttachments-parameter If colorAttachmentCount is not 0, pColorAttachments must( be a valid pointer to an array of colorAttachmentCount valid  structures7VUID-VkSubpassDescription-pResolveAttachments-parameter If colorAttachmentCount is not 0, and pResolveAttachments is not NULL, pResolveAttachments must( be a valid pointer to an array of colorAttachmentCount valid  structures;VUID-VkSubpassDescription-pDepthStencilAttachment-parameter If pDepthStencilAttachment is not NULL, pDepthStencilAttachment must be a valid pointer to a valid  structure8VUID-VkSubpassDescription-pPreserveAttachments-parameter If preserveAttachmentCount is not 0, pPreserveAttachments must( be a valid pointer to an array of preserveAttachmentCount uint32_t valuesSee Also, W, ,  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 7 , 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 7, 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 5 (with matching  srcAccessMask and  dstAccessMask' parameters) submitted as a part of a k (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 5 defined similarly to the 5) above, the queue family indices set to 8, 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+VUID-VkSubpassDependency-srcStageMask-00860 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 1+VUID-VkSubpassDependency-dstStageMask-00861 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 1+VUID-VkSubpassDependency-srcStageMask-00862 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 0+VUID-VkSubpassDependency-dstStageMask-00863 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 0)VUID-VkSubpassDependency-srcSubpass-00864  srcSubpass must be less than or equal to  dstSubpass, unless one of them is 7F, to avoid cyclic dependencies and ensure a valid execution order)VUID-VkSubpassDependency-srcSubpass-00865  srcSubpass and  dstSubpass must not both be equal to 7)VUID-VkSubpassDependency-srcSubpass-00867 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  dstStageMask,VUID-VkSubpassDependency-srcAccessMask-00868" Any 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 types,VUID-VkSubpassDependency-dstAccessMask-00869" Any 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 types)VUID-VkSubpassDependency-srcSubpass-02243 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 .VUID-VkSubpassDependency-dependencyFlags-02520 If dependencyFlags includes ,  srcSubpass must not be equal to 7.VUID-VkSubpassDependency-dependencyFlags-02521 If dependencyFlags includes ,  dstSubpass must not be equal to 7)VUID-VkSubpassDependency-srcSubpass-00872 If  srcSubpass equals  dstSubpassH and that subpass has more than one bit set in the view mask, then dependencyFlags must include +VUID-VkSubpassDependency-srcStageMask-02099 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 -+VUID-VkSubpassDependency-srcStageMask-02100 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 ,+VUID-VkSubpassDependency-dstStageMask-02101 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 -+VUID-VkSubpassDependency-dstStageMask-02102 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)/VUID-VkSubpassDependency-srcStageMask-parameter  srcStageMask must be a valid combination of 9 values/VUID-VkSubpassDependency-dstStageMask-parameter  dstStageMask must be a valid combination of 9 values0VUID-VkSubpassDependency-srcAccessMask-parameter  srcAccessMask must be a valid combination of  values0VUID-VkSubpassDependency-dstAccessMask-parameter  dstAccessMask must be a valid combination of  values2VUID-VkSubpassDependency-dependencyFlags-parameter dependencyFlags must be a valid combination of G valuesSee Also, H, Y, 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 Usage,VUID-VkRenderPassCreateInfo-attachment-00834 If the  attachment member of any element of pInputAttachments, pColorAttachments, pResolveAttachments or pDepthStencilAttachment, or any element of pPreserveAttachments in any element of  pSubpasses is not , it must be less than attachmentCount.VUID-VkRenderPassCreateInfo-pAttachments-00836 For any member of  pAttachments with a loadOp equal to (, the first use of that attachment must not specify a layout equal to : or .VUID-VkRenderPassCreateInfo-pAttachments-02511 For any member of  pAttachments with a  stencilLoadOp equal to (, the first use of that attachment must not specify a layout equal to : or .VUID-VkRenderPassCreateInfo-pAttachments-01566 For any member of  pAttachments with a loadOp equal to (, the first use of that attachment must not specify a layout equal to .VUID-VkRenderPassCreateInfo-pAttachments-01567 For any member of  pAttachments with a  stencilLoadOp equal to (, the first use of that attachment must not specify a layout equal to 'VUID-VkRenderPassCreateInfo-pNext-01926 If the pNext chain includes a  structure, the subpass$ member of each element of its pAspectReferences member must be less than  subpassCount'VUID-VkRenderPassCreateInfo-pNext-01927 If 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 member'VUID-VkRenderPassCreateInfo-pNext-01963 If the pNext chain includes a ( structure, for any element of the pInputAttachments member of any element of  pSubpasses where the  attachment member is not , 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  attachment'VUID-VkRenderPassCreateInfo-pNext-01928 If the pNext chain includes a   structure, and its  subpassCount& member is not zero, that member must be equal to the value of  subpassCount'VUID-VkRenderPassCreateInfo-pNext-01929 If the pNext chain includes a   structure, if its dependencyCount member is not zero, it must be equal to dependencyCount'VUID-VkRenderPassCreateInfo-pNext-01930 If 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 equal'VUID-VkRenderPassCreateInfo-pNext-02512 If the pNext chain includes a  $ structure, for any element of  pDependencies with a dependencyFlags# member that does not include (, the corresponding element of the  pViewOffsets member of that   instance must be 0'VUID-VkRenderPassCreateInfo-pNext-02513 If the pNext chain includes a  ! structure, elements of its  pViewMasks member must either all be 0, or all not be 0'VUID-VkRenderPassCreateInfo-pNext-02514 If 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 'VUID-VkRenderPassCreateInfo-pNext-02515 If the pNext chain includes a  ) structure, and each element of its  pViewMasks member is 0, correlatedViewMaskCount must be 0/VUID-VkRenderPassCreateInfo-pDependencies-00837 For any element of  pDependencies , if the  srcSubpass is not 7', 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 subpass/VUID-VkRenderPassCreateInfo-pDependencies-00838 For any element of  pDependencies , if the  dstSubpass is not 7', 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,VUID-VkRenderPassCreateInfo-srcSubpass-02517 The  srcSubpass member of each element of  pDependencies must be less than  subpassCount,VUID-VkRenderPassCreateInfo-dstSubpass-02518 The  dstSubpass member of each element of  pDependencies must be less than  subpassCountValid Usage (Implicit)'VUID-VkRenderPassCreateInfo-sType-sType sType must be  'VUID-VkRenderPassCreateInfo-pNext-pNext 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  (VUID-VkRenderPassCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique+VUID-VkRenderPassCreateInfo-flags-parameter flags must% be a valid combination of   values2VUID-VkRenderPassCreateInfo-pAttachments-parameter If attachmentCount is not 0,  pAttachments must( be a valid pointer to an array of attachmentCount valid  structures0VUID-VkRenderPassCreateInfo-pSubpasses-parameter  pSubpasses must# be a valid pointer to an array of  subpassCount valid  structures3VUID-VkRenderPassCreateInfo-pDependencies-parameter If dependencyCount is not 0,  pDependencies must( be a valid pointer to an array of dependencyCount valid  structures4VUID-VkRenderPassCreateInfo-subpassCount-arraylength  subpassCount must be greater than 0See Also,  , C, , , +vulkanYVkFramebufferCreateInfo - Structure specifying parameters of a newly created framebuffer Description5Other than the exceptions listed below, 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.'The exceptions to the general rule are:)For depth/stencil attachments, an aspect canY be used separately as attachment and non-attachment if both accesses are read-only.+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  layout or the m layout, and the attachment resource uses whichever of those two layouts the image accesses do not. Use of non-attachment aspects in these cases 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 . 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 7WF 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 7W::rasterizationSamples. Valid Usage2VUID-VkFramebufferCreateInfo-attachmentCount-00876 attachmentCount must4 be equal to the attachment count specified in  renderPass(VUID-VkFramebufferCreateInfo-flags-02778 If flags does not include  , and attachmentCount is not 0,  pAttachments must( be a valid pointer to an array of attachmentCount valid  handles/VUID-VkFramebufferCreateInfo-pAttachments-00877 If 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 /VUID-VkFramebufferCreateInfo-pAttachments-02633 If 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 /VUID-VkFramebufferCreateInfo-pAttachments-02634 If 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 /VUID-VkFramebufferCreateInfo-pAttachments-00879 If 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 /VUID-VkFramebufferCreateInfo-pAttachments-02552 Each element of  pAttachments; that is used as a fragment density map attachment by  renderPass must not have been created with a flags value including h-VUID-VkFramebufferCreateInfo-renderPass-02553 If  renderPass5 has a fragment density map attachment and  |https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapNonSubsampledImagesnon-subsample image feature& is not enabled, each element of  pAttachments must have been created with a flags value including h@ unless that element is the fragment density map attachment/VUID-VkFramebufferCreateInfo-pAttachments-00880 If flags does not include , each element of  pAttachments must have been created with a K value that matches the K% specified by the corresponding  in  renderPass/VUID-VkFramebufferCreateInfo-pAttachments-00881 If 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  renderPass(VUID-VkFramebufferCreateInfo-flags-04533 If flags does not include , each element of  pAttachmentsO that is used as an input, color, resolve, or depth/stencil attachment by  renderPass must2 have been created with a VkImageCreateInfo::width greater than or equal to width(VUID-VkFramebufferCreateInfo-flags-04534 If flags does not include , each element of  pAttachmentsO that is used as an input, color, resolve, or depth/stencil attachment by  renderPass must2 have been created with a VkImageCreateInfo::height greater than or equal to height(VUID-VkFramebufferCreateInfo-flags-04535 If flags does not include , each element of  pAttachmentsO that is used as an input, color, resolve, or depth/stencil attachment by  renderPass must; have been created with a VkImageViewCreateInfo::subresourceRange.layerCount greater than or equal to layers-VUID-VkFramebufferCreateInfo-renderPass-04536 If  renderPass> was specified with non-zero view masks, each element of  pAttachmentsT that is used as an input, color, resolve, or depth/stencil attachment by  renderPass must have a  layerCountW greater than the index of the most significant bit set in any of those view masks-VUID-VkFramebufferCreateInfo-renderPass-02746 If  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 masks-VUID-VkFramebufferCreateInfo-renderPass-02747 If  renderPassG was not specified with non-zero view masks, each element of  pAttachments that is referenced by fragmentDensityMapAttachment must have a  layerCount equal to 1/VUID-VkFramebufferCreateInfo-pAttachments-02555 If 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\rceil/VUID-VkFramebufferCreateInfo-pAttachments-02556 If 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\rceil(VUID-VkFramebufferCreateInfo-flags-04537 If flags does not include  , and  renderPass> was specified with non-zero view masks, each element of  pAttachments that is used as a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment by  renderPass must have a  layerCount that is either 1`, or greater than the index of the most significant bit set in any of those view masks(VUID-VkFramebufferCreateInfo-flags-04538 If flags does not include  , and  renderPassB was not specified with non-zero view masks, each element of  pAttachments that is used as a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment by  renderPass must have a  layerCount that is either 1, or greater than layers(VUID-VkFramebufferCreateInfo-flags-04539 If flags does not include , an element of  pAttachments that is used as a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment must$ have a width at least as large as #width \  texelWidth# , where  texelWidth is the largest value of $shadingRateAttachmentTexelSize.width in a h& which references that attachment(VUID-VkFramebufferCreateInfo-flags-04540 If flags does not include , an element of  pAttachments that is used as a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment must% have a height at least as large as #height --  texelHeight # , where  texelHeight is the largest value ofvulkanDVkAttachmentReference - Structure specifying an attachment reference Valid Usage'VUID-VkAttachmentReference-layout-00857 If  attachment is not , layout must not be , , , ;, <, =, or >Valid Usage (Implicit)+VUID-VkAttachmentReference-layout-parameter layout must be a valid O valueSee AlsoO, , 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 5W pipeline stage. Load operations for attachments with a color format execute in the 4 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 6X pipeline stage. Store operations for attachments with a color format execute in the 4 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 S 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 , 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.VUID-VkAttachmentDescription-finalLayout-00843  finalLayout must not be  or )VUID-VkAttachmentDescription-format-03280 If format is a color format,  initialLayout must not be ?, , , or )VUID-VkAttachmentDescription-format-03281 If format! is a depth/stencil format,  initialLayout must not be @)VUID-VkAttachmentDescription-format-03282 If format is a color format,  finalLayout must not be ?, , , or )VUID-VkAttachmentDescription-format-03283 If format! is a depth/stencil format,  finalLayout must not be @>VUID-VkAttachmentDescription-separateDepthStencilLayouts-03284 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 >>VUID-VkAttachmentDescription-separateDepthStencilLayouts-03285 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 >)VUID-VkAttachmentDescription-format-03286 If format is a color format,  initialLayout must not be ;, <, =, or >)VUID-VkAttachmentDescription-format-03287 If format is a color format,  finalLayout must not be ;, <, =, or >)VUID-VkAttachmentDescription-format-03288 If formatT is a depth/stencil format which includes both depth and stencil aspects,  initialLayout must not be ;, <, =, or >)VUID-VkAttachmentDescription-format-03289 If formatT is a depth/stencil format which includes both depth and stencil aspects,  finalLayout must not be ;, <, =, or >)VUID-VkAttachmentDescription-format-03290 If formatK is a depth/stencil format which includes only the depth aspect,  initialLayout must not be = or >)VUID-VkAttachmentDescription-format-03291 If formatK is a depth/stencil format which includes only the depth aspect,  finalLayout must not be = or >)VUID-VkAttachmentDescription-format-03292 If formatM is a depth/stencil format which includes only the stencil aspect,  initialLayout must not be ; or <)VUID-VkAttachmentDescription-format-03293 If formatM is a depth/stencil format which includes only the stencil aspect,  finalLayout must not be ; or <Valid Usage (Implicit),VUID-VkAttachmentDescription-flags-parameter flags must% be a valid combination of  values-VUID-VkAttachmentDescription-format-parameter format must be a valid K value.VUID-VkAttachmentDescription-samples-parameter samples must be a valid a value-VUID-VkAttachmentDescription-loadOp-parameter loadOp must be a valid  value.VUID-VkAttachmentDescription-storeOp-parameter storeOp must be a valid  value4VUID-VkAttachmentDescription-stencilLoadOp-parameter  stencilLoadOp must be a valid  value5VUID-VkAttachmentDescription-stencilStoreOp-parameter stencilStoreOp must be a valid  value4VUID-VkAttachmentDescription-initialLayout-parameter  initialLayout must be a valid O value2VUID-VkAttachmentDescription-finalLayout-parameter  finalLayout must be a valid O valueSee Also, , , K, O, , 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 7.+vulkan dstSubpassC is the subpass index of the second subpass in the dependency, or 7.+vulkan srcStageMask is a bitmask of 9 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 9 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 W@ 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 . to signify that this attachment is not used.+vulkanlayout is a OE 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 KU 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  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  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 Usage*VUID-vkCreateFramebuffer-pCreateInfo-02777 If pCreateInfo->flags does not include  , and attachmentCount is not 0, each element of pCreateInfo->pAttachments must have been created on deviceValid Usage (Implicit))VUID-vkCreateFramebuffer-device-parameter device must be a valid  handle.VUID-vkCreateFramebuffer-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid  structure-VUID-vkCreateFramebuffer-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure/VUID-vkCreateFramebuffer-pFramebuffer-parameter  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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , , +vulkan=A convenience wrapper to make a compatible pair of calls to + and +To ensure that + is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.+vulkan3vkDestroyFramebuffer - Destroy a framebuffer object Valid Usage+VUID-vkDestroyFramebuffer-framebuffer-00892+ All submitted commands that refer to  framebuffer must have completed execution+VUID-vkDestroyFramebuffer-framebuffer-00893 If  were provided when  framebuffer1 was created, a compatible set of callbacks must be provided here+VUID-vkDestroyFramebuffer-framebuffer-00894 If no  were provided when  framebuffer was created,  pAllocator must be NULLValid Usage (Implicit)*VUID-vkDestroyFramebuffer-device-parameter device must be a valid  handle/VUID-vkDestroyFramebuffer-framebuffer-parameter If  framebuffer is not 8,  framebuffer must be a valid  handle.VUID-vkDestroyFramebuffer-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure,VUID-vkDestroyFramebuffer-framebuffer-parent If  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)(VUID-vkCreateRenderPass-device-parameter device must be a valid  handle-VUID-vkCreateRenderPass-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure,VUID-vkCreateRenderPass-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure-VUID-vkCreateRenderPass-pRenderPass-parameter  pRenderPass must be a valid pointer to a y handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , y, +vulkan=A convenience wrapper to make a compatible pair of calls to + and +To ensure that + is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.+vulkan2vkDestroyRenderPass - Destroy a render pass object Valid Usage)VUID-vkDestroyRenderPass-renderPass-00873+ All submitted commands that refer to  renderPass must have completed execution)VUID-vkDestroyRenderPass-renderPass-00874 If  were provided when  renderPass1 was created, a compatible set of callbacks must be provided here)VUID-vkDestroyRenderPass-renderPass-00875 If no  were provided when  renderPass was created,  pAllocator must be NULLValid Usage (Implicit))VUID-vkDestroyRenderPass-device-parameter device must be a valid  handle-VUID-vkDestroyRenderPass-renderPass-parameter If  renderPass is not 8,  renderPass must be a valid y handle-VUID-vkDestroyRenderPass-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure*VUID-vkDestroyRenderPass-renderPass-parent If  renderPass is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  renderPass must be externally synchronizedSee Also, , y+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 u# (the horizontal granularity).the offset.y member in  renderArea is a multiple of the height of the returned u! (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 }. 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 }.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)0VUID-vkGetRenderAreaGranularity-device-parameter device must be a valid  handle4VUID-vkGetRenderAreaGranularity-renderPass-parameter  renderPass must be a valid y handle6VUID-vkGetRenderAreaGranularity-pGranularity-parameter  pGranularity must be a valid pointer to a u structure1VUID-vkGetRenderAreaGranularity-renderPass-parent  renderPass must1 have been created, allocated, or retrieved from deviceSee Also, u, y+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.GHWy+++++++++++++++++++++++++++++++++++++++++++           +++++++++++++++++++++++++++++++++++++++++++++++++++++++++yW           GH         None("#%&'-./1789;=>?FHIMSUVX_dghklmqQ 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:uAZ specifies that the fragment density map will be read by the device during uGS specifies that the fragment density map will be read by the host during I 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 . Valid UsageSVUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02547 If fragmentDensityMapAttachment is not , fragmentDensityMapAttachment must be less than 6~::attachmentCountSVUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02548 If fragmentDensityMapAttachment is not , fragmentDensityMapAttachment must not be an element of 6::pInputAttachments, 6::pColorAttachments, 6::pResolveAttachments, 6::pDepthStencilAttachment , or 6::pPreserveAttachments for any subpassSVUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02549 If fragmentDensityMapAttachment is not , layout must be equal to B , or CSVUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02550 If fragmentDensityMapAttachment is not , fragmentDensityMapAttachment must% reference an attachment with a loadOp equal to D or ESVUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02551 If fragmentDensityMapAttachment is not , fragmentDensityMapAttachment must% reference an attachment with a storeOp equal to FValid Usage (Implicit)<VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-sType-sType sType must be WVUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-parameter fragmentDensityMapAttachment must be a valid  structureSee Also, CvulkanVkPhysicalDeviceFragmentDensityMapPropertiesEXT - 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 T H, it is filled with the implementation-dependent limits and properties.See Alsop, u, CvulkanVkPhysicalDeviceFragmentDensityMapFeaturesEXT - 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  2 to enable the features.Valid Usage (Implicit)See Alsop, C,vulkanfragmentDensityMapAttachment9 is the fragment density map to use for the render pass.,vulkan"limits-minfragmentdensitytexelsize minFragmentDensityTexelSize is the minimum  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-fragment-density-texel-sizefragment density texel size.,vulkan"limits-maxfragmentdensitytexelsize maxFragmentDensityTexelSize- is the maximum fragment density texel size.,vulkan!limits-fragmentdensityinvocations fragmentDensityInvocations' specifies whether the implementation mayH invoke additional fragment shader invocations for each covered sample.,vulkanfeatures-fragmentDensityMap fragmentDensityMap specifies whether the implementation supports render passes with a fragment density map attachment. If this feature is not enabled and the pNext chain of 6~ includes a  structure, fragmentDensityMapAttachment must be .,vulkan"features-fragmentDensityMapDynamic fragmentDensityMapDynamic| specifies whether the implementation supports dynamic fragment density map image views. If this feature is not enabled, uA must not be included in 1::flags.,vulkan.features-fragmentDensityMapNonSubsampledImages %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_dghklmqIvulkanNVkMemoryAllocateInfo - Structure containing parameters of a memory allocation Description7The internal data of an allocated device memory object must` include a reference to implementation-specific resources, referred to as the memory object s payload. Applications can also import and export that internal data to and from device memory objects to share data between Vulkan instances and other compatible APIs. A 5 structure defines a memory import operation if its pNext0 chain includes one of the following structures: with a non-zero  handleType value with a non-zero  handleType value with a non-zero  handleType value with a non-NULL buffer value1 with a non-zero  handleType valueOIf the parameters define an import operation and the external handle type is A, A, or A, allocationSize is ignored. The implementation must2 query the size of these allocations from the OS.Whether device memory objects constructed via a memory import operation hold a reference to their payload depends on the properties of the handle type used to perform the import, as defined below for each valid handle type. Importing 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.Importing memory mustA not increase overall heap usage within a system. However, they must- affect the following per-process values: * V::maxMemoryAllocationCount * :: heapUsageWhen performing a memory import operation, it is the responsibility of the application to ensure the external handles and their associated payloads meet all valid usage requirements. However, implementations must{ perform sufficient validation of external handles and payloads 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 Usage%VUID-VkMemoryAllocateInfo-pNext-00639 If the pNext chain includes a ? structure, and any of the handle types specified in :: handleTypes: require a dedicated allocation, as reported by T in P^::/externalMemoryProperties.externalMemoryFeatures or P[::/externalMemoryProperties.externalMemoryFeatures , the pNext chain must include a  or  structure with either its image or buffer' member set to a value other than 8.%VUID-VkMemoryAllocateInfo-pNext-00640 If the pNext chain includes a  structure, it must not include a - or 3 structure%VUID-VkMemoryAllocateInfo-pNext-00641 If the pNext chain includes a  structure, it must not include a 2 structure.VUID-VkMemoryAllocateInfo-allocationSize-01742 If 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 mustH match those specified when the payload being imported was created.$VUID-VkMemoryAllocateInfo-None-00643 If the parameters define an import operation and the external handle specified was created by the Vulkan API, the device mask specified by  mustI match that specified when the payload being imported was allocated.$VUID-VkMemoryAllocateInfo-None-00644 If 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 ,9 must} match the list of physical devices that comprise the logical device on which the payload was originally allocated./VUID-VkMemoryAllocateInfo-memoryTypeIndex-00645 If 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 W.VUID-VkMemoryAllocateInfo-allocationSize-01743 If the parameters define an import operation, the external handle was created by the Vulkan API, and the external handle type is G or H, then the values of allocationSize and memoryTypeIndex mustH match those specified when the payload being imported was created..VUID-VkMemoryAllocateInfo-allocationSize-00647X If the parameters define an import operation and the external handle type is A, allocationSize mustg match the size specified when creating the Direct3D 12 heap from which the payload was extracted./VUID-VkMemoryAllocateInfo-memoryTypeIndex-00648 If 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 U/VUID-VkMemoryAllocateInfo-memoryTypeIndex-01872? If the protected memory feature is not enabled, the ::memoryTypeIndex must3 not indicate a memory type that reports o/VUID-VkMemoryAllocateInfo-memoryTypeIndex-01744p If 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 V.VUID-VkMemoryAllocateInfo-allocationSize-01745c If the parameters define an import operation and the external handle is a host pointer, allocationSize must be an integer multiple of ::minImportedHostPointerAlignment%VUID-VkMemoryAllocateInfo-pNext-02805g If 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 8%VUID-VkMemoryAllocateInfo-pNext-02806g If 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 8.VUID-VkMemoryAllocateInfo-allocationSize-02383X If the parameters define an import operation and the external handle type is AZ, allocationSize must be the size returned by % for the Android hardware buffer%VUID-VkMemoryAllocateInfo-pNext-02384X If the parameters define an import operation and the external handle type is AZ, and the pNext chain does not include a  structure or ::image is 8#, 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_BUFFER/VUID-VkMemoryAllocateInfo-memoryTypeIndex-02385X If the parameters define an import operation and the external handle type is AZ, memoryTypeIndex must" be one of those returned by % for the Android hardware buffer%VUID-VkMemoryAllocateInfo-pNext-01874C If the parameters do not define an import operation, and the pNext chain includes a  structure with AZ included in its  handleTypes member, and the pNext chain includes a  structure with image not equal to 8, then allocationSize must be 0 , otherwise allocationSize must be greater than 0%VUID-VkMemoryAllocateInfo-pNext-02386t If 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 8*, the Android hardware buffer s Y::usage must include at least one of %AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER or 'AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE%VUID-VkMemoryAllocateInfo-pNext-02387t If 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 8, the format of image must be % or the format returned by  in ::format% for the Android hardware buffer%VUID-VkMemoryAllocateInfo-pNext-02388t If 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 88, the width, height, and array layer dimensions of image( and the Android hardware buffer s AHardwareBuffer_Desc must be identical%VUID-VkMemoryAllocateInfo-pNext-02389t If 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., and the Android hardware buffer s Y::usage includes )AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE, the image must have a complete mipmap chain%VUID-VkMemoryAllocateInfo-pNext-02586t If 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., and the Android hardware buffer s Y::usage does not include )AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE , the image must have exactly one mipmap level%VUID-VkMemoryAllocateInfo-pNext-02390t If 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$, 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::usage4VUID-VkMemoryAllocateInfo-opaqueCaptureAddress-03329 If (::opaqueCaptureAddress is not zero, ::flags must include KI%VUID-VkMemoryAllocateInfo-flags-03330 If ::flags includes KI, the  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressCaptureReplay bufferDeviceAddressCaptureReplay feature must be enabled%VUID-VkMemoryAllocateInfo-flags-03331 If ::flags includes K, the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressbufferDeviceAddress feature must be enabled%VUID-VkMemoryAllocateInfo-pNext-03332 If the pNext chain includes a  structure, (::opaqueCaptureAddress must be zero4VUID-VkMemoryAllocateInfo-opaqueCaptureAddress-033339 If the parameters define an import operation, (::opaqueCaptureAddress must be zero$VUID-VkMemoryAllocateInfo-None-04749X If the parameters define an import operation and the external handle type is A, the value of memoryTypeIndex must5 be an index identifying a memory type from the memoryTypeBits field of the , structure populated by a call to X..VUID-VkMemoryAllocateInfo-allocationSize-04750X If the parameters define an import operation and the external handle type is A, the value of allocationSize must be greater than 0 and mustI be less than or equal to the size of the VMO as determined by zx_vmo_get_size(handle) where handle8 is the VMO handle to the imported external memory.Valid Usage (Implicit)%VUID-VkMemoryAllocateInfo-sType-sType sType must be *%VUID-VkMemoryAllocateInfo-pNext-pNext 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, , , , , 2, 1, , , (, or &VUID-VkMemoryAllocateInfo-sType-unique The sType" value of each struct in the pNext chain must be uniqueSee Alson, C, ,9vulkan@VkMappedMemoryRange - Structure specifying a mapped memory range Valid Usage%VUID-VkMappedMemoryRange-memory-00684 memory must be currently host mapped#VUID-VkMappedMemoryRange-size-00685 If size is not equal to , offset and size mustJ specify a range contained within the currently mapped range of memory#VUID-VkMappedMemoryRange-size-00686 If size is equal to , offset must. be within the currently mapped range of memory%VUID-VkMappedMemoryRange-offset-00687 offset must be a multiple of  ::nonCoherentAtomSize#VUID-VkMappedMemoryRange-size-01389 If size is equal to ), the end of the current mapping of memory must either be a multiple of  ::nonCoherentAtomSizee bytes from the beginning of the memory object, or be equal to the end of the memory object#VUID-VkMappedMemoryRange-size-01390 If size is not equal to , size must# either be a multiple of  ::nonCoherentAtomSize , or offset plus size must equal the size of memoryValid Usage (Implicit)$VUID-VkMappedMemoryRange-sType-sType sType must be )$VUID-VkMappedMemoryRange-pNext-pNext pNext must be NULL)VUID-VkMappedMemoryRange-memory-parameter memory must be a valid  handleSee Also, n, C, ,?, ,@,2vulkanmemory2 is the memory object to which this range belongs.,3vulkanoffsetH is the zero-based byte offset from the beginning of the memory object.,4vulkansize" is either the size of range, or  to affect the range from offset5 to the end of the current mapping of the allocation.,6vulkanpNext is NULL6 or a pointer to a structure extending this structure.,7vulkanallocationSize' is the size of the allocation in bytes,8vulkanmemoryTypeIndex1 is an index identifying a memory type from the  memoryTypes array of the   structure,9vulkan)vkAllocateMemory - Allocate device memory DescriptionAllocations returned by ,9% 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  mayF be restricted by implementation- or platform-dependent limits. 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.NoteFor historical reasons, if maxMemoryAllocationCount0 is exceeded, some implementations may return 7. Exceeding this limit will result in undefined behavior, and an application should not rely on the use of the returned error code in order to identify when the limit is reached.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 Usage)VUID-vkAllocateMemory-pAllocateInfo-01713 pAllocateInfo->allocationSize must be less than or equal to  :: memoryHeapsemindex].size where memindex =  :: memoryTypesD[pAllocateInfo->memoryTypeIndex].heapIndex as returned by   for the / that device was created from)VUID-vkAllocateMemory-pAllocateInfo-01714 pAllocateInfo->memoryTypeIndex must be less than  ::memoryTypeCount as returned by   for the / that device was created from0VUID-vkAllocateMemory-deviceCoherentMemory-02790 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 oJ4VUID-vkAllocateMemory-maxMemoryAllocationCount-04101 There must be less than  ::maxMemoryAllocationCountB device memory allocations currently allocated on the device.Valid Usage (Implicit)&VUID-vkAllocateMemory-device-parameter device must be a valid  handle-VUID-vkAllocateMemory-pAllocateInfo-parameter  pAllocateInfo must be a valid pointer to a valid  structure*VUID-vkAllocateMemory-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure'VUID-vkAllocateMemory-pMemory-parameter pMemory must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?"See Also, , , ,:vulkan=A convenience wrapper to make a compatible pair of calls to ,9 and ,;To ensure that ,; is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last 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 must not be used afterwards. Freeing a memory object releases the reference it held, if any, to its payload. If there are still any bound images or buffers, the memory object s payload may8 not be immediately released by the implementation, but must be released by the time all bound images and buffers have been destroyed. Once all references to a payload are 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 UsageVUID-vkFreeMemory-memory-00677+ All submitted commands that refer to memory (via images or buffers) must have completed executionValid Usage (Implicit)"VUID-vkFreeMemory-device-parameter device must be a valid  handle"VUID-vkFreeMemory-memory-parameter If memory is not 8, memory must be a valid  handle&VUID-vkFreeMemory-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structureVUID-vkFreeMemory-memory-parent If memory is a valid handle, it must1 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 oK 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  ::nonCoherentAtomSizeA, and round the end of the range up to the nearest multiple of  ::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 UsageVUID-vkMapMemory-memory-00678 memory must" not be currently host mappedVUID-vkMapMemory-offset-00679 offset must be less than the size of memoryVUID-vkMapMemory-size-00680 If size is not equal to , size must be greater than 0VUID-vkMapMemory-size-00681 If size is not equal to , size must/ be less than or equal to the size of the memory minus offsetVUID-vkMapMemory-memory-00682 memory must= have been created with a memory type that reports oLVUID-vkMapMemory-memory-00683 memory must5 not have been allocated with multiple instancesValid Usage (Implicit)!VUID-vkMapMemory-device-parameter device must be a valid  handle!VUID-vkMapMemory-memory-parameter memory must be a valid  handle"VUID-vkMapMemory-flags-zerobitmask flags must be 0!VUID-vkMapMemory-ppData-parameter ppData must+ be a valid pointer to a pointer valueVUID-vkMapMemory-memory-parent memory 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?<See Also, , n, U,=vulkan<A convenience wrapper to make a compatible pair of calls to ,< and ,>To ensure that ,> is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.,>vulkan7vkUnmapMemory - Unmap a previously mapped memory object Valid UsageVUID-vkUnmapMemory-memory-00689 memory must be currently host mappedValid Usage (Implicit)#VUID-vkUnmapMemory-device-parameter device must be a valid  handle#VUID-vkUnmapMemory-memory-parameter memory must be a valid  handle VUID-vkUnmapMemory-memory-parent memory 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 M  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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See 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 M and N  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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, ,AvulkanPvkGetDeviceMemoryCommitment - 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, , n,9vulkandevice, 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./VUID-vkFlushMappedMemoryRanges-device-parameter device must be a valid  handlevulkan pMemoryRanges is a pointer to an array of 3 structures describing the memory ranges to flush.6VUID-vkFlushMappedMemoryRanges-pMemoryRanges-parameter  pMemoryRanges must# be a valid pointer to an array of memoryRangeCount valid  structures,@vulkandevice3 is the logical device that owns the memory ranges.4VUID-vkInvalidateMappedMemoryRanges-device-parameter device must be a valid  handlevulkan pMemoryRanges is a pointer to an array of 8 structures describing the memory ranges to invalidate.;VUID-vkInvalidateMappedMemoryRanges-pMemoryRanges-parameter  pMemoryRanges must$ be a valid pointer to an array of memoryRangeCount valid  structures,Avulkandevice, is the logical device that owns the memory.1VUID-vkGetDeviceMemoryCommitment-device-parameter device must be a valid  handlevulkanmemory$ is the memory object being queried.-VUID-vkGetDeviceMemoryCommitment-memory-00690 memory must5 have been created with a memory type that reports o1VUID-vkGetDeviceMemoryCommitment-memory-parameter memory must be a valid  handle.VUID-vkGetDeviceMemoryCommitment-memory-parent memory must2 have been created, allocated, or retrieved from deviceU,5,6,7,8,1,4,3,2,9,:,;,<,=,>,?,@,A,9,:,;,<,=,>,?,@,A,5,6,7,8,1,4,3,2U1None("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanVVkImageViewCreateInfo - 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. The implicit usage can be overriden by adding a   structure to the pNext chain, but the view usage mustg be a subset of the image usage. 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 x, the implicit usage is equal to `:: stencilUsage.If  aspectMask includes only x, 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.If image was created with the O 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 P# 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 P 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 C% to that used to create the sampler must be passed to ,` in a  included in the pNext chain of . Conversely, if a C object is passed to ,`, an identically defined C 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 xQ, 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 O 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 x, x, or x, 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 = R widthJ "e 1 heightI = 1 depthJ = 1  arrayLayersD "e 1 samplesF = 1  viewType7 =  baseArrayLayer1 "e 0  layerCount = 1 A __1D, 1, 0__   imageType = R widthJ "e 1 heightI = 1 depthJ = 1  arrayLayersD "e 1 samplesF = 1  viewType7 =  baseArrayLayer1 "e 0  layerCount "e 1 A __2D, 0, 0__   imageType = S widthJ "e 1 heightI "e 1 depthJ = 1  arrayLayersD "e 1 samplesF = 1  viewType7 =  baseArrayLayer1 "e 0  layerCount = 1 A __2D, 1, 0__   imageType = S 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 = S widthJ "e 1 heightI "e 1 depthJ = 1  arrayLayersD "e 1 samplesF > 1  viewType7 =  baseArrayLayer1 "e 0  layerCount = 1 A __2D, 1, 1__   imageType = S 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 = S widthJ "e 1 height = width? depthJ = 1  arrayLayersD "e 6 samplesH = 1 flagsJ includes T  viewType7 =  baseArrayLayer1 "e 0  layerCount7 = 6 b __CUBE, 1, 0__   imageType = S widthJ "e 1 heightI = width depthJ = 1 NN "e 1  arrayLayers "e 6 N: samplesH = 1 flagsJ includes T  viewType7 =  baseArrayLayer1 "e 0  layerCount = 6 N, Ni "e 1 A __3D, 0, 0__   imageType = U widthJ "e 1 heightI "e 1 depthJ "e 1  arrayLayersD = 1 samplesF = 1  viewType7 =  baseArrayLayer1 = 0  layerCount = 1  __3D, 0, 0__   imageType = U 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 = U 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 Usage&VUID-VkImageViewCreateInfo-image-01003 If image was not created with T then viewType must not be  or 2)VUID-VkImageViewCreateInfo-viewType-01004 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 &VUID-VkImageViewCreateInfo-image-01005 If image was created with U but without ! set then viewType must not be  or &VUID-VkImageViewCreateInfo-image-04441 image must have been created with a usageF value containing at least one of the usages defined in the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#valid-imageview-imageusagevalid image usage list for image views%VUID-VkImageViewCreateInfo-None-02273 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 bit&VUID-VkImageViewCreateInfo-usage-02274 If usage contains , 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 {%&VUID-VkImageViewCreateInfo-usage-02275 If 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 {V&VUID-VkImageViewCreateInfo-usage-02276 If 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 {5&VUID-VkImageViewCreateInfo-usage-02277 If 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 {6&VUID-VkImageViewCreateInfo-usage-02652 If 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 at least one of {5 or {61VUID-VkImageViewCreateInfo-subresourceRange-01478 subresourceRange.baseMipLevel must be less than the  mipLevels specified in 0 when image was created1VUID-VkImageViewCreateInfo-subresourceRange-01718 If subresourceRange.levelCount is not W, subresourceRange.baseMipLevel + subresourceRange.levelCount must be less than or equal to the  mipLevels specified in 0 when image was created&VUID-VkImageViewCreateInfo-image-02571 If image was created with usage containing , subresourceRange.levelCount must be 1&VUID-VkImageViewCreateInfo-image-01482 If 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 created1VUID-VkImageViewCreateInfo-subresourceRange-01483 If subresourceRange.layerCount is not X, 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 created&VUID-VkImageViewCreateInfo-image-02724 If 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 Sizing1VUID-VkImageViewCreateInfo-subresourceRange-02725 If subresourceRange.layerCount is not X, 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 Sizing&VUID-VkImageViewCreateInfo-image-01761 If image was created with the O! flag, but without the P 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 Classes&VUID-VkImageViewCreateInfo-image-01583 If image was created with the P flag, format must be compatible with, or mustB be an uncompressed format that is size-compatible with, the format used to create image&VUID-VkImageViewCreateInfo-image-01584 If image was created with the P flag, the  levelCount and  layerCount members of subresourceRange must both be 1&VUID-VkImageViewCreateInfo-image-04739 If image was created with the P flag and format is a non-compressed format, viewType must not be &VUID-VkImageViewCreateInfo-pNext-01585 If a f}$ structure was included in the pNext chain of the 0# structure used when creating image and f}::viewFormatCount is not zero then format must be one of the formats in f}:: pViewFormats&VUID-VkImageViewCreateInfo-image-01586 If image was created with the O 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 x, x, or x , then format must be compatible with the K 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-planes&VUID-VkImageViewCreateInfo-image-01762 If image$ was not created with the O 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 xQ, format must be identical to the format used to create image'VUID-VkImageViewCreateInfo-format-04724 If 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 the pNext chain must include a A structure with a conversion value other than VK_NULL_HANDLE'VUID-VkImageViewCreateInfo-format-04714 If format has a _422 or _420 suffix then image must< have been created with a width that is a multiple of 2'VUID-VkImageViewCreateInfo-format-04715 If format has a _420 suffix then image must= have been created with a height that is a multiple of 2&VUID-VkImageViewCreateInfo-pNext-01970 If the pNext chain includes a  structure with a  conversion value other than 8, 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 swizzle&VUID-VkImageViewCreateInfo-image-01020 If image is non-sparse then it must7 be bound completely and contiguously to a single / object1VUID-VkImageViewCreateInfo-subResourceRange-01021 subresourceRange 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 table&VUID-VkImageViewCreateInfo-image-02399 If 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 &VUID-VkImageViewCreateInfo-image-02400 If 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 image&VUID-VkImageViewCreateInfo-image-02401 If 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 swizzle&VUID-VkImageViewCreateInfo-image-02086 If image was created with usage containing Y, viewType must be  or &VUID-VkImageViewCreateInfo-image-02087 If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshadingRateImage feature is enabled, and If image was created with usage containing v, format must be &VUID-VkImageViewCreateInfo-usage-04550 If the  thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate%attachmentFragmentShadingRate feature is enabled, and the usage" for the image view includes Y", 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 {Z&VUID-VkImageViewCreateInfo-usage-04551 If the  thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate%attachmentFragmentShadingRate feature is enabled, the usage" for the image view includes Y, and  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-layeredShadingRateAttachmentslayeredShadingRateAttachments is ., subresourceRange.layerCount must be 1&VUID-VkImageViewCreateInfo-flags-02572 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 &VUID-VkImageViewCreateInfo-flags-03567 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 &VUID-VkImageViewCreateInfo-flags-03568 If flags contains , flags must not contain &VUID-VkImageViewCreateInfo-image-03569 If image was created with flags containing h and usage containing , subresourceRange.layerCount must be less than or equal to mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxSubsampledArrayLayers::maxSubsampledArrayLayers&VUID-VkImageViewCreateInfo-flags-04116 If flags does not contain  and image was created with usage containing  , its flags must not contain any of , , , or &VUID-VkImageViewCreateInfo-pNext-02662 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 image&VUID-VkImageViewCreateInfo-pNext-02663 If the pNext chain includes a   structure, image was created with a ` structure included in the pNext chain of 0 , and subResourceRange.aspectMask includes x , 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 image&VUID-VkImageViewCreateInfo-pNext-02664 If 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 x , 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 image)VUID-VkImageViewCreateInfo-viewType-02960 If viewType is  and subresourceRange.layerCount is not X, subresourceRange.layerCount must be 6)VUID-VkImageViewCreateInfo-viewType-02961 If viewType is  and subresourceRange.layerCount is not X, subresourceRange.layerCount must be a multiple of 6)VUID-VkImageViewCreateInfo-viewType-02962 If viewType is  and subresourceRange.layerCount is X&, the remaining number of layers must be 6)VUID-VkImageViewCreateInfo-viewType-02963 If viewType is  and subresourceRange.layerCount is X&, the remaining number of layers must be a multiple of 67VUID-VkImageViewCreateInfo-imageViewFormatSwizzle-04465 If the VK_KHR_portability_subset extension is enabled, and ::imageViewFormatSwizzle is ., all elements of  components must be .@VUID-VkImageViewCreateInfo-imageViewFormatReinterpretation-04466 If the VK_KHR_portability_subset extension is enabled, and ::imageViewFormatReinterpretation is . , the K in format must not contain a different number of components, or a different number of bits in each component, than the format of the  in image.Valid Usage (Implicit)&VUID-VkImageViewCreateInfo-sType-sType sType must be  &VUID-VkImageViewCreateInfo-pNext-pNext 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 'VUID-VkImageViewCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique*VUID-VkImageViewCreateInfo-flags-parameter flags must% be a valid combination of  values*VUID-VkImageViewCreateInfo-image-parameter image must be a valid  handle-VUID-VkImageViewCreateInfo-viewType-parameter viewType must be a valid  value+VUID-VkImageViewCreateInfo-format-parameter format must be a valid K value/VUID-VkImageViewCreateInfo-components-parameter  components must be a valid  structure5VUID-VkImageViewCreateInfo-subresourceRange-parameter subresourceRange must be a valid  structureSee Also, K, , , , , C, ,`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 W and X; 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 X:, is not a multiple of 6, the last cube map in the array must not be accessed. aspectMask must be only xQ, x or x 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 x and x, 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 xQ.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 O , and the  aspectMask of the  s subresourceRange must be x, x or x. Valid Usage-VUID-VkImageSubresourceRange-levelCount-01720 If  levelCount is not W, it must be greater than 0-VUID-VkImageSubresourceRange-layerCount-01721 If  layerCount is not X, it must be greater than 0-VUID-VkImageSubresourceRange-aspectMask-01670 If  aspectMask includes xQ, then it must not include any of x, x, or x-VUID-VkImageSubresourceRange-aspectMask-02278  aspectMask must not include &VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT for any index iValid Usage (Implicit)1VUID-VkImageSubresourceRange-aspectMask-parameter  aspectMask must be a valid combination of x values7VUID-VkImageSubresourceRange-aspectMask-requiredbitmask  aspectMask must not be 0See Also, 5, , , , vulkanCVkComponentMapping - Structure specifying a color component mappingValid Usage (Implicit)See Also, , , X,NvulkanpNext is NULL6 or a pointer to a structure extending this structure.,Ovulkanflags is a bitmask of 5 describing additional parameters of the image view.,Pvulkanimage is a $ on which the view will be created.,QvulkanviewType is a . value specifying the type of the image view.,Rvulkanformat is a KM describing the format and type used to interpret texel blocks in the image.,Svulkan components is a  specifies a remapping of color components (or of depth or stencil components after they have been converted into color components).,TvulkansubresourceRange is a S selecting the set of mipmap levels and array layers to be accessible to the view.,Vvulkan aspectMask is a bitmask of xC specifying which aspect(s) of the image are included in the view.,Wvulkan baseMipLevel2 is the first mipmap level accessible to the view.,Xvulkan levelCount0 is the number of mipmap levels (starting from  baseMipLevel) accessible to the view.,YvulkanbaseArrayLayer1 is the first array layer accessible to the view.,Zvulkan layerCount/ is the number of array layers (starting from baseArrayLayer) accessible to the view.,\vulkanr is a Q specifying the component value placed in the R component of the output vector.#VUID-VkComponentMapping-r-parameter r must be a valid  value,]vulkang is a Q specifying the component value placed in the G component of the output vector.#VUID-VkComponentMapping-g-parameter g must be a valid  value,^vulkanb is a Q specifying the component value placed in the B component of the output vector.#VUID-VkComponentMapping-b-parameter b must be a valid  value,_vulkana is a Q specifying the component value placed in the A component of the output vector.#VUID-VkComponentMapping-a-parameter a must be a valid  value,`vulkan?vkCreateImageView - Create an image view from an existing imageValid Usage (Implicit)'VUID-vkCreateImageView-device-parameter device must be a valid  handle,VUID-vkCreateImageView-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure+VUID-vkCreateImageView-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure&VUID-vkCreateImageView-pView-parameter pView must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , , ,avulkan=A convenience wrapper to make a compatible pair of calls to ,` and ,bTo ensure that ,b is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.,bvulkan1vkDestroyImageView - Destroy an image view object Valid Usage'VUID-vkDestroyImageView-imageView-01026+ All submitted commands that refer to  imageView must have completed execution'VUID-vkDestroyImageView-imageView-01027 If  were provided when  imageView1 was created, a compatible set of callbacks must be provided here'VUID-vkDestroyImageView-imageView-01028 If no  were provided when  imageView was created,  pAllocator must be NULLValid Usage (Implicit)(VUID-vkDestroyImageView-device-parameter device must be a valid  handle+VUID-vkDestroyImageView-imageView-parameter If  imageView is not 8,  imageView must be a valid  handle,VUID-vkDestroyImageView-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure(VUID-vkDestroyImageView-imageView-parent If  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.,bvulkandevice4 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,M,O,N,P,R,Q,S,T,U,V,Z,W,X,Y,[,_,^,],\,`,a,bB,`,a,b,[,_,^,],\,U,V,Z,W,X,Y,M,O,N,P,R,Q,S,TNone("#%&'-./1789;=>?FHIMSUVX_dghklmq vulkanPVkPipelineStageFlagBits2KHR - Pipeline stage flags for VkPipelineStageFlags2KHR DescriptionNoteThe TOP and BOTTOMA pipeline stages are deprecated, and applications should prefer , and ,.NoteThe ] bitmask goes beyond the 31 individual bit flags allowable within a C99 enum, which is how 9O is defined. The first 31 values are common to both, and are interchangeable.See Also!No cross-references are availablevulkan@VkSubmitInfo2KHR - Structure specifying a queue submit operation Valid Usage%VUID-VkSubmitInfo2KHR-semaphore-03881+ If the same semaphore is used as the  semaphore# member of both an element of pSignalSemaphoreInfos and pWaitSemaphoreInfos7, and that semaphore is a timeline semaphore, the value member of the pSignalSemaphoreInfos element must be greater than the value member of the pWaitSemaphoreInfos element%VUID-VkSubmitInfo2KHR-semaphore-03882 If the  semaphore member of any element of pSignalSemaphoreInfos# is a timeline semaphore, the value member of that element 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 executed%VUID-VkSubmitInfo2KHR-semaphore-03883 If the  semaphore member of any element of pSignalSemaphoreInfos# is a timeline semaphore, the value member of that element 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%VUID-VkSubmitInfo2KHR-semaphore-03884 If the  semaphore member of any element of pWaitSemaphoreInfos# is a timeline semaphore, the value member of that element 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!VUID-VkSubmitInfo2KHR-flags-038856 If the protected memory feature is not enabled, flags must not include ,!VUID-VkSubmitInfo2KHR-flags-03886 If flags includes ,, all elements of pCommandBuffers must" be protected command buffers!VUID-VkSubmitInfo2KHR-flags-03887 If flags does not include ,, each element of pCommandBuffers must' not be a protected command bufferValid Usage (Implicit)!VUID-VkSubmitInfo2KHR-sType-sType sType must be !VUID-VkSubmitInfo2KHR-pNext-pNext 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 s"VUID-VkSubmitInfo2KHR-sType-unique The sType" value of each struct in the pNext chain must be unique%VUID-VkSubmitInfo2KHR-flags-parameter flags must be a valid combination of ,v values3VUID-VkSubmitInfo2KHR-pWaitSemaphoreInfos-parameter If waitSemaphoreInfoCount is not 0, pWaitSemaphoreInfos must( be a valid pointer to an array of waitSemaphoreInfoCount valid  structures3VUID-VkSubmitInfo2KHR-pCommandBufferInfos-parameter If commandBufferInfoCount is not 0, pCommandBufferInfos must( be a valid pointer to an array of commandBufferInfoCount valid  structures5VUID-VkSubmitInfo2KHR-pSignalSemaphoreInfos-parameter If signalSemaphoreInfoCount is not 0, pSignalSemaphoreInfos must# be a valid pointer to an array of signalSemaphoreInfoCount valid  structuresSee Also, , C, ,x, -vulkanUVkSemaphoreSubmitInfoKHR - Structure specifying a semaphore signal or wait operation DescriptionbWhether this structure defines a semaphore wait or signal operation is defined by how it is used. Valid Usage-VUID-VkSemaphoreSubmitInfoKHR-stageMask-03929 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 , -VUID-VkSemaphoreSubmitInfoKHR-stageMask-03930 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 ,-VUID-VkSemaphoreSubmitInfoKHR-stageMask-03931 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 ,-VUID-VkSemaphoreSubmitInfoKHR-stageMask-03932 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 ,-VUID-VkSemaphoreSubmitInfoKHR-stageMask-03933 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 ,-VUID-VkSemaphoreSubmitInfoKHR-stageMask-03934 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 ,-VUID-VkSemaphoreSubmitInfoKHR-stageMask-03935 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 ,-VUID-VkSemaphoreSubmitInfoKHR-stageMask-03936 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 ,*VUID-VkSemaphoreSubmitInfoKHR-device-03888 If the device that  semaphore' was created on is not a device group,  deviceIndex must be 0*VUID-VkSemaphoreSubmitInfoKHR-device-03889 If the device that  semaphore# was created on is a device group,  deviceIndex must be a valid device indexValid Usage (Implicit))VUID-VkSemaphoreSubmitInfoKHR-sType-sType sType must be )VUID-VkSemaphoreSubmitInfoKHR-pNext-pNext pNext must be NULL1VUID-VkSemaphoreSubmitInfoKHR-semaphore-parameter  semaphore must be a valid w handle1VUID-VkSemaphoreSubmitInfoKHR-stageMask-parameter  stageMask must be a valid combination of  valuesSee Also, w, C, vulkan_VkQueueFamilyCheckpointProperties2NV - return structure for queue family checkpoint info query Description?Additional queue family information can be queried by setting Tv::pNext to point to a  structure.Valid Usage (Implicit)See Also, CvulkanVkPhysicalDeviceSynchronization2FeaturesKHR - Structure describing whether the implementation supports v2 synchronization commandsMembersThe members of the , structure describes the following feature: 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 used in the pNext chain of  2 to enable the feature.Valid Usage (Implicit)See Alsop, CvulkanBVkMemoryBarrier2KHR - Structure specifying a global memory barrier DescriptionThis structure defines a  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-memorymemory dependency affecting all device memory. The first  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope and  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopeX described by this structure include only operations and memory accesses specified by  srcStageMask and  srcAccessMask. The second  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope and  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopeX described by this structure include only operations and memory accesses specified by  dstStageMask and  dstAccessMask.Valid Usage (Implicit)$VUID-VkMemoryBarrier2KHR-sType-sType sType must be /VUID-VkMemoryBarrier2KHR-srcStageMask-parameter  srcStageMask must be a valid combination of  values0VUID-VkMemoryBarrier2KHR-srcAccessMask-parameter  srcAccessMask must be a valid combination of ,z values/VUID-VkMemoryBarrier2KHR-dstStageMask-parameter  dstStageMask must be a valid combination of  values0VUID-VkMemoryBarrier2KHR-dstAccessMask-parameter  dstAccessMask must be a valid combination of ,z values Valid Usage+VUID-VkMemoryBarrier2KHR-srcStageMask-03929 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 ,I+VUID-VkMemoryBarrier2KHR-srcStageMask-03930 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 ,+VUID-VkMemoryBarrier2KHR-srcStageMask-03931 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 ,+VUID-VkMemoryBarrier2KHR-srcStageMask-03932 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 ,+VUID-VkMemoryBarrier2KHR-srcStageMask-03933 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 ,+VUID-VkMemoryBarrier2KHR-srcStageMask-03934 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 ,+VUID-VkMemoryBarrier2KHR-srcStageMask-03935 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 ,+VUID-VkMemoryBarrier2KHR-srcStageMask-03936 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 ,,VUID-VkMemoryBarrier2KHR-srcAccessMask-03900 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, , , or ,,VUID-VkMemoryBarrier2KHR-srcAccessMask-03901 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, , , or ,,VUID-VkMemoryBarrier2KHR-srcAccessMask-03902 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, , , or ,,VUID-VkMemoryBarrier2KHR-srcAccessMask-03903 If  srcAccessMask includes ,,  srcStageMask must include ,, , , or ,,VUID-VkMemoryBarrier2KHR-srcAccessMask-03904 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages,VUID-VkMemoryBarrier2KHR-srcAccessMask-03905 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages,VUID-VkMemoryBarrier2KHR-srcAccessMask-03906 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages,VUID-VkMemoryBarrier2KHR-srcAccessMask-03907 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages,VUID-VkMemoryBarrier2KHR-srcAccessMask-03908 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages,VUID-VkMemoryBarrier2KHR-srcAccessMask-03909 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages,VUID-VkMemoryBarrier2KHR-srcAccessMask-03910 If  srcAccessMask includes ,,  srcStageMask must include , , , or ,,VUID-VkMemoryBarrier2KHR-srcAccessMask-03911 If  srcAccessMask includes ,,  srcStageMask must include , , , or ,,VUID-VkMemoryBarrier2KHR-srcAccessMask-03912 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, , , or ,,VUID-VkMemoryBarrier2KHR-srcAccessMask-03913 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, , , or ,,VUID-VkMemoryBarrier2KHR-srcAccessMask-03914 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, ,, ,, , , or ,,VUID-VkMemoryBarrier2KHR-srcAccessMask-03915 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, ,, ,, ,, , , or ,,VUID-VkMemoryBarrier2KHR-srcAccessMask-03916 If  srcAccessMask includes ,,  srcStageMask must include ,,VUID-VkMemoryBarrier2KHR-srcAccessMask-03917 If  srcAccessMask includes ,,  srcStageMask must include ,,VUID-VkMemoryBarrier2KHR-srcAccessMask-03918 If  srcAccessMask includes ,,  srcStageMask must include ,, , , or ,,VUID-VkMemoryBarrier2KHR-srcAccessMask-03919 If  srcAccessMask includes ,,  srcStageMask must include ,, , , or ,,VUID-VkMemoryBarrier2KHR-srcAccessMask-03920 If  srcAccessMask includes ,,  srcStageMask must include ,, , , or ,,VUID-VkMemoryBarrier2KHR-srcAccessMask-04747 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, , , or ,,VUID-VkMemoryBarrier2KHR-srcAccessMask-03922 If  srcAccessMask includes ,,  srcStageMask must include ,, , , or ,,VUID-VkMemoryBarrier2KHR-srcAccessMask-03923 If  srcAccessMask includes ,,  srcStageMask must include ,, , , or ,,VUID-VkMemoryBarrier2KHR-srcAccessMask-03924 If  srcAccessMask includes ,,  srcStageMask must include , or ,,VUID-VkMemoryBarrier2KHR-srcAccessMask-03925 If  srcAccessMask includes ,,  srcStageMask must include , or ,,VUID-VkMemoryBarrier2KHR-srcAccessMask-03926 If  srcAccessMask includes ,,  srcStageMask must include , , , or ,,VUID-VkMemoryBarrier2KHR-srcAccessMask-03927 If  srcAccessMask includes ,,  srcStageMask must include ,, , , or ,,VUID-VkMemoryBarrier2KHR-srcAccessMask-03928 If  srcAccessMask includes ,,  srcStageMask must include , or ,+VUID-VkMemoryBarrier2KHR-dstStageMask-03929 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 ,+VUID-VkMemoryBarrier2KHR-dstStageMask-03930 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 ,+VUID-VkMemoryBarrier2KHR-dstStageMask-03931 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 ,+VUID-VkMemoryBarrier2KHR-dstStageMask-03932 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 ,+VUID-VkMemoryBarrier2KHR-dstStageMask-03933 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 ,+VUID-VkMemoryBarrier2KHR-dstStageMask-03934 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 ,+VUID-VkMemoryBarrier2KHR-dstStageMask-03935 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 ,+VUID-VkMemoryBarrier2KHR-dstStageMask-03936 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 ,,VUID-VkMemoryBarrier2KHR-dstAccessMask-03900 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, , , or ,,VUID-VkMemoryBarrier2KHR-dstAccessMask-03901 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, , , or ,,VUID-VkMemoryBarrier2KHR-dstAccessMask-03902 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, , , or ,,VUID-VkMemoryBarrier2KHR-dstAccessMask-03903 If  dstAccessMask includes ,,  dstStageMask must include ,, , , or ,,VUID-VkMemoryBarrier2KHR-dstAccessMask-03904 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages,VUID-VkMemoryBarrier2KHR-dstAccessMask-03905 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages,VUID-VkMemoryBarrier2KHR-dstAccessMask-03906 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages,VUID-VkMemoryBarrier2KHR-dstAccessMask-03907 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages,VUID-VkMemoryBarrier2KHR-dstAccessMask-03908 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages,VUID-VkMemoryBarrier2KHR-dstAccessMask-03909 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages,VUID-VkMemoryBarrier2KHR-dstAccessMask-03910 If  dstAccessMask includes ,,  dstStageMask must include , , , or ,,VUID-VkMemoryBarrier2KHR-dstAccessMask-03911 If  dstAccessMask includes ,,  dstStageMask must include , , , or ,,VUID-VkMemoryBarrier2KHR-dstAccessMask-03912 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, , , or ,,VUID-VkMemoryBarrier2KHR-dstAccessMask-03913 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, , , or ,,VUID-VkMemoryBarrier2KHR-dstAccessMask-03914 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, ,, ,, , , or ,,VUID-VkMemoryBarrier2KHR-dstAccessMask-03915 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, ,, ,, ,, , , or ,,VUID-VkMemoryBarrier2KHR-dstAccessMask-03916 If  dstAccessMask includes ,,  dstStageMask must include ,,VUID-VkMemoryBarrier2KHR-dstAccessMask-03917 If  dstAccessMask includes ,,  dstStageMask must include ,,VUID-VkMemoryBarrier2KHR-dstAccessMask-03918 If  dstAccessMask includes ,,  dstStageMask must include ,, , , or ,,VUID-VkMemoryBarrier2KHR-dstAccessMask-03919 If  dstAccessMask includes ,,  dstStageMask must include ,, , , or ,,VUID-VkMemoryBarrier2KHR-dstAccessMask-03920 If  dstAccessMask includes ,,  dstStageMask must include ,, , , or ,,VUID-VkMemoryBarrier2KHR-dstAccessMask-04747 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, , , or ,,VUID-VkMemoryBarrier2KHR-dstAccessMask-03922 If  dstAccessMask includes ,,  dstStageMask must include ,, , , or ,,VUID-VkMemoryBarrier2KHR-dstAccessMask-03923 If  dstAccessMask includes ,,  dstStageMask must include ,, , , or ,,VUID-VkMemoryBarrier2KHR-dstAccessMask-03924 If  dstAccessMask includes ,,  dstStageMask must include , or ,,VUID-VkMemoryBarrier2KHR-dstAccessMask-03925 If  dstAccessMask includes ,,  dstStageMask must include , or ,,VUID-VkMemoryBarrier2KHR-dstAccessMask-03926 If  dstAccessMask includes ,,  dstStageMask must include , , , or ,,VUID-VkMemoryBarrier2KHR-dstAccessMask-03927 If  dstAccessMask includes ,,  dstStageMask must include ,, , , or ,,VUID-VkMemoryBarrier2KHR-dstAccessMask-03928 If  dstAccessMask includes ,,  dstStageMask must include , or ,See Also,|, , , CvulkanGVkImageMemoryBarrier2KHR - Structure specifying an image memory barrier DescriptionThis structure defines a  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-memorymemory dependencyC limited to an image subresource range, and optionally defines a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family transfer operation and  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition for that subresource range. The first  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope and  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopea described by this structure include only operations and memory accesses specified by elements  srcStageMask and  srcAccessMask. The second  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope and  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopea described by this structure include only operations and memory accesses specified by elements  dstStageMask and  dstAccessMask.Both  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopes) are limited to only memory accesses to image& in the subresource range defined by subresourceRange.If image was created with 7, and srcQueueFamilyIndex is not equal to dstQueueFamilyIndex", this memory barrier defines a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family transfer operation9. When executed on a queue in the family identified by srcQueueFamilyIndex, this barrier defines a  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-releasequeue family release operation for the specified image subresource range, and the second synchronization and access scopes do not synchronize operations on that queue. When executed on a queue in the family identified by dstQueueFamilyIndex, this barrier defines a  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquirequeue family acquire operation for the specified image subresource range, and the first synchronization and access scopes do not synchronize operations on that queue.A  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family transfer operation is also defined if the values are not equal, and either is one of the special queue family values 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. A  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-releasequeue family release operation is defined when dstQueueFamilyIndex is one of those values, and a  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquirequeue family acquire operation is defined when srcQueueFamilyIndex is one of those values.If  oldLayout is not equal to  newLayout', then the memory barrier defines an  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transitionP for the specified image subresource range. If this memory barrier defines a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family transfer operationB, the layout transition is only executed once between the queues.NoteWhen the old and new layout are equal, the layout values are ignored - data is preserved no matter what values are specified, or what layout the image is currently in.If image, has a multi-planar format and the image is disjoint, then including xQ in the  aspectMask member of subresourceRange is equivalent to including x, x', and (for three-plane formats only) x. Valid Usage0VUID-VkImageMemoryBarrier2KHR-srcStageMask-03929 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 ,i0VUID-VkImageMemoryBarrier2KHR-srcStageMask-03930 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 ,0VUID-VkImageMemoryBarrier2KHR-srcStageMask-03931 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 ,0VUID-VkImageMemoryBarrier2KHR-srcStageMask-03932 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 ,0VUID-VkImageMemoryBarrier2KHR-srcStageMask-03933 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 ,0VUID-VkImageMemoryBarrier2KHR-srcStageMask-03934 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 ,0VUID-VkImageMemoryBarrier2KHR-srcStageMask-03935 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 ,0VUID-VkImageMemoryBarrier2KHR-srcStageMask-03936 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 ,1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03900 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03901 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03902 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03903 If  srcAccessMask includes ,,  srcStageMask must include ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03904 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03905 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03906 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03907 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03908 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03909 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03910 If  srcAccessMask includes ,,  srcStageMask must include , , , or ,1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03911 If  srcAccessMask includes ,,  srcStageMask must include , , , or ,1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03912 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03913 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03914 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, ,, ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03915 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, ,, ,, ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03916 If  srcAccessMask includes ,,  srcStageMask must include ,1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03917 If  srcAccessMask includes ,,  srcStageMask must include ,1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03918 If  srcAccessMask includes ,,  srcStageMask must include ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03919 If  srcAccessMask includes ,,  srcStageMask must include ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03920 If  srcAccessMask includes ,,  srcStageMask must include ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-04747 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03922 If  srcAccessMask includes ,,  srcStageMask must include ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03923 If  srcAccessMask includes ,,  srcStageMask must include ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03924 If  srcAccessMask includes ,,  srcStageMask must include , or ,1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03925 If  srcAccessMask includes ,,  srcStageMask must include , or ,1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03926 If  srcAccessMask includes ,,  srcStageMask must include , , , or ,1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03927 If  srcAccessMask includes ,,  srcStageMask must include ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03928 If  srcAccessMask includes ,,  srcStageMask must include , or ,0VUID-VkImageMemoryBarrier2KHR-dstStageMask-03929 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 ,0VUID-VkImageMemoryBarrier2KHR-dstStageMask-03930 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 ,0VUID-VkImageMemoryBarrier2KHR-dstStageMask-03931 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 ,0VUID-VkImageMemoryBarrier2KHR-dstStageMask-03932 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 ,0VUID-VkImageMemoryBarrier2KHR-dstStageMask-03933 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 ,0VUID-VkImageMemoryBarrier2KHR-dstStageMask-03934 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 ,0VUID-VkImageMemoryBarrier2KHR-dstStageMask-03935 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 ,0VUID-VkImageMemoryBarrier2KHR-dstStageMask-03936 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 ,1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03900 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03901 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03902 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03903 If  dstAccessMask includes ,,  dstStageMask must include ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03904 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03905 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03906 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03907 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03908 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03909 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03910 If  dstAccessMask includes ,,  dstStageMask must include , , , or ,1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03911 If  dstAccessMask includes ,,  dstStageMask must include , , , or ,1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03912 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03913 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03914 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, ,, ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03915 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, ,, ,, ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03916 If  dstAccessMask includes ,,  dstStageMask must include ,1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03917 If  dstAccessMask includes ,,  dstStageMask must include ,1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03918 If  dstAccessMask includes ,,  dstStageMask must include ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03919 If  dstAccessMask includes ,,  dstStageMask must include ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03920 If  dstAccessMask includes ,,  dstStageMask must include ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-04747 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03922 If  dstAccessMask includes ,,  dstStageMask must include ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03923 If  dstAccessMask includes ,,  dstStageMask must include ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03924 If  dstAccessMask includes ,,  dstStageMask must include , or ,1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03925 If  dstAccessMask includes ,,  dstStageMask must include , or ,1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03926 If  dstAccessMask includes ,,  dstStageMask must include , , , or ,1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03927 If  dstAccessMask includes ,,  dstStageMask must include ,, , , or ,1VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03928 If  dstAccessMask includes ,,  dstStageMask must include , or ,4VUID-VkImageMemoryBarrier2KHR-subresourceRange-01486 subresourceRange.baseMipLevel must be less than the  mipLevels specified in 0 when image was created4VUID-VkImageMemoryBarrier2KHR-subresourceRange-01724 If subresourceRange.levelCount is not W, subresourceRange.baseMipLevel + subresourceRange.levelCount must be less than or equal to the  mipLevels specified in 0 when image was created4VUID-VkImageMemoryBarrier2KHR-subresourceRange-01488 subresourceRange.baseArrayLayer must be less than the  arrayLayers specified in 0 when image was created4VUID-VkImageMemoryBarrier2KHR-subresourceRange-01725 If subresourceRange.layerCount is not X, subresourceRange.baseArrayLayer + subresourceRange.layerCount must be less than or equal to the  arrayLayers specified in 0 when image was created)VUID-VkImageMemoryBarrier2KHR-image-01932 If image is non-sparse then it must7 be bound completely and contiguously to a single / object-VUID-VkImageMemoryBarrier2KHR-oldLayout-01208 If 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 an  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 -VUID-VkImageMemoryBarrier2KHR-oldLayout-01209 If 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 an  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 -VUID-VkImageMemoryBarrier2KHR-oldLayout-01210 If 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 an  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 -VUID-VkImageMemoryBarrier2KHR-oldLayout-01211 If 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 an  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  or -VUID-VkImageMemoryBarrier2KHR-oldLayout-01212 If 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 an  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 -VUID-VkImageMemoryBarrier2KHR-oldLayout-01213 If 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 an  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 -VUID-VkImageMemoryBarrier2KHR-oldLayout-01197 If 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 an  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition,  oldLayout must be M or the current layout of the image subresources affected by the barrier-VUID-VkImageMemoryBarrier2KHR-newLayout-01198 If 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 an  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition,  newLayout must not be  or -VUID-VkImageMemoryBarrier2KHR-oldLayout-01658 If 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 an  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 -VUID-VkImageMemoryBarrier2KHR-oldLayout-01659 If 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 an  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 7VUID-VkImageMemoryBarrier2KHR-srcQueueFamilyIndex-04065 If 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 an  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 at least one of ,  , or 7VUID-VkImageMemoryBarrier2KHR-srcQueueFamilyIndex-04066 If 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 an  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  set7VUID-VkImageMemoryBarrier2KHR-srcQueueFamilyIndex-04067 If 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 an  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 at least one of ,  , or 7VUID-VkImageMemoryBarrier2KHR-srcQueueFamilyIndex-04068 If 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 an  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  set7VUID-VkImageMemoryBarrier2KHR-srcQueueFamilyIndex-03938 If 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 an  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is ], image must have been created with  or 7VUID-VkImageMemoryBarrier2KHR-srcQueueFamilyIndex-03939 If 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 an  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is ^, image must- have been created with at least one of ,  , or -VUID-VkImageMemoryBarrier2KHR-oldLayout-02088 If 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 an  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 Y set)VUID-VkImageMemoryBarrier2KHR-image-01671 If image0 has a single-plane color format or is not disjoint, then the  aspectMask member of subresourceRange must be xQ)VUID-VkImageMemoryBarrier2KHR-image-01672 If image1 has a multi-planar format and the image is disjoint, then the  aspectMask member of subresourceRange must* include either at least one of x, x, and x ; or must include xQ)VUID-VkImageMemoryBarrier2KHR-image-01673 If image? has a multi-planar format with only two planes, then the  aspectMask member of subresourceRange must not include x)VUID-VkImageMemoryBarrier2KHR-image-03319 If 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 x and x)VUID-VkImageMemoryBarrier2KHR-image-03320 If 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 x and x7VUID-VkImageMemoryBarrier2KHR-srcQueueFamilyIndex-04070 If 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???)VUID-VkImageMemoryBarrier2KHR-image-04071 If image. was created with a sharing mode of 7, 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 8)VUID-VkImageMemoryBarrier2KHR-image-04072 If image. was created with a sharing mode of 7 , 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???0VUID-VkImageMemoryBarrier2KHR-srcStageMask-03854 If  srcStageMask or  dstStageMask include ,, srcQueueFamilyIndex and dstQueueFamilyIndex must be equal0VUID-VkImageMemoryBarrier2KHR-srcStageMask-03855 If  srcStageMask includes ,, and 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 one of ,  , or CValid Usage (Implicit))VUID-VkImageMemoryBarrier2KHR-sType-sType sType must be  )VUID-VkImageMemoryBarrier2KHR-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of *VUID-VkImageMemoryBarrier2KHR-sType-unique The sType" value of each struct in the pNext chain must be unique4VUID-VkImageMemoryBarrier2KHR-srcStageMask-parameter  srcStageMask must be a valid combination of  values5VUID-VkImageMemoryBarrier2KHR-srcAccessMask-parameter  srcAccessMask must be a valid combination of ,z values4VUID-VkImageMemoryBarrier2KHR-dstStageMask-parameter  dstStageMask must be a valid combination of  values5VUID-VkImageMemoryBarrier2KHR-dstAccessMask-parameter  dstAccessMask must be a valid combination of ,z values1VUID-VkImageMemoryBarrier2KHR-oldLayout-parameter  oldLayout must be a valid O value1VUID-VkImageMemoryBarrier2KHR-newLayout-parameter  newLayout must be a valid O value-VUID-VkImageMemoryBarrier2KHR-image-parameter image must be a valid  handle8VUID-VkImageMemoryBarrier2KHR-subresourceRange-parameter subresourceRange must be a valid  structureSee Also,|, , , O, , , Cvulkan`VkDependencyInfoKHR - Structure specifying dependency information for a synchronization command Description!This structure defines a set of  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-memorymemory dependencies, as well as  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family transfer operations and  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transitions.Each member of pMemoryBarriers, pBufferMemoryBarriers, and pImageMemoryBarriers defines a separate  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-memorymemory dependency.Valid Usage (Implicit)$VUID-VkDependencyInfoKHR-sType-sType sType must be $VUID-VkDependencyInfoKHR-pNext-pNext pNext must be NULL2VUID-VkDependencyInfoKHR-dependencyFlags-parameter dependencyFlags must be a valid combination of ` values2VUID-VkDependencyInfoKHR-pMemoryBarriers-parameter If memoryBarrierCount is not 0, pMemoryBarriers must( be a valid pointer to an array of memoryBarrierCount valid  structures8VUID-VkDependencyInfoKHR-pBufferMemoryBarriers-parameter If bufferMemoryBarrierCount is not 0, pBufferMemoryBarriers must# be a valid pointer to an array of bufferMemoryBarrierCount valid  structures7VUID-VkDependencyInfoKHR-pImageMemoryBarriers-parameter If imageMemoryBarrierCount is not 0, pImageMemoryBarriers must( be a valid pointer to an array of imageMemoryBarrierCount valid  structuresSee Also, H, , , C, -, ,, -vulkanPVkCommandBufferSubmitInfoKHR - Structure specifying a command buffer submission Valid Usage5VUID-VkCommandBufferSubmitInfoKHR-commandBuffer-03890  commandBuffer must# not have been allocated with 2VUID-VkCommandBufferSubmitInfoKHR-deviceMask-03891 If  deviceMask is not 0, it must be a valid device maskValid Usage (Implicit)-VUID-VkCommandBufferSubmitInfoKHR-sType-sType sType must be -VUID-VkCommandBufferSubmitInfoKHR-pNext-pNext pNext must be NULL9VUID-VkCommandBufferSubmitInfoKHR-commandBuffer-parameter  commandBuffer must be a valid  handleSee Also, C, vulkanJVkCheckpointData2NV - return structure for command buffer checkpoint dataValid Usage (Implicit)(The stages at which a checkpoint marker can- be executed are implementation-defined and can be queried by calling T.See Also, C, -vulkanHVkBufferMemoryBarrier2KHR - Structure specifying a buffer memory barrier DescriptionThis structure defines a  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-memorymemory dependency< limited to a range of a buffer, and optionally defines a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family transfer operation for that range. The first  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope and  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopea described by this structure include only operations and memory accesses specified by elements  srcStageMask and  srcAccessMask. The second  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope and  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopea described by this structure include only operations and memory accesses specified by elements  dstStageMask and  dstAccessMask.Both  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopes) are limited to only memory accesses to buffer in the range defined by offset and size.If buffer was created with 7, and srcQueueFamilyIndex is not equal to dstQueueFamilyIndex", this memory barrier defines a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family transfer operation9. When executed on a queue in the family identified by srcQueueFamilyIndex, this barrier defines a  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-releasequeue family release operation for the specified buffer range, and the second synchronization and access scopes do not synchronize operations on that queue. When executed on a queue in the family identified by dstQueueFamilyIndex, this barrier defines a  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquirequeue family acquire operation for the specified buffer range, and the first synchronization and access scopes do not synchronize operations on that queue.A  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family transfer operation is also defined if the values are not equal, and either is one of the special queue family values 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. A  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-releasequeue family release operation is defined when dstQueueFamilyIndex is one of those values, and a  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquirequeue family acquire operation is defined when srcQueueFamilyIndex is one of those values. Valid Usage1VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03929 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 ,Q1VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03930 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 ,1VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03931 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 ,1VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03932 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 ,1VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03933 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 ,1VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03934 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 ,1VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03935 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 ,1VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03936 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 ,2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03900 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03901 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03902 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03903 If  srcAccessMask includes ,,  srcStageMask must include ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03904 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03905 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03906 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03907 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03908 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03909 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03910 If  srcAccessMask includes ,,  srcStageMask must include , , , or ,2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03911 If  srcAccessMask includes ,,  srcStageMask must include , , , or ,2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03912 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03913 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03914 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, ,, ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03915 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, ,, ,, ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03916 If  srcAccessMask includes ,,  srcStageMask must include ,2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03917 If  srcAccessMask includes ,,  srcStageMask must include ,2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03918 If  srcAccessMask includes ,,  srcStageMask must include ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03919 If  srcAccessMask includes ,,  srcStageMask must include ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03920 If  srcAccessMask includes ,,  srcStageMask must include ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-04747 If  srcAccessMask includes ,,  srcStageMask must include ,, ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03922 If  srcAccessMask includes ,,  srcStageMask must include ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03923 If  srcAccessMask includes ,,  srcStageMask must include ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03924 If  srcAccessMask includes ,,  srcStageMask must include , or ,2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03925 If  srcAccessMask includes ,,  srcStageMask must include , or ,2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03926 If  srcAccessMask includes ,,  srcStageMask must include , , , or ,2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03927 If  srcAccessMask includes ,,  srcStageMask must include ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03928 If  srcAccessMask includes ,,  srcStageMask must include , or ,1VUID-VkBufferMemoryBarrier2KHR-dstStageMask-03929 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 ,1VUID-VkBufferMemoryBarrier2KHR-dstStageMask-03930 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 ,1VUID-VkBufferMemoryBarrier2KHR-dstStageMask-03931 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 ,1VUID-VkBufferMemoryBarrier2KHR-dstStageMask-03932 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 ,1VUID-VkBufferMemoryBarrier2KHR-dstStageMask-03933 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 ,1VUID-VkBufferMemoryBarrier2KHR-dstStageMask-03934 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 ,1VUID-VkBufferMemoryBarrier2KHR-dstStageMask-03935 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 ,1VUID-VkBufferMemoryBarrier2KHR-dstStageMask-03936 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 ,2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03900 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03901 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03902 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03903 If  dstAccessMask includes ,,  dstStageMask must include ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03904 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03905 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03906 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03907 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03908 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03909 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT stages2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03910 If  dstAccessMask includes ,,  dstStageMask must include , , , or ,2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03911 If  dstAccessMask includes ,,  dstStageMask must include , , , or ,2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03912 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03913 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03914 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, ,, ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03915 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, ,, ,, ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03916 If  dstAccessMask includes ,,  dstStageMask must include ,2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03917 If  dstAccessMask includes ,,  dstStageMask must include ,2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03918 If  dstAccessMask includes ,,  dstStageMask must include ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03919 If  dstAccessMask includes ,,  dstStageMask must include ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03920 If  dstAccessMask includes ,,  dstStageMask must include ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-04747 If  dstAccessMask includes ,,  dstStageMask must include ,, ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03922 If  dstAccessMask includes ,,  dstStageMask must include ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03923 If  dstAccessMask includes ,,  dstStageMask must include ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03924 If  dstAccessMask includes ,,  dstStageMask must include , or ,2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03925 If  dstAccessMask includes ,,  dstStageMask must include , or ,2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03926 If  dstAccessMask includes ,,  dstStageMask must include , , , or ,2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03927 If  dstAccessMask includes ,,  dstStageMask must include ,, , , or ,2VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03928 If  dstAccessMask includes ,,  dstStageMask must include , or ,+VUID-VkBufferMemoryBarrier2KHR-offset-01187 offset must be less than the size of buffer)VUID-VkBufferMemoryBarrier2KHR-size-01188 If size is not equal to , size must be greater than 0)VUID-VkBufferMemoryBarrier2KHR-size-01189 If size is not equal to , size must0 be less than or equal to than the size of buffer minus offset+VUID-VkBufferMemoryBarrier2KHR-buffer-01931 If buffer is non-sparse then it must7 be bound completely and contiguously to a single / object8VUID-VkBufferMemoryBarrier2KHR-srcQueueFamilyIndex-04087 If 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???+VUID-VkBufferMemoryBarrier2KHR-buffer-04088 If buffer. was created with a sharing mode of 7, 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 8+VUID-VkBufferMemoryBarrier2KHR-buffer-04089 If buffer. was created with a sharing mode of 7 , 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???1VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03851 If  srcStageMask or  dstStageMask include ,, srcQueueFamilyIndex and dstQueueFamilyIndex must be equalValid Usage (Implicit)*VUID-VkBufferMemoryBarrier2KHR-sType-sType sType must be *VUID-VkBufferMemoryBarrier2KHR-pNext-pNext pNext must be NULL5VUID-VkBufferMemoryBarrier2KHR-srcStageMask-parameter  srcStageMask must be a valid combination of  values6VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-parameter  srcAccessMask must be a valid combination of ,z values5VUID-VkBufferMemoryBarrier2KHR-dstStageMask-parameter  dstStageMask must be a valid combination of  values6VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-parameter  dstAccessMask must be a valid combination of ,z values/VUID-VkBufferMemoryBarrier2KHR-buffer-parameter buffer must be a valid  handleSee Also,|, , , n, , C,vvulkanAVkSubmitFlagBitsKHR - Bitmask specifying behavior of a submissionSee Also,x,zvulkan9VkAccessFlagBits2KHR - Access flags for VkAccessFlags2KHR DescriptionNotejIn situations where an application wishes to select all access types for a given set of pipeline stages, , or ,f can be used. This is particularly useful when specifying stages that only have a single access type.NoteThe ,|] bitmask goes beyond the 31 individual bit flags allowable within a C99 enum, which is how aN is defined. The first 31 values are common to both, and are interchangeable.See Also!No cross-references are available,~vulkanfeatures-synchronization2 synchronization2g indicates whether the implementation supports the new set of synchronization commands introduced in  VK_KHR_synchronization2.htmlVK_KHR_synchronization2.,vulkanstageO indicates a single pipeline stage which 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.,vulkanpNext is NULL6 or a pointer to a structure extending this structure.,vulkanflags is a bitmask of ,v.,vulkanpWaitSemaphoreInfos is a pointer to an array of  structures defining  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-waitingsemaphore wait operations.,vulkanpCommandBufferInfos is a pointer to an array of @ structures describing command buffers to execute in the batch.,vulkanpSignalSemaphoreInfos is a pointer to an array of  describing  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operations.,vulkan commandBuffer is a  to be submitted for execution.,vulkan deviceMaskX is a bitmask indicating which devices in a device group execute the command buffer. A  deviceMask of 0S is equivalent to setting all bits corresponding to valid devices in the group to 1.,vulkan semaphore is a w affected by this operation.,vulkanvalue$ is either the value used to signal  semaphore or the value waited on by  semaphore, if  semaphore3 is a timeline semaphore. Otherwise it is ignored.,vulkan stageMask is a M mask of pipeline stages at which the semaphore either waits or is signaled.,vulkan deviceIndexh is the index of the device within a device group that executes the semaphore wait or signal operation.,vulkandependencyFlags is a bitmask of `> specifying how execution and memory dependencies are formed.,vulkanpMemoryBarriers is a pointer to an array of I structures that define memory dependencies between any memory accesses.,vulkanpBufferMemoryBarriers is a pointer to an array of C structures that define memory dependencies between buffer ranges.,vulkanpImageMemoryBarriers is a pointer to an array of H structures that define memory dependencies between image subresources.,vulkan srcStageMask is a 1 mask of pipeline stages to be included in the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopesfirst synchronization scope.,vulkan srcAccessMask is a ,| mask of pipeline  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopesfirst access scope.,vulkan dstStageMask is a 1 mask of pipeline stages to be included in the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessecond synchronization scope. dstStageMask is a ,| mask of pipeline  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopessecond access scope.,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.,vulkanbufferL is a handle to the buffer whose backing memory is affected by the barrier.,vulkanoffset3 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).,vulkansize@ 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.,vulkanpNext is NULL6 or a pointer to a structure extending this structure.,vulkan srcStageMask is a 1 mask of pipeline stages to be included in the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopesfirst synchronization scope.,vulkan srcAccessMask is a ,| mask of pipeline  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopesfirst access scope.,vulkan dstStageMask is a 1 mask of pipeline stages to be included in the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessecond synchronization scope. dstStageMask is a ,| mask of pipeline  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopessecond access scope.,vulkan 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.,vulkan 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.,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.,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 srcStageMask is a 1 mask of pipeline stages to be included in the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopesfirst synchronization scope.,vulkan srcAccessMask is a ,| mask of pipeline  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopesfirst access scope.,vulkan dstStageMask is a 1 mask of pipeline stages to be included in the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessecond synchronization scope. dstStageMask is a ,| mask of pipeline  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopessecond access scope.,vulkan,6 specifies that this batch is a protected submission.,vulkan,z specifies the stage of the pipeline where vertex attribute output values are written to the transform feedback buffers.,vulkan,_ specifies the stage of the pipeline where the predicate of conditional rendering is consumed.,vulkan,T specifies the stage of the pipeline where device-side generation of commands via x is handled.,vulkan,1 specifies the stage of the pipeline where the  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment or  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-attachmentshading rate imageY is read to determine the fragment shading rate for portions of a rasterized primitive.,vulkan, specifies the execution of  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structureacceleration structure commands.,vulkan,; specifies the execution of the ray tracing shader stages.,vulkan,Q 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.,vulkan,! specifies the task shader stage.,vulkan,! specifies the mesh shader stage.,vulkan,8 is equivalent to specifying all supported stages from:,,,,,,,vulkan,H specifies the stage of the pipeline where vertex buffers are consumed.,vulkan,G specifies the stage of the pipeline where index buffers are consumed.,vulkan, specifies the execution of  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clearsclear commands, with the exception of .,vulkan, specifies the execution of |.,vulkan, specifies the execution of ~.,vulkan,! specifies the execution of all  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands , including .,vulkan,\ specifies all operations performed by all commands supported on the queue it is used with.,vulkan,b specifies the execution of all graphics pipeline stages, and is equivalent to the logical OR of:,,,,,,,,,,,,,,,,,vulkan, 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.,vulkan, is equivalent to , with ,| set to 0G when specified in the first synchronization scope, but equivalent to , in the second scope.,vulkan,% is equivalent to specifying all of:,,,,,vulkan,% specifies the compute shader stage.,vulkan, 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.,vulkan, 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.,vulkan, 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.,vulkan,& specifies the fragment shader stage.,vulkan,& 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,% is equivalent to the logical OR of:,,,vulkan, specifies the stage of the pipeline where indirect command parameters are consumed. This stage also includes reading commands written by x.,vulkan, is equivalent to , with ,| set to 0H when specified in the second synchronization scope, but equivalent to , in the first scope.,vulkan," specifies no stages of execution.,vulkan,@ specifies write access to a transform feedback buffer in the , pipeline stage.,vulkan,G specifies read access to a transform feedback counter buffer in the , pipeline stage.,vulkan,H specifies write access to a transform feedback counter buffer in the , pipeline stage.,vulkan,. specifies read access to a predicate in the , pipeline stage.,vulkan, specifies reads from  inputs to x in the , pipeline stage.,vulkan,8 specifies writes to the target command buffer in the , pipeline stage.,vulkan,= specifies read access to an acceleration structure in the , or , pipeline stages.,vulkan,> specifies write access to an acceleration structure in the , pipeline stage.,vulkan, specifies read access to a  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachmentfragment density map attachment in the , pipeline stage.,vulkan, specifies read access to  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpasscolor attachments, including  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advancedadvanced blend operations , in the , pipeline stage.,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 in any shader pipeline stage.,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,  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 in any shader pipeline stage.,vulkan, specifies read access to a  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformtexelbufferuniform texel buffer or  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage sampled image in any shader pipeline stage.,vulkan,t 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.,vulkan,s 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 to memory in the , pipeline stage.,vulkan,) specifies read access to memory in the , pipeline stage.,vulkan,6 specifies write access to an image or buffer in the ,, ,, ,, or , pipeline stages.,vulkan,5 specifies read access to an image or buffer in the ,, ,, or , pipeline stages.,vulkan, specifies write access to a  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpassdepth/stencil attachment in the , or , pipeline stages.,vulkan, specifies read access to a  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpassdepth/stencil attachment in the , or , pipeline stages.,vulkan, specifies write access to a  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpasscolor or resolve attachment in the , pipeline stage.,vulkan, specifies read access to a  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpasscolor attachment (excluding  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advancedadvanced blend operations ) in the , pipeline stage.,vulkan, is equivalent to ,.,vulkan,$ is equivalent to the logical OR of: VK_ACCESS_2_UNIFORM_READ_BIT_KHR'VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR'VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR,vulkan, specifies read access to an  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpassinput attachment in the , pipeline stage.,vulkan, specifies read access to a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferuniform buffer in any shader pipeline stage.,vulkan,2 specifies read access to a vertex buffer in the , pipeline stage.,vulkan,2 specifies read access to an index buffer in the , pipeline stage.,vulkan,3 specifies read access to indirect buffers in the , pipeline stage.,vulkan, specifies no accesses.,vulkan9vkCmdSetEvent2KHR - Set an event object to signaled state DescriptionWhen ,W is submitted to a queue, it defines the first half of memory dependencies defined by pDependencyInfo, as well as an event signal operation which sets the event to the signaled state. A memory dependency is defined between the event signal operation and commands that occur earlier in submission order. The first  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope and  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopeF are defined by the union of all the memory dependencies defined by pDependencyInfo<, and are applied to all operations that occur earlier in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order.  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers Queue family ownership transfers and  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transitions defined by pDependencyInfo' are also included in the first scopes. The second  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope5 includes only the event signal operation, and any  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfers and  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transitions defined by pDependencyInfo. The second  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope includes only  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfers and  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transitions.Future -1 commands rely on all values of each element in pDependencyInfoF matching exactly with those used to signal the corresponding event.  mustE not be used to wait on the result of a signal operation defined by ,.Note"The extra information provided by , compared to | allows implementations to more efficiently schedule the operations required to satisfy the requested dependencies. With 7, the full dependency information is not known until g is recorded, forcing implementations to insert the required operations at that point and not before.If event' is already in the signaled state when ," is executed on the device, then ,R has no effect, no event signal operation occurs, and no dependency is generated. Valid Usage-VUID-vkCmdSetEvent2KHR-synchronization2-03824 The  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature must be enabled,VUID-vkCmdSetEvent2KHR-dependencyFlags-03825 The dependencyFlags member of dependencyInfo must be 0*VUID-vkCmdSetEvent2KHR-commandBuffer-03826! The current device mask of  commandBuffer must% include exactly one physical device.)VUID-vkCmdSetEvent2KHR-srcStageMask-03827 The  srcStageMask# member of any element of the pMemoryBarriers, pBufferMemoryBarriers, or pImageMemoryBarriers members of pDependencyInfo mustq only include pipeline stages valid for the queue family that was used to create the command pool that  commandBuffer was allocated from)VUID-vkCmdSetEvent2KHR-dstStageMask-03828 The  dstStageMask# member of any element of the pMemoryBarriers, pBufferMemoryBarriers, or pImageMemoryBarriers members of pDependencyInfo mustq only include pipeline stages valid for the queue family that was used to create the command pool that  commandBuffer was allocated fromValid Usage (Implicit).VUID-vkCmdSetEvent2KHR-commandBuffer-parameter  commandBuffer must be a valid  handle&VUID-vkCmdSetEvent2KHR-event-parameter event must be a valid  handle0VUID-vkCmdSetEvent2KHR-pDependencyInfo-parameter pDependencyInfo must be a valid pointer to a valid  structure.VUID-vkCmdSetEvent2KHR-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state,VUID-vkCmdSetEvent2KHR-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operations!VUID-vkCmdSetEvent2KHR-renderpass This command must6 only be called outside of a render pass instance#VUID-vkCmdSetEvent2KHR-commonparent Both 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 / 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, , ,vulkanAvkCmdResetEvent2KHR - Reset an event object to non-signaled state DescriptionWhen , 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 order9. The synchronization scope is limited to operations by stage or stages that are  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically earlier than stage. 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 " is executed on the device, then _ has no effect, no event unsignal operation occurs, and no execution dependency is generated. Valid Usage(VUID-vkCmdResetEvent2KHR-stageMask-03929 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 , (VUID-vkCmdResetEvent2KHR-stageMask-03930 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 ,(VUID-vkCmdResetEvent2KHR-stageMask-03931 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 ,(VUID-vkCmdResetEvent2KHR-stageMask-03932 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 ,(VUID-vkCmdResetEvent2KHR-stageMask-03933 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 ,(VUID-vkCmdResetEvent2KHR-stageMask-03934 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 ,(VUID-vkCmdResetEvent2KHR-stageMask-03935 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 ,(VUID-vkCmdResetEvent2KHR-stageMask-03936 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 ,/VUID-vkCmdResetEvent2KHR-synchronization2-03829 The  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature must be enabled(VUID-vkCmdResetEvent2KHR-stageMask-03830  stageMask must not include ,$VUID-vkCmdResetEvent2KHR-event-03831 There must) be an execution dependency between , and the execution of any  that includes event in its pEvents parameter$VUID-vkCmdResetEvent2KHR-event-03832 There must) be an execution dependency between , and the execution of any - that includes event in its pEvents parameter,VUID-vkCmdResetEvent2KHR-commandBuffer-03833  commandBuffer s current device mask must% include exactly one physical device.Valid Usage (Implicit)0VUID-vkCmdResetEvent2KHR-commandBuffer-parameter  commandBuffer must be a valid  handle(VUID-vkCmdResetEvent2KHR-event-parameter event must be a valid  handle,VUID-vkCmdResetEvent2KHR-stageMask-parameter  stageMask must be a valid combination of  values2VUID-vkCmdResetEvent2KHR-stageMask-requiredbitmask  stageMask must not be 00VUID-vkCmdResetEvent2KHR-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state.VUID-vkCmdResetEvent2KHR-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operations#VUID-vkCmdResetEvent2KHR-renderpass This command must6 only be called outside of a render pass instance%VUID-vkCmdResetEvent2KHR-commonparent Both 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 / 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, , 5Kvulkan*cmdWaitEvents2KHR with selectable safeness-vulkan1vkCmdWaitEvents2KHR - Wait for one or more events DescriptionWhen -W is submitted to a queue, it inserts memory dependencies according to the elements of pDependencyInfos$ and each corresponding element of pEvents. - musto not be used to wait on event signal operations occurring on other queues, or signal operations execyted by . The first  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope and  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope8 of each memory dependency defined by any element i of pDependencyInfos? are applied to operations commands that occurred earlier in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order7 than the last event signal operation on element i of pEvents.?Signal operations for an event at index i are only included if:The event was signaled by a ,, command that occurred earlier in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order with a dependencyInfo0 parameter exactly equal to the element of pDependencyInfos at index i ; or#The event was created without b, and the first  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope defined by the element of pDependencyInfos0 at index i only includes host operations (,). The second  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope and  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope8 of each memory dependency defined by any element i of pDependencyInfos= are applied to operations commands that occurred later in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order than -.Note- is used with , 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.NotezApplications should be careful to avoid race conditions when using events. There is no direct ordering guarantee between , and ,, , or L. Another execution dependency (e.g. a pipeline barrier or semaphore with ,.) is needed to prevent such a race condition. Valid Usage/VUID-vkCmdWaitEvents2KHR-synchronization2-03836 The  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature must be enabled &VUID-vkCmdWaitEvents2KHR-pEvents-03837 Members of pEvents must% not have been signaled by &VUID-vkCmdWaitEvents2KHR-pEvents-03838 For any element i of pEvents, if that event is signaled by ,, that command s dependencyInfo parameter must- be exactly equal to the ith element of pDependencyInfos&VUID-vkCmdWaitEvents2KHR-pEvents-03839 For any element i of pEvents$, if that event is signaled by *&, barriers in the ith element of pDependencyInfos must7 include only host operations in their first qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope&VUID-vkCmdWaitEvents2KHR-pEvents-03840 For any element i of pEvents$, if barriers in the ith element of pDependencyInfos7 include only host operations, the ith element of pEvents must be signaled before - is executed&VUID-vkCmdWaitEvents2KHR-pEvents-03841 For any element i of pEvents$, if barriers in the ith element of pDependencyInfos9 do not include host operations, the ith element of pEvents must be by a corresponding , that occurred earlier in nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order+VUID-vkCmdWaitEvents2KHR-srcStageMask-03842 The  srcStageMask# member of any element of the pMemoryBarriers, pBufferMemoryBarriers, or pImageMemoryBarriers members of pDependencyInfo mustx either include only pipeline stages valid for the queue family that was used to create the command pool that  commandBuffer* was allocated from, or include only ,+VUID-vkCmdWaitEvents2KHR-dstStageMask-03843 The  dstStageMask# member of any element of the pMemoryBarriers, pBufferMemoryBarriers, or pImageMemoryBarriers members of pDependencyInfo mustq only include pipeline stages valid for the queue family that was used to create the command pool that  commandBuffer was allocated from.VUID-vkCmdWaitEvents2KHR-dependencyFlags-03844 The dependencyFlags member of any element of dependencyInfo must be 0&VUID-vkCmdWaitEvents2KHR-pEvents-03845 If pEvents@ includes one or more events that will be signaled by * after  commandBuffer* has been submitted to a queue, then - must1 not be called inside a render pass instance,VUID-vkCmdWaitEvents2KHR-commandBuffer-03846  commandBuffer s current device mask must$ include exactly one physical deviceValid Usage (Implicit)0VUID-vkCmdWaitEvents2KHR-commandBuffer-parameter  commandBuffer must be a valid  handle*VUID-vkCmdWaitEvents2KHR-pEvents-parameter pEvents must( be a valid pointer to an array of  eventCount valid  handles3VUID-vkCmdWaitEvents2KHR-pDependencyInfos-parameter pDependencyInfos must( be a valid pointer to an array of  eventCount valid  structures0VUID-vkCmdWaitEvents2KHR-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state.VUID-vkCmdWaitEvents2KHR-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operations/VUID-vkCmdWaitEvents2KHR-eventCount-arraylength  eventCount must be greater than 0%VUID-vkCmdWaitEvents2KHR-commonparent Both of  commandBuffer, and the elements of pEvents must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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 A variant of - which makes a *safe* FFI call-vulkan5vkCmdPipelineBarrier2KHR - Insert a memory dependency DescriptionWhen - is submitted to a queue, it defines memory dependencies between commands that were submitted before it, and those submitted after it. The first  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope and  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope8 of each memory dependency defined by any element i of pDependencyInfos? are applied to operations commands that occurred earlier in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order. The second  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope and  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope8 of each memory dependency defined by any element i of pDependencyInfos= are applied to operations commands that occurred later in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order.If -M is recorded within a render pass instance, the synchronization scopes are  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-barriers-subpass-self-dependencies-limited to operations within the same subpass. Valid Usage1VUID-vkCmdPipelineBarrier2KHR-pDependencies-02285 If -? is called within a render pass instance, the render pass must* have been created with at least one 6c instance in 6~:: 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 command<VUID-vkCmdPipelineBarrier2KHR-bufferMemoryBarrierCount-01178 If -2 is called within a render pass instance, it must' not include any buffer memory barriers)VUID-vkCmdPipelineBarrier2KHR-image-04073 If -3 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 attachment-VUID-vkCmdPipelineBarrier2KHR-oldLayout-01181 If -3 is called within a render pass instance, the  oldLayout and  newLayoutC members of any image memory barrier included in this command must be equal7VUID-vkCmdPipelineBarrier2KHR-srcQueueFamilyIndex-01182 If -3 is called within a render pass instance, the srcQueueFamilyIndex and dstQueueFamilyIndexC members of any image memory barrier included in this command must be equal3VUID-vkCmdPipelineBarrier2KHR-dependencyFlags-01186 If -8 is called outside of a render pass instance, d must( not be included in the dependency flags4VUID-vkCmdPipelineBarrier2KHR-synchronization2-03848 The  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature must be enabled0VUID-vkCmdPipelineBarrier2KHR-srcStageMask-03849 The  srcStageMask member of any element of the pMemoryBarriers, pBufferMemoryBarriers, or pImageMemoryBarriers members of pDependencyInfo mustq only include pipeline stages valid for the queue family that was used to create the command pool that  commandBuffer was allocated from0VUID-vkCmdPipelineBarrier2KHR-dstStageMask-03850 The  dstStageMask member of any element of the pMemoryBarriers, pBufferMemoryBarriers, or pImageMemoryBarriers members of pDependencyInfo mustq only include pipeline stages valid for the queue family that was used to create the command pool that  commandBuffer was allocated fromValid Usage (Implicit)5VUID-vkCmdPipelineBarrier2KHR-commandBuffer-parameter  commandBuffer must be a valid  handle7VUID-vkCmdPipelineBarrier2KHR-pDependencyInfo-parameter pDependencyInfo must$ be a valid pointer to a valid  structure5VUID-vkCmdPipelineBarrier2KHR-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state3VUID-vkCmdPipelineBarrier2KHR-commandBuffer-cmdpool The / that  commandBuffer was allocated from must7 support transfer, graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, -vulkan6vkQueueSubmit2KHR - Submits 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 pSubmits as an instance of the  structure.$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 section of  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronizationthe synchronization chapter.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 & flag, it instead moves back 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 Usage-VUID-vkQueueSubmit2KHR-synchronization2-03866 The  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature must be enabled*VUID-vkQueueSubmit2KHR-commandBuffer-03867% If a command recorded into the  commandBuffer# member of any element of the pCommandBufferInfos member of any element of pSubmits referenced an  , that event mustg not be referenced by a command that has been submitted to another queue and is still in the  pending state&VUID-vkQueueSubmit2KHR-semaphore-03868 The  semaphore# member of any element of the pSignalSemaphoreInfos member of any element of pSubmits must\ be unsignaled when the semaphore signal operation it defines is executed on the device&VUID-vkQueueSubmit2KHR-stageMask-03869 The  stageMask# member of any element of the pSignalSemaphoreInfos member of any element of pSubmits mustP only include pipeline stages that are supported by the queue family which queue belongs to&VUID-vkQueueSubmit2KHR-stageMask-03870 The  stageMask# member of any element of the pWaitSemaphoreInfos member of any element of pSubmits mustP only include pipeline stages that are supported by the queue family which queue belongs to&VUID-vkQueueSubmit2KHR-semaphore-03871a When a semaphore wait operation for a binary semaphore is executed, as defined by the  semaphore member of any element of the pWaitSemaphoreInfos member of any element of pSubmits, there must6 be no other queues waiting on the same semaphore&VUID-vkQueueSubmit2KHR-semaphore-03872 The  semaphore# member of any element of the pWaitSemaphoreInfos member of any element of pSubmits 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 execution&VUID-vkQueueSubmit2KHR-semaphore-03873 Any  semaphore# member of any element of the pWaitSemaphoreInfos member of any element of pSubmits that was created with a e of f 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*VUID-vkQueueSubmit2KHR-commandBuffer-03874 The  commandBuffer# member of any element of the pCommandBufferInfos 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*VUID-vkQueueSubmit2KHR-commandBuffer-03875% If a command recorded into the  commandBuffer# member of any element of the pCommandBufferInfos member of any element of pSubmits% was not recorded with the  , it must not be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state*VUID-vkQueueSubmit2KHR-commandBuffer-03876 Any  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-secondary"secondary command buffers recorded into the  commandBuffer# member of any element of the pCommandBufferInfos 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*VUID-vkQueueSubmit2KHR-commandBuffer-03877 If any  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-secondary"secondary command buffers recorded into the  commandBuffer# member of any element of the pCommandBufferInfos member of any element of pSubmits% was not recorded with the  , it must not be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state*VUID-vkQueueSubmit2KHR-commandBuffer-03878 The  commandBuffer# member of any element of the pCommandBufferInfos member of any element of pSubmits must! have been allocated from a /1 that was created for the same queue family queue belongs to*VUID-vkQueueSubmit2KHR-commandBuffer-03879% If a command recorded into the  commandBuffer# member of any element of the pCommandBufferInfos member of any element of pSubmits 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*VUID-vkQueueSubmit2KHR-commandBuffer-03880% If a command recorded into the  commandBuffer# member of any element of the pCommandBufferInfos member of any element of pSubmits was a  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 buffersValid Usage (Implicit)&VUID-vkQueueSubmit2KHR-queue-parameter queue must be a valid { handle)VUID-vkQueueSubmit2KHR-pSubmits-parameter If  submitCount is not 0, pSubmits must( be a valid pointer to an array of  submitCount valid  structures&VUID-vkQueueSubmit2KHR-fence-parameter If fence is not 8, fence must be a valid  handle#VUID-vkQueueSubmit2KHR-commonparent Both of fence, and queue7 that are valid handles of non-ignored parameters mustD 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?=See Also, {, -vulkanFvkCmdWriteTimestamp2KHR - Write a device timestamp into a query object DescriptionWhen - is submitted to a queue, it defines an execution dependency on commands that were submitted before it, and writes a timestamp to a query pool. 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 orderZ. The synchronization scope is limited to operations on the pipeline stage specified by  pipelineStage. The second  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope. includes only the timestamp write operation._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 - 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(VUID-vkCmdWriteTimestamp2KHR-stage-03929 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 contain ,(VUID-vkCmdWriteTimestamp2KHR-stage-03930 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 contain , or ,(VUID-vkCmdWriteTimestamp2KHR-stage-03931 If the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled, stage must not contain ,(VUID-vkCmdWriteTimestamp2KHR-stage-03932 If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled, stage must not contain ,(VUID-vkCmdWriteTimestamp2KHR-stage-03933 If the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled, stage must not contain ,(VUID-vkCmdWriteTimestamp2KHR-stage-03934 If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled, stage must not contain ,(VUID-vkCmdWriteTimestamp2KHR-stage-03935 If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled, stage must not contain ,(VUID-vkCmdWriteTimestamp2KHR-stage-03936 If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled, stage must not contain ,3VUID-vkCmdWriteTimestamp2KHR-synchronization2-03858 The  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature must be enabled(VUID-vkCmdWriteTimestamp2KHR-stage-03859 stage must* only include a single pipeline stage(VUID-vkCmdWriteTimestamp2KHR-stage-03860 stage musth only include stages valid for the queue family that was used to create the command pool that  commandBuffer was allocated from,VUID-vkCmdWriteTimestamp2KHR-queryPool-03861  queryPool must have been created with a  queryType of #,VUID-vkCmdWriteTimestamp2KHR-queryPool-03862 The query identified by  queryPool and query must be  unavailable5VUID-vkCmdWriteTimestamp2KHR-timestampValidBits-03863& The command pool s queue family must support a non-zero timestampValidBits'VUID-vkCmdWriteTimestamp2KHR-None-03864& All queries used by the command must be unavailable(VUID-vkCmdWriteTimestamp2KHR-query-03865 If -: 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)4VUID-vkCmdWriteTimestamp2KHR-commandBuffer-parameter  commandBuffer must be a valid  handle,VUID-vkCmdWriteTimestamp2KHR-stage-parameter stage must be a valid combination of  values2VUID-vkCmdWriteTimestamp2KHR-stage-requiredbitmask stage must not be 00VUID-vkCmdWriteTimestamp2KHR-queryPool-parameter  queryPool must be a valid | handle4VUID-vkCmdWriteTimestamp2KHR-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state2VUID-vkCmdWriteTimestamp2KHR-commandBuffer-cmdpool The / that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations)VUID-vkCmdWriteTimestamp2KHR-commonparent Both 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 / 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, , |-vulkanWvkCmdWriteBufferMarker2AMD - 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 implicitly complete in submission order, memory and execution dependencies between buffer marker writes and other operations mustz still be explicitly ordered using synchronization commands. The access scope for buffer marker writes falls under the E, and the pipeline stages for identifying the synchronization scope must include both  pipelineStage and 7.Note Similar to -W, 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 an excessive number of marker write operations may' degrade command execution performance. Valid Usage+VUID-vkCmdWriteBufferMarker2AMD-stage-03929 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 contain ,+VUID-vkCmdWriteBufferMarker2AMD-stage-03930 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 contain , or ,+VUID-vkCmdWriteBufferMarker2AMD-stage-03931 If the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRenderingconditional rendering feature is not enabled, stage must not contain ,+VUID-vkCmdWriteBufferMarker2AMD-stage-03932 If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragment density map feature is not enabled, stage must not contain ,+VUID-vkCmdWriteBufferMarker2AMD-stage-03933 If the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedbacktransform feedback feature is not enabled, stage must not contain ,+VUID-vkCmdWriteBufferMarker2AMD-stage-03934 If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled, stage must not contain ,+VUID-vkCmdWriteBufferMarker2AMD-stage-03935 If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled, stage must not contain ,+VUID-vkCmdWriteBufferMarker2AMD-stage-03936 If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature is not enabled, stage must not contain ,6VUID-vkCmdWriteBufferMarker2AMD-synchronization2-03893 The  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature must be enabled+VUID-vkCmdWriteBufferMarker2AMD-stage-03894 stage must* include only a single pipeline stage+VUID-vkCmdWriteBufferMarker2AMD-stage-03895 stage mustq include only stages that are valid for the queue family that was used to create the command pool that  commandBuffer was allocated from/VUID-vkCmdWriteBufferMarker2AMD-dstOffset-03896  dstOffset must+ be less than or equal to the size of  dstBuffer minus 4./VUID-vkCmdWriteBufferMarker2AMD-dstBuffer-03897  dstBuffer must& have been created with the  usage flag/VUID-vkCmdWriteBufferMarker2AMD-dstBuffer-03898 If  dstBuffer is non-sparse then it must7 be bound completely and contiguously to a single / object/VUID-vkCmdWriteBufferMarker2AMD-dstOffset-03899  dstOffset must be a multiple of 4Valid Usage (Implicit)7VUID-vkCmdWriteBufferMarker2AMD-commandBuffer-parameter  commandBuffer must be a valid  handle/VUID-vkCmdWriteBufferMarker2AMD-stage-parameter stage must be a valid combination of  values5VUID-vkCmdWriteBufferMarker2AMD-stage-requiredbitmask stage must not be 03VUID-vkCmdWriteBufferMarker2AMD-dstBuffer-parameter  dstBuffer must be a valid  handle7VUID-vkCmdWriteBufferMarker2AMD-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state5VUID-vkCmdWriteBufferMarker2AMD-commandBuffer-cmdpool The / that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations,VUID-vkCmdWriteBufferMarker2AMD-commonparent Both 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 / 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, , n, -vulkanAvkGetQueueCheckpointData2NV - 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 Usage,VUID-vkGetQueueCheckpointData2NV-queue-03892 The device that queue belongs to must be in the lost stateValid Usage (Implicit)0VUID-vkGetQueueCheckpointData2NV-queue-parameter queue must be a valid { handle?VUID-vkGetQueueCheckpointData2NV-pCheckpointDataCount-parameter pCheckpointDataCount must be a valid pointer to a uint32_t value:VUID-vkGetQueueCheckpointData2NV-pCheckpointData-parameter! If 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, { ,vulkan commandBuffer; is the command buffer into which the command is recorded.vulkanevent$ is the event that will be signaled.vulkanpDependencyInfo is a pointer to a 8 structure defining the first scopes of this operation.,vulkan commandBuffer; is the command buffer into which the command is recorded.vulkanevent& is the event that will be unsignaled.vulkan stageMask is a is a 7 mask of pipeline stages used to determine the first  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope.5Kvulkan commandBuffer; is the command buffer into which the command is recorded.vulkanpEvents" is an array of events to wait on.vulkanpDependencyInfos is an array of # structures, defining the second  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope.-vulkan commandBuffer; is the command buffer into which the command is recorded.vulkanpEvents" is an array of events to wait on.vulkanpDependencyInfos is an array of # structures, defining the second  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope.-vulkan commandBuffer; is the command buffer into which the command is recorded.vulkanpEvents" is an array of events to wait on.vulkanpDependencyInfos is an array of # structures, defining the second  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope.-vulkan commandBuffer; is the command buffer into which the command is recorded.vulkanpDependencyInfo is a pointer to a 2 structure defining the scopes of this operation.-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 8, it defines a  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signalingfence signal operation.-vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanstage# specifies 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.-vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanstageJ specifies the pipeline stage whose completion triggers the marker write.vulkan dstBuffer0 is the buffer where the marker will be written.vulkan dstOffsetF is the byte offset into the buffer where the marker will be written.vulkanmarker# is the 32-bit value of the marker.-vulkanqueue is the {> object the caller would like to retrieve checkpoint data for,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,y,,,,,,,,,,,,,,},~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,U,t,u,v,,w,x,z,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,{,|,,,,,,,,,,,-------,,-------,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,},~,|,z,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,{,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,y,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,x,v,,w,,u,,t,UNone("#%&'-./1789;=>?FHIMSUVX_dghklmqDvulkanvVkMemoryGetAndroidHardwareBufferInfoANDROID - Structure describing an Android hardware buffer memory export operation Valid UsageBVUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-handleTypes-01882 AZ must have been included in OU:: handleTypes when memory was created<VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-01883 If the pNext chain of the 3 used to allocate memory included a H with non-NULL image member, then that image must already be bound to memoryValid Usage (Implicit)<VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-sType-sType sType must be %<VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-pNext pNext must be NULLAVUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-memory-parameter memory must be a valid  handleSee Also, C, -pvulkanYVkImportAndroidHardwareBufferInfoANDROID - 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 Usage:VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01880 If buffer is not NULL, Android hardware buffers must3 be supported for import, as reported by P^ or P[:VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01881 If 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)9VUID-VkImportAndroidHardwareBufferInfoANDROID-sType-sType sType must be $>VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-parameter buffer must be a valid pointer to an  valueSee AlsoCvulkanZVkExternalFormatANDROID - 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 AlsoCvulkan\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 T~ are required.Valid Usage (Implicit)See AlsoCvulkanbVkAndroidHardwareBufferPropertiesANDROID - Properties of External Memory Android Hardware BuffersValid Usage (Implicit)9VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-sType sType must be "9VUID-VkAndroidHardwareBufferPropertiesANDROID-pNext-pNext pNext must be NULL* or a pointer to a valid instance of :VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-unique The sType value of each struct in the pNext chain must be uniqueSee Alson, C, -ovulkanVkAndroidHardwareBufferFormatPropertiesANDROID - 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 *, indicating the Android hardware buffer can& only be used with an external format.The formatFeatures member must include {% and at least one of {g or {h, and should include {' and {i.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 8 are subject to the format capabilities obtained from T, and T& 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, {h, {i, {, and {j. in formatFeatures. Other format features mayy differ between Android hardware buffers that have the same external format. This allows applications to use the same C} object (and samplers and pipelines created from them) for any Android hardware buffers that have the same external format.If format is not , then the value of  samplerYcbcrConversionComponents must be valid when used as the  components member of X with that format. If format is , 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 , , K, , , , C-YvulkanexternalFormatA is an implementation-defined identifier for the external format1VUID-VkExternalFormatANDROID-externalFormat-01894 externalFormat must be 0 or a value returned in the externalFormat member of  by an earlier call to -o-[vulkanformatQ is the Vulkan format corresponding to the Android hardware buffer s format, or . if there is not an equivalent Vulkan format.-\vulkanexternalFormatG is an implementation-defined external format identifier for use with . It must not be zero.-]vulkanformatFeaturesk 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.-avulkansuggestedXChromaOffset+ is a suggested X chroma offset to use in X.-bvulkansuggestedYChromaOffset+ is a suggested Y chroma offset to use in X.-dvulkanmemoryO is the memory object from which the Android hardware buffer will be exported.-fvulkanpNext is NULL6 or a pointer to a structure extending this structure.-gvulkanallocationSize# is the size of the external memory-hvulkanmemoryTypeBitsh is a bitmask containing one bit set for every memory type which the specified Android hardware buffer can be imported as.-jvulkanandroidHardwareBufferUsage2 returns the Android hardware buffer usage flags.-lvulkanbuffer* is the Android hardware buffer to import.-ovulkanivkGetAndroidHardwareBufferPropertiesANDROID - Get Properties of External Memory Android Hardware Buffers Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@See Also, -pvulkan]vkGetMemoryAndroidHardwareBufferANDROID - Get an Android hardware buffer for a memory object Description Each call to -p 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, -p must} return the same Android hardware buffer object. If the device memory was created by importing an Android hardware buffer, -p must2 return that same Android hardware buffer object. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure7@See Also, -ovulkandevice. is the logical device that will be importing buffer.AVUID-vkGetAndroidHardwareBufferPropertiesANDROID-device-parameter device must be a valid  handlevulkanbuffer7 is the Android hardware buffer which will be imported.=VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-01884 buffer mustE be a valid Android hardware buffer object with at least one of the AHARDWAREBUFFER_USAGE_GPU_* flags in its AHardwareBuffer_Desc::usageAVUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-parameter buffer must be a valid pointer to a valid  value-pvulkandeviceF is the logical device that created the device memory being exported.=VUID-vkGetMemoryAndroidHardwareBufferANDROID-device-parameter device must be a valid  handlevulkanpInfo is a pointer to a : structure containing parameters of the export operation.<VUID-vkGetMemoryAndroidHardwareBufferANDROID-pInfo-parameter pInfo must be a valid pointer to a valid  structure"-c-d-k-l-X-Y-i-j-e-f-h-g-Z-[-\-]-^-_-`-a-b-V-W-m-n-o-p"-o-p-k-l-i-j-e-f-h-g-c-d-Z-[-\-]-^-_-`-a-b-X-Y-W-n-V-mXNone("#%&'-./1789;=>?FHIMSUVX_dghklmq:LvulkanaVkSamplerYcbcrConversionInfo - Structure specifying Y 2CBCR conversion to a sampler or image viewValid Usage (Implicit)See Also, CvulkanVkSamplerYcbcrConversionImageFormatProperties - Structure specifying combined image sampler descriptor count for multi-planar imagesValid Usage (Implicit)See AlsoCvulkaniVkSamplerYcbcrConversionCreateInfo - 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 Usage4VUID-VkSamplerYcbcrConversionCreateInfo-format-019049 If an external format conversion is being created, format must be : 4VUID-VkSamplerYcbcrConversionCreateInfo-format-04061= If an external format conversion is not being created, format mustK represent unsigned normalized values (i.e. the format must be a UNORM format)4VUID-VkSamplerYcbcrConversionCreateInfo-format-01650 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 ;VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01651 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 corresponding channels are lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstruction downsampled;VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01652 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 corresponding channels are lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstruction downsampled8VUID-VkSamplerYcbcrConversionCreateInfo-components-02581 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 swizzle8VUID-VkSamplerYcbcrConversionCreateInfo-components-02582 If 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, k , or l8VUID-VkSamplerYcbcrConversionCreateInfo-components-02583 If 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 8VUID-VkSamplerYcbcrConversionCreateInfo-components-02584 If 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 8VUID-VkSamplerYcbcrConversionCreateInfo-components-02585 If 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 swizzle8VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-01655 If  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 l or k , 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 RGBA8VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrRange-02748 If  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 8IVUID-VkSamplerYcbcrConversionCreateInfo-forceExplicitReconstruction-01656 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 .:VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-01657 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)3VUID-VkSamplerYcbcrConversionCreateInfo-sType-sType sType must be n 3VUID-VkSamplerYcbcrConversionCreateInfo-pNext-pNext pNext must be NULL* or a pointer to a valid instance of 4VUID-VkSamplerYcbcrConversionCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique8VUID-VkSamplerYcbcrConversionCreateInfo-format-parameter format must be a valid K value<VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-parameter  ycbcrModel must be a valid  value<VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrRange-parameter  ycbcrRange must be a valid  value<VUID-VkSamplerYcbcrConversionCreateInfo-components-parameter  components must be a valid  structure?VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-parameter  xChromaOffset must be a valid   value?VUID-VkSamplerYcbcrConversionCreateInfo-yChromaOffset-parameter  yChromaOffset must be a valid   value>VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-parameter  chromaFilter must be a valid J valueIf  chromaFilter is m, 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 Alsop,  , , J, K, , , C, -, avulkanVkPhysicalDeviceSamplerYcbcrConversionFeatures - 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 Alsop, Cvulkan^VkImagePlaneMemoryRequirementsInfo - Structure specifying image plane for memory requirements Valid Usage9VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02281 If the image s tiling is n or  , then  planeAspect must be a single valid  format plane4 for the image (that is, for a two-plane image  planeAspect must be  or #, and for a three-plane image  planeAspect must be ,  or )9VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02282 If the image s tiling is  , 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 |::drmFormatModifier)Valid Usage (Implicit)3VUID-VkImagePlaneMemoryRequirementsInfo-sType-sType sType must be q=VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-parameter  planeAspect must be a valid  valueSee Also, CvulkanWVkBindImagePlaneMemoryInfo - Structure specifying how to bind an image plane to memory Valid Usage1VUID-VkBindImagePlaneMemoryInfo-planeAspect-02283 If the image s tiling is n or  , then  planeAspect must be a single valid  format plane4 for the image (that is, for a two-plane image  planeAspect must be  or #, and for a three-plane image  planeAspect must be ,  or )1VUID-VkBindImagePlaneMemoryInfo-planeAspect-02284 If the image s tiling is  , 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 |::drmFormatModifier)Valid Usage (Implicit)+VUID-VkBindImagePlaneMemoryInfo-sType-sType sType must be p5VUID-VkBindImagePlaneMemoryInfo-planeAspect-parameter  planeAspect must be a valid  valueSee Also, C-vulkan#combinedImageSamplerDescriptorCounth is the number of combined image sampler descriptors that the implementation uses to access the format.-vulkan)extension-features-samplerYcbcrConversion samplerYcbcrConversion1 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 o< 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.  xChromaOffsetV has no effect for formats in which chroma channels are not downsampled horizontally.-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 -.6VUID-VkSamplerYcbcrConversionInfo-conversion-parameter  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.VUID-vkCreateSamplerYcbcrConversion-None-01648 The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-samplerYcbcrConversion!sampler Y 2CBCR conversion feature must be enabledValid Usage (Implicit)4VUID-vkCreateSamplerYcbcrConversion-device-parameter device must be a valid  handle9VUID-vkCreateSamplerYcbcrConversion-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure8VUID-vkCreateSamplerYcbcrConversion-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure>VUID-vkCreateSamplerYcbcrConversion-pYcbcrConversion-parameter pYcbcrConversion must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , , -vulkan=A convenience wrapper to make a compatible pair of calls to - and -To ensure that - is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.-vulkanEvkDestroySamplerYcbcrConversion - Destroy a created Y 2CBCR conversionValid Usage (Implicit)5VUID-vkDestroySamplerYcbcrConversion-device-parameter device must be a valid  handle>VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parameter If ycbcrConversion is not 8, ycbcrConversion must be a valid  handle9VUID-vkDestroySamplerYcbcrConversion-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure;VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parent If 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.yKG:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHMt~}|{zyxwvuNV 43210/.-,+*)('&%$#"!   --------------------   CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE      --------------------------KG:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIH:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEV 43210/.-,+*)('&%$#"!   43210/.-,+*)('&%$#"!   Mt~}|{zyxwvu~}|{zyxwvuN                None("#%&'-./1789;=>?FHIMSUVX_dghklmqdt%)%T%S%R%Q%P%O%N%M%L%K%J%I%H%G%F%E%D%C%B%A%@%?%>%=%<%;%:%9%8%7%6%5%4%3%2%1---------------------------------------------------.......... . . . . ......................... . . . . .........-------------------------------------..--------------%)%T%S%R%Q%P%O%N%M%L%K%J%I%H%G%F%E%D%C%B%A%@%?%>%=%<%;%:%9%8%7%6%5%4%3%2%1%T%S%R%Q%P%O%N%M%L%K%J%I%H%G%F%E%D%C%B%A%@%?%>%=%<%;%:%9%8%7%6%5%4%3%2%15None("#%&'-./1789;=>?FHIMSUVX_dghklmq6O$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, C, k, 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 M, 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 M or N, 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.If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature is not enabled or  oldLayout is not equal to  newLayout,  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.NoteIf the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature is enabled, when the old and new layout are equal, the layout values are ignored - data is preserved no matter what values are specified, or what layout the image is currently in.If image, has a multi-planar format and the image is disjoint, then including xQ in the  aspectMask member of subresourceRange is equivalent to including x, x', and (for three-plane formats only) x. Valid Usage0VUID-VkImageMemoryBarrier-subresourceRange-01486 subresourceRange.baseMipLevel must be less than the  mipLevels specified in 0 when image was created0VUID-VkImageMemoryBarrier-subresourceRange-01724 If subresourceRange.levelCount is not W, subresourceRange.baseMipLevel + subresourceRange.levelCount must be less than or equal to the  mipLevels specified in 0 when image was created0VUID-VkImageMemoryBarrier-subresourceRange-01488 subresourceRange.baseArrayLayer must be less than the  arrayLayers specified in 0 when image was created0VUID-VkImageMemoryBarrier-subresourceRange-01725 If subresourceRange.layerCount is not X, subresourceRange.baseArrayLayer + subresourceRange.layerCount must be less than or equal to the  arrayLayers specified in 0 when image was created%VUID-VkImageMemoryBarrier-image-01932 If image is non-sparse then it must7 be bound completely and contiguously to a single / object)VUID-VkImageMemoryBarrier-oldLayout-01208 If 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 an  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 )VUID-VkImageMemoryBarrier-oldLayout-01209 If 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 an  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 )VUID-VkImageMemoryBarrier-oldLayout-01210 If 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 an  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 )VUID-VkImageMemoryBarrier-oldLayout-01211 If 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 an  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  or )VUID-VkImageMemoryBarrier-oldLayout-01212 If 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 an  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 )VUID-VkImageMemoryBarrier-oldLayout-01213 If 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 an  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 )VUID-VkImageMemoryBarrier-oldLayout-01197 If 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 an  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition,  oldLayout must be M or the current layout of the image subresources affected by the barrier)VUID-VkImageMemoryBarrier-newLayout-01198 If 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 an  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition,  newLayout must not be  or )VUID-VkImageMemoryBarrier-oldLayout-01658 If 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 an  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 )VUID-VkImageMemoryBarrier-oldLayout-01659 If 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 an  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 3VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04065 If 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 an  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 at least one of ,  , or 3VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04066 If 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 an  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  set3VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04067 If 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 an  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 at least one of ,  , or 3VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04068 If 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 an  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  set3VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-03938 If 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 an  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is ], image must have been created with  or 3VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-03939 If 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 an  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transition , and  oldLayout or  newLayout is ^, image must- have been created with at least one of ,  , or )VUID-VkImageMemoryBarrier-oldLayout-02088 If 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 an  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 Y set%VUID-VkImageMemoryBarrier-image-01671 If image0 has a single-plane color format or is not disjoint, then the  aspectMask member of subresourceRange must be xQ%VUID-VkImageMemoryBarrier-image-01672 If image1 has a multi-planar format and the image is disjoint, then the  aspectMask member of subresourceRange must* include either at least one of x, x, and x ; or must include xQ%VUID-VkImageMemoryBarrier-image-01673 If image? has a multi-planar format with only two planes, then the  aspectMask member of subresourceRange must not include x%VUID-VkImageMemoryBarrier-image-03319 If 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 x and x%VUID-VkImageMemoryBarrier-image-03320 If 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 x and x3VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04070 If 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???%VUID-VkImageMemoryBarrier-image-04071 If image. was created with a sharing mode of 7, 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 8%VUID-VkImageMemoryBarrier-image-04072 If image. was created with a sharing mode of 7 , 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???0VUID-VkImageMemoryBarrier-synchronization2-03857 If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature is not enabled, and image) was created with a sharing mode of 7, at least one of srcQueueFamilyIndex and dstQueueFamilyIndex must be 8Valid Usage (Implicit)%VUID-VkImageMemoryBarrier-sType-sType sType must be %VUID-VkImageMemoryBarrier-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of &VUID-VkImageMemoryBarrier-sType-unique The sType" value of each struct in the pNext chain must be unique-VUID-VkImageMemoryBarrier-oldLayout-parameter  oldLayout must be a valid O value-VUID-VkImageMemoryBarrier-newLayout-parameter  newLayout must be a valid O value)VUID-VkImageMemoryBarrier-image-parameter image must be a valid  handle4VUID-VkImageMemoryBarrier-subresourceRange-parameter subresourceRange must be a valid  structureSee Also, , O, , C, k, vulkanDVkDrawIndirectCommand - Structure specifying a draw indirect command DescriptionThe members of > have the same meaning as the similarly named parameters of a. Valid Usage%VUID-VkDrawIndirectCommand-None-00500D For a given vertex buffer binding, any attribute data fetched musta 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.VUID-VkDrawIndirectCommand-firstInstance-00501 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 b. Valid Usage,VUID-VkDrawIndexedIndirectCommand-None-00552D 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-input1VUID-VkDrawIndexedIndirectCommand-indexSize-00553 ( indexSize ( firstIndex +  indexCount) + offset) mustH 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 5VUID-VkDrawIndexedIndirectCommand-firstInstance-00554 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 M, 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 M or N, 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 Usage'VUID-VkBufferMemoryBarrier-offset-01187 offset must be less than the size of buffer%VUID-VkBufferMemoryBarrier-size-01188 If size is not equal to , size must be greater than 0%VUID-VkBufferMemoryBarrier-size-01189 If size is not equal to , size must0 be less than or equal to than the size of buffer minus offset'VUID-VkBufferMemoryBarrier-buffer-01931 If buffer is non-sparse then it must7 be bound completely and contiguously to a single / object4VUID-VkBufferMemoryBarrier-srcQueueFamilyIndex-04087 If 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???'VUID-VkBufferMemoryBarrier-buffer-04088 If buffer. was created with a sharing mode of 7, 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 8'VUID-VkBufferMemoryBarrier-buffer-04089 If buffer. was created with a sharing mode of 7 , 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???1VUID-VkBufferMemoryBarrier-synchronization2-03853 If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature is not enabled, and buffer) was created with a sharing mode of 7, at least one of srcQueueFamilyIndex and dstQueueFamilyIndex must be 8Valid Usage (Implicit)&VUID-VkBufferMemoryBarrier-sType-sType sType must be &VUID-VkBufferMemoryBarrier-pNext-pNext pNext must be NULL+VUID-VkBufferMemoryBarrier-buffer-parameter buffer must be a valid  handleSee Also, , n, C, k, .vulkanxB is the number of local workgroups to dispatch in the X dimension.&VUID-VkDispatchIndirectCommand-x-00417 x must be less than or equal to  ::maxComputeWorkGroupCount[0].vulkanyB is the number of local workgroups to dispatch in the Y dimension.&VUID-VkDispatchIndirectCommand-y-00418 y must be less than or equal to  ::maxComputeWorkGroupCount[1].vulkanzB is the number of local workgroups to dispatch in the Z dimension.&VUID-VkDispatchIndirectCommand-z-00419 z must be less than or equal to  ::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..(vulkan firstVertex* is the index of the first vertex to draw..)vulkan firstInstance2 is the instance ID of the first instance to draw..+vulkanpNext is NULL6 or a pointer to a structure extending this structure..,vulkan srcAccessMask is a bitmask of a 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 a specifying a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masksdestination access mask...vulkan 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../vulkan 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..0vulkansrcQueueFamilyIndex# 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..1vulkandstQueueFamilyIndex( 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..2vulkanimage3 is a handle to the image affected by this barrier..3vulkansubresourceRange 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..5vulkan srcAccessMask is a bitmask of a specifying a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-maskssource access mask..6vulkan dstAccessMask is a bitmask of a specifying a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masksdestination access mask..7vulkansrcQueueFamilyIndex# 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..8vulkandstQueueFamilyIndex( 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..9vulkanbufferL is a handle to the buffer whose backing memory is affected by the barrier..:vulkanoffset3 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)..;vulkansize@ 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..=vulkan srcAccessMask is a bitmask of a specifying a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-maskssource access mask.,VUID-VkMemoryBarrier-srcAccessMask-parameter  srcAccessMask must be a valid combination of a values.>vulkan dstAccessMask is a bitmask of a specifying a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masksdestination access mask.,VUID-VkMemoryBarrier-dstAccessMask-parameter  dstAccessMask must be a valid combination of a valueseV 43210/.-,+*)('&%$#"!   .<.=.>.*.+.2.,.-.3.../.0.1.%.&.'.(.)..!.$. .".#.....4.;.:.9.5.6.7.8 &%$#"!.<.=.>.4.;.:.9.5.6.7.8.*.+.2.,.-.3.../.0.1.%.&.'.(.)..!.$. .".#....V 43210/.-,+*)('&%$#"!   43210/.-,+*)('&%$#"!    &%$#"!&%$#"!0None("#%&'-./1789;=>?FHIMSUVX_dghklmq݄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 n , then the  aspectMask member of  must be xQ.;If the image has a depth/stencil format and its tiling is n , then  aspectMask must be either x or x. 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 n , then the  aspectMask member of  must be x, x", or (for 3-plane formats only) xM. 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  , 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 Alson, , .yvulkanXVkImageCreateInfo - Structure specifying the parameters of a newly created image object DescriptionImages created with tiling equal to n^ have further restrictions on their limits and capabilities compared to images created with tiling equal to ". Creation of images with tiling n mayG not be supported unless other parameters meet all of the constraints: imageType is Sformat is not a depth/stencil format mipLevels is 1 arrayLayers is 1samples is %4usage only includes  and/or Images 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 S mipLevels is 1 arrayLayers is 1samples is %4Implementations mayG support additional limits and capabilities beyond those listed above.To determine the set of valid usage bits for a given format, call  6.0If the size of the resultant image would exceed maxResourceSize, then .v must fail and return ?. This failure mayW occur even when all image creation parameters satisfy their valid usage requirements.NoteFor images created without p a usageK bit is valid if it is supported for the format the image is created with.For images created with p 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  , 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 n , then imageCreateMaybeLinear is true.If tiling is  , then imageCreateMaybeLinear is false.If tiling is  , 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 n , then imageCreateFormatFeatures is the value of  ::linearTilingFeatures found by calling  6 with parameter format equal to ::format.If tiling is , and if the pNext chain includes no  structure with non-zero externalFormat , then imageCreateFormatFeatures is value of  ::optimalTilingFeatures found by calling  6 with parameter format equal to ::format.If tiling is , 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 , then the value of imageCreateFormatFeatures is found by calling T with  ::format equal to ::format and with Q chained into T~:; by collecting all members of the returned array Q::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 T*, 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 T 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 , then T::pNext must contain a  structure where  sharingMode is equal to :: sharingMode ; and, if  sharingMode is 7 , then queueFamilyIndexCount and pQueueFamilyIndices must be equal to those in ; and, if flags contains O, then the 7 structure included in the pNext chain of T must* be equivalent to the one included in the pNext chain of  ; and T must$ be called for each modifier in imageCreateDrmFormatModifiers, successively setting ::drmFormatModifier on each call.If tiling is not , then T::pNext must contain no  structure.If any call to T 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: :: maxMipLevels is # log2(max( extent.width,  extent.height,  extent.depth))# + 1. ::maxArrayLayers is  ::maxImageArrayLayers.Each component of  :: maxExtent is  ::maxImageDimension2D. :: sampleCounts contains exactly %4.Let  uint32_t imageCreateMaxMipLevels be the minimum value of  :: maxMipLevels in $imageCreateImageFormatPropertiesList!. The value is undefined if $imageCreateImageFormatPropertiesList is empty.Let "uint32_t imageCreateMaxArrayLayers be the minimum value of  ::maxArrayLayers in $imageCreateImageFormatPropertiesList!. The value is undefined if $imageCreateImageFormatPropertiesList is empty.Let VkExtent3D imageCreateMaxExtent2 be the component-wise minimum over all  :: maxExtent values in $imageCreateImageFormatPropertiesList!. The value is undefined if $imageCreateImageFormatPropertiesList is empty.Let *VkSampleCountFlags imageCreateSampleCounts' be the intersection of each  :: sampleCounts in $imageCreateImageFormatPropertiesList!. The value is undefined if $imageCreateImageFormatPropertiesList is empty. Valid Usage4VUID-VkImageCreateInfo-imageCreateMaxMipLevels-022519 Each 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 imageCreateSampleCounts_(VUID-VkImageCreateInfo-sharingMode-00941 If  sharingMode is 7, pQueueFamilyIndices must( be a valid pointer to an array of queueFamilyIndexCount uint32_t values(VUID-VkImageCreateInfo-sharingMode-00942 If  sharingMode is 7, queueFamilyIndexCount must be greater than 1(VUID-VkImageCreateInfo-sharingMode-01420 If  sharingMode is 7, each element of pQueueFamilyIndices must be unique and must be less than pQueueFamilyPropertyCount returned by either   or T for the physicalDevice that was used to create device"VUID-VkImageCreateInfo-pNext-01974 If the pNext chain includes a  structure, and its externalFormat member is non-zero the format must be "VUID-VkImageCreateInfo-pNext-01975 If the pNext$ chain does not include a ! structure, or does and its externalFormat member is 0 , the format must not be #VUID-VkImageCreateInfo-extent-00944  extent.width must be greater than 0#VUID-VkImageCreateInfo-extent-00945  extent.height must be greater than 0#VUID-VkImageCreateInfo-extent-00946  extent.depth must be greater than 0&VUID-VkImageCreateInfo-mipLevels-00947  mipLevels must be greater than 0(VUID-VkImageCreateInfo-arrayLayers-00948  arrayLayers must be greater than 0"VUID-VkImageCreateInfo-flags-00949 If flags contains T,  imageType must be S"VUID-VkImageCreateInfo-flags-02557 If flags contains ,  imageType must be S"VUID-VkImageCreateInfo-flags-00950 If flags contains !,  imageType must be U#VUID-VkImageCreateInfo-extent-02252  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)#VUID-VkImageCreateInfo-extent-02253  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)#VUID-VkImageCreateInfo-extent-02254  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)&VUID-VkImageCreateInfo-imageType-00954 If  imageType is S and flags contains T,  extent.width and  extent.height must be equal and  arrayLayers must be greater than or equal to 6&VUID-VkImageCreateInfo-imageType-00956 If  imageType is R, both  extent.height and  extent.depth must be 1&VUID-VkImageCreateInfo-imageType-00957 If  imageType is S,  extent.depth must be 1&VUID-VkImageCreateInfo-mipLevels-00958  mipLevels must_ be less than or equal to the number of levels in the complete mipmap chain based on  extent.width,  extent.height, and  extent.depth&VUID-VkImageCreateInfo-mipLevels-02255  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)(VUID-VkImageCreateInfo-arrayLayers-02256  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)&VUID-VkImageCreateInfo-imageType-00961 If  imageType is U,  arrayLayers must be 1$VUID-VkImageCreateInfo-samples-02257 If samples is not %4 , then  imageType must be S, flags must not contain T,  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,$VUID-VkImageCreateInfo-samples-02558 If samples is not %4, usage must not contain "VUID-VkImageCreateInfo-usage-00963 If usage includes !, then bits other than , , and  must not be set"VUID-VkImageCreateInfo-usage-00964 If usage includes , , , or ,  extent.width must be less than or equal to  ::maxFramebufferWidth"VUID-VkImageCreateInfo-usage-00965 If usage includes , , , or ,  extent.height must be less than or equal to  ::maxFramebufferHeight"VUID-VkImageCreateInfo-usage-02559 If usage includes ,  extent.width must be less than or equal to X\left\lceil{\frac{maxFramebufferWidth}{minFragmentDensityTexelSize_{width}}}\right\rceil"VUID-VkImageCreateInfo-usage-02560 If usage includes ,  extent.height must be less than or equal to Z\left\lceil{\frac{maxFramebufferHeight}{minFragmentDensityTexelSize_{height}}}\right\rceil"VUID-VkImageCreateInfo-usage-00966 If usage includes , usage must# also contain at least one of , , or $VUID-VkImageCreateInfo-samples-02258 samples 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)"VUID-VkImageCreateInfo-usage-00968 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 %4"VUID-VkImageCreateInfo-flags-00969 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 "VUID-VkImageCreateInfo-flags-01924 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 #VUID-VkImageCreateInfo-tiling-04121 If tiling is n, flags must not contain &VUID-VkImageCreateInfo-imageType-00970 If  imageType is R, flags must not contain &VUID-VkImageCreateInfo-imageType-00971 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 S, flags must not contain &VUID-VkImageCreateInfo-imageType-00972 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 U, flags must not contain &VUID-VkImageCreateInfo-imageType-00973 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 S, and samples is %q, flags must not contain &VUID-VkImageCreateInfo-imageType-00974 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 S, and samples is %r, flags must not contain &VUID-VkImageCreateInfo-imageType-00975 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 S, and samples is %s, flags must not contain &VUID-VkImageCreateInfo-imageType-00976 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 S, and samples is %t, flags must not contain "VUID-VkImageCreateInfo-flags-00987 If flags contains  or  , it must also contain !VUID-VkImageCreateInfo-None-01925 If any of the bits , , or  are set,  must not also be set"VUID-VkImageCreateInfo-flags-018906 If the protected memory feature is not enabled, flags must not contain !VUID-VkImageCreateInfo-None-01891 If any of the bits , , or  are set,  must not also be set"VUID-VkImageCreateInfo-pNext-00988 If the pNext chain includes a , structure, it must not contain a  structure"VUID-VkImageCreateInfo-pNext-00990 If the pNext chain includes a  structure, its  handleTypes member must. only contain bits that are also in P^::.externalMemoryProperties.compatibleHandleTypes, as returned by T 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 :: handleTypes"VUID-VkImageCreateInfo-pNext-00991 If the pNext chain includes a , structure, its  handleTypes member must. only contain bits that are also in  u::.externalMemoryProperties.compatibleHandleTypes, as returned by   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 ,:: handleTypes0VUID-VkImageCreateInfo-physicalDeviceCount-014212 If the logical device was created with L8::physicalDeviceCount equal to 1, flags must not contain "VUID-VkImageCreateInfo-flags-02259 If flags contains  , then  mipLevels must be one,  arrayLayers must be one,  imageType must be S . 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"VUID-VkImageCreateInfo-flags-01572 If flags contains P , 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 format"VUID-VkImageCreateInfo-flags-01573 If flags contains P , then flags must also contain O*VUID-VkImageCreateInfo-initialLayout-00993  initialLayout must be F or >"VUID-VkImageCreateInfo-pNext-01443 If the pNext chain includes a  or , structure whose  handleTypes member is not 0,  initialLayout must be F#VUID-VkImageCreateInfo-format-02561 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#VUID-VkImageCreateInfo-format-02562 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 %4#VUID-VkImageCreateInfo-format-02563 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 S#VUID-VkImageCreateInfo-format-02653 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 16VUID-VkImageCreateInfo-imageCreateFormatFeatures-02260 If 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 {v , then flags must not contain #VUID-VkImageCreateInfo-format-01577 If format is not a  multi-planar format, and flags does not include w, flags must not contain #VUID-VkImageCreateInfo-format-04712 If format has a _422 or _420 suffix, width must be a multiple of 2#VUID-VkImageCreateInfo-format-04713 If format has a _420 suffix, height must be a multiple of 2#VUID-VkImageCreateInfo-tiling-02261 If tiling is , then the pNext chain must include exactly one of  or  structures"VUID-VkImageCreateInfo-pNext-02262 If the pNext chain includes a  or  structure, then tiling must be #VUID-VkImageCreateInfo-tiling-02353 If tiling is  and flags contains O, then the pNext chain must include a 7 structure with non-zero viewFormatCount"VUID-VkImageCreateInfo-flags-01533 If flags contains  format must# be a depth or depth/stencil format"VUID-VkImageCreateInfo-pNext-02393 If the pNext chain includes a  structure whose  handleTypes member includes AZ,  imageType must be S"VUID-VkImageCreateInfo-pNext-02394 If the pNext chain includes a  structure whose  handleTypes member includes AZ,  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.depth"VUID-VkImageCreateInfo-pNext-02396 If the pNext chain includes a  structure whose externalFormat member is not 0, flags must not include O"VUID-VkImageCreateInfo-pNext-02397 If the pNext chain includes a  structure whose externalFormat member is not 0, usage must) not include any usages except "VUID-VkImageCreateInfo-pNext-02398 If the pNext chain includes a  structure whose externalFormat member is not 0, tiling must be #VUID-VkImageCreateInfo-format-02795 If format! is a depth-stencil format, usage includes , and the pNext chain includes a % structure, then its %:: stencilUsage member must also include #VUID-VkImageCreateInfo-format-02796 If format! is a depth-stencil format, usage does not include , and the pNext chain includes a % structure, then its %:: stencilUsage member must also not include #VUID-VkImageCreateInfo-format-02797 If format! is a depth-stencil format, usage includes , and the pNext chain includes a % structure, then its %:: stencilUsage member must also include #VUID-VkImageCreateInfo-format-02798 If format! is a depth-stencil format, usage does not include , and the pNext chain includes a % structure, then its %:: stencilUsage member must also not include #VUID-VkImageCreateInfo-Format-02536 If K( is a depth-stencil format and the pNext chain includes a % structure with its  stencilUsage member including ,  extent.width must be less than or equal to  ::maxFramebufferWidth#VUID-VkImageCreateInfo-format-02537 If format( is a depth-stencil format and the pNext chain includes a % structure with its  stencilUsage member including ,  extent.height must be less than or equal to  ::maxFramebufferHeight#VUID-VkImageCreateInfo-format-02538 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 %4"VUID-VkImageCreateInfo-flags-02050 If flags contains ,  imageType must be S or U"VUID-VkImageCreateInfo-flags-02051 If flags contains  , it must not contain T and the format must not be a depth/stencil format"VUID-VkImageCreateInfo-flags-02052 If flags contains  and  imageType is S,  extent.width and  extent.height must be greater than 1"VUID-VkImageCreateInfo-flags-02053 If flags contains  and  imageType is U,  extent.width,  extent.height, and  extent.depth must be greater than 1&VUID-VkImageCreateInfo-imageType-02082 If usage includes Y,  imageType must be S$VUID-VkImageCreateInfo-samples-02083 If usage includes Y, samples must be %4#VUID-VkImageCreateInfo-tiling-02084 If usage includes v, tiling must be "VUID-VkImageCreateInfo-flags-02565 If flags contains h, tiling must be "VUID-VkImageCreateInfo-flags-02566 If flags contains h,  imageType must be S"VUID-VkImageCreateInfo-flags-02567 If flags contains h, flags must not contain T"VUID-VkImageCreateInfo-flags-02568 If flags contains h,  mipLevels must be 11VUID-VkImageCreateInfo-imageView2DOn3DImage-04459 If the VK_KHR_portability_subset extension is enabled, and ::imageView2DOn3DImage is ., flags must not contain !.2VUID-VkImageCreateInfo-multisampleArrayImage-04460 If the VK_KHR_portability_subset extension is enabled, and ::multisampleArrayImage is ., and samples is not %4 , then  arrayLayers must be 1."VUID-VkImageCreateInfo-pNext-04737 If a 7$ structure was included in the pNext chain and 7::viewFormatCount2 is not zero then all of the formats in 7:: 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 table"VUID-VkImageCreateInfo-flags-04738 If flags does not contain O and the pNext chain include a 7 structure then 7::viewFormatCount must be 0 or 1Valid Usage (Implicit)"VUID-VkImageCreateInfo-sType-sType sType must be ! "VUID-VkImageCreateInfo-pNext-pNext 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 #VUID-VkImageCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique&VUID-VkImageCreateInfo-flags-parameter flags must% be a valid combination of  values*VUID-VkImageCreateInfo-imageType-parameter  imageType must be a valid Q value'VUID-VkImageCreateInfo-format-parameter format must be a valid K value(VUID-VkImageCreateInfo-samples-parameter samples must be a valid a value'VUID-VkImageCreateInfo-tiling-parameter tiling must be a valid P value&VUID-VkImageCreateInfo-usage-parameter usage must% be a valid combination of  values,VUID-VkImageCreateInfo-usage-requiredbitmask usage must not be 0,VUID-VkImageCreateInfo-sharingMode-parameter  sharingMode must be a valid  value.VUID-VkImageCreateInfo-initialLayout-parameter  initialLayout must be a valid O value</section> = See Alsot, K, N, O, P, Q, S, a, , C, .v.cvulkanoffseta is the byte offset from the start of the image or the plane where the image subresource begins..dvulkansize0 is the size in bytes of the image subresource. size6 includes any extra memory that is required based on rowPitch..evulkanrowPitchG describes the number of bytes between each row of texels in an image..fvulkan arrayPitchE describes the number of bytes between each array layer of an image..gvulkan depthPitch? describes the number of bytes between each slice of 3D image..ivulkanpNext is NULL6 or a pointer to a structure extending this structure..jvulkanflags is a bitmask of 0 describing additional parameters of the image..kvulkan imageType is a Q 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..lvulkanformat is a KY describing the format and type of the texel blocks that will be contained in the image..mvulkanextent is a tM describing the number of data elements in each dimension of the base level..nvulkan mipLevelsX describes the number of levels of detail available for minified sampling of the image..ovulkan arrayLayers& is the number of layers in the image..pvulkansamples is a a specifying the number of  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisamplingsamples per texel..qvulkantiling is a PH value specifying the tiling arrangement of the texel blocks in memory..rvulkanusage is a bitmask of - describing the intended usage of the image..svulkan sharingMode is a f value specifying the sharing mode of the image when it will be accessed by multiple queue families..tvulkanpQueueFamilyIndicesF is a list of queue families that will access this image (ignored if  sharingMode is not 7)..uvulkan initialLayout is a O value specifying the initial O/ 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..vvulkan)vkCreateImage - Create a new image object Valid UsageVUID-vkCreateImage-flags-00939 If 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  ::sparseAddressSpaceSizeValid Usage (Implicit)#VUID-vkCreateImage-device-parameter device must be a valid  handle(VUID-vkCreateImage-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure'VUID-vkCreateImage-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure#VUID-vkCreateImage-pImage-parameter pImage must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , , .wvulkan=A convenience wrapper to make a compatible pair of calls to .v and .xTo ensure that .x is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument..xvulkan(vkDestroyImage - Destroy an image object Valid UsageVUID-vkDestroyImage-image-01000+ All submitted commands that refer to image , either directly or via a /, must have completed executionVUID-vkDestroyImage-image-01001 If  were provided when image1 was created, a compatible set of callbacks must be provided hereVUID-vkDestroyImage-image-01002 If no  were provided when image was created,  pAllocator must be NULLValid Usage (Implicit)$VUID-vkDestroyImage-device-parameter device must be a valid  handle#VUID-vkDestroyImage-image-parameter If image is not 8, image must be a valid  handle(VUID-vkDestroyImage-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure VUID-vkDestroyImage-image-parent If image is a valid handle, it must1 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to image must be externally synchronizedSee Also, , .yvulkanNvkGetImageSubresourceLayout - 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 n 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 .y describes one  format plane* of the image. If the image s tiling is , then .y describes one  memory plane* of the image. If the image s tiling is  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..y 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 .y- for such an image before it has been bound. Valid Usage,VUID-vkGetImageSubresourceLayout-image-02270 image must have been created with tiling equal to n or  1VUID-vkGetImageSubresourceLayout-aspectMask-00997 The  aspectMask member of  pSubresource must only have a single bit set/VUID-vkGetImageSubresourceLayout-mipLevel-01716 The mipLevel member of  pSubresource must be less than the  mipLevels specified in  when image was created1VUID-vkGetImageSubresourceLayout-arrayLayer-01717 The  arrayLayer member of  pSubresource must be less than the  arrayLayers specified in  when image was created-VUID-vkGetImageSubresourceLayout-format-04461 If format is a color format, the  aspectMask member of  pSubresource must be xQ-VUID-vkGetImageSubresourceLayout-format-04462 If format! has a depth component, the  aspectMask member of  pSubresource must contain x-VUID-vkGetImageSubresourceLayout-format-04463 If format# has a stencil component, the  aspectMask member of  pSubresource must contain x-VUID-vkGetImageSubresourceLayout-format-04464 If format9 does not contain a stencil or depth component, the  aspectMask member of  pSubresource must not contain x or x-VUID-vkGetImageSubresourceLayout-format-01581 If the tiling of the image is n 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 x or x-VUID-vkGetImageSubresourceLayout-format-01582 If the tiling of the image is n 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 x, x or x,VUID-vkGetImageSubresourceLayout-image-01895 If image was created with the AZ( external memory handle type, then image must be bound to memory-VUID-vkGetImageSubresourceLayout-tiling-02271 If the tiling of the image is , 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 |::drmFormatModifierValid Usage (Implicit)1VUID-vkGetImageSubresourceLayout-device-parameter device must be a valid  handle0VUID-vkGetImageSubresourceLayout-image-parameter image must be a valid  handle7VUID-vkGetImageSubresourceLayout-pSubresource-parameter  pSubresource must$ be a valid pointer to a valid  structure2VUID-vkGetImageSubresourceLayout-pLayout-parameter pLayout must be a valid pointer to a  structure-VUID-vkGetImageSubresourceLayout-image-parent image must6 have been created, allocated, or retrieved from deviceSee Also, , , .vvulkandevice. 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..xvulkandevice/ 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..yvulkandevice+ 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.3O1FEDCBA@?>=<;:98765432.b.d.c.e.f.g.h.m.j.r.i.p.l.t.q.u.k.n.o.s.v.w.x.yH.v.w.x.y.h.m.j.r.i.p.l.t.q.u.k.n.o.s.b.d.c.e.f.gO1FEDCBA@?>=<;:98765432FEDCBA@?>=<;:98765432None("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanwVkPhysicalDeviceImageDrmFormatModifierInfoEXT - 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 T returns 6. The implementation must support the query of any drmFormatModifier1, including unknown and invalid modifier values. Valid UsageDVUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02314 If  sharingMode is 7 , then pQueueFamilyIndices must( be a valid pointer to an array of queueFamilyIndexCount uint32_t valuesDVUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02315 If  sharingMode is 7 , then queueFamilyIndexCount must be greater than 1DVUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02316 If  sharingMode is 7, each element of pQueueFamilyIndices must be unique and must be less than the pQueueFamilyPropertyCount returned by T for the physicalDevice that was used to create deviceValid Usage (Implicit)>VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sType-sType sType must be MHVUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-parameter  sharingMode must be a valid  valueSee Also, Cvulkan[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 AlsoC, .vulkanVkImageDrmFormatModifierListCreateInfoEXT - Specify that an image must be created with a DRM format modifier from the provided list Valid UsageHVUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-02263 Each 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):VUID-VkImageDrmFormatModifierListCreateInfoEXT-sType-sType sType must be NLVUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-parameter pDrmFormatModifiers must( be a valid pointer to an array of drmFormatModifierCount uint64_t valuesQVUID-VkImageDrmFormatModifierListCreateInfoEXT-drmFormatModifierCount-arraylength drmFormatModifierCount must be greater than 0See AlsoCvulkanVkImageDrmFormatModifierExplicitCreateInfoEXT - 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 0S returns ,. Valid UsageJVUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifier-02264 drmFormatModifier must+ be compatible with the parameters in 0 and its pNext, chain, as determined by querying T extended with TVUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifierPlaneCount-02265 drmFormatModifierPlaneCount must be equal to the ::drmFormatModifierPlaneCount associated with 0::format and drmFormatModifier, as found by querying =VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-size-02267 For each element of  pPlaneLayouts, size must be 0CVUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-arrayPitch-02268 For each element of  pPlaneLayouts,  arrayPitch must be 0 if 0:: arrayLayers is 1CVUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-depthPitch-02269 For each element of  pPlaneLayouts,  depthPitch must be 0 if 0:: extent.depth is 1Valid Usage (Implicit)>VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-sType-sType sType must be OJVUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-pPlaneLayouts-parameter If drmFormatModifierPlaneCount is not 0,  pPlaneLayouts must( be a valid pointer to an array of drmFormatModifierPlaneCount  structuresSee AlsoC, 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, CvulkanxVkDrmFormatModifierPropertiesEXT - 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 xx, 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, y 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 Tg::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 z, tiling is  , 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 7)..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 {L/ 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@See Also, , .vulkandevice+ is the logical device that owns the image.>VUID-vkGetImageDrmFormatModifierPropertiesEXT-device-parameter device must be a valid  handlevulkanimage is the queried image.9VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-02272 image must have been created with  VkImageCreateInfo.htmltiling equal to =VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parameter image must be a valid  handle:VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parent image must1 have been created, allocated, or retrieved from device..............................................,None("#%&'-./1789;=>?FHIMSUVX_dghklmqUI kvulkanMVkFenceCreateInfo - Structure specifying parameters of a newly created fenceValid Usage (Implicit)"VUID-VkFenceCreateInfo-sType-sType sType must be '"VUID-VkFenceCreateInfo-pNext-pNext 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 #VUID-VkFenceCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique&VUID-VkFenceCreateInfo-flags-parameter flags must% be a valid combination of  valuesSee Also, C, ..vulkanpNext is NULL6 or a pointer to a structure extending this structure..vulkanflags is a bitmask of 9 specifying the initial state and behavior of the fence..vulkan)vkCreateFence - Create a new fence objectValid Usage (Implicit)#VUID-vkCreateFence-device-parameter device must be a valid  handle(VUID-vkCreateFence-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid k structure'VUID-vkCreateFence-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure#VUID-vkCreateFence-pFence-parameter pFence must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , , k.vulkan=A convenience wrapper to make a compatible pair of calls to . and .To ensure that . is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument..vulkan'vkDestroyFence - Destroy a fence object Valid UsageVUID-vkDestroyFence-fence-01120 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 executionVUID-vkDestroyFence-fence-01121 If  were provided when fence1 was created, a compatible set of callbacks must be provided hereVUID-vkDestroyFence-fence-01122 If no  were provided when fence was created,  pAllocator must be NULLValid Usage (Implicit)$VUID-vkDestroyFence-device-parameter device must be a valid  handle#VUID-vkDestroyFence-fence-parameter If fence is not 8, fence must be a valid  handle(VUID-vkDestroyFence-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure VUID-vkDestroyFence-fence-parent If fence is a valid handle, it must1 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 Usage VUID-vkResetFences-pFences-01123 Each element of pFences mustp not be currently associated with any queue command that has not yet completed execution on that queueValid Usage (Implicit)#VUID-vkResetFences-device-parameter device must be a valid  handle$VUID-vkResetFences-pFences-parameter pFences must( be a valid pointer to an array of  fenceCount valid  handles)VUID-vkResetFences-fenceCount-arraylength  fenceCount must be greater than 0!VUID-vkResetFences-pFences-parent Each 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure?See 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  F  The fence specified by fenceY is signaled.  E  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 F or =. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessFE  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?=See Also, 5Lvulkan&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 until the condition is satisfied or the timeout# has expired, whichever is sooner.If timeout is zero, then .F does not wait, but simply returns the current state of the fences. Dm will be returned in this case if the condition is not satisfied, even though no actual wait was performed.)If the condition is satisfied before the timeout has expired, . returns F. Otherwise, . returns D after the timeout has expired.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 F 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)%VUID-vkWaitForFences-device-parameter device must be a valid  handle&VUID-vkWaitForFences-pFences-parameter pFences must( be a valid pointer to an array of  fenceCount valid  handles+VUID-vkWaitForFences-fenceCount-arraylength  fenceCount must be greater than 0#VUID-vkWaitForFences-pFences-parent Each element of pFences must1 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessFD  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?=See Alsop, , .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 kH 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.&VUID-vkGetFenceStatus-device-parameter device must be a valid  handlevulkanfence% is the handle of the fence to query.%VUID-vkGetFenceStatus-fence-parameter fence must be a valid  handle"VUID-vkGetFenceStatus-fence-parent fence must2 have been created, allocated, or retrieved from device5Lvulkandevice, 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 j,, 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 j,, 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 j,, 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.k.................k... None("#%&'-./1789;=>?FHIMSUVX_dghklmqj4vulkanOVkQueueFamilyProperties - 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 t 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 t 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 t 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 t 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 Alsot, Tv,  , /5vulkanaVkPhysicalDeviceSparseProperties - Structure specifying physical device sparse memory propertiesSee Alsop, 66vulkanMVkPhysicalDeviceProperties - 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. 6:: 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 4} 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 Also8, T , 5, , /7vulkanZVkPhysicalDeviceMemoryProperties - Structure specifying physical device memory properties DescriptionThe 7" 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 4/. 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 56. Each memory type is described by an element of the  memoryTypes array as a : structure.At least one heap must include  in ;::flagsW. If there are multiple heaps that all have similar performance characteristics, they may all include . 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:0 |  | ~ | ~ |  |  |  |  | ~ |  | ~ |  | }zz |  |  | { | ~ |  | { | { |  |  | { |  | ~ |  | { |  | { | | | ~ |  | { | | | { | | |  |  | { | | |  | ~ |  | { | |There must, be at least one memory type with both the  and  bits set in its  propertyFlags. There must( be at least one memory type with the  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 { 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 { or | 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  was before  | ,, 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;, :, T, /8vulkan]VkPhysicalDeviceLimits - Structure reporting implementation-dependent physical device limitsMembersThe 8D are properties of the physical device. These are available in the limits member of the 6# 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 Alsop, n, 6, b9vulkanuVkPhysicalDeviceFeatures - Structure describing the fine-grained features that can be supported by an implementationMembersThe members of the 9, structure describe the following features:See Alsop,  2, T, /:vulkan/VkMemoryType - Structure specifying memory typeSee Alsoy, 7;vulkan1VkMemoryHeap - Structure specifying a memory heapSee Alson, , 7<vulkanSVkInstanceCreateInfo - Structure specifying parameters of a newly created instanceValid Usage (Implicit)%VUID-VkInstanceCreateInfo-sType-sType sType must be .%VUID-VkInstanceCreateInfo-pNext-pNext 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 )&VUID-VkInstanceCreateInfo-sType-unique The sType" value of each struct in the pNext chain must? be unique, with the exception of structures of type +VUID-VkInstanceCreateInfo-flags-zerobitmask flags must be 04VUID-VkInstanceCreateInfo-pApplicationInfo-parameter If pApplicationInfo is not NULL, pApplicationInfo must$ be a valid pointer to a valid ? structure7VUID-VkInstanceCreateInfo-ppEnabledLayerNames-parameter If enabledLayerCount is not 0, ppEnabledLayerNames must( be a valid pointer to an array of enabledLayerCount# null-terminated UTF-8 strings;VUID-VkInstanceCreateInfo-ppEnabledExtensionNames-parameter If enabledExtensionCount is not 0, ppEnabledExtensionNames must( be a valid pointer to an array of enabledExtensionCount# null-terminated UTF-8 stringsSee Also?, , C, /=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 ~maxArrayLayers- is the maximum number of array layers. maxArrayLayers must be no less than 8::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 0S 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 0S, 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 Alson, t,  u, T~, b, />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, Tg, /?vulkan9VkApplicationInfo - Structure specifying application info Description4Vulkan 1.0 implementations were required to return 8 if  apiVersionI was larger than 1.0. Implementations that support Vulkan 1.1 or later must not return 8 for any value of  apiVersion.Note#Because Vulkan 1.0 implementations may fail with 8, 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 Usage'VUID-VkApplicationInfo-apiVersion-04010 If  apiVersion is not 0 , then it must be greater or equal to ~Valid Usage (Implicit)"VUID-VkApplicationInfo-sType-sType sType must be /"VUID-VkApplicationInfo-pNext-pNext pNext must be NULL1VUID-VkApplicationInfo-pApplicationName-parameter If pApplicationName is not NULL, pApplicationName must' be a null-terminated UTF-8 string,VUID-VkApplicationInfo-pEngineName-parameter If  pEngineName is not NULL,  pEngineName must" be a null-terminated UTF-8 stringSee Also<, C.vulkanlimits-maxImageDimension1D maxImageDimension1D 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 /..vulkanlimits-maxImageDimension2D maxImageDimension2D is the largest dimension (width or heightE) that is guaranteed to be supported for all images created with an  imageType of  and without  set in flags?. Some combinations of image parameters (format, usage, etc.) may, allow support for larger dimensions, which can be queried using /..vulkanlimits-maxImageDimension3D maxImageDimension3D 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 /..vulkanlimits-maxImageDimensionCube maxImageDimensionCube is the largest dimension (width or heightE) that is guaranteed to be supported for all images created with an  imageType of  and with  set in flags?. Some combinations of image parameters (format, usage, etc.) may, allow support for larger dimensions, which can be queried using /..vulkanlimits-maxImageArrayLayers maxImageArrayLayers# is the maximum number of layers ( arrayLayers) for an image..vulkanlimits-maxTexelBufferElements maxTexelBufferElementsq is the maximum number of addressable texels for a buffer view created on a buffer which was created with the  or  set in the usage member of the  structure..vulkanlimits-maxUniformBufferRange maxUniformBufferRange is the maximum value that can be specified in the range member of any  ! structures passed to a call to  O for descriptors of type  or ..vulkanlimits-maxStorageBufferRange maxStorageBufferRange is the maximum value that can be specified in the range member of any  ! structures passed to a call to  O for descriptors of type  or ..vulkanlimits-maxPushConstantsSize maxPushConstantsSize} 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 9U structure, (offset + size) must% be less than or equal to this limit..vulkanlimits-maxMemoryAllocationCount maxMemoryAllocationCountE is the maximum number of device memory allocations, as created by 3>, which can simultaneously exist..vulkan limits-maxSamplerAllocationCount maxSamplerAllocationCount; is the maximum number of sampler objects, as created by =_, which can# simultaneously exist on a device..vulkanlimits-bufferImageGranularity bufferImageGranularityh 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 / object without aliasing. See  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-bufferimagegranularityBuffer-Image Granularity for more details..vulkanlimits-sparseAddressSpaceSize sparseAddressSpaceSize 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..vulkanlimits-maxBoundDescriptorSets maxBoundDescriptorSets0 is the maximum number of descriptor sets that can, be simultaneously used by a pipeline. All / 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..vulkan$limits-maxPerStageDescriptorSamplers maxPerStageDescriptorSamplers) is the maximum number of samplers that can[ be accessible to a single shader stage in a pipeline layout. Descriptors with a type of  or ] count against this limit. Only descriptors in descriptor set layouts created without the @[ 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*limits-maxPerStageDescriptorUniformBuffers #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  or ] count against this limit. Only descriptors in descriptor set layouts created without the @[ 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*limits-maxPerStageDescriptorStorageBuffers #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  or ] count against this limit. Only descriptors in descriptor set layouts created without the @d 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)limits-maxPerStageDescriptorSampledImages "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 , , or ] count against this limit. Only descriptors in descriptor set layouts created without the @d 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)limits-maxPerStageDescriptorStorageImages "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 , or ] count against this limit. Only descriptors in descriptor set layouts created without the @d 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,limits-maxPerStageDescriptorInputAttachments %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 ] count against this limit. Only descriptors in descriptor set layouts created without the @d 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..vulkanlimits-maxPerStageResources maxPerStageResources* is the maximum number of resources that can[ be accessible to a single shader stage in a pipeline layout. Descriptors with a type of , , , , , , , , , or ] count against this limit. Only descriptors in descriptor set layouts created without the @ bit set count against this limit. For the fragment shader stage the framebuffer color attachments also count against this limit..vulkanlimits-maxDescriptorSetSamplers maxDescriptorSetSamplers) is the maximum number of samplers that can@ be included in a pipeline layout. Descriptors with a type of  or ] count against this limit. Only descriptors in descriptor set layouts created without the @) 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..vulkan%limits-maxDescriptorSetUniformBuffers maxDescriptorSetUniformBuffers0 is the maximum number of uniform buffers that can@ be included in a pipeline layout. Descriptors with a type of  or ] count against this limit. Only descriptors in descriptor set layouts created without the @) 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,limits-maxDescriptorSetUniformBuffersDynamic %maxDescriptorSetUniformBuffersDynamic8 is the maximum number of dynamic uniform buffers that can@ be included in a pipeline layout. Descriptors with a type of ] count against this limit. Only descriptors in descriptor set layouts created without the @) bit set count against this limit. See  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic..vulkan%limits-maxDescriptorSetStorageBuffers maxDescriptorSetStorageBuffers0 is the maximum number of storage buffers that can@ be included in a pipeline layout. Descriptors with a type of  or ] count against this limit. Only descriptors in descriptor set layouts created without the @) 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,limits-maxDescriptorSetStorageBuffersDynamic %maxDescriptorSetStorageBuffersDynamic8 is the maximum number of dynamic storage buffers that can@ be included in a pipeline layout. Descriptors with a type of ] count against this limit. Only descriptors in descriptor set layouts created without the @) bit set count against this limit. See  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic..vulkan$limits-maxDescriptorSetSampledImages maxDescriptorSetSampledImages/ is the maximum number of sampled images that can@ be included in a pipeline layout. Descriptors with a type of , , or ] count against this limit. Only descriptors in descriptor set layouts created without the @) 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..vulkan$limits-maxDescriptorSetStorageImages maxDescriptorSetStorageImages/ is the maximum number of storage images that can@ be included in a pipeline layout. Descriptors with a type of , or ] count against this limit. Only descriptors in descriptor set layouts created without the @) 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'limits-maxDescriptorSetInputAttachments  maxDescriptorSetInputAttachments2 is the maximum number of input attachments that can@ be included in a pipeline layout. Descriptors with a type of ] count against this limit. Only descriptors in descriptor set layouts created without the @) bit set count against this limit. See  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inputattachment..vulkanlimits-maxVertexInputAttributes maxVertexInputAttributes8 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 7d 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..vulkanlimits-maxVertexInputBindings maxVertexInputBindings/ 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 7d 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..vulkan$limits-maxVertexInputAttributeOffset maxVertexInputAttributeOffset4 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..vulkan"limits-maxVertexInputBindingStride maxVertexInputBindingStride2 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..vulkan limits-maxVertexOutputComponents maxVertexOutputComponents@ 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..vulkan%limits-maxTessellationGenerationLevel maxTessellationGenerationLevelw 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..vulkanlimits-maxTessellationPatchSize maxTessellationPatchSize: 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 7bO 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..vulkan5limits-maxTessellationControlPerVertexInputComponents .maxTessellationControlPerVertexInputComponents? is the maximum number of components of input variables which canL be provided as per-vertex inputs to the tessellation control shader stage..vulkan6limits-maxTessellationControlPerVertexOutputComponents /maxTessellationControlPerVertexOutputComponentsK is the maximum number of components of per-vertex output variables which can7 be output from the tessellation control shader stage..vulkan5limits-maxTessellationControlPerPatchOutputComponents .maxTessellationControlPerPatchOutputComponentsJ is the maximum number of components of per-patch output variables which can7 be output from the tessellation control shader stage..vulkan2limits-maxTessellationControlTotalOutputComponents +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/limits-maxTessellationEvaluationInputComponents (maxTessellationEvaluationInputComponents? is the maximum number of components of input variables which canO be provided as per-vertex inputs to the tessellation evaluation shader stage..vulkan0limits-maxTessellationEvaluationOutputComponents )maxTessellationEvaluationOutputComponentsK is the maximum number of components of per-vertex output variables which can: be output from the tessellation evaluation shader stage..vulkan#limits-maxGeometryShaderInvocations maxGeometryShaderInvocationsg 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..vulkan!limits-maxGeometryInputComponents maxGeometryInputComponents? is the maximum number of components of input variables which can5 be provided as inputs to the geometry shader stage..vulkan"limits-maxGeometryOutputComponents maxGeometryOutputComponents@ is the maximum number of components of output variables which can+ be output from the geometry shader stage..vulkan limits-maxGeometryOutputVertices maxGeometryOutputVertices* is the maximum number of vertices which can$ be emitted by any geometry shader..vulkan'limits-maxGeometryTotalOutputComponents  maxGeometryTotalOutputComponentsZ is the maximum total number of components of output, across all emitted vertices, which can+ be output from the geometry shader stage..vulkan!limits-maxFragmentInputComponents maxFragmentInputComponents? is the maximum number of components of input variables which can5 be provided as inputs to the fragment shader stage..vulkan#limits-maxFragmentOutputAttachments maxFragmentOutputAttachments4 is the maximum number of output attachments which can- be written to by the fragment shader stage..vulkan$limits-maxFragmentDualSrcAttachments maxFragmentDualSrcAttachments4 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)limits-maxFragmentCombinedOutputResources "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..vulkan!limits-maxComputeSharedMemorySize maxComputeSharedMemorySizeZ 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. When variables declared with the  WorkgroupL storage class are explicitly laid out (hence they are also decorated with Block), the amount of storage consumed is the size of the largest Block variable, not counting any padding at the end. The amount of storage consumed by the non-Block 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 non-Block 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.).vulkanlimits-maxComputeWorkGroupCount maxComputeWorkGroupCount4[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..vulkan%limits-maxComputeWorkGroupInvocations maxComputeWorkGroupInvocations 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./vulkanlimits-maxComputeWorkGroupSize maxComputeWorkGroupSize[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, must3 be less than or equal to the corresponding limit./vulkanlimits-subPixelPrecisionBits subPixelPrecisionBitsY 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./vulkanlimits-subTexelPrecisionBits subTexelPrecisionBits 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./vulkanlimits-mipmapPrecisionBits mipmapPrecisionBits 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./vulkanlimits-maxDrawIndexedIndexValue maxDrawIndexedIndexValue" 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./vulkanlimits-maxDrawIndirectCount maxDrawIndirectCountL 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./vulkanlimits-maxSamplerLodBias maxSamplerLodBias; is the maximum absolute sampler LOD bias. The sum of the  mipLodBias member of the = structure and the BiasF operand of image sampling operations in shader modules (or 0 if no BiasQ 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./vulkanlimits-maxSamplerAnisotropy maxSamplerAnisotropy 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./vulkanlimits-maxViewports  maxViewports1 is the maximum number of active viewports. The  viewportCount member of the 7h2 structure that is provided at pipeline creation must& be less than or equal to this limit./ vulkanlimits-maxViewportDimensions maxViewportDimensions[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 can8 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./ vulkanlimits-viewportboundsrange viewportBoundsRangeD[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./ vulkanlimits-viewportSubPixelBits viewportSubPixelBits 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./ vulkanlimits-minMemoryMapAlignment minMemoryMapAlignment 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./ vulkan$limits-minTexelBufferOffsetAlignment minTexelBufferOffsetAlignment 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 14, 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./vulkan&limits-minUniformBufferOffsetAlignment minUniformBufferOffsetAlignment is the minimum required alignment, in bytes, for the offset member of the  < structure for uniform buffers. When a descriptor of type  or  is updated, the offset mustW be an integer multiple of this limit. Similarly, dynamic offsets for uniform buffers must be multiples of this limit./vulkan&limits-minStorageBufferOffsetAlignment minStorageBufferOffsetAlignment is the minimum required alignment, in bytes, for the offset member of the  < structure for storage buffers. When a descriptor of type  or  is updated, the offset mustW be an integer multiple of this limit. Similarly, dynamic offsets for storage buffers must be multiples of this limit./vulkanlimits-minTexelOffset minTexelOffset& is the minimum offset value for the  ConstOffset image operand of any of the  OpImageSample* or  OpImageFetch* image instructions./vulkanlimits-maxTexelOffset maxTexelOffset& is the maximum offset value for the  ConstOffset image operand of any of the  OpImageSample* or  OpImageFetch* image instructions./vulkanlimits-minTexelGatherOffset minTexelGatherOffset& is the minimum offset value for the Offset,  ConstOffset, or  ConstOffsets image operands of any of the OpImage*Gather image instructions./vulkanlimits-maxTexelGatherOffset maxTexelGatherOffset& is the maximum offset value for the Offset,  ConstOffset, or  ConstOffsets image operands of any of the OpImage*Gather image instructions./vulkanlimits-minInterpolationOffset minInterpolationOffset@ is the base minimum (inclusive) negative offset value for the Offset operand of the InterpolateAtOffset extended instruction./vulkanlimits-maxInterpolationOffset maxInterpolationOffset@ is the base maximum (inclusive) positive offset value for the Offset operand of the InterpolateAtOffset extended instruction./vulkan&limits-subPixelInterpolationOffsetBits subPixelInterpolationOffsetBits, is the number of fractional bits that the x and y offsets to the InterpolateAtOffset extended instruction may% be rounded to as fixed-point values./vulkanlimits-maxFramebufferWidth maxFramebufferWidth. is the maximum width for a framebuffer. The width member of the 6k structure must& be less than or equal to this limit./vulkanlimits-maxFramebufferHeight maxFramebufferHeight/ is the maximum height for a framebuffer. The height member of the 6k structure must& be less than or equal to this limit./vulkanlimits-maxFramebufferLayers maxFramebufferLayers< is the maximum layer count for a layered framebuffer. The layers member of the 6k structure must& be less than or equal to this limit./vulkan#limits-framebufferColorSampleCounts framebufferColorSampleCounts is a bitmask1 of a indicating the color sample counts that are supported for all framebuffer color attachments with floating- or fixed-point formats. For color attachments with integer formats, see  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-framebufferIntegerColorSampleCounts#framebufferIntegerColorSampleCounts./vulkan#limits-framebufferDepthSampleCounts framebufferDepthSampleCounts is a bitmask1 of a indicating the supported depth sample counts for all framebuffer depth/stencil attachments, when the format includes a depth component./vulkan%limits-framebufferStencilSampleCounts framebufferStencilSampleCounts is a bitmask1 of a indicating the supported stencil sample counts for all framebuffer depth/stencil attachments, when the format includes a stencil component./vulkan+limits-framebufferNoAttachmentsSampleCounts $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./vulkanlimits-maxColorAttachments maxColorAttachments2 is the maximum number of color attachments that can- be used by a subpass in a render pass. The colorAttachmentCount member of the 6 or c structure must% be less than or equal to this limit./vulkan$limits-sampledImageColorSampleCounts sampledImageColorSampleCounts is a bitmask1 of aI indicating the sample counts supported for all 2D images created with *, usage containing ", and a non-integer color format./ vulkan&limits-sampledImageIntegerSampleCounts sampledImageIntegerSampleCounts is a bitmask1 of aI indicating the sample counts supported for all 2D images created with *, usage containing , and an integer color format./!vulkan$limits-sampledImageDepthSampleCounts sampledImageDepthSampleCounts is a bitmask1 of aI indicating the sample counts supported for all 2D images created with *, usage containing , and a depth format./"vulkan&limits-sampledImageStencilSampleCounts sampledImageStencilSampleCounts is a bitmask1 of aB indicating the sample supported for all 2D images created with *, usage containing , and a stencil format./#vulkanlimits-storageImageSampleCounts storageImageSampleCounts is a bitmask1 of aI indicating the sample counts supported for all 2D images created with *, and usage containing ./$vulkanlimits-maxSampleMaskWords maxSampleMaskWordsL is the maximum number of array elements of a variable decorated with the .H built-in decoration./%vulkan"limits-timestampComputeAndGraphics timestampComputeAndGraphics` specifies support for timestamps on all graphics and compute queues. If this limit is set to .", all queues that advertise the   or   in the 4:: queueFlags support 4::timestampValidBits of at least 36. See  `https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-timestampsTimestamp Queries./&vulkanlimits-timestampPeriod timestampPeriod is the number of nanoseconds required4 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./'vulkanlimits-maxClipDistances maxClipDistances/ is the maximum number of clip distances that canL 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./(vulkanlimits-maxCullDistances maxCullDistances/ is the maximum number of cull distances that canL 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./)vulkan&limits-maxCombinedClipAndCullDistances maxCombinedClipAndCullDistancesA 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./*vulkanlimits-discreteQueuePriorities discreteQueuePriorities, is the number of discrete priorities that can? be assigned to a queue based on the value of each member of  B::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./+vulkanlimits-pointSizeRange pointSizeRange[2] is the range [minimum,maximumQ] of supported sizes for points. Values written to variables decorated with the  PointSize0 built-in decoration are clamped to this range./,vulkanlimits-lineWidthRange lineWidthRange[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./-vulkanlimits-pointSizeGranularity pointSizeGranularity\ is the granularity of supported point sizes. Not all point sizes in the range defined by pointSizeRangen are supported. This limit specifies the granularity (or increment) between successive supported point sizes./.vulkanlimits-lineWidthGranularity lineWidthGranularity\ is the granularity of supported line widths. Not all line widths in the range defined by lineWidthRangen are supported. This limit specifies the granularity (or increment) between successive supported line widths.//vulkanlimits-strictLines  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./0vulkanlimits-standardSampleLocations standardSampleLocationsX 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./1vulkan'limits-optimalBufferCopyOffsetAlignment  optimalBufferCopyOffsetAlignment7 is the optimal buffer offset alignment in bytes for Y, , [, and G. The per texel alignment requirements are enforced, but applications shouldB use the optimal alignment for optimal performance and power use./2vulkan)limits-optimalBufferCopyRowPitchAlignment "optimalBufferCopyRowPitchAlignment: is the optimal buffer row pitch alignment in bytes for Y, , [, 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./3vulkanlimits-nonCoherentAtomSize nonCoherentAtomSizeG 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./5vulkanresidencyStandard2DBlockShape 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./6vulkan(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./7vulkanresidencyStandard3DBlockShape 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./8vulkanresidencyAlignedMipSize 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 W 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./9vulkanresidencyNonResidentStrict' 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./;vulkanfeatures-robustBufferAccess robustBufferAccessw specifies that accesses to buffers are bounds-checked against the range of the buffer descriptor (as determined by  ::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 8 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./<vulkanfeatures-fullDrawIndexUint32 fullDrawIndexUint32_ specifies the full 32-bit range of indices is supported for indexed draw calls when using a  of . maxDrawIndexedIndexValue! is the maximum index value that mayS be used (aside from the primitive restart index, which is always 232-1 when the  is "). 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./=vulkanfeatures-imageCubeArray imageCubeArray' specifies whether image views with a ty of t can) be created, and that the corresponding SampledCubeArray and ImageCubeArray SPIR-V capabilities can be used in shader code./>vulkanfeatures-independentBlend independentBlend 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./?vulkanfeatures-geometryShader geometryShaderY specifies whether geometry shaders are supported. If this feature is not enabled, the & and 1 enum values must: not be used. This also specifies whether shader modules can declare the Geometry capability./@vulkanfeatures-tessellationShader tessellationShaderu specifies whether tessellation control and evaluation shaders are supported. If this feature is not enabled, the &, &, /, 0, and  enum values must: not be used. This also specifies whether shader modules can declare the  Tessellation capability./Avulkanfeatures-sampleRateShading sampleRateShading 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 7W structure must be set to . and the minSampleShading@ member is ignored. This also specifies whether shader modules can declare the SampleRateShading capability./Bvulkanfeatures-dualSrcBlend  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./Cvulkanfeatures-logicOp logicOpX specifies whether logic operations are supported. If this feature is not enabled, the  logicOpEnable member of the 7D structure must be set to . , and the logicOp member is ignored./Dvulkanfeatures-multiDrawIndirect multiDrawIndirect^ 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 8 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./Evulkan"features-drawIndirectFirstInstance drawIndirectFirstInstance4 specifies whether indirect draw calls support the  firstInstance1 parameter. If this feature is not enabled, the  firstInstance member of all 5 and 5' structures that are provided to the  and  commands must be 0./Fvulkanfeatures-depthClamp  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./Gvulkanfeatures-depthBiasClamp depthBiasClamp[ 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 $ dynamic state is enabled, and the depthBiasClamp parameter to   must be set to 0.0./Hvulkanfeatures-fillModeNonSolid fillModeNonSolidg specifies whether point and wireframe fill modes are supported. If this feature is not enabled, the _ and _ enum values must not be used./Ivulkanfeatures-depthBounds  depthBounds[ specifies whether depth bounds tests are supported. If this feature is not enabled, the depthBoundsTestEnable member of the 7J structure must be set to .. When depthBoundsTestEnable is set to ., the minDepthBounds and maxDepthBounds members of the 7J structure are ignored./Jvulkanfeatures-wideLines  wideLinesh 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 $ 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 8 structure, respectively./Kvulkanfeatures-largePoints  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 8 structure, respectively./Lvulkanfeatures-alphaToOne  alphaToOnew specifies whether the implementation is able to replace the alpha value of the fragment shader color output in the  Zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-covgMultisample Coverage@ fragment operation. If this feature is not enabled, then the alphaToOneEnable member of the 7W structure must be set to .. Otherwise setting alphaToOneEnable to .$ will enable alpha-to-one behavior./Mvulkanfeatures-multiViewport  multiViewportX specifies whether more than one viewport is supported. If this feature is not enabled:The  viewportCount and  scissorCount members of the 7h 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 f structure must be set to 0 or 1.The firstExclusiveScissor and exclusiveScissorCount parameters to the  command must! be set to 0 and 1, respectively./Nvulkanfeatures-samplerAnisotropy samplerAnisotropy] specifies whether anisotropic filtering is supported. If this feature is not enabled, the anisotropyEnable member of the = structure must be ../Ovulkanfeatures-textureCompressionETC2 textureCompressionETC2} 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: 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./Pvulkan#features-textureCompressionASTC_LDR textureCompressionASTC_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: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./Qvulkanfeatures-textureCompressionBC textureCompressionBCs 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: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./Rvulkanfeatures-occlusionQueryPrecise occlusionQueryPrecisex specifies whether occlusion queries returning actual sample counts are supported. Occlusion queries are created in a / by specifying the  queryType of # in the :q structure which is passed to :[4. If this feature is enabled, queries of this type can enable ! in the flags parameter to . 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./Svulkan features-pipelineStatisticsQuery pipelineStatisticsQueryu specifies whether the pipeline statistics queries are supported. If this feature is not enabled, queries of type # cannot be created, and none of the ^ bits can be set in the pipelineStatistics member of the :q structure./Tvulkan'features-vertexPipelineStoresAndAtomics vertexPipelineStoresAndAtomics 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)./Uvulkan!features-fragmentStoresAndAtomics fragmentStoresAndAtomics 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)./Vvulkan/features-shaderTessellationAndGeometryPointSize &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./Wvulkan"features-shaderImageGatherExtended shaderImageGatherExtended 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./Xvulkan*features-shaderStorageImageExtendedFormats !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:*1)0%,&-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./Yvulkan&features-shaderStorageImageMultisample shaderStorageImageMultisample 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./Zvulkan,features-shaderStorageImageReadWithoutFormat #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./[vulkan-features-shaderStorageImageWriteWithoutFormat $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./\vulkan0features-shaderUniformBufferArrayDynamicIndexing '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  or  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./]vulkan/features-shaderSampledImageArrayDynamicIndexing &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 , , or  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./^vulkan0features-shaderStorageBufferArrayDynamicIndexing '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  or  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./_vulkan/features-shaderStorageImageArrayDynamicIndexing &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  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./`vulkanfeatures-shaderClipDistance shaderClipDistance 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./avulkanfeatures-shaderCullDistance shaderCullDistance 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./bvulkanfeatures-shaderFloat64  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./cvulkanfeatures-shaderInt64  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./dvulkanfeatures-shaderInt16  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! (for non-Block variables), 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./evulkan features-shaderResourceResidency shaderResourceResidency 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./fvulkanfeatures-shaderResourceMinLod shaderResourceMinLod 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./gvulkanfeatures-sparseBinding  sparseBinding$ specifies whether resource memory canz 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  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./hvulkanfeatures-sparseResidencyBuffer sparseResidencyBuffer specifies whether the device canM access partially resident buffers. If this feature is not enabled, buffers must not be created with  set in the flags member of the  structure./ivulkanfeatures-sparseResidencyImage2D sparseResidencyImage2D 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  set in the flags member of the 0 structure./jvulkanfeatures-sparseResidencyImage3D sparseResidencyImage3D specifies whether the device canV access partially resident 3D images. If this feature is not enabled, images with an  imageType of  must not be created with  set in the flags member of the 0 structure./kvulkan features-sparseResidency2Samples sparseResidency2Samples( 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  set in the flags member of the 0 structure./lvulkan features-sparseResidency4Samples sparseResidency4Samples( 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  set in the flags member of the 0 structure./mvulkan features-sparseResidency8Samples sparseResidency8Samples( 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  set in the flags member of the 0 structure./nvulkan!features-sparseResidency16Samples sparseResidency16Samples( 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  set in the flags member of the 0 structure./ovulkanfeatures-sparseResidencyAliased sparseResidencyAliased( specifies whether the physical device can^ correctly access data aliased into multiple locations. If this feature is not enabled, the  and  enum values must not be used in flags members of the  and 0 structures, respectively./pvulkan features-variableMultisampleRate variableMultisampleRateS 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 7W::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./qvulkanfeatures-inheritedQueries inheritedQueries/ specifies whether a secondary command buffer may% be executed while a query is active./yvulkanlinearTilingFeatures is a bitmask of 9 specifying features supported by images created with a tiling parameter of )./zvulkanoptimalTilingFeatures 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 * specifying attribute flags for the heap./vulkan propertyFlags is a bitmask of w% 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 7 structure./vulkanmemoryTypeCount( is the number of valid elements in the  memoryTypes array./vulkan memoryTypes is an array of 5 : 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 4 ; 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  or q. 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 9 uint8_tE values representing a universally unique identifier for the device./vulkanlimits is the 8K 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 5V 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 Usage3VUID-vkCreateInstance-ppEnabledExtensionNames-01388 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)+VUID-vkCreateInstance-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid < structure*VUID-vkCreateInstance-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure)VUID-vkCreateInstance-pInstance-parameter  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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?>;:8See Also, , </vulkan=A convenience wrapper to make a compatible pair of calls to / and /To ensure that / is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument./vulkan1vkDestroyInstance - Destroy an instance of Vulkan Valid Usage%VUID-vkDestroyInstance-instance-00629& All child objects created using instance must. have been destroyed prior to destroying instance%VUID-vkDestroyInstance-instance-00630 If  were provided when instance1 was created, a compatible set of callbacks must be provided here%VUID-vkDestroyInstance-instance-00631 If no  were provided when instance was created,  pAllocator must be NULLValid Usage (Implicit))VUID-vkDestroyInstance-instance-parameter If instance is not NULL, instance must be a valid  handle+VUID-vkDestroyInstance-pAllocator-parameter If  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, A will be returned instead of FI, to indicate that not all the available physical devices were returned.Valid Usage (Implicit)2VUID-vkEnumeratePhysicalDevices-instance-parameter instance must be a valid  handle>VUID-vkEnumeratePhysicalDevices-pPhysicalDeviceCount-parameter pPhysicalDeviceCount must be a valid pointer to a uint32_t value:VUID-vkEnumeratePhysicalDevices-pPhysicalDevices-parameter! If 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-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?>See 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 l, 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 8 device 8 core device-level Vulkan command2 8 fp3 K device K enabled extension device-level commands2 K fp3 8 any other case, not covered above 8  NULL1 / behavior 1f"*" means any representable value for the parameter (including valid values, invalid values, and NULL).2PIn this function, device-level excludes all physical-device-level commands.3The returned function pointer mustN only be called with a dispatchable object (the first parameter) that is device or a child of device e.g. , / , or /.Valid Usage (Implicit)See Alsol, /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 l, 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 8 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 8 any other case, not covered above   NULL1 / 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. , , , / , or /.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)-VUID-vkGetInstanceProcAddr-instance-parameter If instance is not NULL, instance must be a valid  handle*VUID-vkGetInstanceProcAddr-pName-parameter pName must' be a null-terminated UTF-8 stringSee Alsol, /vulkanGvkGetPhysicalDeviceProperties - Returns properties of a physical deviceValid Usage (Implicit)See Also, 6/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)FVUID-vkGetPhysicalDeviceQueueFamilyProperties-physicalDevice-parameter physicalDevice must be a valid  handleQVUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyPropertyCount-parameter pQueueFamilyPropertyCount must be a valid pointer to a uint32_t valueNVUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyProperties-parameter! If the value referenced by pQueueFamilyPropertyCount is not 0 , and pQueueFamilyProperties is not NULL, pQueueFamilyProperties must# be a valid pointer to an array of pQueueFamilyPropertyCount 4 structuresSee Also, 4/vulkancvkGetPhysicalDeviceMemoryProperties - Reports memory information for the specified physical deviceValid Usage (Implicit)See Also, 7/vulkanGvkGetPhysicalDeviceFeatures - Reports capabilities of a physical deviceValid Usage (Implicit)See Also, 9/vulkanRvkGetPhysicalDeviceFormatProperties - Lists physical device s format capabilitiesValid Usage (Implicit)See AlsoK, >, /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 0S (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 6.9The limitations on an image format that are reported by /" have the following property: if usage1 and usage2 of type S are such that the bits set in usage1! are a subset of the bits set in usage2, and flags1 and flags2 of type N 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?6See AlsoK, N, =, P, Q, S,  /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 /./vulkan)VUID-vkGetDeviceProcAddr-device-parameter device must be a valid  handlevulkan(VUID-vkGetDeviceProcAddr-pName-parameter pName 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.;VUID-vkGetPhysicalDeviceProperties-physicalDevice-parameter 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.AVUID-vkGetPhysicalDeviceMemoryProperties-physicalDevice-parameter physicalDevice must be a valid  handle/vulkanphysicalDeviceD is the physical device from which to query the supported features.9VUID-vkGetPhysicalDeviceFeatures-physicalDevice-parameter physicalDevice must be a valid  handle/vulkanphysicalDeviceC is the physical device from which to query the format properties.AVUID-vkGetPhysicalDeviceFormatProperties-physicalDevice-parameter physicalDevice must be a valid  handlevulkanformat, is the format whose properties are queried.9VUID-vkGetPhysicalDeviceFormatProperties-format-parameter format must be a valid K value/vulkanphysicalDeviceD is the physical device from which to query the image capabilities.FVUID-vkGetPhysicalDeviceImageFormatProperties-physicalDevice-parameter physicalDevice must be a valid  handlevulkanformat is a K7 value specifying the image format, corresponding to 0::format.>VUID-vkGetPhysicalDeviceImageFormatProperties-format-parameter format must be a valid K valuevulkantype is a Q5 value specifying the image type, corresponding to 0:: imageType.<VUID-vkGetPhysicalDeviceImageFormatProperties-type-parameter type must be a valid Q valuevulkantiling is a P7 value specifying the image tiling, corresponding to 0::tiling.:VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-02248 tiling must not be ( . (Use T instead)>VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-parameter tiling must be a valid P valuevulkanusage is a bitmask of R@ specifying the intended usage of the image, corresponding to 0::usage.=VUID-vkGetPhysicalDeviceImageFormatProperties-usage-parameter usage must be a valid combination of R valuesCVUID-vkGetPhysicalDeviceImageFormatProperties-usage-requiredbitmask usage must not be 0vulkanflags is a bitmask of MC specifying additional parameters of the image, corresponding to 0::flags.=VUID-vkGetPhysicalDeviceImageFormatProperties-flags-parameter flags must be a valid combination of M valuesk4/////5/4/5/6/7/8/96//////////7/////8.......................................................////////// / / / / /////////////////// /!/"/#/$/%/&/'/(/)/*/+/,/-/.///0/1/2/39/:/G/C/;/</=/>/?/@/A/B/D/E/F/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/{?//////KG:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHMt~}|{zyxwvuNP'*)(Q RSa blm-.3210/CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE wx~}|{zy      ////////////////////////6//////////?//////<//////4/////7/////:///;/|/}/~>/x/y/z/{=/r/s/t/u/v/w9/:/G/C/;/</=/>/?/@/A/B/D/E/F/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/q5/4/5/6/7/8/98.......................................................////////// / / / / /////////////////// /!/"/#/$/%/&/'/(/)/*/+/,/-/.///0/1/2/3Q  P'*)(*)(-.3210/3210/KG:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIH:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE wx~}|{z~}|{zyRSMt~}|{zyxwvu~}|{zyxwvuN            a bml None("#%&'-./1789;=>?FHIMSUVX_dghklmq\.vulkanWVkExternalMemoryHandleTypeFlagBitsNV - Bitmask specifying external memory handle typesSee Also/0vulkanZVkExternalImageFormatPropertiesNV - Structure specifying external image format propertiesSee Also/, /, =, 0/vulkanPVkExternalMemoryFeatureFlagBitsNV - Bitmask specifying external memory featuresSee Also0, /, 0/vulkanimageFormatProperties$ will be filled in as when calling  7, 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 (0::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 0::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 0::externalHandleType when calling 3>1, or 0 if the external memory handle type is 0. compatibleHandleTypes will always contain 0::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().0vulkan04 specifies a valid NT handle to memory returned by "IDXGIResource1::CreateSharedHandle3, or a handle duplicated from such a handle using DuplicateHandle().0vulkan0, specifies a handle to memory returned by  3.0vulkan0, specifies a handle to memory returned by  3., or one duplicated from such a handle using DuplicateHandle().0vulkanvkGetPhysicalDeviceExternalImageFormatPropertiesNV - determine image capabilities compatible with external memory handle types DescriptionIf externalHandleType is 0, 5pExternalImageFormatProperties->imageFormatProperties, will return the same values as a call to  7, and the other members of pExternalImageFormatPropertiesA will all be 0. Otherwise, they are filled in as described for 0. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?6See Also0, /, K, N, P, Q, S, 0vulkanphysicalDeviceC is the physical device from which to query the image capabilitiesPVUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-physicalDevice-parameter physicalDevice must be a valid  handlevulkanformat( is the image format, corresponding to 0::format.HVUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-format-parameter format must be a valid K valuevulkantype& is the image type, corresponding to 0:: imageType.FVUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-type-parameter type must be a valid Q valuevulkantiling( is the image tiling, corresponding to 0::tiling.HVUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-tiling-parameter tiling must be a valid P valuevulkanusage7 is the intended usage of the image, corresponding to 0::usage.GVUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-parameter usage must be a valid combination of R valuesMVUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-requiredbitmask usage must not be 0vulkanflagsO is a bitmask describing additional parameters of the image, corresponding to 0::flags.GVUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-flags-parameter flags must be a valid combination of M valuesvulkanexternalHandleType! is either one of the bits from ., or 0.TVUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-externalHandleType-parameter externalHandleType must be a valid combination of . values.000///0///////////////000//////.000//000////////////// None("#%&'-./1789;=>?FHIMSUVX_dghklmqW2vulkanZVkImportMemoryWin32HandleInfoNV - import Win32 memory created on the same physical device DescriptionIf  handleType is 01, this structure is ignored by consumers of the 3 structure it is chained from.Valid Usage (Implicit)See Also/, C3vulkaniVkExportMemoryWin32HandleInfoNV - 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)0VUID-VkExportMemoryWin32HandleInfoNV-sType-sType sType must be :VUID-VkExportMemoryWin32HandleInfoNV-pAttributes-parameter If  pAttributes is not NULL,  pAttributes must$ be a valid pointer to a valid 0 valueSee AlsoC0vulkan pAttributes is a pointer to a Windows 09 structure specifying security attributes of the handle.0vulkandwAccess is a 0( specifying access rights of the handle.0!vulkan handleType is 0 or a .0 value specifying the type of memory handle in handle.5VUID-VkImportMemoryWin32HandleInfoNV-handleType-01327  handleType must not have more than one bit set9VUID-VkImportMemoryWin32HandleInfoNV-handleType-parameter  handleType must be a valid combination of . values0"vulkanhandle is a Windows 1 referring to the memory.1VUID-VkImportMemoryWin32HandleInfoNV-handle-01328 handle must8 be a valid handle to memory, obtained as specified by  handleType0%vulkanKvkGetMemoryWin32HandleNV - retrieve Win32 handle to a device memory object Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure7@See Also, , /0%vulkandevice, is the logical device that owns the memory..VUID-vkGetMemoryWin32HandleNV-device-parameter device must be a valid  handlevulkanmemory is the  object..VUID-vkGetMemoryWin32HandleNV-memory-parameter memory must be a valid  handle+VUID-vkGetMemoryWin32HandleNV-memory-parent memory must2 have been created, allocated, or retrieved from devicevulkan handleType is a bitmask of .B containing a single bit specifying the type of handle requested..VUID-vkGetMemoryWin32HandleNV-handleType-01326  handleType must be a flag specified in  V:: handleTypes when allocating memory2VUID-vkGetMemoryWin32HandleNV-handleType-parameter  handleType must be a valid combination of . values8VUID-vkGetMemoryWin32HandleNV-handleType-requiredbitmask  handleType must not be 0./000//120 0"0!300000000#0$0%0%20 0"0!300000$00#100./000/000//None("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanQVkMemoryWin32HandlePropertiesKHR - Properties of External Memory Windows HandlesValid Usage (Implicit)See AlsoC, 0Evulkan_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 Usage3VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00662  handleType must have been included in OU:: handleTypes when memory was created3VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00663 If  handleType is defined as an NT handle, 0D mustG be called no more than once for each valid unique combination of memory and  handleType3VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00664  handleType must4 be defined as an NT handle or a global share handleValid Usage (Implicit).VUID-VkMemoryGetWin32HandleInfoKHR-sType-sType sType must be .VUID-VkMemoryGetWin32HandleInfoKHR-pNext-pNext pNext must be NULL3VUID-VkMemoryGetWin32HandleInfoKHR-memory-parameter memory must be a valid  handle7VUID-VkMemoryGetWin32HandleInfoKHR-handleType-parameter  handleType must be a valid  valueSee Also, , C, 0Dvulkan[VkImportMemoryWin32HandleInfoKHR - import Win32 memory created on the same physical device DescriptionImporting memory object payloads 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 handle ownership using the  CloseHandle system call when the handle is no longer needed. For handle types defined as NT handles, the imported memory object holds a reference to its payload.NoteNon-NT handle import operations do not add a reference to their associated payload. If the original object owning the payload is destroyed, all resources and handles sharing that payload will become invalid. Applications can import the same payload 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 Usage6VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00658 If  handleType is not 0, it must3 be supported for import, as reported by P^ or P[2VUID-VkImportMemoryWin32HandleInfoKHR-handle-00659 The memory from which handle& was exported, or the memory named by name mustB have been created on the same underlying physical device as device6VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00660 If  handleType is not 0, it must9 be defined as an NT handle or a global share handle6VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01439 If  handleType is not  ,  ,  , or  , name must be NULL6VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01440 If  handleType is not 0 and handle is NULL, name must< name a valid memory resource of the type specified by  handleType6VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00661 If  handleType is not 0 and name is NULL, handle must1 be a valid handle of the type specified by  handleType2VUID-VkImportMemoryWin32HandleInfoKHR-handle-01441 if handle is not NULL, name must be NULL2VUID-VkImportMemoryWin32HandleInfoKHR-handle-01518 If 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 compatibility0VUID-VkImportMemoryWin32HandleInfoKHR-name-01519 If 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)1VUID-VkImportMemoryWin32HandleInfoKHR-sType-sType sType must be :VUID-VkImportMemoryWin32HandleInfoKHR-handleType-parameter If  handleType is not 0,  handleType must be a valid  valueSee Also, CvulkanxVkExportMemoryWin32HandleInfoKHR - Structure specifying additional attributes of Windows handles exported from a memory DescriptionIf OU is not present in the same pNext" chain, this structure is ignored.If OU is present in the pNext chain of 3 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 Usage7VUID-VkExportMemoryWin32HandleInfoKHR-handleTypes-00657 If OU:: handleTypes does not include  ,  ,  , or   , a  structure must not be included in the pNext chain of 3Valid Usage (Implicit)1VUID-VkExportMemoryWin32HandleInfoKHR-sType-sType sType must be ;VUID-VkExportMemoryWin32HandleInfoKHR-pAttributes-parameter If  pAttributes is not NULL,  pAttributes must) be a valid pointer to a valid 0 valueSee AlsoC06vulkanmemory= is the memory object from which the handle will be exported.07vulkan handleType! is the type of handle requested.09vulkanmemoryTypeBits_ is a bitmask containing one bit set for every memory type which the specified windows handle can be imported as.0;vulkan pAttributes is a pointer to a Windows 09 structure specifying security attributes of the handle.0<vulkandwAccess is a 0) specifying access rights of the handle.0=vulkanname} is a null-terminated UTF-16 string to associate with the payload referenced by NT handles exported from the created memory.0?vulkan handleType specifies the type of handle or name.0@vulkanhandle& is the external handle to import, or NULL.0AvulkannameF is a null-terminated UTF-16 string naming the payload to import, or NULL.0DvulkanDvkGetMemoryWin32HandleKHR - Get a Windows HANDLE for a memory object DescriptionAFor handle types defined as NT handles, the handles returned by 0Ds are owned by the application and hold a reference to their payload. To avoid leaking resources, the application must% release ownership of them using the  CloseHandle- system call when they are no longer needed.NoteNon-NT handle types do not add a reference to their associated payload. If the original object owning the payload is destroyed, all resources and handles sharing that payload will become invalid. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure7@See Also, 0EvulkanVvkGetMemoryWin32HandlePropertiesKHR - Get Properties of External Memory Win32 Handles Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@"See Also, , 0DvulkandeviceF is the logical device that created the device memory being exported./VUID-vkGetMemoryWin32HandleKHR-device-parameter device must be a valid  handlevulkanpGetWin32HandleInfo is a pointer to a : structure containing parameters of the export operation.<VUID-vkGetMemoryWin32HandleKHR-pGetWin32HandleInfo-parameter pGetWin32HandleInfo must be a valid pointer to a valid  structure0Evulkandevice. is the logical device that will be importing handle.9VUID-vkGetMemoryWin32HandlePropertiesKHR-device-parameter device must be a valid  handlevulkan handleType is the type of the handle handle.9VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-00666  handleType must1 not be one of the handle types defined as opaque=VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-parameter  handleType must be a valid  valuevulkanhandle& is the handle which will be imported.5VUID-vkGetMemoryWin32HandlePropertiesKHR-handle-00665 handle must@ be an external memory handle created outside of the Vulkan API08090507060>0@0A0?0:0=0;0<1000203040B0C0D0E0D0E0>0@0A0?0:0=0;0<0809050706040C030B02100None("#%&'-./1789;=>?FHIMSUVX_dghklmq{vulkanbVkSemaphoreGetWin32HandleInfoKHR - Structure describing a Win32 handle semaphore export operation Description>The properties of the handle returned depend on the value of  handleType. See  lV for a description of the properties of the defined external semaphore handle types. Valid Usage6VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01126  handleType must have been included in QY:: handleTypes when the  semaphore s current payload was created6VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01127 If  handleType" is defined as an NT handle, 0t mustG be called no more than once for each valid unique combination of  semaphore and  handleType5VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-01128  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 Rb::exportFromImportedHandleTypes for  handleType6VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01129 If  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  semaphore6VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01130 If  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 execution6VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01131  handleType must9 be defined as an NT handle or a global share handleValid Usage (Implicit)1VUID-VkSemaphoreGetWin32HandleInfoKHR-sType-sType sType must be 1VUID-VkSemaphoreGetWin32HandleInfoKHR-pNext-pNext pNext must be NULL9VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-parameter  semaphore must be a valid w handle:VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-parameter  handleType must be a valid  l valueSee Also l, w, C, 0tvulkancVkImportSemaphoreWin32HandleInfoKHR - Structure specifying Windows handle to import to a semaphore DescriptionThe handle types supported by  handleType are: Handle Type % Transference + Permanence Supported  M  Reference  Temporary,Permanent  M  Reference  Temporary,Permanent  M  Reference  Temporary,Permanent Handle Types Supported by  Valid Usage9VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01140  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 9VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01466 If  handleType is not M or M, name must be NULL9VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01467 If handle is NULL, name mustF name a valid synchronization primitive of the type specified by  handleType9VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01468 If name is NULL, handle must1 be a valid handle of the type specified by  handleType5VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01469 If handle is not NULL, name must be NULL5VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01542 If 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 compatibility3VUID-VkImportSemaphoreWin32HandleInfoKHR-name-01543 If 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 compatibility9VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-03261 If  handleType is M or M , the <::flags field must( match that of the semaphore from which handle or name was exported9VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-03262 If  handleType is M or M, the m:: semaphoreType field must( match that of the semaphore from which handle or name was exported4VUID-VkImportSemaphoreWin32HandleInfoKHR-flags-03322 If flags contains J, the m:: semaphoreType( field of the semaphore from which handle or name was exported must not be *Valid Usage (Implicit)4VUID-VkImportSemaphoreWin32HandleInfoKHR-sType-sType sType must be 4VUID-VkImportSemaphoreWin32HandleInfoKHR-pNext-pNext pNext must be NULL<VUID-VkImportSemaphoreWin32HandleInfoKHR-semaphore-parameter  semaphore must be a valid w handle8VUID-VkImportSemaphoreWin32HandleInfoKHR-flags-parameter flags must be a valid combination of J valuesHost SynchronizationHost access to  semaphore must be externally synchronizedSee Also l, w,  ;, C, 0uvulkan~VkExportSemaphoreWin32HandleInfoKHR - Structure specifying additional attributes of Windows handles exported from a semaphore DescriptionIf QY is not present in the same pNext" chain, this structure is ignored.If QY is present in the pNext chain of < 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:MThe implementation mustR ensure the access rights allow both signal and wait operations on the semaphore.#For handles of the following types:MThe access rights must be:  GENERIC_ALL 1 ehttps://docs.microsoft.com/en-us/windows/win32/sync/synchronization-object-security-and-access-rights Valid Usage:VUID-VkExportSemaphoreWin32HandleInfoKHR-handleTypes-01125 If QY:: handleTypes does not include M or M,  must not be included in the pNext chain of <Valid Usage (Implicit)4VUID-VkExportSemaphoreWin32HandleInfoKHR-sType-sType sType must be >VUID-VkExportSemaphoreWin32HandleInfoKHR-pAttributes-parameter If  pAttributes is not NULL,  pAttributes must) be a valid pointer to a valid 0 valueSee AlsoCvulkan`VkD3D12FenceSubmitInfoKHR - Structure specifying values for Direct3D 12 fence-backed semaphores DescriptionIf the semaphore in ;::pWaitSemaphores or ;::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 M 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 X structure to specify the values to use when waiting for and signaling such semaphores. Valid Usage=VUID-VkD3D12FenceSubmitInfoKHR-waitSemaphoreValuesCount-00079 waitSemaphoreValuesCount must be the same value as ;::waitSemaphoreCount , where ; is in the pNext chain of this  structure?VUID-VkD3D12FenceSubmitInfoKHR-signalSemaphoreValuesCount-00080 signalSemaphoreValuesCount must be the same value as ;::signalSemaphoreCount , where ; is in the pNext chain of this  structureValid Usage (Implicit)*VUID-VkD3D12FenceSubmitInfoKHR-sType-sType sType must be =VUID-VkD3D12FenceSubmitInfoKHR-pWaitSemaphoreValues-parameter If waitSemaphoreValuesCount is not 0, and pWaitSemaphoreValues is not NULL, pWaitSemaphoreValues must( be a valid pointer to an array of waitSemaphoreValuesCount uint64_t values?VUID-VkD3D12FenceSubmitInfoKHR-pSignalSemaphoreValues-parameter If signalSemaphoreValuesCount is not 0 , and pSignalSemaphoreValues is not NULL, pSignalSemaphoreValues must( be a valid pointer to an array of signalSemaphoreValuesCount uint64_t valuesSee AlsoC0avulkan semaphore4 is the semaphore from which state will be exported.0bvulkan handleType! is the type of handle requested.0dvulkanwaitSemaphoreValuesCount6 is the number of semaphore wait values specified in pWaitSemaphoreValues.0evulkanpWaitSemaphoreValues is a pointer to an array of waitSemaphoreValuesCount- values for the corresponding semaphores in ;::pWaitSemaphores to wait for.0fvulkansignalSemaphoreValuesCount8 is the number of semaphore signal values specified in pSignalSemaphoreValues.0gvulkanpSignalSemaphoreValues is a pointer to an array of signalSemaphoreValuesCount- values for the corresponding semaphores in ;::pSignalSemaphores to set when signaled.0ivulkan pAttributes is a pointer to a Windows 09 structure specifying security attributes of the handle.0jvulkandwAccess is a 0) specifying access rights of the handle.0kvulkanname is a null-terminated UTF-16 string to associate with the underlying synchronization primitive referenced by NT handles exported from the created semaphore.0mvulkan semaphore: is the semaphore into which the payload will be imported.0nvulkanflags is a bitmask of JO specifying additional parameters for the semaphore payload import operation.0ovulkan handleType specifies the type of handle.0pvulkanhandle& is the external handle to import, or NULL.0qvulkannamec is a null-terminated UTF-16 string naming the underlying synchronization primitive to import, or NULL.0tvulkanCvkGetSemaphoreWin32HandleKHR - Get a Windows HANDLE for a semaphore DescriptionAFor handle types defined as NT handles, the handles returned by 0tL 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure7@See Also, 0uvulkanKvkImportSemaphoreWin32HandleKHR - 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@"See Also, 0tvulkandeviceB is the logical device that created the semaphore being exported.2VUID-vkGetSemaphoreWin32HandleKHR-device-parameter device must be a valid  handlevulkanpGetWin32HandleInfo is a pointer to a : structure containing parameters of the export operation.?VUID-vkGetSemaphoreWin32HandleKHR-pGetWin32HandleInfo-parameter pGetWin32HandleInfo must be a valid pointer to a valid  structure0uvulkandevice2 is the logical device that created the semaphore.5VUID-vkImportSemaphoreWin32HandleKHR-device-parameter device must be a valid  handlevulkanpImportSemaphoreWin32HandleInfo is a pointer to a ; structure specifying the semaphore and import parameters.NVUID-vkImportSemaphoreWin32HandleKHR-pImportSemaphoreWin32HandleInfo-parameter pImportSemaphoreWin32HandleInfo must be a valid pointer to a valid  structure 0`0a0b0l0p0q0n0m0o0h0k0i0j0c0e0g0d0f100020^0_0r0s0t0u 0t0u0l0p0q0n0m0o0h0k0i0j0c0e0g0d0f0`0a0b0_0s0^0r10020None("#%&'-./1789;=>?FHIMSUVX_dghklmq>vulkan(VkImportFenceWin32HandleInfoKHR - (None) DescriptionThe handle types supported by  handleType are: Handle Type % Transference + Permanence Supported  Q  Reference  Temporary,Permanent  Q  Reference  Temporary,Permanent Handle Types Supported by  Valid Usage5VUID-VkImportFenceWin32HandleInfoKHR-handleType-01457  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 table5VUID-VkImportFenceWin32HandleInfoKHR-handleType-01459 If  handleType is not Q, name must be NULL5VUID-VkImportFenceWin32HandleInfoKHR-handleType-01460 If handle is NULL, name mustF name a valid synchronization primitive of the type specified by  handleType5VUID-VkImportFenceWin32HandleInfoKHR-handleType-01461 If name is NULL, handle must1 be a valid handle of the type specified by  handleType1VUID-VkImportFenceWin32HandleInfoKHR-handle-01462 If handle is not NULL, name must be NULL1VUID-VkImportFenceWin32HandleInfoKHR-handle-01539 If 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 compatibility/VUID-VkImportFenceWin32HandleInfoKHR-name-01540 If 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)0VUID-VkImportFenceWin32HandleInfoKHR-sType-sType sType must be 0VUID-VkImportFenceWin32HandleInfoKHR-pNext-pNext pNext must be NULL4VUID-VkImportFenceWin32HandleInfoKHR-fence-parameter fence must be a valid  handle4VUID-VkImportFenceWin32HandleInfoKHR-flags-parameter flags must be a valid combination of L valuesHost SynchronizationHost access to fence must be externally synchronizedSee Also , ,  b, C, 0vulkanZVkFenceGetWin32HandleInfoKHR - 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 Usage2VUID-VkFenceGetWin32HandleInfoKHR-handleType-01448  handleType must have been included in MS:: handleTypes when the fence s current payload was created2VUID-VkFenceGetWin32HandleInfoKHR-handleType-01449 If  handleType" is defined as an NT handle, 0 mustL be called no more than once for each valid unique combination of fence and  handleType-VUID-VkFenceGetWin32HandleInfoKHR-fence-01450 fence muste 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 N\::exportFromImportedHandleTypes for  handleType2VUID-VkFenceGetWin32HandleInfoKHR-handleType-01451 If  handleTypeM 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 execution2VUID-VkFenceGetWin32HandleInfoKHR-handleType-01452  handleType must4 be defined as an NT handle or a global share handleValid Usage (Implicit)-VUID-VkFenceGetWin32HandleInfoKHR-sType-sType sType must be -VUID-VkFenceGetWin32HandleInfoKHR-pNext-pNext pNext must be NULL1VUID-VkFenceGetWin32HandleInfoKHR-fence-parameter fence must be a valid  handle6VUID-VkFenceGetWin32HandleInfoKHR-handleType-parameter  handleType must be a valid   valueSee Also , , C, 0vulkanvVkExportFenceWin32HandleInfoKHR - Structure specifying additional attributes of Windows handles exported from a fence DescriptionIf MS is not present in the same pNext" chain, this structure is ignored.If MS is present in the pNext chain of ,c 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 will beDXGI_SHARED_RESOURCE_READ | DXGI_SHARED_RESOURCE_WRITE#for handles of the following types:Q 1 ehttps://docs.microsoft.com/en-us/windows/win32/sync/synchronization-object-security-and-access-rights Valid Usage6VUID-VkExportFenceWin32HandleInfoKHR-handleTypes-01447 If MS:: handleTypes does not include Q , a  structure must not be included in the pNext chain of ,cValid Usage (Implicit)0VUID-VkExportFenceWin32HandleInfoKHR-sType-sType sType must be :VUID-VkExportFenceWin32HandleInfoKHR-pAttributes-parameter If  pAttributes is not NULL,  pAttributes must) be a valid pointer to a valid 0 valueSee AlsoC0vulkanfence0 is the fence from which state will be exported.0vulkan handleType! is the type of handle requested.0vulkan pAttributes is a pointer to a Windows 09 structure specifying security attributes of the handle.0vulkandwAccess is a 0) specifying access rights of the handle.0vulkanname is a null-terminated UTF-16 string to associate with the underlying synchronization primitive referenced by NT handles exported from the created fence.0vulkanfence4 is the fence into which the state will be imported.0vulkanflags is a bitmask of LJ specifying additional parameters for the fence payload import operation.0vulkan handleType specifies the type of handle.0vulkanhandle& is the external handle to import, or NULL.0vulkannamec is a null-terminated UTF-16 string naming the underlying synchronization primitive to import, or NULL.0vulkan;vkGetFenceWin32HandleKHR - Get a Windows HANDLE for a fence DescriptionAFor handle types defined as NT handles, the handles returned by 0L 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure7@See Also, 0vulkanBvkImportFenceWin32HandleKHR - 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@"See Also, 0vulkandevice= is the logical device that created the fence being exported..VUID-vkGetFenceWin32HandleKHR-device-parameter device must be a valid  handlevulkanpGetWin32HandleInfo is a pointer to a : structure containing parameters of the export operation.;VUID-vkGetFenceWin32HandleKHR-pGetWin32HandleInfo-parameter pGetWin32HandleInfo must be a valid pointer to a valid  structure0vulkandevice. is the logical device that created the fence.1VUID-vkImportFenceWin32HandleKHR-device-parameter device must be a valid  handlevulkanpImportFenceWin32HandleInfo is a pointer to a 7 structure specifying the fence and import parameters.FVUID-vkImportFenceWin32HandleKHR-pImportFenceWin32HandleInfo-parameter pImportFenceWin32HandleInfo must be a valid pointer to a valid  structure000000000000010002000000000000000000000000010020 None("#%&'-./1789;=>?FHIMSUVX_dghklmq,vulkan[VkExternalMemoryImageCreateInfoNV - Specify that an image may be backed by external memoryValid Usage (Implicit)See Also/, C-vulkanPVkExportMemoryAllocateInfoNV - Specify memory handle types that may be exportedValid Usage (Implicit)See Also/, C0vulkan 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  .7VUID-VkExportMemoryAllocateInfoNV-handleTypes-parameter  handleTypes must be a valid combination of . values0vulkan handleTypes is zero, or a bitmask of .6 specifying one or more external memory handle types.<VUID-VkExternalMemoryImageCreateInfoNV-handleTypes-parameter  handleTypes must be a valid combination of . values,00-00./000//0000,00-000000./000/000//TNone("#%&'-./1789;=>?FHIMSUVX_dghklmqV(vulkanUVkSparseImageFormatProperties2 - Structure specifying sparse image format propertiesValid Usage (Implicit)See Also, C, 0, vulkanPVkQueueFamilyProperties2 - Structure providing information about a queue familyValid Usage (Implicit))VUID-VkQueueFamilyProperties2-sType-sType sType must be ^)VUID-VkQueueFamilyProperties2-pNext-pNext 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 *VUID-VkQueueFamilyProperties2-sType-unique The sType" value of each struct in the pNext chain must be uniqueSee Also4, C, 0, vulkanYVkPhysicalDeviceSparseImageFormatInfo2 - Structure specifying sparse image format inputsValid Usage (Implicit)See AlsoK, P, Q, S, a, C, 0, vulkanNVkPhysicalDeviceProperties2 - 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),VUID-VkPhysicalDeviceProperties2-sType-sType sType must be Z,VUID-VkPhysicalDeviceProperties2-pNext-pNext 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 f, , , , , 4, ,  , , 5, , A, , , <, , , , ,  , G,  , , , , , , , , , M, , , #, w, v, _, i, , , , G, $, ,,  , or -VUID-VkPhysicalDeviceProperties2-sType-unique The sType" value of each struct in the pNext chain must be uniqueSee Also6, C, 0, vulkan[VkPhysicalDeviceMemoryProperties2 - Structure specifying physical device memory propertiesValid Usage (Implicit)2VUID-VkPhysicalDeviceMemoryProperties2-sType-sType sType must be _2VUID-VkPhysicalDeviceMemoryProperties2-pNext-pNext pNext must be NULL* or a pointer to a valid instance of 3VUID-VkPhysicalDeviceMemoryProperties2-sType-unique The sType" value of each struct in the pNext chain must be uniqueSee Also7, C, 0, vulkanRVkPhysicalDeviceImageFormatInfo2 - Structure specifying image creation parameters DescriptionThe members of " correspond to the arguments to  7, with sType and pNext added for extensibility. Valid Usage2VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02249 tiling must be  if and only if the pNext chain includes 2VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02313 If tiling is  and flags contains O, then the pNext chain must include a 7 structure with non-zero viewFormatCountValid Usage (Implicit)1VUID-VkPhysicalDeviceImageFormatInfo2-sType-sType sType must be ]1VUID-VkPhysicalDeviceImageFormatInfo2-pNext-pNext 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 2VUID-VkPhysicalDeviceImageFormatInfo2-sType-unique The sType" value of each struct in the pNext chain must be unique6VUID-VkPhysicalDeviceImageFormatInfo2-format-parameter format must be a valid K value4VUID-VkPhysicalDeviceImageFormatInfo2-type-parameter type must be a valid Q value6VUID-VkPhysicalDeviceImageFormatInfo2-tiling-parameter tiling must be a valid P value5VUID-VkPhysicalDeviceImageFormatInfo2-usage-parameter usage must be a valid combination of  values;VUID-VkPhysicalDeviceImageFormatInfo2-usage-requiredbitmask usage must not be 05VUID-VkPhysicalDeviceImageFormatInfo2-flags-parameter flags must be a valid combination of  valuesSee AlsoK, N, P, Q, S, C, 0, 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 0 or can be included in the pNext chain of a  2\ structure, in which case it controls which features are enabled in the device in lieu of pEnabledFeatures.Valid Usage (Implicit)See Also9, C, 0, vulkanKVkImageFormatProperties2 - Structure specifying an image format properties Description%If the combination of parameters to 04 is not supported by the implementation for use in 0S, 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))VUID-VkImageFormatProperties2-sType-sType sType must be \)VUID-VkImageFormatProperties2-pNext-pNext 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 *VUID-VkImageFormatProperties2-sType-unique The sType" value of each struct in the pNext chain must be uniqueSee Also=, C, 0, vulkanBVkFormatProperties2 - Structure specifying image format propertiesValid Usage (Implicit)$VUID-VkFormatProperties2-sType-sType sType must be [$VUID-VkFormatProperties2-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of %VUID-VkFormatProperties2-sType-unique The sType" value of each struct in the pNext chain must be uniqueSee Also>, C, 0, 0vulkanformat is the image format.<VUID-VkPhysicalDeviceSparseImageFormatInfo2-format-parameter format must be a valid K value0vulkantype is the dimensionality of image.:VUID-VkPhysicalDeviceSparseImageFormatInfo2-type-parameter type must be a valid Q value0vulkansamples3 is the number of samples per texel as defined in a.9VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-01095 samples must be a bit value that is set in =:: sampleCounts returned by  7 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 created=VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-parameter samples must be a valid a value0vulkanusage9 is a bitmask describing the intended usage of the image.;VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-parameter usage must be a valid combination of  valuesAVUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-requiredbitmask usage must not be 00vulkantiling9 is the tiling arrangement of the texel blocks in memory.<VUID-VkPhysicalDeviceSparseImageFormatInfo2-tiling-parameter tiling must be a valid P value0vulkan properties is a ; structure which is populated with the same values as in ?j.0vulkanpNext is NULL6 or a pointer to a structure extending this structure.0vulkanmemoryProperties is a 7; structure which is populated with the same values as in  .0vulkanpNext is NULL6 or a pointer to a structure extending this structure.0vulkanqueueFamilyProperties is a 4; structure which is populated with the same values as in  .0vulkanpNext is NULL< or a pointer to a structure extending this structure. The pNext chain of 5 is used to provide additional image parameters to 0.0vulkanformat is a K7 value indicating the image format, corresponding to 0::format.0vulkantype is a Q5 value indicating the image type, corresponding to 0:: imageType.0vulkantiling is a P7 value indicating the image tiling, corresponding to 0::tiling.0vulkanusage is a bitmask of @ indicating the intended usage of the image, corresponding to 0::usage.0vulkanflags is a bitmask of C indicating additional parameters of the image, corresponding to 0::flags.0vulkanpNext 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 0.0vulkanimageFormatProperties is a =/ structure in which capabilities are returned.0vulkanpNext is NULL6 or a pointer to a structure extending this structure.0vulkanformatProperties is a >B structure describing features supported by the requested format.0vulkanpNext is NULL6 or a pointer to a structure extending this structure.0vulkan properties is a 6 structure describing properties of the physical device. This structure is written with the same values as if it were written by  .0vulkanpNext is NULL6 or a pointer to a structure extending this structure.0vulkanfeatures is a 9G structure describing the fine-grained features of the Vulkan 1.0 API.0vulkanHvkGetPhysicalDeviceFeatures2 - Reports capabilities of a physical device DescriptionEach structure in  pFeatures and its pNextA chain contains members corresponding to fine-grained features. 0V writes each member to a boolean value indicating whether that feature is supported.Valid Usage (Implicit)See Also, 0vulkanHvkGetPhysicalDeviceProperties2 - Returns properties of a physical device DescriptionEach structure in  pProperties and its pNextY chain contain members corresponding to properties or implementation-dependent limits. 0O writes each member to a value indicating the value of that property or limit.Valid Usage (Implicit)See Also, 0vulkanSvkGetPhysicalDeviceFormatProperties2 - Lists physical device s format capabilities Description0 behaves similarly to  68, with the ability to return extended information in a pNext chain of output structures.Valid Usage (Implicit)See AlsoK, , 0vulkan^vkGetPhysicalDeviceImageFormatProperties2 - Lists physical device s image format capabilities Description0 behaves similarly to  78, with the ability to return extended information in a pNext chain of output structures. Valid Usage:VUID-vkGetPhysicalDeviceImageFormatProperties2-pNext-01868 If the pNext chain of pImageFormatProperties includes a  structure, the pNext chain of pImageFormatInfo must include a  structure with  handleType set to AZValid Usage (Implicit)GVUID-vkGetPhysicalDeviceImageFormatProperties2-physicalDevice-parameter physicalDevice must be a valid  handleIVUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatInfo-parameter pImageFormatInfo must$ be a valid pointer to a valid  structureOVUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatProperties-parameter pImageFormatProperties must be a valid pointer to a  structure Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?6See Also, , 0vulkannvkGetPhysicalDeviceQueueFamilyProperties2 - Reports properties of the queues of the specified physical device Description0 behaves similarly to  8, with the ability to return extended information in a pNext chain of output structures.Valid Usage (Implicit)GVUID-vkGetPhysicalDeviceQueueFamilyProperties2-physicalDevice-parameter physicalDevice must be a valid  handleRVUID-vkGetPhysicalDeviceQueueFamilyProperties2-pQueueFamilyPropertyCount-parameter pQueueFamilyPropertyCount must be a valid pointer to a uint32_t valueOVUID-vkGetPhysicalDeviceQueueFamilyProperties2-pQueueFamilyProperties-parameter! If 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, 0vulkandvkGetPhysicalDeviceMemoryProperties2 - Reports memory information for the specified physical device Description0 behaves similarly to  8, with the ability to return extended information in a pNext chain of output structures.Valid Usage (Implicit)See Also, 0vulkanrvkGetPhysicalDeviceSparseImageFormatProperties2 - Retrieve properties of an image format applied to sparse images Description0 behaves identically to ?jZ, with the ability to return extended information by adding extending structures to the pNext chain of its  pProperties parameter.Valid Usage (Implicit)MVUID-vkGetPhysicalDeviceSparseImageFormatProperties2-physicalDevice-parameter physicalDevice must be a valid  handleJVUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pFormatInfo-parameter  pFormatInfo must$ be a valid pointer to a valid  structureMVUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pPropertyCount-parameter pPropertyCount must be a valid pointer to a uint32_t valueJVUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pProperties-parameter! If 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, , 0vulkanphysicalDeviceD is the physical device from which to query the supported features.:VUID-vkGetPhysicalDeviceFeatures2-physicalDevice-parameter physicalDevice must be a valid  handle0vulkanphysicalDeviceH is the handle to the physical device whose properties will be queried.<VUID-vkGetPhysicalDeviceProperties2-physicalDevice-parameter physicalDevice must be a valid  handle0vulkanphysicalDeviceC is the physical device from which to query the format properties.BVUID-vkGetPhysicalDeviceFormatProperties2-physicalDevice-parameter physicalDevice must be a valid  handlevulkanformat, is the format whose properties are queried.:VUID-vkGetPhysicalDeviceFormatProperties2-format-parameter format must be a valid K value0vulkanphysicalDeviceD 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 0S.0vulkanphysicalDeviceH is the handle to the physical device whose properties will be queried.0vulkanphysicalDevice& is the handle to the device to query.BVUID-vkGetPhysicalDeviceMemoryProperties2-physicalDevice-parameter physicalDevice must be a valid  handle0vulkanphysicalDeviceK 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.000000000000000000000000000000000CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE0000000 0000000000000000000000000000000000000000CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFENone("#%&'-./1789;=>?FHIMSUVX_dghklmq+p111111 1!1"1#1$1%1&1'1(1)1*1+1,1-1.1/1011121314151617101/1.1-1,1+1*1)1(111213141516171%1$1#1"1!1 11111'11& None("#%&'-./1789;=>?FHIMSUVX_dghklmq%2vulkanZVkDeviceQueueCreateInfo - Structure specifying parameters of a newly created device queue Valid Usage3VUID-VkDeviceQueueCreateInfo-queueFamilyIndex-00381 queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by  -VUID-VkDeviceQueueCreateInfo-queueCount-00382  queueCount must# be less than or equal to the  queueCount member of the   % structure, as returned by   in the pQueueFamilyProperties[queueFamilyIndex]3VUID-VkDeviceQueueCreateInfo-pQueuePriorities-00383 Each element of pQueuePriorities must be between 0.0 and 1.0 inclusive(VUID-VkDeviceQueueCreateInfo-flags-02861 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)(VUID-VkDeviceQueueCreateInfo-sType-sType sType must be -(VUID-VkDeviceQueueCreateInfo-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of )VUID-VkDeviceQueueCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique,VUID-VkDeviceQueueCreateInfo-flags-parameter flags must% be a valid combination of  values7VUID-VkDeviceQueueCreateInfo-pQueuePriorities-parameter pQueuePriorities must( be a valid pointer to an array of  queueCount float values3VUID-VkDeviceQueueCreateInfo-queueCount-arraylength  queueCount must be greater than 0See Also3, , C3vulkanOVkDeviceCreateInfo - Structure specifying parameters of a newly created device Valid Usage.VUID-VkDeviceCreateInfo-queueFamilyIndex-02802 The 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#VUID-VkDeviceCreateInfo-pNext-00373 If the pNext chain includes a  structure, then pEnabledFeatures must be NULL5VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-01840 ppEnabledExtensionNames must not contain VK_AMD_negative_viewport_height5VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-03328 ppEnabledExtensionNames must not contain both VK_KHR_buffer_device_address and VK_EXT_buffer_device_address#VUID-VkDeviceCreateInfo-pNext-04748 if the pNext chain includes a  structure and ::bufferDeviceAddress is VK_TRUE, ppEnabledExtensionNames must not contain VK_EXT_buffer_device_address#VUID-VkDeviceCreateInfo-pNext-02829 If the pNext chain includes a  structure, then it must not include a , , , , , or  structure#VUID-VkDeviceCreateInfo-pNext-02830 If the pNext chain includes a  structure, then it must not include a &, ?, @, , $, 9, I, B, <, !, H, ', or J structure1VUID-VkDeviceCreateInfo-ppEnabledExtensions-04476 If ppEnabledExtensions contains "VK_KHR_shader_draw_parameters" and the pNext chain includes a  structure, then ::shaderDrawParameters must be .1VUID-VkDeviceCreateInfo-ppEnabledExtensions-02831 If ppEnabledExtensions contains "VK_KHR_draw_indirect_count" and the pNext chain includes a  structure, then ::drawIndirectCount must be .1VUID-VkDeviceCreateInfo-ppEnabledExtensions-02832 If ppEnabledExtensions contains %"VK_KHR_sampler_mirror_clamp_to_edge" and the pNext chain includes a  structure, then ::samplerMirrorClampToEdge must be .1VUID-VkDeviceCreateInfo-ppEnabledExtensions-02833 If ppEnabledExtensions contains "VK_EXT_descriptor_indexing" and the pNext chain includes a  structure, then ::descriptorIndexing must be .1VUID-VkDeviceCreateInfo-ppEnabledExtensions-02834 If ppEnabledExtensions contains "VK_EXT_sampler_filter_minmax" and the pNext chain includes a  structure, then ::samplerFilterMinmax must be .1VUID-VkDeviceCreateInfo-ppEnabledExtensions-02835 If ppEnabledExtensions contains $"VK_EXT_shader_viewport_index_layer" and the pNext chain includes a  structure, then ::shaderOutputViewportIndex and ::shaderOutputLayer must both be .)VUID-VkDeviceCreateInfo-pProperties-04451 If the VK_KHR_portability_subset extension is included in  pProperties of +, ppEnabledExtensions must% include "VK_KHR_portability_subset"..VUID-VkDeviceCreateInfo-shadingRateImage-04478 If  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshadingRateImage is enabled,  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRatepipelineFragmentShadingRate must not be enabled.VUID-VkDeviceCreateInfo-shadingRateImage-04479 If  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshadingRateImage is enabled,  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveFragmentShadingRateprimitiveFragmentShadingRate must not be enabled.VUID-VkDeviceCreateInfo-shadingRateImage-04480 If  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshadingRateImage is enabled,  thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRateattachmentFragmentShadingRate must not be enabled0VUID-VkDeviceCreateInfo-fragmentDensityMap-04481 If  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragmentDensityMap is enabled,  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRatepipelineFragmentShadingRate must not be enabled0VUID-VkDeviceCreateInfo-fragmentDensityMap-04482 If  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragmentDensityMap is enabled,  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveFragmentShadingRateprimitiveFragmentShadingRate must not be enabled0VUID-VkDeviceCreateInfo-fragmentDensityMap-04483 If  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapfragmentDensityMap is enabled,  thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRateattachmentFragmentShadingRate must not be enabledValid Usage (Implicit)#VUID-VkDeviceCreateInfo-sType-sType sType must be ,#VUID-VkDeviceCreateInfo-pNext-pNext 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 , , , g, , , , &, , g, , ', , X, , , , , , , , , , !, , , ], , , , , 9, , =, , !, , 9, , , , , H, , , , , , , , , , , W, , , $, <,  , ?, ,  , , @,  , ^, X, `, B, , j, , ,  , !, H, %, I, , -, , , J, , ., or $VUID-VkDeviceCreateInfo-sType-unique The sType" value of each struct in the pNext chain must? be unique, with the exception of structures of type  or )VUID-VkDeviceCreateInfo-flags-zerobitmask flags must be 03VUID-VkDeviceCreateInfo-pQueueCreateInfos-parameter pQueueCreateInfos must( be a valid pointer to an array of queueCreateInfoCount valid 2 structures5VUID-VkDeviceCreateInfo-ppEnabledLayerNames-parameter If enabledLayerCount is not 0, ppEnabledLayerNames must( be a valid pointer to an array of enabledLayerCount# null-terminated UTF-8 strings9VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-parameter If enabledExtensionCount is not 0, ppEnabledExtensionNames must( be a valid pointer to an array of enabledExtensionCount# null-terminated UTF-8 strings2VUID-VkDeviceCreateInfo-pEnabledFeatures-parameter If pEnabledFeatures is not NULL, pEnabledFeatures must) be a valid pointer to a valid 9 structure8VUID-VkDeviceCreateInfo-queueCreateInfoCount-arraylength queueCreateInfoCount must be greater than 0See Also, 2, 9, C, 1D19vulkanpNext is NULL6 or a pointer to a structure extending this structure.1:vulkanflags is reserved for future use.1;vulkanpQueueCreateInfos is a pointer to an array of 2r 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.1<vulkanppEnabledLayerNames! is deprecated and ignored. See  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-layers-devicelayerdeprecation.1=vulkanppEnabledExtensionNames 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.1>vulkanpEnabledFeatures is NULL or a pointer to a 9\ 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.1@vulkanpNext is NULL6 or a pointer to a structure extending this structure.1Avulkanflags/ is a bitmask indicating behavior of the queue.1BvulkanqueueFamilyIndex 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  .1CvulkanpQueuePriorities 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.1Dvulkan-vkCreateDevice - Create a new device instance Description1D9 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, 1D must return :.. If any requested feature is not supported, 1D must return 9. Support for extensions can2 be checked before creating a device by querying +. Support for features can# similarly be checked by querying  .1After verifying and enabling the extensions the 4 object is created and returned to the application.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, 1D will return 7. Valid Usage1VUID-vkCreateDevice-ppEnabledExtensionNames-01387 All  ~https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-extensions-extensiondependenciesrequired extensions% for each extension in the 3::ppEnabledExtensionNames list must" also be present in that listValid Usage (Implicit),VUID-vkCreateDevice-physicalDevice-parameter physicalDevice must be a valid  handle)VUID-vkCreateDevice-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid 3 structure(VUID-vkCreateDevice-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure%VUID-vkCreateDevice-pDevice-parameter pDevice must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?>:97=See Also, , 3, 1Evulkan=A convenience wrapper to make a compatible pair of calls to 1D and 1FTo ensure that 1F is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.1Fvulkan*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 1F. Valid Usage!VUID-vkDestroyDevice-device-00378# All child objects created on device must) have been destroyed prior to destroying device!VUID-vkDestroyDevice-device-00379 If  were provided when device1 was created, a compatible set of callbacks must be provided here!VUID-vkDestroyDevice-device-00380 If no  were provided when device was created,  pAllocator must be NULLValid Usage (Implicit)%VUID-vkDestroyDevice-device-parameter If device is not NULL, device must be a valid  handle)VUID-vkDestroyDevice-pAllocator-parameter If  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 / objects received from device must be externally synchronizedSee Also, 1DvulkanphysicalDevice must7 be one of the device handles returned from a call to   (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 3B 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.1Fvulkandevice" 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.21?1A1@1B1C3181:191<1=1;1>1D1E1F1D1E1F21?1A1@1B1C3181:191<1=1;1>None-"#$%&'-./1456789;=>?FHIMSUVX_dghklmq3 1Qvulkan&A Vulkan structure that can appear in .1Svulkan4Singleton for a Vulkan structure that can appear in . It is either 6, or it   .1Vvulkan&A Vulkan structure that can appear in .1Xvulkan4Singleton for a Vulkan structure that can appear in . It is either 9, or it   .1\vulkan!Require a minimum device version.1]vulkan)Require a Vulkan physical device feature.1^vulkan*Require a Vulkan physical device property.1_vulkan"Require a Vulkan device extension.1ivulkanA requirement on a Vulkan Instance.1jvulkan*Require a minimum Vulkan instance version.1kvulkanRequire a Vulkan layer.1lvulkan$Require a Vulkan instance extension.1ovulkanThe implementationVersion/ of the layer must meet or exceed this version"1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r"1i1j1k1l1m1n1o1p1q1r1[1\1]1^1_1`1a1b1c1d1e1f1g1h1V1W1Q1R1X1Y1Z1S1T1U None("#%&'-./1789;=>?FHIMSUVX_dghklmqX6)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 d structure in the pNext chain of ) , or if descriptorType is O, in which case the source data for the descriptor writes is taken from the J 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-nullDescriptornullDescriptorT feature is enabled, the buffer, acceleration structure, imageView, or bufferView can be 8. Loads from a null descriptor return zero values and stores and atomics to a null descriptor are discarded. A null acceleration structure descriptor results in the miss shader being invoked.zIf the destination descriptor is a mutable descriptor, the active descriptor type for the destination descriptor becomes descriptorType.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*VUID-VkWriteDescriptorSet-dstBinding-00315  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)*VUID-VkWriteDescriptorSet-dstBinding-00316  dstBinding must# be a binding with a non-zero descriptorCount/VUID-VkWriteDescriptorSet-descriptorCount-003174 All consecutive bindings updated via a single )% structure, except those with a descriptorCount of zero, must have identical descriptorType and  stageFlags/VUID-VkWriteDescriptorSet-descriptorCount-003184 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 samplers.VUID-VkWriteDescriptorSet-descriptorType-00319 descriptorType must match the type of  dstBinding within dstSet&VUID-VkWriteDescriptorSet-dstSet-00320 dstSet must be a valid  handle/VUID-VkWriteDescriptorSet-dstArrayElement-00321 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.VUID-VkWriteDescriptorSet-descriptorType-02219 If descriptorType is , dstArrayElement must be an integer multiple of 4.VUID-VkWriteDescriptorSet-descriptorType-02220 If descriptorType is , descriptorCount must be an integer multiple of 4.VUID-VkWriteDescriptorSet-descriptorType-00322 If descriptorType is , , , , or ,  pImageInfo must( be a valid pointer to an array of descriptorCount valid / structures.VUID-VkWriteDescriptorSet-descriptorType-02994 If descriptorType is  or , each element of pTexelBufferView must be either a valid  handle or 8.VUID-VkWriteDescriptorSet-descriptorType-02995 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 8.VUID-VkWriteDescriptorSet-descriptorType-00324 If descriptorType is , , , or ,  pBufferInfo must( be a valid pointer to an array of descriptorCount valid 0 structures.VUID-VkWriteDescriptorSet-descriptorType-00325 If 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 x object.VUID-VkWriteDescriptorSet-descriptorType-02996 If descriptorType is , , , or  , the  imageView member of each element of  pImageInfo must be either a valid  handle or 8.VUID-VkWriteDescriptorSet-descriptorType-02997 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 8.VUID-VkWriteDescriptorSet-descriptorType-02221 If descriptorType is  , the pNext chain must include a  structure whose dataSize member equals descriptorCount.VUID-VkWriteDescriptorSet-descriptorType-02382 If descriptorType is  , the pNext chain must include a d structure whose accelerationStructureCount member equals descriptorCount.VUID-VkWriteDescriptorSet-descriptorType-03817 If descriptorType is  , the pNext chain must include a J structure whose accelerationStructureCount member equals descriptorCount.VUID-VkWriteDescriptorSet-descriptorType-01946 If descriptorType is , then the  imageView member of each  pImageInfo element must' have been created without a X structure in its pNext chain.VUID-VkWriteDescriptorSet-descriptorType-02738 If descriptorType is , and if any element of  pImageInfo has a  imageView* member that was created with a X 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 X object.VUID-VkWriteDescriptorSet-descriptorType-01948 If 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 X structure in its pNext chain with an identically defined X, to the corresponding immutable sampler.VUID-VkWriteDescriptorSet-descriptorType-00327 If descriptorType is  or  , the offset member of each element of  pBufferInfo must be a multiple of  ::minUniformBufferOffsetAlignment.VUID-VkWriteDescriptorSet-descriptorType-00328 If descriptorType is  or  , the offset member of each element of  pBufferInfo must be a multiple of  ::minStorageBufferOffsetAlignment.VUID-VkWriteDescriptorSet-descriptorType-00329 If 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 / object.VUID-VkWriteDescriptorSet-descriptorType-00330 If descriptorType is  or  , the buffer member of each element of  pBufferInfo must" have been created with  set.VUID-VkWriteDescriptorSet-descriptorType-00331 If descriptorType is  or  , the buffer member of each element of  pBufferInfo must" have been created with  set.VUID-VkWriteDescriptorSet-descriptorType-00332 If 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  ::maxUniformBufferRange.VUID-VkWriteDescriptorSet-descriptorType-00333 If 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  ::maxStorageBufferRange.VUID-VkWriteDescriptorSet-descriptorType-00334 If descriptorType is  , the  that each element of pTexelBufferView was created from must have been created with  set.VUID-VkWriteDescriptorSet-descriptorType-00335 If descriptorType is  , the  that each element of pTexelBufferView was created from must have been created with  set.VUID-VkWriteDescriptorSet-descriptorType-00336 If descriptorType is  or  , the  imageView member of each element of  pImageInfo must1 have been created with the identity swizzle.VUID-VkWriteDescriptorSet-descriptorType-00337 If descriptorType is  or  , the  imageView member of each element of  pImageInfo must" have been created with  set.VUID-VkWriteDescriptorSet-descriptorType-04149 If descriptorType is  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.VUID-VkWriteDescriptorSet-descriptorType-04150 If descriptorType is  the  imageLayout member of each element of  pImageInfo must, be a member of the list given in qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesamplerCombined Image Sampler.VUID-VkWriteDescriptorSet-descriptorType-04151 If descriptorType is  the  imageLayout member of each element of  pImageInfo must, be a member of the list given in lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inputattachmentInput Attachment.VUID-VkWriteDescriptorSet-descriptorType-04152 If descriptorType is  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-storageimage Storage Image.VUID-VkWriteDescriptorSet-descriptorType-00338 If descriptorType is  , the  imageView member of each element of  pImageInfo must" have been created with  set.VUID-VkWriteDescriptorSet-descriptorType-00339 If descriptorType is  , the  imageView member of each element of  pImageInfo must" have been created with  set/VUID-VkWriteDescriptorSet-descriptorCount-030484 All consecutive bindings updated via a single )% structure, except those with a descriptorCount of zero, must have identical F.VUID-VkWriteDescriptorSet-descriptorType-02752 If descriptorType is  , then dstSet mustQ not have been allocated with a layout that included immutable samplers for  dstBinding&VUID-VkWriteDescriptorSet-dstSet-04611 If the + for dstSet at  dstBinding is &, the new active descriptor type descriptorType must! exist in the corresponding pMutableDescriptorTypeLists list for  dstBindingValid Usage (Implicit)%VUID-VkWriteDescriptorSet-sType-sType sType must be  %VUID-VkWriteDescriptorSet-pNext-pNext 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, J, or &VUID-VkWriteDescriptorSet-sType-unique The sType" value of each struct in the pNext chain must be unique2VUID-VkWriteDescriptorSet-descriptorType-parameter descriptorType must be a valid  value5VUID-VkWriteDescriptorSet-descriptorCount-arraylength descriptorCount must be greater than 0&VUID-VkWriteDescriptorSet-commonparent Both 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, 0, /, , , C, , 1*vulkankVkDescriptorSetLayoutCreateInfo - Structure specifying parameters of a newly created descriptor set layout Valid Usage2VUID-VkDescriptorSetLayoutCreateInfo-binding-00279 The +::binding% members of the elements of the  pBindings array must each have different values 0VUID-VkDescriptorSetLayoutCreateInfo-flags-00280 If flags contains  , then all elements of  pBindings must not have a descriptorType of  or 0VUID-VkDescriptorSetLayoutCreateInfo-flags-02208 If flags contains  , then all elements of  pBindings must not have a descriptorType of 0VUID-VkDescriptorSetLayoutCreateInfo-flags-00281 If flags contains  9, then the total number of elements of all bindings must$ be less than or equal to  ::maxPushDescriptors0VUID-VkDescriptorSetLayoutCreateInfo-flags-04590 If flags contains  , flags must not contain  0VUID-VkDescriptorSetLayoutCreateInfo-flags-04591 If flags contains  ,  pBindings must not have a descriptorType of 0VUID-VkDescriptorSetLayoutCreateInfo-flags-03000" If any binding has the FB bit set, flags must include 9VUID-VkDescriptorSetLayoutCreateInfo-descriptorType-03001" If any binding has the FB! bit set, then all bindings must not have descriptorType of  or 0VUID-VkDescriptorSetLayoutCreateInfo-flags-04592 If flags contains , flags must not contain  9VUID-VkDescriptorSetLayoutCreateInfo-descriptorType-04593 If any binding has a descriptorType of , then a  must be present in the pNext chain9VUID-VkDescriptorSetLayoutCreateInfo-descriptorType-04594 If a binding has a descriptorType value of  , then pImmutableSamplers must be NULL@VUID-VkDescriptorSetLayoutCreateInfo-mutableDescriptorType-04595 If $::mutableDescriptorType is not enabled,  pBindings must not contain a descriptorType of 0VUID-VkDescriptorSetLayoutCreateInfo-flags-04596 If flags contains  , $::mutableDescriptorType must be enabledValid Usage (Implicit)0VUID-VkDescriptorSetLayoutCreateInfo-sType-sType sType must be 0VUID-VkDescriptorSetLayoutCreateInfo-pNext-pNext 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 1VUID-VkDescriptorSetLayoutCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique4VUID-VkDescriptorSetLayoutCreateInfo-flags-parameter flags must be a valid combination of  values8VUID-VkDescriptorSetLayoutCreateInfo-pBindings-parameter If  bindingCount is not 0,  pBindings must( be a valid pointer to an array of  bindingCount valid + structuresSee Also+, , C, 1, 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 Usage6VUID-VkDescriptorSetLayoutBinding-descriptorType-00282 If 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 x handles6VUID-VkDescriptorSetLayoutBinding-descriptorType-04604 If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inlineUniformBlockinlineUniformBlock feature is not enabled, descriptorType must not be 6VUID-VkDescriptorSetLayoutBinding-descriptorType-02209 If descriptorType is  then descriptorCount must be a multiple of 46VUID-VkDescriptorSetLayoutBinding-descriptorType-02210 If descriptorType is  then descriptorCount must be less than or equal to ::maxInlineUniformBlockSize7VUID-VkDescriptorSetLayoutBinding-descriptorCount-00283 If descriptorCount is not 0,  stageFlags must% be a valid combination of &f values6VUID-VkDescriptorSetLayoutBinding-descriptorType-01510 If descriptorType is  and descriptorCount is not 0, then  stageFlags must be 0 or &:VUID-VkDescriptorSetLayoutBinding-pImmutableSamplers-04009' The sampler objects indicated by pImmutableSamplers must not have a  borderColor with one of the values  or 6VUID-VkDescriptorSetLayoutBinding-descriptorType-04605 If descriptorType is  , then pImmutableSamplers must be NULL.Valid Usage (Implicit):VUID-VkDescriptorSetLayoutBinding-descriptorType-parameter descriptorType must be a valid  valueSee Also*, , x, d,vulkanaVkDescriptorSetAllocateInfo - Structure specifying the allocation parameters for descriptor sets Valid Usage2VUID-VkDescriptorSetAllocateInfo-pSetLayouts-00308 Each element of  pSetLayouts must! not have been created with   set2VUID-VkDescriptorSetAllocateInfo-pSetLayouts-03044 If any element of  pSetLayouts was created with the  bit set, descriptorPool must! have been created with the  flag set2VUID-VkDescriptorSetAllocateInfo-pSetLayouts-04610 If any element of  pSetLayouts was created with the   bit set, descriptorPool must! have been created with the   flag setValid Usage (Implicit),VUID-VkDescriptorSetAllocateInfo-sType-sType sType must be  ,VUID-VkDescriptorSetAllocateInfo-pNext-pNext pNext must be NULL* or a pointer to a valid instance of -VUID-VkDescriptorSetAllocateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique9VUID-VkDescriptorSetAllocateInfo-descriptorPool-parameter descriptorPool must be a valid  handle6VUID-VkDescriptorSetAllocateInfo-pSetLayouts-parameter  pSetLayouts must( be a valid pointer to an array of descriptorSetCount valid  handles?VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-arraylength descriptorSetCount must be greater than 0-VUID-VkDescriptorSetAllocateInfo-commonparent Both of descriptorPool, and the elements of  pSetLayouts mustD have been created, allocated, or retrieved from the same See Also, , C, 1-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 X::#combinedImageSamplerDescriptorCount. Valid Usage/VUID-VkDescriptorPoolSize-descriptorCount-00302 descriptorCount must be greater than 0$VUID-VkDescriptorPoolSize-type-02218 If type is  then descriptorCount must be a multiple of 4Valid Usage (Implicit)(VUID-VkDescriptorPoolSize-type-parameter 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.If a  pPoolSizes[i]::type is , a  struct in the pNext chain can4 be used to specify which mutable descriptor types can0 be allocated from the pool. If present in the pNext chain, ::pMutableDescriptorTypeLists[i] specifies which kind of  descriptors can( be allocated from this pool entry. If  does not exist in the pNext chain, or ::pMutableDescriptorTypeLists][i] is out of range, the descriptor pool allocates enough memory to be able to allocate a ! descriptor with any supported 0 as a mutable descriptor. A mutable descriptor can5 be allocated from a pool entry if the type list in * is a subset of the type list declared in the descriptor pool, or if the pool entry is created without a descriptor type list. Valid Usage-VUID-VkDescriptorPoolCreateInfo-maxSets-00301 maxSets must be greater than 0+VUID-VkDescriptorPoolCreateInfo-flags-04607 If flags has the   bit set, then the  bit must not be set;VUID-VkDescriptorPoolCreateInfo-mutableDescriptorType-04608 If $::mutableDescriptorType is not enabled,  pPoolSizes must not contain a descriptorType of +VUID-VkDescriptorPoolCreateInfo-flags-04609 If flags has the   bit set, $::mutableDescriptorType must be enabledValid Usage (Implicit)+VUID-VkDescriptorPoolCreateInfo-sType-sType sType must be +VUID-VkDescriptorPoolCreateInfo-pNext-pNext 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 ,VUID-VkDescriptorPoolCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique/VUID-VkDescriptorPoolCreateInfo-flags-parameter flags must% be a valid combination of  values4VUID-VkDescriptorPoolCreateInfo-pPoolSizes-parameter  pPoolSizes must# be a valid pointer to an array of  poolSizeCount valid - structures9VUID-VkDescriptorPoolCreateInfo-poolSizeCount-arraylength  poolSizeCount must be greater than 0See Also, -, C, 1/vulkanBVkDescriptorImageInfo - Structure specifying descriptor image info Description Members of /B that are not used in an update (as described above) are ignored. Valid Usage*VUID-VkDescriptorImageInfo-imageView-00343  imageView must> not be 2D or 2D array image view created from a 3D image*VUID-VkDescriptorImageInfo-imageView-01976 If  imageView1 is created from a depth/stencil image, the  aspectMask used to create the  imageView must include either x or x but not both,VUID-VkDescriptorImageInfo-imageLayout-00344  imageLayout must match the actual O* 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 rules(VUID-VkDescriptorImageInfo-sampler-01564 If 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 O, and the  aspectMask of the  imageView must be x, x- or (for three-plane formats only) x:VUID-VkDescriptorImageInfo-mutableComparisonSamplers-04450 If the VK_KHR_portability_subset extension is enabled, and ::mutableComparisonSamplers is ., then sampler must" have been created with =:: compareEnable set to ..Valid Usage (Implicit)'VUID-VkDescriptorImageInfo-commonparent Both of  imageView , and sampler2 that are valid handles of non-ignored parameters mustD have been created, allocated, or retrieved from the same See AlsoO, , x, )0vulkanDVkDescriptorBufferInfo - 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 Usage(VUID-VkDescriptorBufferInfo-offset-00340 offset must be less than the size of buffer'VUID-VkDescriptorBufferInfo-range-00341 If range is not equal to , range must be greater than 0'VUID-VkDescriptorBufferInfo-range-00342 If range is not equal to , range must+ be less than or equal to the size of buffer minus offset(VUID-VkDescriptorBufferInfo-buffer-02998 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 8(VUID-VkDescriptorBufferInfo-buffer-02999 If buffer is 8, offset must be zero and range must be Valid Usage (Implicit),VUID-VkDescriptorBufferInfo-buffer-parameter If buffer is not 8, buffer must be a valid  handleSee Also, n, )1vulkanKVkCopyDescriptorSet - Structure specifying a copy descriptor set operation DescriptionIf the + for  dstBinding is  and  srcBinding is not A, the new active descriptor type becomes the descriptor type of  srcBinding . If both + for  srcBinding and  dstBinding are , the active descriptor type in each source descriptor is copied into the corresponding destination descriptor. The active descriptor type can* be different for each source descriptor.NoteThe intention is that copies to and from mutable descriptors is a simple memcpy. Copies between non-mutable and mutable descriptors are expected to require one memcpy per descriptor to handle the difference in size, but this use case with more than one descriptorCount is considered rare. Valid Usage)VUID-VkCopyDescriptorSet-srcBinding-00345  srcBinding must be a valid binding within srcSet.VUID-VkCopyDescriptorSet-srcArrayElement-00346 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)VUID-VkCopyDescriptorSet-dstBinding-00347  dstBinding must be a valid binding within dstSet.VUID-VkCopyDescriptorSet-dstArrayElement-00348 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)VUID-VkCopyDescriptorSet-dstBinding-02632 The type of  dstBinding within dstSet must be equal to the type of  srcBinding within srcSet%VUID-VkCopyDescriptorSet-srcSet-00349 If 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-consecutive)VUID-VkCopyDescriptorSet-srcBinding-02223H If the descriptor type of the descriptor set binding specified by  srcBinding is , srcArrayElement must be an integer multiple of 4)VUID-VkCopyDescriptorSet-dstBinding-02224H If the descriptor type of the descriptor set binding specified by  dstBinding is , dstArrayElement must be an integer multiple of 4)VUID-VkCopyDescriptorSet-srcBinding-02225O If the descriptor type of the descriptor set binding specified by either  srcBinding or  dstBinding is , descriptorCount must be an integer multiple of 4%VUID-VkCopyDescriptorSet-srcSet-01918 If srcSet) s layout was created with the  flag set, then dstSet s layout must+ also have been created with the  flag set%VUID-VkCopyDescriptorSet-srcSet-01919 If srcSet, s layout was created without the  flag set, then dstSet s layout must. also have been created without the  flag set%VUID-VkCopyDescriptorSet-srcSet-01920( 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%VUID-VkCopyDescriptorSet-srcSet-01921( If the descriptor pool from which srcSet, 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 set)VUID-VkCopyDescriptorSet-dstBinding-02753H If 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  dstBinding%VUID-VkCopyDescriptorSet-dstSet-04612 If + for dstSet at  dstBinding is &, the new active descriptor type must! exist in the corresponding pMutableDescriptorTypeLists list for  dstBinding4 if the new active descriptor type is not %VUID-VkCopyDescriptorSet-srcSet-04613 If + for srcSet at  srcBinding is  and the + for dstSet at  dstBinding is not <, the active descriptor type for the source descriptor must# match the descriptor type of  dstBinding%VUID-VkCopyDescriptorSet-dstSet-04614 If + for dstSet at  dstBinding is 2, and the new active descriptor type is  , the pMutableDescriptorTypeLists for  srcBinding and  dstBinding must match exactlyValid Usage (Implicit)$VUID-VkCopyDescriptorSet-sType-sType sType must be  $VUID-VkCopyDescriptorSet-pNext-pNext pNext must be NULL)VUID-VkCopyDescriptorSet-srcSet-parameter srcSet must be a valid  handle)VUID-VkCopyDescriptorSet-dstSet-parameter dstSet must be a valid  handle%VUID-VkCopyDescriptorSet-commonparent Both of dstSet , and srcSet must? have been created, allocated, or retrieved from the same See Also, C, 11xvulkanpNext is NULL6 or a pointer to a structure extending this structure.1yvulkandescriptorPool3 is the pool which the sets will be allocated from.1zvulkan pSetLayouts is a pointer to an array of descriptor set layouts, with each member specifying how the corresponding descriptor set is allocated.1|vulkanpNext is NULL6 or a pointer to a structure extending this structure.1}vulkanflags is a bitmask of 6 specifying certain supported operations on the pool.1~vulkanmaxSets/ is the maximum number of descriptor sets that can be allocated from the pool.1vulkan 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.1vulkantype is the type of descriptor.1vulkandescriptorCount< 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.1vulkanpNext is NULL6 or a pointer to a structure extending this structure.1vulkanflags is a bitmask of 8 specifying options for descriptor set layout creation.1vulkan pBindings is a pointer to an array of + structures.1vulkanbindingt is the binding number of this entry and corresponds to a resource of the same binding number in the shader stages.1vulkandescriptorType is a J specifying which type of resource descriptors are used for this binding.1vulkandescriptorCountf 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.1vulkan stageFlags member is a bitmask of &f* 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.1vulkansrcSet,  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.1vulkandstSet,  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.1vulkandescriptorCountJ 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.1vulkanpNext is NULL6 or a pointer to a structure extending this structure.1vulkandstSet- is the destination descriptor set to update.1vulkan dstBinding+ is the descriptor binding within that set.1vulkandstArrayElementQ 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.1vulkandescriptorCountD 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 d 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.1vulkandescriptorType is a , specifying the type of each descriptor in  pImageInfo,  pBufferInfo, or pTexelBufferView, as described below. If + for dstSet at  dstBinding is not equal to , descriptorType 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.1vulkan pImageInfo is a pointer to an array of // structures or is ignored, as described below.1vulkan pBufferInfo is a pointer to an array of 0/ structures or is ignored, as described below.1vulkanpTexelBufferView 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.1vulkansamplerC is a sampler handle, and is used in descriptor updates for types  and ? if the binding being updated does not use immutable samplers.1vulkan imageView is 8H or an image view handle, and is used in descriptor updates for types , , , and .1vulkan 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 .1vulkanbuffer is 8 or the buffer resource.1vulkanoffset* 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.1vulkanrangeC 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.1vulkan@vkCreateDescriptorSetLayout - Create a new descriptor set layoutValid Usage (Implicit)1VUID-vkCreateDescriptorSetLayout-device-parameter device must be a valid  handle6VUID-vkCreateDescriptorSetLayout-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid * structure5VUID-vkCreateDescriptorSetLayout-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure5VUID-vkCreateDescriptorSetLayout-pSetLayout-parameter  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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , *, 1vulkan=A convenience wrapper to make a compatible pair of calls to 1 and 1To ensure that 1 is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.1vulkanEvkDestroyDescriptorSetLayout - Destroy a descriptor set layout object Valid Usage;VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00284 If  were provided when descriptorSetLayout1 was created, a compatible set of callbacks must be provided here;VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00285 If no  were provided when descriptorSetLayout was created,  pAllocator must be NULLValid Usage (Implicit)2VUID-vkDestroyDescriptorSetLayout-device-parameter device must be a valid  handle?VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parameter If descriptorSetLayout is not 8, descriptorSetLayout must be a valid  handle6VUID-vkDestroyDescriptorSetLayout-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure<VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parent If descriptorSetLayout is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to descriptorSetLayout must be externally synchronizedSee Also, , 1vulkan9vkCreateDescriptorPool - 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),VUID-vkCreateDescriptorPool-device-parameter device must be a valid  handle1VUID-vkCreateDescriptorPool-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid . structure0VUID-vkCreateDescriptorPool-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure5VUID-vkCreateDescriptorPool-pDescriptorPool-parameter pDescriptorPool must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , ., 1vulkan=A convenience wrapper to make a compatible pair of calls to 1 and 1To ensure that 1 is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.1vulkan: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 Usage1VUID-vkDestroyDescriptorPool-descriptorPool-00303+ All submitted commands that refer to descriptorPool* (via any allocated descriptor sets) must have completed execution1VUID-vkDestroyDescriptorPool-descriptorPool-00304 If  were provided when descriptorPool1 was created, a compatible set of callbacks must be provided here1VUID-vkDestroyDescriptorPool-descriptorPool-00305 If no  were provided when descriptorPool was created,  pAllocator must be NULLValid Usage (Implicit)-VUID-vkDestroyDescriptorPool-device-parameter device must be a valid  handle5VUID-vkDestroyDescriptorPool-descriptorPool-parameter If descriptorPool is not 8, descriptorPool must be a valid  handle1VUID-vkDestroyDescriptorPool-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure2VUID-vkDestroyDescriptorPool-descriptorPool-parent If descriptorPool is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to descriptorPool must be externally synchronizedSee Also, , 1vulkan7vkResetDescriptorPool - 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/VUID-vkResetDescriptorPool-descriptorPool-00313 All uses of descriptorPool% (via any allocated descriptor sets) must have completed executionValid Usage (Implicit)+VUID-vkResetDescriptorPool-device-parameter device must be a valid  handle3VUID-vkResetDescriptorPool-descriptorPool-parameter descriptorPool must be a valid  handle,VUID-vkResetDescriptorPool-flags-zerobitmask flags must be 00VUID-vkResetDescriptorPool-descriptorPool-parent descriptorPool must1 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-successcodesSuccessFSee Also, I, 1vulkan?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 FN 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 FM 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 1b 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 1T 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 1p 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.1 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 8 and return the error.Valid Usage (Implicit).VUID-vkAllocateDescriptorSets-device-parameter device must be a valid  handle5VUID-vkAllocateDescriptorSets-pAllocateInfo-parameter  pAllocateInfo must$ be a valid pointer to a valid , structure7VUID-vkAllocateDescriptorSets-pDescriptorSets-parameter pDescriptorSets must( be a valid pointer to an array of !pAllocateInfo->descriptorSetCount  handlesKVUID-vkAllocateDescriptorSets-pAllocateInfo::descriptorSetCount-arraylength !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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?5!See Also, ,, 1vulkan=A convenience wrapper to make a compatible pair of calls to 1 and 1To ensure that 1 is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.1vulkan7vkFreeDescriptorSets - Free one or more descriptor sets DescriptionAfter calling 1, all descriptor sets in pDescriptorSets are invalid. Valid Usage/VUID-vkFreeDescriptorSets-pDescriptorSets-00309: All submitted commands that refer to any element of pDescriptorSets must have completed execution/VUID-vkFreeDescriptorSets-pDescriptorSets-00310 pDescriptorSets must# be a valid pointer to an array of descriptorSetCount % handles, each element of which must" either be a valid handle or 8.VUID-vkFreeDescriptorSets-descriptorPool-00312 descriptorPool must! have been created with the ! flagValid Usage (Implicit)*VUID-vkFreeDescriptorSets-device-parameter device must be a valid  handle2VUID-vkFreeDescriptorSets-descriptorPool-parameter descriptorPool must be a valid  handle8VUID-vkFreeDescriptorSets-descriptorSetCount-arraylength descriptorSetCount must be greater than 0/VUID-vkFreeDescriptorSets-descriptorPool-parent descriptorPool must1 have been created, allocated, or retrieved from device0VUID-vkFreeDescriptorSets-pDescriptorSets-parent Each 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-successcodesSuccessFSee Also, , 1vulkanGvkUpdateDescriptorSets - 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 1E 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 FB or F) bits set, that command buffer becomes  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleinvalid. Valid Usage&VUID-vkUpdateDescriptorSets-None-03047V Descriptor bindings updated by this command which were created without the FB or F 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),VUID-vkUpdateDescriptorSets-device-parameter device must be a valid  handle7VUID-vkUpdateDescriptorSets-pDescriptorWrites-parameter If descriptorWriteCount is not 0, pDescriptorWrites must( be a valid pointer to an array of descriptorWriteCount valid ) structures7VUID-vkUpdateDescriptorSets-pDescriptorCopies-parameter If descriptorCopyCount is not 0, pDescriptorCopies must( be a valid pointer to an array of descriptorCopyCount valid 1 structuresHost SynchronizationHost access to pDescriptorWrites [].dstSet must be externally synchronizedHost access to pDescriptorCopies [].dstSet must be externally synchronizedSee Also1, , )1vulkandevice> 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.1vulkandevice? 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.1vulkandevice8 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.1vulkandevice9 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.1vulkandevice5 is the logical device that owns the descriptor pool.vulkandescriptorPool$ is the descriptor pool to be reset.vulkanflags is reserved for future use.1vulkandevice5 is the logical device that owns the descriptor pool.vulkan pAllocateInfo is a pointer to a ,4 structure describing parameters of the allocation.1vulkandevice5 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.1vulkandevice8 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 1< structures describing the descriptor sets to copy between.i)1111111111*1111+111111,1w1x1z1y-111.1{1}1|1~1/111101111111111111I  ! 11111111111~1111111111101111/1111)1111111111111111111+111111*1111-111.1{1}1|1~1,1w1x1z1yI! !     None("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanVkPhysicalDevicePushDescriptorPropertiesKHR - 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 T 9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See AlsoC1vulkanlimits-maxPushDescriptors maxPushDescriptors, is the maximum number of descriptors that can+ be used in a descriptor set created with  set.1vulkanLvkCmdPushDescriptorSetKHR - 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  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-bindpoint-commandsbound pipeline commands with the pipeline type set by 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   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 , 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 , 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 Usage6VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-00363 pipelineBindPoint must be supported by the  commandBuffer s parent / s queue family(VUID-vkCmdPushDescriptorSetKHR-set-00364 set must be less than 9U::setLayoutCount provided when layout was created(VUID-vkCmdPushDescriptorSetKHR-set-00365 set mustx be the unique set number in the pipeline layout that uses a descriptor set layout that was created with Valid Usage (Implicit)6VUID-vkCmdPushDescriptorSetKHR-commandBuffer-parameter  commandBuffer must be a valid  handle:VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-parameter pipelineBindPoint must be a valid W value/VUID-vkCmdPushDescriptorSetKHR-layout-parameter layout must be a valid } handle:VUID-vkCmdPushDescriptorSetKHR-pDescriptorWrites-parameter pDescriptorWrites must( be a valid pointer to an array of descriptorWriteCount valid ) structures6VUID-vkCmdPushDescriptorSetKHR-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state4VUID-vkCmdPushDescriptorSetKHR-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operations?VUID-vkCmdPushDescriptorSetKHR-descriptorWriteCount-arraylength descriptorWriteCount must be greater than 0+VUID-vkCmdPushDescriptorSetKHR-commonparent Both 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 / 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, W, }, )1vulkan{vkCmdPushDescriptorSetWithTemplateKHR - Pushes descriptor updates into a command buffer using a descriptor update template Valid Usage>VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-00366 The pipelineBindPointF specified during the creation of the descriptor update template must be supported by the  commandBuffer s parent / s queue family6VUID-vkCmdPushDescriptorSetWithTemplateKHR-pData-01686 pData mustO be a valid pointer to a memory containing one or more valid instances of  ,   , or / in a layout defined by descriptorUpdateTemplate when it was created with IJValid Usage (Implicit)BVUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-parameter  commandBuffer must be a valid  handleMVUID-vkCmdPushDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parameter descriptorUpdateTemplate must be a valid  handle;VUID-vkCmdPushDescriptorSetWithTemplateKHR-layout-parameter layout must be a valid } handleBVUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state@VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operations7VUID-vkCmdPushDescriptorSetWithTemplateKHR-commonparent Each of  commandBuffer, descriptorUpdateTemplate, and layout mustD have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, , }1vulkan commandBufferA is the command buffer that the descriptors will be recorded in.vulkanpipelineBindPoint is a W indicating the type of the pipeline that will use the descriptors. There is a separate set of push descriptor bindings for each pipeline type, so binding one does not disturb the others.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.1vulkan 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. 11111111 11111111None("#%&'-./1789;=>?FHIMSUVX_dghklmqa7%)%T%S%R%Q%P%O%N%M%L%K%J%I%H%G%F%E%D%C%B%A%@%?%>%=%<%;%:%9%8%7%6%5%4%3%2%111111111111111111[11111111111111111%)%T%S%R%Q%P%O%N%M%L%K%J%I%H%G%F%E%D%C%B%A%@%?%>%=%<%;%:%9%8%7%6%5%4%3%2%1%T%S%R%Q%P%O%N%M%L%K%J%I%H%G%F%E%D%C%B%A%@%?%>%=%<%;%:%9%8%7%6%5%4%3%2%1VNone("#%&'-./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 T 9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alson, C 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)-VUID-VkDescriptorSetLayoutSupport-sType-sType sType must be -VUID-VkDescriptorSetLayoutSupport-pNext-pNext pNext must be NULL* or a pointer to a valid instance of .VUID-VkDescriptorSetLayoutSupport-sType-unique The sType" value of each struct in the pNext chain must be uniqueSee Alsop, C, 2,  2vulkanpNext is NULL6 or a pointer to a structure extending this structure.2vulkan supported- specifies whether the descriptor set layout can be created.2vulkan%extension-limits-maxPerSetDescriptors maxPerSetDescriptors 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 canP query whether a descriptor set that goes beyond this limit is supported using 2.2vulkan(extension-limits-maxMemoryAllocationSize maxMemoryAllocationSize2 is the maximum size of a memory allocation that can@ be created, even if there is more space available in the heap.2vulkanWvkGetDescriptorSetLayoutSupport - 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 / because the answer may depend on enabled features.Valid Usage (Implicit)See Also*,  , 2vulkandeviceD is the logical device that would create the descriptor set layout.5VUID-vkGetDescriptorSetLayoutSupport-device-parameter device must be a valid  handlevulkan pCreateInfo is a pointer to a *E structure specifying the state of the descriptor set layout object.:VUID-vkGetDescriptorSetLayoutSupport-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid * structure 222 222CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE22 222 222CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFENone("#%&'-./1789;=>?FHIMSUVX_dghklmq 222222222 222222222None("#%&'-./1789;=>?FHIMSUVX_dghklmqGHKG:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHMt~}|{zyxwvuNO1FEDCBA@?>=<;:98765432V 43210/.-,+*)('&%$#"!   ` FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!x{} E I H G F n o p q r     '''''''''''' ' ' '''&'&&''''efg\]^_bcd`aYZ[@ABC>?  ~ '''''''(-(.(/(0(1(2(3(4(5(6(7(8000000000000000000000000000000000   222 222 --------------------     CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE % & 0 / . - , + * ) ( ' 9 : < ; R S W V U T ` a c b l m t s r q p o n u wx~}|{zy      YZ`_^]\[+.8EHRDhijk' ' '''''(9(:(;---0000000222None("#%&'-./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 |:: 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 |:: 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 Usage0VUID-VkRenderPassBeginInfo-clearValueCount-00902 clearValueCount must1 be greater than the largest attachment index in  renderPass that specifies a loadOp (or  stencilLoadOp=, if the attachment has a depth/stencil format) of +VUID-VkRenderPassBeginInfo-renderPass-00904  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 6k( structure specified when creating  framebuffer&VUID-VkRenderPassBeginInfo-pNext-02850 If the pNext" chain does not contain  or its deviceRenderAreaCount member is equal to 0, renderArea.offset.x must be greater than or equal to 0&VUID-VkRenderPassBeginInfo-pNext-02851 If the pNext" chain does not contain  or its deviceRenderAreaCount member is equal to 0, renderArea.offset.y must be greater than or equal to 0&VUID-VkRenderPassBeginInfo-pNext-02852 If 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 6k::width the  framebuffer was created with&VUID-VkRenderPassBeginInfo-pNext-02853 If 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 6k::height the  framebuffer was created with&VUID-VkRenderPassBeginInfo-pNext-02854 If the pNext chain contains  , the offset.x member of each element of pDeviceRenderAreas must# be greater than or equal to 0&VUID-VkRenderPassBeginInfo-pNext-02855 If the pNext chain contains  , the offset.y member of each element of pDeviceRenderAreas must# be greater than or equal to 0&VUID-VkRenderPassBeginInfo-pNext-02856 If the pNext chain contains , offset.x +  offset.width of each element of pDeviceRenderAreas must be less than or equal to 6k::width the  framebuffer was created with&VUID-VkRenderPassBeginInfo-pNext-02857 If the pNext chain contains , offset.y +  offset.height of each element of pDeviceRenderAreas must be less than or equal to 6k::height the  framebuffer was created with,VUID-VkRenderPassBeginInfo-framebuffer-03207 If  framebuffer was created with a 6k::flags& value that did not include z, and the pNext chain includes a 8 structure, its attachmentCount must be zero,VUID-VkRenderPassBeginInfo-framebuffer-03208 If  framebuffer was created with a 6k::flags value that included z , the attachmentCount of a 8 structure included in the pNext chain must$ be equal to the value of gj::attachmentImageInfoCount used to create  framebuffer,VUID-VkRenderPassBeginInfo-framebuffer-02780 If  framebuffer was created with a 6k::flags value that included z, each element of the  pAttachments member of a 8 structure included in the pNext chain must$ have been created on the same / as  framebuffer and  renderPass,VUID-VkRenderPassBeginInfo-framebuffer-03209 If  framebuffer was created with a 6k::flags value that included z, each element of the  pAttachments member of a 8 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 gj::pAttachmentImageInfos used to create  framebuffer,VUID-VkRenderPassBeginInfo-framebuffer-04627 If  framebuffer was created with a 6k::flags value that included z, each element of the  pAttachments member of a 8 structure included in the pNext chain must be a / with  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-inherited-usagean inherited usage equal to the usage- member of the corresponding element of gj::pAttachmentImageInfos used to create  framebuffer,VUID-VkRenderPassBeginInfo-framebuffer-03211 If  framebuffer was created with a 6k::flags value that included z, each element of the  pAttachments member of a 8 structure included in the pNext chain must be a / with a width equal to the width2 member of the corresponding element of gj::pAttachmentImageInfos used to create  framebuffer,VUID-VkRenderPassBeginInfo-framebuffer-03212 If  framebuffer was created with a 6k::flags value that included z, each element of the  pAttachments member of a 8 structure included in the pNext chain must be a /! with a height equal to the height- member of the corresponding element of gj::pAttachmentImageInfos used to create  framebuffer,VUID-VkRenderPassBeginInfo-framebuffer-03213 If  framebuffer was created with a 6k::flags value that included z, each element of the  pAttachments member of a 8 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 gj::pAttachmentImageInfos used to create  framebuffer,VUID-VkRenderPassBeginInfo-framebuffer-03214 If  framebuffer was created with a 6k::flags value that included z, each element of the  pAttachments member of a 8 structure included in the pNext chain must be a // of an image created with a value of f}::viewFormatCount equal to the viewFormatCount2 member of the corresponding element of gj::pAttachmentImageInfos used to create  framebuffer,VUID-VkRenderPassBeginInfo-framebuffer-03215 If  framebuffer was created with a 6k::flags value that included z, each element of the  pAttachments member of a 8 structure included in the pNext chain must be a /9 of an image created with a set of elements in f}:: pViewFormats* equal to the set of elements in the  pViewFormats2 member of the corresponding element of gj::pAttachmentImageInfos used to create  framebuffer,VUID-VkRenderPassBeginInfo-framebuffer-03216 If  framebuffer was created with a 6k::flags value that included z, each element of the  pAttachments member of a 8 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  renderPass,VUID-VkRenderPassBeginInfo-framebuffer-03217 If  framebuffer was created with a 6k::flags value that included z, each element of the  pAttachments member of a 8 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  renderPass&VUID-VkRenderPassBeginInfo-pNext-02869 If the pNext chain includes |, renderArea.offset must equal (0,0)&VUID-VkRenderPassBeginInfo-pNext-02870 If the pNext chain includes |, renderArea.extent transformed by |:: transform must equal the  framebuffer dimensionsValid Usage (Implicit)&VUID-VkRenderPassBeginInfo-sType-sType sType must be &VUID-VkRenderPassBeginInfo-pNext-pNext 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 , 8, , or |'VUID-VkRenderPassBeginInfo-sType-unique The sType" value of each struct in the pNext chain must be unique/VUID-VkRenderPassBeginInfo-renderPass-parameter  renderPass must be a valid y handle0VUID-VkRenderPassBeginInfo-framebuffer-parameter  framebuffer must be a valid  handle'VUID-VkRenderPassBeginInfo-commonparent Both of  framebuffer , and  renderPass must? have been created, allocated, or retrieved from the same /See Also2, , q, y, C, 2~, cU, VvulkanLVkImageSubresourceLayers - Structure specifying an image subresource layers Valid Usage.VUID-VkImageSubresourceLayers-aspectMask-00167 If  aspectMask contains xQ , it must not contain either of x or x.VUID-VkImageSubresourceLayers-aspectMask-00168  aspectMask must not contain x.VUID-VkImageSubresourceLayers-aspectMask-02247  aspectMask must not include &VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT for any index i.VUID-VkImageSubresourceLayers-layerCount-01700  layerCount must be greater than 0Valid Usage (Implicit)2VUID-VkImageSubresourceLayers-aspectMask-parameter  aspectMask must be a valid combination of x values8VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask  aspectMask must not be 0See Also&, , , ", x, !, y,  ,  vulkan@VkImageResolve - Structure specifying an image resolve operation Valid Usage$VUID-VkImageResolve-aspectMask-00266 The  aspectMask member of srcSubresource and dstSubresource must only contain xQ$VUID-VkImageResolve-layerCount-00267 The  layerCount member of srcSubresource and dstSubresource must matchValid Usage (Implicit),VUID-VkImageResolve-srcSubresource-parameter srcSubresource must be a valid  structure,VUID-VkImageResolve-dstSubresource-parameter dstSubresource must be a valid  structureSee Alsot, , r, 2q!vulkan:VkImageCopy - Structure specifying an image copy operation DescriptionFor U@ 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 U and the other image is SO 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 UsageVUID-VkImageCopy-extent-00140 The 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)Valid Usage (Implicit))VUID-VkImageCopy-srcSubresource-parameter srcSubresource must be a valid  structure)VUID-VkImageCopy-dstSubresource-parameter dstSubresource must be a valid  structureSee Alsot, , r, 2h"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 Usage!VUID-VkImageBlit-aspectMask-00238 The  aspectMask member of srcSubresource and dstSubresource must match!VUID-VkImageBlit-layerCount-00239 The  layerCount member of srcSubresource and dstSubresource must matchValid Usage (Implicit))VUID-VkImageBlit-srcSubresource-parameter srcSubresource must be a valid  structure)VUID-VkImageBlit-dstSubresource-parameter dstSubresource must be a valid  structureSee Also, r, 2i#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 Alsoq, 2p$vulkanLVkClearDepthStencilValue - Structure specifying a clear depth stencil value Valid Usage)VUID-VkClearDepthStencilValue-depth-00022 Unless the VK_EXT_depth_range_unrestricted extension is enabled depth must be between 0.0 and 1.0 , inclusiveSee Also2, 2o%vulkan;VkClearAttachment - Structure specifying a clear attachment Description&No memory barriers are needed between 2pU and preceding or subsequent draw or attachment clear commands in the same subpass.The 2p6 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 Usage'VUID-VkClearAttachment-aspectMask-00019 If  aspectMask includes xQ , it must not include x or x'VUID-VkClearAttachment-aspectMask-00020  aspectMask must not include x'VUID-VkClearAttachment-aspectMask-02246  aspectMask must not include &VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT for any index i'VUID-VkClearAttachment-clearValue-00021  clearValue must be a valid 2 unionValid Usage (Implicit)+VUID-VkClearAttachment-aspectMask-parameter  aspectMask must% be a valid combination of x values1VUID-VkClearAttachment-aspectMask-requiredbitmask  aspectMask must not be 0See Also2, , 2p&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.LFor purpose of valid usage statements here and in related copy commands, a  blocked image is defined as:an image with a  single-plane, _422S  format, which is treated as a format with a 2 1 compressed texel block, ora compressed image. Valid Usage,VUID-VkBufferImageCopy-bufferRowLength-00195 bufferRowLength must be 0", or greater than or equal to the width member of  imageExtent.VUID-VkBufferImageCopy-bufferImageHeight-00196 bufferImageHeight must be 0", or greater than or equal to the height member of  imageExtent'VUID-VkBufferImageCopy-aspectMask-00212 The  aspectMask member of imageSubresource must only have a single bit setValid Usage (Implicit)1VUID-VkBufferImageCopy-imageSubresource-parameter imageSubresource must be a valid  structureSee Alson, t, , r, 2j, 2k'vulkan;VkBufferCopy - Structure specifying a buffer copy operation Valid UsageVUID-VkBufferCopy-size-01988 The size must be greater than 0See Alson, 2g2#vulkan aspectMask^ is a mask selecting the color, depth and/or stencil aspects of the attachment to be cleared.2$vulkancolorAttachment is only meaningful if xQ is set in  aspectMask&, in which case it is an index to the pColorAttachments array in the 6O structure of the current subpass which selects the color attachment to clear.2%vulkan 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.2'vulkandepth 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.2(vulkanstencil 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.2*vulkanpNext is NULL6 or a pointer to a structure extending this structure.2+vulkan renderPass, is the render pass to begin an instance of.2,vulkan framebufferS is the framebuffer containing the attachments that are used with the render pass.2-vulkan renderAreai is the render area that is affected by the render pass instance, and is described in more detail below.2.vulkan pClearValues is a pointer to an array of clearValueCount 2V 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.20vulkansrcSubresource 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.21vulkan srcOffset and  dstOffset select the initial x, y, and zP offsets in texels of the sub-regions of the source and destination image data.24vulkanextent: is the size in texels of the source image to resolve in width, height and depth.26vulkan bufferOffsetg is the offset in bytes from the start of the buffer object where the image data is copied from or to.27vulkanbufferRowLength 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.29vulkanimageSubresource is a n used to specify the specific image subresources of the image used for the source or destination image data.2:vulkan imageOffset selects the initial x, y, zN offsets in texels of the sub-region of the source or destination image data.2;vulkan imageExtent/ is the size in texels of the image to copy in width, height and depth.2=vulkansrcSubresource! is the subresource to blit from.2>vulkan srcOffsets" is a pointer to an array of two r? structures specifying the bounds of the source region within srcSubresource.2?vulkandstSubresource! is the subresource to blit into.2@vulkan dstOffsets" is a pointer to an array of two rD structures specifying the bounds of the destination region within dstSubresource.2BvulkansrcSubresource and dstSubresource are { structures specifying the image subresources of the images used for the source and destination image data, respectively.2Cvulkan srcOffset and  dstOffset select the initial x, y, and zP offsets in texels of the sub-regions of the source and destination image data.2Fvulkanextent/ is the size in texels of the image to copy in width, height and depth.2Hvulkan srcOffset4 is the starting offset in bytes from the start of  srcBuffer.2Ivulkan dstOffset4 is the starting offset in bytes from the start of  dstBuffer.2Jvulkansize is the number of bytes to copy.2Lvulkan aspectMask is a combination of xB, selecting the color, depth and/or stencil aspects to be copied.2MvulkanmipLevel" is the mipmap level to copy from.2NvulkanbaseArrayLayer and  layerCount6 are the starting layer and number of layers to copy.2Qvulkanrect- is the two-dimensional region to be cleared.2RvulkanbaseArrayLayer" is the first layer to be cleared.2Svulkan layerCount" is the number of layers to clear.2Tvulkan>vkCmdBindPipeline - Bind a pipeline object to a command buffer DescriptionOnce bound, a pipeline binding affects subsequent commands that interact with the given pipeline type in the command buffer until a different pipeline of the same type is bound to the bind point. Commands that do not interact with the given pipeline type must( not be affected by the pipeline state.The pipeline bound to ( controls the behavior of all  Vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dispatchdispatching commands.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 w and . Valid Usage.VUID-vkCmdBindPipeline-pipelineBindPoint-00777 If pipelineBindPoint is  , the / that  commandBuffer was allocated from must support compute operations .VUID-vkCmdBindPipeline-pipelineBindPoint-00778 If pipelineBindPoint is  , the / that  commandBuffer was allocated from must support graphics operations.VUID-vkCmdBindPipeline-pipelineBindPoint-00779 If pipelineBindPoint is , pipeline must be a compute pipeline.VUID-vkCmdBindPipeline-pipelineBindPoint-00780 If pipelineBindPoint is , pipeline must be a graphics pipeline%VUID-vkCmdBindPipeline-pipeline-00781 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 pipeline4VUID-vkCmdBindPipeline-variableSampleLocations-01525 If ::variableSampleLocations is ., and pipeline1 is a graphics pipeline created with a _ structure having its sampleLocationsEnable member set to . but without 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!VUID-vkCmdBindPipeline-None-02323 This command must7 not be recorded when transform feedback is active.VUID-vkCmdBindPipeline-pipelineBindPoint-02391 If pipelineBindPoint is  , the / that  commandBuffer was allocated from must support compute operations.VUID-vkCmdBindPipeline-pipelineBindPoint-02392 If pipelineBindPoint is  , the pipeline must be a ray tracing pipeline%VUID-vkCmdBindPipeline-pipeline-03382 The pipeline must& not have been created with j setValid Usage (Implicit).VUID-vkCmdBindPipeline-commandBuffer-parameter  commandBuffer must be a valid  handle2VUID-vkCmdBindPipeline-pipelineBindPoint-parameter pipelineBindPoint must be a valid W value)VUID-vkCmdBindPipeline-pipeline-parameter pipeline must be a valid  handle.VUID-vkCmdBindPipeline-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state,VUID-vkCmdBindPipeline-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operations#VUID-vkCmdBindPipeline-commonparent Both 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 / 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, , W2Uvulkan7vkCmdSetViewport - 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)VUID-vkCmdSetViewport-firstViewport-01223 The sum of  firstViewport and  viewportCount must be between 1 and  :: maxViewports, inclusive)VUID-vkCmdSetViewport-firstViewport-01224 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)VUID-vkCmdSetViewport-viewportCount-01225 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)-VUID-vkCmdSetViewport-commandBuffer-parameter  commandBuffer must be a valid  handle*VUID-vkCmdSetViewport-pViewports-parameter  pViewports must( be a valid pointer to an array of  viewportCount valid  structures-VUID-vkCmdSetViewport-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state+VUID-vkCmdSetViewport-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations/VUID-vkCmdSetViewport-viewportCount-arraylength  viewportCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, 2VvulkanHvkCmdSetScissor - 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  set in 7L::pDynamicStates. Valid Usage'VUID-vkCmdSetScissor-firstScissor-00592 The sum of  firstScissor and  scissorCount must be between 1 and  :: maxViewports, inclusive'VUID-vkCmdSetScissor-firstScissor-00593 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'VUID-vkCmdSetScissor-scissorCount-00594 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 1VUID-vkCmdSetScissor-x-00595 The x and y members of offset member of any element of  pScissors must" be greater than or equal to 0!VUID-vkCmdSetScissor-offset-00596 Evaluation of (offset.x +  extent.width) mustF not cause a signed integer addition overflow for any element of  pScissors!VUID-vkCmdSetScissor-offset-00597 Evaluation of (offset.y +  extent.height) mustF not cause a signed integer addition overflow for any element of  pScissorsValid Usage (Implicit),VUID-vkCmdSetScissor-commandBuffer-parameter  commandBuffer must be a valid  handle(VUID-vkCmdSetScissor-pScissors-parameter  pScissors must( be a valid pointer to an array of  scissorCount q structures,VUID-vkCmdSetScissor-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state*VUID-vkCmdSetScissor-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations-VUID-vkCmdSetScissor-scissorCount-arraylength  scissorCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, q2Wvulkan4vkCmdSetLineWidth - Set the dynamic line width state Valid Usage&VUID-vkCmdSetLineWidth-lineWidth-00788 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).VUID-vkCmdSetLineWidth-commandBuffer-parameter  commandBuffer must be a valid  handle.VUID-vkCmdSetLineWidth-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state,VUID-vkCmdSetLineWidth-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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 Also2Xvulkan4vkCmdSetDepthBias - 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 the minimum resolvable difference 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).wThe minimum resolvable difference r is a 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. Its value is implementation dependent but must be at most r = 2 2-nfor an n-bit 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 _8 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 Also2Yvulkan:vkCmdSetBlendConstants - Set the values of blend constantsValid Usage (Implicit)3VUID-vkCmdSetBlendConstants-commandBuffer-parameter  commandBuffer must be a valid  handle3VUID-vkCmdSetBlendConstants-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state1VUID-vkCmdSetBlendConstants-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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 Also2ZvulkanLvkCmdSetDepthBounds - 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  set in 7L::pDynamicStates. Valid Usage-VUID-vkCmdSetDepthBounds-minDepthBounds-00600 Unless the VK_EXT_depth_range_unrestricted extension is enabled minDepthBounds must be between 0.0 and 1.0 , inclusive-VUID-vkCmdSetDepthBounds-maxDepthBounds-00601 Unless the VK_EXT_depth_range_unrestricted extension is enabled maxDepthBounds must be between 0.0 and 1.0 , inclusiveValid Usage (Implicit)0VUID-vkCmdSetDepthBounds-commandBuffer-parameter  commandBuffer must be a valid  handle0VUID-vkCmdSetDepthBounds-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state.VUID-vkCmdSetDepthBounds-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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 Also2[vulkanGvkCmdSetStencilCompareMask - Set the stencil compare mask dynamic state DescriptionZThis command sets the state for a given draw when the graphics pipeline is created with  set in 7L::pDynamicStates.Valid Usage (Implicit)7VUID-vkCmdSetStencilCompareMask-commandBuffer-parameter  commandBuffer must be a valid  handle2VUID-vkCmdSetStencilCompareMask-faceMask-parameter faceMask must be a valid combination of e values8VUID-vkCmdSetStencilCompareMask-faceMask-requiredbitmask faceMask must not be 07VUID-vkCmdSetStencilCompareMask-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state5VUID-vkCmdSetStencilCompareMask-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, f2\vulkanCvkCmdSetStencilWriteMask - Set the stencil write mask dynamic state DescriptionZThis command sets the state for a given draw when the graphics pipeline is created with  set in 7L::pDynamicStates.Valid Usage (Implicit)5VUID-vkCmdSetStencilWriteMask-commandBuffer-parameter  commandBuffer must be a valid  handle0VUID-vkCmdSetStencilWriteMask-faceMask-parameter faceMask must% be a valid combination of e values6VUID-vkCmdSetStencilWriteMask-faceMask-requiredbitmask faceMask must not be 05VUID-vkCmdSetStencilWriteMask-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state3VUID-vkCmdSetStencilWriteMask-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, f2]vulkanBvkCmdSetStencilReference - Set the stencil reference dynamic state DescriptionZThis command sets the state for a given draw when the graphics pipeline is created with  set in 7L::pDynamicStates.Valid Usage (Implicit)5VUID-vkCmdSetStencilReference-commandBuffer-parameter  commandBuffer must be a valid  handle0VUID-vkCmdSetStencilReference-faceMask-parameter faceMask must% be a valid combination of e values6VUID-vkCmdSetStencilReference-faceMask-requiredbitmask faceMask must not be 05VUID-vkCmdSetStencilReference-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state3VUID-vkCmdSetStencilReference-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, f2^vulkanCvkCmdBindDescriptorSets - Binds descriptor sets to a command buffer Description2^ causes the sets numbered [firstSet.. firstSet+descriptorSetCount#-1] to use the bindings stored in pDescriptorSets*[0..descriptorSetCount-1] for subsequent  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-bindpoint-commandsbound pipeline commands set by pipelineBindPointP. Any bindings that were previously applied via these sets are no longer valid.Once bound, a descriptor set affects rendering of subsequent commands that interact with the given pipeline type in the command buffer until either a different set is bound to the same set number, or 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 must: also be compatible with the pipeline used in subsequent  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-bindpoint-commandsbound pipeline commands. with that pipeline type, 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 2^ may$ be consumed at the following times:.For descriptor bindings created with the FB 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 2^Z. Once all pending uses have completed, it is legal to update and reuse a descriptor set. Valid Usage2VUID-vkCmdBindDescriptorSets-pDescriptorSets-00358 Each 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 pDescriptorSets5VUID-vkCmdBindDescriptorSets-dynamicOffsetCount-00359 dynamicOffsetCount must= be equal to the total number of dynamic descriptors in pDescriptorSets+VUID-vkCmdBindDescriptorSets-firstSet-00360 The sum of firstSet and descriptorSetCount must be less than or equal to 9U::setLayoutCount provided when layout was created4VUID-vkCmdBindDescriptorSets-pipelineBindPoint-00361 pipelineBindPoint must be supported by the  commandBuffer s parent / s queue family2VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01971 Each element of pDynamicOffsets? which corresponds to a descriptor binding with type  must be a multiple of  ::minUniformBufferOffsetAlignment2VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01972 Each element of pDynamicOffsets? which corresponds to a descriptor binding with type  must be a multiple of  ::minStorageBufferOffsetAlignment2VUID-vkCmdBindDescriptorSets-pDescriptorSets-01979< For each dynamic uniform or storage buffer binding in pDescriptorSets\, the sum of the effective offset, as defined above, and the range of the binding must0 be less than or equal to the size of the buffer2VUID-vkCmdBindDescriptorSets-pDescriptorSets-04616 Each element of pDescriptorSets must% not have been allocated from a / with the  flag setValid Usage (Implicit)4VUID-vkCmdBindDescriptorSets-commandBuffer-parameter  commandBuffer must be a valid  handle8VUID-vkCmdBindDescriptorSets-pipelineBindPoint-parameter pipelineBindPoint must be a valid W value-VUID-vkCmdBindDescriptorSets-layout-parameter layout must be a valid } handle6VUID-vkCmdBindDescriptorSets-pDescriptorSets-parameter pDescriptorSets must( be a valid pointer to an array of descriptorSetCount valid  handles6VUID-vkCmdBindDescriptorSets-pDynamicOffsets-parameter If dynamicOffsetCount is not 0, pDynamicOffsets must( be a valid pointer to an array of dynamicOffsetCount uint32_t values4VUID-vkCmdBindDescriptorSets-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state2VUID-vkCmdBindDescriptorSets-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operations;VUID-vkCmdBindDescriptorSets-descriptorSetCount-arraylength descriptorSetCount must be greater than 0)VUID-vkCmdBindDescriptorSets-commonparent Each of  commandBuffer, layout, and the elements of pDescriptorSets mustD have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, , W, }2_vulkan?vkCmdBindIndexBuffer - Bind an index buffer to a command buffer Valid Usage&VUID-vkCmdBindIndexBuffer-offset-00431 offset must be less than the size of buffer&VUID-vkCmdBindIndexBuffer-offset-00432 The sum of offset& and the address of the range of / object that is backing buffer, must- be a multiple of the type indicated by  indexType&VUID-vkCmdBindIndexBuffer-buffer-00433 buffer must& have been created with the   flag&VUID-vkCmdBindIndexBuffer-buffer-00434 If buffer is non-sparse then it must7 be bound completely and contiguously to a single / object)VUID-vkCmdBindIndexBuffer-indexType-02507  indexType must not be )VUID-vkCmdBindIndexBuffer-indexType-02765 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)1VUID-vkCmdBindIndexBuffer-commandBuffer-parameter  commandBuffer must be a valid  handle*VUID-vkCmdBindIndexBuffer-buffer-parameter buffer must be a valid  handle-VUID-vkCmdBindIndexBuffer-indexType-parameter  indexType must be a valid T value1VUID-vkCmdBindIndexBuffer-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state/VUID-vkCmdBindIndexBuffer-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations&VUID-vkCmdBindIndexBuffer-commonparent Both 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 / 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, T2`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 8, and canh be used by the vertex shader. If a vertex input attribute is bound to a vertex input binding that is 8c, 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.VUID-vkCmdBindVertexBuffers-firstBinding-00624  firstBinding must be less than  ::maxVertexInputBindings.VUID-vkCmdBindVertexBuffers-firstBinding-00625 The sum of  firstBinding and  bindingCount must be less than or equal to  ::maxVertexInputBindings*VUID-vkCmdBindVertexBuffers-pOffsets-00626 All elements of pOffsets must< be less than the size of the corresponding element in pBuffers*VUID-vkCmdBindVertexBuffers-pBuffers-00627 All elements of pBuffers must! have been created with the   flag*VUID-vkCmdBindVertexBuffers-pBuffers-00628 Each element of pBuffers that is non-sparse must7 be bound completely and contiguously to a single / object*VUID-vkCmdBindVertexBuffers-pBuffers-04001 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 8*VUID-vkCmdBindVertexBuffers-pBuffers-04002 If an element of pBuffers is 8), then the corresponding element of pOffsets must be zeroValid Usage (Implicit)3VUID-vkCmdBindVertexBuffers-commandBuffer-parameter  commandBuffer must be a valid  handle.VUID-vkCmdBindVertexBuffers-pBuffers-parameter pBuffers must( be a valid pointer to an array of  bindingCount valid or 8  handles.VUID-vkCmdBindVertexBuffers-pOffsets-parameter pOffsets must( be a valid pointer to an array of  bindingCount n values3VUID-vkCmdBindVertexBuffers-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state1VUID-vkCmdBindVertexBuffers-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations4VUID-vkCmdBindVertexBuffers-bindingCount-arraylength  bindingCount must be greater than 0(VUID-vkCmdBindVertexBuffers-commonparent Both 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 / 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, , n2avulkanvkCmdDraw - 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 UsageVUID-vkCmdDraw-magFilter-04553 If a / created with  magFilter or  minFilter equal to c and  compareEnable equal to . is used to sample a /> 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 {'3VUID-vkCmdDraw-mipmapMode-04770 If a / created with  mipmapMode equal to 8 and  compareEnable equal to . is used to sample a /> 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 {'VUID-vkCmdDraw-None-02691 If a /g 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 {xVUID-vkCmdDraw-None-02692 If 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  VUID-vkCmdDraw-filterCubic-02694 Any / being sampled with " as a result of this command must have a tyE and format that supports cubic filtering, as specified by f:: filterCubic returned by T&VUID-vkCmdDraw-filterCubicMinmax-02695 Any / being sampled with + with a reduction mode of either +z or +{" as a result of this command must have a tyi and format that supports cubic filtering together with minmax filtering, as specified by f::filterCubicMinmax returned by TVUID-vkCmdDraw-flags-02696 Any  created with a 0::flags containing * sampled as a result of this command must only be sampled using a 9| of 9}VUID-vkCmdDraw-None-02697 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 n. 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???VUID-vkCmdDraw-None-02698< For each push constant that is statically used by the X bound to the pipeline bind point used by this command, a push constant value must= 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???VUID-vkCmdDraw-None-02699> Descriptors in each bound descriptor set, specified via 2^, must2 be valid if they are statically used by the ; bound to the pipeline bind point used by this commandVUID-vkCmdDraw-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command"VUID-vkCmdDraw-commandBuffer-02701 If 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 dynamicVUID-vkCmdDraw-None-02859 There musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the f object bound to the pipeline bind point used by this command, since that pipeline was boundVUID-vkCmdDraw-None-02702 If the S object bound to the pipeline bind point used by this command accesses a /> object that uses unnormalized coordinates, that sampler must% not be used to sample from any  with a / of the type t~, t, t, t or t, in any shader stageVUID-vkCmdDraw-None-02703 If the S object bound to the pipeline bind point used by this command accesses 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 stageVUID-vkCmdDraw-None-02704 If the S object bound to the pipeline bind point used by this command accesses a /> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample*Z instructions that includes a LOD bias or any offset values, in any shader stageVUID-vkCmdDraw-None-02705 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 pointVUID-vkCmdDraw-None-02706 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 point"VUID-vkCmdDraw-commandBuffer-02707 If  commandBufferJ 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 resourceVUID-vkCmdDraw-None-04115 If 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.!VUID-vkCmdDraw-OpImageWrite-04469 If a / is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction mustC have at least as many components as the buffer view s format. VUID-vkCmdDraw-SampledType-04470 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64. VUID-vkCmdDraw-SampledType-04471 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32. VUID-vkCmdDraw-SampledType-04472 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64. VUID-vkCmdDraw-SampledType-04473 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.,VUID-vkCmdDraw-sparseImageInt64Atomics-04474 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.,VUID-vkCmdDraw-sparseImageInt64Atomics-04475 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.VUID-vkCmdDraw-renderPass-02684 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 7r, structure specified when creating the  bound to VUID-vkCmdDraw-subpass-026853 The subpass index of the current render pass must be equal to the subpass member of the 7r, structure specified when creating the  bound to VUID-vkCmdDraw-None-026869 Every input attachment used by the current subpass must. be bound to the pipeline via a descriptor setVUID-vkCmdDraw-None-04584H Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass chapter.VUID-vkCmdDraw-maxMultiviewInstanceIndex-02688p If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to W::maxMultiviewInstanceIndex*VUID-vkCmdDraw-sampleLocationsEnable-02689; If 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"VUID-vkCmdDraw-viewportCount-03417E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the ' dynamic state enabled, then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the 7h:: scissorCount of the pipeline!VUID-vkCmdDraw-scissorCount-03418E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the ' dynamic state enabled, then  mustY have been called in the current command buffer prior to this draw command, and the  scissorCount parameter of  must match the 7h:: viewportCount of the pipeline"VUID-vkCmdDraw-viewportCount-03419J If the bound graphics pipeline state was created with both the  and , 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 "VUID-vkCmdDraw-viewportCount-04137E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the > dynamic state enabled, then the bound graphics pipeline must" have been created with j:: viewportCount greater or equal to the  viewportCount) parameter in the last call to "VUID-vkCmdDraw-viewportCount-04138E If the bound graphics pipeline state was created with the  and & dynamic states enabled then the  viewportCount) parameter in the last call to  must! be greater than or equal to the  viewportCount) parameter in the last call to "VUID-vkCmdDraw-viewportCount-04139E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the > dynamic state enabled, then the bound graphics pipeline must" have been created with g:: viewportCount greater or equal to the  viewportCount) parameter in the last call to "VUID-vkCmdDraw-viewportCount-04140E If the bound graphics pipeline state was created with the  and & dynamic states enabled then the  viewportCount) parameter in the last call to  must! be greater than or equal to the  viewportCount) parameter in the last call to 0VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04141E If the bound graphics pipeline state was created with the 4 dynamic state enabled and an instance of i chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with i:: viewportCount greater or equal to the  viewportCount) parameter in the last call to 0VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04142E If the bound graphics pipeline state was created with the 4 dynamic state enabled and an instance of f chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with f::exclusiveScissorCount greater or equal to the  viewportCount) parameter in the last call to &VUID-vkCmdDraw-primitiveTopology-03420E If the bound graphics pipeline state was created with the & dynamic state enabled then o mustY have been called in the current command buffer prior to this draw command, and the primitiveTopology parameter of o 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 7T::topology stateFVUID-vkCmdDraw-primitiveFragmentShadingRateWithMultipleViewports-04552 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewportsY limit is not supported, the bound graphics pipeline was created with the k dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR built-in, then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must be 1 VUID-vkCmdDraw-blendEnable-04727 If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features do not contain {, then the  blendEnable1 member of the corresponding element of the  pAttachments member of pColorBlendState must be .)VUID-vkCmdDraw-rasterizationSamples-04740X If rasterization is not disabled in the bound graphics pipeline, and neither the @ nor the # extensions are enabled, then 7W::rasterizationSamples@ mustO be the same as the current subpass color and/or depth/stencil attachments"VUID-vkCmdDraw-commandBuffer-02712 If  commandBufferI 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 resource"VUID-vkCmdDraw-commandBuffer-02713 If  commandBufferz 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"VUID-vkCmdDraw-commandBuffer-04617) If any of the shader stages of the J bound to the pipeline bind point used by this command uses the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR capability, then  commandBuffer must' not be a protected command bufferVUID-vkCmdDraw-None-04007 All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must have either valid or 8 buffers boundVUID-vkCmdDraw-None-04008 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 8VUID-vkCmdDraw-None-02721D For a given vertex buffer binding, any attribute data fetched musta 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)&VUID-vkCmdDraw-commandBuffer-parameter  commandBuffer must be a valid  handle&VUID-vkCmdDraw-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state$VUID-vkCmdDraw-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsVUID-vkCmdDraw-renderpass This command must5 only be called inside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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 Also2bvulkan>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 2_:: 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 2_ 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 Usage%VUID-vkCmdDrawIndexed-magFilter-04553 If a / created with  magFilter or  minFilter equal to c and  compareEnable equal to . is used to sample a /> 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 {'4&VUID-vkCmdDrawIndexed-mipmapMode-04770 If a / created with  mipmapMode equal to 8 and  compareEnable equal to . is used to sample a /> 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 {' VUID-vkCmdDrawIndexed-None-02691 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 {x VUID-vkCmdDrawIndexed-None-02692 If 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 'VUID-vkCmdDrawIndexed-filterCubic-02694 Any / being sampled with " as a result of this command must have a tyE and format that supports cubic filtering, as specified by f:: filterCubic returned by T-VUID-vkCmdDrawIndexed-filterCubicMinmax-02695 Any / being sampled with + with a reduction mode of either +z or +{" as a result of this command must have a tyi and format that supports cubic filtering together with minmax filtering, as specified by f::filterCubicMinmax returned by T!VUID-vkCmdDrawIndexed-flags-02696 Any  created with a 0::flags containing * sampled as a result of this command must only be sampled using a 9| of 9} VUID-vkCmdDrawIndexed-None-02697 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 n. 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??? VUID-vkCmdDrawIndexed-None-02698< For each push constant that is statically used by the X bound to the pipeline bind point used by this command, a push constant value must= 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??? VUID-vkCmdDrawIndexed-None-02699> Descriptors in each bound descriptor set, specified via 2^, must7 be valid if they are statically used by the ; bound to the pipeline bind point used by this command VUID-vkCmdDrawIndexed-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command)VUID-vkCmdDrawIndexed-commandBuffer-02701 If 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 dynamic VUID-vkCmdDrawIndexed-None-02859 There musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the f object bound to the pipeline bind point used by this command, since that pipeline was bound VUID-vkCmdDrawIndexed-None-02702 If the S object bound to the pipeline bind point used by this command accesses a /> object that uses unnormalized coordinates, that sampler must% not be used to sample from any  with a / of the type t~, t, t, t or t, in any shader stage VUID-vkCmdDrawIndexed-None-02703 If the S object bound to the pipeline bind point used by this command accesses 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 stage VUID-vkCmdDrawIndexed-None-02704 If the S object bound to the pipeline bind point used by this command accesses 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 VUID-vkCmdDrawIndexed-None-02705 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 VUID-vkCmdDrawIndexed-None-02706 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 point)VUID-vkCmdDrawIndexed-commandBuffer-02707 If  commandBufferJ 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 resource VUID-vkCmdDrawIndexed-None-04115 If 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.(VUID-vkCmdDrawIndexed-OpImageWrite-04469 If a / is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction mustC have at least as many components as the buffer view s format.'VUID-vkCmdDrawIndexed-SampledType-04470 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.'VUID-vkCmdDrawIndexed-SampledType-04471 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.'VUID-vkCmdDrawIndexed-SampledType-04472 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.'VUID-vkCmdDrawIndexed-SampledType-04473 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.3VUID-vkCmdDrawIndexed-sparseImageInt64Atomics-04474 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.3VUID-vkCmdDrawIndexed-sparseImageInt64Atomics-04475 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.&VUID-vkCmdDrawIndexed-renderPass-02684 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 7r, structure specified when creating the  bound to #VUID-vkCmdDrawIndexed-subpass-026853 The subpass index of the current render pass must be equal to the subpass member of the 7r, structure specified when creating the  bound to  VUID-vkCmdDrawIndexed-None-026869 Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor set VUID-vkCmdDrawIndexed-None-04584H Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass chapter5VUID-vkCmdDrawIndexed-maxMultiviewInstanceIndex-02688p If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to W::maxMultiviewInstanceIndex1VUID-vkCmdDrawIndexed-sampleLocationsEnable-02689; If 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)VUID-vkCmdDrawIndexed-viewportCount-03417E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the ' dynamic state enabled, then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the 7h:: scissorCount of the pipeline(VUID-vkCmdDrawIndexed-scissorCount-03418E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the ' dynamic state enabled, then  mustY have been called in the current command buffer prior to this draw command, and the  scissorCount parameter of  must match the 7h:: viewportCount of the pipeline)VUID-vkCmdDrawIndexed-viewportCount-03419J If the bound graphics pipeline state was created with both the  and , 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 )VUID-vkCmdDrawIndexed-viewportCount-04137E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the > dynamic state enabled, then the bound graphics pipeline must" have been created with j:: viewportCount greater or equal to the  viewportCount) parameter in the last call to )VUID-vkCmdDrawIndexed-viewportCount-04138E If the bound graphics pipeline state was created with the  and & dynamic states enabled then the  viewportCount) parameter in the last call to  must! be greater than or equal to the  viewportCount) parameter in the last call to )VUID-vkCmdDrawIndexed-viewportCount-04139E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the > dynamic state enabled, then the bound graphics pipeline must" have been created with g:: viewportCount greater or equal to the  viewportCount) parameter in the last call to )VUID-vkCmdDrawIndexed-viewportCount-04140E If the bound graphics pipeline state was created with the  and & dynamic states enabled then the  viewportCount) parameter in the last call to  must! be greater than or equal to the  viewportCount) parameter in the last call to 7VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04141E If the bound graphics pipeline state was created with the 4 dynamic state enabled and an instance of i chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with i:: viewportCount greater or equal to the  viewportCount) parameter in the last call to 7VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04142E If the bound graphics pipeline state was created with the 4 dynamic state enabled and an instance of f chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with f::exclusiveScissorCount greater or equal to the  viewportCount) parameter in the last call to -VUID-vkCmdDrawIndexed-primitiveTopology-03420E If the bound graphics pipeline state was created with the & dynamic state enabled then o mustY have been called in the current command buffer prior to this draw command, and the primitiveTopology parameter of o 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 7T::topology stateMVUID-vkCmdDrawIndexed-primitiveFragmentShadingRateWithMultipleViewports-04552 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewportsY limit is not supported, the bound graphics pipeline was created with the k dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR built-in, then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must be 1'VUID-vkCmdDrawIndexed-blendEnable-04727 If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features do not contain {, then the  blendEnable1 member of the corresponding element of the  pAttachments member of pColorBlendState must be .0VUID-vkCmdDrawIndexed-rasterizationSamples-04740X If rasterization is not disabled in the bound graphics pipeline, and neither the @ nor the # extensions are enabled, then 7W::rasterizationSamples@ mustO be the same as the current subpass color and/or depth/stencil attachments)VUID-vkCmdDrawIndexed-commandBuffer-02712 If  commandBufferI 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 resource)VUID-vkCmdDrawIndexed-commandBuffer-02713 If  commandBufferz 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)VUID-vkCmdDrawIndexed-commandBuffer-04617) If any of the shader stages of the J bound to the pipeline bind point used by this command uses the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR capability, then  commandBuffer must' not be a protected command buffer VUID-vkCmdDrawIndexed-None-04007 All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must have either valid or 8 buffers bound VUID-vkCmdDrawIndexed-None-04008 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 8 VUID-vkCmdDrawIndexed-None-02721D For a given vertex buffer binding, any attribute data fetched musta 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???%VUID-vkCmdDrawIndexed-indexSize-00463 ( indexSize ( firstIndex +  indexCount) + offset) mustH 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 2_Valid Usage (Implicit)-VUID-vkCmdDrawIndexed-commandBuffer-parameter  commandBuffer must be a valid  handle-VUID-vkCmdDrawIndexed-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state+VUID-vkCmdDrawIndexed-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations VUID-vkCmdDrawIndexed-renderpass This command must5 only be called inside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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 Also2cvulkan@vkCmdDrawIndirect - Issue an indirect draw into a command buffer Description2c behaves similarly to 2aU 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 5 structures. If  drawCount is less than or equal to one, stride is ignored. Valid Usage&VUID-vkCmdDrawIndirect-magFilter-04553 If a / created with  magFilter or  minFilter equal to c and  compareEnable equal to . is used to sample a /> 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 {':'VUID-vkCmdDrawIndirect-mipmapMode-04770 If a / created with  mipmapMode equal to 8 and  compareEnable equal to . is used to sample a /> 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 {'!VUID-vkCmdDrawIndirect-None-02691 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 {x!VUID-vkCmdDrawIndirect-None-02692 If 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 (VUID-vkCmdDrawIndirect-filterCubic-02694 Any / being sampled with " as a result of this command must have a tyE and format that supports cubic filtering, as specified by f:: filterCubic returned by T.VUID-vkCmdDrawIndirect-filterCubicMinmax-02695 Any / being sampled with + with a reduction mode of either +z or +{" as a result of this command must have a tyi and format that supports cubic filtering together with minmax filtering, as specified by f::filterCubicMinmax returned by T"VUID-vkCmdDrawIndirect-flags-02696 Any  created with a 0::flags containing * sampled as a result of this command must only be sampled using a 9| of 9}!VUID-vkCmdDrawIndirect-None-02697 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 n. 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???!VUID-vkCmdDrawIndirect-None-02698< For each push constant that is statically used by the X bound to the pipeline bind point used by this command, a push constant value must= 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???!VUID-vkCmdDrawIndirect-None-02699> Descriptors in each bound descriptor set, specified via 2^, must7 be valid if they are statically used by the ; bound to the pipeline bind point used by this command!VUID-vkCmdDrawIndirect-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command*VUID-vkCmdDrawIndirect-commandBuffer-02701 If 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 dynamic!VUID-vkCmdDrawIndirect-None-02859 There musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the f object bound to the pipeline bind point used by this command, since that pipeline was bound!VUID-vkCmdDrawIndirect-None-02702 If the S object bound to the pipeline bind point used by this command accesses a /> object that uses unnormalized coordinates, that sampler must% not be used to sample from any  with a / of the type t~, t, t, t or t, in any shader stage!VUID-vkCmdDrawIndirect-None-02703 If the S object bound to the pipeline bind point used by this command accesses 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 stage!VUID-vkCmdDrawIndirect-None-02704 If the S object bound to the pipeline bind point used by this command accesses 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!VUID-vkCmdDrawIndirect-None-02705 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!VUID-vkCmdDrawIndirect-None-02706 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 point*VUID-vkCmdDrawIndirect-commandBuffer-02707 If  commandBufferJ 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 resource!VUID-vkCmdDrawIndirect-None-04115 If 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.)VUID-vkCmdDrawIndirect-OpImageWrite-04469 If a / is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction mustC have at least as many components as the buffer view s format.(VUID-vkCmdDrawIndirect-SampledType-04470 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.(VUID-vkCmdDrawIndirect-SampledType-04471 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.(VUID-vkCmdDrawIndirect-SampledType-04472 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.(VUID-vkCmdDrawIndirect-SampledType-04473 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.4VUID-vkCmdDrawIndirect-sparseImageInt64Atomics-04474 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.4VUID-vkCmdDrawIndirect-sparseImageInt64Atomics-04475 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.'VUID-vkCmdDrawIndirect-renderPass-02684 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 7r, structure specified when creating the  bound to $VUID-vkCmdDrawIndirect-subpass-026853 The subpass index of the current render pass must be equal to the subpass member of the 7r, structure specified when creating the  bound to !VUID-vkCmdDrawIndirect-None-026869 Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor set!VUID-vkCmdDrawIndirect-None-04584H Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass chapter6VUID-vkCmdDrawIndirect-maxMultiviewInstanceIndex-02688p If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to W::maxMultiviewInstanceIndex2VUID-vkCmdDrawIndirect-sampleLocationsEnable-02689; If 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*VUID-vkCmdDrawIndirect-viewportCount-03417E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the ' dynamic state enabled, then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the 7h:: scissorCount of the pipeline)VUID-vkCmdDrawIndirect-scissorCount-03418E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the ' dynamic state enabled, then  mustY have been called in the current command buffer prior to this draw command, and the  scissorCount parameter of  must match the 7h:: viewportCount of the pipeline*VUID-vkCmdDrawIndirect-viewportCount-03419J If the bound graphics pipeline state was created with both the  and , 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 *VUID-vkCmdDrawIndirect-viewportCount-04137E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the > dynamic state enabled, then the bound graphics pipeline must" have been created with j:: viewportCount greater or equal to the  viewportCount) parameter in the last call to *VUID-vkCmdDrawIndirect-viewportCount-04138E If the bound graphics pipeline state was created with the  and & dynamic states enabled then the  viewportCount) parameter in the last call to  must! be greater than or equal to the  viewportCount) parameter in the last call to *VUID-vkCmdDrawIndirect-viewportCount-04139E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the > dynamic state enabled, then the bound graphics pipeline must" have been created with g:: viewportCount greater or equal to the  viewportCount) parameter in the last call to *VUID-vkCmdDrawIndirect-viewportCount-04140E If the bound graphics pipeline state was created with the  and & dynamic states enabled then the  viewportCount) parameter in the last call to  must! be greater than or equal to the  viewportCount) parameter in the last call to 8VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04141E If the bound graphics pipeline state was created with the 4 dynamic state enabled and an instance of i chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with i:: viewportCount greater or equal to the  viewportCount) parameter in the last call to 8VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04142E If the bound graphics pipeline state was created with the 4 dynamic state enabled and an instance of f chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with f::exclusiveScissorCount greater or equal to the  viewportCount) parameter in the last call to .VUID-vkCmdDrawIndirect-primitiveTopology-03420E If the bound graphics pipeline state was created with the & dynamic state enabled then o mustY have been called in the current command buffer prior to this draw command, and the primitiveTopology parameter of o 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 7T::topology stateNVUID-vkCmdDrawIndirect-primitiveFragmentShadingRateWithMultipleViewports-04552 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewportsY limit is not supported, the bound graphics pipeline was created with the k dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR built-in, then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must be 1(VUID-vkCmdDrawIndirect-blendEnable-04727 If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features do not contain {, then the  blendEnable1 member of the corresponding element of the  pAttachments member of pColorBlendState must be .1VUID-vkCmdDrawIndirect-rasterizationSamples-04740X If rasterization is not disabled in the bound graphics pipeline, and neither the @ nor the # extensions are enabled, then 7W::rasterizationSamples@ mustO be the same as the current subpass color and/or depth/stencil attachments!VUID-vkCmdDrawIndirect-None-04007 All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must have either valid or 8 buffers bound!VUID-vkCmdDrawIndirect-None-04008 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 8!VUID-vkCmdDrawIndirect-None-02721D For a given vertex buffer binding, any attribute data fetched musta 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???#VUID-vkCmdDrawIndirect-buffer-02708 If buffer is non-sparse then it must7 be bound completely and contiguously to a single / object#VUID-vkCmdDrawIndirect-buffer-02709 buffer must& have been created with the  bit set#VUID-vkCmdDrawIndirect-offset-02710 offset must be a multiple of 4*VUID-vkCmdDrawIndirect-commandBuffer-02711  commandBuffer must' not be a protected command buffer&VUID-vkCmdDrawIndirect-drawCount-02718 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&VUID-vkCmdDrawIndirect-drawCount-02719  drawCount must$ be less than or equal to  ::maxDrawIndirectCount*VUID-vkCmdDrawIndirect-firstInstance-00478 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 5* structures accessed by this command must be 0&VUID-vkCmdDrawIndirect-drawCount-00476 If  drawCount is greater than 1, stride must be a multiple of 4 and must' be greater than or equal to sizeof(5)&VUID-vkCmdDrawIndirect-drawCount-00487 If  drawCount is equal to 1, (offset + sizeof(5)) must+ be less than or equal to the size of buffer&VUID-vkCmdDrawIndirect-drawCount-00488 If  drawCount is greater than 1, (stride ( drawCount - 1) + offset + sizeof(5)) must+ be less than or equal to the size of bufferValid Usage (Implicit).VUID-vkCmdDrawIndirect-commandBuffer-parameter  commandBuffer must be a valid  handle'VUID-vkCmdDrawIndirect-buffer-parameter buffer must be a valid  handle.VUID-vkCmdDrawIndirect-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state,VUID-vkCmdDrawIndirect-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations!VUID-vkCmdDrawIndirect-renderpass This command must5 only be called inside of a render pass instance#VUID-vkCmdDrawIndirect-commonparent Both 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 / 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, , n2dvulkan;vkCmdDrawIndexedIndirect - Perform an indexed indirect draw Description2d behaves similarly to 2bU 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 5 structures. If  drawCount is less than or equal to one, stride is ignored. Valid Usage-VUID-vkCmdDrawIndexedIndirect-magFilter-04553 If a / created with  magFilter or  minFilter equal to c and  compareEnable equal to . is used to sample a /> 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 {':.VUID-vkCmdDrawIndexedIndirect-mipmapMode-04770 If a / created with  mipmapMode equal to 8 and  compareEnable equal to . is used to sample a /> 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 {'(VUID-vkCmdDrawIndexedIndirect-None-02691 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 {x(VUID-vkCmdDrawIndexedIndirect-None-02692 If 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 /VUID-vkCmdDrawIndexedIndirect-filterCubic-02694 Any / being sampled with " as a result of this command must have a tyE and format that supports cubic filtering, as specified by f:: filterCubic returned by T5VUID-vkCmdDrawIndexedIndirect-filterCubicMinmax-02695 Any / being sampled with + with a reduction mode of either +z or +{" as a result of this command must have a tyi and format that supports cubic filtering together with minmax filtering, as specified by f::filterCubicMinmax returned by T)VUID-vkCmdDrawIndexedIndirect-flags-02696 Any  created with a 0::flags containing * sampled as a result of this command must only be sampled using a 9| of 9}(VUID-vkCmdDrawIndexedIndirect-None-02697 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 n. 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???(VUID-vkCmdDrawIndexedIndirect-None-02698< For each push constant that is statically used by the X bound to the pipeline bind point used by this command, a push constant value must= have been set for the same pipeline bind point, with a }; 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???(VUID-vkCmdDrawIndexedIndirect-None-02699> Descriptors in each bound descriptor set, specified via 2^, must7 be valid if they are statically used by the ; bound to the pipeline bind point used by this command(VUID-vkCmdDrawIndexedIndirect-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command1VUID-vkCmdDrawIndexedIndirect-commandBuffer-02701 If 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 dynamic(VUID-vkCmdDrawIndexedIndirect-None-02859 There musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the f object bound to the pipeline bind point used by this command, since that pipeline was bound(VUID-vkCmdDrawIndexedIndirect-None-02702 If the S object bound to the pipeline bind point used by this command accesses a /> object that uses unnormalized coordinates, that sampler must% not be used to sample from any  with a / of the type t~, t, t, t or t, in any shader stage(VUID-vkCmdDrawIndexedIndirect-None-02703 If the S object bound to the pipeline bind point used by this command accesses 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 stage(VUID-vkCmdDrawIndexedIndirect-None-02704 If the S object bound to the pipeline bind point used by this command accesses 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(VUID-vkCmdDrawIndexedIndirect-None-02705 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(VUID-vkCmdDrawIndexedIndirect-None-02706 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 point1VUID-vkCmdDrawIndexedIndirect-commandBuffer-02707 If  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 resource(VUID-vkCmdDrawIndexedIndirect-None-04115 If 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.0VUID-vkCmdDrawIndexedIndirect-OpImageWrite-04469 If a / is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction mustC have at least as many components as the buffer view s format./VUID-vkCmdDrawIndexedIndirect-SampledType-04470 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64./VUID-vkCmdDrawIndexedIndirect-SampledType-04471 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32./VUID-vkCmdDrawIndexedIndirect-SampledType-04472 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64./VUID-vkCmdDrawIndexedIndirect-SampledType-04473 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.;VUID-vkCmdDrawIndexedIndirect-sparseImageInt64Atomics-04474 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.;VUID-vkCmdDrawIndexedIndirect-sparseImageInt64Atomics-04475 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command..VUID-vkCmdDrawIndexedIndirect-renderPass-02684 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 7r, structure specified when creating the  bound to +VUID-vkCmdDrawIndexedIndirect-subpass-026853 The subpass index of the current render pass must be equal to the subpass member of the 7r, structure specified when creating the  bound to (VUID-vkCmdDrawIndexedIndirect-None-026869 Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor set(VUID-vkCmdDrawIndexedIndirect-None-04584H Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass chapter=VUID-vkCmdDrawIndexedIndirect-maxMultiviewInstanceIndex-02688p If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to W::maxMultiviewInstanceIndex9VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-02689; If 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 set1VUID-vkCmdDrawIndexedIndirect-viewportCount-03417E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the ' dynamic state enabled, then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must match the 7h:: scissorCount of the pipeline0VUID-vkCmdDrawIndexedIndirect-scissorCount-03418E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the ' dynamic state enabled, then  mustY have been called in the current command buffer prior to this draw command, and the  scissorCount parameter of  must match the 7h:: viewportCount of the pipeline1VUID-vkCmdDrawIndexedIndirect-viewportCount-03419J If the bound graphics pipeline state was created with both the  and , 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 1VUID-vkCmdDrawIndexedIndirect-viewportCount-04137E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the > dynamic state enabled, then the bound graphics pipeline must" have been created with j:: viewportCount greater or equal to the  viewportCount) parameter in the last call to 1VUID-vkCmdDrawIndexedIndirect-viewportCount-04138E If the bound graphics pipeline state was created with the  and & dynamic states enabled then the  viewportCount) parameter in the last call to  must! be greater than or equal to the  viewportCount) parameter in the last call to 1VUID-vkCmdDrawIndexedIndirect-viewportCount-04139E If the bound graphics pipeline state was created with the . dynamic state enabled, but not the > dynamic state enabled, then the bound graphics pipeline must" have been created with g:: viewportCount greater or equal to the  viewportCount) parameter in the last call to 1VUID-vkCmdDrawIndexedIndirect-viewportCount-04140E If the bound graphics pipeline state was created with the  and & dynamic states enabled then the  viewportCount) parameter in the last call to  must! be greater than or equal to the  viewportCount) parameter in the last call to ?VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04141E If the bound graphics pipeline state was created with the 4 dynamic state enabled and an instance of i chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with i:: viewportCount greater or equal to the  viewportCount) parameter in the last call to ?VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04142E If the bound graphics pipeline state was created with the 4 dynamic state enabled and an instance of f chained from VkPipelineVieportCreateInfo(, then the bound graphics pipeline must have been created with f::exclusiveScissorCount greater or equal to the  viewportCount) parameter in the last call to 5VUID-vkCmdDrawIndexedIndirect-primitiveTopology-03420E If the bound graphics pipeline state was created with the & dynamic state enabled then o mustY have been called in the current command buffer prior to this draw command, and the primitiveTopology parameter of o 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 7T::topology stateUVUID-vkCmdDrawIndexedIndirect-primitiveFragmentShadingRateWithMultipleViewports-04552 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports1primitiveFragmentShadingRateWithMultipleViewportsY limit is not supported, the bound graphics pipeline was created with the k dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR built-in, then  mustY have been called in the current command buffer prior to this draw command, and the  viewportCount parameter of  must be 1/VUID-vkCmdDrawIndexedIndirect-blendEnable-04727 If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features do not contain {, then the  blendEnable1 member of the corresponding element of the  pAttachments member of pColorBlendState must be .8VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-04740] If rasterization is not disabled in the bound graphics pipeline, and neither the @ nor the # extensions are enabled, then 7W::rasterizationSamples@ mustO be the same as the current subpass color and/or depth/stencil attachments(VUID-vkCmdDrawIndexedIndirect-None-04007 All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must have either valid or 8 buffers bound(VUID-vkCmdDrawIndexedIndirect-None-04008 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 8(VUID-vkCmdDrawIndexedIndirect-None-02721D For a given vertex buffer binding, any attribute data fetched musta 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???*VUID-vkCmdDrawIndexedIndirect-buffer-02708 If buffer is non-sparse then it must7 be bound completely and contiguously to a single / object*VUID-vkCmdDrawIndexedIndirect-buffer-02709 buffer must& have been created with the  bit set*VUID-vkCmdDrawIndexedIndirect-offset-02710 offset must be a multiple of 41VUID-vkCmdDrawIndexedIndirect-commandBuffer-02711  commandBuffer must" not be a protected command buffer-VUID-vkCmdDrawIndexedIndirect-drawCount-02718 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-VUID-vkCmdDrawIndexedIndirect-drawCount-02719  drawCount must$ be less than or equal to  ::maxDrawIndirectCount-VUID-vkCmdDrawIndexedIndirect-drawCount-00528 If  drawCount is greater than 1, stride must be a multiple of 4 and must' be greater than or equal to sizeof(5)1VUID-vkCmdDrawIndexedIndirect-firstInstance-00530 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 5* structures accessed by this command must be 0-VUID-vkCmdDrawIndexedIndirect-drawCount-00539 If  drawCount is equal to 1, (offset + sizeof(5)) must& be less than or equal to the size of buffer-VUID-vkCmdDrawIndexedIndirect-drawCount-00540 If  drawCount is greater than 1, (stride ( drawCount - 1) + offset + sizeof(5)) must& be less than or equal to the size of bufferValid Usage (Implicit)5VUID-vkCmdDrawIndexedIndirect-commandBuffer-parameter  commandBuffer must be a valid  handle.VUID-vkCmdDrawIndexedIndirect-buffer-parameter buffer must be a valid  handle5VUID-vkCmdDrawIndexedIndirect-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state3VUID-vkCmdDrawIndexedIndirect-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations(VUID-vkCmdDrawIndexedIndirect-renderpass This command must5 only be called inside of a render pass instance*VUID-vkCmdDrawIndexedIndirect-commonparent Both 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 / 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, , n2evulkan+vkCmdDispatch - Dispatch compute work items Description@When the command is executed, a global workgroup consisting of  groupCountX  groupCountY  groupCountZ local workgroups is assembled. Valid Usage"VUID-vkCmdDispatch-magFilter-04553 If a / created with  magFilter or  minFilter equal to c and  compareEnable equal to . is used to sample a /> 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 {' #VUID-vkCmdDispatch-mipmapMode-04770 If a / created with  mipmapMode equal to 8 and  compareEnable equal to . is used to sample a /> 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 {'VUID-vkCmdDispatch-None-02691 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 {xVUID-vkCmdDispatch-None-02692 If 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 $VUID-vkCmdDispatch-filterCubic-02694 Any / being sampled with " as a result of this command must have a tyE and format that supports cubic filtering, as specified by f:: filterCubic returned by T*VUID-vkCmdDispatch-filterCubicMinmax-02695 Any / being sampled with + with a reduction mode of either +z or +{" as a result of this command must have a tyi and format that supports cubic filtering together with minmax filtering, as specified by f::filterCubicMinmax returned by TVUID-vkCmdDispatch-flags-02696 Any  created with a 0::flags containing * sampled as a result of this command must only be sampled using a 9| of 9}VUID-vkCmdDispatch-None-02697 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 n. 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???VUID-vkCmdDispatch-None-02698< For each push constant that is statically used by the X bound to the pipeline bind point used by this command, a push constant value must= 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???VUID-vkCmdDispatch-None-02699> Descriptors in each bound descriptor set, specified via 2^, must2 be valid if they are statically used by the ; bound to the pipeline bind point used by this commandVUID-vkCmdDispatch-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command&VUID-vkCmdDispatch-commandBuffer-02701 If 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 dynamicVUID-vkCmdDispatch-None-02859 There musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the f object bound to the pipeline bind point used by this command, since that pipeline was boundVUID-vkCmdDispatch-None-02702 If the S object bound to the pipeline bind point used by this command accesses a /> object that uses unnormalized coordinates, that sampler must% not be used to sample from any  with a / of the type t~, t, t, t or t, in any shader stageVUID-vkCmdDispatch-None-02703 If the S object bound to the pipeline bind point used by this command accesses 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 stageVUID-vkCmdDispatch-None-02704 If the S object bound to the pipeline bind point used by this command accesses 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 stageVUID-vkCmdDispatch-None-02705 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 pointVUID-vkCmdDispatch-None-02706 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 point&VUID-vkCmdDispatch-commandBuffer-02707 If  commandBufferJ 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 resourceVUID-vkCmdDispatch-None-04115 If 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.%VUID-vkCmdDispatch-OpImageWrite-04469 If a / is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction mustC have at least as many components as the buffer view s format.$VUID-vkCmdDispatch-SampledType-04470 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.$VUID-vkCmdDispatch-SampledType-04471 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.$VUID-vkCmdDispatch-SampledType-04472 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.$VUID-vkCmdDispatch-SampledType-04473 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.0VUID-vkCmdDispatch-sparseImageInt64Atomics-04474 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.0VUID-vkCmdDispatch-sparseImageInt64Atomics-04475 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.&VUID-vkCmdDispatch-commandBuffer-02712 If  commandBufferI 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 resource&VUID-vkCmdDispatch-commandBuffer-02713 If  commandBufferz 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&VUID-vkCmdDispatch-commandBuffer-04617) If any of the shader stages of the J bound to the pipeline bind point used by this command uses the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR capability, then  commandBuffer must' not be a protected command buffer$VUID-vkCmdDispatch-groupCountX-00386  groupCountX must$ be less than or equal to  ::maxComputeWorkGroupCount[0]$VUID-vkCmdDispatch-groupCountY-00387  groupCountY must$ be less than or equal to  ::maxComputeWorkGroupCount[1]$VUID-vkCmdDispatch-groupCountZ-00388  groupCountZ must$ be less than or equal to  ::maxComputeWorkGroupCount[2]Valid Usage (Implicit)*VUID-vkCmdDispatch-commandBuffer-parameter  commandBuffer must be a valid  handle*VUID-vkCmdDispatch-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state(VUID-vkCmdDispatch-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support compute operationsVUID-vkCmdDispatch-renderpass This command must6 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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 Also2fvulkanNvkCmdDispatchIndirect - Dispatch compute work items using indirect parameters Description2f behaves similarly to 2e 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 Usage*VUID-vkCmdDispatchIndirect-magFilter-04553 If a / created with  magFilter or  minFilter equal to c and  compareEnable equal to . is used to sample a /> 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 {'+VUID-vkCmdDispatchIndirect-mipmapMode-04770 If a / created with  mipmapMode equal to 8 and  compareEnable equal to . is used to sample a /> 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 {'%VUID-vkCmdDispatchIndirect-None-02691 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 {x%VUID-vkCmdDispatchIndirect-None-02692 If 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 ,VUID-vkCmdDispatchIndirect-filterCubic-02694 Any / being sampled with " as a result of this command must have a tyE and format that supports cubic filtering, as specified by f:: filterCubic returned by T2VUID-vkCmdDispatchIndirect-filterCubicMinmax-02695 Any / being sampled with + with a reduction mode of either +z or +{" as a result of this command must have a tyi and format that supports cubic filtering together with minmax filtering, as specified by f::filterCubicMinmax returned by T&VUID-vkCmdDispatchIndirect-flags-02696 Any  created with a 0::flags containing * sampled as a result of this command must only be sampled using a 9| of 9}%VUID-vkCmdDispatchIndirect-None-02697 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 n. 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???%VUID-vkCmdDispatchIndirect-None-02698< For each push constant that is statically used by the X bound to the pipeline bind point used by this command, a push constant value must= 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???%VUID-vkCmdDispatchIndirect-None-02699> Descriptors in each bound descriptor set, specified via 2^, must7 be valid if they are statically used by the ; bound to the pipeline bind point used by this command%VUID-vkCmdDispatchIndirect-None-02700 A valid pipeline must> be bound to the pipeline bind point used by this command.VUID-vkCmdDispatchIndirect-commandBuffer-02701 If 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 dynamic%VUID-vkCmdDispatchIndirect-None-02859 There musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the f object bound to the pipeline bind point used by this command, since that pipeline was bound%VUID-vkCmdDispatchIndirect-None-02702 If the S object bound to the pipeline bind point used by this command accesses a /> object that uses unnormalized coordinates, that sampler must% not be used to sample from any  with a / of the type t~, t, t, t or t, in any shader stage%VUID-vkCmdDispatchIndirect-None-02703 If the S object bound to the pipeline bind point used by this command accesses 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 stage%VUID-vkCmdDispatchIndirect-None-02704 If the S object bound to the pipeline bind point used by this command accesses 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%VUID-vkCmdDispatchIndirect-None-02705 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%VUID-vkCmdDispatchIndirect-None-02706 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 point.VUID-vkCmdDispatchIndirect-commandBuffer-02707 If  commandBufferJ 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 resource%VUID-vkCmdDispatchIndirect-None-04115 If 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.-VUID-vkCmdDispatchIndirect-OpImageWrite-04469 If a / is accessed using  OpImageWrite, as a result of this command, then the Type of the Texel" operand of that instruction mustC have at least as many components as the buffer view s format.,VUID-vkCmdDispatchIndirect-SampledType-04470 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.,VUID-vkCmdDispatchIndirect-SampledType-04471 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.,VUID-vkCmdDispatchIndirect-SampledType-04472 If a / with a S that has a 64-bit channel width is accessed as a result of this command, the  SampledType of the  OpTypeImage operand of that instruction must have a Width of 64.,VUID-vkCmdDispatchIndirect-SampledType-04473 If a / with a b that has a channel width less than 64-bit is accessed as a result of this command, the  SampledType of the  OpTypeImage" operand of that instruction must have a Width of 32.8VUID-vkCmdDispatchIndirect-sparseImageInt64Atomics-04474 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.8VUID-vkCmdDispatchIndirect-sparseImageInt64Atomics-04475 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64AtomicssparseImageInt64Atomics feature is not enabled, $ objects created with the  flag must8 not be accessed by atomic instructions through an  OpTypeImage with a  SampledType with a Width of 64 by this command.'VUID-vkCmdDispatchIndirect-buffer-02708 If buffer is non-sparse then it must7 be bound completely and contiguously to a single / object'VUID-vkCmdDispatchIndirect-buffer-02709 buffer must& have been created with the  bit set'VUID-vkCmdDispatchIndirect-offset-02710 offset must be a multiple of 4.VUID-vkCmdDispatchIndirect-commandBuffer-02711  commandBuffer must" not be a protected command buffer'VUID-vkCmdDispatchIndirect-offset-00407 The sum of offset and the size of 5 must& be less than or equal to the size of bufferValid Usage (Implicit)2VUID-vkCmdDispatchIndirect-commandBuffer-parameter  commandBuffer must be a valid  handle+VUID-vkCmdDispatchIndirect-buffer-parameter buffer must be a valid  handle2VUID-vkCmdDispatchIndirect-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state0VUID-vkCmdDispatchIndirect-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support compute operations%VUID-vkCmdDispatchIndirect-renderpass This command must6 only be called outside of a render pass instance'VUID-vkCmdDispatchIndirect-commonparent Both 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 / 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, , n2gvulkan2vkCmdCopyBuffer - 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 Usage(VUID-vkCmdCopyBuffer-commandBuffer-01822 If  commandBuffer- is an unprotected command buffer, then  srcBuffer must not be a protected buffer (VUID-vkCmdCopyBuffer-commandBuffer-01823 If  commandBuffer- is an unprotected command buffer, then  dstBuffer must not be a protected buffer(VUID-vkCmdCopyBuffer-commandBuffer-01824 If  commandBuffer* is a protected command buffer, then  dstBuffer must" not be an unprotected buffer$VUID-vkCmdCopyBuffer-srcOffset-00113 The  srcOffset member of each element of pRegions must be less than the size of  srcBuffer$VUID-vkCmdCopyBuffer-dstOffset-00114 The  dstOffset member of each element of pRegions must be less than the size of  dstBufferVUID-vkCmdCopyBuffer-size-00115 The size member of each element of pRegions must+ be less than or equal to the size of  srcBuffer minus  srcOffsetVUID-vkCmdCopyBuffer-size-00116 The size member of each element of pRegions must+ be less than or equal to the size of  dstBuffer minus  dstOffset#VUID-vkCmdCopyBuffer-pRegions-00117s The union of the source regions, and the union of the destination regions, specified by the elements of pRegions, must not overlap in memory$VUID-vkCmdCopyBuffer-srcBuffer-00118  srcBuffer must" have been created with  usage flag$VUID-vkCmdCopyBuffer-srcBuffer-00119 If  srcBuffer is non-sparse then it must7 be bound completely and contiguously to a single / object$VUID-vkCmdCopyBuffer-dstBuffer-00120  dstBuffer must" have been created with  usage flag$VUID-vkCmdCopyBuffer-dstBuffer-00121 If  dstBuffer is non-sparse then it must7 be bound completely and contiguously to a single / objectValid Usage (Implicit),VUID-vkCmdCopyBuffer-commandBuffer-parameter  commandBuffer must be a valid  handle(VUID-vkCmdCopyBuffer-srcBuffer-parameter  srcBuffer must be a valid  handle(VUID-vkCmdCopyBuffer-dstBuffer-parameter  dstBuffer must be a valid  handle'VUID-vkCmdCopyBuffer-pRegions-parameter pRegions must( be a valid pointer to an array of  regionCount valid ' structures,VUID-vkCmdCopyBuffer-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state*VUID-vkCmdCopyBuffer-commandBuffer-cmdpool The / that  commandBuffer was allocated from must7 support transfer, graphics, or compute operationsVUID-vkCmdCopyBuffer-renderpass This command must6 only be called outside of a render pass instance,VUID-vkCmdCopyBuffer-regionCount-arraylength  regionCount must be greater than 0!VUID-vkCmdCopyBuffer-commonparent Each of  commandBuffer,  dstBuffer, and  srcBuffer must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, ', 2hvulkan)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 x, x, or x. For the purposes of 2hQ, 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 x plane of a y/ image is compatible with an image of format  and (less usefully) with the x plane of an image of format $, as each texel is 2 bytes in size.2h 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.2h canI be used to copy image data between multisample images, but both images must! have the same number of samples. Valid Usage'VUID-vkCmdCopyImage-commandBuffer-01825 If  commandBuffer- is an unprotected command buffer, then srcImage must not be a protected image9'VUID-vkCmdCopyImage-commandBuffer-01826 If  commandBuffer- is an unprotected command buffer, then dstImage must not be a protected image'VUID-vkCmdCopyImage-commandBuffer-01827 If  commandBuffer* is a protected command buffer, then dstImage must! not be an unprotected image"VUID-vkCmdCopyImage-pRegions-00124s The union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory"VUID-vkCmdCopyImage-srcImage-01995 The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain {"VUID-vkCmdCopyImage-srcImage-00126 srcImage must" have been created with  usage flag"VUID-vkCmdCopyImage-srcImage-01546 If srcImage& is non-sparse then the image or disjoint plane to be copied must< be bound completely and contiguously to a single / object(VUID-vkCmdCopyImage-srcImageLayout-00128 srcImageLayout must6 specify the layout of the image subresources of srcImage specified in pRegions0 at the time this command is executed on a /(VUID-vkCmdCopyImage-srcImageLayout-01917 srcImageLayout must be @, E , or 9"VUID-vkCmdCopyImage-dstImage-01996 The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of dstImage must contain {"VUID-vkCmdCopyImage-dstImage-00131 dstImage must" have been created with  usage flag"VUID-vkCmdCopyImage-dstImage-01547 If 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 / object(VUID-vkCmdCopyImage-dstImageLayout-00133 dstImageLayout must6 specify the layout of the image subresources of dstImage specified in pRegions0 at the time this command is executed on a /(VUID-vkCmdCopyImage-dstImageLayout-01395 dstImageLayout must be ?, E , or 9"VUID-vkCmdCopyImage-srcImage-01548 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-compatibilityaboveVUID-vkCmdCopyImage-None-01549( 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 copied"VUID-vkCmdCopyImage-srcImage-00136 The sample count of srcImage and dstImage must match(VUID-vkCmdCopyImage-srcSubresource-01696 The srcSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 0 when srcImage was created(VUID-vkCmdCopyImage-dstSubresource-01697 The dstSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 0 when dstImage was created(VUID-vkCmdCopyImage-srcSubresource-01698 The srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 0 when srcImage was created(VUID-vkCmdCopyImage-dstSubresource-01699 The dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 0 when dstImage was created#VUID-vkCmdCopyImage-srcOffset-01783 The  srcOffset and extent! members of each element of pRegions must= respect the image transfer granularity requirements of  commandBuffer: s command pool s queue family, as described in   #VUID-vkCmdCopyImage-dstOffset-01784 The  dstOffset and extent! members of each element of pRegions must= respect the image transfer granularity requirements of  commandBuffer: s command pool s queue family, as described in   "VUID-vkCmdCopyImage-dstImage-02542 dstImage and srcImage must not have been created with flags containing h"VUID-vkCmdCopyImage-srcImage-01551 If neither srcImage nor 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 for each element of pRegions, srcSubresource.aspectMask and dstSubresource.aspectMask must match"VUID-vkCmdCopyImage-srcImage-01552 If 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 for each element of pRegions, srcSubresource.aspectMask must be x or x"VUID-vkCmdCopyImage-srcImage-01553 If 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 for each element of pRegions, srcSubresource.aspectMask must be x, x, or x"VUID-vkCmdCopyImage-dstImage-01554 If 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 for each element of pRegions, dstSubresource.aspectMask must be x or x"VUID-vkCmdCopyImage-dstImage-01555 If 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 for each element of pRegions, dstSubresource.aspectMask must be x, x, or x"VUID-vkCmdCopyImage-srcImage-01556 If 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 dstImageJ does not have a multi-planar image format, then for each element of pRegions, dstSubresource.aspectMask must be xQ"VUID-vkCmdCopyImage-dstImage-01557 If 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 srcImageJ does not have a multi-planar image format, then for each element of pRegions, srcSubresource.aspectMask must be xQ"VUID-vkCmdCopyImage-srcImage-04443 If srcImage is of type U , then for each element of pRegions, srcSubresource.baseArrayLayer must be 0 and and srcSubresource.layerCount must be 1"VUID-vkCmdCopyImage-dstImage-04444 If dstImage is of type U , then for each element of pRegions, dstSubresource.baseArrayLayer must be 0 and and dstSubresource.layerCount must be 1$VUID-vkCmdCopyImage-aspectMask-00142 For each element of pRegions, srcSubresource.aspectMask must! specify aspects present in srcImage$VUID-vkCmdCopyImage-aspectMask-00143 For each element of pRegions, dstSubresource.aspectMask must! specify aspects present in dstImage#VUID-vkCmdCopyImage-srcOffset-00144 For each element of pRegions,  srcOffset.x and ( extent.width +  srcOffset.x) must" both be greater than or equal to 0; and less than or equal to the width of the specified srcSubresource of srcImage#VUID-vkCmdCopyImage-srcOffset-00145 For each element of pRegions,  srcOffset.y and ( extent.height +  srcOffset.y) must" both be greater than or equal to 0< and less than or equal to the height of the specified srcSubresource of srcImage"VUID-vkCmdCopyImage-srcImage-00146 If srcImage is of type R , then for each element of pRegions,  srcOffset.y must be 0 and  extent.height must be 1#VUID-vkCmdCopyImage-srcOffset-00147 For each element of pRegions,  srcOffset.z and ( extent.depth +  srcOffset.z) must" both be greater than or equal to 0; and less than or equal to the depth of the specified srcSubresource of srcImage"VUID-vkCmdCopyImage-srcImage-01785 If srcImage is of type R , then for each element of pRegions,  srcOffset.z must be 0 and  extent.depth must be 1"VUID-vkCmdCopyImage-dstImage-01786 If dstImage is of type R , then for each element of pRegions,  dstOffset.z must be 0 and  extent.depth must be 1"VUID-vkCmdCopyImage-srcImage-01787 If srcImage is of type S , then for each element of pRegions,  srcOffset.z must be 0"VUID-vkCmdCopyImage-dstImage-01788 If dstImage is of type S , then for each element of pRegions,  dstOffset.z must be 0"VUID-vkCmdCopyImage-srcImage-01790 If srcImage and dstImage are both of type S , then for each element of pRegions,  extent.depth must be 1"VUID-vkCmdCopyImage-srcImage-01791 If srcImage is of type S, and dstImage is of type U , then for each element of pRegions,  extent.depth must equal srcSubresource.layerCount"VUID-vkCmdCopyImage-dstImage-01792 If dstImage is of type S, and srcImage is of type U , then for each element of pRegions,  extent.depth must equal dstSubresource.layerCount#VUID-vkCmdCopyImage-dstOffset-00150 For each element of pRegions,  dstOffset.x and ( extent.width +  dstOffset.x) must" both be greater than or equal to 0; and less than or equal to the width of the specified dstSubresource of dstImage#VUID-vkCmdCopyImage-dstOffset-00151 For each element of pRegions,  dstOffset.y and ( extent.height +  dstOffset.y) must" both be greater than or equal to 0< and less than or equal to the height of the specified dstSubresource of dstImage"VUID-vkCmdCopyImage-dstImage-00152 If dstImage is of type R , then for each element of pRegions,  dstOffset.y must be 0 and  extent.height must be 1#VUID-vkCmdCopyImage-dstOffset-00153 For each element of pRegions,  dstOffset.z and ( extent.depth +  dstOffset.z) must" both be greater than or equal to 0; and less than or equal to the depth of the specified dstSubresource of dstImage"VUID-vkCmdCopyImage-srcImage-01727 If srcImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions, all members of  srcOffset mustQ be a multiple of the corresponding dimensions of the compressed texel block"VUID-vkCmdCopyImage-srcImage-01728 If srcImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions,  extent.width must< be a multiple of the compressed texel block width or ( extent.width +  srcOffset.x) must' equal the width of the specified srcSubresource of srcImage"VUID-vkCmdCopyImage-srcImage-01729 If srcImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions,  extent.height must= be a multiple of the compressed texel block height or ( extent.height +  srcOffset.y) must( equal the height of the specified srcSubresource of srcImage"VUID-vkCmdCopyImage-srcImage-01730 If srcImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions,  extent.depth must< be a multiple of the compressed texel block depth or ( extent.depth +  srcOffset.z) must' equal the depth of the specified srcSubresource of srcImage"VUID-vkCmdCopyImage-dstImage-01731 If dstImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions, all members of  dstOffset mustQ be a multiple of the corresponding dimensions of the compressed texel block"VUID-vkCmdCopyImage-dstImage-01732 If dstImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions,  extent.width must< be a multiple of the compressed texel block width or ( extent.width +  dstOffset.x) must' equal the width of the specified dstSubresource of dstImage"VUID-vkCmdCopyImage-dstImage-01733 If dstImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions,  extent.height must= be a multiple of the compressed texel block height or ( extent.height +  dstOffset.y) must( equal the height of the specified dstSubresource of dstImage"VUID-vkCmdCopyImage-dstImage-01734 If dstImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions,  extent.depth must< be a multiple of the compressed texel block depth or ( extent.depth +  dstOffset.z) must' equal the depth of the specified dstSubresource of dstImageValid Usage (Implicit)+VUID-vkCmdCopyImage-commandBuffer-parameter  commandBuffer must be a valid  handle &VUID-vkCmdCopyImage-srcImage-parameter srcImage must be a valid  handle,VUID-vkCmdCopyImage-srcImageLayout-parameter srcImageLayout must be a valid O value&VUID-vkCmdCopyImage-dstImage-parameter dstImage must be a valid  handle,VUID-vkCmdCopyImage-dstImageLayout-parameter dstImageLayout must be a valid O value&VUID-vkCmdCopyImage-pRegions-parameter pRegions must( be a valid pointer to an array of  regionCount valid ! structures+VUID-vkCmdCopyImage-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state)VUID-vkCmdCopyImage-commandBuffer-cmdpool The / that  commandBuffer was allocated from must7 support transfer, graphics, or compute operationsVUID-vkCmdCopyImage-renderpass This command must6 only be called outside of a render pass instance+VUID-vkCmdCopyImage-regionCount-arraylength  regionCount must be greater than 0 VUID-vkCmdCopyImage-commonparent Each of  commandBuffer, dstImage, and srcImage must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, , !, O2ivulkanUvkCmdBlitImage - Copy regions of an image, potentially performing format conversion, Description2i mustA not be used for multisampled source or destination images. Use 2q 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 8 and an address mode of 9}. 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.HWhen blitting 3D textures, slices in the destination region bounded by  dstOffsets [0].z and  dstOffsets?[1].z are sampled from slices in the source region bounded by  srcOffsets [0].z and  srcOffsets[1].z. If the filter parameter is cj then the value sampled from the source image is taken by doing linear filtering using the interpolated z coordinate represented by w$ in the previous equations. If the filter parameter is d 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 Usage'VUID-vkCmdBlitImage-commandBuffer-01834 If  commandBuffer- is an unprotected command buffer, then srcImage must not be a protected image,'VUID-vkCmdBlitImage-commandBuffer-01835 If  commandBuffer- is an unprotected command buffer, then dstImage must not be a protected image'VUID-vkCmdBlitImage-commandBuffer-01836 If  commandBuffer* is a protected command buffer, then dstImage must! not be an unprotected image"VUID-vkCmdBlitImage-pRegions-002155 The source region specified by each element of pRegions must+ be a region that is contained within srcImage"VUID-vkCmdBlitImage-pRegions-00216: The destination region specified by each element of pRegions must+ be a region that is contained within dstImage"VUID-vkCmdBlitImage-pRegions-00217I The union of all destination regions, specified by the elements of pRegions, must0 not overlap in memory with any texel that may* be sampled during the blit operation"VUID-vkCmdBlitImage-srcImage-01999 The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain {&"VUID-vkCmdBlitImage-srcImage-01561 srcImage 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???"VUID-vkCmdBlitImage-srcImage-00219 srcImage must" have been created with  usage flag"VUID-vkCmdBlitImage-srcImage-00220 If srcImage is non-sparse then it must7 be bound completely and contiguously to a single / object(VUID-vkCmdBlitImage-srcImageLayout-00221 srcImageLayout must6 specify the layout of the image subresources of srcImage specified in pRegions0 at the time this command is executed on a /(VUID-vkCmdBlitImage-srcImageLayout-01398 srcImageLayout must be 9, @ or E"VUID-vkCmdBlitImage-dstImage-02000 The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of dstImage must contain {"VUID-vkCmdBlitImage-dstImage-01562 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???"VUID-vkCmdBlitImage-dstImage-00224 dstImage must" have been created with  usage flag"VUID-vkCmdBlitImage-dstImage-00225 If dstImage is non-sparse then it must7 be bound completely and contiguously to a single / object(VUID-vkCmdBlitImage-dstImageLayout-00226 dstImageLayout must6 specify the layout of the image subresources of dstImage specified in pRegions0 at the time this command is executed on a /(VUID-vkCmdBlitImage-dstImageLayout-01399 dstImageLayout must be 9, ? or E"VUID-vkCmdBlitImage-srcImage-00229 If either of srcImage or dstImage( was created with a signed integer  , the other must3 also have been created with a signed integer "VUID-vkCmdBlitImage-srcImage-00230 If either of srcImage or dstImage+ was created with an unsigned integer  , the other must6 also have been created with an unsigned integer "VUID-vkCmdBlitImage-srcImage-00231 If either of srcImage or dstImage9 was created with a depth/stencil format, the other must have exactly the same format"VUID-vkCmdBlitImage-srcImage-00232 If srcImage/ was created with a depth/stencil format, filter must be d"VUID-vkCmdBlitImage-srcImage-00233 srcImage must have been created with a samples value of %4"VUID-vkCmdBlitImage-dstImage-00234 dstImage must have been created with a samples value of %4 VUID-vkCmdBlitImage-filter-02001 If filter is c, then the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain {' VUID-vkCmdBlitImage-filter-02002 If 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  VUID-vkCmdBlitImage-filter-00237 If filter is , srcImage must be of type S(VUID-vkCmdBlitImage-srcSubresource-01705 The srcSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 0 when srcImage was created(VUID-vkCmdBlitImage-dstSubresource-01706 The dstSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 0 when dstImage was created(VUID-vkCmdBlitImage-srcSubresource-01707 The srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 0 when srcImage was created(VUID-vkCmdBlitImage-dstSubresource-01708 The dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 0 when dstImage was created"VUID-vkCmdBlitImage-dstImage-02545 dstImage and srcImage must not have been created with flags containing h"VUID-vkCmdBlitImage-srcImage-00240 If either srcImage or dstImage is of type U , then for each element of pRegions, srcSubresource.baseArrayLayer and dstSubresource.baseArrayLayer must each be 0 , and srcSubresource.layerCount and dstSubresource.layerCount must each be 1.$VUID-vkCmdBlitImage-aspectMask-00241 For each element of pRegions, srcSubresource.aspectMask must! specify aspects present in srcImage$VUID-vkCmdBlitImage-aspectMask-00242 For each element of pRegions, dstSubresource.aspectMask must! specify aspects present in dstImage#VUID-vkCmdBlitImage-srcOffset-00243 For each element of pRegions,  srcOffset [0].x and  srcOffset[1].x must' both be greater than or equal to 0; and less than or equal to the width of the specified srcSubresource of srcImage#VUID-vkCmdBlitImage-srcOffset-00244 For each element of pRegions,  srcOffset [0].y and  srcOffset[1].y must' both be greater than or equal to 0< and less than or equal to the height of the specified srcSubresource of srcImage"VUID-vkCmdBlitImage-srcImage-00245 If srcImage is of type R , then for each element of pRegions,  srcOffset[0].y must be 0 and  srcOffset [1].y must be 1#VUID-vkCmdBlitImage-srcOffset-00246 For each element of pRegions,  srcOffset [0].z and  srcOffset[1].z must' both be greater than or equal to 0; and less than or equal to the depth of the specified srcSubresource of srcImage"VUID-vkCmdBlitImage-srcImage-00247 If srcImage is of type R or S , then for each element of pRegions,  srcOffset[0].z must be 0 and  srcOffset [1].z must be 1#VUID-vkCmdBlitImage-dstOffset-00248 For each element of pRegions,  dstOffset [0].x and  dstOffset[1].x must' both be greater than or equal to 0; and less than or equal to the width of the specified dstSubresource of dstImage#VUID-vkCmdBlitImage-dstOffset-00249 For each element of pRegions,  dstOffset [0].y and  dstOffset[1].y must' both be greater than or equal to 0< and less than or equal to the height of the specified dstSubresource of dstImage"VUID-vkCmdBlitImage-dstImage-00250 If dstImage is of type R , then for each element of pRegions,  dstOffset[0].y must be 0 and  dstOffset [1].y must be 1#VUID-vkCmdBlitImage-dstOffset-00251 For each element of pRegions,  dstOffset [0].z and  dstOffset[1].z must' both be greater than or equal to 0; and less than or equal to the depth of the specified dstSubresource of dstImage"VUID-vkCmdBlitImage-dstImage-00252 If dstImage is of type R or S , then for each element of pRegions,  dstOffset[0].z must be 0 and  dstOffset [1].z must be 1Valid Usage (Implicit)+VUID-vkCmdBlitImage-commandBuffer-parameter  commandBuffer must be a valid  handle &VUID-vkCmdBlitImage-srcImage-parameter srcImage must be a valid  handle,VUID-vkCmdBlitImage-srcImageLayout-parameter srcImageLayout must be a valid O value&VUID-vkCmdBlitImage-dstImage-parameter dstImage must be a valid  handle,VUID-vkCmdBlitImage-dstImageLayout-parameter dstImageLayout must be a valid O value&VUID-vkCmdBlitImage-pRegions-parameter pRegions must( be a valid pointer to an array of  regionCount valid " structures$VUID-vkCmdBlitImage-filter-parameter filter must be a valid J value+VUID-vkCmdBlitImage-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state)VUID-vkCmdBlitImage-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsVUID-vkCmdBlitImage-renderpass This command must6 only be called outside of a render pass instance+VUID-vkCmdBlitImage-regionCount-arraylength  regionCount must be greater than 0 VUID-vkCmdBlitImage-commonparent Each of  commandBuffer, dstImage, and srcImage must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, J, , ", O2jvulkan>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 x, x, or x. For the purposes of 2jQ, 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 Usage/VUID-vkCmdCopyBufferToImage-commandBuffer-01828 If  commandBuffer- is an unprotected command buffer, then  srcBuffer must not be a protected buffer'/VUID-vkCmdCopyBufferToImage-commandBuffer-01829 If  commandBuffer- is an unprotected command buffer, then dstImage must not be a protected image/VUID-vkCmdCopyBufferToImage-commandBuffer-01830 If  commandBuffer* is a protected command buffer, then dstImage must! not be an unprotected image*VUID-vkCmdCopyBufferToImage-pRegions-001724 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 format*VUID-vkCmdCopyBufferToImage-pRegions-00171  srcBuffer must_ 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*VUID-vkCmdCopyBufferToImage-pRegions-00173s The union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory+VUID-vkCmdCopyBufferToImage-srcBuffer-00174  srcBuffer must" have been created with  usage flag*VUID-vkCmdCopyBufferToImage-dstImage-01997 The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of dstImage must contain {+VUID-vkCmdCopyBufferToImage-srcBuffer-00176 If  srcBuffer is non-sparse then it must7 be bound completely and contiguously to a single / object*VUID-vkCmdCopyBufferToImage-dstImage-00177 dstImage must" have been created with  usage flag*VUID-vkCmdCopyBufferToImage-dstImage-00178 If dstImage is non-sparse then it must7 be bound completely and contiguously to a single / object*VUID-vkCmdCopyBufferToImage-dstImage-00179 dstImage must( have a sample count equal to %40VUID-vkCmdCopyBufferToImage-dstImageLayout-00180 dstImageLayout must1 specify the layout of the image subresources of dstImage specified in pRegions0 at the time this command is executed on a /0VUID-vkCmdCopyBufferToImage-dstImageLayout-01396 dstImageLayout must be ?, E , or 92VUID-vkCmdCopyBufferToImage-imageSubresource-01701 The imageSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 0 when dstImage was created2VUID-vkCmdCopyBufferToImage-imageSubresource-01702 The imageSubresource.baseArrayLayer + imageSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 0 when dstImage was created-VUID-vkCmdCopyBufferToImage-imageOffset-01793 The  imageOffset and  imageExtent members of each element of pRegions mustB respect the image transfer granularity requirements of  commandBuffer5 s command pool s queue family, as described in   *VUID-vkCmdCopyBufferToImage-dstImage-02543 dstImage must! not have been created with flags containing h/VUID-vkCmdCopyBufferToImage-commandBuffer-04477- If the queue family used to create the / which  commandBuffer* was allocated from does not support \b, for each element of pRegions, the  aspectMask member of imageSubresource must not be x or x.-VUID-vkCmdCopyBufferToImage-imageOffset-00197 For each element of pRegions,  imageOffset.x and (imageExtent.width +  imageOffset.x) must" both be greater than or equal to 0; and less than or equal to the width of the specified imageSubresource of dstImage' where this refers to the width of the plane> 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-VUID-vkCmdCopyBufferToImage-imageOffset-00198 For each element of pRegions,  imageOffset.y and (imageExtent.height +  imageOffset.y) must" both be greater than or equal to 0< and less than or equal to the height of the specified imageSubresource of dstImage( where this refers to the height of the plane> 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.VUID-vkCmdCopyBufferToImage-bufferOffset-01558 If dstImage5 does not have either a depth/stencil or a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then for each element of pRegions,  bufferOffset must4 be a multiple of the format s texel block size.VUID-vkCmdCopyBufferToImage-bufferOffset-01559 If dstImage has a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then for each element of pRegions,  bufferOffset must] 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???*VUID-vkCmdCopyBufferToImage-srcImage-00199 If dstImage is of type R , then for each element of pRegions,  imageOffset.y must be 0 and imageExtent.height must be 1-VUID-vkCmdCopyBufferToImage-imageOffset-00200 For each element of pRegions,  imageOffset.z and (imageExtent.depth +  imageOffset.z) must" both be greater than or equal to 0; and less than or equal to the depth of the specified imageSubresource of dstImage*VUID-vkCmdCopyBufferToImage-srcImage-00201 If dstImage is of type R or S , then for each element of pRegions,  imageOffset.z must be 0 and imageExtent.depth must be 11VUID-vkCmdCopyBufferToImage-bufferRowLength-00203 If dstImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferRowLength must7 be a multiple of the compressed texel block width3VUID-vkCmdCopyBufferToImage-bufferImageHeight-00204 If dstImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferImageHeight must8 be a multiple of the compressed texel block height-VUID-vkCmdCopyBufferToImage-imageOffset-00205 If dstImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, all members of  imageOffset mustV be a multiple of the corresponding dimensions of the compressed texel block.VUID-vkCmdCopyBufferToImage-bufferOffset-00206 If dstImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions,  bufferOffset must? be a multiple of the compressed texel block size in bytes-VUID-vkCmdCopyBufferToImage-imageExtent-00207 If dstImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, imageExtent.width must< be a multiple of the compressed texel block width or (imageExtent.width +  imageOffset.x) must' equal the width of the specified imageSubresource of dstImage-VUID-vkCmdCopyBufferToImage-imageExtent-00208 If dstImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, imageExtent.height mustB be a multiple of the compressed texel block height or (imageExtent.height +  imageOffset.y) must( equal the height of the specified imageSubresource of dstImage-VUID-vkCmdCopyBufferToImage-imageExtent-00209 If dstImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, imageExtent.depth must< be a multiple of the compressed texel block depth or (imageExtent.depth +  imageOffset.z) must' equal the depth of the specified imageSubresource of dstImage,VUID-vkCmdCopyBufferToImage-aspectMask-00211 For each element of pRegions, imageSubresource.aspectMask must! specify aspects present in dstImage,VUID-vkCmdCopyBufferToImage-aspectMask-01560 If dstImage has a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then for each element of pRegions, imageSubresource.aspectMask must be x, x, or x (with x5 valid only for image formats with three planes)0VUID-vkCmdCopyBufferToImage-baseArrayLayer-00213 If dstImage is of type U, for each element of pRegions, imageSubresource.baseArrayLayer must be 0 and imageSubresource.layerCount must be 1*VUID-vkCmdCopyBufferToImage-pRegions-04725 If dstImage is not a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferRowLength, multiplied by the texel block size of dstImage must be less than or equal to 231-1*VUID-vkCmdCopyBufferToImage-pRegions-04726 If dstImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferRowLengthf divided by the compressed texel block width and then multiplied by the texel block size of dstImage must be less than or equal to 231-1/VUID-vkCmdCopyBufferToImage-commandBuffer-04052- If the queue family used to create the / which  commandBuffer* was allocated from does not support \b or \c , the  bufferOffset member of any element of pRegions must be a multiple of 4*VUID-vkCmdCopyBufferToImage-srcImage-04053 If dstImage& has a depth/stencil format, the  bufferOffset member of any element of pRegions must be a multiple of 4Valid Usage (Implicit)3VUID-vkCmdCopyBufferToImage-commandBuffer-parameter  commandBuffer must be a valid  handle /VUID-vkCmdCopyBufferToImage-srcBuffer-parameter  srcBuffer must be a valid  handle.VUID-vkCmdCopyBufferToImage-dstImage-parameter dstImage must be a valid  handle4VUID-vkCmdCopyBufferToImage-dstImageLayout-parameter dstImageLayout must be a valid O value.VUID-vkCmdCopyBufferToImage-pRegions-parameter pRegions must( be a valid pointer to an array of  regionCount valid & structures3VUID-vkCmdCopyBufferToImage-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state1VUID-vkCmdCopyBufferToImage-commandBuffer-cmdpool The / that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations&VUID-vkCmdCopyBufferToImage-renderpass This command must6 only be called outside of a render pass instance3VUID-vkCmdCopyBufferToImage-regionCount-arraylength  regionCount must be greater than 0(VUID-vkCmdCopyBufferToImage-commonparent Each of  commandBuffer, dstImage, and  srcBuffer must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, &, , , O2kvulkan6vkCmdCopyImageToBuffer - 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 x, x, or x. For the purposes of 2jQ, 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 Usage/VUID-vkCmdCopyImageToBuffer-commandBuffer-01831 If  commandBuffer- is an unprotected command buffer, then srcImage must not be a protected image&/VUID-vkCmdCopyImageToBuffer-commandBuffer-01832 If  commandBuffer- is an unprotected command buffer, then  dstBuffer must not be a protected buffer/VUID-vkCmdCopyImageToBuffer-commandBuffer-01833 If  commandBuffer* is a protected command buffer, then  dstBuffer must" not be an unprotected buffer*VUID-vkCmdCopyImageToBuffer-pRegions-001824 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*VUID-vkCmdCopyImageToBuffer-pRegions-00183  dstBuffer must_ 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*VUID-vkCmdCopyImageToBuffer-pRegions-00184s The union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory*VUID-vkCmdCopyImageToBuffer-srcImage-00186 srcImage must" have been created with  usage flag*VUID-vkCmdCopyImageToBuffer-srcImage-01998 The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain {*VUID-vkCmdCopyImageToBuffer-srcImage-00187 If srcImage is non-sparse then it must7 be bound completely and contiguously to a single / object+VUID-vkCmdCopyImageToBuffer-dstBuffer-00191  dstBuffer must" have been created with  usage flag+VUID-vkCmdCopyImageToBuffer-dstBuffer-00192 If  dstBuffer is non-sparse then it must7 be bound completely and contiguously to a single / object*VUID-vkCmdCopyImageToBuffer-srcImage-00188 srcImage must( have a sample count equal to %40VUID-vkCmdCopyImageToBuffer-srcImageLayout-00189 srcImageLayout must1 specify the layout of the image subresources of srcImage specified in pRegions0 at the time this command is executed on a /0VUID-vkCmdCopyImageToBuffer-srcImageLayout-01397 srcImageLayout must be @, E , or 92VUID-vkCmdCopyImageToBuffer-imageSubresource-01703 The imageSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 0 when srcImage was created2VUID-vkCmdCopyImageToBuffer-imageSubresource-01704 The imageSubresource.baseArrayLayer + imageSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 0 when srcImage was created-VUID-vkCmdCopyImageToBuffer-imageOffset-01794 The  imageOffset and  imageExtent members of each element of pRegions mustB respect the image transfer granularity requirements of  commandBuffer5 s command pool s queue family, as described in   *VUID-vkCmdCopyImageToBuffer-srcImage-02544 srcImage must! not have been created with flags containing h-VUID-vkCmdCopyImageToBuffer-imageOffset-00197 For each element of pRegions ,  imageOffset.x and (imageExtent.width +  imageOffset.x) must" both be greater than or equal to 0; and less than or equal to the width of the specified imageSubresource of srcImage' where this refers to the width of the plane> 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-VUID-vkCmdCopyImageToBuffer-imageOffset-00198 For each element of pRegions ,  imageOffset.y and (imageExtent.height +  imageOffset.y) must" both be greater than or equal to 0< and less than or equal to the height of the specified imageSubresource of srcImage( where this refers to the height of the plane> 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.VUID-vkCmdCopyImageToBuffer-bufferOffset-01558 If srcImage5 does not have either a depth/stencil or a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then for each element of pRegions,  bufferOffset must4 be a multiple of the format s texel block size.VUID-vkCmdCopyImageToBuffer-bufferOffset-01559 If srcImage has a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then for each element of pRegions,  bufferOffset must] 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???*VUID-vkCmdCopyImageToBuffer-srcImage-00199 If srcImage is of type R , then for each element of pRegions,  imageOffset.y must be 0 and imageExtent.height must be 1-VUID-vkCmdCopyImageToBuffer-imageOffset-00200 For each element of pRegions,  imageOffset.z and (imageExtent.depth +  imageOffset.z) must" both be greater than or equal to 0; and less than or equal to the depth of the specified imageSubresource of srcImage*VUID-vkCmdCopyImageToBuffer-srcImage-00201 If srcImage is of type R or S , then for each element of pRegions,  imageOffset.z must be 0 and imageExtent.depth must be 11VUID-vkCmdCopyImageToBuffer-bufferRowLength-00203 If srcImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferRowLength must7 be a multiple of the compressed texel block width3VUID-vkCmdCopyImageToBuffer-bufferImageHeight-00204 If srcImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferImageHeight must8 be a multiple of the compressed texel block height-VUID-vkCmdCopyImageToBuffer-imageOffset-00205 If srcImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, all members of  imageOffset mustV be a multiple of the corresponding dimensions of the compressed texel block.VUID-vkCmdCopyImageToBuffer-bufferOffset-00206 If srcImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions,  bufferOffset must? be a multiple of the compressed texel block size in bytes-VUID-vkCmdCopyImageToBuffer-imageExtent-00207 If srcImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, imageExtent.width must< be a multiple of the compressed texel block width or (imageExtent.width +  imageOffset.x) must' equal the width of the specified imageSubresource of srcImage-VUID-vkCmdCopyImageToBuffer-imageExtent-00208 If srcImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, imageExtent.height mustB be a multiple of the compressed texel block height or (imageExtent.height +  imageOffset.y) must( equal the height of the specified imageSubresource of srcImage-VUID-vkCmdCopyImageToBuffer-imageExtent-00209 If srcImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, imageExtent.depth must< be a multiple of the compressed texel block depth or (imageExtent.depth +  imageOffset.z) must' equal the depth of the specified imageSubresource of srcImage,VUID-vkCmdCopyImageToBuffer-aspectMask-00211 For each element of pRegions, imageSubresource.aspectMask must! specify aspects present in srcImage,VUID-vkCmdCopyImageToBuffer-aspectMask-01560 If srcImage has a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then for each element of pRegions, imageSubresource.aspectMask must be x, x, or x (with x5 valid only for image formats with three planes)0VUID-vkCmdCopyImageToBuffer-baseArrayLayer-00213 If srcImage is of type U, for each element of pRegions, imageSubresource.baseArrayLayer must be 0 and imageSubresource.layerCount must be 1*VUID-vkCmdCopyImageToBuffer-pRegions-04725 If srcImage is not a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferRowLength, multiplied by the texel block size of srcImage must be less than or equal to 231-1*VUID-vkCmdCopyImageToBuffer-pRegions-04726 If srcImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferRowLengthf divided by the compressed texel block width and then multiplied by the texel block size of srcImage must be less than or equal to 231-1/VUID-vkCmdCopyImageToBuffer-commandBuffer-04052- If the queue family used to create the / which  commandBuffer* was allocated from does not support \b or \c , the  bufferOffset member of any element of pRegions must be a multiple of 4*VUID-vkCmdCopyImageToBuffer-srcImage-04053 If srcImage& has a depth/stencil format, the  bufferOffset member of any element of pRegions must be a multiple of 4Valid Usage (Implicit)3VUID-vkCmdCopyImageToBuffer-commandBuffer-parameter  commandBuffer must be a valid  handle .VUID-vkCmdCopyImageToBuffer-srcImage-parameter srcImage must be a valid  handle4VUID-vkCmdCopyImageToBuffer-srcImageLayout-parameter srcImageLayout must be a valid O value/VUID-vkCmdCopyImageToBuffer-dstBuffer-parameter  dstBuffer must be a valid  handle.VUID-vkCmdCopyImageToBuffer-pRegions-parameter pRegions must( be a valid pointer to an array of  regionCount valid & structures3VUID-vkCmdCopyImageToBuffer-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state1VUID-vkCmdCopyImageToBuffer-commandBuffer-cmdpool The / that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations&VUID-vkCmdCopyImageToBuffer-renderpass This command must6 only be called outside of a render pass instance3VUID-vkCmdCopyImageToBuffer-regionCount-arraylength  regionCount must be greater than 0(VUID-vkCmdCopyImageToBuffer-commonparent Each of  commandBuffer,  dstBuffer, and srcImage must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, &, , , O2lvulkan?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 2l 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 2l\ 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.2l is only allowed outside of a render pass. This command is treated as transfer  operation, for the purposes of synchronization barriers. The  must be specified in usage of 0 in order for the buffer to be compatible with 2l. Valid Usage&VUID-vkCmdUpdateBuffer-dstOffset-00032  dstOffset must be less than the size of  dstBuffer%VUID-vkCmdUpdateBuffer-dataSize-00033 dataSize must+ be less than or equal to the size of  dstBuffer minus  dstOffset&VUID-vkCmdUpdateBuffer-dstBuffer-00034  dstBuffer must" have been created with  usage flag&VUID-vkCmdUpdateBuffer-dstBuffer-00035 If  dstBuffer is non-sparse then it must7 be bound completely and contiguously to a single / object&VUID-vkCmdUpdateBuffer-dstOffset-00036  dstOffset must be a multiple of 4%VUID-vkCmdUpdateBuffer-dataSize-00037 dataSize must be less than or equal to 65536%VUID-vkCmdUpdateBuffer-dataSize-00038 dataSize must be a multiple of 4*VUID-vkCmdUpdateBuffer-commandBuffer-01813 If  commandBuffer- is an unprotected command buffer, then  dstBuffer must not be a protected buffer*VUID-vkCmdUpdateBuffer-commandBuffer-01814 If  commandBuffer* is a protected command buffer, then  dstBuffer must" not be an unprotected bufferValid Usage (Implicit).VUID-vkCmdUpdateBuffer-commandBuffer-parameter  commandBuffer must be a valid  handle*VUID-vkCmdUpdateBuffer-dstBuffer-parameter  dstBuffer must be a valid  handle&VUID-vkCmdUpdateBuffer-pData-parameter pData must( be a valid pointer to an array of dataSize bytes.VUID-vkCmdUpdateBuffer-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state,VUID-vkCmdUpdateBuffer-commandBuffer-cmdpool The / that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations!VUID-vkCmdUpdateBuffer-renderpass This command must6 only be called outside of a render pass instance+VUID-vkCmdUpdateBuffer-dataSize-arraylength dataSize must be greater than 0#VUID-vkCmdUpdateBuffer-commonparent Both 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 / 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, , n2mvulkan>vkCmdFillBuffer - Fill a region of a buffer with a fixed value Description2mX is treated as transfer  operation for the purposes of synchronization barriers. The  must be specified in usage of 0 in order for the buffer to be compatible with 2m. Valid Usage$VUID-vkCmdFillBuffer-dstOffset-00024  dstOffset must be less than the size of  dstBuffer$VUID-vkCmdFillBuffer-dstOffset-00025  dstOffset must be a multiple of 4VUID-vkCmdFillBuffer-size-00026 If size is not equal to , size must be greater than 0VUID-vkCmdFillBuffer-size-00027 If size is not equal to , size must+ be less than or equal to the size of  dstBuffer minus  dstOffsetVUID-vkCmdFillBuffer-size-00028 If size is not equal to , size must be a multiple of 4$VUID-vkCmdFillBuffer-dstBuffer-00029  dstBuffer must" have been created with  usage flag$VUID-vkCmdFillBuffer-dstBuffer-00031 If  dstBuffer is non-sparse then it must7 be bound completely and contiguously to a single / object(VUID-vkCmdFillBuffer-commandBuffer-01811 If  commandBuffer- is an unprotected command buffer, then  dstBuffer must not be a protected buffer(VUID-vkCmdFillBuffer-commandBuffer-01812 If  commandBuffer* is a protected command buffer, then  dstBuffer must" not be an unprotected bufferValid Usage (Implicit),VUID-vkCmdFillBuffer-commandBuffer-parameter  commandBuffer must be a valid  handle(VUID-vkCmdFillBuffer-dstBuffer-parameter  dstBuffer must be a valid  handle,VUID-vkCmdFillBuffer-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state*VUID-vkCmdFillBuffer-commandBuffer-cmdpool The / that  commandBuffer was allocated from must6 support transfer, graphics or compute operationsVUID-vkCmdFillBuffer-renderpass This command must6 only be called outside of a render pass instance!VUID-vkCmdFillBuffer-commonparent Both 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 / 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, , n2nvulkan5vkCmdClearColorImage - Clear regions of a color image DescriptionEach specified range in pRanges' is cleared to the value specified by pColor. Valid Usage%VUID-vkCmdClearColorImage-image-01993 The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of image must contain { %VUID-vkCmdClearColorImage-image-00002 image must" have been created with  usage flag%VUID-vkCmdClearColorImage-image-01545 image 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%VUID-vkCmdClearColorImage-image-00003 If image is non-sparse then it must7 be bound completely and contiguously to a single / object+VUID-vkCmdClearColorImage-imageLayout-00004  imageLayout must< specify the layout of the image subresource ranges of image specified in pRanges0 at the time this command is executed on a /+VUID-vkCmdClearColorImage-imageLayout-01394  imageLayout must be ?, E , or 9*VUID-vkCmdClearColorImage-aspectMask-02498 The :: aspectMask% members of the elements of the pRanges array must each only include xQ,VUID-vkCmdClearColorImage-baseMipLevel-01470 The :: baseMipLevel% members of the elements of the pRanges array must each be less than the  mipLevels specified in 0 when image was created'VUID-vkCmdClearColorImage-pRanges-01692 For each  element of pRanges , if the  levelCount member is not W , then  baseMipLevel +  levelCount must be less than the  mipLevels specified in 0 when image was created.VUID-vkCmdClearColorImage-baseArrayLayer-01472 The ::baseArrayLayer% members of the elements of the pRanges array must each be less than the  arrayLayers specified in 0 when image was created'VUID-vkCmdClearColorImage-pRanges-01693 For each  element of pRanges , if the  layerCount member is not X , then baseArrayLayer +  layerCount must be less than the  arrayLayers specified in 0 when image was created%VUID-vkCmdClearColorImage-image-00007 image must3 not have a compressed or depth/stencil format-VUID-vkCmdClearColorImage-commandBuffer-01805 If  commandBuffer- is an unprotected command buffer, then image must not be a protected image-VUID-vkCmdClearColorImage-commandBuffer-01806 If  commandBuffer* is a protected command buffer, then image must! not be an unprotected imageValid Usage (Implicit)1VUID-vkCmdClearColorImage-commandBuffer-parameter  commandBuffer must be a valid  handle)VUID-vkCmdClearColorImage-image-parameter image must be a valid  handle/VUID-vkCmdClearColorImage-imageLayout-parameter  imageLayout must be a valid O value+VUID-vkCmdClearColorImage-pRanges-parameter pRanges must( be a valid pointer to an array of  rangeCount valid  structures1VUID-vkCmdClearColorImage-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state/VUID-vkCmdClearColorImage-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operations$VUID-vkCmdClearColorImage-renderpass This command must6 only be called outside of a render pass instance0VUID-vkCmdClearColorImage-rangeCount-arraylength  rangeCount must be greater than 0&VUID-vkCmdClearColorImage-commonparent Both 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 / 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, , , O, 2ovulkanMvkCmdClearDepthStencilImage - Fill regions of a combined depth/stencil image Valid Usage,VUID-vkCmdClearDepthStencilImage-image-01994 The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of image must contain {.VUID-vkCmdClearDepthStencilImage-pRanges-02658 If the aspect member of any element of pRanges includes x , and image was created with  "VkImageStencilUsageCreateInfo.htmlseparate stencil usage,  must have been included in the `:: stencilUsage used to create image.VUID-vkCmdClearDepthStencilImage-pRanges-02659 If the aspect member of any element of pRanges includes x , and image was not created with  "VkImageStencilUsageCreateInfo.htmlseparate stencil usage,  must have been included in the 0::usage used to create image.VUID-vkCmdClearDepthStencilImage-pRanges-02660 If the aspect member of any element of pRanges includes x,  must have been included in the 0::usage used to create image,VUID-vkCmdClearDepthStencilImage-image-00010 If image is non-sparse then it must7 be bound completely and contiguously to a single / object2VUID-vkCmdClearDepthStencilImage-imageLayout-00011  imageLayout must7 specify the layout of the image subresource ranges of image specified in pRanges0 at the time this command is executed on a /2VUID-vkCmdClearDepthStencilImage-imageLayout-00012  imageLayout must be either of ? or E1VUID-vkCmdClearDepthStencilImage-aspectMask-02824 The :: aspectMask$ member of each element of the pRanges array must' not include bits other than x or x,VUID-vkCmdClearDepthStencilImage-image-02825 If 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 x bit,VUID-vkCmdClearDepthStencilImage-image-02826 If the image> s format does not have a depth component, then the :: aspectMask$ member of each element of the pRanges array must not include the x bit3VUID-vkCmdClearDepthStencilImage-baseMipLevel-01474 The :: baseMipLevel% members of the elements of the pRanges array must each be less than the  mipLevels specified in 0 when image was created.VUID-vkCmdClearDepthStencilImage-pRanges-01694 For each  element of pRanges , if the  levelCount member is not W , then  baseMipLevel +  levelCount must be less than the  mipLevels specified in 0 when image was created5VUID-vkCmdClearDepthStencilImage-baseArrayLayer-01476 The ::baseArrayLayer% members of the elements of the pRanges array must each be less than the  arrayLayers specified in 0 when image was created.VUID-vkCmdClearDepthStencilImage-pRanges-01695 For each  element of pRanges , if the  layerCount member is not X , then baseArrayLayer +  layerCount must be less than the  arrayLayers specified in 0 when image was created,VUID-vkCmdClearDepthStencilImage-image-00014 image must! have a depth/stencil format4VUID-vkCmdClearDepthStencilImage-commandBuffer-01807 If  commandBuffer( is an unprotected command buffer, then image must not be a protected image4VUID-vkCmdClearDepthStencilImage-commandBuffer-01808 If  commandBuffer% is a protected command buffer, then image must! not be an unprotected imageValid Usage (Implicit)8VUID-vkCmdClearDepthStencilImage-commandBuffer-parameter  commandBuffer must be a valid  handle 0VUID-vkCmdClearDepthStencilImage-image-parameter image must be a valid  handle6VUID-vkCmdClearDepthStencilImage-imageLayout-parameter  imageLayout must be a valid O value8VUID-vkCmdClearDepthStencilImage-pDepthStencil-parameter  pDepthStencil must$ be a valid pointer to a valid $ structure2VUID-vkCmdClearDepthStencilImage-pRanges-parameter pRanges must# be a valid pointer to an array of  rangeCount valid  structures8VUID-vkCmdClearDepthStencilImage-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state6VUID-vkCmdClearDepthStencilImage-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations+VUID-vkCmdClearDepthStencilImage-renderpass This command must6 only be called outside of a render pass instance7VUID-vkCmdClearDepthStencilImage-rangeCount-arraylength  rangeCount must be greater than 0-VUID-vkCmdClearDepthStencilImage-commonparent Both 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 / 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$, , , O, 2pvulkanKvkCmdClearAttachments - Clear regions within bound framebuffer attachments Description2p 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, 2pk 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 [> 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 ] and \ stages. Valid Usage+VUID-vkCmdClearAttachments-aspectMask-02501 If the  aspectMask member of any element of  pAttachments contains xQ, then the colorAttachment member of that element must7 either refer to a color attachment which is , or must! be a valid color attachment +VUID-vkCmdClearAttachments-aspectMask-02502 If the  aspectMask member of any element of  pAttachments contains x:, then the current subpass' depth/stencil attachment must either be , or must have a depth component+VUID-vkCmdClearAttachments-aspectMask-02503 If the  aspectMask member of any element of  pAttachments contains x:, then the current subpass' depth/stencil attachment must either be , or must have a stencil component%VUID-vkCmdClearAttachments-rect-02682 The rect member of each element of pRects must have an  extent.width greater than 0%VUID-vkCmdClearAttachments-rect-02683 The rect member of each element of pRects must have an  extent.height greater than 0'VUID-vkCmdClearAttachments-pRects-00016: The rectangular region specified by each element of pRects mustM be contained within the render area of the current render pass instance'VUID-vkCmdClearAttachments-pRects-00017. The layers specified by each element of pRects must0 be contained within every attachment that  pAttachments refers to+VUID-vkCmdClearAttachments-layerCount-01934 The  layerCount member of each element of pRects must not be 0.VUID-vkCmdClearAttachments-commandBuffer-02504 If  commandBufferP is an unprotected command buffer, then each attachment to be cleared must not be a protected image.VUID-vkCmdClearAttachments-commandBuffer-02505 If  commandBufferM is a protected command buffer, then each attachment to be cleared must not be an unprotected image/VUID-vkCmdClearAttachments-baseArrayLayer-00018K If the render pass instance this is recorded in uses multiview, then baseArrayLayer must be zero and  layerCount must be oneValid Usage (Implicit)2VUID-vkCmdClearAttachments-commandBuffer-parameter  commandBuffer must be a valid  handle1VUID-vkCmdClearAttachments-pAttachments-parameter  pAttachments must# be a valid pointer to an array of attachmentCount valid % structures+VUID-vkCmdClearAttachments-pRects-parameter pRects must( be a valid pointer to an array of  rectCount # structures2VUID-vkCmdClearAttachments-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state0VUID-vkCmdClearAttachments-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations%VUID-vkCmdClearAttachments-renderpass This command must5 only be called inside of a render pass instance6VUID-vkCmdClearAttachments-attachmentCount-arraylength attachmentCount must be greater than 00VUID-vkCmdClearAttachments-rectCount-arraylength  rectCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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%, #, 2qvulkan/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 Usage*VUID-vkCmdResolveImage-commandBuffer-01837 If  commandBuffer- is an unprotected command buffer, then srcImage must not be a protected image*VUID-vkCmdResolveImage-commandBuffer-01838 If  commandBuffer- is an unprotected command buffer, then dstImage must not be a protected image*VUID-vkCmdResolveImage-commandBuffer-01839 If  commandBuffer* is a protected command buffer, then dstImage must! not be an unprotected image%VUID-vkCmdResolveImage-pRegions-00255s The union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory%VUID-vkCmdResolveImage-srcImage-00256 If srcImage is non-sparse then it must7 be bound completely and contiguously to a single / object%VUID-vkCmdResolveImage-srcImage-00257 srcImage mustP have a sample count equal to any valid sample count value other than %4%VUID-vkCmdResolveImage-dstImage-00258 If dstImage is non-sparse then it must7 be bound completely and contiguously to a single / object%VUID-vkCmdResolveImage-dstImage-00259 dstImage must( have a sample count equal to %4+VUID-vkCmdResolveImage-srcImageLayout-00260 srcImageLayout must1 specify the layout of the image subresources of srcImage specified in pRegions0 at the time this command is executed on a /+VUID-vkCmdResolveImage-srcImageLayout-01400 srcImageLayout must be 9, @ or E+VUID-vkCmdResolveImage-dstImageLayout-00262 dstImageLayout must1 specify the layout of the image subresources of dstImage specified in pRegions0 at the time this command is executed on a /+VUID-vkCmdResolveImage-dstImageLayout-01401 dstImageLayout must be 9, ? or E%VUID-vkCmdResolveImage-dstImage-02003 The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of dstImage must contain {5%VUID-vkCmdResolveImage-srcImage-01386 srcImage and dstImage must- have been created with the same image format+VUID-vkCmdResolveImage-srcSubresource-01709 The srcSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 0 when srcImage was created+VUID-vkCmdResolveImage-dstSubresource-01710 The dstSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 0 when dstImage was created+VUID-vkCmdResolveImage-srcSubresource-01711 The srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 0 when srcImage was created+VUID-vkCmdResolveImage-dstSubresource-01712 The dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 0 when dstImage was created%VUID-vkCmdResolveImage-dstImage-02546 dstImage and srcImage must not have been created with flags containing h%VUID-vkCmdResolveImage-srcImage-04446 If either srcImage or dstImage are of type U , then for each element of pRegions, srcSubresource.baseArrayLayer must be 0 and srcSubresource.layerCount must be 1%VUID-vkCmdResolveImage-srcImage-04447 If either srcImage or dstImage are of type U , then for each element of pRegions, dstSubresource.baseArrayLayer must be 0 and dstSubresource.layerCount must be 1&VUID-vkCmdResolveImage-srcOffset-00269 For each element of pRegions,  srcOffset.x and ( extent.width +  srcOffset.x) must" both be greater than or equal to 0; and less than or equal to the width of the specified srcSubresource of srcImage&VUID-vkCmdResolveImage-srcOffset-00270 For each element of pRegions,  srcOffset.y and ( extent.height +  srcOffset.y) must" both be greater than or equal to 0< and less than or equal to the height of the specified srcSubresource of srcImage%VUID-vkCmdResolveImage-srcImage-00271 If srcImage is of type R , then for each element of pRegions,  srcOffset.y must be 0 and  extent.height must be 1&VUID-vkCmdResolveImage-srcOffset-00272 For each element of pRegions,  srcOffset.z and ( extent.depth +  srcOffset.z) must" both be greater than or equal to 0; and less than or equal to the depth of the specified srcSubresource of srcImage%VUID-vkCmdResolveImage-srcImage-00273 If srcImage is of type R or S , then for each element of pRegions,  srcOffset.z must be 0 and  extent.depth must be 1&VUID-vkCmdResolveImage-dstOffset-00274 For each element of pRegions,  dstOffset.x and ( extent.width +  dstOffset.x) must" both be greater than or equal to 0; and less than or equal to the width of the specified dstSubresource of dstImage&VUID-vkCmdResolveImage-dstOffset-00275 For each element of pRegions,  dstOffset.y and ( extent.height +  dstOffset.y) must" both be greater than or equal to 0< and less than or equal to the height of the specified dstSubresource of dstImage%VUID-vkCmdResolveImage-dstImage-00276 If dstImage is of type R , then for each element of pRegions,  dstOffset.y must be 0 and  extent.height must be 1&VUID-vkCmdResolveImage-dstOffset-00277 For each element of pRegions,  dstOffset.z and ( extent.depth +  dstOffset.z) must" both be greater than or equal to 0; and less than or equal to the depth of the specified dstSubresource of dstImage%VUID-vkCmdResolveImage-dstImage-00278 If dstImage is of type R or S , then for each element of pRegions,  dstOffset.z must be 0 and  extent.depth must be 1Valid Usage (Implicit).VUID-vkCmdResolveImage-commandBuffer-parameter  commandBuffer must be a valid  handle )VUID-vkCmdResolveImage-srcImage-parameter srcImage must be a valid  handle/VUID-vkCmdResolveImage-srcImageLayout-parameter srcImageLayout must be a valid O value)VUID-vkCmdResolveImage-dstImage-parameter dstImage must be a valid  handle/VUID-vkCmdResolveImage-dstImageLayout-parameter dstImageLayout must be a valid O value)VUID-vkCmdResolveImage-pRegions-parameter pRegions must( be a valid pointer to an array of  regionCount valid   structures.VUID-vkCmdResolveImage-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state,VUID-vkCmdResolveImage-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations!VUID-vkCmdResolveImage-renderpass This command must6 only be called outside of a render pass instance.VUID-vkCmdResolveImage-regionCount-arraylength  regionCount must be greater than 0#VUID-vkCmdResolveImage-commonparent Each of  commandBuffer, dstImage, and srcImage must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, , O,  2rvulkan5vkCmdSetEvent - Set an event object to signaled state Description2r behaves identically to 7, except that it does not define an access scope, and must only be used with 2t, not . Valid Usage"VUID-vkCmdSetEvent-stageMask-04090 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 _ "VUID-vkCmdSetEvent-stageMask-04091 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 a or `"VUID-vkCmdSetEvent-stageMask-04092 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 L"VUID-vkCmdSetEvent-stageMask-04093 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 R"VUID-vkCmdSetEvent-stageMask-04094 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 K"VUID-vkCmdSetEvent-stageMask-04095 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 Q"VUID-vkCmdSetEvent-stageMask-04096 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 P"VUID-vkCmdSetEvent-stageMask-04097 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 O!VUID-vkCmdSetEvent-stageMask-4098% Any pipeline stage included in  stageMask mustL be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the  , structure that was used to create the / 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"VUID-vkCmdSetEvent-stageMask-03937 If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature is not enabled,  stageMask must not be 0"VUID-vkCmdSetEvent-stageMask-01149  stageMask must not include W&VUID-vkCmdSetEvent-commandBuffer-01152  commandBuffer s current device mask must$ include exactly one physical deviceValid Usage (Implicit)*VUID-vkCmdSetEvent-commandBuffer-parameter  commandBuffer must be a valid  handle"VUID-vkCmdSetEvent-event-parameter event must be a valid  handle&VUID-vkCmdSetEvent-stageMask-parameter  stageMask must% be a valid combination of X values,VUID-vkCmdSetEvent-stageMask-requiredbitmask  stageMask must not be 0*VUID-vkCmdSetEvent-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state(VUID-vkCmdSetEvent-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operationsVUID-vkCmdSetEvent-renderpass This command must6 only be called outside of a render pass instanceVUID-vkCmdSetEvent-commonparent Both 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 / 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, , Y2svulkan=vkCmdResetEvent - Reset an event object to non-signaled state Description2s behaves identically to . Valid Usage$VUID-vkCmdResetEvent-stageMask-04090 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 _ $VUID-vkCmdResetEvent-stageMask-04091 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 a or `$VUID-vkCmdResetEvent-stageMask-04092 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 L$VUID-vkCmdResetEvent-stageMask-04093 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 R$VUID-vkCmdResetEvent-stageMask-04094 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 K$VUID-vkCmdResetEvent-stageMask-04095 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 Q$VUID-vkCmdResetEvent-stageMask-04096 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 P$VUID-vkCmdResetEvent-stageMask-04097 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 O#VUID-vkCmdResetEvent-stageMask-4098% Any pipeline stage included in  stageMask mustL be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the  , structure that was used to create the / 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$VUID-vkCmdResetEvent-stageMask-03937 If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature is not enabled,  stageMask must not be 0$VUID-vkCmdResetEvent-stageMask-01153  stageMask must not include W VUID-vkCmdResetEvent-event-03834 There must) be an execution dependency between 2s and the execution of any 2t that includes event in its pEvents parameter VUID-vkCmdResetEvent-event-03835 There must) be an execution dependency between 2s and the execution of any  that includes event in its pEvents parameter(VUID-vkCmdResetEvent-commandBuffer-01157  commandBuffer s current device mask must$ include exactly one physical deviceValid Usage (Implicit),VUID-vkCmdResetEvent-commandBuffer-parameter  commandBuffer must be a valid  handle$VUID-vkCmdResetEvent-event-parameter event must be a valid  handle(VUID-vkCmdResetEvent-stageMask-parameter  stageMask must% be a valid combination of X values.VUID-vkCmdResetEvent-stageMask-requiredbitmask  stageMask must not be 0,VUID-vkCmdResetEvent-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state*VUID-vkCmdResetEvent-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operationsVUID-vkCmdResetEvent-renderpass This command must6 only be called outside of a render pass instance!VUID-vkCmdResetEvent-commonparent Both 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 / 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, , Y5Mvulkan&cmdWaitEvents with selectable safeness2tvulkanHvkCmdWaitEvents - Wait for one or more events and insert a set of memory Description2t is largely similar to , but can, only wait on signal operations defined by 2r. As 2r# doesn t define any access scopes, 2tg defines the first access scope for each event signal operation in addition to its own access scopes.NoteSince 2r| doesn t have any dependency information beyond a stage mask, implementations do not have the same opportunity to perform  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible&availability and visibility operations or  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transitions in advance as they do with  and .When 2t 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. 2t 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 2r 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 W 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. Valid Usage'VUID-vkCmdWaitEvents-srcStageMask-04090 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 _'VUID-vkCmdWaitEvents-srcStageMask-04091 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 a or `'VUID-vkCmdWaitEvents-srcStageMask-04092 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 L'VUID-vkCmdWaitEvents-srcStageMask-04093 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 R'VUID-vkCmdWaitEvents-srcStageMask-04094 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 K'VUID-vkCmdWaitEvents-srcStageMask-04095 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 Q'VUID-vkCmdWaitEvents-srcStageMask-04096 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 P'VUID-vkCmdWaitEvents-srcStageMask-04097 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 O&VUID-vkCmdWaitEvents-srcStageMask-4098% Any pipeline stage included in  srcStageMask mustL be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the  , structure that was used to create the / 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'VUID-vkCmdWaitEvents-srcStageMask-03937 If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature is not enabled,  srcStageMask must not be 0'VUID-vkCmdWaitEvents-dstStageMask-04090 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 _'VUID-vkCmdWaitEvents-dstStageMask-04091 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 a or `'VUID-vkCmdWaitEvents-dstStageMask-04092 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 L'VUID-vkCmdWaitEvents-dstStageMask-04093 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 R'VUID-vkCmdWaitEvents-dstStageMask-04094 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 K'VUID-vkCmdWaitEvents-dstStageMask-04095 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 Q'VUID-vkCmdWaitEvents-dstStageMask-04096 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 P'VUID-vkCmdWaitEvents-dstStageMask-04097 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 O&VUID-vkCmdWaitEvents-dstStageMask-4098% Any pipeline stage included in  dstStageMask mustL be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the  , structure that was used to create the / 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'VUID-vkCmdWaitEvents-dstStageMask-03937 If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature is not enabled,  dstStageMask must not be 0(VUID-vkCmdWaitEvents-srcAccessMask-02815 The  srcAccessMask member of each element of pMemoryBarriers musta 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 types(VUID-vkCmdWaitEvents-dstAccessMask-02816 The  dstAccessMask member of each element of pMemoryBarriers musta 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 types0VUID-vkCmdWaitEvents-pBufferMemoryBarriers-02817 For 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 types0VUID-vkCmdWaitEvents-pBufferMemoryBarriers-02818 For 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 types/VUID-vkCmdWaitEvents-pImageMemoryBarriers-02819 For 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 types/VUID-vkCmdWaitEvents-pImageMemoryBarriers-02820 For 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'VUID-vkCmdWaitEvents-srcStageMask-01158  srcStageMask must be the bitwise OR of the  stageMask* parameter used in previous calls to 2r with any of the members of pEvents and W if any of the members of pEvents was set using *"VUID-vkCmdWaitEvents-pEvents-01163 If pEvents; includes one or more events that will be signaled by * after  commandBuffer* has been submitted to a queue, then 2t must, not be called inside a render pass instance.VUID-vkCmdWaitEvents-srcQueueFamilyIndex-02803 The srcQueueFamilyIndex and dstQueueFamilyIndex members of any element of pBufferMemoryBarriers or pImageMemoryBarriers must be equal(VUID-vkCmdWaitEvents-commandBuffer-01167  commandBuffer s current device mask must$ include exactly one physical device"VUID-vkCmdWaitEvents-pEvents-03847 Members of pEvents must% not have been signaled by Valid Usage (Implicit),VUID-vkCmdWaitEvents-commandBuffer-parameter  commandBuffer must be a valid  handle &VUID-vkCmdWaitEvents-pEvents-parameter pEvents must( be a valid pointer to an array of  eventCount valid  handles+VUID-vkCmdWaitEvents-srcStageMask-parameter  srcStageMask must% be a valid combination of X values+VUID-vkCmdWaitEvents-dstStageMask-parameter  dstStageMask must% be a valid combination of X values.VUID-vkCmdWaitEvents-pMemoryBarriers-parameter If memoryBarrierCount is not 0, pMemoryBarriers must( be a valid pointer to an array of memoryBarrierCount valid  structures4VUID-vkCmdWaitEvents-pBufferMemoryBarriers-parameter If bufferMemoryBarrierCount is not 0, pBufferMemoryBarriers must# be a valid pointer to an array of bufferMemoryBarrierCount valid  structures3VUID-vkCmdWaitEvents-pImageMemoryBarriers-parameter If imageMemoryBarrierCount is not 0, pImageMemoryBarriers must( be a valid pointer to an array of imageMemoryBarrierCount valid  structures,VUID-vkCmdWaitEvents-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state*VUID-vkCmdWaitEvents-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operations+VUID-vkCmdWaitEvents-eventCount-arraylength  eventCount must be greater than 0!VUID-vkCmdWaitEvents-commonparent Both of  commandBuffer, and the elements of pEvents must? have been created, allocated, or retrieved from the same /Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, , , , , Y2uvulkan A variant of 2t which makes a *safe* FFI call2vvulkan1vkCmdPipelineBarrier - Insert a memory dependency Description2v! operates almost identically to le, other than the scopes and barriers defined as direct parameters rather than being defined by an ).When 2v is submitted to a queue, it defines a memory dependency between commands that were submitted before it, and those submitted after it.If 2v: 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 2v| 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 2v; 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 2v{ 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  , 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,VUID-vkCmdPipelineBarrier-srcStageMask-04090 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 _,VUID-vkCmdPipelineBarrier-srcStageMask-04091 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 a or `,VUID-vkCmdPipelineBarrier-srcStageMask-04092 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 L,VUID-vkCmdPipelineBarrier-srcStageMask-04093 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 R,VUID-vkCmdPipelineBarrier-srcStageMask-04094 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 K,VUID-vkCmdPipelineBarrier-srcStageMask-04095 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 Q,VUID-vkCmdPipelineBarrier-srcStageMask-04096 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 P,VUID-vkCmdPipelineBarrier-srcStageMask-04097 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 O+VUID-vkCmdPipelineBarrier-srcStageMask-4098% Any pipeline stage included in  srcStageMask mustL be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the  , structure that was used to create the / 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,VUID-vkCmdPipelineBarrier-srcStageMask-03937 If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature is not enabled,  srcStageMask must not be 0,VUID-vkCmdPipelineBarrier-dstStageMask-04090 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 _,VUID-vkCmdPipelineBarrier-dstStageMask-04091 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 a or `,VUID-vkCmdPipelineBarrier-dstStageMask-04092 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 L,VUID-vkCmdPipelineBarrier-dstStageMask-04093 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 R,VUID-vkCmdPipelineBarrier-dstStageMask-04094 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 K,VUID-vkCmdPipelineBarrier-dstStageMask-04095 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 Q,VUID-vkCmdPipelineBarrier-dstStageMask-04096 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 P,VUID-vkCmdPipelineBarrier-dstStageMask-04097 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 O+VUID-vkCmdPipelineBarrier-dstStageMask-4098% Any pipeline stage included in  dstStageMask mustL be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the  , structure that was used to create the / 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,VUID-vkCmdPipelineBarrier-dstStageMask-03937 If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2synchronization2 feature is not enabled,  dstStageMask must not be 0-VUID-vkCmdPipelineBarrier-srcAccessMask-02815 The  srcAccessMask member of each element of pMemoryBarriers musta 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 types-VUID-vkCmdPipelineBarrier-dstAccessMask-02816 The  dstAccessMask member of each element of pMemoryBarriers musta 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 types5VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02817 For 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 types5VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02818 For 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 types4VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-02819 For 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 types4VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-02820 For 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-VUID-vkCmdPipelineBarrier-pDependencies-02285 If 2v? is called within a render pass instance, the render pass must* have been created with at least one 6c instance in 6~:: 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 command8VUID-vkCmdPipelineBarrier-bufferMemoryBarrierCount-01178 If 2v2 is called within a render pass instance, it must' not include any buffer memory barriers%VUID-vkCmdPipelineBarrier-image-04073 If 2v3 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 attachment)VUID-vkCmdPipelineBarrier-oldLayout-01181 If 2v3 is called within a render pass instance, the  oldLayout and  newLayoutC members of any image memory barrier included in this command must be equal3VUID-vkCmdPipelineBarrier-srcQueueFamilyIndex-01182 If 2v3 is called within a render pass instance, the srcQueueFamilyIndex and dstQueueFamilyIndexC members of any image memory barrier included in this command must be equal/VUID-vkCmdPipelineBarrier-dependencyFlags-01186 If 2v3 is called outside of a render pass instance,  must( not be included in the dependency flagsValid Usage (Implicit)1VUID-vkCmdPipelineBarrier-commandBuffer-parameter  commandBuffer must be a valid  handle 0VUID-vkCmdPipelineBarrier-srcStageMask-parameter  srcStageMask must be a valid combination of X values6VUID-vkCmdPipelineBarrier-srcStageMask-requiredbitmask  srcStageMask must not be 00VUID-vkCmdPipelineBarrier-dstStageMask-parameter  dstStageMask must be a valid combination of X values6VUID-vkCmdPipelineBarrier-dstStageMask-requiredbitmask  dstStageMask must not be 03VUID-vkCmdPipelineBarrier-dependencyFlags-parameter dependencyFlags must be a valid combination of G values3VUID-vkCmdPipelineBarrier-pMemoryBarriers-parameter If memoryBarrierCount is not 0, pMemoryBarriers must( be a valid pointer to an array of memoryBarrierCount valid  structures9VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-parameter If bufferMemoryBarrierCount is not 0, pBufferMemoryBarriers must# be a valid pointer to an array of bufferMemoryBarrierCount valid  structures8VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-parameter If imageMemoryBarrierCount is not 0, pImageMemoryBarriers must( be a valid pointer to an array of imageMemoryBarrierCount valid  structures1VUID-vkCmdPipelineBarrier-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state/VUID-vkCmdPipelineBarrier-commandBuffer-cmdpool The / that  commandBuffer was allocated from must7 support transfer, graphics, or compute operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, , H, , , Y2wvulkanvkCmdBeginQuery - 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 2w is equivalent to calling  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 UsageVUID-vkCmdBeginQuery-None-00807& All queries used by the command must be unavailable$VUID-vkCmdBeginQuery-queryType-02804 The  queryType used to create  queryPool must not be #$VUID-vkCmdBeginQuery-queryType-04728 The  queryType used to create  queryPool must not be # or #$VUID-vkCmdBeginQuery-queryType-04729 The  queryType used to create  queryPool must not be #$VUID-vkCmdBeginQuery-queryType-00800 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  VUID-vkCmdBeginQuery-query-00802 query must, be less than the number of queries in  queryPool$VUID-vkCmdBeginQuery-queryType-00803 If the  queryType used to create  queryPool was # , the / that  commandBuffer was allocated from must support graphics operations$VUID-vkCmdBeginQuery-queryType-00804 If the  queryType used to create  queryPool was # and any of the pipelineStatistics( indicate graphics operations, the / that  commandBuffer was allocated from must support graphics operations$VUID-vkCmdBeginQuery-queryType-00805 If the  queryType used to create  queryPool was # and any of the pipelineStatistics' indicate compute operations, the / that  commandBuffer was allocated from must support compute operations(VUID-vkCmdBeginQuery-commandBuffer-01885  commandBuffer must' not be a protected command buffer VUID-vkCmdBeginQuery-query-00808: If 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  queryPool$VUID-vkCmdBeginQuery-queryPool-01922  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$VUID-vkCmdBeginQuery-queryType-02327 If the  queryType used to create  queryPool was # the / that  commandBuffer was allocated from must support graphics operations$VUID-vkCmdBeginQuery-queryType-02328 If the  queryType used to create  queryPool was # then 7::transformFeedbackQueries must be supported$VUID-vkCmdBeginQuery-queryPool-03223 If  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  commandBuffer$VUID-vkCmdBeginQuery-queryPool-03224 If  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  commandBuffer$VUID-vkCmdBeginQuery-queryPool-03225 If  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 instance$VUID-vkCmdBeginQuery-queryPool-03226 If  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-performanceCounterMultipleQueryPools$performanceCounterMultipleQueryPools feature must be enabledVUID-vkCmdBeginQuery-None-02863 If  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 2z! command affecting the same queryValid Usage (Implicit),VUID-vkCmdBeginQuery-commandBuffer-parameter  commandBuffer must be a valid  handle(VUID-vkCmdBeginQuery-queryPool-parameter  queryPool must be a valid | handle$VUID-vkCmdBeginQuery-flags-parameter flags must% be a valid combination of [ values,VUID-vkCmdBeginQuery-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state*VUID-vkCmdBeginQuery-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operations!VUID-vkCmdBeginQuery-commonparent Both 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 / 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, \, |2xvulkan>This function will call the supplied action between calls to 2w and 2y Note that 2y@ is *not* called if an exception is thrown by the inner action.2yvulkanvkCmdEndQuery - Ends a query DescriptionCalling 2y 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 2|;, 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 UsageVUID-vkCmdEndQuery-None-01923& All queries used by the command must be fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactiveVUID-vkCmdEndQuery-query-00810 query must, be less than the number of queries in  queryPool&VUID-vkCmdEndQuery-commandBuffer-01886  commandBuffer must' not be a protected command bufferVUID-vkCmdEndQuery-query-00812 If 2y: 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  queryPool"VUID-vkCmdEndQuery-queryPool-03227 If  queryPool was created with a  queryType of #5 and one or more of the counters used to create  queryPool was  , the 2y must& be the last recorded command in  commandBuffer"VUID-vkCmdEndQuery-queryPool-03228 If  queryPool was created with a  queryType of #5 and one or more of the counters used to create  queryPool was  , the 2y must3 not be recorded within a render pass instanceValid Usage (Implicit)*VUID-vkCmdEndQuery-commandBuffer-parameter  commandBuffer must be a valid  handle&VUID-vkCmdEndQuery-queryPool-parameter  queryPool must be a valid | handle*VUID-vkCmdEndQuery-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state(VUID-vkCmdEndQuery-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operationsVUID-vkCmdEndQuery-commonparent Both 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 / 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, |2zvulkan3vkCmdResetQueryPool - 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 .NoteBecause 2zQ resets all the passes of the indicated queries, applications must not record a 2z command for a  queryPool created with #\ in a command buffer that needs to be submitted multiple times as indicated by a call to O. Otherwise applications will never be able to complete the recorded queries. Valid Usage)VUID-vkCmdResetQueryPool-firstQuery-00796  firstQuery must, be less than the number of queries in  queryPool)VUID-vkCmdResetQueryPool-firstQuery-00797 The sum of  firstQuery and  queryCount must8 be less than or equal to the number of queries in  queryPool#VUID-vkCmdResetQueryPool-None-02841& All queries used by the command must not be active)VUID-vkCmdResetQueryPool-firstQuery-02862 If  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)0VUID-vkCmdResetQueryPool-commandBuffer-parameter  commandBuffer must be a valid  handle,VUID-vkCmdResetQueryPool-queryPool-parameter  queryPool must be a valid | handle0VUID-vkCmdResetQueryPool-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state.VUID-vkCmdResetQueryPool-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operations#VUID-vkCmdResetQueryPool-renderpass This command must6 only be called outside of a render pass instance%VUID-vkCmdResetQueryPool-commonparent Both 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 / 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, |2{vulkanBvkCmdWriteTimestamp - Write a device timestamp into a query object Description2{ 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 2{ 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,VUID-vkCmdWriteTimestamp-pipelineStage-04074  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 ,VUID-vkCmdWriteTimestamp-pipelineStage-04075 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 _,VUID-vkCmdWriteTimestamp-pipelineStage-04076 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 a or `,VUID-vkCmdWriteTimestamp-pipelineStage-04077 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 L,VUID-vkCmdWriteTimestamp-pipelineStage-04078 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 R,VUID-vkCmdWriteTimestamp-pipelineStage-04079 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 K,VUID-vkCmdWriteTimestamp-pipelineStage-04080 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 Q or P,VUID-vkCmdWriteTimestamp-pipelineStage-04081 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 O(VUID-vkCmdWriteTimestamp-queryPool-01416  queryPool must have been created with a  queryType of #(VUID-vkCmdWriteTimestamp-queryPool-00828 The query identified by  queryPool and query must be  unavailable1VUID-vkCmdWriteTimestamp-timestampValidBits-00829& The command pool s queue family must support a non-zero timestampValidBits#VUID-vkCmdWriteTimestamp-None-00830& All queries used by the command must be unavailable$VUID-vkCmdWriteTimestamp-query-00831 If 2{: 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)0VUID-vkCmdWriteTimestamp-commandBuffer-parameter  commandBuffer must be a valid  handle0VUID-vkCmdWriteTimestamp-pipelineStage-parameter  pipelineStage must be a valid X value,VUID-vkCmdWriteTimestamp-queryPool-parameter  queryPool must be a valid | handle0VUID-vkCmdWriteTimestamp-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state.VUID-vkCmdWriteTimestamp-commandBuffer-cmdpool The / that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations%VUID-vkCmdWriteTimestamp-commonparent Both 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 / 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, |2|vulkan[vkCmdCopyQueryPoolResults - Copy the results of queries in a query pool to a buffer object Description2|6 is guaranteed to see the effect of previous uses of 2z 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 2| 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 #.2|L is considered to be a transfer operation, and its writes to buffer memory must be synchronized using Y and  before using the results. Valid Usage.VUID-vkCmdCopyQueryPoolResults-dstOffset-00819  dstOffset must be less than the size of  dstBuffer /VUID-vkCmdCopyQueryPoolResults-firstQuery-00820  firstQuery must' be less than the number of queries in  queryPool/VUID-vkCmdCopyQueryPoolResults-firstQuery-00821 The sum of  firstQuery and  queryCount must8 be less than or equal to the number of queries in  queryPool*VUID-vkCmdCopyQueryPoolResults-flags-00822 If   is not set in flags then  dstOffset and stride must be multiples of 4*VUID-vkCmdCopyQueryPoolResults-flags-00823 If   is set in flags then  dstOffset and stride must be multiples of 8.VUID-vkCmdCopyQueryPoolResults-dstBuffer-00824  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.VUID-vkCmdCopyQueryPoolResults-dstBuffer-00825  dstBuffer must" have been created with  usage flag.VUID-vkCmdCopyQueryPoolResults-dstBuffer-00826 If  dstBuffer is non-sparse then it must7 be bound completely and contiguously to a single / object.VUID-vkCmdCopyQueryPoolResults-queryType-00827 If the  queryType used to create  queryPool was #, flags must not contain  .VUID-vkCmdCopyQueryPoolResults-queryType-03232 If the  queryType used to create  queryPool was #, ::allowCommandBufferQueryCopies must be ..VUID-vkCmdCopyQueryPoolResults-queryType-03233 If the  queryType used to create  queryPool was #, flags must not contain  ,   or  .VUID-vkCmdCopyQueryPoolResults-queryType-03234 If the  queryType used to create  queryPool was # , the  queryPool mustM have been submitted once for each pass as retrieved via a call to .VUID-vkCmdCopyQueryPoolResults-queryType-02734 2| must not be called if the  queryType used to create  queryPool was #Valid Usage (Implicit)6VUID-vkCmdCopyQueryPoolResults-commandBuffer-parameter  commandBuffer must be a valid  handle2VUID-vkCmdCopyQueryPoolResults-queryPool-parameter  queryPool must be a valid | handle2VUID-vkCmdCopyQueryPoolResults-dstBuffer-parameter  dstBuffer must be a valid  handle.VUID-vkCmdCopyQueryPoolResults-flags-parameter flags must% be a valid combination of ] values6VUID-vkCmdCopyQueryPoolResults-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state4VUID-vkCmdCopyQueryPoolResults-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operations)VUID-vkCmdCopyQueryPoolResults-renderpass This command must6 only be called outside of a render pass instance+VUID-vkCmdCopyQueryPoolResults-commonparent Each 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 / 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, |, ^2}vulkan8vkCmdPushConstants - Update the values of push constants DescriptionPWhen a command buffer begins recording, all push constant values are undefined.Push constant values can5 be updated incrementally, causing shader stages in  stageFlags to read the new data from pValues for push constants modified by this command, while still reading the previous data for push constants not modified by this command. When a  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-bindpoint-commandsbound pipeline command) is issued, the bound pipeline s layout must be compatible with the layouts used to set the values of all push constants in the pipeline layout s push constant ranges, as described in  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibilityPipeline Layout Compatibility. Binding a pipeline with a layout that is not compatible with the push constant layout does not disturb the push constant values.NoteAs  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 / used to allocate  commandBuffer was created on are ignored. Valid Usage$VUID-vkCmdPushConstants-offset-01795. 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$VUID-vkCmdPushConstants-offset-01796. For each byte in the range specified by offset and size@ and for each push constant range that overlaps that byte,  stageFlags must< include all stages in that push constant range s 9:: stageFlags$VUID-vkCmdPushConstants-offset-00368 offset must be a multiple of 4"VUID-vkCmdPushConstants-size-00369 size must be a multiple of 4$VUID-vkCmdPushConstants-offset-00370 offset must be less than  ::maxPushConstantsSize"VUID-vkCmdPushConstants-size-00371 size must$ be less than or equal to  ::maxPushConstantsSize minus offsetValid Usage (Implicit)/VUID-vkCmdPushConstants-commandBuffer-parameter  commandBuffer must be a valid  handle(VUID-vkCmdPushConstants-layout-parameter layout must be a valid } handle,VUID-vkCmdPushConstants-stageFlags-parameter  stageFlags must% be a valid combination of c values2VUID-vkCmdPushConstants-stageFlags-requiredbitmask  stageFlags must not be 0)VUID-vkCmdPushConstants-pValues-parameter pValues must( be a valid pointer to an array of size bytes/VUID-vkCmdPushConstants-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state-VUID-vkCmdPushConstants-commandBuffer-cmdpool The / that  commandBuffer was allocated from must( support graphics, or compute operations(VUID-vkCmdPushConstants-size-arraylength size must be greater than 0$VUID-vkCmdPushConstants-commonparent Both 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 / 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, }, d2~vulkan.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 Usage-VUID-vkCmdBeginRenderPass-initialLayout-00895 If any of the  initialLayout or  finalLayout member of the 6 structures or the layout member of the 6O structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is D\ 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  -VUID-vkCmdBeginRenderPass-initialLayout-01758 If any of the  initialLayout or  finalLayout member of the 6 structures or the layout member of the 6O structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is 2, 3, C, or B\ 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 -VUID-vkCmdBeginRenderPass-initialLayout-02842 If any of the  initialLayout or  finalLayout member of the 6 structures or the layout member of the 6O structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is 4, or 5, 6, or 7\ 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 4VUID-vkCmdBeginRenderPass-stencilInitialLayout-02843 If 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 6, or 7\ 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 -VUID-vkCmdBeginRenderPass-initialLayout-00897 If any of the  initialLayout or  finalLayout member of the 6 structures or the layout member of the 6O structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is A\ 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  or -VUID-vkCmdBeginRenderPass-initialLayout-00898 If any of the  initialLayout or  finalLayout member of the 6 structures or the layout member of the 6O 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 -VUID-vkCmdBeginRenderPass-initialLayout-00899 If any of the  initialLayout or  finalLayout member of the 6 structures or the layout member of the 6O 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 -VUID-vkCmdBeginRenderPass-initialLayout-00900 If any of the  initialLayout members of the 6J structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is not F, 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 pRenderPassBegin,VUID-vkCmdBeginRenderPass-srcStageMask-00901 The  srcStageMask and  dstStageMask members of any element of the  pDependencies member of 6~ 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 from+VUID-vkCmdBeginRenderPass-framebuffer-02532 For 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  setValid Usage (Implicit)1VUID-vkCmdBeginRenderPass-commandBuffer-parameter  commandBuffer must be a valid  handle4VUID-vkCmdBeginRenderPass-pRenderPassBegin-parameter pRenderPassBegin must$ be a valid pointer to a valid  structure,VUID-vkCmdBeginRenderPass-contents-parameter contents must be a valid h value1VUID-vkCmdBeginRenderPass-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state/VUID-vkCmdBeginRenderPass-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations$VUID-vkCmdBeginRenderPass-renderpass This command must6 only be called outside of a render pass instance%VUID-vkCmdBeginRenderPass-bufferlevel  commandBuffer must be a primary Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, , h2vulkan>This function will call the supplied action between calls to 2~ and 2 Note that 2@ is *not* called if an exception is thrown by the inner action.2vulkanBvkCmdNextSubpass - Transition to the next subpass of a render pass Description9The subpass index for a render pass begins at zero when 2~( is recorded, and increments each time 2 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 [9 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 Usage VUID-vkCmdNextSubpass-None-00909 The current subpass index mustG be less than the number of subpasses in the render pass minus one VUID-vkCmdNextSubpass-None-02349 This command must7 not be recorded when transform feedback is activeValid Usage (Implicit)-VUID-vkCmdNextSubpass-commandBuffer-parameter  commandBuffer must be a valid  handle(VUID-vkCmdNextSubpass-contents-parameter contents must be a valid h value-VUID-vkCmdNextSubpass-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state+VUID-vkCmdNextSubpass-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations VUID-vkCmdNextSubpass-renderpass This command must5 only be called inside of a render pass instance!VUID-vkCmdNextSubpass-bufferlevel  commandBuffer must be a primary Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, h2vulkan0vkCmdEndRenderPass - End the current render pass Description`Ending a render pass instance performs any multisample resolve operations on the final subpass. Valid Usage"VUID-vkCmdEndRenderPass-None-00910 The current subpass index mustF be equal to the number of subpasses in the render pass minus one"VUID-vkCmdEndRenderPass-None-02351 This command must7 not be recorded when transform feedback is activeValid Usage (Implicit)/VUID-vkCmdEndRenderPass-commandBuffer-parameter  commandBuffer must be a valid  handle/VUID-vkCmdEndRenderPass-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state-VUID-vkCmdEndRenderPass-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations"VUID-vkCmdEndRenderPass-renderpass This command must5 only be called inside of a render pass instance#VUID-vkCmdEndRenderPass-bufferlevel  commandBuffer must be a primary Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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 Also2vulkanXvkCmdExecuteCommands - Execute a secondary command buffer from a primary command buffer DescriptionIf any element of pCommandBuffers was not recorded with the ^ 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 Usage/VUID-vkCmdExecuteCommands-pCommandBuffers-00088 Each element of pCommandBuffers must have been allocated with a level of /VUID-vkCmdExecuteCommands-pCommandBuffers-00089 Each element of pCommandBuffers must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclepending or executable state/VUID-vkCmdExecuteCommands-pCommandBuffers-00091 If any element of pCommandBuffers was not recorded with the  flag, it must not be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state/VUID-vkCmdExecuteCommands-pCommandBuffers-00092 If any element of pCommandBuffers was not recorded with the  flag, it must# not have already been recorded to  commandBuffer/VUID-vkCmdExecuteCommands-pCommandBuffers-00093 If any element of pCommandBuffers was not recorded with the  flag, it must not appear more than once in pCommandBuffers/VUID-vkCmdExecuteCommands-pCommandBuffers-00094 Each element of pCommandBuffers must! have been allocated from a /8 that was created for the same queue family as the / from which  commandBuffer was allocated(VUID-vkCmdExecuteCommands-contents-00095 If 2T is being called within a render pass instance, that render pass instance must have been begun with the contents parameter of 2~ set to ;/VUID-vkCmdExecuteCommands-pCommandBuffers-00096 If 2E is being called within a render pass instance, each element of pCommandBuffers must" have been recorded with the /VUID-vkCmdExecuteCommands-pCommandBuffers-00097 If 2E 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 in0VUID-vkCmdExecuteCommands-pInheritanceInfo-00098 If 2] 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 pass/VUID-vkCmdExecuteCommands-pCommandBuffers-00099 If 2H is being called within a render pass instance, and any element of pCommandBuffers was recorded with  :: framebuffer not equal to 8 , that  must match the . used in the current render pass instance%VUID-vkCmdExecuteCommands-pNext-02865 If 2G is being called within a render pass instance that included | in the pNext chain of , then each element of pCommandBuffers must have been recorded with !  in the pNext chain of  %VUID-vkCmdExecuteCommands-pNext-02866 If 2G is being called within a render pass instance that included | in the pNext chain of , then each element of pCommandBuffers must have been recorded with ! :: transform identical to |:: transform%VUID-vkCmdExecuteCommands-pNext-02867 If 2G is being called within a render pass instance that included | in the pNext chain of , then each element of pCommandBuffers must have been recorded with ! :: renderArea identical to :: renderArea/VUID-vkCmdExecuteCommands-pCommandBuffers-00100 If 2I is not being called within a render pass instance, each element of pCommandBuffers must+ not have been recorded with the -VUID-vkCmdExecuteCommands-commandBuffer-00101 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-activeactive-VUID-vkCmdExecuteCommands-commandBuffer-00102 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  ::occlusionQueryEnable set to .-VUID-vkCmdExecuteCommands-commandBuffer-00103 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 query-VUID-vkCmdExecuteCommands-commandBuffer-00104 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  ::pipelineStatistics3 having all bits set that are set in the | the query uses/VUID-vkCmdExecuteCommands-pCommandBuffers-00105 Each 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  commandBuffer-VUID-vkCmdExecuteCommands-commandBuffer-01820 If  commandBuffer? is a protected command buffer, then each element of pCommandBuffers must be a protected command buffer-VUID-vkCmdExecuteCommands-commandBuffer-01821 If  commandBufferB is an unprotected command buffer, then each element of pCommandBuffers must! be an unprotected command buffer$VUID-vkCmdExecuteCommands-None-02286 This command must7 not be recorded when transform feedback is activeValid Usage (Implicit)1VUID-vkCmdExecuteCommands-commandBuffer-parameter  commandBuffer must be a valid  handle3VUID-vkCmdExecuteCommands-pCommandBuffers-parameter pCommandBuffers must( be a valid pointer to an array of commandBufferCount valid  handles1VUID-vkCmdExecuteCommands-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state/VUID-vkCmdExecuteCommands-commandBuffer-cmdpool The / that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations%VUID-vkCmdExecuteCommands-bufferlevel  commandBuffer must be a primary 8VUID-vkCmdExecuteCommands-commandBufferCount-arraylength commandBufferCount must be greater than 0&VUID-vkCmdExecuteCommands-commonparent Both 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 / 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.2Tvulkan commandBuffer; is the command buffer that the pipeline will be bound to.vulkanpipelineBindPoint is a Wg value specifying to which bind point the pipeline is bound. Binding one does not disturb the others.vulkanpipeline is the pipeline to be bound.2Uvulkan 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.2Vvulkan 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 q) structures defining scissor rectangles.2Wvulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkan lineWidth* is the width of rasterized line segments.2Xvulkan 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.2Yvulkan 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.2Zvulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanminDepthBounds is the minimum depth bound.vulkanmaxDepthBounds is the maximum depth bound.2[vulkan 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.2\vulkan 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 2[.vulkan writeMask3 is the new value to use as the stencil write mask.2]vulkan 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 2[.vulkan reference8 is the new value to use as the stencil reference value.2^vulkan commandBufferB is the command buffer that the descriptor sets will be bound to.vulkanpipelineBindPoint is a W indicating the type of the pipeline that will use the descriptors. There is a separate set of bind points for each pipeline type, so binding one does not disturb the others.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.2_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 TE value specifying whether indices are treated as 16 bits or 32 bits.2`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.2avulkan 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.2bvulkan 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.2cvulkan 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.2dvulkan 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.2evulkan 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.2fvulkan 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.2gvulkan 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.2hvulkan 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.2ivulkan 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 J> specifying the filter to apply if the blits require scaling.2jvulkan 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.2kvulkan 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.2lvulkan 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.2mvulkan 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.2nvulkan 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 9, E 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.2ovulkan 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 E 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.2pvulkan 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 3, 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.2qvulkan 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.2rvulkan 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.2svulkan 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.5Mvulkan 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.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.2uvulkan 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.2vvulkan 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-masks source stages.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 stages.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.2wvulkan 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.2yvulkan 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.2zvulkan 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.2{vulkan 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.2|vulkan 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.2}vulkan 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.2~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.vulkancontents is a hJ value specifying how the commands in the first subpass will be provided.2vulkan 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 2~.2vulkan commandBufferI is the command buffer in which to end the current render pass instance.2vulkan 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.2 22!2)2*2-2+2,2.2K2L2O2M2N 2/2423212022!2A2F2E2C2B2D"2<2=2?2>2@#2P2S2R2Q$2&2'2(%2"2#2$2%&252;262728292:'2G2J2I2HTe    fh:<;2222T2U2V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2|2}2~22222T2U2V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2|2}2~2222#2P2S2R2Q2K2L2O2M2N'2G2J2I2H!2A2F2E2C2B2D"2<2=2?2>2@&252;262728292: 2/24232120222)2*2-2+2,2.$2&2'2(%2"2#2$2%2 22!222Th:<;<;e       fNone("#%&'-./1789;=>?FHIMSUVX_dghklmq̚@xvulkanRVkResolveImageInfo2KHR - Structure specifying parameters of resolve image command Valid Usage*VUID-VkResolveImageInfo2KHR-pRegions-00255s The union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory*VUID-VkResolveImageInfo2KHR-srcImage-00256 If srcImage is non-sparse then it must7 be bound completely and contiguously to a single / object*VUID-VkResolveImageInfo2KHR-srcImage-00257 srcImage mustP have a sample count equal to any valid sample count value other than %4*VUID-VkResolveImageInfo2KHR-dstImage-00258 If dstImage is non-sparse then it must7 be bound completely and contiguously to a single / object*VUID-VkResolveImageInfo2KHR-dstImage-00259 dstImage must( have a sample count equal to %40VUID-VkResolveImageInfo2KHR-srcImageLayout-00260 srcImageLayout must1 specify the layout of the image subresources of srcImage specified in pRegions0 at the time this command is executed on a /0VUID-VkResolveImageInfo2KHR-srcImageLayout-01400 srcImageLayout must be , [ or C0VUID-VkResolveImageInfo2KHR-dstImageLayout-00262 dstImageLayout must1 specify the layout of the image subresources of dstImage specified in pRegions0 at the time this command is executed on a /0VUID-VkResolveImageInfo2KHR-dstImageLayout-01401 dstImageLayout must be , \ or C*VUID-VkResolveImageInfo2KHR-dstImage-02003 The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of dstImage must contain {5*VUID-VkResolveImageInfo2KHR-srcImage-01386 srcImage and dstImage must- have been created with the same image format0VUID-VkResolveImageInfo2KHR-srcSubresource-01709 The srcSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 0 when srcImage was created0VUID-VkResolveImageInfo2KHR-dstSubresource-01710 The dstSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 0 when dstImage was created0VUID-VkResolveImageInfo2KHR-srcSubresource-01711 The srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 0 when srcImage was created0VUID-VkResolveImageInfo2KHR-dstSubresource-01712 The dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 0 when dstImage was created*VUID-VkResolveImageInfo2KHR-dstImage-02546 dstImage and srcImage must not have been created with flags containing h*VUID-VkResolveImageInfo2KHR-srcImage-04446 If either srcImage or dstImage are of type U , then for each element of pRegions, srcSubresource.baseArrayLayer must be 0 and srcSubresource.layerCount must be 1*VUID-VkResolveImageInfo2KHR-srcImage-04447 If either srcImage or dstImage are of type U , then for each element of pRegions, dstSubresource.baseArrayLayer must be 0 and dstSubresource.layerCount must be 1+VUID-VkResolveImageInfo2KHR-srcOffset-00269 For each element of pRegions,  srcOffset.x and ( extent.width +  srcOffset.x) must" both be greater than or equal to 0; and less than or equal to the width of the specified srcSubresource of srcImage+VUID-VkResolveImageInfo2KHR-srcOffset-00270 For each element of pRegions,  srcOffset.y and ( extent.height +  srcOffset.y) must" both be greater than or equal to 0< and less than or equal to the height of the specified srcSubresource of srcImage*VUID-VkResolveImageInfo2KHR-srcImage-00271 If srcImage is of type R , then for each element of pRegions,  srcOffset.y must be 0 and  extent.height must be 1+VUID-VkResolveImageInfo2KHR-srcOffset-00272 For each element of pRegions,  srcOffset.z and ( extent.depth +  srcOffset.z) must" both be greater than or equal to 0; and less than or equal to the depth of the specified srcSubresource of srcImage*VUID-VkResolveImageInfo2KHR-srcImage-00273 If srcImage is of type R or S , then for each element of pRegions,  srcOffset.z must be 0 and  extent.depth must be 1+VUID-VkResolveImageInfo2KHR-dstOffset-00274 For each element of pRegions,  dstOffset.x and ( extent.width +  dstOffset.x) must" both be greater than or equal to 0; and less than or equal to the width of the specified dstSubresource of dstImage+VUID-VkResolveImageInfo2KHR-dstOffset-00275 For each element of pRegions,  dstOffset.y and ( extent.height +  dstOffset.y) must" both be greater than or equal to 0< and less than or equal to the height of the specified dstSubresource of dstImage*VUID-VkResolveImageInfo2KHR-dstImage-00276 If dstImage is of type R , then for each element of pRegions,  dstOffset.y must be 0 and  extent.height must be 1+VUID-VkResolveImageInfo2KHR-dstOffset-00277 For each element of pRegions,  dstOffset.z and ( extent.depth +  dstOffset.z) must" both be greater than or equal to 0; and less than or equal to the depth of the specified dstSubresource of dstImage*VUID-VkResolveImageInfo2KHR-dstImage-00278 If dstImage is of type R or S , then for each element of pRegions,  dstOffset.z must be 0 and  extent.depth must be 1Valid Usage (Implicit)'VUID-VkResolveImageInfo2KHR-sType-sType sType must be 'VUID-VkResolveImageInfo2KHR-pNext-pNext pNext must be NULL.VUID-VkResolveImageInfo2KHR-srcImage-parameter srcImage must be a valid  handle4VUID-VkResolveImageInfo2KHR-srcImageLayout-parameter srcImageLayout must be a valid O value.VUID-VkResolveImageInfo2KHR-dstImage-parameter dstImage must be a valid  handle4VUID-VkResolveImageInfo2KHR-dstImageLayout-parameter dstImageLayout must be a valid O value.VUID-VkResolveImageInfo2KHR-pRegions-parameter pRegions must( be a valid pointer to an array of  regionCount valid y structures3VUID-VkResolveImageInfo2KHR-regionCount-arraylength  regionCount must be greater than 0(VUID-VkResolveImageInfo2KHR-commonparent Both of dstImage , and srcImage must? have been created, allocated, or retrieved from the same /See Also, O, y, C, 3yvulkanDVkImageResolve2KHR - Structure specifying an image resolve operation Valid Usage(VUID-VkImageResolve2KHR-aspectMask-00266 The  aspectMask member of srcSubresource and dstSubresource must only contain xQ(VUID-VkImageResolve2KHR-layerCount-00267 The  layerCount member of srcSubresource and dstSubresource must matchValid Usage (Implicit)#VUID-VkImageResolve2KHR-sType-sType sType must be #VUID-VkImageResolve2KHR-pNext-pNext pNext must be NULL0VUID-VkImageResolve2KHR-srcSubresource-parameter srcSubresource must be a valid  structure0VUID-VkImageResolve2KHR-dstSubresource-parameter dstSubresource must be a valid  structureSee Alsot, , r, x, Czvulkan>VkImageCopy2KHR - Structure specifying an image copy operation Valid Usage!VUID-VkImageCopy2KHR-extent-00140" The 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)Valid Usage (Implicit) VUID-VkImageCopy2KHR-sType-sType sType must be  VUID-VkImageCopy2KHR-pNext-pNext pNext must be NULL-VUID-VkImageCopy2KHR-srcSubresource-parameter srcSubresource must be a valid  structure-VUID-VkImageCopy2KHR-dstSubresource-parameter dstSubresource must be a valid  structureSee Also}, t, , r, C{vulkan>VkImageBlit2KHR - Structure specifying an image blit operation DescriptionFor each element of the pRegionsX array, a blit operation is performed for the specified source and destination regions. Valid Usage%VUID-VkImageBlit2KHR-aspectMask-00238 The  aspectMask member of srcSubresource and dstSubresource must match%VUID-VkImageBlit2KHR-layerCount-00239 The  layerCount member of srcSubresource and dstSubresource must matchValid Usage (Implicit) VUID-VkImageBlit2KHR-sType-sType sType must be  VUID-VkImageBlit2KHR-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of ~!VUID-VkImageBlit2KHR-sType-unique The sType" value of each struct in the pNext chain must be unique-VUID-VkImageBlit2KHR-srcSubresource-parameter srcSubresource must be a valid  structure-VUID-VkImageBlit2KHR-dstSubresource-parameter dstSubresource must be a valid  structureSee Also, , r, C|vulkanaVkCopyImageToBufferInfo2KHR - Structure specifying parameters of an image to buffer copy command Valid Usage/VUID-VkCopyImageToBufferInfo2KHR-pRegions-045667 If the image region specified by each element of pRegions does not contain ~ in its pNext chain, it 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&/VUID-VkCopyImageToBufferInfo2KHR-pRegions-045577 If the image region specified by each element of pRegions does contain ~ in its pNext7 chain, the rotated source region as described in  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-rotation-addressing must be contained within srcImage./VUID-VkCopyImageToBufferInfo2KHR-pRegions-04558 If any element of pRegions contains ~ in its pNext chain, then the srcImage must not be a [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image/VUID-VkCopyImageToBufferInfo2KHR-pRegions-04559 If any element of pRegions contains ~ in its pNext chain, then the srcImage must be of type S, and must not be a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format./VUID-VkCopyImageToBufferInfo2KHR-pRegions-00183  dstBuffer must_ 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/VUID-VkCopyImageToBufferInfo2KHR-pRegions-00184s The union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory/VUID-VkCopyImageToBufferInfo2KHR-srcImage-00186 srcImage must" have been created with  usage flag/VUID-VkCopyImageToBufferInfo2KHR-srcImage-01998 The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain {/VUID-VkCopyImageToBufferInfo2KHR-srcImage-00187 If srcImage is non-sparse then it must7 be bound completely and contiguously to a single / object0VUID-VkCopyImageToBufferInfo2KHR-dstBuffer-00191  dstBuffer must have been created with  usage flag0VUID-VkCopyImageToBufferInfo2KHR-dstBuffer-00192 If  dstBuffer is non-sparse then it must7 be bound completely and contiguously to a single / object/VUID-VkCopyImageToBufferInfo2KHR-srcImage-00188 srcImage must( have a sample count equal to %45VUID-VkCopyImageToBufferInfo2KHR-srcImageLayout-00189 srcImageLayout must6 specify the layout of the image subresources of srcImage specified in pRegions0 at the time this command is executed on a /5VUID-VkCopyImageToBufferInfo2KHR-srcImageLayout-01397 srcImageLayout must be [, C , or 7VUID-VkCopyImageToBufferInfo2KHR-imageSubresource-01703 The imageSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 0 when srcImage was created7VUID-VkCopyImageToBufferInfo2KHR-imageSubresource-01704 The imageSubresource.baseArrayLayer + imageSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 0 when srcImage was created2VUID-VkCopyImageToBufferInfo2KHR-imageOffset-01794 The  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   /VUID-VkCopyImageToBufferInfo2KHR-srcImage-02544 srcImage must! not have been created with flags containing h2VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00197 For each element of pRegions not containing ~ in its pNext chain, ,  imageOffset.x and (imageExtent.width +  imageOffset.x) must" both be greater than or equal to 0; and less than or equal to the width of the specified imageSubresource of srcImage' where this refers to the width of the plane> 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 format2VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00198 For each element of pRegions not containing ~ in its pNext chain, ,  imageOffset.y and (imageExtent.height +  imageOffset.y) must" both be greater than or equal to 0< and less than or equal to the height of the specified imageSubresource of srcImage( where this refers to the height of the plane> 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 format3VUID-VkCopyImageToBufferInfo2KHR-bufferOffset-01558E If {imageparam} does not have either a depth/stencil or a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then for each element of pRegions,  bufferOffset must4 be a multiple of the format s texel block size3VUID-VkCopyImageToBufferInfo2KHR-bufferOffset-01559! If {imageparam} has a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then for each element of pRegions,  bufferOffset must] 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???/VUID-VkCopyImageToBufferInfo2KHR-srcImage-00199! If {imageparam} is of type R , then for each element of pRegions,  imageOffset.y must be 0 and imageExtent.height must be 12VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00200 For each element of pRegions,  imageOffset.z and (imageExtent.depth +  imageOffset.z) must" both be greater than or equal to 0; and less than or equal to the depth of the specified imageSubresource of {imageparam}/VUID-VkCopyImageToBufferInfo2KHR-srcImage-00201! If {imageparam} is of type R or S , then for each element of pRegions,  imageOffset.z must be 0 and imageExtent.depth must be 16VUID-VkCopyImageToBufferInfo2KHR-bufferRowLength-00203 If {imageparam} is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferRowLength must7 be a multiple of the compressed texel block width8VUID-VkCopyImageToBufferInfo2KHR-bufferImageHeight-00204 If {imageparam} is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferImageHeight must8 be a multiple of the compressed texel block height2VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00205 If {imageparam} is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, all members of  imageOffset mustV be a multiple of the corresponding dimensions of the compressed texel block3VUID-VkCopyImageToBufferInfo2KHR-bufferOffset-00206 If {imageparam} is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions,  bufferOffset must? be a multiple of the compressed texel block size in bytes2VUID-VkCopyImageToBufferInfo2KHR-imageExtent-00207 If {imageparam} is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, imageExtent.width must< be a multiple of the compressed texel block width or (imageExtent.width +  imageOffset.x) must' equal the width of the specified imageSubresource of {imageparam}2VUID-VkCopyImageToBufferInfo2KHR-imageExtent-00208 If {imageparam} is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, imageExtent.height mustB be a multiple of the compressed texel block height or (imageExtent.height +  imageOffset.y) must( equal the height of the specified imageSubresource of {imageparam}2VUID-VkCopyImageToBufferInfo2KHR-imageExtent-00209 If {imageparam} is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, imageExtent.depth must< be a multiple of the compressed texel block depth or (imageExtent.depth +  imageOffset.z) must' equal the depth of the specified imageSubresource of {imageparam}1VUID-VkCopyImageToBufferInfo2KHR-aspectMask-00211 For each element of pRegions, imageSubresource.aspectMask must- specify aspects present in {imageparam}1VUID-VkCopyImageToBufferInfo2KHR-aspectMask-01560! If {imageparam} has a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then for each element of pRegions, imageSubresource.aspectMask must be x, x, or x (with x5 valid only for image formats with three planes)5VUID-VkCopyImageToBufferInfo2KHR-baseArrayLayer-00213& If {imageparam} is of type U, for each element of pRegions, imageSubresource.baseArrayLayer must be 0 and imageSubresource.layerCount must be 1/VUID-VkCopyImageToBufferInfo2KHR-pRegions-04725$ If {imageparam} is not a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferRowLength9 multiplied by the texel block size of {imageparam} must$ be less than or equal to 231-1/VUID-VkCopyImageToBufferInfo2KHR-pRegions-04726 If {imageparam} is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferRowLengths divided by the compressed texel block width and then multiplied by the texel block size of {imageparam} must be less than or equal to 231-14VUID-VkCopyImageToBufferInfo2KHR-commandBuffer-04052- If the queue family used to create the / which  commandBuffer* was allocated from does not support \b or \c , the  bufferOffset member of any element of pRegions must be a multiple of 4/VUID-VkCopyImageToBufferInfo2KHR-srcImage-040536 If {imageparam} has a depth/stencil format, the  bufferOffset member of any element of pRegions must be a multiple of 4Valid Usage (Implicit),VUID-VkCopyImageToBufferInfo2KHR-sType-sType sType must be ,VUID-VkCopyImageToBufferInfo2KHR-pNext-pNext pNext must be NULL3VUID-VkCopyImageToBufferInfo2KHR-srcImage-parameter srcImage must be a valid  handle9VUID-VkCopyImageToBufferInfo2KHR-srcImageLayout-parameter srcImageLayout must be a valid O value4VUID-VkCopyImageToBufferInfo2KHR-dstBuffer-parameter  dstBuffer must be a valid  handle3VUID-VkCopyImageToBufferInfo2KHR-pRegions-parameter pRegions must# be a valid pointer to an array of  regionCount valid  structures8VUID-VkCopyImageToBufferInfo2KHR-regionCount-arraylength  regionCount must be greater than 0-VUID-VkCopyImageToBufferInfo2KHR-commonparent Both of  dstBuffer , and srcImage must? have been created, allocated, or retrieved from the same /See Also, , , O, C, 3}vulkanOVkCopyImageInfo2KHR - Structure specifying parameters of an image copy command Valid Usage'VUID-VkCopyImageInfo2KHR-pRegions-00124s The union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory6'VUID-VkCopyImageInfo2KHR-srcImage-01995 The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain {'VUID-VkCopyImageInfo2KHR-srcImage-00126 srcImage must" have been created with  usage flag'VUID-VkCopyImageInfo2KHR-srcImage-01546 If srcImage& is non-sparse then the image or disjoint plane to be copied must< be bound completely and contiguously to a single / object-VUID-VkCopyImageInfo2KHR-srcImageLayout-00128 srcImageLayout must1 specify the layout of the image subresources of srcImage specified in pRegions0 at the time this command is executed on a /-VUID-VkCopyImageInfo2KHR-srcImageLayout-01917 srcImageLayout must be [, C , or 'VUID-VkCopyImageInfo2KHR-dstImage-01996 The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of dstImage must contain {'VUID-VkCopyImageInfo2KHR-dstImage-00131 dstImage must" have been created with  usage flag'VUID-VkCopyImageInfo2KHR-dstImage-01547 If 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 / object-VUID-VkCopyImageInfo2KHR-dstImageLayout-00133 dstImageLayout must1 specify the layout of the image subresources of dstImage specified in pRegions0 at the time this command is executed on a /-VUID-VkCopyImageInfo2KHR-dstImageLayout-01395 dstImageLayout must be \, C , or 'VUID-VkCopyImageInfo2KHR-srcImage-01548 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#VUID-VkCopyImageInfo2KHR-None-01549- 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 copied'VUID-VkCopyImageInfo2KHR-srcImage-00136 The sample count of srcImage and dstImage must match-VUID-VkCopyImageInfo2KHR-srcSubresource-01696 The srcSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 0 when srcImage was created-VUID-VkCopyImageInfo2KHR-dstSubresource-01697 The dstSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 0 when dstImage was created-VUID-VkCopyImageInfo2KHR-srcSubresource-01698 The srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 0 when srcImage was created-VUID-VkCopyImageInfo2KHR-dstSubresource-01699 The dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 0 when dstImage was created(VUID-VkCopyImageInfo2KHR-srcOffset-01783 The  srcOffset and extent members of each element of pRegions must= respect the image transfer granularity requirements of  commandBuffer: s command pool s queue family, as described in   (VUID-VkCopyImageInfo2KHR-dstOffset-01784 The  dstOffset and extent members of each element of pRegions must= respect the image transfer granularity requirements of  commandBuffer: s command pool s queue family, as described in   'VUID-VkCopyImageInfo2KHR-dstImage-02542 dstImage and srcImage must not have been created with flags containing h'VUID-VkCopyImageInfo2KHR-srcImage-01551 If neither srcImage nor 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 for each element of pRegions, srcSubresource.aspectMask and dstSubresource.aspectMask must match'VUID-VkCopyImageInfo2KHR-srcImage-01552 If 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 for each element of pRegions, srcSubresource.aspectMask must be x or x'VUID-VkCopyImageInfo2KHR-srcImage-01553 If 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 for each element of pRegions, srcSubresource.aspectMask must be x, x, or x'VUID-VkCopyImageInfo2KHR-dstImage-01554 If 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 for each element of pRegions, dstSubresource.aspectMask must be x or x'VUID-VkCopyImageInfo2KHR-dstImage-01555 If 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 for each element of pRegions, dstSubresource.aspectMask must be x, x, or x'VUID-VkCopyImageInfo2KHR-srcImage-01556 If 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 dstImageJ does not have a multi-planar image format, then for each element of pRegions, dstSubresource.aspectMask must be xQ'VUID-VkCopyImageInfo2KHR-dstImage-01557 If 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 srcImageJ does not have a multi-planar image format, then for each element of pRegions, srcSubresource.aspectMask must be xQ'VUID-VkCopyImageInfo2KHR-srcImage-04443 If srcImage is of type U , then for each element of pRegions, srcSubresource.baseArrayLayer must be 0 and and srcSubresource.layerCount must be 1'VUID-VkCopyImageInfo2KHR-dstImage-04444 If dstImage is of type U , then for each element of pRegions, dstSubresource.baseArrayLayer must be 0 and and dstSubresource.layerCount must be 1)VUID-VkCopyImageInfo2KHR-aspectMask-00142 For each element of pRegions, srcSubresource.aspectMask must! specify aspects present in srcImage)VUID-VkCopyImageInfo2KHR-aspectMask-00143 For each element of pRegions, dstSubresource.aspectMask must! specify aspects present in dstImage(VUID-VkCopyImageInfo2KHR-srcOffset-00144 For each element of pRegions,  srcOffset.x and ( extent.width +  srcOffset.x) must" both be greater than or equal to 0; and less than or equal to the width of the specified srcSubresource of srcImage(VUID-VkCopyImageInfo2KHR-srcOffset-00145 For each element of pRegions,  srcOffset.y and ( extent.height +  srcOffset.y) must" both be greater than or equal to 0< and less than or equal to the height of the specified srcSubresource of srcImage'VUID-VkCopyImageInfo2KHR-srcImage-00146 If srcImage is of type R , then for each element of pRegions,  srcOffset.y must be 0 and  extent.height must be 1(VUID-VkCopyImageInfo2KHR-srcOffset-00147 For each element of pRegions,  srcOffset.z and ( extent.depth +  srcOffset.z) must" both be greater than or equal to 0; and less than or equal to the depth of the specified srcSubresource of srcImage'VUID-VkCopyImageInfo2KHR-srcImage-01785 If srcImage is of type R , then for each element of pRegions,  srcOffset.z must be 0 and  extent.depth must be 1'VUID-VkCopyImageInfo2KHR-dstImage-01786 If dstImage is of type R , then for each element of pRegions,  dstOffset.z must be 0 and  extent.depth must be 1'VUID-VkCopyImageInfo2KHR-srcImage-01787 If srcImage is of type S , then for each element of pRegions,  srcOffset.z must be 0'VUID-VkCopyImageInfo2KHR-dstImage-01788 If dstImage is of type S , then for each element of pRegions,  dstOffset.z must be 0'VUID-VkCopyImageInfo2KHR-srcImage-01790 If srcImage and dstImage are both of type S , then for each element of pRegions,  extent.depth must be 1'VUID-VkCopyImageInfo2KHR-srcImage-01791 If srcImage is of type S, and dstImage is of type U , then for each element of pRegions,  extent.depth must equal srcSubresource.layerCount'VUID-VkCopyImageInfo2KHR-dstImage-01792 If dstImage is of type S, and srcImage is of type U , then for each element of pRegions,  extent.depth must equal dstSubresource.layerCount(VUID-VkCopyImageInfo2KHR-dstOffset-00150 For each element of pRegions,  dstOffset.x and ( extent.width +  dstOffset.x) must" both be greater than or equal to 0; and less than or equal to the width of the specified dstSubresource of dstImage(VUID-VkCopyImageInfo2KHR-dstOffset-00151 For each element of pRegions,  dstOffset.y and ( extent.height +  dstOffset.y) must" both be greater than or equal to 0< and less than or equal to the height of the specified dstSubresource of dstImage'VUID-VkCopyImageInfo2KHR-dstImage-00152 If dstImage is of type R , then for each element of pRegions,  dstOffset.y must be 0 and  extent.height must be 1(VUID-VkCopyImageInfo2KHR-dstOffset-00153 For each element of pRegions,  dstOffset.z and ( extent.depth +  dstOffset.z) must" both be greater than or equal to 0; and less than or equal to the depth of the specified dstSubresource of dstImage'VUID-VkCopyImageInfo2KHR-srcImage-01727 If srcImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions, all members of  srcOffset mustQ be a multiple of the corresponding dimensions of the compressed texel block'VUID-VkCopyImageInfo2KHR-srcImage-01728 If srcImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions,  extent.width must< be a multiple of the compressed texel block width or ( extent.width +  srcOffset.x) must' equal the width of the specified srcSubresource of srcImage'VUID-VkCopyImageInfo2KHR-srcImage-01729 If srcImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions,  extent.height must= be a multiple of the compressed texel block height or ( extent.height +  srcOffset.y) must( equal the height of the specified srcSubresource of srcImage'VUID-VkCopyImageInfo2KHR-srcImage-01730 If srcImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions,  extent.depth must< be a multiple of the compressed texel block depth or ( extent.depth +  srcOffset.z) must' equal the depth of the specified srcSubresource of srcImage'VUID-VkCopyImageInfo2KHR-dstImage-01731 If dstImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions, all members of  dstOffset mustQ be a multiple of the corresponding dimensions of the compressed texel block'VUID-VkCopyImageInfo2KHR-dstImage-01732 If dstImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions,  extent.width must< be a multiple of the compressed texel block width or ( extent.width +  dstOffset.x) must' equal the width of the specified dstSubresource of dstImage'VUID-VkCopyImageInfo2KHR-dstImage-01733 If dstImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions,  extent.height must= be a multiple of the compressed texel block height or ( extent.height +  dstOffset.y) must( equal the height of the specified dstSubresource of dstImage'VUID-VkCopyImageInfo2KHR-dstImage-01734 If dstImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image , then for each element of pRegions,  extent.depth must< be a multiple of the compressed texel block depth or ( extent.depth +  dstOffset.z) must' equal the depth of the specified dstSubresource of dstImageValid Usage (Implicit)$VUID-VkCopyImageInfo2KHR-sType-sType sType must be $VUID-VkCopyImageInfo2KHR-pNext-pNext pNext must be NULL+VUID-VkCopyImageInfo2KHR-srcImage-parameter srcImage must be a valid  handle1VUID-VkCopyImageInfo2KHR-srcImageLayout-parameter srcImageLayout must be a valid O value+VUID-VkCopyImageInfo2KHR-dstImage-parameter dstImage must be a valid  handle1VUID-VkCopyImageInfo2KHR-dstImageLayout-parameter dstImageLayout must be a valid O value+VUID-VkCopyImageInfo2KHR-pRegions-parameter pRegions must( be a valid pointer to an array of  regionCount valid z structures0VUID-VkCopyImageInfo2KHR-regionCount-arraylength  regionCount must be greater than 0%VUID-VkCopyImageInfo2KHR-commonparent Both of dstImage , and srcImage must? have been created, allocated, or retrieved from the same /See Also, z, O, C, 2~vulkan`VkCopyBufferToImageInfo2KHR - Structure specifying parameters of a buffer to image copy command Valid Usage/VUID-VkCopyBufferToImageInfo2KHR-pRegions-045657 If the image region specified by each element of pRegions does not contain ~ in its pNext chain, it 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 format'/VUID-VkCopyBufferToImageInfo2KHR-pRegions-045547 If the image region specified by each element of pRegions does contain ~ in its pNext< chain, the rotated destination region as described in  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-rotation-addressing must be contained within dstImage./VUID-VkCopyBufferToImageInfo2KHR-pRegions-04555 If any element of pRegions contains ~ in its pNext chain, then the dstImage must not be a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image./VUID-VkCopyBufferToImageInfo2KHR-pRegions-04556 If any element of pRegions contains ~ in its pNext chain, then the dstImage must be of type S and must not be a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format./VUID-VkCopyBufferToImageInfo2KHR-pRegions-00171  srcBuffer must_ 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/VUID-VkCopyBufferToImageInfo2KHR-pRegions-00173s The union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory0VUID-VkCopyBufferToImageInfo2KHR-srcBuffer-00174  srcBuffer must have been created with  usage flag/VUID-VkCopyBufferToImageInfo2KHR-dstImage-01997 The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of dstImage must contain {0VUID-VkCopyBufferToImageInfo2KHR-srcBuffer-00176 If  srcBuffer is non-sparse then it must7 be bound completely and contiguously to a single / object/VUID-VkCopyBufferToImageInfo2KHR-dstImage-00177 dstImage must" have been created with  usage flag/VUID-VkCopyBufferToImageInfo2KHR-dstImage-00178 If dstImage is non-sparse then it must7 be bound completely and contiguously to a single / object/VUID-VkCopyBufferToImageInfo2KHR-dstImage-00179 dstImage must( have a sample count equal to %45VUID-VkCopyBufferToImageInfo2KHR-dstImageLayout-00180 dstImageLayout must6 specify the layout of the image subresources of dstImage specified in pRegions0 at the time this command is executed on a /5VUID-VkCopyBufferToImageInfo2KHR-dstImageLayout-01396 dstImageLayout must be \, C , or 7VUID-VkCopyBufferToImageInfo2KHR-imageSubresource-01701 The imageSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 0 when dstImage was created7VUID-VkCopyBufferToImageInfo2KHR-imageSubresource-01702 The imageSubresource.baseArrayLayer + imageSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 0 when dstImage was created2VUID-VkCopyBufferToImageInfo2KHR-imageOffset-01793 The  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   /VUID-VkCopyBufferToImageInfo2KHR-dstImage-02543 dstImage must! not have been created with flags containing h4VUID-VkCopyBufferToImageInfo2KHR-commandBuffer-04477- If the queue family used to create the / which  commandBuffer* was allocated from does not support \b, for each element of pRegions, the  aspectMask member of imageSubresource must not be x or x.2VUID-VkCopyBufferToImageInfo2KHR-imageOffset-00197 For each element of pRegions not containing ~ in its pNext chain, ,  imageOffset.x and (imageExtent.width +  imageOffset.x) must" both be greater than or equal to 0; and less than or equal to the width of the specified imageSubresource of dstImage' where this refers to the width of the plane> 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 format2VUID-VkCopyBufferToImageInfo2KHR-imageOffset-00198 For each element of pRegions not containing ~ in its pNext chain, ,  imageOffset.y and (imageExtent.height +  imageOffset.y) must" both be greater than or equal to 0< and less than or equal to the height of the specified imageSubresource of dstImage( where this refers to the height of the plane> 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 format3VUID-VkCopyBufferToImageInfo2KHR-bufferOffset-01558 If dstImage5 does not have either a depth/stencil or a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then for each element of pRegions,  bufferOffset must4 be a multiple of the format s texel block size3VUID-VkCopyBufferToImageInfo2KHR-bufferOffset-01559 If dstImage has a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then for each element of pRegions,  bufferOffset must] 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???/VUID-VkCopyBufferToImageInfo2KHR-srcImage-00199 If dstImage is of type R , then for each element of pRegions,  imageOffset.y must be 0 and imageExtent.height must be 12VUID-VkCopyBufferToImageInfo2KHR-imageOffset-00200 For each element of pRegions,  imageOffset.z and (imageExtent.depth +  imageOffset.z) must" both be greater than or equal to 0; and less than or equal to the depth of the specified imageSubresource of dstImage/VUID-VkCopyBufferToImageInfo2KHR-srcImage-00201 If dstImage is of type R or S , then for each element of pRegions,  imageOffset.z must be 0 and imageExtent.depth must be 16VUID-VkCopyBufferToImageInfo2KHR-bufferRowLength-00203 If dstImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferRowLength must7 be a multiple of the compressed texel block width8VUID-VkCopyBufferToImageInfo2KHR-bufferImageHeight-00204 If dstImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferImageHeight must8 be a multiple of the compressed texel block height2VUID-VkCopyBufferToImageInfo2KHR-imageOffset-00205 If dstImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, all members of  imageOffset mustV be a multiple of the corresponding dimensions of the compressed texel block3VUID-VkCopyBufferToImageInfo2KHR-bufferOffset-00206 If dstImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions,  bufferOffset must? be a multiple of the compressed texel block size in bytes2VUID-VkCopyBufferToImageInfo2KHR-imageExtent-00207 If dstImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, imageExtent.width must< be a multiple of the compressed texel block width or (imageExtent.width +  imageOffset.x) must' equal the width of the specified imageSubresource of dstImage2VUID-VkCopyBufferToImageInfo2KHR-imageExtent-00208 If dstImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, imageExtent.height mustB be a multiple of the compressed texel block height or (imageExtent.height +  imageOffset.y) must( equal the height of the specified imageSubresource of dstImage2VUID-VkCopyBufferToImageInfo2KHR-imageExtent-00209 If dstImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, imageExtent.depth must< be a multiple of the compressed texel block depth or (imageExtent.depth +  imageOffset.z) must' equal the depth of the specified imageSubresource of dstImage1VUID-VkCopyBufferToImageInfo2KHR-aspectMask-00211 For each element of pRegions, imageSubresource.aspectMask must! specify aspects present in dstImage1VUID-VkCopyBufferToImageInfo2KHR-aspectMask-01560 If dstImage has a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then for each element of pRegions, imageSubresource.aspectMask must be x, x, or x (with x5 valid only for image formats with three planes)5VUID-VkCopyBufferToImageInfo2KHR-baseArrayLayer-00213 If dstImage is of type U, for each element of pRegions, imageSubresource.baseArrayLayer must be 0 and imageSubresource.layerCount must be 1/VUID-VkCopyBufferToImageInfo2KHR-pRegions-04725 If dstImage is not a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferRowLength, multiplied by the texel block size of dstImage must be less than or equal to 231-1/VUID-VkCopyBufferToImageInfo2KHR-pRegions-04726 If dstImage is a  [https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image, for each element of pRegions, bufferRowLengthf divided by the compressed texel block width and then multiplied by the texel block size of dstImage must be less than or equal to 231-14VUID-VkCopyBufferToImageInfo2KHR-commandBuffer-04052- If the queue family used to create the / which  commandBuffer* was allocated from does not support \b or \c , the  bufferOffset member of any element of pRegions must be a multiple of 4/VUID-VkCopyBufferToImageInfo2KHR-srcImage-04053 If dstImage& has a depth/stencil format, the  bufferOffset member of any element of pRegions must be a multiple of 4Valid Usage (Implicit),VUID-VkCopyBufferToImageInfo2KHR-sType-sType sType must be ,VUID-VkCopyBufferToImageInfo2KHR-pNext-pNext pNext must be NULL4VUID-VkCopyBufferToImageInfo2KHR-srcBuffer-parameter  srcBuffer must be a valid  handle3VUID-VkCopyBufferToImageInfo2KHR-dstImage-parameter dstImage must be a valid  handle9VUID-VkCopyBufferToImageInfo2KHR-dstImageLayout-parameter dstImageLayout must be a valid O value3VUID-VkCopyBufferToImageInfo2KHR-pRegions-parameter pRegions must# be a valid pointer to an array of  regionCount valid  structures8VUID-VkCopyBufferToImageInfo2KHR-regionCount-arraylength  regionCount must be greater than 0-VUID-VkCopyBufferToImageInfo2KHR-commonparent Both of dstImage , and  srcBuffer must? have been created, allocated, or retrieved from the same /See Also, , , O, C, 3vulkanPVkCopyBufferInfo2KHR - Structure specifying parameters of a buffer copy command DescriptionGMembers defined by this structure with the same name as parameters in WE have the identical effect to those parameters; the child structure  is a variant of  which includes sType and pNext( parameters, allowing it to be extended. Valid Usage)VUID-VkCopyBufferInfo2KHR-srcOffset-00113 The  srcOffset member of each element of pRegions must be less than the size of  srcBuffer)VUID-VkCopyBufferInfo2KHR-dstOffset-00114 The  dstOffset member of each element of pRegions must be less than the size of  dstBuffer$VUID-VkCopyBufferInfo2KHR-size-00115 The size member of each element of pRegions must+ be less than or equal to the size of  srcBuffer minus  srcOffset$VUID-VkCopyBufferInfo2KHR-size-00116 The size member of each element of pRegions must+ be less than or equal to the size of  dstBuffer minus  dstOffset(VUID-VkCopyBufferInfo2KHR-pRegions-00117s The union of the source regions, and the union of the destination regions, specified by the elements of pRegions, must not overlap in memory)VUID-VkCopyBufferInfo2KHR-srcBuffer-00118  srcBuffer must" have been created with  usage flag)VUID-VkCopyBufferInfo2KHR-srcBuffer-00119 If  srcBuffer is non-sparse then it must7 be bound completely and contiguously to a single / object)VUID-VkCopyBufferInfo2KHR-dstBuffer-00120  dstBuffer must" have been created with  usage flag)VUID-VkCopyBufferInfo2KHR-dstBuffer-00121 If  dstBuffer is non-sparse then it must7 be bound completely and contiguously to a single / objectValid Usage (Implicit)%VUID-VkCopyBufferInfo2KHR-sType-sType sType must be %VUID-VkCopyBufferInfo2KHR-pNext-pNext pNext must be NULL-VUID-VkCopyBufferInfo2KHR-srcBuffer-parameter  srcBuffer must be a valid  handle-VUID-VkCopyBufferInfo2KHR-dstBuffer-parameter  dstBuffer must be a valid  handle,VUID-VkCopyBufferInfo2KHR-pRegions-parameter pRegions must( be a valid pointer to an array of  regionCount valid  structures1VUID-VkCopyBufferInfo2KHR-regionCount-arraylength  regionCount must be greater than 0&VUID-VkCopyBufferInfo2KHR-commonparent Both of  dstBuffer , and  srcBuffer must? have been created, allocated, or retrieved from the same /See Also, , C, 2vulkanKVkBufferImageCopy2KHR - Structure specifying a buffer image copy operation Description-This structure is functionally identical to  , but adds sType and pNext4 parameters, allowing it to be more easily extended. Valid Usage0VUID-VkBufferImageCopy2KHR-bufferRowLength-00195 bufferRowLength must be 0", or greater than or equal to the width member of  imageExtent2VUID-VkBufferImageCopy2KHR-bufferImageHeight-00196 bufferImageHeight must be 0', or greater than or equal to the height member of  imageExtent+VUID-VkBufferImageCopy2KHR-aspectMask-00212 The  aspectMask member of imageSubresource must only have a single bit setValid Usage (Implicit)&VUID-VkBufferImageCopy2KHR-sType-sType sType must be &VUID-VkBufferImageCopy2KHR-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of ~'VUID-VkBufferImageCopy2KHR-sType-unique The sType" value of each struct in the pNext chain must be unique5VUID-VkBufferImageCopy2KHR-imageSubresource-parameter imageSubresource must be a valid  structureSee Also~, |, n, t, , r, Cvulkan?VkBufferCopy2KHR - Structure specifying a buffer copy operation Valid Usage VUID-VkBufferCopy2KHR-size-01988 The size must be greater than 0Valid Usage (Implicit)!VUID-VkBufferCopy2KHR-sType-sType sType must be !VUID-VkBufferCopy2KHR-pNext-pNext pNext must be NULLSee Also, n, CvulkanLVkBlitImageInfo2KHR - Structure specifying parameters of blit image command Valid Usage'VUID-VkBlitImageInfo2KHR-pRegions-002155 The source region specified by each element of pRegions must+ be a region that is contained within srcImage+'VUID-VkBlitImageInfo2KHR-pRegions-00216: The destination region specified by each element of pRegions must+ be a region that is contained within dstImage'VUID-VkBlitImageInfo2KHR-pRegions-00217I The union of all destination regions, specified by the elements of pRegions, must0 not overlap in memory with any texel that may* be sampled during the blit operation'VUID-VkBlitImageInfo2KHR-srcImage-01999 The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain {&'VUID-VkBlitImageInfo2KHR-srcImage-01561 srcImage 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???'VUID-VkBlitImageInfo2KHR-srcImage-00219 srcImage must" have been created with  usage flag'VUID-VkBlitImageInfo2KHR-srcImage-00220 If srcImage is non-sparse then it must7 be bound completely and contiguously to a single / object-VUID-VkBlitImageInfo2KHR-srcImageLayout-00221 srcImageLayout must1 specify the layout of the image subresources of srcImage specified in pRegions0 at the time this command is executed on a /-VUID-VkBlitImageInfo2KHR-srcImageLayout-01398 srcImageLayout must be , [ or C'VUID-VkBlitImageInfo2KHR-dstImage-02000 The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of dstImage must contain {'VUID-VkBlitImageInfo2KHR-dstImage-01562 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???'VUID-VkBlitImageInfo2KHR-dstImage-00224 dstImage must" have been created with  usage flag'VUID-VkBlitImageInfo2KHR-dstImage-00225 If dstImage is non-sparse then it must7 be bound completely and contiguously to a single / object-VUID-VkBlitImageInfo2KHR-dstImageLayout-00226 dstImageLayout must1 specify the layout of the image subresources of dstImage specified in pRegions0 at the time this command is executed on a /-VUID-VkBlitImageInfo2KHR-dstImageLayout-01399 dstImageLayout must be , \ or C'VUID-VkBlitImageInfo2KHR-srcImage-00229 If either of srcImage or dstImage( was created with a signed integer  , the other must3 also have been created with a signed integer 'VUID-VkBlitImageInfo2KHR-srcImage-00230 If either of srcImage or dstImage+ was created with an unsigned integer  , the other must6 also have been created with an unsigned integer 'VUID-VkBlitImageInfo2KHR-srcImage-00231 If either of srcImage or dstImage9 was created with a depth/stencil format, the other must have exactly the same format'VUID-VkBlitImageInfo2KHR-srcImage-00232 If srcImage/ was created with a depth/stencil format, filter must be m'VUID-VkBlitImageInfo2KHR-srcImage-00233 srcImage must have been created with a samples value of %4'VUID-VkBlitImageInfo2KHR-dstImage-00234 dstImage must have been created with a samples value of %4%VUID-VkBlitImageInfo2KHR-filter-02001 If 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 {'%VUID-VkBlitImageInfo2KHR-filter-02002 If 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 %VUID-VkBlitImageInfo2KHR-filter-00237 If filter is , srcImage must be of type S-VUID-VkBlitImageInfo2KHR-srcSubresource-01705 The srcSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 0 when srcImage was created-VUID-VkBlitImageInfo2KHR-dstSubresource-01706 The dstSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in 0 when dstImage was created-VUID-VkBlitImageInfo2KHR-srcSubresource-01707 The srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 0 when srcImage was created-VUID-VkBlitImageInfo2KHR-dstSubresource-01708 The dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in 0 when dstImage was created'VUID-VkBlitImageInfo2KHR-dstImage-02545 dstImage and srcImage must not have been created with flags containing h'VUID-VkBlitImageInfo2KHR-srcImage-00240 If either srcImage or dstImage is of type U , then for each element of pRegions, srcSubresource.baseArrayLayer and dstSubresource.baseArrayLayer must each be 0 , and srcSubresource.layerCount and dstSubresource.layerCount must each be 1.)VUID-VkBlitImageInfo2KHR-aspectMask-00241 For each element of pRegions, srcSubresource.aspectMask must! specify aspects present in srcImage)VUID-VkBlitImageInfo2KHR-aspectMask-00242 For each element of pRegions, dstSubresource.aspectMask must! specify aspects present in dstImage(VUID-VkBlitImageInfo2KHR-srcOffset-00243 For each element of pRegions,  srcOffset [0].x and  srcOffset[1].x must' both be greater than or equal to 0; and less than or equal to the width of the specified srcSubresource of srcImage(VUID-VkBlitImageInfo2KHR-srcOffset-00244 For each element of pRegions,  srcOffset [0].y and  srcOffset[1].y must' both be greater than or equal to 0< and less than or equal to the height of the specified srcSubresource of srcImage'VUID-VkBlitImageInfo2KHR-srcImage-00245 If srcImage is of type R , then for each element of pRegions,  srcOffset[0].y must be 0 and  srcOffset [1].y must be 1(VUID-VkBlitImageInfo2KHR-srcOffset-00246 For each element of pRegions,  srcOffset [0].z and  srcOffset[1].z must' both be greater than or equal to 0; and less than or equal to the depth of the specified srcSubresource of srcImage'VUID-VkBlitImageInfo2KHR-srcImage-00247 If srcImage is of type R or S , then for each element of pRegions,  srcOffset[0].z must be 0 and  srcOffset [1].z must be 1(VUID-VkBlitImageInfo2KHR-dstOffset-00248 For each element of pRegions,  dstOffset [0].x and  dstOffset[1].x must' both be greater than or equal to 0; and less than or equal to the width of the specified dstSubresource of dstImage(VUID-VkBlitImageInfo2KHR-dstOffset-00249 For each element of pRegions,  dstOffset [0].y and  dstOffset[1].y must' both be greater than or equal to 0< and less than or equal to the height of the specified dstSubresource of dstImage'VUID-VkBlitImageInfo2KHR-dstImage-00250 If dstImage is of type R , then for each element of pRegions,  dstOffset[0].y must be 0 and  dstOffset [1].y must be 1(VUID-VkBlitImageInfo2KHR-dstOffset-00251 For each element of pRegions,  dstOffset [0].z and  dstOffset[1].z must' both be greater than or equal to 0; and less than or equal to the depth of the specified dstSubresource of dstImage'VUID-VkBlitImageInfo2KHR-dstImage-00252 If dstImage is of type R or S , then for each element of pRegions,  dstOffset[0].z must be 0 and  dstOffset [1].z must be 1'VUID-VkBlitImageInfo2KHR-pRegions-04561 If any element of pRegions contains ~ in its pNext chain, then srcImage and dstImage must& not be a block-compressed image.'VUID-VkBlitImageInfo2KHR-pRegions-04562 If any element of pRegions contains ~ in its pNext chain, then the srcImage must be of type S and must not be a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format.Valid Usage (Implicit)$VUID-VkBlitImageInfo2KHR-sType-sType sType must be  $VUID-VkBlitImageInfo2KHR-pNext-pNext pNext must be NULL+VUID-VkBlitImageInfo2KHR-srcImage-parameter srcImage must be a valid  handle1VUID-VkBlitImageInfo2KHR-srcImageLayout-parameter srcImageLayout must be a valid O value+VUID-VkBlitImageInfo2KHR-dstImage-parameter dstImage must be a valid  handle1VUID-VkBlitImageInfo2KHR-dstImageLayout-parameter dstImageLayout must be a valid O value+VUID-VkBlitImageInfo2KHR-pRegions-parameter pRegions must( be a valid pointer to an array of  regionCount valid { structures)VUID-VkBlitImageInfo2KHR-filter-parameter filter must be a valid J value0VUID-VkBlitImageInfo2KHR-regionCount-arraylength  regionCount must be greater than 0%VUID-VkBlitImageInfo2KHR-commonparent Both of dstImage , and srcImage must? have been created, allocated, or retrieved from the same /See AlsoJ, , {, O, C, 32vulkansrcImage is the source image.2vulkansrcImageLayoutA is the layout of the source image subresources for the resolve.2vulkandstImage is the destination image.2vulkandstImageLayoutF is the layout of the destination image subresources for the resolve.2vulkanpRegions is a pointer to an array of y/ structures specifying the regions to resolve.2vulkansrcImage is the source image.2vulkansrcImageLayout> is the layout of the source image subresources for the copy.2vulkan dstBuffer is the destination buffer.2vulkanpRegions is a pointer to an array of , structures specifying the regions to copy.2vulkan srcBuffer is the source buffer.2vulkandstImage is the destination image.2vulkandstImageLayoutC is the layout of the destination image subresources for the copy.2vulkanpRegions is a pointer to an array of , structures specifying the regions to copy.2vulkansrcImage is the source image.2vulkansrcImageLayout> is the layout of the source image subresources for the blit.2vulkandstImage is the destination image.2vulkandstImageLayoutC is the layout of the destination image subresources for the blit.2vulkanpRegions is a pointer to an array of {, structures specifying the regions to blit.2vulkanfilter is a J> specifying the filter to apply if the blits require scaling.2vulkansrcImage is the source image.2vulkansrcImageLayout7 is the current layout of the source image subresource.2vulkandstImage is the destination image.2vulkandstImageLayout= is the current layout of the destination image subresource.2vulkanpRegions is a pointer to an array of z, structures specifying the regions to copy.2vulkan srcBuffer is the source buffer.2vulkan dstBuffer is the destination buffer.2vulkanpRegions is a pointer to an array of , structures specifying the regions to copy.2vulkansrcSubresource 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.2vulkan srcOffset and  dstOffset select the initial x, y, and zP offsets in texels of the sub-regions of the source and destination image data.2vulkanextent: is the size in texels of the source image to resolve in width, height and depth.2vulkanpNext is NULL6 or a pointer to a structure extending this structure.2vulkan bufferOffsetg is the offset in bytes from the start of the buffer object where the image data is copied from or to.2vulkanbufferRowLength 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.2vulkanimageSubresource is a n used to specify the specific image subresources of the image used for the source or destination image data.2vulkan imageOffset selects the initial x, y, zN offsets in texels of the sub-region of the source or destination image data.2vulkan imageExtent/ is the size in texels of the image to copy in width, height and depth.2vulkanpNext is NULL6 or a pointer to a structure extending this structure.2vulkansrcSubresource! is the subresource to blit from.2vulkan srcOffsets" is a pointer to an array of two r? structures specifying the bounds of the source region within srcSubresource.2vulkandstSubresource! is the subresource to blit into.2vulkan dstOffsets" is a pointer to an array of two rD structures specifying the bounds of the destination region within dstSubresource.2vulkansrcSubresource and dstSubresource are { structures specifying the image subresources of the images used for the source and destination image data, respectively.2vulkan srcOffset and  dstOffset select the initial x, y, and zP offsets in texels of the sub-regions of the source and destination image data.2vulkanextent/ is the size in texels of the image to copy in width, height and depth.2vulkan srcOffset4 is the starting offset in bytes from the start of  srcBuffer.2vulkan dstOffset4 is the starting offset in bytes from the start of  dstBuffer.2vulkansize is the number of bytes to copy.2vulkan6vkCmdCopyBuffer2KHR - Copy data between buffer regions Description+This command is functionally identical to W7, but includes extensible sub-structures that include sType and pNext7 parameters, allowing them to be more easily extended. Valid Usage,VUID-vkCmdCopyBuffer2KHR-commandBuffer-01822 If  commandBuffer- is an unprotected command buffer, then  srcBuffer must not be a protected buffer,VUID-vkCmdCopyBuffer2KHR-commandBuffer-01823 If  commandBuffer- is an unprotected command buffer, then  dstBuffer must not be a protected buffer,VUID-vkCmdCopyBuffer2KHR-commandBuffer-01824 If  commandBuffer* is a protected command buffer, then  dstBuffer must" not be an unprotected bufferValid Usage (Implicit)0VUID-vkCmdCopyBuffer2KHR-commandBuffer-parameter  commandBuffer must be a valid  handle2VUID-vkCmdCopyBuffer2KHR-pCopyBufferInfo-parameter pCopyBufferInfo must$ be a valid pointer to a valid  structure0VUID-vkCmdCopyBuffer2KHR-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state.VUID-vkCmdCopyBuffer2KHR-commandBuffer-cmdpool The / that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations#VUID-vkCmdCopyBuffer2KHR-renderpass This command must6 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, 2vulkan-vkCmdCopyImage2KHR - Copy data between images Description+This command is functionally identical to 7, but includes extensible sub-structures that include sType and pNext7 parameters, allowing them to be more easily extended. Valid Usage+VUID-vkCmdCopyImage2KHR-commandBuffer-01825 If  commandBuffer- is an unprotected command buffer, then srcImage must not be a protected image+VUID-vkCmdCopyImage2KHR-commandBuffer-01826 If  commandBuffer- is an unprotected command buffer, then dstImage must not be a protected image+VUID-vkCmdCopyImage2KHR-commandBuffer-01827 If  commandBuffer* is a protected command buffer, then dstImage must! not be an unprotected imageValid Usage (Implicit)/VUID-vkCmdCopyImage2KHR-commandBuffer-parameter  commandBuffer must be a valid  handle0VUID-vkCmdCopyImage2KHR-pCopyImageInfo-parameter pCopyImageInfo must be a valid pointer to a valid } structure/VUID-vkCmdCopyImage2KHR-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state-VUID-vkCmdCopyImage2KHR-commandBuffer-cmdpool The / that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations"VUID-vkCmdCopyImage2KHR-renderpass This command must6 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, }3vulkanYvkCmdBlitImage2KHR - Copy regions of an image, potentially performing format conversion, Description+This command is functionally identical to |7, but includes extensible sub-structures that include sType and pNext7 parameters, allowing them to be more easily extended. Valid Usage+VUID-vkCmdBlitImage2KHR-commandBuffer-01834 If  commandBuffer- is an unprotected command buffer, then srcImage must not be a protected image+VUID-vkCmdBlitImage2KHR-commandBuffer-01835 If  commandBuffer- is an unprotected command buffer, then dstImage must not be a protected image+VUID-vkCmdBlitImage2KHR-commandBuffer-01836 If  commandBuffer* is a protected command buffer, then dstImage must! not be an unprotected imageValid Usage (Implicit)/VUID-vkCmdBlitImage2KHR-commandBuffer-parameter  commandBuffer must be a valid  handle0VUID-vkCmdBlitImage2KHR-pBlitImageInfo-parameter pBlitImageInfo must be a valid pointer to a valid  structure/VUID-vkCmdBlitImage2KHR-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state-VUID-vkCmdBlitImage2KHR-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations"VUID-vkCmdBlitImage2KHR-renderpass This command must6 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, 3vulkanBvkCmdCopyBufferToImage2KHR - Copy data from a buffer into an image Description+This command is functionally identical to 7, but includes extensible sub-structures that include sType and pNext7 parameters, allowing them to be more easily extended. Valid Usage3VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-01828 If  commandBuffer( is an unprotected command buffer, then  srcBuffer must not be a protected buffer3VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-01829 If  commandBuffer( is an unprotected command buffer, then dstImage must not be a protected image3VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-01830 If  commandBuffer% is a protected command buffer, then dstImage must not be an unprotected imageValid Usage (Implicit)7VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-parameter  commandBuffer must be a valid  handle@VUID-vkCmdCopyBufferToImage2KHR-pCopyBufferToImageInfo-parameter pCopyBufferToImageInfo must$ be a valid pointer to a valid ~ structure7VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state5VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-cmdpool The / that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations*VUID-vkCmdCopyBufferToImage2KHR-renderpass This command must6 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, ~3vulkan:vkCmdCopyImageToBuffer2KHR - Copy image data into a buffer Description+This command is functionally identical to 7, but includes extensible sub-structures that include sType and pNext7 parameters, allowing them to be more easily extended. Valid Usage3VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-01831 If  commandBuffer( is an unprotected command buffer, then srcImage must not be a protected image3VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-01832 If  commandBuffer( is an unprotected command buffer, then  dstBuffer must not be a protected buffer3VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-01833 If  commandBuffer% is a protected command buffer, then  dstBuffer must not be an unprotected bufferValid Usage (Implicit)7VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-parameter  commandBuffer must be a valid  handle@VUID-vkCmdCopyImageToBuffer2KHR-pCopyImageToBufferInfo-parameter pCopyImageToBufferInfo must$ be a valid pointer to a valid | structure7VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state5VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-cmdpool The / that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations*VUID-vkCmdCopyImageToBuffer2KHR-renderpass This command must6 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, |3vulkan3vkCmdResolveImage2KHR - Resolve regions of an image Description+This command is functionally identical to ~7, but includes extensible sub-structures that include sType and pNext7 parameters, allowing them to be more easily extended. Valid Usage.VUID-vkCmdResolveImage2KHR-commandBuffer-01837 If  commandBuffer- is an unprotected command buffer, then srcImage must not be a protected image.VUID-vkCmdResolveImage2KHR-commandBuffer-01838 If  commandBuffer- is an unprotected command buffer, then dstImage must not be a protected image.VUID-vkCmdResolveImage2KHR-commandBuffer-01839 If  commandBuffer* is a protected command buffer, then dstImage must! not be an unprotected imageValid Usage (Implicit)2VUID-vkCmdResolveImage2KHR-commandBuffer-parameter  commandBuffer must be a valid  handle6VUID-vkCmdResolveImage2KHR-pResolveImageInfo-parameter pResolveImageInfo must$ be a valid pointer to a valid x structure2VUID-vkCmdResolveImage2KHR-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state0VUID-vkCmdResolveImage2KHR-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations%VUID-vkCmdResolveImage2KHR-renderpass This command must6 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, x2vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanpCopyBufferInfo is a pointer to a + structure describing the copy parameters.2vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanpCopyImageInfo is a pointer to a }+ structure describing the copy parameters.3vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanpBlitImageInfo is a pointer to a + structure describing the blit parameters.3vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanpCopyBufferToImageInfo is a pointer to a ~+ structure describing the copy parameters.3vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanpCopyImageToBufferInfo is a pointer to a 3+ structure describing the copy parameters.3vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkanpResolveImageInfo is a pointer to a x. structure describing the resolve parameters.Tx222222y222222z222222{222222|22222}222222~22222222222222222222222222222222223333T2233332222z222222{22222222222222y2222222222}2222222222222~22222|22222x2222222222None("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanSVkSamplerCustomBorderColorCreateInfoEXT - Structure specifying custom border color Valid Usage9VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-04013 If provided format is not  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 table9VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-04014 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 9VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-04015= If the sampler is used to sample an image view of ,  , or  format then format must not be Valid Usage (Implicit)8VUID-VkSamplerCustomBorderColorCreateInfoEXT-sType-sType sType must be =VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-parameter format must be a valid K valueSee Also, K, CvulkanVkPhysicalDeviceCustomBorderColorPropertiesEXT - Structure describing whether custom border colors can be supported by an implementationMembersThe members of the , structure describe the following features:Valid Usage (Implicit)See AlsoCvulkanVkPhysicalDeviceCustomBorderColorFeaturesEXT - Structure describing whether custom border colors can be supported by an implementationMembersThe members of the , structure describe the following features:Valid Usage (Implicit)See Alsop, C39vulkanfeatures-customBorderColors customBorderColors9 indicates that the implementation supports providing a  borderColorB value with one of the following values at sampler creation time:3:vulkan'features-customBorderColorWithoutFormat customBorderColorWithoutFormata indicates that explicit formats are not required for custom border colors and the value of the format member of the  structure may be 0. If this feature bit is not set, applications must provide the K< of the image view(s) being sampled by this sampler in the format member of the  structure.3<vulkan#limits-maxCustomBorderColorSamplers maxCustomBorderColorSamplersL indicates the maximum number of samplers with custom border colors which can" simultaneously exist on a device.3>vulkancustomBorderColor is a 7 representing the desired custom sampler border color.3?vulkanformat is a KK representing the format of the sampled image view(s). This field may be  if the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-customBorderColorWithoutFormatcustomBorderColorWithoutFormat feature is enabled.3=3?3>3;3<38393:36373@3A3=3?3>3;3<38393:373A363@cNone("#%&'-./1789;=>?FHIMSUVX_dghklmqܢ3,vulkan8VkSubpassEndInfo - Structure specifying subpass end infoValid Usage (Implicit)See AlsoC, 3, g, 3, j-vulkanBVkSubpassDescription2 - Structure specifying a subpass description DescriptionEParameters defined by this structure with the same name as those in 60 have the identical effect to those parameters.viewMask3 has the same effect for the described subpass as W:: pViewMasks$ has on each corresponding subpass.If an instance of  is included in the pNext chain, pFragmentShadingRateAttachment is not NULL , and its  attachment member is not Y, the identified attachment defines a fragment shading rate attachment for that subpass. Valid Usage2VUID-VkSubpassDescription2-pipelineBindPoint-03062 pipelineBindPoint must be 5VUID-VkSubpassDescription2-colorAttachmentCount-03063 colorAttachmentCount must be less than or equal to  ::maxColorAttachments'VUID-VkSubpassDescription2-loadOp-03064 If 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 4VUID-VkSubpassDescription2-pResolveAttachments-03065 If pResolveAttachments is not NULLE, for each resolve attachment that does not have the value *, the corresponding color attachment must not have the value 4VUID-VkSubpassDescription2-pResolveAttachments-03066 If pResolveAttachments is not NULL/, for each resolve attachment that is not *, the corresponding color attachment must! not have a sample count of %44VUID-VkSubpassDescription2-pResolveAttachments-03067 If pResolveAttachments is not NULL+, each resolve attachment that is not  must" have a sample count of %44VUID-VkSubpassDescription2-pResolveAttachments-03068 Any given element of pResolveAttachments must have the same K+ as its corresponding color attachment2VUID-VkSubpassDescription2-pColorAttachments-03069 All attachments in pColorAttachments that are not  must have the same sample count2VUID-VkSubpassDescription2-pInputAttachments-02897 All attachments in pInputAttachments that are not  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 {5 or {62VUID-VkSubpassDescription2-pColorAttachments-02898 All attachments in pColorAttachments that are not  must$ have image formats whose  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features contain {54VUID-VkSubpassDescription2-pResolveAttachments-02899 All attachments in pResolveAttachments that are not  must$ have image formats whose  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features contain {58VUID-VkSubpassDescription2-pDepthStencilAttachment-02900 If pDepthStencilAttachment is not NULL and the attachment is not  then it must& have an image format whose  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features contain {62VUID-VkSubpassDescription2-pColorAttachments-03070 If the VK_AMD_mixed_attachment_samples/ extension is enabled, all attachments in pColorAttachments that are not  mustT have a sample count that is smaller than or equal to the sample count of pDepthStencilAttachment if it is not 8VUID-VkSubpassDescription2-pDepthStencilAttachment-03071 If neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples% extensions are enabled, and if pDepthStencilAttachment is not  and any attachments in pColorAttachments are not , they must have the same sample count+VUID-VkSubpassDescription2-attachment-03073 The  attachment member of any element of pPreserveAttachments must not be 5VUID-VkSubpassDescription2-pPreserveAttachments-03074 Any given element of pPreserveAttachments mustK not also be an element of any other member of the subpass description'VUID-VkSubpassDescription2-layout-025281 If any attachment is used by more than one 6 member, then each use must use the same layout%VUID-VkSubpassDescription2-None-04439 Attachments must follow the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#attachment-type-imagelayoutimage layout requirements9 based on the type of attachment it is being used as&VUID-VkSubpassDescription2-flags-03076 If flags includes U , it must also include U+VUID-VkSubpassDescription2-attachment-02799 If the  attachment member of any element of pInputAttachments is not , then the  aspectMask member must be a valid combination of x+VUID-VkSubpassDescription2-attachment-02800 If the  attachment member of any element of pInputAttachments is not , then the  aspectMask member must not be 0+VUID-VkSubpassDescription2-attachment-02801 If the  attachment member of any element of pInputAttachments is not , then the  aspectMask member must not include x+VUID-VkSubpassDescription2-attachment-04563 If the  attachment member of any element of pInputAttachments is not , then the  aspectMask member must not include &VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT for any index i8VUID-VkSubpassDescription2-pDepthStencilAttachment-04440 An attachment must not be used in both pDepthStencilAttachment and pColorAttachmentsValid Usage (Implicit)&VUID-VkSubpassDescription2-sType-sType sType must be  &VUID-VkSubpassDescription2-pNext-pNext 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 3'VUID-VkSubpassDescription2-sType-unique The sType" value of each struct in the pNext chain must be unique*VUID-VkSubpassDescription2-flags-parameter flags must% be a valid combination of U values6VUID-VkSubpassDescription2-pipelineBindPoint-parameter pipelineBindPoint must be a valid W value6VUID-VkSubpassDescription2-pInputAttachments-parameter If inputAttachmentCount is not 0, pInputAttachments must( be a valid pointer to an array of inputAttachmentCount valid 1 structures6VUID-VkSubpassDescription2-pColorAttachments-parameter If colorAttachmentCount is not 0, pColorAttachments must( be a valid pointer to an array of colorAttachmentCount valid 1 structures8VUID-VkSubpassDescription2-pResolveAttachments-parameter If colorAttachmentCount is not 0, and pResolveAttachments is not NULL, pResolveAttachments must( be a valid pointer to an array of colorAttachmentCount valid 1 structures<VUID-VkSubpassDescription2-pDepthStencilAttachment-parameter If pDepthStencilAttachment is not NULL, pDepthStencilAttachment must be a valid pointer to a valid 1 structure9VUID-VkSubpassDescription2-pPreserveAttachments-parameter If preserveAttachmentCount is not 0, pPreserveAttachments must( be a valid pointer to an array of preserveAttachmentCount uint32_t valuesSee Also1, W, 0, C,  .vulkan@VkSubpassDependency2 - Structure specifying a subpass dependency DescriptionEParameters defined by this structure with the same name as those in 6c0 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.If an instance of  is included in the pNext chain,  srcStageMask,  dstStageMask,  srcAccessMask, and  dstAccessMaskj parameters are ignored. The synchronization and access scopes instead are defined by the parameters of . Valid Usage,VUID-VkSubpassDependency2-srcStageMask-03080 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 1,VUID-VkSubpassDependency2-dstStageMask-03081 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 1,VUID-VkSubpassDependency2-srcStageMask-03082 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 0,VUID-VkSubpassDependency2-dstStageMask-03083 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 0*VUID-VkSubpassDependency2-srcSubpass-03084  srcSubpass must be less than or equal to  dstSubpass, unless one of them is 7F, to avoid cyclic dependencies and ensure a valid execution order*VUID-VkSubpassDependency2-srcSubpass-03085  srcSubpass and  dstSubpass must not both be equal to 7*VUID-VkSubpassDependency2-srcSubpass-03087 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  dstStageMask-VUID-VkSubpassDependency2-srcAccessMask-03088" Any 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 types-VUID-VkSubpassDependency2-dstAccessMask-03089" Any 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 types/VUID-VkSubpassDependency2-dependencyFlags-03090 If dependencyFlags includes d,  srcSubpass must not be equal to 7/VUID-VkSubpassDependency2-dependencyFlags-03091 If dependencyFlags includes d,  dstSubpass must not be equal to 7*VUID-VkSubpassDependency2-srcSubpass-02245 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 *VUID-VkSubpassDependency2-viewOffset-02530 If  viewOffset is not equal to 0,  srcSubpass must not be equal to  dstSubpass/VUID-VkSubpassDependency2-dependencyFlags-03092 If dependencyFlags does not include d,  viewOffset must be 0,VUID-VkSubpassDependency2-srcStageMask-02103 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 -,VUID-VkSubpassDependency2-srcStageMask-02104 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 ,,VUID-VkSubpassDependency2-dstStageMask-02105 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 -,VUID-VkSubpassDependency2-dstStageMask-02106 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)%VUID-VkSubpassDependency2-sType-sType sType must be %VUID-VkSubpassDependency2-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of &VUID-VkSubpassDependency2-sType-unique The sType" value of each struct in the pNext chain must be unique0VUID-VkSubpassDependency2-srcStageMask-parameter  srcStageMask must be a valid combination of 9 values0VUID-VkSubpassDependency2-dstStageMask-parameter  dstStageMask must be a valid combination of 9 values1VUID-VkSubpassDependency2-srcAccessMask-parameter  srcAccessMask must be a valid combination of a values1VUID-VkSubpassDependency2-dstAccessMask-parameter  dstAccessMask must be a valid combination of a values3VUID-VkSubpassDependency2-dependencyFlags-parameter dependencyFlags must be a valid combination of ` valuesSee Also, H, Y, 0, C/vulkan<VkSubpassBeginInfo - Structure specifying subpass begin infoValid Usage (Implicit)See AlsoC, h, 3, V, 3, j0vulkanYVkRenderPassCreateInfo2 - Structure specifying parameters of a newly created render pass DescriptionEParameters defined by this structure with the same name as those in 6~e have the identical effect to those parameters; the child structures are variants of those used in 6~ 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 Usage'VUID-VkRenderPassCreateInfo2-None-03049[ If any two subpasses operate on attachments with overlapping ranges of the same /> object, and at least one subpass writes to that area of /, a subpass dependency mustS be included (either directly or via some intermediate subpasses) between them-VUID-VkRenderPassCreateInfo2-attachment-03050 If 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 /k object that overlaps with any other attachment in any subpass (including the same subpass), the 2 structures describing them must include  in flags-VUID-VkRenderPassCreateInfo2-attachment-03051 If 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 , it must be less than attachmentCount/VUID-VkRenderPassCreateInfo2-pAttachments-02522 For any member of  pAttachments with a loadOp equal to (, the first use of that attachment must not specify a layout equal to :, , or /VUID-VkRenderPassCreateInfo2-pAttachments-02523 For any member of  pAttachments with a  stencilLoadOp equal to (, the first use of that attachment must not specify a layout equal to :, , or 0VUID-VkRenderPassCreateInfo2-pDependencies-03054 For any element of  pDependencies , if the  srcSubpass is not 7', 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 subpass0VUID-VkRenderPassCreateInfo2-pDependencies-03055 For any element of  pDependencies , if the  dstSubpass is not 7', 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 subpass7VUID-VkRenderPassCreateInfo2-pCorrelatedViewMasks-030561 The set of bits included in any element of pCorrelatedViewMasks mustM not overlap with the set of bits included in any other element of pCorrelatedViewMasks+VUID-VkRenderPassCreateInfo2-viewMask-03057 If the -::viewMask member of all elements of  pSubpasses is 0, correlatedViewMaskCount must be 0+VUID-VkRenderPassCreateInfo2-viewMask-03058 The -::viewMask member of all elements of  pSubpasses must either all be 0, or all not be 0+VUID-VkRenderPassCreateInfo2-viewMask-03059 If the -::viewMask member of all elements of  pSubpasses is 0, the dependencyFlags member of any element of  pDependencies must not include d0VUID-VkRenderPassCreateInfo2-pDependencies-03060 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 d-VUID-VkRenderPassCreateInfo2-attachment-02525 If the  attachment# member of any element of the pInputAttachments member of any element of  pSubpasses is not , 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  attachment-VUID-VkRenderPassCreateInfo2-srcSubpass-02526 The  srcSubpass member of each element of  pDependencies must be less than  subpassCount-VUID-VkRenderPassCreateInfo2-dstSubpass-02527 The  dstSubpass member of each element of  pDependencies must be less than  subpassCount/VUID-VkRenderPassCreateInfo2-pAttachments-04585 If any element of  pAttachmentsG is used as a fragment shading rate attachment in any subpass, it must< not be used as any other attachment in the render pass(VUID-VkRenderPassCreateInfo2-flags-04521 If flags includes [, an element of  pSubpasses includes an instance of  in its pNext chain, and the pFragmentShadingRateAttachment/ member of that structure is not equal to NULL, the  attachment member of pFragmentShadingRateAttachment must be /VUID-VkRenderPassCreateInfo2-pAttachments-04586 If any element of  pAttachmentsG is used as a fragment shading rate attachment in any subpass, it must! have an image format whose  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-featurespotential format features contain {ZValid Usage (Implicit)(VUID-VkRenderPassCreateInfo2-sType-sType sType must be (VUID-VkRenderPassCreateInfo2-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of )VUID-VkRenderPassCreateInfo2-sType-unique The sType" value of each struct in the pNext chain must be unique,VUID-VkRenderPassCreateInfo2-flags-parameter flags must% be a valid combination of [ values3VUID-VkRenderPassCreateInfo2-pAttachments-parameter If attachmentCount is not 0,  pAttachments must( be a valid pointer to an array of attachmentCount valid 2 structures1VUID-VkRenderPassCreateInfo2-pSubpasses-parameter  pSubpasses must# be a valid pointer to an array of  subpassCount valid - structures4VUID-VkRenderPassCreateInfo2-pDependencies-parameter If dependencyCount is not 0,  pDependencies must( be a valid pointer to an array of dependencyCount valid . structures;VUID-VkRenderPassCreateInfo2-pCorrelatedViewMasks-parameter If correlatedViewMaskCount is not 0, pCorrelatedViewMasks must( be a valid pointer to an array of correlatedViewMaskCount uint32_t values5VUID-VkRenderPassCreateInfo2-subpassCount-arraylength  subpassCount must be greater than 0See Also2,  , C, ., -, 3, ^1vulkanEVkAttachmentReference2 - Structure specifying an attachment reference DescriptionEParameters defined by this structure with the same name as those in 60 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 Usage(VUID-VkAttachmentReference2-layout-03077 If  attachment is not , layout must not be ,  , or =VUID-VkAttachmentReference2-separateDepthStencilLayouts-03313 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 , layout must not be ;, <, =, or >,,VUID-VkAttachmentReference2-attachment-04754 If  attachment is not F, and the format of the referenced attachment is a color format, layout must not be ;, <, = or >,VUID-VkAttachmentReference2-attachment-04755 If  attachment is not , and the format of the referenced attachment is a depth/stencil format which includes both depth and stencil aspects, and layout is ; or < , the pNext chain must include a = structure,VUID-VkAttachmentReference2-attachment-04756 If  attachment is not x, and the format of the referenced attachment is a depth/stencil format which includes only the depth aspect, layout must not be = or >,VUID-VkAttachmentReference2-attachment-04757 If  attachment is not z, and the format of the referenced attachment is a depth/stencil format which includes only the stencil aspect, layout must not be ; or <Valid Usage (Implicit)'VUID-VkAttachmentReference2-sType-sType sType must be 'VUID-VkAttachmentReference2-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of =(VUID-VkAttachmentReference2-sType-unique The sType" value of each struct in the pNext chain must be unique,VUID-VkAttachmentReference2-layout-parameter layout must be a valid O valueSee Also, , O, C, -, 32vulkanJVkAttachmentDescription2 - 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/VUID-VkAttachmentDescription2-finalLayout-03061  finalLayout must not be  or *VUID-VkAttachmentDescription2-format-03294 If format is a color format,  initialLayout must not be ?, , , or *VUID-VkAttachmentDescription2-format-03295 If format! is a depth/stencil format,  initialLayout must not be @*VUID-VkAttachmentDescription2-format-03296 If format is a color format,  finalLayout must not be ?, , , or *VUID-VkAttachmentDescription2-format-03297 If format! is a depth/stencil format,  finalLayout must not be @?VUID-VkAttachmentDescription2-separateDepthStencilLayouts-03298 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 >?VUID-VkAttachmentDescription2-separateDepthStencilLayouts-03299 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 >*VUID-VkAttachmentDescription2-format-03300 If format is a color format,  initialLayout must not be ;, <, = or >*VUID-VkAttachmentDescription2-format-03301 If format is a color format,  finalLayout must not be ;, <, = or >*VUID-VkAttachmentDescription2-format-03302 If formatX is a depth/stencil format which includes both depth and stencil aspects, and  initialLayout is ; or < , the pNext chain must include a > structure*VUID-VkAttachmentDescription2-format-03303 If formatX is a depth/stencil format which includes both depth and stencil aspects, and  finalLayout is ; or < , the pNext chain must include a > structure*VUID-VkAttachmentDescription2-format-03304 If formatK is a depth/stencil format which includes only the depth aspect,  initialLayout must not be = or >*VUID-VkAttachmentDescription2-format-03305 If formatK is a depth/stencil format which includes only the depth aspect,  finalLayout must not be = or >*VUID-VkAttachmentDescription2-format-03306 If formatM is a depth/stencil format which includes only the stencil aspect,  initialLayout must not be ; or <*VUID-VkAttachmentDescription2-format-03307 If formatM is a depth/stencil format which includes only the stencil aspect,  finalLayout must not be ; or <Valid Usage (Implicit))VUID-VkAttachmentDescription2-sType-sType sType must be  )VUID-VkAttachmentDescription2-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of >*VUID-VkAttachmentDescription2-sType-unique The sType" value of each struct in the pNext chain must be unique-VUID-VkAttachmentDescription2-flags-parameter flags must% be a valid combination of  values.VUID-VkAttachmentDescription2-format-parameter format must be a valid K value/VUID-VkAttachmentDescription2-samples-parameter samples must be a valid a value.VUID-VkAttachmentDescription2-loadOp-parameter loadOp must be a valid  value/VUID-VkAttachmentDescription2-storeOp-parameter storeOp must be a valid  value5VUID-VkAttachmentDescription2-stencilLoadOp-parameter  stencilLoadOp must be a valid  value6VUID-VkAttachmentDescription2-stencilStoreOp-parameter stencilStoreOp must be a valid  value5VUID-VkAttachmentDescription2-initialLayout-parameter  initialLayout must be a valid O value3VUID-VkAttachmentDescription2-finalLayout-parameter  finalLayout must be a valid O valueSee Also, , , K, O, 0, a, C3Svulkancontents is a hI value specifying how the commands in the next subpass will be provided.*VUID-VkSubpassBeginInfo-contents-parameter contents must be a valid h value3UvulkanpNext is NULL6 or a pointer to a structure extending this structure.3Vvulkanflags is reserved for future use.3Wvulkan pAttachments is a pointer to an array of attachmentCount 2@ structures describing the attachments used by the render pass.3Xvulkan pSubpasses is a pointer to an array of  subpassCount -$ structures describing each subpass.3Yvulkan pDependencies is a pointer to an array of dependencyCount .@ structures describing dependencies between pairs of subpasses.3ZvulkanpCorrelatedViewMasksG is a pointer to an array of view masks indicating sets of views that may* be more efficient to render concurrently.3\vulkanpNext is NULL6 or a pointer to a structure extending this structure.3]vulkan srcSubpassB is the subpass index of the first subpass in the dependency, or 7.3^vulkan dstSubpassC is the subpass index of the second subpass in the dependency, or 7.3_vulkan srcStageMask is a bitmask of 9 specifying the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-maskssource stage mask.3`vulkan dstStageMask is a bitmask of 9 specifying the shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masksdestination stage mask3avulkan srcAccessMask is a bitmask of a specifying a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-maskssource access mask.3bvulkan dstAccessMask is a bitmask of a specifying a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masksdestination access mask.3cvulkandependencyFlags is a bitmask of `.3dvulkan viewOffset\ controls which views in the source subpass the views in the destination subpass depend on.3fvulkanpNext is NULL6 or a pointer to a structure extending this structure.3gvulkanflags is a bitmask of U" specifying usage of the subpass.3hvulkanpipelineBindPoint is a W@ value specifying the pipeline type supported for this subpass.3ivulkanviewMask| is a bitfield of view indices describing which views rendering is broadcast to in this subpass, when multiview is enabled.3jvulkanpInputAttachments is a pointer to an array of 1P structures defining the input attachments for this subpass and their layouts.3kvulkanpColorAttachments is a pointer to an array of 1P structures defining the color attachments for this subpass and their layouts.3lvulkanpResolveAttachments is an optional array of colorAttachmentCount 1Q structures defining the resolve attachments for this subpass and their layouts.3mvulkanpDepthStencilAttachment is a pointer to a 1U structure specifying the depth/stencil attachment for this subpass and its layout.3nvulkanpPreserveAttachments 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.3pvulkanpNext is NULL6 or a pointer to a structure extending this structure.3qvulkan attachmentV is either an integer value identifying an attachment at the corresponding index in 6~:: pAttachments, or . to signify that this attachment is not used.3rvulkanlayout is a OE value specifying the layout the attachment uses during the subpass.3svulkan aspectMask is a mask of which aspect(s) canB be accessed within the specified subpass as an input attachment.3uvulkanpNext is NULL6 or a pointer to a structure extending this structure.3vvulkanflags is a bitmask of 5 specifying additional properties of the attachment.3wvulkanformat is a KP value specifying the format of the image that will be used for the attachment.3xvulkansamples6 is the number of samples of the image as defined in a.3yvulkanloadOp 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.3zvulkanstoreOp is a  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.3{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.3|vulkanstencilStoreOp is a  value specifying how the contents of stencil components of the attachment are treated at the end of the last subpass where it is used.3}vulkan initialLayout_ is the layout the attachment image subresource will be in when a render pass instance begins.3~vulkan finalLayoutj is the layout the attachment image subresource will be transitioned to when a render pass instance ends.3vulkan5vkCreateRenderPass2 - Create a new render pass object Description+This command is functionally identical to 6\7, but includes extensible sub-structures that include sType and pNext7 parameters, allowing them to be more easily extended.Valid Usage (Implicit))VUID-vkCreateRenderPass2-device-parameter device must be a valid  handle.VUID-vkCreateRenderPass2-pCreateInfo-parameter  pCreateInfo must be a valid pointer to a valid 0 structure-VUID-vkCreateRenderPass2-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure.VUID-vkCreateRenderPass2-pRenderPass-parameter  pRenderPass must be a valid pointer to a y handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , y, 03vulkan/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,VUID-vkCmdBeginRenderPass2-framebuffer-02779 Both the  framebuffer and  renderPass members of pRenderPassBegin must$ have been created on the same  that  commandBuffer was allocated on .VUID-vkCmdBeginRenderPass2-initialLayout-03094 If any of the  initialLayout or  finalLayout member of the 6 structures or the layout member of the 6O 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 .VUID-vkCmdBeginRenderPass2-initialLayout-03096 If any of the  initialLayout or  finalLayout member of the 6 structures or the layout member of the 6O 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 .VUID-vkCmdBeginRenderPass2-initialLayout-02844 If any of the  initialLayout or  finalLayout member of the 6 structures or the layout member of the 6O 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 5VUID-vkCmdBeginRenderPass2-stencilInitialLayout-02845 If 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 .VUID-vkCmdBeginRenderPass2-initialLayout-03097 If any of the  initialLayout or  finalLayout member of the 6 structures or the layout member of the 6O 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  or .VUID-vkCmdBeginRenderPass2-initialLayout-03098 If any of the  initialLayout or  finalLayout member of the 6 structures or the layout member of the 6O 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 .VUID-vkCmdBeginRenderPass2-initialLayout-03099 If any of the  initialLayout or  finalLayout member of the 6 structures or the layout member of the 6O 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 .VUID-vkCmdBeginRenderPass2-initialLayout-03100 If 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 pRenderPassBegin-VUID-vkCmdBeginRenderPass2-srcStageMask-03101 The  srcStageMask and  dstStageMask members of any element of the  pDependencies member of 6~ 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 from,VUID-vkCmdBeginRenderPass2-framebuffer-02533 For 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  setValid Usage (Implicit)2VUID-vkCmdBeginRenderPass2-commandBuffer-parameter  commandBuffer must be a valid  handle5VUID-vkCmdBeginRenderPass2-pRenderPassBegin-parameter pRenderPassBegin must$ be a valid pointer to a valid  structure6VUID-vkCmdBeginRenderPass2-pSubpassBeginInfo-parameter pSubpassBeginInfo must$ be a valid pointer to a valid / structure2VUID-vkCmdBeginRenderPass2-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state0VUID-vkCmdBeginRenderPass2-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations%VUID-vkCmdBeginRenderPass2-renderpass This command must6 only be called outside of a render pass instance&VUID-vkCmdBeginRenderPass2-bufferlevel  commandBuffer must be a primary Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, , /3vulkan>This function will call the supplied action between calls to 3 and 3 Note that 3@ is *not* called if an exception is thrown by the inner action.3vulkanCvkCmdNextSubpass2 - Transition to the next subpass of a render pass Description3 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 Usage!VUID-vkCmdNextSubpass2-None-03102 The current subpass index mustG be less than the number of subpasses in the render pass minus one!VUID-vkCmdNextSubpass2-None-02350 This command must7 not be recorded when transform feedback is activeValid Usage (Implicit).VUID-vkCmdNextSubpass2-commandBuffer-parameter  commandBuffer must be a valid  handle2VUID-vkCmdNextSubpass2-pSubpassBeginInfo-parameter pSubpassBeginInfo must$ be a valid pointer to a valid / structure0VUID-vkCmdNextSubpass2-pSubpassEndInfo-parameter pSubpassEndInfo must be a valid pointer to a valid , structure.VUID-vkCmdNextSubpass2-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state,VUID-vkCmdNextSubpass2-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations!VUID-vkCmdNextSubpass2-renderpass This command must5 only be called inside of a render pass instance"VUID-vkCmdNextSubpass2-bufferlevel  commandBuffer must be a primary Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, /, ,3vulkan1vkCmdEndRenderPass2 - End the current render pass Description3 is semantically identical to  , except that it is extensible. Valid Usage#VUID-vkCmdEndRenderPass2-None-03103 The current subpass index mustF be equal to the number of subpasses in the render pass minus one#VUID-vkCmdEndRenderPass2-None-02352 This command must7 not be recorded when transform feedback is activeValid Usage (Implicit)0VUID-vkCmdEndRenderPass2-commandBuffer-parameter  commandBuffer must be a valid  handle2VUID-vkCmdEndRenderPass2-pSubpassEndInfo-parameter pSubpassEndInfo must$ be a valid pointer to a valid , structure0VUID-vkCmdEndRenderPass2-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state.VUID-vkCmdEndRenderPass2-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operations#VUID-vkCmdEndRenderPass2-renderpass This command must5 only be called inside of a render pass instance$VUID-vkCmdEndRenderPass2-bufferlevel  commandBuffer must be a primary Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, ,3vulkandevice4 is the logical device that creates the render pass.vulkan pCreateInfo is a pointer to a 09 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.3vulkan 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.3vulkan 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.3vulkan 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.',3Q-3e3g3f3h3j3k3l3m3n3i.3[3\3_3`3]3^3a3b3c3d/3R3S03T3V3U3W3X3Y3Z13o3s3p3r3q23t3v3u3x3w3y3z3{3|3}3~CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE333333333323t3v3u3x3w3y3z3{3|3}3~13o3s3p3r3q-3e3g3f3h3j3k3l3m3n3i.3[3\3_3`3]3^3a3b3c3d03T3V3U3W3X3Y3Z/3R3S,3QCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFENone("#%&'-./1789;=>?FHIMSUVX_dghklmqۗ'vulkanUVkFragmentShadingRateCombinerOpKHR - Control how fragment shading rates are combined Descriptionbwhere combine(Axy,Bxy) is the combine operation, and Axy and Bxy are the inputs to the operation.If  ~https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-fragmentShadingRateStrictMultiplyCombiner)fragmentShadingRateStrictMultiplyCombiner is . , using 3 with values of 1 for both A and B in the same dimension results in the value 2 being produced for that dimension. See the definition of  ~https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-fragmentShadingRateStrictMultiplyCombiner)fragmentShadingRateStrictMultiplyCombiner for more information.;These operations are performed in a component-wise fashion.See AlsoQ, , , 3vulkanxVkPipelineFragmentShadingRateStateCreateInfoKHR - Structure specifying parameters controlling the fragment shading rate DescriptionIf the pNext chain of 7r includes a f structure, then that structure includes parameters that control the pipeline fragment shading rate."If this structure is not present,  fragmentSize; is considered to be equal to (1,1), and both elements of  combinerOps are considered to be equal to 3.Valid Usage (Implicit)@VUID-VkPipelineFragmentShadingRateStateCreateInfoKHR-sType-sType sType must be JVUID-VkPipelineFragmentShadingRateStateCreateInfoKHR-combinerOps-parameter Any given element of  combinerOps must be a valid  valueSee Alsou, , CvulkanVkPhysicalDeviceFragmentShadingRatePropertiesKHR - Structure describing variable fragment shading rate limits that can be supported by an implementationMembersThe members of the T structure describe the following implementation-dependent properties related to  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-primsrast-fragment-shading-ratefragment shading rates: DescriptionNote9Multiplication of the combiner rates using the fragment width/height in linear space is equivalent to an addition of those values in log2 space. Some implementations inadvertently implemented an addition in linear space due to unclear requirements originating outside of this specification. This resulted in  ~https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-fragmentShadingRateStrictMultiplyCombiner)fragmentShadingRateStrictMultiplyCombiner being added. Fortunately, this only affects situations where a rate of 1 in either dimension is combined with another rate of 1. All other combinations result in the exact same result as if multiplication was performed in linear space due to the clamping logic, and the fact that both the sum and product of 2 and 2 are equal. In many cases, this limit will not affect the correct operation of applications.If the  structure is included in the pNext chain of T 9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alsop, u, a, CvulkanVkPhysicalDeviceFragmentShadingRateKHR - Structure returning information about sample count specific additional multisampling capabilitiesValid Usage (Implicit)See Alsou, b, C, 3vulkanqVkPhysicalDeviceFragmentShadingRateFeaturesKHR - Structure indicating support for variable rate fragment shadingMembersThe 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  2 to enable these features.Valid Usage (Implicit)See Alsop, CvulkanoVkFragmentShadingRateAttachmentInfoKHR - Structure specifying a fragment shading rate attachment for a subpass DescriptionIf no shading rate attachment is specified, or if this structure isn t specified, the implementation behaves as if a valid shading rate attachment was specified with all texels specifying a single pixel per fragment. Valid UsagePVUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04524 If pFragmentShadingRateAttachment is not NULL and its  attachment member is not , its layout member must be equal to C or 3PVUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04525 If pFragmentShadingRateAttachment is not NULL and its  attachment member is not , $shadingRateAttachmentTexelSize.width must be a power of two valuePVUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04526 If pFragmentShadingRateAttachment is not NULL and its  attachment member is not , $shadingRateAttachmentTexelSize.width must$ be less than or equal to ~https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSize/maxFragmentShadingRateAttachmentTexelSize.widthPVUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04527 If pFragmentShadingRateAttachment is not NULL and its  attachment member is not , $shadingRateAttachmentTexelSize.width must' be greater than or equal to ~https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minFragmentShadingRateAttachmentTexelSize/minFragmentShadingRateAttachmentTexelSize.widthPVUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04528 If pFragmentShadingRateAttachment is not NULL and its  attachment member is not , %shadingRateAttachmentTexelSize.height must be a power of two valuePVUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04529 If pFragmentShadingRateAttachment is not NULL and its  attachment member is not , %shadingRateAttachmentTexelSize.height must$ be less than or equal to ~https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSize0maxFragmentShadingRateAttachmentTexelSize.heightPVUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04530 If pFragmentShadingRateAttachment is not NULL and its  attachment member is not , %shadingRateAttachmentTexelSize.height must' be greater than or equal to ~https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minFragmentShadingRateAttachmentTexelSize0minFragmentShadingRateAttachmentTexelSize.heightPVUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04531 If pFragmentShadingRateAttachment is not NULL and its  attachment member is not , the quotient of $shadingRateAttachmentTexelSize.width and %shadingRateAttachmentTexelSize.height must$ be less than or equal to https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio4maxFragmentShadingRateAttachmentTexelSizeAspectRatioPVUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04532 If pFragmentShadingRateAttachment is not NULL and its  attachment member is not , the quotient of %shadingRateAttachmentTexelSize.height and $shadingRateAttachmentTexelSize.width must$ be less than or equal to https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio4maxFragmentShadingRateAttachmentTexelSizeAspectRatioValid Usage (Implicit)7VUID-VkFragmentShadingRateAttachmentInfoKHR-sType-sType sType must be TVUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-parameter pFragmentShadingRateAttachment must) be a valid pointer to a valid 1 structureSee Also1, u, C3vulkan sampleCountsH is a bitmask of sample counts for which the shading rate described by  fragmentSize is supported.3vulkan fragmentSize is a u> describing the width and height of a supported shading rate.3vulkan0limits-minFragmentShadingRateAttachmentTexelSize )minFragmentShadingRateAttachmentTexelSize indicates minimum supported width and height of the portion of the framebuffer corresponding to each texel in a fragment shading rate attachment. Each value must* be less than or equal to the values in )maxFragmentShadingRateAttachmentTexelSize . Each value must be a power-of-two. It must be (0,0) if the  thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRateattachmentFragmentShadingRate feature is not supported.3vulkan0limits-maxFragmentShadingRateAttachmentTexelSize )maxFragmentShadingRateAttachmentTexelSize indicates maximum supported width and height of the portion of the framebuffer corresponding to each texel in a fragment shading rate attachment. Each value must- be greater than or equal to the values in )minFragmentShadingRateAttachmentTexelSize . Each value must be a power-of-two. It must be (0,0) if the  thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRateattachmentFragmentShadingRate feature is not supported.3vulkan;limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio 4maxFragmentShadingRateAttachmentTexelSizeAspectRatio indicates the maximum ratio between the width and height of the portion of the framebuffer corresponding to each texel in a fragment shading rate attachment. 4maxFragmentShadingRateAttachmentTexelSizeAspectRatio must be a power-of-two value, and must be less than or equal to max(/maxFragmentShadingRateAttachmentTexelSize.width7 / minFragmentShadingRateAttachmentTexelSize.height, 0maxFragmentShadingRateAttachmentTexelSize.height9 / minFragmentShadingRateAttachmentTexelSize.width). It must be 0 if the  thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRateattachmentFragmentShadingRate feature is not supported.3vulkan8limits-primitiveFragmentShadingRateWithMultipleViewports 1primitiveFragmentShadingRateWithMultipleViewports specifies whether the  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitiveprimitive fragment shading rate can= be used when multiple viewports are used. If this value is ., only a single viewport must be used, and applications must not write to the ViewportMaskNV or  ViewportIndex built-in when setting PrimitiveShadingRateKHR. It must be . if the  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderOutputViewportIndexshaderOutputViewportIndex feature, the  'VK_EXT_shader_viewport_index_layer.html"VK_EXT_shader_viewport_index_layer extension, or the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometryShader' feature is not supported, or if the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveFragmentShadingRateprimitiveFragmentShadingRate feature is not supported.3vulkan$limits-layeredShadingRateAttachments layeredShadingRateAttachments9 specifies whether a shading rate attachment image view can5 be created with multiple layers. If this value is .&, when creating an image view with a usage that includes 3,  layerCount must be 1. It must be . if the  `https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiview multiview feature, the  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderOutputViewportIndexshaderOutputViewportIndex feature, the  'VK_EXT_shader_viewport_index_layer.html"VK_EXT_shader_viewport_index_layer extension, or the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometryShader' feature is not supported, or if the  thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRateattachmentFragmentShadingRate feature is not supported.3vulkan/limits-fragmentShadingRateNonTrivialCombinerOps (fragmentShadingRateNonTrivialCombinerOps specifies whether  enums other than 3 or 3 can be used. It must be . unless either the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveFragmentShadingRateprimitiveFragmentShadingRate or  thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRateattachmentFragmentShadingRate feature is supported.3vulkanlimits-maxFragmentSize maxFragmentSizeF indicates the maximum supported width and height of a fragment. Its width and height members mustX both be power-of-two values. This limit is purely informational, and is not validated.3vulkan!limits-maxFragmentSizeAspectRatio maxFragmentSizeAspectRatioK indicates the maximum ratio between the width and height of a fragment. maxFragmentSizeAspectRatio must be a power-of-two value, and must. be less than or equal to the maximum of the width and height members of maxFragmentSize<. This limit is purely informational, and is not validated.3vulkan,limits-maxFragmentShadingRateCoverageSamples %maxFragmentShadingRateCoverageSamplesT specifies the maximum number of coverage samples supported in a single fragment. %maxFragmentShadingRateCoverageSamples must. be less than or equal to the product of the width and height members of maxFragmentSize%, and the sample count reported by *maxFragmentShadingRateRasterizationSamples. %maxFragmentShadingRateCoverageSamples must be less than or equal to maxSampleMaskWords * 32 if 'fragmentShadingRateWithShaderSampleMaskI is supported. This limit is purely informational, and is not validated.3vulkan1limits-maxFragmentShadingRateRasterizationSamples *maxFragmentShadingRateRasterizationSamples specifies the maximum sample rate supported when a fragment covers multiple pixels. This limit is purely informational, and is not validated.3vulkan6limits-fragmentShadingRateWithShaderDepthStencilWrites /fragmentShadingRateWithShaderDepthStencilWrites8 specifies whether the implementation supports writing  FragDepth or FragStencilRefEXTF from a fragment shader for multi-pixel fragments. If this value is .L, writing to those built-ins will clamp the fragment shading rate to (1,1).3vulkan(limits-fragmentShadingRateWithSampleMask !fragmentShadingRateWithSampleMaskK specifies whether the the implementation supports setting valid bits of 7W::pSampleMask to 0. for multi-pixel fragments. If this value is .W, zeroing valid bits in the sample mask will clamp the fragment shading rate to (1,1).3vulkan.limits-fragmentShadingRateWithShaderSampleMask 'fragmentShadingRateWithShaderSampleMaskD specifies whether the implementation supports reading or writing .H. for multi-pixel fragments. If this value is .E, using that built-in will clamp the fragment shading rate to (1,1).3vulkan7limits-fragmentShadingRateWithConservativeRasterization 0fragmentShadingRateWithConservativeRasterization specifies whether  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-conservativerasterconservative rasterization- is supported for multi-pixel fragments. It must be . if  &VK_EXT_conservative_rasterization.html!VK_EXT_conservative_rasterization& is not supported. If this value is . , using  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-conservativerasterconservative rasterization0 will clamp the fragment shading rate to (1,1).3vulkan5limits-fragmentShadingRateWithFragmentShaderInterlock .fragmentShadingRateWithFragmentShaderInterlock specifies whether  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-shader-interlockfragment shader interlock- is supported for multi-pixel fragments. It must be . if  %VK_EXT_fragment_shader_interlock.html VK_EXT_fragment_shader_interlock& is not supported. If this value is . , using  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-shader-interlockfragment shader interlock0 will clamp the fragment shading rate to (1,1).3vulkan3limits-fragmentShadingRateWithCustomSampleLocations ,fragmentShadingRateWithCustomSampleLocations specifies whether  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primrast-samplelocationscustom sample locations. are supported for multi-pixel fragments. It must be . if  VK_EXT_sample_locations.htmlVK_EXT_sample_locations% is not supported. If this value is . , using  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primrast-samplelocationscustom sample locations0 will clamp the fragment shading rate to (1,1).3vulkan0limits-fragmentShadingRateStrictMultiplyCombiner )fragmentShadingRateStrictMultiplyCombiner specifies whether VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR accurately performs a multiplication or not. Implementations where this value is .2 will instead combine rates with an addition. If (fragmentShadingRateNonTrivialCombinerOps is ., implementations must report this as .. If (fragmentShadingRateNonTrivialCombinerOps is ., implementations should report this as ..3vulkan$features-pipelineFragmentShadingRate pipelineFragmentShadingRate2 indicates that the implementation supports the  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipelinepipeline fragment shading rate.3vulkan%features-primitiveFragmentShadingRate primitiveFragmentShadingRate2 indicates that the implementation supports the  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitiveprimitive fragment shading rate.3vulkan&features-attachmentFragmentShadingRate attachmentFragmentShadingRate2 indicates that the implementation supports the  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment attachment fragment shading rate.3vulkan fragmentSize specifies a u structure containing the fragment size used to define the pipeline fragment shading rate for draw commands using this pipeline.3vulkan combinerOps specifies a  value determining how the  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipelinepipeline,  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive, and  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachmentattachment shading rates are  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-combiningcombinedI for fragments generated by drawing commands using the created pipeline.3vulkanpFragmentShadingRateAttachment is an optional L structure defining the fragment shading rate attachment for this subpass.3vulkanshadingRateAttachmentTexelSizeW specifies the size of the portion of the framebuffer corresponding to each texel in pFragmentShadingRateAttachment.3vulkan33 combiner operation of combine(Axy,Bxy) = Axy*Bxy.3vulkan3D specifies a combiner operation of combine(Axy,Bxy) = max(Axy,Bxy).3vulkan3D specifies a combiner operation of combine(Axy,Bxy) = min(Axy,Bxy).3vulkan3; specifies a combiner operation of combine(Axy,Bxy) = Bxy.3vulkan3; specifies a combiner operation of combine(Axy,Bxy) = Axy.3vulkanPvkCmdSetFragmentShadingRateKHR - Set pipeline fragment shading rate dynamically Valid UsageEVUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04507 If  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRatepipelineFragmentShadingRate is not enabled,  pFragmentSize->width must be 1 EVUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04508 If  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRatepipelineFragmentShadingRate is not enabled,  pFragmentSize->height must be 1EVUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04509 One of  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRatepipelineFragmentShadingRate,  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveFragmentShadingRateprimitiveFragmentShadingRate, or  thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRateattachmentFragmentShadingRate must be enabledFVUID-vkCmdSetFragmentShadingRateKHR-primitiveFragmentShadingRate-04510 If the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-primitiveFragmentShadingRate$primitiveFragmentShadingRate feature is not enabled,  combinerOps[0] must be 3GVUID-vkCmdSetFragmentShadingRateKHR-attachmentFragmentShadingRate-04511 If the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-attachmentFragmentShadingRate%attachmentFragmentShadingRate feature is not enabled,  combinerOps[1] must be 3KVUID-vkCmdSetFragmentShadingRateKHR-fragmentSizeNonTrivialCombinerOps-04512 If the  }https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-fragmentShadingRateNonTrivialCombinerOps!fragmentSizeNonTrivialCombinerOps* limit is not supported, elements of  combinerOps must be either 3 or 37VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04513  pFragmentSize->width must be greater than or equal to 17VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04514  pFragmentSize->height must be greater than or equal to 17VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04515  pFragmentSize->width must be a power-of-two value7VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04516  pFragmentSize->height must be a power-of-two value7VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04517  pFragmentSize->width must be less than or equal to 47VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04518  pFragmentSize->height must be less than or equal to 4Valid Usage (Implicit);VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-parameter  commandBuffer must be a valid  handle;VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-parameter  pFragmentSize must$ be a valid pointer to a valid u structure9VUID-vkCmdSetFragmentShadingRateKHR-combinerOps-parameter Any given element of  combinerOps must be a valid  value;VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state9VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, u, 3vulkan_vkGetPhysicalDeviceFragmentShadingRatesKHR - Get available shading rates for a physical device DescriptionIf pFragmentShadingRates is NULLF, then the number of fragment shading rates available is returned in pFragmentShadingRateCount. Otherwise, pFragmentShadingRateCount mustG point to a variable set by the user to the number of elements in the pFragmentShadingRatesf array, and on return the variable is overwritten with the number of structures actually written to pFragmentShadingRates. If pFragmentShadingRateCountG is less than the number of fragment shading rates available, at most pFragmentShadingRateCount" structures will be written, and A will be returned instead of FO, to indicate that not all the available fragment shading rates were returned.-The returned array of fragment shading rates must be ordered from largest fragmentSize.widthJ value to smallest, and each set of fragment shading rates with the same fragmentSize.width value must be ordered from largest fragmentSize.height, to smallest. Any two entries in the array must not have the same  fragmentSize values.;For any entry in the array, the following rules also apply: The value of fragmentSize.width must be less than or equal to  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentSizemaxFragmentSize.width. The value of fragmentSize.width must" be greater than or equal to 1. The value of fragmentSize.width must be a power-of-two. The value of fragmentSize.height must be less than or equal to  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentSizemaxFragmentSize.height. The value of fragmentSize.height must" be greater than or equal to 1. The value of fragmentSize.height must be a power-of-two.The highest sample count in  sampleCounts must$ be less than or equal to  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateRasterizationSamples*maxFragmentShadingRateRasterizationSamples.The product of fragmentSize.width, fragmentSize.height', and the highest sample count in  sampleCounts must$ be less than or equal to  zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateCoverageSamples%maxFragmentShadingRateCoverageSamples.Implementations must. support at least the following shading rates:  sampleCounts/   fragmentSize  %4B | %r k {2,2}  %4B | %r k {2,1} > ~0 # {1,1} If  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-framebufferColorSampleCountsframebufferColorSampleCounts , includes %q, the required rates must also include %q.NoteIncluding the {1,1} fragment size is done for completeness; it has no actual effect on the support of rendering without setting the fragment size. All sample counts are supported for this rate.Valid Usage (Implicit)HVUID-vkGetPhysicalDeviceFragmentShadingRatesKHR-physicalDevice-parameter physicalDevice must be a valid  handleSVUID-vkGetPhysicalDeviceFragmentShadingRatesKHR-pFragmentShadingRateCount-parameter pFragmentShadingRateCount must be a valid pointer to a uint32_t valueOVUID-vkGetPhysicalDeviceFragmentShadingRatesKHR-pFragmentShadingRates-parameter! If the value referenced by pFragmentShadingRateCount is not 0 , and pFragmentShadingRates is not NULL, pFragmentShadingRates must# be a valid pointer to an array of pFragmentShadingRateCount  structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessFA  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@See Also, 3vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkan pFragmentSizeL specifies the pipeline fragment shading rate for subsequent draw commands.vulkan combinerOps specifies a  determining how the  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipelinepipeline,  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive, and  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachmentattachment shading rates are  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-combiningcombined9 for fragments generated by subsequent drawing commands.3vulkanphysicalDeviceH is the handle to the physical device whose properties will be queried.533333333333333333333333333333333333333333333333:3333333333333333333333333333333333333333333333333333None("#%&'-./1789;=>?FHIMSUVX_dghklmqҞ):vulkanAVkFragmentShadingRateNV - Enumeration with fragment shading rates DescriptionTo use the shading rates 4, 4 , 4 , and 4 = as a pipeline, primitive, or attachment shading rate, the supersampleFragmentShadingRates feature must& be enabled. To use the shading rate 4 = as a pipeline, primitive, or attachment shading rate, the  noInvocationFragmentShadingRates feature must be enabled.See Also;, 4;vulkanVkPipelineFragmentShadingRateEnumStateCreateInfoNV - Structure specifying parameters controlling the fragment shading rate using rate enums DescriptionIf the pNext chain of 7r includes a ;f structure, then that structure includes parameters that control the pipeline fragment shading rate."If this structure is not present, shadingRateType is considered to be equal to 4 ,  shadingRate is considered to be equal to 4, and both elements of  combinerOps are considered to be equal to 3.Valid Usage (Implicit)CVUID-VkPipelineFragmentShadingRateEnumStateCreateInfoNV-sType-sType sType must be QVUID-VkPipelineFragmentShadingRateEnumStateCreateInfoNV-shadingRateType-parameter shadingRateType must be a valid 3 valueMVUID-VkPipelineFragmentShadingRateEnumStateCreateInfoNV-shadingRate-parameter  shadingRate must be a valid : valueMVUID-VkPipelineFragmentShadingRateEnumStateCreateInfoNV-combinerOps-parameter Any given element of  combinerOps must be a valid  valueSee Also, :, 3, C<vulkanVkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV - Structure describing fragment shading rate limits that can be supported by an implementationMembersThe members of the <T structure describe the following implementation-dependent properties related to  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-primsrast-fragment-shading-ratefragment shading rates: DescriptionIf the < structure is included in the pNext chain of T 9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alsoa, C=vulkanrVkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV - Structure indicating support for fragment shading rate enumsMembersThe 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  2 to enable these features.Valid Usage (Implicit)See Alsop, C3vulkanKVkFragmentShadingRateTypeNV - Enumeration with fragment shading rate typesSee Also;3vulkanshadingRateType specifies a 3Y value indicating whether fragment shading rates are specified using fragment sizes or : enums.3vulkan shadingRate specifies a :6 value indicating the pipeline fragment shading rate.3vulkan combinerOps specifies  values determining how the  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipelinepipeline,  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive, and  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachmentattachment shading rates are  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-combiningcombinedI for fragments generated by drawing commands using the created pipeline.4vulkan,limits-maxFragmentShadingRateInvocationCount %maxFragmentShadingRateInvocationCount indicates the maximum number of fragment shader invocations per fragment supported in pipeline, primitive, and attachment fragment shading rates.iVUID-VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV-maxFragmentShadingRateInvocationCount-parameter %maxFragmentShadingRateInvocationCount must be a valid a value4vulkan!features-fragmentShadingRateEnums fragmentShadingRateEnumsZ indicates that the implementation supports specifying fragment shading rates using the : enumerated type.4vulkan(features-supersampleFragmentShadingRates supersampleFragmentShadingRates indicates that the implementation supports fragment shading rate enum values indicating more than one invocation per fragment.4vulkan)features-noInvocationFragmentShadingRates  noInvocationFragmentShadingRates indicates that the implementation supports a fragment shading rate enum value indicating that no fragment shaders should be invoked when that shading rate is used.4vulkan4 specifies that a graphics pipeline should obtain its pipeline fragment shading rate and shading rate combiner state from the ;1 structure and that any state specified by the R structure should be ignored.4 vulkan4  specifies that a graphics pipeline should obtain its pipeline fragment shading rate and shading rate combiner state from the R1 structure and that any state specified by the ; structure should be ignored.4 vulkan4  specifies that any portions of a primitive that use that shading rate should be discarded without invoking any fragment shader.4 vulkan4 b specifies a fragment size of 1x1 pixels, with sixteen fragment shader invocations per fragment.4 vulkan4 _ specifies a fragment size of 1x1 pixels, with eight fragment shader invocations per fragment.4 vulkan4 ^ specifies a fragment size of 1x1 pixels, with four fragment shader invocations per fragment.4vulkan4] specifies a fragment size of 1x1 pixels, with two fragment shader invocations per fragment.4vulkan4* specifies a fragment size of 4x4 pixels.4vulkan4* specifies a fragment size of 4x2 pixels.4vulkan4* specifies a fragment size of 2x4 pixels.4vulkan4* specifies a fragment size of 2x2 pixels.4vulkan4* specifies a fragment size of 2x1 pixels.4vulkan4* specifies a fragment size of 1x2 pixels.4vulkan4* specifies a fragment size of 1x1 pixels.4vulkan_vkCmdSetFragmentShadingRateEnumNV - Set pipeline fragment shading rate dynamically using enums Valid UsageHVUID-vkCmdSetFragmentShadingRateEnumNV-pipelineFragmentShadingRate-04576 If  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRatepipelineFragmentShadingRate is not enabled,  shadingRate must be 4LVUID-vkCmdSetFragmentShadingRateEnumNV-supersampleFragmentShadingRates-04577 If  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-supersampleFragmentShadingRatessupersampleFragmentShadingRates is not enabled,  shadingRate must not be 4, 4 , 4  , or 4 MVUID-vkCmdSetFragmentShadingRateEnumNV-noInvocationFragmentShadingRates-04578 If  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-noInvocationFragmentShadingRates noInvocationFragmentShadingRates is not enabled,  shadingRate must not be 4 EVUID-vkCmdSetFragmentShadingRateEnumNV-fragmentShadingRateEnums-04579  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentShadingRateEnumsfragmentShadingRateEnums must be enabledHVUID-vkCmdSetFragmentShadingRateEnumNV-pipelineFragmentShadingRate-04580 One of  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRatepipelineFragmentShadingRate,  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveFragmentShadingRateprimitiveFragmentShadingRate, or  thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRateattachmentFragmentShadingRate must be enabledIVUID-vkCmdSetFragmentShadingRateEnumNV-primitiveFragmentShadingRate-04581 If the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-primitiveFragmentShadingRate$primitiveFragmentShadingRate feature is not enabled,  combinerOps[0] must be 3JVUID-vkCmdSetFragmentShadingRateEnumNV-attachmentFragmentShadingRate-04582 If the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-attachmentFragmentShadingRate%attachmentFragmentShadingRate feature is not enabled,  combinerOps[1] must be 3NVUID-vkCmdSetFragmentShadingRateEnumNV-fragmentSizeNonTrivialCombinerOps-04583 If the  }https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-fragmentShadingRateNonTrivialCombinerOps!fragmentSizeNonTrivialCombinerOps* limit is not supported, elements of  combinerOps must be either 3 or 3Valid Usage (Implicit)>VUID-vkCmdSetFragmentShadingRateEnumNV-commandBuffer-parameter  commandBuffer must be a valid  handle<VUID-vkCmdSetFragmentShadingRateEnumNV-shadingRate-parameter  shadingRate must be a valid : value<VUID-vkCmdSetFragmentShadingRateEnumNV-combinerOps-parameter Any given element of  combinerOps must be a valid  value>VUID-vkCmdSetFragmentShadingRateEnumNV-commandBuffer-recording  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state<VUID-vkCmdSetFragmentShadingRateEnumNV-commandBuffer-cmdpool The / that  commandBuffer was allocated from must support graphics operationsHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the / 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, , :4vulkan commandBuffer@ is the command buffer into which the command will be recorded.vulkan shadingRate specifies a :R enum indicating the pipeline fragment shading rate for subsequent draw commands.vulkan combinerOps specifies a  determining how the  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipelinepipeline,  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive, and  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachmentattachment shading rates are  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-combiningcombined9 for fragments generated by subsequent drawing commands.+333333:444444444 4 4 4 3;3333<44=44443334 43444>4=4444<44;3333:444444444 4 4 4 3444444444 4 4 4 34 434 4343433333333333None("#%&'-./1789;=>?FHIMSUVX_dghklmqҡC45464748494:4;4<4=4>4?4@4A4B4C4D4E4F4G4H4I4J4F4E4D4C4B4A4@4G4H4I4J4=4<4;4:494847464?454>dNone("#%&'-./1789;=>?FHIMSUVX_dghklmq 3vulkannVkSubpassDescriptionDepthStencilResolve - Structure specifying depth/stencil resolve operations for a subpass Valid UsageQVUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03177 If pDepthStencilResolveAttachment is not NULL" and does not have the value , pDepthStencilAttachment must not have the value  QVUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03178 If pDepthStencilResolveAttachment is not NULL" and does not have the value , depthResolveMode and stencilResolveMode must not both be  QVUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03179 If pDepthStencilResolveAttachment is not NULL" and does not have the value , pDepthStencilAttachment must! not have a sample count of %4QVUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03180 If pDepthStencilResolveAttachment is not NULL" and does not have the value , pDepthStencilResolveAttachment must have a sample count of %4QVUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-02651 If pDepthStencilResolveAttachment is not NULL" and does not have the value  then it must+ have a format whose features contain {6QVUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03181 If the  of pDepthStencilResolveAttachment& has a depth component, then the  of pDepthStencilAttachment mustL have a depth component with the same number of bits and numerical typeQVUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03182 If the  of pDepthStencilResolveAttachment( has a stencil component, then the  of pDepthStencilAttachment mustN have a stencil component with the same number of bits and numerical typeCVUID-VkSubpassDescriptionDepthStencilResolve-depthResolveMode-03183 The value of depthResolveMode must be one of the bits set in 4::supportedDepthResolveModes or  EVUID-VkSubpassDescriptionDepthStencilResolve-stencilResolveMode-03184 The value of stencilResolveMode must be one of the bits set in 4::supportedStencilResolveModes or  QVUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03185 If the  of pDepthStencilResolveAttachment2 has both depth and stencil components, 4::independentResolve is . , and 4::independentResolveNone is ., then the values of depthResolveMode and stencilResolveMode must be identicalQVUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03186 If the  of pDepthStencilResolveAttachment2 has both depth and stencil components, 4::independentResolve is . and 4::independentResolveNone is ., then the values of depthResolveMode and stencilResolveMode must" be identical or one of them must be  QVUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-04588 If the  of pDepthStencilResolveAttachment has a depth component, depthResolveMode must be a valid   valueQVUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-04589 If the  of pDepthStencilResolveAttachment has a stencil component, stencilResolveMode must be a valid   valueValid Usage (Implicit)8VUID-VkSubpassDescriptionDepthStencilResolve-sType-sType sType must be UVUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-parameter If pDepthStencilResolveAttachment is not NULL, pDepthStencilResolveAttachment must) be a valid pointer to a valid 1 structureSee Also1,  , C4vulkanVkPhysicalDeviceDepthStencilResolveProperties - Structure describing depth/stencil resolve properties that can be supported by an implementationMembersThe members of the 4C structure describe the following implementation-dependent limits:Valid Usage (Implicit)See Alsop,  , C4LvulkandepthResolveMode is a bitmask of  $ describing the depth resolve mode.4MvulkanstencilResolveMode is a bitmask of  & describing the stencil resolve mode.4NvulkanpDepthStencilResolveAttachment is an optional 6Z structure defining the depth/stencil resolve attachment for this subpass and its layout.4Pvulkan$extension-features-depthResolveModes supportedDepthResolveModes 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.4Qvulkan&extension-features-stencilResolveModes supportedStencilResolveModes 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.4Rvulkan)extension-features-independentResolveNone independentResolveNone 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.4Svulkan%extension-features-independentResolve independentResolve 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.34K4L4M4N44O4P4Q4R4SCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE 44O4P4Q4R4S34K4L4M4NCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE None("#%&'-./1789;=>?FHIMSUVX_dghklmq 4^4_4`4a4b4c4d4e4f4g4h4i4j4k4l4l4k4j4i4h4g4f4c4b4a4`4_4e4^4d[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 5, A, , 4, #, and G.Valid Usage (Implicit)See Alsop, 6, ,  , b, , Cvulkan{VkPhysicalDeviceVulkan12Features - Structure describing the Vulkan 1.2 features that can be supported by an implementationMembersThe members of the , structure describe the following features: Description!features-samplerMirrorClampToEdge samplerMirrorClampToEdge= indicates whether the implementation supports the 9E sampler address mode. If this feature is not enabled, the 9 sampler address mode must not be used..features-drawIndirectCount drawIndirectCount= indicates whether the implementation supports the 9 and :A functions. If this feature is not enabled, these functions must not be used. features-storageBuffer8BitAccess storageBuffer8BitAccess' indicates whether objects in the  StorageBuffer, ShaderRecordBufferKHR, or PhysicalStorageBuffer storage class with the Block decoration 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 StorageBuffer8BitAccess capability.*features-uniformAndStorageBuffer8BitAccess !uniformAndStorageBuffer8BitAccess' indicates whether objects in the Uniform storage class with the Block decoration can] 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.features-storagePushConstant8 storagePushConstant8' indicates whether objects in the  PushConstant storage class can] 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 StoragePushConstant8 capability.!features-shaderBufferInt64Atomics shaderBufferInt64Atomics indicates whether shaders canN perform 64-bit unsigned and signed integer atomic operations on buffers.!features-shaderSharedInt64Atomics shaderSharedInt64Atomics indicates whether shaders canT perform 64-bit unsigned and signed integer atomic operations on shared memory.features-shaderFloat16  shaderFloat16| indicates whether 16-bit floats (halfs) are supported in shader code. This also indicates whether shader modules can declare the Float16m capability. However, this only enables a subset of the storage classes that SPIR-V allows for the Float16B SPIR-V capability: Declaring and using 16-bit floats in the Private,  Workgroup% (for non-Block variables), 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.features-shaderInt8  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% (for non-Block variables), 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.features-descriptorIndexing 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.2features-shaderInputAttachmentArrayDynamicIndexing )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  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.5features-shaderUniformTexelBufferArrayDynamicIndexing ,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  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.5features-shaderStorageTexelBufferArrayDynamicIndexing ,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  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.3features-shaderUniformBufferArrayNonUniformIndexing *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  or  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.2features-shaderSampledImageArrayNonUniformIndexing )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 , , or  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.3features-shaderStorageBufferArrayNonUniformIndexing *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  or  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.2features-shaderStorageImageArrayNonUniformIndexing )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  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.5features-shaderInputAttachmentArrayNonUniformIndexing ,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  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.8features-shaderUniformTexelBufferArrayNonUniformIndexing /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  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.8features-shaderStorageTexelBufferArrayNonUniformIndexing /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  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.6features-descriptorBindingUniformBufferUpdateAfterBind -descriptorBindingUniformBufferUpdateAfterBind indicates whether the implementation supports updating uniform buffer descriptors after a set is bound. If this feature is not enabled, FB must not be used with .5features-descriptorBindingSampledImageUpdateAfterBind ,descriptorBindingSampledImageUpdateAfterBind indicates whether the implementation supports updating sampled image descriptors after a set is bound. If this feature is not enabled, FB must not be used with , , or .5features-descriptorBindingStorageImageUpdateAfterBind ,descriptorBindingStorageImageUpdateAfterBind indicates whether the implementation supports updating storage image descriptors after a set is bound. If this feature is not enabled, FB must not be used with .6features-descriptorBindingStorageBufferUpdateAfterBind -descriptorBindingStorageBufferUpdateAfterBind indicates whether the implementation supports updating storage buffer descriptors after a set is bound. If this feature is not enabled, FB must not be used with .;features-descriptorBindingUniformTexelBufferUpdateAfterBind 2descriptorBindingUniformTexelBufferUpdateAfterBind indicates whether the implementation supports updating uniform texel buffer descriptors after a set is bound. If this feature is not enabled, FB must not be used with .;features-descriptorBindingStorageTexelBufferUpdateAfterBind 2descriptorBindingStorageTexelBufferUpdateAfterBind indicates whether the implementation supports updating storage texel buffer descriptors after a set is bound. If this feature is not enabled, FB must not be used with .2features-descriptorBindingUpdateUnusedWhilePending )descriptorBindingUpdateUnusedWhilePending indicates whether the implementation supports updating descriptors while the set is in use. If this feature is not enabled, F must not be used.(features-descriptorBindingPartiallyBound 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, F must not be used.1features-descriptorBindingVariableDescriptorCount (descriptorBindingVariableDescriptorCount indicates whether the implementation supports descriptor sets with a variable-sized last binding. If this feature is not enabled, F must not be used.features-runtimeDescriptorArray runtimeDescriptorArrayD indicates whether the implementation supports the SPIR-V RuntimeDescriptorArray> capability. If this feature is not enabled, descriptors must# not be declared in runtime arrays.features-samplerFilterMinmax 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.features-scalarBlockLayout scalarBlockLayoutj 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.features-imagelessFramebuffer imagelessFramebuffer indicates that the implementation supports specifying the image view for attachments at render pass begin time via 8.$features-uniformBufferStandardLayout 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. features-subgroup-extended-types 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.$features-separateDepthStencilLayouts separateDepthStencilLayouts; indicates whether the implementation supports a 56 for a depth/stencil image with only one of x or x set, and whether ;, <, =, or > can be used.features-hostQueryReset hostQueryReset[ indicates that the implementation supports resetting queries from the host with .features-timelineSemaphore timelineSemaphore7 indicates whether semaphores created with a * of * are supported.features-bufferDeviceAddress bufferDeviceAddress indicates that the implementation supports accessing buffer memory in shaders as storage buffers via an address queried from T.)features-bufferDeviceAddressCaptureReplay  bufferDeviceAddressCaptureReplay indicates that the implementation supports saving and reusing buffer and device addresses, e.g. for trace capture and replay.'features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice5 indicates that the implementation supports the bufferDeviceAddress , rayTracingPipeline and rayQuery 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.features-vulkanMemoryModel 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.%features-vulkanMemoryModelDeviceScope vulkanMemoryModelDeviceScope8 indicates whether the Vulkan Memory Model can use /H scope synchronization. This also indicates whether shader modules can declare the VulkanMemoryModelDeviceScope capability.6features-vulkanMemoryModelAvailabilityVisibilityChains -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."features-shaderOutputViewportIndex shaderOutputViewportIndex= 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.features-shaderOutputLayer shaderOutputLayer8 indicates whether the implementation supports the  ShaderLayer> SPIR-V capability enabling variables decorated with the Layerw 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.#features-subgroupBroadcastDynamicId 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  2 to enable the features.Valid Usage (Implicit)1VUID-VkPhysicalDeviceVulkan12Features-sType-sType sType must be See Alsop, Cvulkan~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 Alsop, n, , d, C,  '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  2 to enable the features.Valid Usage (Implicit)See Alsop, C4nvulkandriverID> is a unique identifier for the driver of the physical device.4ovulkan driverName is an array of * charL containing a null-terminated UTF-8 string which is the name of the driver.4pvulkan driverInfo is an array of ) charZ containing a null-terminated UTF-8 string with additional information about the driver.4qvulkanconformanceVersionX is the version of the Vulkan conformance test this driver is conformant against (see 6).4rvulkan#features-denormBehaviorIndependence denormBehaviorIndependence is a h value indicating whether, and how, denorm behavior can be set independently for different bit widths.4svulkan!features-roundingModeIndependence roundingModeIndependence is a g value indicating whether, and how, rounding modes can be set independently for different bit widths.4tvulkan,limits-shaderSignedZeroInfNanPreserveFloat16 %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.4uvulkan,limits-shaderSignedZeroInfNanPreserveFloat32 %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.4vvulkan,limits-shaderSignedZeroInfNanPreserveFloat64 %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.4wvulkan"limits-shaderDenormPreserveFloat16 shaderDenormPreserveFloat162 is a boolean value indicating whether denormals canU 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.4xvulkan"limits-shaderDenormPreserveFloat32 shaderDenormPreserveFloat322 is a boolean value indicating whether denormals canU 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.4yvulkan"limits-shaderDenormPreserveFloat64 shaderDenormPreserveFloat642 is a boolean value indicating whether denormals canU 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.4zvulkan%limits-shaderDenormFlushToZeroFloat16 shaderDenormFlushToZeroFloat162 is a boolean value indicating whether denormals can[ 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.4{vulkan%limits-shaderDenormFlushToZeroFloat32 shaderDenormFlushToZeroFloat322 is a boolean value indicating whether denormals can[ 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.4|vulkan%limits-shaderDenormFlushToZeroFloat64 shaderDenormFlushToZeroFloat642 is a boolean value indicating whether denormals can[ 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.4}vulkan#limits-shaderRoundingModeRTEFloat16 shaderRoundingModeRTEFloat16 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.4~vulkan#limits-shaderRoundingModeRTEFloat32 shaderRoundingModeRTEFloat32 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.4vulkan#limits-shaderRoundingModeRTEFloat64 shaderRoundingModeRTEFloat64 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.4vulkan#limits-shaderRoundingModeRTZFloat16 shaderRoundingModeRTZFloat16 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.4vulkan#limits-shaderRoundingModeRTZFloat32 shaderRoundingModeRTZFloat32 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.4vulkan#limits-shaderRoundingModeRTZFloat64 shaderRoundingModeRTZFloat64 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.4vulkan.limits-maxUpdateAfterBindDescriptorsInAllPools '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.4vulkan7limits-shaderUniformBufferArrayNonUniformIndexingNative 0shaderUniformBufferArrayNonUniformIndexingNativeu 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.4vulkan6limits-shaderSampledImageArrayNonUniformIndexingNative /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.4vulkan7limits-shaderStorageBufferArrayNonUniformIndexingNative 0shaderStorageBufferArrayNonUniformIndexingNativeu 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.4vulkan6limits-shaderStorageImageArrayNonUniformIndexingNative /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.4vulkan9limits-shaderInputAttachmentArrayNonUniformIndexingNative 2shaderInputAttachmentArrayNonUniformIndexingNativew 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.4vulkan(limits-robustBufferAccessUpdateAfterBind !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.4vulkanlimits-quadDivergentImplicitLod quadDivergentImplicitLod 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.4vulkan3limits-maxPerStageDescriptorUpdateAfterBindSamplers ,maxPerStageDescriptorUpdateAfterBindSamplers is similar to maxPerStageDescriptorSamplersK but counts descriptors from descriptor sets created with or without the @ bit set.4vulkan9limits-maxPerStageDescriptorUpdateAfterBindUniformBuffers 2maxPerStageDescriptorUpdateAfterBindUniformBuffers is similar to #maxPerStageDescriptorUniformBuffersK but counts descriptors from descriptor sets created with or without the @ bit set.4vulkan9limits-maxPerStageDescriptorUpdateAfterBindStorageBuffers 2maxPerStageDescriptorUpdateAfterBindStorageBuffers is similar to #maxPerStageDescriptorStorageBuffersK but counts descriptors from descriptor sets created with or without the @ bit set.4vulkan8limits-maxPerStageDescriptorUpdateAfterBindSampledImages 1maxPerStageDescriptorUpdateAfterBindSampledImages is similar to "maxPerStageDescriptorSampledImagesK but counts descriptors from descriptor sets created with or without the @ bit set.4vulkan8limits-maxPerStageDescriptorUpdateAfterBindStorageImages 1maxPerStageDescriptorUpdateAfterBindStorageImages is similar to "maxPerStageDescriptorStorageImagesK but counts descriptors from descriptor sets created with or without the @ bit set.4vulkan;limits-maxPerStageDescriptorUpdateAfterBindInputAttachments 4maxPerStageDescriptorUpdateAfterBindInputAttachments is similar to %maxPerStageDescriptorInputAttachmentsK but counts descriptors from descriptor sets created with or without the @ bit set.4vulkan*limits-maxPerStageUpdateAfterBindResources #maxPerStageUpdateAfterBindResources is similar to maxPerStageResourcesK but counts descriptors from descriptor sets created with or without the @ bit set.4vulkan.limits-maxDescriptorSetUpdateAfterBindSamplers 'maxDescriptorSetUpdateAfterBindSamplers is similar to maxDescriptorSetSamplersK but counts descriptors from descriptor sets created with or without the @ bit set.4vulkan4limits-maxDescriptorSetUpdateAfterBindUniformBuffers -maxDescriptorSetUpdateAfterBindUniformBuffers is similar to maxDescriptorSetUniformBuffersK but counts descriptors from descriptor sets created with or without the @ bit set.4vulkan;limits-maxDescriptorSetUpdateAfterBindUniformBuffersDynamic 4maxDescriptorSetUpdateAfterBindUniformBuffersDynamic is similar to %maxDescriptorSetUniformBuffersDynamicK but counts descriptors from descriptor sets created with or without the @ bit set. While an application canL allocate dynamic uniform buffer descriptors from a pool created with the @", bindings for these descriptors mustS not be present in any descriptor set layout that includes bindings created with FB.4vulkan4limits-maxDescriptorSetUpdateAfterBindStorageBuffers -maxDescriptorSetUpdateAfterBindStorageBuffers is similar to maxDescriptorSetStorageBuffersK but counts descriptors from descriptor sets created with or without the @ bit set.4vulkan;limits-maxDescriptorSetUpdateAfterBindStorageBuffersDynamic 4maxDescriptorSetUpdateAfterBindStorageBuffersDynamic is similar to %maxDescriptorSetStorageBuffersDynamicK but counts descriptors from descriptor sets created with or without the @ bit set. While an application canL allocate dynamic storage buffer descriptors from a pool created with the @", bindings for these descriptors mustS not be present in any descriptor set layout that includes bindings created with FB.4vulkan3limits-maxDescriptorSetUpdateAfterBindSampledImages ,maxDescriptorSetUpdateAfterBindSampledImages is similar to maxDescriptorSetSampledImagesK but counts descriptors from descriptor sets created with or without the @ bit set.4vulkan3limits-maxDescriptorSetUpdateAfterBindStorageImages ,maxDescriptorSetUpdateAfterBindStorageImages is similar to maxDescriptorSetStorageImagesK but counts descriptors from descriptor sets created with or without the @ bit set.4vulkan6limits-maxDescriptorSetUpdateAfterBindInputAttachments /maxDescriptorSetUpdateAfterBindInputAttachments is similar to  maxDescriptorSetInputAttachmentsK but counts descriptors from descriptor sets created with or without the @ bit set.4vulkanfeatures-depthResolveModes supportedDepthResolveModes is a bitmask of E8 indicating the set of supported depth resolve modes. E must, be included in the set but implementations may support additional modes.4vulkanfeatures-stencilResolveModes supportedStencilResolveModes is a bitmask of E: indicating the set of supported stencil resolve modes. E must, be included in the set but implementations may support additional modes. E must not be included in the set.4vulkanfeatures-independentResolveNone independentResolveNone is .~ if the implementation supports setting the depth and stencil resolve modes to different values when one of those modes is E3S. Otherwise the implementation only supports setting both modes to the same value.4vulkanfeatures-independentResolve independentResolve is . if the implementation supports all combinations of the supported depth and stencil resolve modes, including setting either depth or stencil resolve mode to E3#. An implementation that supports independentResolve must also support independentResolveNone.4vulkan)limits-filterMinmaxSingleComponentFormats "filterMinmaxSingleComponentFormatsd is a boolean value indicating whether a minimum set of required formats support min/max filtering.4vulkan(limits-filterMinmaxImageComponentMapping !filterMinmaxImageComponentMapping is a boolean value indicating whether the implementation supports non-identity component mapping of the image when doing min/max filtering.4vulkan*limits-maxTimelineSemaphoreValueDifference #maxTimelineSemaphoreValueDifference indicates the maximum difference allowed by the implementation between the current value of a timeline semaphore and any pending signal or wait operations.4vulkan*limits-framebufferIntegerColorSampleCounts #framebufferIntegerColorSampleCounts is a bitmask of %t indicating the color sample counts that are supported for all framebuffer color attachments with integer formats.4vulkan deviceUUID is an array of 9 uint8_tE values representing a universally unique identifier for the device.4vulkan driverUUID is an array of 9 uint8_t` values representing a universally unique identifier for the driver build in use by the device.4vulkan deviceLUID is an array of 8 uint8_tA values representing a locally unique identifier for the device.4vulkandeviceNodeMask is a uint32_t[ bitfield identifying the node within a linked device adapter corresponding to the device.4vulkandeviceLUIDValid" 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.4vulkanlimits-subgroup-size  subgroupSize9 is the default number of invocations in each subgroup.  subgroupSize@ is at least 1 if any of the physical device s queues support \b or \c.  subgroupSize is a power-of-two.4vulkanlimits-subgroupSupportedStages subgroupSupportedStages is a bitfield of &f% 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. subgroupSupportedStages will have the &g: bit set if any of the physical device s queues support \c.4vulkansubgroupSupportedOperations is a bitmask of I 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. subgroupSupportedOperations will have the I: bit set if any of the physical device s queues support \b or \c.4vulkan(limits-subgroupQuadOperationsInAllStages !subgroupQuadOperationsInAllStages" 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.4vulkanlimits-pointClipping pointClippingBehavior is a O value specifying the point clipping behavior supported by the implementation.4vulkanlimits-maxMultiviewViewCount maxMultiviewViewCount2 is one greater than the maximum view index that can be used in a subpass.4vulkan limits-maxMultiviewInstanceIndex maxMultiviewInstanceIndex 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.4vulkanprotectedNoFault4 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.4vulkanlimits-maxPerSetDescriptors maxPerSetDescriptors 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 canR query whether a descriptor set that goes beyond this limit is supported using V.4vulkanlimits-maxMemoryAllocationSize maxMemoryAllocationSize2 is the maximum size of a memory allocation that can@ be created, even if there is more space available in the heap.4vulkan!features-storageBuffer16BitAccess storageBuffer16BitAccess# specifies whether objects in the  StorageBuffer, ShaderRecordBufferKHR, 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 mustK not be used in such objects. This also specifies whether shader modules can declare the StorageBuffer16BitAccess capability.4vulkan+features-uniformAndStorageBuffer16BitAccess "uniformAndStorageBuffer16BitAccess# specifies whether objects in the Uniform 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 "UniformAndStorageBuffer16BitAccess capability.4vulkanfeatures-storagePushConstant16 storagePushConstant16# 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.4vulkanfeatures-storageInputOutput16 storageInputOutput16# 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.4vulkanfeatures-multiview  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.4vulkanfeatures-multiview-gs multiviewGeometryShader` 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.4vulkanfeatures-multiview-tess multiviewTessellationShadera 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.4vulkan&features-variablePointersStorageBuffer variablePointersStorageBuffer< 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.4vulkanfeatures-variablePointers variablePointers; specifies whether the implementation supports the SPIR-V VariablePointers? capability. When this feature is not enabled, shader modules must not declare the VariablePointers capability.4vulkanfeatures-protectedMemory protectedMemory2 specifies whether protected memory is supported.4vulkanfeatures-samplerYcbcrConversion samplerYcbcrConversion1 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.4vulkanfeatures-shaderDrawParameters shaderDrawParameters9 specifies whether shader draw parameters are supported.MO1FEDCBA@?>=<;:98765432` FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!4m4r4s4t4u4v4w4x4y4z4{4|4}4~444444444444444444444444444444n4o4p4q444444444444444444444444444444444444444444444444444444444444444444444444444444444440123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\*+,- ./!")*#+,-$ %& 'OPQR(IJ)GH*KL+MN,3Q-3e3g3f3h3j3k3l3m3n3i.3[3\3_3`3]3^3a3b3c3d/3R3S03T3V3U3W3X3Y3Z13o3s3p3r3q23t3v3u3x3w3y3z3{3|3}3~34K4L4M4N44O4P4Q4R4S5fghij6klmon7UV8 9:;<RS=PQ>MNO? @ A l m n o p q r s t u v w x y z { | }B ^ _CDEFGHI P QJ @ A B CCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE R S W V U T        ! >?PONMLKJIHGFEDCBA@YZ`_^]\[)*CD9:STU333334e4444444444444444444444444444444444444444444444444444444444444444444444444444444m4r4s4t4u4v4w4x4y4z4{4|4}4~444444444444444444444444444444n4o4p4q444444CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE5fghij6klmonCD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE)*CDNone* "#%&'-./1789;=>?FHIMPSUVX_dghklmq5Nvulkan-Check if the intersection of bits is non-zero5555None("#%&'-./1789;=>?FHIMSUVX_dghklmqvulkanVVkCommandBufferInheritanceInfo - Structure specifying command buffer inheritance info Valid Usage>VUID-VkCommandBufferInheritanceInfo-occlusionQueryEnable-00056 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 .4VUID-VkCommandBufferInheritanceInfo-queryFlags-00057 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 [ values4VUID-VkCommandBufferInheritanceInfo-queryFlags-02788 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<VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-02789 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 ^ values<VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-00058 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)/VUID-VkCommandBufferInheritanceInfo-sType-sType sType must be /VUID-VkCommandBufferInheritanceInfo-pNext-pNext 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 }0VUID-VkCommandBufferInheritanceInfo-sType-unique The sType" value of each struct in the pNext chain must be unique0VUID-VkCommandBufferInheritanceInfo-commonparent Both of  framebuffer, and  renderPass7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same See Alsop, , , \,  , y, CvulkanQVkCommandBufferBeginInfo - Structure specifying a command buffer begin operation Valid Usage)VUID-VkCommandBufferBeginInfo-flags-00053 If flags contains  , the  renderPass member of pInheritanceInfo must be a valid y)VUID-VkCommandBufferBeginInfo-flags-00054 If flags contains  , the subpass member of pInheritanceInfo must* be a valid subpass index within the  renderPass member of pInheritanceInfo)VUID-VkCommandBufferBeginInfo-flags-00055 If flags contains  , the  framebuffer member of pInheritanceInfo must be either 8, or a valid " that is compatible with the  renderPass member of pInheritanceInfoValid Usage (Implicit))VUID-VkCommandBufferBeginInfo-sType-sType sType must be )VUID-VkCommandBufferBeginInfo-pNext-pNext pNext must be NULL/ or a pointer to a valid instance of *VUID-VkCommandBufferBeginInfo-sType-unique The sType" value of each struct in the pNext chain must be unique-VUID-VkCommandBufferBeginInfo-flags-parameter flags must% be a valid combination of  valuesSee Also, , C, 5vulkangVkCommandBufferAllocateInfo - Structure specifying the allocation parameters for command buffer objectValid Usage (Implicit)See Also, , C, 55 vulkanpNext is NULL6 or a pointer to a structure extending this structure.5 vulkanflags is a bitmask of 3 specifying usage behavior for the command buffer.5 vulkanpInheritanceInfo 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.5 vulkanpNext is NULL6 or a pointer to a structure extending this structure.5vulkan renderPass is a y* 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.5vulkansubpassG 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.5vulkan 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 8- 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.5vulkanocclusionQueryEnable& 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.5vulkan 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.5vulkanpipelineStatistics is a bitmask of ^1 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.5vulkan commandPoolC is the command pool from which the command buffers are allocated.6VUID-VkCommandBufferAllocateInfo-commandPool-parameter  commandPool must be a valid  handle5vulkanlevel is a , value specifying the command buffer level.0VUID-VkCommandBufferAllocateInfo-level-parameter level must be a valid  value5vulkancommandBufferCount= is the number of command buffers to allocate from the pool.5vulkanRvkAllocateCommandBuffers - Allocate command buffers from an existing command pool Description5 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).VUID-vkAllocateCommandBuffers-device-parameter device must be a valid  handle5VUID-vkAllocateCommandBuffers-pAllocateInfo-parameter  pAllocateInfo must$ be a valid pointer to a valid  structure7VUID-vkAllocateCommandBuffers-pCommandBuffers-parameter pCommandBuffers must( be a valid pointer to an array of !pAllocateInfo->commandBufferCount  handlesKVUID-vkAllocateCommandBuffers-pAllocateInfo::commandBufferCount-arraylength !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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , 5vulkan=A convenience wrapper to make a compatible pair of calls to 5 and 5To ensure that 5 is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.5vulkan+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 Usage/VUID-vkFreeCommandBuffers-pCommandBuffers-00047 All elements of pCommandBuffers must not be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state/VUID-vkFreeCommandBuffers-pCommandBuffers-00048 pCommandBuffers 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)*VUID-vkFreeCommandBuffers-device-parameter device must be a valid  handle/VUID-vkFreeCommandBuffers-commandPool-parameter  commandPool must be a valid  handle8VUID-vkFreeCommandBuffers-commandBufferCount-arraylength commandBufferCount must be greater than 0,VUID-vkFreeCommandBuffers-commandPool-parent  commandPool must6 have been created, allocated, or retrieved from device0VUID-vkFreeCommandBuffers-pCommandBuffers-parent Each 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, , 5vulkan7vkBeginCommandBuffer - Start recording a command buffer Valid Usage-VUID-vkBeginCommandBuffer-commandBuffer-00049  commandBuffer must not be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording or pending state-VUID-vkBeginCommandBuffer-commandBuffer-00050 If  commandBuffer was allocated from a " which did not have the  flag set,  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state-VUID-vkBeginCommandBuffer-commandBuffer-00051 If  commandBuffer) is a secondary command buffer, the pInheritanceInfo member of  pBeginInfo must be a valid  structure-VUID-vkBeginCommandBuffer-commandBuffer-00052 If  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 -VUID-vkBeginCommandBuffer-commandBuffer-02840 If  commandBuffer( is a primary command buffer, then pBeginInfo->flags must not set both the  and the  flagsValid Usage (Implicit)1VUID-vkBeginCommandBuffer-commandBuffer-parameter  commandBuffer must be a valid  handle.VUID-vkBeginCommandBuffer-pBeginInfo-parameter  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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, 5vulkan>This function will call the supplied action between calls to 5 and 5 Note that 5@ is *not* called if an exception is thrown by the inner action.5vulkan6vkEndCommandBuffer - Finish recording a command buffer DescriptionuIf there was an error during recording, the application will be notified by an unsuccessful return code returned by 5T. 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+VUID-vkEndCommandBuffer-commandBuffer-00059  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state+VUID-vkEndCommandBuffer-commandBuffer-00060 If  commandBuffer) is a primary command buffer, there must+ not be an active render pass instance+VUID-vkEndCommandBuffer-commandBuffer-00061 All 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 inactive"VUID-vkEndCommandBuffer-None-01978 Conditional rendering must not be jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-renderingactive+VUID-vkEndCommandBuffer-commandBuffer-01815 If  commandBuffer+ is a secondary command buffer, there must not be an outstanding T command recorded to  commandBuffer; that has not previously been ended by a call to e+VUID-vkEndCommandBuffer-commandBuffer-00062 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)/VUID-vkEndCommandBuffer-commandBuffer-parameter  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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also5vulkanBvkResetCommandBuffer - 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-VUID-vkResetCommandBuffer-commandBuffer-00045  commandBuffer must not be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state-VUID-vkResetCommandBuffer-commandBuffer-00046  commandBuffer must@ have been allocated from a pool that was created with the Valid Usage (Implicit)1VUID-vkResetCommandBuffer-commandBuffer-parameter  commandBuffer must be a valid  handle)VUID-vkResetCommandBuffer-flags-parameter flags 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-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure?See Also, A5vulkandevice2 is the logical device that owns the command pool.vulkan pAllocateInfo is a pointer to a 4 structure describing parameters of the allocation.5vulkandevice2 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.5vulkan 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.5vulkan commandBuffer- is the command buffer to complete recording.5vulkan 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.05 55 5555555 5 5 5555@A[\55555557555555555555 55 5555555 5 5 [\@ANone("#%&'-./1789;=>?FHIMSUVX_dghklmqyU vulkanZVkBufferCreateInfo - Structure specifying the parameters of a newly created buffer object Valid Usage"VUID-VkBufferCreateInfo-size-00912 size must be greater than 0)VUID-VkBufferCreateInfo-sharingMode-00913 If  sharingMode is , pQueueFamilyIndices must( be a valid pointer to an array of queueFamilyIndexCount uint32_t values)VUID-VkBufferCreateInfo-sharingMode-00914 If  sharingMode is , queueFamilyIndexCount must be greater than 1)VUID-VkBufferCreateInfo-sharingMode-01419 If  sharingMode is , each element of pQueueFamilyIndices must be unique and must be less than pQueueFamilyPropertyCount returned by either   or T for the physicalDevice that was used to create device#VUID-VkBufferCreateInfo-flags-00915 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 `#VUID-VkBufferCreateInfo-flags-00916 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 _#VUID-VkBufferCreateInfo-flags-00917 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 ^#VUID-VkBufferCreateInfo-flags-00918 If flags contains _ or ^ , it must also contain `#VUID-VkBufferCreateInfo-pNext-00920 If the pNext chain includes a  structure, its  handleTypes member must. only contain bits that are also in P[::.externalMemoryProperties.compatibleHandleTypes, as returned by P with pExternalBufferInfo->handleType= equal to any one of the handle types specified in :: handleTypes#VUID-VkBufferCreateInfo-flags-018876 If the protected memory feature is not enabled, flags must not contain \"VUID-VkBufferCreateInfo-None-01888 If any of the bits `, _, or ^ are set, \ must not also be set#VUID-VkBufferCreateInfo-pNext-01571 If the pNext chain includes a  structure, and the dedicatedAllocation) member of the chained structure is ., then flags must not include `, _, or ^+VUID-VkBufferCreateInfo-deviceAddress-02604 If :: deviceAddress is not zero, flags must include ]2VUID-VkBufferCreateInfo-opaqueCaptureAddress-03337 If *::opaqueCaptureAddress is not zero, flags must include ]#VUID-VkBufferCreateInfo-flags-03338 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)#VUID-VkBufferCreateInfo-sType-sType sType must be ##VUID-VkBufferCreateInfo-pNext-pNext 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 $VUID-VkBufferCreateInfo-sType-unique The sType" value of each struct in the pNext chain must be unique'VUID-VkBufferCreateInfo-flags-parameter flags must% be a valid combination of Y values'VUID-VkBufferCreateInfo-usage-parameter usage must% be a valid combination of > values-VUID-VkBufferCreateInfo-usage-requiredbitmask usage must not be 0-VUID-VkBufferCreateInfo-sharingMode-parameter  sharingMode must be a valid  valueSee Also[, @, n, , C, 5650vulkanpNext is NULL6 or a pointer to a structure extending this structure.51vulkanflags is a bitmask of Y1 specifying additional parameters of the buffer.52vulkansize2 is the size in bytes of the buffer to be created.53vulkanusage is a bitmask of >* specifying allowed usages of the buffer.54vulkan sharingMode is a g value specifying the sharing mode of the buffer when it will be accessed by multiple queue families.55vulkanpQueueFamilyIndicesG is a list of queue families that will access this buffer (ignored if  sharingMode is not ).56vulkan+vkCreateBuffer - Create a new buffer object Valid UsageVUID-vkCreateBuffer-flags-00911 If 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  ::sparseAddressSpaceSizeValid Usage (Implicit)$VUID-vkCreateBuffer-device-parameter device must be a valid  handle)VUID-vkCreateBuffer-pCreateInfo-parameter  pCreateInfo must$ be a valid pointer to a valid  structure(VUID-vkCreateBuffer-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure%VUID-vkCreateBuffer-pBuffer-parameter pBuffer must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessF  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure@?See Also, , , 57vulkan=A convenience wrapper to make a compatible pair of calls to 56 and 58To ensure that 58 is always called: pass  (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.58vulkan)vkDestroyBuffer - Destroy a buffer object Valid Usage!VUID-vkDestroyBuffer-buffer-00922+ All submitted commands that refer to buffer , either directly or via a /, must have completed execution!VUID-vkDestroyBuffer-buffer-00923 If  were provided when buffer1 was created, a compatible set of callbacks must be provided here!VUID-vkDestroyBuffer-buffer-00924 If no  were provided when buffer was created,  pAllocator must be NULLValid Usage (Implicit)%VUID-vkDestroyBuffer-device-parameter device must be a valid  handle%VUID-vkDestroyBuffer-buffer-parameter If buffer is not 8, buffer must be a valid  handle)VUID-vkDestroyBuffer-pAllocator-parameter If  pAllocator is not NULL,  pAllocator must$ be a valid pointer to a valid  structure"VUID-vkDestroyBuffer-buffer-parent If buffer is a valid handle, it must1 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to buffer must be externally synchronizedSee Also, , 56vulkandevice6 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.58vulkandevice0 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.,5/525153505554>?PONMLKJIHGFEDCBA@YZ`_^]\[565758C5657585/525153505554>?PONMLKJIHGFEDCBAPONMLKJIHGFEDCBA@YZ`_^]\`_^]\[None("#%&'-./1789;=>?FHIMSUVX_dghklmq| 5/525153505554'|'''}'~'5 55 5555555 5 5 55552 22!2)2*2-2+2,2.2K2L2O2M2N 2/2423212022!2A2F2E2C2B2D"2<2=2?2>2@#2P2S2R2Q$2&2'2(%2"2#2$2%&252;262728292:'2G2J2I2H('o'p'q)1111111111*1111+111111,1w1x1z1y-111.1{1}1|1~1/11110111111111111121?1A1@1B1C3181:191<1=1;1>4/////5/4/5/6/7/8/96//////////7/////8.......................................................////////// / / / / /////////////////// /!/"/#/$/%/&/'/(/)/*/+/,/-/.///0/1/2/39/:/G/C/;/</=/>/?/@/A/B/D/E/F/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/{?//////@ABCDEFGHIJadcbKG:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHLMt~}|{zyxwvuNO1FEDCBA@?>=<;:98765432P'*)(Q RSTUV 43210/.-,+*)('&%$#"!   WXJedcba`_^]\[ZYXWVUTSRQPONMLKYZ[\] ^_ ` FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!a bc 5 E D C B A @ ? > = < ; : 9 8 7 6de    fgh:<;i'a'bj'W'Y'Xk...lmnopXkjqYZ[rcdefsghit\]^_u`abvwxyz{|}~.b.d.c.e.f.g.h.m.j.r.i.p.l.t.q.u.k.n.o.s,M,O,N,P,R,Q,S,T,U,V,Z,W,X,Y,[,_,^,],\'K'O'L'M'N,5,6,7,8,1,4,3,2'='?'>'@.<.=.>.*.+.2.,.-.3.../.0.1.%.&.'.(.)..!.$. .".#.....4.;.:.9.5.6.7.8+++++++++++++++++++++++++++++++++++++++++++)9):);)<)=)>)?)) )!)")))))(((((((()5)8)7)6)1)3)4)2))) )) ) ) )))))) ))))*)/),)+)-).)0((())))(((())((((((((())))(((((((((((((((((((((((((((((((((((((((((((((((()#)%)$)&)')())'/'0'1'2''!' '''''((((((((((((((((s(u(t(v(w(x(y(z({(|(}(~(((((((g(i(h(j''''''''''''''''''''''''''''''''''''''''''' &%$#"!-.3210/CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEUVWlm           ' ( , + * ) y z {  !%$#",-67@Anorqp{|wx~}|{zy        ! %&+*)('45>?PONMLKJIHGFEDCBA@YZ`_^]\[ijrqponmlkyz~}|{     %&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU'"'#'$'3'4'5'6'7'A'B'C'D'P'Q'Z'['c'd'e'f'g'h'r's't'u'''''((k(l(m(((((((((((((((()@)A)B)C)D+++++++,9,:,;,<,=,>,?,@,A,`,a,b.v.w.x.y.......////////////1D1E1F111111111112222T2U2V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2|2}2~222255555555657585>5>None("#%&'-./1789;=>?FHIMSUVX_dghklmq׫%5?vulkan:The set of other extensions required to use this extension5@vulkan6The minimum required API version to use this extension5?5@5?5@None("#%&'-./1789;=>?FHIMSUVX_dghklmq׬vwxy{|}~KLMNOPQRSTUVWX 6 7Y&&Z&&[\]^_`abcdefghijklmnop " #qrstuvw xyz{|}~ -c-d-k-l-X-Y-i-j-e-f-h-g-Z-[-\-]-^-_-`-a-b CDEF   y~z{NOPSUVTQR  3=3?3>3;3<38393:&&&&&&&&&&&&&%)%T%S%R%Q%P%O%N%M%L%K%J%I%H%G%F%E%D%C%B%A%@%?%>%=%<%;%:%9%8%7%6%5%4%3%2%1%*%Y%X%W%V%U%+%,%.%-$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ p q r s tOPCGDEFHIJKLMN$$$$&')(*+$W$X$]$^$Y$Z$[$\$/$>$0$1$2$3$4$5$6$7$8$9$:$;++   pqmno,,,,,,,,,, W X Y Z [ \ ] I J K L$$$ $ $$##############.................. = > 1 2           \]^  ###   ######     { | }   P Q R S T U V W X Y d e f g h i j! X Y"pqutrs#678$9:;<=>?@ABC%DEF&#c#d#e#f'#a#b(]^_)GH* ; < =+ 9 :, 7 8- 4 5 6. ( )/#@#A0#=#?#>1#B#D#C2###$#%3#&#(#*#'#)45# ##69:7"""89:;<""=""">"""?""""""@ABCDEFGHIJKLMNOP"H"n"mQ"_"`R"c"e"dS"["\T"W"X"Z"YU"]"^V"U"VW"a"bX  Y%x%%%Z%y%%%[%&&&%%\]%&&&&^_%&&`a%|%%%%b%v%%c%w%%%d%%e%%%%f%%%%%%%%%g%%%%%%h%%%%i%%%%j%%%%k%%l%%%%%%%m%%%%%%%%n%%%%o%%%p%%%q%%r%%%%%%%s%%%%t%%%%%u%%%%%%%%v%%%%%%%w"/"0"1x222222y222222z222222{222222|22222}222222~2222222222222222222222222222!c!h!d!f!k!e!g!i!j!!!!!!!!!!!!l!m!n!o!p!q!r!s!t!u!y!z!{!|!}!~!v!w!x!N!O!P!Q! 000000000000008090507060>0@0A0?0:0=0;0<0`0a0b0l0p0q0n0m0o0h0k0i0j0c0e0g0d0f3333333333333333333333333333333333333!!!!!!!!!!!!1!2!3!4!5!6!7!8         `abmnopq[\hijklcedgf]_^     11*k****j*****o*p*q*r*s*v*u*t********l*m*n*************w*x*y*z*{*|*}*~*******!$!%  K J I H G F        ! " # $ % &         ,y,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,},~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,wxy `ab    z{|wxyz{nopqrstuvno>?@AB9:;<=bcEFCD)) ))))))))))!))")))#)))))))))))))$)))))%))))&)))')))))())))))))))))))))))*))+)))),00-00./000//0/////120 0"0!300045678*+,-9:3444444444 4 4 4 ;3333<44=4444>?@ABCDEFGHIJ**K+++,+-+.+/+0L+"+$+#+%+(+)+*+&+'M*********N++++++++++ +!+O+ + + + P+++Q+++++R*++**S***T+++++ U+++VWXYZ[\]^_`abcdedf|}gy{zhghiirstujvwxkjklmlnopqmnopqrsVWXYZ[tuvwxyz{| } ~ { |@ACB678;<CDEFLKIJWXYZhgfedcb[\mlkji`a~U&'()./>?@AKJIBGH`adelmpqxy}~     & ' * + 2 3 > ? V W Z [ b c k l y z ~      / 0 3 4 ; < ? @ G H M N U V ^ _ l m n o u v         ! $ % 4 5 8 9 J K L M N O X Y Z [ \ ] f g h i j k         ! " # $ N O Z [;<=>?@WVUTSABQRfghijklmnopqrs:;<=>?@ABCDEFABGH[\]^_`klrstuwxyz{|}~(-BGVWXYZ[_`{|}~TU\]bcef~   3456FE78CDGhijk~lm|}FGHIJKLutMNO{zyxwvPQ~}|RSTUVWXYZrs"#$%2345GHIJKLMNOPklmn~}|{zyxovw   !"#/.$%,-0IJKLYMWXZ[\wx|}    ,-./012345678;<=>?@ABCDEFtuvwxyz{|}~     +,-./0123456789:;<=NOPQRSTUVWX;<=>?DEFGVWXYZ[\]^_cdestuvz{|     1 0 / . - , + * )    5 4 3 2    8 E D C B A @ ? > = < ; : 9 7 6 ' ( L M N O P Q y z } ~ !!!!!!!! !!!"!#!&!'!(!/!0!9!:!;!<!L!M!R!S!T!Z![!\!]!!!!!^!_!`!a!b!!!!!!!!!!!!!!!!!!!"""""""""" " " " " """"""""""""""""""" "!"""#"$"%"&"'"(")"*"+","-"."2"3"4"C"D"E"F"G"l"k"j"i"h"I"J"p"o"K"L"q"M"N"r"O"P"Q"R"S"T"f"g"s"t"u"v"w"x"y"z"{"|"}""""""""""""""# # # # ####!#"#+#,#-#.#;#<#E#F#G#H#[#\#]#^#i#_#`#g#h#j#k#l#m#n################################$$$$$$$$$ $ $ $$$$$-$.$<$=$?$@$A$O$P$Q$R$a$S$T$b$U$V$e$d$c$_$`$f$g$h$i$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%&%'%(%/%0%Z%[%\%]%^%_%`%t%u%z%{%%%}%~%%%%%%%%%%%%%%& & & & & &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''''''''''''''''''''''(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f))))***)))))))*)))***)))*** * * * * *h*i***************************+5+4+3+1+2+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++++++++++++++++,,,, ,t,u,v,w,,x,z,{,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,,,,,,,,,,,--------V-W-m-n-o-p---------------------------------------------------.......... . . . . ..................//////////000000#0$0%0203040B0C0D0E0^0_0r0s0t0u0000000000111111 1!1"1#1$1%1&1'1(1)1*1+1,1-1.1/10111213141516171111111111111111111111222222222222222333336373@3A333333333333334 444445464748494:4;4<4=4>4?4@4A4B4C4D4E4F4G4H4I4J4^4_4`4a4b4c4d4e4f4g4h4i4j4k4l5?5@None("#%&'-./1789;=>?FHIMSUVX_dghklmq5/525153505554'|'''}'~'5 55 5555555 5 5 55552 22!2)2*2-2+2,2.2K2L2O2M2N 2/2423212022!2A2F2E2C2B2D"2<2=2?2>2@#2P2S2R2Q$2&2'2(%2"2#2$2%&252;262728292:'2G2J2I2H('o'p'q)1111111111*1111+111111,1w1x1z1y-111.1{1}1|1~1/11110111111111111121?1A1@1B1C3181:191<1=1;1>4/////5/4/5/6/7/8/96//////////7/////8.......................................................////////// / / / / /////////////////// /!/"/#/$/%/&/'/(/)/*/+/,/-/.///0/1/2/39/:/G/C/;/</=/>/?/@/A/B/D/E/F/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/{?//////@ABCDEFGHIJadcbKG:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHLMt~}|{zyxwvuNO1FEDCBA@?>=<;:98765432P'*)(Q RSTUV 43210/.-,+*)('&%$#"!   WXJedcba`_^]\[ZYXWVUTSRQPONMLKYZ[\] ^_ ` FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!a bc 5 E D C B A @ ? > = < ; : 9 8 7 6de    fgh:<;i'a'bj'W'Y'Xk...lmnopXkjqYZ[rcdefsghit\]^_u`abvwxyz{|}~.b.d.c.e.f.g.h.m.j.r.i.p.l.t.q.u.k.n.o.s,M,O,N,P,R,Q,S,T,U,V,Z,W,X,Y,[,_,^,],\'K'O'L'M'N,5,6,7,8,1,4,3,2'='?'>'@.<.=.>.*.+.2.,.-.3.../.0.1.%.&.'.(.)..!.$. .".#.....4.;.:.9.5.6.7.8+++++++++++++++++++++++++++++++++++++++++++)9):);)<)=)>)?)) )!)")))))(((((((()5)8)7)6)1)3)4)2))) )) ) ) )))))) ))))*)/),)+)-).)0((())))(((())((((((((())))(((((((((((((((((((((((((((((((((((((((((((((((()#)%)$)&)')())'/'0'1'2''!' '''''((((((((((((((((s(u(t(v(w(x(y(z({(|(}(~(((((((g(i(h(j''''''''''''''''''''''''''''''''''''''''''' E I H G F n o p q r     '''''''''''' ' ' '''&'&&''''efg\]^_bcd`aYZ[@ABC>?  ~ '''''''(-(.(/(0(1(2(3(4(5(6(7(8000000000000000000000000000000000   222 222 --------------------  4m4r4s4t4u4v4w4x4y4z4{4|4}4~444444444444444444444444444444n4o4p4q444444444444444444444444444444444444444444444444444444444444444444444444444444444440123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\*+,- ./!")*#+,-$ %& 'OPQR(IJ)GH*KL+MN,3Q-3e3g3f3h3j3k3l3m3n3i.3[3\3_3`3]3^3a3b3c3d/3R3S03T3V3U3W3X3Y3Z13o3s3p3r3q23t3v3u3x3w3y3z3{3|3}3~34K4L4M4N44O4P4Q4R4S5fghij6klmon7UV8 9:;<RS=PQ>MNO? @ A l m n o p q r s t u v w x y z { | }B ^ _CDEFGHI P QJ @ A B CKLMNOPQRSTUVWX 6 7Y&&Z&&[\]^_`abcdefghijklmnop " #qrstuvw xyz{|}~ -c-d-k-l-X-Y-i-j-e-f-h-g-Z-[-\-]-^-_-`-a-b CDEF   y~z{NOPSUVTQR  3=3?3>3;3<38393:&&&&&&&&&&&&&%)%T%S%R%Q%P%O%N%M%L%K%J%I%H%G%F%E%D%C%B%A%@%?%>%=%<%;%:%9%8%7%6%5%4%3%2%1%*%Y%X%W%V%U%+%,%.%-$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ p q r s tOPCGDEFHIJKLMN$$$$&')(*+$W$X$]$^$Y$Z$[$\$/$>$0$1$2$3$4$5$6$7$8$9$:$;++   pqmno,,,,,,,,,, W X Y Z [ \ ] I J K L$$$ $ $$##############.................. = > 1 2           \]^  ###   ######     { | }   P Q R S T U V W X Y d e f g h i j! X Y"pqutrs#678$9:;<=>?@ABC%DEF&#c#d#e#f'#a#b(]^_)GH* ; < =+ 9 :, 7 8- 4 5 6. ( )/#@#A0#=#?#>1#B#D#C2###$#%3#&#(#*#'#)45# ##69:7"""89:;<""=""">"""?""""""@ABCDEFGHIJKLMNOP"H"n"mQ"_"`R"c"e"dS"["\T"W"X"Z"YU"]"^V"U"VW"a"bX  Y%x%%%Z%y%%%[%&&&%%\]%&&&&^_%&&`a%|%%%%b%v%%c%w%%%d%%e%%%%f%%%%%%%%%g%%%%%%h%%%%i%%%%j%%%%k%%l%%%%%%%m%%%%%%%%n%%%%o%%%p%%%q%%r%%%%%%%s%%%%t%%%%%u%%%%%%%%v%%%%%%%w"/"0"1x222222y222222z222222{222222|22222}222222~2222222222222222222222222222!c!h!d!f!k!e!g!i!j!!!!!!!!!!!!l!m!n!o!p!q!r!s!t!u!y!z!{!|!}!~!v!w!x!N!O!P!Q! 000000000000008090507060>0@0A0?0:0=0;0<0`0a0b0l0p0q0n0m0o0h0k0i0j0c0e0g0d0f3333333333333333333333333333333333333!!!!!!!!!!!!1!2!3!4!5!6!7!8         `abmnopq[\hijklcedgf]_^     11*k****j*****o*p*q*r*s*v*u*t********l*m*n*************w*x*y*z*{*|*}*~*******!$!%  K J I H G F        ! " # $ % &         ,y,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,},~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,wxy `ab    z{|wxyz{nopqrstuvno>?@AB9:;<=bcEFCD)) ))))))))))!))")))#)))))))))))))$)))))%))))&)))')))))())))))))))))))))))*))+)))),00-00./000//0/////120 0"0!300045678*+,-9:3444444444 4 4 4 ;3333<44=4444>?@ABCDEFGHIJ**K+++,+-+.+/+0L+"+$+#+%+(+)+*+&+'M*********N++++++++++ +!+O+ + + + P+++Q+++++R*++**S***T+++++ U+++VWXYZ[\]^_`abcdedf|}gy{zhghiirstujvwxkjklmlnopqmnopqrsVWXYZ[tuvwxyz{| } ~ { |@ACB    &%$#"!-.3210/CD#"   ,-/.+*)('&%$!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE678;<CDEFLKIJWXYZhgfedcb[\mlkji`a~UVWlm&'()./>?@AKJIBGH`adelmpqxy}~     & ' * + 2 3 > ? V W Z [ b c k l y z ~      / 0 3 4 ; < ? @ G H M N U V ^ _ l m n o u v         ! $ % 4 5 8 9 J K L M N O X Y Z [ \ ] f g h i j k         ! " # $ % & 0 / . - , + * ) ( ' 9 : < ; R S W V U T ` a c b l m t s r q p o n u           ' ( , + * ) N O Z [ y z {  !%$#",-67@Anorqp{|;<=>?@WVUTSABQRwx~}|{zyfghijklmnopqrs      :;<=>?@ABCDEFABGH[\]^_`klrstu  ! wxyz{|}~%&+*)('45>?PONMLKJIHGFEDCBA@YZ`_^]\[ijrqponmlkyz~}|{     %&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[_`{|}~TU\]bcef~   3456FE78CDGhijk~lm|}FGHIJKLutMNO{zyxwvPQ~}|RSTUVWXYZrs"#$%2345GHIJKLMNOPklmn~}|{zyxovw   !"#/.$%,-0IJKLYMWXZ[\wx|}    ,-./0123456789:;<=>?@ABCDEFSTUtuvwxyz{|}~     +,-./0123456789:;<=DNOPQRSTUVWXhijk;<=>?DEFGVWXYZ[\]^_cdestuvz{|     1 0 / . - , + * )    5 4 3 2    8 E D C B A @ ? > = < ; : 9 7 6 ' ( L M N O P Q y z } ~ !!!!!!!! !!!"!#!&!'!(!/!0!9!:!;!<!L!M!R!S!T!Z![!\!]!!!!!^!_!`!a!b!!!!!!!!!!!!!!!!!!!"""""""""" " " " " """"""""""""""""""" "!"""#"$"%"&"'"(")"*"+","-"."2"3"4"C"D"E"F"G"l"k"j"i"h"I"J"p"o"K"L"q"M"N"r"O"P"Q"R"S"T"f"g"s"t"u"v"w"x"y"z"{"|"}""""""""""""""# # # # ####!#"#+#,#-#.#;#<#E#F#G#H#[#\#]#^#i#_#`#g#h#j#k#l#m#n################################$$$$$$$$$ $ $ $$$$$-$.$<$=$?$@$A$O$P$Q$R$a$S$T$b$U$V$e$d$c$_$`$f$g$h$i$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%&%'%(%/%0%Z%[%\%]%^%_%`%t%u%z%{%%%}%~%%%%%%%%%%%%%%& & & & & &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&' ' '''"'#'$'3'4'5'6'7'A'B'C'D'P'Q'Z'['c'd'e'f'g'h'r's't'u'''''''''''''''''''''''''''''''''''''''((9(:(;(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(k(l(m(((((((((((((((()@)A)B)C)D))))***)))))))*)))***)))*** * * * * *h*i***************************+5+4+3+1+2+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+++++++++++++++++++++++,,,, ,9,:,;,<,=,>,?,@,A,`,a,b,t,u,v,w,,x,z,{,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,,,,,,,,,,,--------V-W-m-n-o-p------------------------------------------------------.......... . . . . ..............v.w.x.y............//////////////////////000000#0$0%0203040B0C0D0E0^0_0r0s0t0u00000000000000000111111 1!1"1#1$1%1&1'1(1)1*1+1,1-1.1/10111213141516171D1E1F111111111111111111111111111111111222222222222222T2U2V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2|2}2~2222222222333336373@3A33333333333333333334 444445464748494:4;4<4=4>4?4@4A4B4C4D4E4F4G4H4I4J4^4_4`4a4b4c4d4e4f4g4h4i4j4k4l45555555555657585>5?5@5O   }   .  ,  *    B 2              ` 9 !!""#$%%u&f&''()*R+,c--.. . . .{. . .////////F//////// //////////////00111 233455555566c6~6k667777777h7d7b7`7[7W7T7L7J7D77r78B99U:q;<=>?????? ?s??@AABBCCDpD D DDE+FGGHHIIJJ<J;J7J6KKLL8MSNN\O`O_OUPPPPP^P[QYRRbSSSSSTTvT*T TTTT~TgUUUUUVV/WWWXXXXXXYZ9[[=[[<\\\1\0\-]^^_`abbb>bbcccccccddeef}g|ggjgihhhij kl&mmmmm4m3n8o>pppppppppppppqrrIs s!s s!t"t#t"t#u$u%u$u%v?w&w'w&w'x(x)x(x)yEz\{*{+{*{+|}~,~-~,~-././01012345656Y]7C8 X9:; <=>?%$#"!Y@A@A@3BEKMF5CDEFEFfCGuv|{zQ+ZHIIJIJoAKL_M!NONOPQPQRSRSTUTUa-,1025]76Vc;:@WkXYXYZn[\]^]^_`_`ababcdcdesf#ghijklmnopqrstuyxP GNdeTWZvRhOLKJHw. mxrSPONMV  yz{zyw|}|}~~' l=:9pt/)?AwjGl('&u4tsnm a V   u   X     HQF{xqpo^f"%$ge)(i    !! "##$$$%%%&''''''(((((((((((((((((()))))))))))**********+++{+z+++++++,,,,,,,,,,,,,,,,,,,,,,----------...... . . . . / / / / / / // / / / / / 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 !2 "2 "222 #2 $2 %2 &2 '2 (3 )3 )3#3 *3 +3 ,3 -3 .3 /3 04}4}4 14 24 34 44 54 64 74 84 94 :4 ;4 <5 =5 =5 >5 ?5 @5 A5 B5 C5 D5 E5 F5 G5 H)) I) J) K) L) M) N) O) P6 Q6 Q6 R6 S6 T6 U6 V6 W6 X6 Y6 Z6 [6 \6 ]6 ^6 _6 `6 a6 b6 c6 d6 e6 f6 g6 h6 i6 j6 k6 l6 m6 n6 o6 p6 q6 r6 s6 t6 u6 v6 w6 x6 y6 z6 {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 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 +6 ,6 -6 .6 /6 06 16 26 36 46 56 66 76 86 96 :6 ;6 <6 =6 >6 ?6 @6 A6 B6 C6 D6 E6 F6 G6 H6 I6 J6 K6 L6 M6 N6 O6 P6 Q6 R6 S6 T6 U6 V6 W6 X6 Y6 Z6 [6 \6 ]6 ^6 _6 `6 a6 b6 c6 d6 e6 f6 g6 h6 i6 j6 k6 l6 m6 n6 o6 p6 q6 r6 s6 t6 u6 v6 w6 x6 y6 z6 {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 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 +6 ,6 -6 .6 /6 06 16 26 36 46 56 66 76 86 96 :6 ;6 <6 =6 >6 ?6 @6 A6 B C D Ek F D E G H I J K L M N O O P M N 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 { | } ~         C       | | || | | | | | | | | | | | | | | | | | | | | | z z z z z\z z z z z z z z z z z z z z z z z v v v v v?v v v v v v v v v v v v v v v v v v (( ( ( ( ( ( ( ( ( ( ( ( ( ( 7 7 777 7 7 7 7 7 8 8 888 8 8 8 8 8 9|9|99 9}9 9 9 9 9 9 9 9 : : : : : $$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $$ $ $$ $ $ $ $ $ $$ $ $$ $ $ $ !$ "$ #$ $$ %$ &$ '$ ($ ); *; *; +; ,; -; .; /; 0. 1. 2.H. . . 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 f g gi h i j k l m d e n o p q r s t u v w x y z { | } ~                 $ %                  "           ^                      F                                                 H                          4                                                ! " # $ % & # $ ' ( ) * + , - . / - . 0 1 2 3 4 5 6 7A 8 6 7 9 : ; < = > ? @? A B C D ? @ E F G H I J K L M K L N O P Q R S T U' V T U W X Y Z [ \ ] ^ _ ` ] ^ a b c d e f g h i g h j k l m n o p q r s t u v w x y z { | } ~   p q    x m     #     @     : ; c V     2     1 0     !              !"#$%&'()*+,,-I./0H12*+3456789:;<=>?@ABCDEFGHIJKLJKMNOPQRSTUVWTUXYZ[\]^_`abcde+fghijklmnodepqrstuvwxyz{|}~YXC      !"#$%&'()&'*+,-./01201345678}9}:};};}<}}=}>}9}:}?}@}A}B}C}D}E}F}G}H}I}J}K}LyMyNyOyOyPyEyQyMyNyRySyTyUyVyWyXyYyZy[y\y]y^y_q`qaqqbq`qaqcqdqeqfqgqho>oiojokolomonooopoq<r<s<t<r<s<un8nvnwnxnynzn{n|=}=~==}=~=l&lllllll>>>>>>kkkkkkkkkkkkkkkkkkkkkkkk??????????j jjjjjjjj@@@@@@@@iiiiiiiiiAAAAAAaaaaaaaaaaBBBBBB________CCCCCCDDDDDDDDDDDDEEEEEEEE3EEEEEEEEFFFFFFFBFFFFFFFFZZ9ZZZZZZZZZGGGG GGG G Y YY YYYYYYYFFFFFFFFFFFHH H!HH H"III#I$I%I&I'I(I)I*I+II,I-I.I/I0I1I2I3JJJ4JJ5J6J7J8J9J:J;J<BB=B>B?B@BABBBCBDBEBFBGBHKIKIKJKKIKKKLKMKNKOKPKQKRKSLLLTLULVLWLXLYLZL[L\L]MTMTM^MMMMMMM_M`MaMbMcMdMeMfMgQYQhQiQjQkQlQmQnNoNpNqNrNsNoNpNtNuOvOvOwOxOyOzO{O|O}O~OOOAAAZA[A\AAAAAAAAAAAAAAAAPPPPPPPPPPPPPPQ]Q]QQQQQQQQQQQQQMSMMMMMMMRRRRRRRRRSSSSSSSSSSSSSTTTTTTTTTT@@@@@@@@@UUUUUUUUUUUUUUU'''''''''''''VVVVVVVVVVVVWWWWWWWWWWWWWW&f&&&&&&&&&&&g&&&&&&&&&&&&&a-    ,  E+E!E"E#E$E%E&E'E(E)E*X+X+X,X-X.X/X0X1X2X3X4Y5Y5Y6Y7Y8Y9Y:Y;Y<Y=Z>Z>Z?ZZDZ@ZAZBZCZDZEZFZG%%H%I%t%s%r%q%4%J%K%L%M%N%O%P%Q[[[R[[S[T[U[V[W[X[Y[Z\[\[\\\]\^\_\c\b\`\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]z]{]|]}]~]]]]^^^^^^^^^^^^^^^^^^^^^^!!!!!!!!!!                  ____________``````````aaaaaaaaaabbbbbbbbbb9<:*.,-9873465210/E+)ccccdceccccccccddddddddddeeeeeeeeeeffffffffffgggggg g g g g hhhhhhhhhhiiiiiiiiiijjj j!j"jjjjjjjj#jjjjj=j>jj!j#j$j%j&j'j(j)j*j+k,k,k-k.k/k0k1k2k3k4llll5l6l7l8l9l:m;m;m<m?m=m>m?m@mAmBmCmDEFGHIJKLnMnMnNnOnPnQnRnSnTnUnVnWnXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@3oooooJooooKoLooooooooopppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrr----------sssssssss s C   tytyttttt~ttttttttuuuuAuGuuuuuuuu v!"#$%&'(``)`*`+`,`-`.`/v0v1v2v0v1v3USR456789n:;<=>?;<=>@B^]\[:?@CABCDEFhhGhHhhIhhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh[h\w]w^w_w`waw]w^wbwcwdwewfwgwhw!PphTOijklmnopKKqKrKKsKtKuKvKwKxKyKzK{xxxxxxxx|x}x~xxxxxQxxxxxxxxUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUyyyyyyyyyyyyyyyyyyyyyyy   zzzzzzzzzzzz{L{L{{{{g{i{{{j{v{h{{{{{Z{'{{&{6{{5{{{{{x{V{%{{{{{{{{^^^^^^^^^^^^^^^^^|||||||||||||zy     ()*+,-./012345KM !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd$ef%ghijklmno&pqrs)t'uvwx(yz{|}~f}fffff}}}}}}mf~~~~~~~~~~~~b  tw  *+,-./012  k !"#$%&''A()*+,-$.$/$$0$$1$$2$.$/$3$4$5$6$7$8$9$:$;$<$=$>$?$@AAB@CDEFGHIJKLMNOPQRSSTUVWXYZ[\]\1\^\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\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\`dWWWWWWWWWWWWWWWWWWWWWWWWWWWookl      !"#  $ % & ' ( ) * + ,--./0123456789:;<=>?@AABCDEFGHIJQ  KLMNOPQRSTUVWXYZ[\\]^_`abcdefghiijklmnopqrstuvwxyz{|}~FEDaazIMN%'&J78XW"878XW         eeeeeeeeeeeeeee e!e"e#e$e%e&'()*+'(,-./012345678OUO9O_O:O`O;O<O=O>O?O@OAOBOCODOEOFOGOHOIOJOKOLOMNOPQRNOSTUVWXYZ[\]^^_`abcdefghijklmnopqrstuvwxyz{|}}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&|////////////F//// //////'/(//)/*//+/,//-/.////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/{/|/}/~///////////////////////////////////////////////////////////////////////////////////////e)(g      !"#$%&'()*+,-./012f341256789:;<=>?@ABCDEFGHIJKLMNOPQ?@cRSTUVWXYZ[\]^_`abcdefguhdemijklmnopqrstu(vw&x'ytuz{|}~lGj   /   !"#$V%#$&'()*+,,-./0N12345P6789M:;O<=>?S@A*+BCDE7FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrrsttuvvwwxxyz{|}~rpqH9A     1U !d"#$%&' !(?()*+,-./01234566]7879:;<=>?@AB6CD45EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abccd5efghiabjklmnopqrstuvwxyz{|}~_KML~iZVK       !$"d#$%&'()*+,-./0123456789:;<=>8?=>@ABCDEFGHIJKLMNOPQ23RSTUVWX4YZ[\]PQ^_`aabcdefghijklmnopqrsrsmmtmummvmwmxmmymzm{m|mm}m~m4mm3mmmRmmMmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmefSNg|ggigggggggjgggggggggggggggggggggb>bbbbbbbbbbbbb#bRbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb     ' !"#$%&'()*+]],]]-].]/]0]1]2345346^78978:;<=_PP>P?P@PAPBP[PCPPDPEPFP^PGPPHPPIPJPKPPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP[P\P]P^P_P`PaPbPcPdPePfPgPhPiPjPkPlmnopqrstuvwxmnyz{|}~HGN\NNNNNNNNNNNNNNNNNNL8LLLLLLLLLLLLLLLJ6JJJ<JJJJ7JJ;JJJJJJJ"JnJJJJJJJJJJJJJJJJJJJJJJJJJJJHHHHHHHHHHHHHHHHHHDDDDDD DD DDpDDDDDDDDDDDDDDDDDDD D D D D DDDCCCCCCCCCCCCCCCCppppppppppppppp p!p"p#p$p%p&p'p(p)p*p+p,p-p.p/p0p1p2p3p4p5p6p7p8p9p:p;p<p=p>p?p@pApBpCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp[p\p]p^p_p`papbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpwpxpy#z#{#|#}#}##~###{#|#b###############hWwRlkj              i                      ! " " # $ % & ' ( ) * + , - .   / 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" {"" |" z" {" }" ~" " " " ! ! ! ! ! !! ! ! ! ! ! ! ! ! ! ! ! ! !      = :    9 l          "  $&       ! !!!!!!=!!!!!! ! ! ! ! !.!!! ! !!!!!!!!!!!!!!!! !!N!"!#!$! !!e!%!&!'!(!)!*!+!,!,!-!.!.!/!/P!0!1!2!3!4!5!6!7!8!9!:!;!<!=!>!?!@G!A!B!C!D !E!F!G!H!I!J!K!L!M!N!O!*!+!P!Q!R!SMN!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!K!!H!L!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#o`!!!!G!t !!!!!!!!!A!!!!!!!!!!!!!!!!!!!e!!!!!!!!!!!!!!!!!s!!f!!!!!!!!!!""""""DOprqG6"""" " " " " """"""""""""""""""" "!"""#"$"%"&"'"(")"*"+","-"."/"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"Rn"S"T\"U"V"W"X"YZ"Z"O"P85"["\"]"^"_"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o"p"q"r"s"t"t"u"v"r"sf"w"x"y"z"{"|"}"~""""""""""""""T"""""""""""""""""""""""";C"""""""""""""""""""""4X"""""""""""""""""""""""""""""""g">E"""""""""""""""""""""""""""""""o"A"""Z"""""""""""""""""########## # # # # # ## # X##################v# ##Q#!#"###$#%#&#'#(#)#*#+#,#-#.#/#0u#1#2#3#4#5#6#7#8G#9#:#/#0L#;#<#=#>#?#@#A#B#C#D#E#F#G#H#I#I#J#K#L#G#H#M#N#O%F#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#^#_#`#a#b#c#d#e#f#g#h#iC#j#k#l#m#n#o#p#q#r#s#t#h#i#u#v#w#x#y#z#{#|#}#~###############F#5#M########<###############################################E#####L######################<>####"#############!##%#####$############JKT#ehF#s#######$$$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$$$$$$$ $!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$29: $3$4$5$/$0$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$[$\$]$^$_$`$aE$br$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$wpqgh$x$xo$y$y$zimk${$|$}$~$$ $$$$$$$$$$$$$$$s$$$$$$r$$$u$$$$$$$$$$$$t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$v$w$$$$$$ $$$$$$$$$$$$$$$$$$$$$mtuv ln!?$s$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%% % % % % %%%%%%%%%%%%%%%%%%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%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%{%|%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%  \]^%%%%%%%%%%%%%%%%%r%r%rr%rIr%r%r%rr%r%r%r%r%r%r%r%r%r%r%r%II%I%I%I%I%I%I%II%I%I%I%I%I%IJI%IwIQI%I%I%I%I%I%I%I%I%I%9U9%9%9%99%9%9%9Y9%99%9%9%9%9%9%9%9%9%9%8B8%8%8%88%8888%8%8%8%8%44%4%4%44444%4%4%4%4%4%22%2%2%2%222%2%2%2%2%++%+%+++%+%+&+&+&*R*&*O*&*z****&*&*&*&*& *&  & & D & q I & & & & & &&&&&&C&p&&&&&&RbR& R&!R&"RR&#R&$RR&%R&&R&'R&(R&)R&*R&+R&,R&-R&.R&/&0&1&2&3&4&5&6&7&0&1&8&9&:&;&<&=&>&?&@GG&AG&BG&CG&DGG&EG&FG&GG&HGGG&IG&JG&KG&LG&MG&NG&OG&PG&QG&R&S&T&U&V&S&T&W&X&Y??&Z?&[?&\?&]?&^?&_??&`?&a??&b?&c?s?&d?&e??&f?&g?&h?&i?&j?&k??&l?&m?&n?&o?&p??&q?&r?&s??&t?&u?&v?&w?&x? ?&y?&z?&{??j??&|?&}?&~?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&SS&SS&S&SS&SS&S&SS&SS+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&&&&&&&&&&&&&&,.>>&>&>&>d>&>>&>&>&>&>&==&=&=&=&=&=&=&=&=&=&=&=&=&=&=&=&=&=_=&==&=&=&=&=&<<&<&<c<&<<&<&<&<&<&;;&;&;&;';';;;;'; ;';';';';';':q:' :' :' :' :' :[:':::':':':':'7r7'7'7'7'7'7'7'7'7'7'7'7'7' 7'!7'"7'#7'$7J7'%7'&7''7'(7')7'*7'+7',7'-7'.77'/7'07'17'27'37'47'57L7'67'77D7'87'97':7';7'<7'=77'>7'?7'@7'A7'B7'C7'D7'E7W7'F7'G7'H7'I7'J7'K7'L7'M7[7'N7'O7'P7'Q7'R7'S7'T7'U7'V7'W7'X7'Y7h7'Z7'[7'\7']7'^7'_7b7'`7'a7'b7T7'c7'd7'e7d7'f7'g7'h7'i77'j7'k7'l7'm77'n7'o7'p77'q7'r7's7't7'u7'v7`7'w7'x7'y7'z7'{7'|77'}7'~7'77'7'7'77'7'7'7'7'7'797'7<7'77'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'''''''''''n''''m''''''(((((((((( ( ( ( ( ((((((((((((((((((s( (!t("(#($(%(&('((()(*(+(,(-(.''(/(0(1(2(3(4(5(6(7(8(9(:x*U(;(<(=(>(?(@(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({(|(}(~(((((((((((((((((((((((((zyy(({(((((((((((((((((((w(((((((((((z(((((((((((((((w:((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()))))))))) ) ) ) ) ) )))))))))))))))))p)) )!)")#o)$)%)&)'q)()))*)+),)-).)/)0)1)2x)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@)dnrm;)e)f)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)z){)|)})~)))))))))))))))))))))))))))))))))))))))))))))))o))))))6k6)6)6)6)6)6)6)6~6)6)6)6)6)6c6)6)6)6)6)6)6)66)6)6)6)6)6)6)66)6)66)6)6)6)6)6)6)6)6)6P6)6|6\6)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))))))))**))******** * * * * ****33*3*3*33*3*3*3>3*333*3P3333*3*3*3*3*3*3* 3*!3*"3*#3*$11*%1*&1*'1*(1*)1**1*+11*,1*-1*.1*/1*01 1*11*21*31*411*51~1*61*71*81*91*:1*;1*<1*=1*>1*?1*@1*A1*B1*C1*D1*E1*F*G*H*I*I*J*K*K(/*L*M*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*G*H*w*x*y*z*{*|*}*~*******************************************************************l**************************************************************++++++++++ + + + + +++++]++++++++++++++ +!++0+"+#+$+%+&+'+(+)+*+++,+-+.+/+0+1+2+3+4+5+6+7+8+9+:+;+<+=+>+?+@+A+B+CXX+DXX+EXX+FXX+GXX+HX+IX+JX+KX+LX+MX+NX+OX+PXX+QX`X+RXX+SX+TX+UX+VX+WX+XX+YX+ZX+[X+\X+]X+^X+_X+`X+aX+bX+cX+dX+eX+fX+gX+hX+iX+jX+kX+lX+mX+nX+oX+pX+qX+rX+sX+tX+u+v+w+x+y+z+{+|+}+~++++v+w++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++a55+5+5+55+5+5+5+5+55+5+5+5+55+5+5+5+5+5+5+5+5+55+5+5+5+5+5+5+55+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,0,0,0,0,00,0,0,0, 0, 0, 0, 0, 0,0,0,0,0,0S0,0}00,0,0,0,0,0,0,0,0,0,0,,, |,!z,",#{,$,%,&,',(,),*Q,+,,,, ,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A,B,C,D,E,F,G,H,I,J,c,,K,,L,S,,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 ,{ ,| ,} ,~ , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,  , , , , ,  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,  , , , , ,  , - -  - -  - -  - - - -  - - - -  - - - - -  - - - - -  - - - - - - - - - V -!         6 7 -" -# -$ -% -& -' -( -) -* -+ -, -- -. -/ -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 -e -f  u -g -h -i -j -c -d -k -l -m -n -o -p -q  -r -s -t -u -v -w -x -y -z -{ -| -} -~ - - - - - - - - - - - - X - -  - - - - 3 - - - - - - - - - - - -------W--------2W--------------------------------Z----------:B------------------------e--T----------)@---------------... . . V . a . . . . . .  .  .  .  .  . . . . .T*T.T.T.T.T.TT.TT.T.TvT.T.TT.T.T.T. T.!T."T~T.#T.$TgT.%T.&T T.'T.(TT.)T.*TTTTTTTT.+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.OT.PT.QT.RT.ST.TT.UT.VT.WT.X.Y.Z.[.\.].^._.`.a.b.c.Y.Z.d.e.f.g.h.i.j.k.l 2 .m .n .o .p .q .r B .s .t .u .v $ .w y .x .y .z .{ .| .} .~ . . ....................................... , . . . * . . . .  . . . . . .  . . . . .  . . . . . . .  . . . . . . . . .  . . .  . . . I . v H . u   .  O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / /// //////// / / / / ///// / ////KxNV/V/V/VV/V/VV/V/V/V/V/V/V/ V/!V/"V/#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     ab_W|~/Zk/[q/\/]/^/_/`/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/////y//////////XZ{Y[}/////////////////////////////////////////////////////0000//000000 0 0 0 0 00000ccc0cc0c0c0c0c0c0cc0c0c0c0c0c0c0 c0!c0"cc0#c0$c0%c0&c0'c0(c0)c0*c0+cc0,c0-c0.c0/cc00c01c02c03c04c05c06c07c08c09c]cUc0:cicfc0;c0<c0=c0>c0?c0@c0Ac0Bc0Cc0Dc0Ec0Fc0Gc0Hc0Ic0Jc0Kc0Lc0Mc0Nc0Oc0Pc0Qc0Rc0Sc0Tc0Uc0Vc0Wc0Xc0Yc0Zc0[c0\c0]c0^c0_0`0av0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0wR0x0yh0z0{0`0a0|0}0~yY;_00000000000000000000000000000000000Q000000000000000000000000000000000000000000000000000000000000000^Vjgdd0d0d0dd0d0d0d0d0d0d0d0d0d0d0d0d0d0000000000000000[[0[0[0[0[0[0[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/[10[11[12[13[14[15[16[17[18[19[1:[1;[1<[1=[1>[1?[1@[1A[1B[1C[1D[1E[1F[1G[1H[1I[1J[1K[1L[1M[1N[1O[1P[1Q[1R[1S[1T[1U[1V[1W[1X[1Y[1Z[1[[1\[[1][1^[1_[1`[1a[1b[1c[1d[1e[1f[1g[1h[1i[1j[1k[<[1l[1m[1n[1o[1p[1q[1r[1s[1t[1u[1v[1w[1x[1y[1z[1{[1|[1}[1~[1[1[1[1[1[1[1[1[1[1[1[1[1[1[1[111 111 1111111 1111"1!1111111111111111111111B1o11111~11111111111111;1m111;1;11,1111$vulkan-3.10.1-1TEU5pnjPMUIPvRJKiYc8aVulkan.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_4444_formats-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_device_memory_report)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_image_robustness)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_atomic_float;Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation2Vulkan.Extensions.VK_EXT_shader_image_atomic_int64.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_external_memory/Vulkan.Extensions.VK_FUCHSIA_external_semaphore.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_acceleration_structure(Vulkan.Extensions.VK_KHR_android_surface'Vulkan.Extensions.VK_KHR_copy_commands2 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_win32.Vulkan.Extensions.VK_KHR_fragment_shading_rate0Vulkan.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_portability_subset(Vulkan.Extensions.VK_KHR_push_descriptor"Vulkan.Extensions.VK_KHR_ray_query-Vulkan.Extensions.VK_KHR_ray_tracing_pipeline-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_info4Vulkan.Extensions.VK_KHR_shader_terminate_invocation1Vulkan.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_synchronization2(Vulkan.Extensions.VK_KHR_wayland_surface*Vulkan.Extensions.VK_KHR_win32_keyed_mutex&Vulkan.Extensions.VK_KHR_win32_surface9Vulkan.Extensions.VK_KHR_workgroup_memory_explicit_layout$Vulkan.Extensions.VK_KHR_xcb_surface%Vulkan.Extensions.VK_KHR_xlib_surface9Vulkan.Extensions.VK_KHR_zero_initialize_workgroup_memory$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_barycentric3Vulkan.Extensions.VK_NV_fragment_shading_rate_enums1Vulkan.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_transform/Vulkan.Extensions.VK_QCOM_rotated_copy_commands'Vulkan.Extensions.VK_QNX_screen_surface2Vulkan.Extensions.VK_VALVE_mutable_descriptor_typeVulkan.Internal.UtilsVulkan.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.EventCreateFlagBits 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_allocation-Vulkan.Extensions.VK_NV_acquire_winrt_display1Vulkan.Extensions.VK_KHR_swapchain_mutable_format-Vulkan.Extensions.VK_EXT_swapchain_colorspace%Vulkan.Extensions.VK_KHR_device_group1Vulkan.Extensions.VK_KHR_deferred_host_operations,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_properties2Vulkan.Requirement3Vulkan.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_resolveVulkan.SPIRVRequirements Vulkan.Core10Vulkan.Extensions.Dependencies%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&AccelerationStructureBuildSizesInfoKHR"AccelerationStructureCreateInfoKHR!AccelerationStructureCreateInfoNV)AccelerationStructureDeviceAddressInfoKHR)AccelerationStructureGeometryAabbsDataKHR-AccelerationStructureGeometryInstancesDataKHR AccelerationStructureGeometryKHR-AccelerationStructureGeometryTrianglesDataKHRAccelerationStructureInfoNV-AccelerationStructureMemoryRequirementsInfoNV#AccelerationStructureVersionInfoKHRAcquireNextImageInfoKHRAcquireProfilingLockInfoKHR&AndroidHardwareBufferPropertiesANDROID!AndroidHardwareBufferUsageANDROIDAndroidSurfaceCreateInfoKHRApplicationInfoAttachmentDescription2"AttachmentDescriptionStencilLayoutAttachmentReference2 AttachmentReferenceStencilLayoutBaseInStructureBaseOutStructure%BindAccelerationStructureMemoryInfoNVBindBufferMemoryDeviceGroupInfoBindBufferMemoryInfoBindImageMemoryDeviceGroupInfoBindImageMemoryInfoBindImageMemorySwapchainInfoKHRBindImagePlaneMemoryInfoBindSparseInfoBlitImageInfo2KHRBufferCopy2KHRBufferCreateInfo BufferDeviceAddressCreateInfoEXTBufferDeviceAddressInfoBufferImageCopy2KHRBufferMemoryBarrierBufferMemoryBarrier2KHRBufferMemoryRequirementsInfo2$BufferOpaqueCaptureAddressCreateInfoBufferViewCreateInfoCalibratedTimestampInfoEXTCheckpointData2NVCheckpointDataNVCommandBufferAllocateInfoCommandBufferBeginInfo3CommandBufferInheritanceConditionalRenderingInfoEXTCommandBufferInheritanceInfo3CommandBufferInheritanceRenderPassTransformInfoQCOMCommandBufferSubmitInfoKHRCommandPoolCreateInfoComputePipelineCreateInfo ConditionalRenderingBeginInfoEXTCooperativeMatrixPropertiesNV CopyAccelerationStructureInfoKHR(CopyAccelerationStructureToMemoryInfoKHRCopyBufferInfo2KHRCopyBufferToImageInfo2KHRCopyCommandTransformInfoQCOMCopyDescriptorSetCopyImageInfo2KHRCopyImageToBufferInfo2KHR(CopyMemoryToAccelerationStructureInfoKHRD3D12FenceSubmitInfoKHRDebugMarkerMarkerInfoEXTDebugMarkerObjectNameInfoEXTDebugMarkerObjectTagInfoEXT DebugReportCallbackCreateInfoEXTDebugUtilsLabelEXT"DebugUtilsMessengerCallbackDataEXT DebugUtilsMessengerCreateInfoEXTDebugUtilsObjectNameInfoEXTDebugUtilsObjectTagInfoEXT%DedicatedAllocationBufferCreateInfoNV$DedicatedAllocationImageCreateInfoNV'DedicatedAllocationMemoryAllocateInfoNVDependencyInfoKHRDescriptorPoolCreateInfo-DescriptorPoolInlineUniformBlockCreateInfoEXTDescriptorSetAllocateInfo)DescriptorSetLayoutBindingFlagsCreateInfoDescriptorSetLayoutCreateInfoDescriptorSetLayoutSupport0DescriptorSetVariableDescriptorCountAllocateInfo1DescriptorSetVariableDescriptorCountLayoutSupportDeviceCreateInfo%DeviceDeviceMemoryReportCreateInfoEXT#DeviceDiagnosticsConfigCreateInfoNVDeviceEventInfoEXTDeviceGroupBindSparseInfo!DeviceGroupCommandBufferBeginInfoDeviceGroupDeviceCreateInfo!DeviceGroupPresentCapabilitiesKHRDeviceGroupPresentInfoKHRDeviceGroupRenderPassBeginInfoDeviceGroupSubmitInfo!DeviceGroupSwapchainCreateInfoKHR$DeviceMemoryOpaqueCaptureAddressInfo'DeviceMemoryOverallocationCreateInfoAMD!DeviceMemoryReportCallbackDataEXTDevicePrivateDataCreateInfoEXTDeviceQueueCreateInfo&DeviceQueueGlobalPriorityCreateInfoEXTDeviceQueueInfo2DirectFBSurfaceCreateInfoEXTDisplayEventInfoEXTDisplayModeCreateInfoKHRDisplayModeProperties2KHR&DisplayNativeHdrSurfaceCapabilitiesAMDDisplayPlaneCapabilities2KHRDisplayPlaneInfo2KHRDisplayPlaneProperties2KHRDisplayPowerInfoEXTDisplayPresentInfoKHRDisplayProperties2KHRDisplaySurfaceCreateInfoKHR"DrmFormatModifierPropertiesListEXTEventCreateInfoExportFenceCreateInfoExportFenceWin32HandleInfoKHRExportMemoryAllocateInfoExportMemoryAllocateInfoNVExportMemoryWin32HandleInfoKHRExportMemoryWin32HandleInfoNVExportSemaphoreCreateInfo!ExportSemaphoreWin32HandleInfoKHRExternalBufferPropertiesExternalFencePropertiesExternalFormatANDROIDExternalImageFormatPropertiesExternalMemoryBufferCreateInfoExternalMemoryImageCreateInfoExternalMemoryImageCreateInfoNVExternalSemaphorePropertiesFenceCreateInfoFenceGetFdInfoKHRFenceGetWin32HandleInfoKHR,FilterCubicImageViewImageFormatPropertiesEXTFormatProperties2$FragmentShadingRateAttachmentInfoKHRFramebufferAttachmentImageInfo FramebufferAttachmentsCreateInfoFramebufferCreateInfo$FramebufferMixedSamplesCombinationNVGeneratedCommandsInfoNV)GeneratedCommandsMemoryRequirementsInfoNVGeometryAABBNV GeometryNVGeometryTrianglesNVGraphicsPipelineCreateInfo(GraphicsPipelineShaderGroupsCreateInfoNVGraphicsShaderGroupCreateInfoNVHdrMetadataEXTHeadlessSurfaceCreateInfoEXTIOSSurfaceCreateInfoMVK ImageBlit2KHR ImageCopy2KHR+ImageDrmFormatModifierExplicitCreateInfoEXT'ImageDrmFormatModifierListCreateInfoEXT#ImageDrmFormatModifierPropertiesEXTImageFormatListCreateInfoImageFormatProperties2ImageMemoryBarrierImageMemoryBarrier2KHRImageMemoryRequirementsInfo2!ImagePipeSurfaceCreateInfoFUCHSIA ImagePlaneMemoryRequirementsInfoImageResolve2KHR"ImageSparseMemoryRequirementsInfo2ImageStencilUsageCreateInfoImageSwapchainCreateInfoKHRImageViewASTCDecodeModeEXTImageViewAddressPropertiesNVXImageViewCreateInfoImageViewHandleInfoNVXImageViewUsageCreateInfo&ImportAndroidHardwareBufferInfoANDROIDImportFenceFdInfoKHRImportFenceWin32HandleInfoKHRImportMemoryFdInfoKHRImportMemoryHostPointerInfoEXTImportMemoryWin32HandleInfoKHRImportMemoryWin32HandleInfoNV#ImportMemoryZirconHandleInfoFUCHSIAImportSemaphoreFdInfoKHR!ImportSemaphoreWin32HandleInfoKHR&ImportSemaphoreZirconHandleInfoFUCHSIA"IndirectCommandsLayoutCreateInfoNVIndirectCommandsLayoutTokenNV!InitializePerformanceApiInfoINTELInstanceCreateInfoMacOSSurfaceCreateInfoMVKMappedMemoryRangeMemoryAllocateFlagsInfoMemoryAllocateInfo MemoryBarrierMemoryBarrier2KHRMemoryDedicatedAllocateInfoMemoryDedicatedRequirementsMemoryFdPropertiesKHR)MemoryGetAndroidHardwareBufferInfoANDROIDMemoryGetFdInfoKHRMemoryGetWin32HandleInfoKHR MemoryGetZirconHandleInfoFUCHSIAMemoryHostPointerPropertiesEXT&MemoryOpaqueCaptureAddressAllocateInfoMemoryPriorityAllocateInfoEXTMemoryRequirements2MemoryWin32HandlePropertiesKHR#MemoryZirconHandlePropertiesFUCHSIAMetalSurfaceCreateInfoEXTMultisamplePropertiesEXT$MutableDescriptorTypeCreateInfoVALVE(PerformanceConfigurationAcquireInfoINTEL PerformanceCounterDescriptionKHRPerformanceCounterKHRPerformanceMarkerInfoINTELPerformanceOverrideInfoINTELPerformanceQuerySubmitInfoKHR PerformanceStreamMarkerInfoINTEL"PhysicalDevice16BitStorageFeatures$PhysicalDevice4444FormatsFeaturesEXT!PhysicalDevice8BitStorageFeatures#PhysicalDeviceASTCDecodeFeaturesEXT.PhysicalDeviceAccelerationStructureFeaturesKHR0PhysicalDeviceAccelerationStructurePropertiesKHR/PhysicalDeviceBlendOperationAdvancedFeaturesEXT1PhysicalDeviceBlendOperationAdvancedPropertiesEXT)PhysicalDeviceBufferDeviceAddressFeatures,PhysicalDeviceBufferDeviceAddressFeaturesEXT'PhysicalDeviceCoherentMemoryFeaturesAMD0PhysicalDeviceComputeShaderDerivativesFeaturesNV-PhysicalDeviceConditionalRenderingFeaturesEXT4PhysicalDeviceConservativeRasterizationPropertiesEXT)PhysicalDeviceCooperativeMatrixFeaturesNV+PhysicalDeviceCooperativeMatrixPropertiesNV*PhysicalDeviceCornerSampledImageFeaturesNV-PhysicalDeviceCoverageReductionModeFeaturesNV*PhysicalDeviceCustomBorderColorFeaturesEXT,PhysicalDeviceCustomBorderColorPropertiesEXT8PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV(PhysicalDeviceDepthClipEnableFeaturesEXT+PhysicalDeviceDepthStencilResolveProperties(PhysicalDeviceDescriptorIndexingFeatures*PhysicalDeviceDescriptorIndexingProperties/PhysicalDeviceDeviceGeneratedCommandsFeaturesNV1PhysicalDeviceDeviceGeneratedCommandsPropertiesNV+PhysicalDeviceDeviceMemoryReportFeaturesEXT)PhysicalDeviceDiagnosticsConfigFeaturesNV+PhysicalDeviceDiscardRectanglePropertiesEXT(PhysicalDeviceExclusiveScissorFeaturesNV-PhysicalDeviceExtendedDynamicStateFeaturesEXT PhysicalDeviceExternalBufferInfoPhysicalDeviceExternalFenceInfo%PhysicalDeviceExternalImageFormatInfo-PhysicalDeviceExternalMemoryHostPropertiesEXT#PhysicalDeviceExternalSemaphoreInfoPhysicalDeviceFeatures2,PhysicalDeviceFragmentDensityMap2FeaturesEXT.PhysicalDeviceFragmentDensityMap2PropertiesEXT+PhysicalDeviceFragmentDensityMapFeaturesEXT-PhysicalDeviceFragmentDensityMapPropertiesEXT1PhysicalDeviceFragmentShaderBarycentricFeaturesNV0PhysicalDeviceFragmentShaderInterlockFeaturesEXT0PhysicalDeviceFragmentShadingRateEnumsFeaturesNV2PhysicalDeviceFragmentShadingRateEnumsPropertiesNV,PhysicalDeviceFragmentShadingRateFeaturesKHR$PhysicalDeviceFragmentShadingRateKHR.PhysicalDeviceFragmentShadingRatePropertiesKHRPhysicalDeviceGroupProperties$PhysicalDeviceHostQueryResetFeaturesPhysicalDeviceIDProperties+PhysicalDeviceImageDrmFormatModifierInfoEXTPhysicalDeviceImageFormatInfo2(PhysicalDeviceImageRobustnessFeaturesEXT)PhysicalDeviceImageViewImageFormatInfoEXT*PhysicalDeviceImagelessFramebufferFeatures'PhysicalDeviceIndexTypeUint8FeaturesEXT+PhysicalDeviceInlineUniformBlockFeaturesEXT-PhysicalDeviceInlineUniformBlockPropertiesEXT*PhysicalDeviceLineRasterizationFeaturesEXT,PhysicalDeviceLineRasterizationPropertiesEXT$PhysicalDeviceMaintenance3Properties'PhysicalDeviceMemoryBudgetPropertiesEXT'PhysicalDeviceMemoryPriorityFeaturesEXTPhysicalDeviceMemoryProperties2"PhysicalDeviceMeshShaderFeaturesNV$PhysicalDeviceMeshShaderPropertiesNVPhysicalDeviceMultiviewFeatures5PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX!PhysicalDeviceMultiviewProperties0PhysicalDeviceMutableDescriptorTypeFeaturesVALVE%PhysicalDevicePCIBusInfoPropertiesEXT)PhysicalDevicePerformanceQueryFeaturesKHR+PhysicalDevicePerformanceQueryPropertiesKHR5PhysicalDevicePipelineCreationCacheControlFeaturesEXT5PhysicalDevicePipelineExecutablePropertiesFeaturesKHR*PhysicalDevicePortabilitySubsetFeaturesKHR,PhysicalDevicePortabilitySubsetPropertiesKHR$PhysicalDevicePrivateDataFeaturesEXTPhysicalDeviceProperties2%PhysicalDeviceProtectedMemoryFeatures'PhysicalDeviceProtectedMemoryProperties)PhysicalDevicePushDescriptorPropertiesKHR!PhysicalDeviceRayQueryFeaturesKHR+PhysicalDeviceRayTracingPipelineFeaturesKHR-PhysicalDeviceRayTracingPipelinePropertiesKHR$PhysicalDeviceRayTracingPropertiesNV2PhysicalDeviceRepresentativeFragmentTestFeaturesNV$PhysicalDeviceRobustness2FeaturesEXT&PhysicalDeviceRobustness2PropertiesEXT*PhysicalDeviceSampleLocationsPropertiesEXT+PhysicalDeviceSamplerFilterMinmaxProperties,PhysicalDeviceSamplerYcbcrConversionFeatures'PhysicalDeviceScalarBlockLayoutFeatures1PhysicalDeviceSeparateDepthStencilLayoutsFeatures*PhysicalDeviceShaderAtomicFloatFeaturesEXT'PhysicalDeviceShaderAtomicInt64Features$PhysicalDeviceShaderClockFeaturesKHR&PhysicalDeviceShaderCoreProperties2AMD%PhysicalDeviceShaderCorePropertiesAMD7PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT*PhysicalDeviceShaderDrawParametersFeatures'PhysicalDeviceShaderFloat16Int8Features/PhysicalDeviceShaderImageAtomicInt64FeaturesEXT,PhysicalDeviceShaderImageFootprintFeaturesNV2PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL(PhysicalDeviceShaderSMBuiltinsFeaturesNV*PhysicalDeviceShaderSMBuiltinsPropertiesNV1PhysicalDeviceShaderSubgroupExtendedTypesFeatures2PhysicalDeviceShaderTerminateInvocationFeaturesKHR(PhysicalDeviceShadingRateImageFeaturesNV*PhysicalDeviceShadingRateImagePropertiesNV$PhysicalDeviceSparseImageFormatInfo2 PhysicalDeviceSubgroupProperties,PhysicalDeviceSubgroupSizeControlFeaturesEXT.PhysicalDeviceSubgroupSizeControlPropertiesEXTPhysicalDeviceSurfaceInfo2KHR)PhysicalDeviceSynchronization2FeaturesKHR-PhysicalDeviceTexelBufferAlignmentFeaturesEXT/PhysicalDeviceTexelBufferAlignmentPropertiesEXT2PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT'PhysicalDeviceTimelineSemaphoreFeatures)PhysicalDeviceTimelineSemaphorePropertiesPhysicalDeviceToolPropertiesEXT*PhysicalDeviceTransformFeedbackFeaturesEXT,PhysicalDeviceTransformFeedbackPropertiesEXT1PhysicalDeviceUniformBufferStandardLayoutFeatures&PhysicalDeviceVariablePointersFeatures/PhysicalDeviceVertexAttributeDivisorFeaturesEXT1PhysicalDeviceVertexAttributeDivisorPropertiesEXTPhysicalDeviceVulkan11FeaturesPhysicalDeviceVulkan12Features'PhysicalDeviceVulkanMemoryModelFeatures6PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR)PhysicalDeviceYcbcrImageArraysFeaturesEXT6PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHRPipelineCacheCreateInfo,PipelineColorBlendAdvancedStateCreateInfoEXT!PipelineColorBlendStateCreateInfo$PipelineCompilerControlCreateInfoAMD+PipelineCoverageModulationStateCreateInfoNV*PipelineCoverageReductionStateCreateInfoNV(PipelineCoverageToColorStateCreateInfoNV%PipelineCreationFeedbackCreateInfoEXT#PipelineDepthStencilStateCreateInfo*PipelineDiscardRectangleStateCreateInfoEXTPipelineDynamicStateCreateInfoPipelineExecutableInfoKHR+PipelineExecutableInternalRepresentationKHRPipelineExecutablePropertiesKHRPipelineExecutableStatisticKHR0PipelineFragmentShadingRateEnumStateCreateInfoNV-PipelineFragmentShadingRateStateCreateInfoKHRPipelineInfoKHR$PipelineInputAssemblyStateCreateInfoPipelineLayoutCreateInfoPipelineLibraryCreateInfoKHR"PipelineMultisampleStateCreateInfo3PipelineRasterizationConservativeStateCreateInfoEXT0PipelineRasterizationDepthClipStateCreateInfoEXT+PipelineRasterizationLineStateCreateInfoEXT$PipelineRasterizationStateCreateInfo/PipelineRasterizationStateRasterizationOrderAMD-PipelineRasterizationStateStreamCreateInfoEXT3PipelineRepresentativeFragmentTestStateCreateInfoNV)PipelineSampleLocationsStateCreateInfoEXTPipelineShaderStageCreateInfo4PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT#PipelineTessellationStateCreateInfo,PipelineVertexInputDivisorStateCreateInfoEXT"PipelineVertexInputStateCreateInfo2PipelineViewportCoarseSampleOrderStateCreateInfoNV1PipelineViewportExclusiveScissorStateCreateInfoNV1PipelineViewportShadingRateImageStateCreateInfoNVPipelineViewportStateCreateInfo(PipelineViewportSwizzleStateCreateInfoNV)PipelineViewportWScalingStateCreateInfoNVPresentFrameTokenGGPPresentInfoKHRPresentRegionsKHRPresentTimesInfoGOOGLEPrivateDataSlotCreateInfoEXTProtectedSubmitInfoQueryPoolCreateInfo!QueryPoolPerformanceCreateInfoKHR(QueryPoolPerformanceQueryCreateInfoINTEL"QueueFamilyCheckpointProperties2NV!QueueFamilyCheckpointPropertiesNVQueueFamilyProperties2RayTracingPipelineCreateInfoKHRRayTracingPipelineCreateInfoNV(RayTracingPipelineInterfaceCreateInfoKHR"RayTracingShaderGroupCreateInfoKHR!RayTracingShaderGroupCreateInfoNVRenderPassAttachmentBeginInfoRenderPassBeginInfoRenderPassCreateInfoRenderPassCreateInfo2)RenderPassFragmentDensityMapCreateInfoEXT)RenderPassInputAttachmentAspectCreateInfoRenderPassMultiviewCreateInfo%RenderPassSampleLocationsBeginInfoEXT RenderPassTransformBeginInfoQCOMResolveImageInfo2KHRSampleLocationsInfoEXTSamplerCreateInfo%SamplerCustomBorderColorCreateInfoEXT+SamplerYcbcrConversionImageFormatPropertiesSamplerYcbcrConversionInfoScreenSurfaceCreateInfoQNXSemaphoreCreateInfoSemaphoreGetFdInfoKHRSemaphoreGetWin32HandleInfoKHR#SemaphoreGetZirconHandleInfoFUCHSIASemaphoreSignalInfoSemaphoreSubmitInfoKHRSemaphoreWaitInfoShaderModuleCreateInfo(ShaderModuleValidationCacheCreateInfoEXT#SharedPresentSurfaceCapabilitiesKHRSparseImageFormatProperties2SparseImageMemoryRequirements2$StreamDescriptorSurfaceCreateInfoGGP SubmitInfoSubmitInfo2KHRSubpassDependency2SubpassDescription2%SubpassDescriptionDepthStencilResolveSubpassEndInfoSurfaceCapabilities2EXTSurfaceCapabilities2KHR)SurfaceCapabilitiesFullScreenExclusiveEXTSurfaceFormat2KHR!SurfaceFullScreenExclusiveInfoEXT&SurfaceFullScreenExclusiveWin32InfoEXTSurfaceProtectedCapabilitiesKHRSwapchainCounterCreateInfoEXTSwapchainCreateInfoKHR&SwapchainDisplayNativeHdrCreateInfoAMD#TextureLODGatherFormatPropertiesAMDTimelineSemaphoreSubmitInfoValidationCacheCreateInfoEXTValidationFeaturesEXTValidationFlagsEXTViSurfaceCreateInfoNNWaylandSurfaceCreateInfoKHR$Win32KeyedMutexAcquireReleaseInfoKHR#Win32KeyedMutexAcquireReleaseInfoNVWin32SurfaceCreateInfoKHRWriteDescriptorSet*WriteDescriptorSetAccelerationStructureKHR)WriteDescriptorSetAccelerationStructureNV'WriteDescriptorSetInlineUniformBlockEXTXcbSurfaceCreateInfoKHRXlibSurfaceCreateInfoKHRPhysicalDeviceLimitsPhysicalDeviceMemoryPropertiesStencilOpStatecmdSetStencilOpEXTIMAGE_LAYOUT_UNDEFINEDIMAGE_LAYOUT_PREINITIALIZEDendCommandBuffer0FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT BufferCopyBufferImageCopyDescriptorBufferInfoImageFormatPropertiesIndirectCommandsStreamNV MemoryHeapMemoryRequirementsSparseImageMemoryBindSparseImageMemoryRequirementsSparseMemoryBindStridedDeviceAddressRegionKHRSubresourceLayoutbindBufferMemorybindImageMemorycmdBeginTransformFeedbackEXTcmdBindIndexBuffer"cmdBindTransformFeedbackBuffersEXTcmdBindVertexBufferscmdBindVertexBuffers2EXTcmdBuildAccelerationStructureNVcmdCopyQueryPoolResultscmdDispatchIndirectcmdDrawIndexedIndirectcmdDrawIndexedIndirectCountcmdDrawIndexedIndirectCountAMDcmdDrawIndexedIndirectCountKHRcmdDrawIndirectcmdDrawIndirectByteCountEXTcmdDrawIndirectCountcmdDrawIndirectCountAMDcmdDrawIndirectCountKHRcmdDrawMeshTasksIndirectCountNVcmdDrawMeshTasksIndirectNVcmdEndTransformFeedbackEXT cmdFillBuffercmdTraceRaysNVcmdUpdateBuffercmdWriteBufferMarker2AMDcmdWriteBufferMarkerAMDgetDeviceMemoryCommitmentgetQueryPoolResults mapMemory BindIndexBufferIndirectCommandNV!BindVertexBufferIndirectCommandNVDeviceOrHostAddressConstKHRDeviceOrHostAddressKHR)cmdBuildAccelerationStructuresIndirectKHRcmdTraceRaysIndirectKHRDisplayPropertiesKHRPerformanceValueDataINTELPhysicalDeviceFeaturesPhysicalDeviceSparseProperties!PipelineColorBlendAttachmentState#PipelineExecutableStatisticValueKHRcmdExecuteGeneratedCommandsNVcmdSetDepthBoundsTestEnableEXTcmdSetDepthTestEnableEXTcmdSetDepthWriteEnableEXTcmdSetStencilTestEnableEXT"getPhysicalDeviceSurfaceSupportKHRsetLocalDimmingAMD waitForFences ClearRectcmdSetDiscardRectangleEXTcmdSetExclusiveScissorNV cmdSetScissorcmdSetScissorWithCountEXT%getPhysicalDevicePresentRectanglesKHR ImageBlit ImageCopy ImageResolveDisplayPlaneCapabilitiesKHR RectLayerKHRQueueFamilyPropertiesSparseImageFormatPropertiesDisplayModeParametersKHRSurfaceCapabilitiesKHRcmdSetFragmentShadingRateKHRgetRenderAreaGranularityColorComponentFlagsColorComponentFlagBitsFALSEAttachmentDescriptionTRUE#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_KHR ImageViewImage$IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BITcreateSwapchainKHRVERTEX_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_BITPipelineLayout7IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT SampleMask0ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT ACCESS_COLOR_ATTACHMENT_READ_BIT FORMAT_A4R4G4B4_UNORM_PACK16_EXTFormatFeatureFlagBits FORMAT_A4B4G4R4_UNORM_PACK16_EXT"updateDescriptorSetWithTemplateKHRupdateDescriptorSetsVulkan.Core12.Enums&BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT#getDeviceMemoryOpaqueCaptureAddress createFence#ExternalSemaphoreHandleTypeFlagBitsgetMemoryFdPropertiesKHR!getMemoryHostPointerPropertiesEXT!getMemoryWin32HandlePropertiesKHR&getMemoryZirconHandlePropertiesFUCHSIAAHardwareBuffer?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(writeAccelerationStructuresPropertiesKHRcmdSetPrimitiveTopologyEXTPipelineStageFlags2KHRcmdWriteTimestampcmdCopyAccelerationStructureNV!cmdBuildAccelerationStructuresKHRcmdCopyAccelerationStructureKHR'cmdCopyAccelerationStructureToMemoryKHR'cmdCopyMemoryToAccelerationStructureKHRcmdTraceRaysKHR cmdPreprocessGeneratedCommandsNV7PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR AccessFlagscmdBlitImage2KHR cmdBlitImagecmdResolveImage2KHRcmdResolveImagecmdClearAttachmentsPIPELINE_CREATE_DISPATCH_BASEcmdDispatchBasecompileDeferredNV"getPipelineExecutableStatisticsKHR/getPipelineExecutableInternalRepresentationsKHRPipelinePIPELINE_COMPILE_REQUIRED_EXTcreatePipelineCachegetPipelineCacheDataSubpassDescriptioncmdBindDescriptorSetscmdBindPipelinecmdBindPipelineShaderGroupNVcmdPushDescriptorSetKHRPhysicalDevicePropertiesPhysicalDeviceQueue Semaphore CommandBufferFence DeviceMemoryBufferEvent QueryPool BufferView ShaderModule RenderPassDescriptorSetLayoutSamplerDescriptorPool DescriptorSet Framebuffer CommandPoolSamplerYcbcrConversionDescriptorUpdateTemplate SurfaceKHR SwapchainKHR DisplayKHRDisplayModeKHRDebugReportCallbackEXTIndirectCommandsLayoutNVDebugUtilsMessengerEXTAccelerationStructureNVAccelerationStructureKHRPerformanceConfigurationINTELDeferredOperationKHRPrivateDataSlotEXTgetPrivateDataEXTsetPrivateDataEXTflushMappedMemoryRangesinvalidateMappedMemoryRangesMEMORY_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&getImageDrmFormatModifierPropertiesEXTDescriptorImageInfoAttachmentReferencecmdBindShadingRateImageNVcmdClearColorImagecmdClearDepthStencilImagecmdCopyBufferToImage cmdCopyImagecmdCopyImageToBufferqueuePresentKHRacquireNextImageKHR(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$cmdSetRayTracingPipelineStackSizeKHR"cmdSetViewportShadingRatePaletteNVcmdSetCoarseSampleOrderNVcmdSetFragmentShadingRateEnumNVcmdSetLineStippleEXTcmdSetCullModeEXTcmdSetViewportWithCountEXTcmdSetDepthCompareOpEXTcmdSetStencilReferencecmdSetStencilWriteMaskcmdSetStencilCompareMaskcmdSetDepthBoundscmdSetBlendConstantscmdSetDepthBiascmdSetLineWidthcmdSetViewportDescriptorPoolSizeDescriptorUpdateTemplateEntryMutableDescriptorTypeListVALVEDESCRIPTOR_TYPE_MUTABLE_VALVEDESCRIPTOR_TYPE_UNIFORM_BUFFERDESCRIPTOR_TYPE_STORAGE_BUFFER5DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE*DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE&DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC&DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BITresetDescriptorPoolallocateDescriptorSetsfreeDescriptorSetsDESCRIPTOR_TYPE_SAMPLER*DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR)DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV/SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVXComponentMappingresetCommandBufferbeginCommandBuffergetBufferDeviceAddresscmdBeginConditionalRenderingEXT)ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT!ACCESS_COLOR_ATTACHMENT_WRITE_BIT(ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BITAccessFlags2KHR PIPELINE_STAGE_DRAW_INDIRECT_BIT3PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHRPIPELINE_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_EXT4ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR)PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXTVulkan.Core10.EnumsallocateMemorycreateAccelerationStructureKHRcreateAccelerationStructureNVcreateAndroidSurfaceKHR createBuffercreateBufferViewcreateCommandPoolcreateDebugReportCallbackEXTcreateDebugUtilsMessengerEXTcreateDeferredOperationKHRcreateDescriptorPoolcreateDescriptorSetLayoutcreateDescriptorUpdateTemplate!createDescriptorUpdateTemplateKHRcreateDirectFBSurfaceEXTcreateDisplayModeKHRcreateDisplayPlaneSurfaceKHR createEventcreateFramebuffercreateHeadlessSurfaceEXTcreateIOSSurfaceMVK createImagecreateImagePipeSurfaceFUCHSIAcreateIndirectCommandsLayoutNVcreateInstancecreateMacOSSurfaceMVKcreateMetalSurfaceEXTcreatePipelineLayoutcreatePrivateDataSlotEXTcreateQueryPoolcreateRenderPasscreateRenderPass2createRenderPass2KHR createSamplercreateSamplerYcbcrConversioncreateSamplerYcbcrConversionKHRcreateScreenSurfaceQNXcreateSemaphorecreateShaderModulecreateSharedSwapchainsKHR createStreamDescriptorSurfaceGGPcreateValidationCacheEXTcreateViSurfaceNNcreateWaylandSurfaceKHRcreateWin32SurfaceKHRcreateXcbSurfaceKHRcreateXlibSurfaceKHRdestroyAccelerationStructureKHRdestroyAccelerationStructureNV destroyBufferdestroyBufferViewdestroyCommandPooldestroyDebugReportCallbackEXTdestroyDebugUtilsMessengerEXTdestroyDeferredOperationKHRdestroyDescriptorPooldestroyDescriptorSetLayoutdestroyDescriptorUpdateTemplate"destroyDescriptorUpdateTemplateKHR destroyDevice destroyEvent destroyFencedestroyFramebuffer destroyImagedestroyImageViewdestroyIndirectCommandsLayoutNVdestroyPipelinedestroyPipelineCachedestroyPipelineLayoutdestroyPrivateDataSlotEXTdestroyQueryPooldestroyRenderPassdestroySamplerdestroySamplerYcbcrConversion destroySamplerYcbcrConversionKHRdestroySemaphoredestroyShaderModuledestroySurfaceKHRdestroySwapchainKHRdestroyValidationCacheEXT freeMemoryregisterDeviceEventEXTregisterDisplayEventEXT ExternalMemoryHandleTypeFlagBitsgetSemaphoreCounterValuegetSemaphoreCounterValueKHRgetDeviceQueuegetDeviceQueue2getQueueCheckpointData2NVgetQueueCheckpointDataNVqueueBeginDebugUtilsLabelEXTqueueBindSparsequeueEndDebugUtilsLabelEXTqueueInsertDebugUtilsLabelEXT%queueSetPerformanceConfigurationINTEL queueSubmitqueueSubmit2KHR queueWaitIdle cmdBeginQuerycmdBeginQueryIndexedEXT cmdEndQuerycmdEndQueryIndexedEXTcmdResetQueryPoolcmdWriteTimestamp2KHRresetQueryPoolresetQueryPoolEXTcmdPushConstants#cmdPushDescriptorSetWithTemplateKHRmergePipelineCaches/getRayTracingCaptureReplayShaderGroupHandlesKHR"getRayTracingShaderGroupHandlesKHR!getRayTracingShaderGroupHandlesNV$getRayTracingShaderGroupStackSizeKHRacquireWinrtDisplayNVacquireXlibDisplayEXT"enumerateDeviceExtensionPropertiesenumerateDeviceLayerProperties=enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHRenumeratePhysicalDevicesgetDisplayModeProperties2KHRgetDisplayModePropertiesKHRgetDisplayPlaneCapabilities2KHRgetDisplayPlaneCapabilitiesKHR#getDisplayPlaneSupportedDisplaysKHR,getPhysicalDeviceCalibrateableTimeDomainsEXT.getPhysicalDeviceCooperativeMatrixPropertiesNV/getPhysicalDeviceDirectFBPresentationSupportEXT+getPhysicalDeviceDisplayPlaneProperties2KHR*getPhysicalDeviceDisplayPlanePropertiesKHR&getPhysicalDeviceDisplayProperties2KHR%getPhysicalDeviceDisplayPropertiesKHR)getPhysicalDeviceExternalBufferProperties,getPhysicalDeviceExternalBufferPropertiesKHR(getPhysicalDeviceExternalFenceProperties+getPhysicalDeviceExternalFencePropertiesKHR,getPhysicalDeviceExternalSemaphoreProperties/getPhysicalDeviceExternalSemaphorePropertiesKHRgetPhysicalDeviceFeaturesgetPhysicalDeviceFeatures2getPhysicalDeviceFeatures2KHR(getPhysicalDeviceFragmentShadingRatesKHR*getPhysicalDeviceImageFormatProperties2KHR!getPhysicalDeviceMemoryProperties"getPhysicalDeviceMemoryProperties2%getPhysicalDeviceMemoryProperties2KHRgetPhysicalDeviceProperties2getPhysicalDeviceProperties2KHR5getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR&getPhysicalDeviceQueueFamilyProperties'getPhysicalDeviceQueueFamilyProperties2*getPhysicalDeviceQueueFamilyProperties2KHR-getPhysicalDeviceScreenPresentationSupportQNX-getPhysicalDeviceSparseImageFormatProperties20getPhysicalDeviceSparseImageFormatProperties2KHR?getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(getPhysicalDeviceSurfaceCapabilities2EXT(getPhysicalDeviceSurfaceCapabilities2KHR'getPhysicalDeviceSurfaceCapabilitiesKHR#getPhysicalDeviceSurfaceFormats2KHR"getPhysicalDeviceSurfaceFormatsKHR(getPhysicalDeviceSurfacePresentModes2EXT'getPhysicalDeviceSurfacePresentModesKHR"getPhysicalDeviceToolPropertiesEXT.getPhysicalDeviceWaylandPresentationSupportKHR,getPhysicalDeviceWin32PresentationSupportKHR*getPhysicalDeviceXcbPresentationSupportKHR+getPhysicalDeviceXlibPresentationSupportKHRgetRandROutputDisplayEXTgetWinrtDisplayNVreleaseDisplayEXTdebugReportMessageEXTenumeratePhysicalDeviceGroups enumeratePhysicalDeviceGroupsKHRsubmitDebugUtilsMessageEXTgetImageViewAddressNVXSparseImageMemoryBindInfoSparseImageOpaqueMemoryBindInfogetImageMemoryRequirements getImageSparseMemoryRequirementsgetSwapchainImagesKHRgetFenceStatus resetFences cmdResetEventcmdResetEvent2KHR cmdSetEventcmdSetEvent2KHR cmdWaitEventscmdWaitEvents2KHRgetEventStatus resetEventsetEvent!acquireFullScreenExclusiveModeEXTacquireNextImage2KHR$acquirePerformanceConfigurationINTELacquireProfilingLockKHRallocateCommandBuffers!bindAccelerationStructureMemoryNVbindBufferMemory2bindBufferMemory2KHRbindImageMemory2KHRbuildAccelerationStructuresKHRcopyAccelerationStructureKHR$copyAccelerationStructureToMemoryKHR$copyMemoryToAccelerationStructureKHRdebugMarkerSetObjectNameEXTdebugMarkerSetObjectTagEXTdeferredOperationJoinKHRdeviceWaitIdledisplayPowerControlEXTfreeCommandBuffers%getAccelerationStructureBuildSizesKHR(getAccelerationStructureDeviceAddressKHR getAccelerationStructureHandleNV,getAccelerationStructureMemoryRequirementsNV)getAndroidHardwareBufferPropertiesANDROIDgetBufferDeviceAddressEXTgetBufferDeviceAddressKHRgetBufferMemoryRequirementsgetBufferMemoryRequirements2getBufferMemoryRequirements2KHRgetBufferOpaqueCaptureAddress getBufferOpaqueCaptureAddressKHRgetCalibratedTimestampsEXT%getDeferredOperationMaxConcurrencyKHRgetDeferredOperationResultKHRgetDescriptorSetLayoutSupport getDescriptorSetLayoutSupportKHR.getDeviceAccelerationStructureCompatibilityKHR getDeviceGroupPeerMemoryFeatures#getDeviceGroupPeerMemoryFeaturesKHR$getDeviceGroupPresentCapabilitiesKHR%getDeviceGroupSurfacePresentModes2EXT$getDeviceGroupSurfacePresentModesKHR&getDeviceMemoryOpaqueCaptureAddressKHR getFenceFdKHRgetFenceWin32HandleKHR(getGeneratedCommandsMemoryRequirementsNVgetImageMemoryRequirements2getImageMemoryRequirements2KHR!getImageSparseMemoryRequirements2$getImageSparseMemoryRequirements2KHRgetImageViewHandleNVX%getMemoryAndroidHardwareBufferANDROIDgetMemoryFdKHRgetMemoryWin32HandleKHRgetMemoryWin32HandleNVgetMemoryZirconHandleFUCHSIAgetPastPresentationTimingGOOGLEgetPerformanceParameterINTEL"getPipelineExecutablePropertiesKHRgetRefreshCycleDurationGOOGLEgetSemaphoreFdKHRgetSemaphoreWin32HandleKHRgetSemaphoreZirconHandleFUCHSIAgetSwapchainCounterEXTgetSwapchainStatusKHRgetValidationCacheDataEXTimportFenceFdKHRimportFenceWin32HandleKHRimportSemaphoreFdKHRimportSemaphoreWin32HandleKHR"importSemaphoreZirconHandleFUCHSIAinitializePerformanceApiINTELmergeValidationCachesEXT!releaseFullScreenExclusiveModeEXT$releasePerformanceConfigurationINTELreleaseProfilingLockKHRresetCommandPoolsetDebugUtilsObjectNameEXTsetDebugUtilsObjectTagEXTsetHdrMetadataEXTsignalSemaphoresignalSemaphoreKHRuninitializePerformanceApiINTEL unmapMemoryupdateDescriptorSetWithTemplatewaitSemaphoreswaitSemaphoresKHRcmdBeginDebugUtilsLabelEXTcmdBeginRenderPass2cmdBeginRenderPass2KHR cmdCopyBuffercmdCopyBuffer2KHRcmdCopyBufferToImage2KHRcmdCopyImage2KHRcmdCopyImageToBuffer2KHRcmdDebugMarkerBeginEXTcmdDebugMarkerEndEXTcmdDebugMarkerInsertEXT cmdDispatchcmdDispatchBaseKHRcmdDrawcmdDrawIndexedcmdDrawMeshTasksNVcmdEndConditionalRenderingEXTcmdEndDebugUtilsLabelEXTcmdEndRenderPass2cmdEndRenderPass2KHRcmdInsertDebugUtilsLabelEXTcmdNextSubpass2cmdNextSubpass2KHRcmdPipelineBarriercmdPipelineBarrier2KHRcmdSetCheckpointNVcmdSetDeviceMaskcmdSetDeviceMaskKHRcmdSetPerformanceMarkerINTELcmdSetPerformanceOverrideINTEL"cmdSetPerformanceStreamMarkerINTELSparseBufferMemoryBindInfo-DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NVSampleCountFlags%IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV"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_ARRAY!IMAGE_CREATE_SPARSE_RESIDENCY_BIT"BUFFER_CREATE_SPARSE_RESIDENCY_BITPIPELINE_BIND_POINT_GRAPHICS6IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT%DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT$DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT#DYNAMIC_STATE_VIEWPORT_W_SCALING_NV.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV$DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT)FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT BUFFER_USAGE_INDIRECT_BUFFER_BITIMAGE_CREATE_SPARSE_BINDING_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_TIMESTAMP4QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR8QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR3QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NVQUERY_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_BIT2EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIADisplayModePropertiesKHRDisplayPlanePropertiesKHR 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_INTEL7EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA UUID_SIZEOBJECT_TYPE_UNKNOWN(ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR/BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT3BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR;FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHRFormatPropertiesINDEX_TYPE_UINT16INDEX_TYPE_UINT32INDEX_TYPE_NONE_KHR*ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR+ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHRACCESS_TRANSFER_READ_BITACCESS_SHADER_READ_BITABUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHRBUFFER_USAGE_STORAGE_BUFFER_BIT ACCESS_INDIRECT_COMMAND_READ_BIT4DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHRPipelineCacheHeaderVersion!PIPELINE_CACHE_HEADER_VERSION_ONEBUFFER_CREATE_PROTECTED_BITMEMORY_PROPERTY_PROTECTED_BIT"MEMORY_ALLOCATE_DEVICE_ADDRESS_BITIMAGE_CREATE_PROTECTED_BIT%BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT%BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT'FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT'FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT$IMAGE_TILING_DRM_FORMAT_MODIFIER_EXTPFORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT'SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGELOD_CLAMP_NONEIMAGE_VIEW_TYPE_1DCOMMAND_BUFFER_LEVEL_SECONDARY(COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT)COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BITSHARING_MODE_EXCLUSIVEPerformanceCounterResultKHR FORMAT_FEATURE_VERTEX_BUFFER_BITATTACHMENT_UNUSED,IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL7IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL7IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMALViewportWScalingNVShadingRatePaletteNV%LINE_RASTERIZATION_MODE_BRESENHAM_EXT.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT*FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR-FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR+FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV/FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV0FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV0FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV0FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV1FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV'FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NVPushConstantRange(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_KHR1DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHRPIPELINE_CREATE_DERIVATIVE_BITFPIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR2PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR;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_NO_NULL_INTERSECTION_SHADERS_BIT_KHR8PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHRPipelineCreateFlagBits)BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHRGEOMETRY_TYPE_TRIANGLES_KHRGEOMETRY_TYPE_AABBS_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$IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL'IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL&IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL-IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL%IMAGE_LAYOUT_COLOR_ATTACHMENT_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 FORMAT_FEATURE_STORAGE_IMAGE_BITREMAINING_MIP_LEVELSREMAINING_ARRAY_LAYERS4IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR7FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR!IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL!IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL#IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR"IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR9IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHRDependencyFlagBitsAccessFlagBits EVENT_CREATE_DEVICE_ONLY_BIT_KHRSubpassDependencyDEPENDENCY_VIEW_LOCAL_BITSemaphoreTypeKHRSEMAPHORE_TYPE_BINARY_KHR*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_LINEARComponentSwizzleIMAGE_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_UNORMOffset3DenumerateInstanceVersionVendorIdAPI_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_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_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_BITFORMAT_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_BITERROR_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_BY_REGION_BITRenderPassCreateFlagBitsAttachmentDescriptionFlagBitsAttachmentReference2KHR)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.ExtensionsVulkan FromCStruct peekCStruct ToCStruct withCStruct pokeCStructwithZeroCStructpokeZeroCStruct cStructSizecStructAlignmentChainExtendssExtends PokeChain PeekChain FixedArray'pokeFixedLengthNullTerminatedByteStringpokeFixedLengthByteString peekByteStringFromSizedVectorPtrcallocFixedArray lowerArrayPtradvancePtrBytesClearColorValueImageSubresourceLayersClearDepthStencilValueClearAttachment MemoryTypeCommandBufferResetFlagBitsCommandBufferResetFlagsCommandPoolResetFlagBitsCommandPoolResetFlags CompareOpCullModeFlagBits CullModeFlagsDependencyFlagsDescriptorPoolResetFlagsFilterImageCreateFlags ImageLayout ImageTiling ImageTypeImageUsageFlagsMemoryMapFlags ObjectTypePipelineBindPointPipelineStageFlagsPrimitiveTopologyQueryControlFlagBitsQueryControlFlagsQueryResultFlagBitsQueryResultFlags QueryTypeResultShaderStageFlagsStencilFaceFlagBitsStencilFaceFlags StencilOpSubpassContentsExtensionPropertiesPFN_vkVoidFunctionFN_vkVoidFunction DeviceSize DeviceAddressBool32Rect2DOffset2DExtent3DExtent2DQueue_TPhysicalDevice_T Instance_TDevice_TCommandBuffer_TImageSubresourceRangeLayerPropertiesViewportSpecializationMapEntrySpecializationInfoImageSubresourceCommandPoolTrimFlagsExternalMemoryHandleTypeFlagsPeerMemoryFeatureFlagBitsPeerMemoryFeatureFlagsInputAttachmentAspectReferenceConformanceVersionAMD_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 TimeDomainEXTDebugReportObjectTypeEXTDebugReportFlagBitsEXTDebugReportFlagsEXT DebugUtilsMessageTypeFlagBitsEXTDebugUtilsMessageTypeFlagsEXT$DebugUtilsMessageSeverityFlagBitsEXT!DebugUtilsMessageSeverityFlagsEXT+EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME)EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION IDirectFBSurfaceCounterFlagBitsEXTSurfaceCounterFlagsEXT*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 Zx_handle_t%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_VERSIONPerformanceParameterTypeINTELPerformanceValueINTELGeometryTypeKHRAccelerationStructureTypeKHR%BuildAccelerationStructureFlagBitsKHR"BuildAccelerationStructureFlagsKHRGeometryInstanceFlagBitsKHRGeometryInstanceFlagsKHRGeometryFlagBitsKHRGeometryFlagsKHR CopyAccelerationStructureModeKHR%AccelerationStructureCompatibilityKHR!AccelerationStructureBuildTypeKHRTransformMatrixKHR AccelerationStructureInstanceKHR&AccelerationStructureBuildRangeInfoKHRAabbPositionsKHR FragmentShadingRateCombinerOpKHRMemoryRequirements2KHRPresentRegionKHRRayTracingShaderGroupTypeKHRShaderGroupShaderKHRTraceRaysIndirectCommandKHR'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_VERSIONPresentModeKHR!DeviceGroupPresentModeFlagBitsKHRDeviceGroupPresentModeFlagsKHRPipelineStageFlagBits2KHR Wl_displayXcb_visualid_tXcb_connection_tVisualIDDisplaySetStateFlagsIndirectCommandNV BindShaderGroupIndirectCommandNV"ExternalMemoryHandleTypeFlagBitsNVExternalMemoryHandleTypeFlagsNVHANDLE NV_FILL_RECTANGLE_EXTENSION_NAMENV_FILL_RECTANGLE_SPEC_VERSIONFragmentShadingRateNV-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 Screen_window enumReadPrec enumShowsPrectraceAroundEvent::: 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_MOLTENVKDRIVER_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_POCLVENDOR_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_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR=STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_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_KHR6STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR3STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR=STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR=STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHRBSTRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHRDSTRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR5STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR:STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR@STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHRBSTRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR3STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR7STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR=STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR5STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_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_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_EXT>STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR@STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHRHSTRUCTURE_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_NV9STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV=STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_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_EXT?STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_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_QCOM@STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT:STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT5STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT8STRUCTURE_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_NV#STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR*STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR)STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR"STRUCTURE_TYPE_DEPENDENCY_INFO_KHR STRUCTURE_TYPE_SUBMIT_INFO_2_KHR(STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR-STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR=STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR6STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV#STRUCTURE_TYPE_CHECKPOINT_DATA_2_NVLSTRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHRHSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NVFSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NVGSTRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NVBSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXTDSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT/STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM$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/$fBitsPipelineViewportSwizzleStateCreateFlagsNV5$fFiniteBitsPipelineViewportSwizzleStateCreateFlagsNV$fEqViewportCoordinateSwizzleNV $fOrdViewportCoordinateSwizzleNV%$fStorableViewportCoordinateSwizzleNV!$fZeroViewportCoordinateSwizzleNV$fEqViewportSwizzleNV.$fShowPipelineViewportSwizzleStateCreateInfoNV$fShowViewportSwizzleNV$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.$fShowPhysicalDeviceShaderSMBuiltinsFeaturesNV0$fShowPhysicalDeviceShaderSMBuiltinsPropertiesNV(NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME&NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION@$sel:imageFootprint:PhysicalDeviceShaderImageFootprintFeaturesNV2$fZeroPhysicalDeviceShaderImageFootprintFeaturesNV6$fStorablePhysicalDeviceShaderImageFootprintFeaturesNV9$fFromCStructPhysicalDeviceShaderImageFootprintFeaturesNV7$fToCStructPhysicalDeviceShaderImageFootprintFeaturesNV0$fEqPhysicalDeviceShaderImageFootprintFeaturesNV2$fShowPhysicalDeviceShaderImageFootprintFeaturesNV.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$fShowPipelineRepresentativeFragmentTestStateCreateInfoNV8$fShowPhysicalDeviceRepresentativeFragmentTestFeaturesNV+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$fBitsPipelineCoverageModulationStateCreateFlagsNV8$fFiniteBitsPipelineCoverageModulationStateCreateFlagsNV$fEqCoverageModulationModeNV$fOrdCoverageModulationModeNV"$fStorableCoverageModulationModeNV$fZeroCoverageModulationModeNV1$fShowPipelineCoverageModulationStateCreateInfoNV-NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME+NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSIONP$sel:fragmentShaderBarycentric:PhysicalDeviceFragmentShaderBarycentricFeaturesNV7$fZeroPhysicalDeviceFragmentShaderBarycentricFeaturesNV;$fStorablePhysicalDeviceFragmentShaderBarycentricFeaturesNV>$fFromCStructPhysicalDeviceFragmentShaderBarycentricFeaturesNV<$fToCStructPhysicalDeviceFragmentShaderBarycentricFeaturesNV5$fEqPhysicalDeviceFragmentShaderBarycentricFeaturesNV7$fShowPhysicalDeviceFragmentShaderBarycentricFeaturesNV,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/$fBitsPipelineCoverageToColorStateCreateFlagsNV5$fFiniteBitsPipelineCoverageToColorStateCreateFlagsNV,$fEqPipelineCoverageToColorStateCreateInfoNV.$fShowPipelineCoverageToColorStateCreateInfoNV+NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME)NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION!DeviceDiagnosticsConfigFlagBitsNVDeviceDiagnosticsConfigFlagsNV.$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-$fFiniteBitsDeviceDiagnosticsConfigFlagBitsNV'$fEqDeviceDiagnosticsConfigCreateInfoNV)$fShowDeviceDiagnosticsConfigCreateInfoNV/$fShowPhysicalDeviceDiagnosticsConfigFeaturesNV5NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME3NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION^$sel:dedicatedAllocationImageAliasing:PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>$fZeroPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVB$fStorablePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVE$fFromCStructPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVC$fToCStructPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV<$fEqPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>$fShowPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV&NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME$NV_CORNER_SAMPLED_IMAGE_SPEC_VERSIONB$sel:cornerSampledImage:PhysicalDeviceCornerSampledImageFeaturesNV0$fZeroPhysicalDeviceCornerSampledImageFeaturesNV4$fStorablePhysicalDeviceCornerSampledImageFeaturesNV7$fFromCStructPhysicalDeviceCornerSampledImageFeaturesNV5$fToCStructPhysicalDeviceCornerSampledImageFeaturesNV.$fEqPhysicalDeviceCornerSampledImageFeaturesNV0$fShowPhysicalDeviceCornerSampledImageFeaturesNV,NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME*NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSIONQ$sel:computeDerivativeGroupQuads:PhysicalDeviceComputeShaderDerivativesFeaturesNVR$sel:computeDerivativeGroupLinear:PhysicalDeviceComputeShaderDerivativesFeaturesNV6$fZeroPhysicalDeviceComputeShaderDerivativesFeaturesNV:$fStorablePhysicalDeviceComputeShaderDerivativesFeaturesNV=$fFromCStructPhysicalDeviceComputeShaderDerivativesFeaturesNV;$fToCStructPhysicalDeviceComputeShaderDerivativesFeaturesNV4$fEqPhysicalDeviceComputeShaderDerivativesFeaturesNV6$fShowPhysicalDeviceComputeShaderDerivativesFeaturesNV0NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME.NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSIONW$sel:perViewPositionAllComponents:PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;$fZeroPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX?$fStorablePhysicalDeviceMultiviewPerViewAttributesPropertiesNVXB$fFromCStructPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX@$fToCStructPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX9$fEqPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;$fShowPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX3KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME1KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION_$sel:shaderZeroInitializeWorkgroupMemory:PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR<$fZeroPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR@$fStorablePhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHRC$fFromCStructPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHRA$fToCStructPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR:$fEqPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR<$fShowPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR3KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME1KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSIONY$sel:workgroupMemoryExplicitLayout:PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRj$sel:workgroupMemoryExplicitLayoutScalarBlockLayout:PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRc$sel:workgroupMemoryExplicitLayout8BitAccess:PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRd$sel:workgroupMemoryExplicitLayout16BitAccess:PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR<$fZeroPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR@$fStorablePhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRC$fFromCStructPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRA$fToCStructPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR:$fEqPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR<$fShowPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR1KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME/KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION6$sel:supportsProtected:SurfaceProtectedCapabilitiesKHR%$fZeroSurfaceProtectedCapabilitiesKHR)$fStorableSurfaceProtectedCapabilitiesKHR,$fFromCStructSurfaceProtectedCapabilitiesKHR*$fToCStructSurfaceProtectedCapabilitiesKHR#$fEqSurfaceProtectedCapabilitiesKHR%$fShowSurfaceProtectedCapabilitiesKHR.KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME,KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSIONQ$sel:shaderTerminateInvocation:PhysicalDeviceShaderTerminateInvocationFeaturesKHR8$fZeroPhysicalDeviceShaderTerminateInvocationFeaturesKHR<$fStorablePhysicalDeviceShaderTerminateInvocationFeaturesKHR?$fFromCStructPhysicalDeviceShaderTerminateInvocationFeaturesKHR=$fToCStructPhysicalDeviceShaderTerminateInvocationFeaturesKHR6$fEqPhysicalDeviceShaderTerminateInvocationFeaturesKHR8$fShowPhysicalDeviceShaderTerminateInvocationFeaturesKHRKHR_SHADER_CLOCK_EXTENSION_NAMEKHR_SHADER_CLOCK_SPEC_VERSION=$sel:shaderSubgroupClock:PhysicalDeviceShaderClockFeaturesKHR;$sel:shaderDeviceClock:PhysicalDeviceShaderClockFeaturesKHR*$fZeroPhysicalDeviceShaderClockFeaturesKHR.$fStorablePhysicalDeviceShaderClockFeaturesKHR1$fFromCStructPhysicalDeviceShaderClockFeaturesKHR/$fToCStructPhysicalDeviceShaderClockFeaturesKHR($fEqPhysicalDeviceShaderClockFeaturesKHR*$fShowPhysicalDeviceShaderClockFeaturesKHRKHR_RAY_QUERY_EXTENSION_NAMEKHR_RAY_QUERY_SPEC_VERSION/$sel:rayQuery:PhysicalDeviceRayQueryFeaturesKHR'$fZeroPhysicalDeviceRayQueryFeaturesKHR+$fStorablePhysicalDeviceRayQueryFeaturesKHR.$fFromCStructPhysicalDeviceRayQueryFeaturesKHR,$fToCStructPhysicalDeviceRayQueryFeaturesKHR%$fEqPhysicalDeviceRayQueryFeaturesKHR'$fShowPhysicalDeviceRayQueryFeaturesKHR%KHR_PORTABILITY_SUBSET_EXTENSION_NAME#KHR_PORTABILITY_SUBSET_SPEC_VERSIONV$sel:minVertexInputBindingStrideAlignment:PhysicalDevicePortabilitySubsetPropertiesKHRN$sel:constantAlphaColorBlendFactors:PhysicalDevicePortabilitySubsetFeaturesKHR6$sel:events:PhysicalDevicePortabilitySubsetFeaturesKHRO$sel:imageViewFormatReinterpretation:PhysicalDevicePortabilitySubsetFeaturesKHRF$sel:imageViewFormatSwizzle:PhysicalDevicePortabilitySubsetFeaturesKHRD$sel:imageView2DOn3DImage:PhysicalDevicePortabilitySubsetFeaturesKHRE$sel:multisampleArrayImage:PhysicalDevicePortabilitySubsetFeaturesKHRI$sel:mutableComparisonSamplers:PhysicalDevicePortabilitySubsetFeaturesKHR=$sel:pointPolygons:PhysicalDevicePortabilitySubsetFeaturesKHRA$sel:samplerMipLodBias:PhysicalDevicePortabilitySubsetFeaturesKHRF$sel:separateStencilMaskRef:PhysicalDevicePortabilitySubsetFeaturesKHRV$sel:shaderSampleRateInterpolationFunctions:PhysicalDevicePortabilitySubsetFeaturesKHRD$sel:tessellationIsolines:PhysicalDevicePortabilitySubsetFeaturesKHRE$sel:tessellationPointMode:PhysicalDevicePortabilitySubsetFeaturesKHR<$sel:triangleFans:PhysicalDevicePortabilitySubsetFeaturesKHRQ$sel:vertexAttributeAccessBeyondStride:PhysicalDevicePortabilitySubsetFeaturesKHR0$fZeroPhysicalDevicePortabilitySubsetFeaturesKHR4$fStorablePhysicalDevicePortabilitySubsetFeaturesKHR7$fFromCStructPhysicalDevicePortabilitySubsetFeaturesKHR5$fToCStructPhysicalDevicePortabilitySubsetFeaturesKHR2$fZeroPhysicalDevicePortabilitySubsetPropertiesKHR6$fStorablePhysicalDevicePortabilitySubsetPropertiesKHR9$fFromCStructPhysicalDevicePortabilitySubsetPropertiesKHR7$fToCStructPhysicalDevicePortabilitySubsetPropertiesKHR.$fEqPhysicalDevicePortabilitySubsetFeaturesKHR0$fEqPhysicalDevicePortabilitySubsetPropertiesKHR2$fShowPhysicalDevicePortabilitySubsetPropertiesKHR0$fShowPhysicalDevicePortabilitySubsetFeaturesKHR&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$fStorableRectLayerKHR$fFromCStructRectLayerKHR$fToCStructRectLayerKHR$fZeroPresentRegionKHR$fFromCStructPresentRegionKHR$fToCStructPresentRegionKHR$fZeroPresentRegionsKHR$fFromCStructPresentRegionsKHR$fToCStructPresentRegionsKHR$fShowRectLayerKHR$fShowPresentRegionKHR$fShowPresentRegionsKHR/INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME-INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSIONO$sel:shaderIntegerFunctions2:PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL8$fZeroPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL<$fStorablePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL?$fFromCStructPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL=$fToCStructPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL6$fEqPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL8$fShowPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL%EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME#EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION?$sel:ycbcrImageArrays:PhysicalDeviceYcbcrImageArraysFeaturesEXT/$fZeroPhysicalDeviceYcbcrImageArraysFeaturesEXT3$fStorablePhysicalDeviceYcbcrImageArraysFeaturesEXT6$fFromCStructPhysicalDeviceYcbcrImageArraysFeaturesEXT4$fToCStructPhysicalDeviceYcbcrImageArraysFeaturesEXT-$fEqPhysicalDeviceYcbcrImageArraysFeaturesEXT/$fShowPhysicalDeviceYcbcrImageArraysFeaturesEXT+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$fShowPhysicalDeviceVertexAttributeDivisorFeaturesEXT7$fShowPhysicalDeviceVertexAttributeDivisorPropertiesEXT2$fShowPipelineVertexInputDivisorStateCreateInfoEXT-$fShowVertexInputBindingDivisorDescriptionEXT/EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME-EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSIONR$sel:textureCompressionASTC_HDR:PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT8$fZeroPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT<$fStorablePhysicalDeviceTextureCompressionASTCHDRFeaturesEXT?$fFromCStructPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT=$fToCStructPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT6$fEqPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT8$fShowPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT)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$fShowPhysicalDeviceTexelBufferAlignmentPropertiesEXT3$fShowPhysicalDeviceTexelBufferAlignmentFeaturesEXT,EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME*EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSIONL$sel:shaderImageInt64Atomics:PhysicalDeviceShaderImageAtomicInt64FeaturesEXTL$sel:sparseImageInt64Atomics:PhysicalDeviceShaderImageAtomicInt64FeaturesEXT5$fZeroPhysicalDeviceShaderImageAtomicInt64FeaturesEXT9$fStorablePhysicalDeviceShaderImageAtomicInt64FeaturesEXT<$fFromCStructPhysicalDeviceShaderImageAtomicInt64FeaturesEXT:$fToCStructPhysicalDeviceShaderImageAtomicInt64FeaturesEXT3$fEqPhysicalDeviceShaderImageAtomicInt64FeaturesEXT5$fShowPhysicalDeviceShaderImageAtomicInt64FeaturesEXT5EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME3EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION[$sel:shaderDemoteToHelperInvocation:PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT=$fZeroPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTA$fStorablePhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTD$fFromCStructPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTB$fToCStructPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;$fEqPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT=$fShowPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT&EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME$EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSIONJ$sel:shaderBufferFloat32Atomics:PhysicalDeviceShaderAtomicFloatFeaturesEXTL$sel:shaderBufferFloat32AtomicAdd:PhysicalDeviceShaderAtomicFloatFeaturesEXTJ$sel:shaderBufferFloat64Atomics:PhysicalDeviceShaderAtomicFloatFeaturesEXTL$sel:shaderBufferFloat64AtomicAdd:PhysicalDeviceShaderAtomicFloatFeaturesEXTJ$sel:shaderSharedFloat32Atomics:PhysicalDeviceShaderAtomicFloatFeaturesEXTL$sel:shaderSharedFloat32AtomicAdd:PhysicalDeviceShaderAtomicFloatFeaturesEXTJ$sel:shaderSharedFloat64Atomics:PhysicalDeviceShaderAtomicFloatFeaturesEXTL$sel:shaderSharedFloat64AtomicAdd:PhysicalDeviceShaderAtomicFloatFeaturesEXTI$sel:shaderImageFloat32Atomics:PhysicalDeviceShaderAtomicFloatFeaturesEXTK$sel:shaderImageFloat32AtomicAdd:PhysicalDeviceShaderAtomicFloatFeaturesEXTI$sel:sparseImageFloat32Atomics:PhysicalDeviceShaderAtomicFloatFeaturesEXTK$sel:sparseImageFloat32AtomicAdd:PhysicalDeviceShaderAtomicFloatFeaturesEXT0$fZeroPhysicalDeviceShaderAtomicFloatFeaturesEXT4$fStorablePhysicalDeviceShaderAtomicFloatFeaturesEXT7$fFromCStructPhysicalDeviceShaderAtomicFloatFeaturesEXT5$fToCStructPhysicalDeviceShaderAtomicFloatFeaturesEXT.$fEqPhysicalDeviceShaderAtomicFloatFeaturesEXT0$fShowPhysicalDeviceShaderAtomicFloatFeaturesEXTEXT_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*$fShowPhysicalDeviceRobustness2FeaturesEXT-EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME+EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION#PipelineCreationFeedbackFlagBitsEXT PipelineCreationFeedbackFlagsEXTC$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/$fFiniteBitsPipelineCreationFeedbackFlagBitsEXT$fEqPipelineCreationFeedbackEXT)$fEqPipelineCreationFeedbackCreateInfoEXT+$fShowPipelineCreationFeedbackCreateInfoEXT!$fShowPipelineCreationFeedbackEXT2EXT_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"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-$fShowPhysicalDeviceMemoryPriorityFeaturesEXT'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$fShowDescriptorPoolInlineUniformBlockCreateInfoEXT-$fShowWriteDescriptorSetInlineUniformBlockEXT3$fShowPhysicalDeviceInlineUniformBlockPropertiesEXT1$fShowPhysicalDeviceInlineUniformBlockFeaturesEXT#EXT_INDEX_TYPE_UINT8_EXTENSION_NAME!EXT_INDEX_TYPE_UINT8_SPEC_VERSION;$sel:indexTypeUint8:PhysicalDeviceIndexTypeUint8FeaturesEXT-$fZeroPhysicalDeviceIndexTypeUint8FeaturesEXT1$fStorablePhysicalDeviceIndexTypeUint8FeaturesEXT4$fFromCStructPhysicalDeviceIndexTypeUint8FeaturesEXT2$fToCStructPhysicalDeviceIndexTypeUint8FeaturesEXT+$fEqPhysicalDeviceIndexTypeUint8FeaturesEXT-$fShowPhysicalDeviceIndexTypeUint8FeaturesEXT#EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME!EXT_IMAGE_ROBUSTNESS_SPEC_VERSION?$sel:robustImageAccess:PhysicalDeviceImageRobustnessFeaturesEXT.$fZeroPhysicalDeviceImageRobustnessFeaturesEXT2$fStorablePhysicalDeviceImageRobustnessFeaturesEXT5$fFromCStructPhysicalDeviceImageRobustnessFeaturesEXT3$fToCStructPhysicalDeviceImageRobustnessFeaturesEXT,$fEqPhysicalDeviceImageRobustnessFeaturesEXT.$fShowPhysicalDeviceImageRobustnessFeaturesEXT,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$fShowPhysicalDeviceFragmentShaderInterlockFeaturesEXT)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$fShowPhysicalDeviceFragmentDensityMap2PropertiesEXT2$fShowPhysicalDeviceFragmentDensityMap2FeaturesEXT$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$fBitsPipelineRasterizationDepthClipStateCreateFlagsEXT=$fFiniteBitsPipelineRasterizationDepthClipStateCreateFlagsEXT4$fEqPipelineRasterizationDepthClipStateCreateInfoEXT6$fShowPipelineRasterizationDepthClipStateCreateInfoEXT.$fShowPhysicalDeviceDepthClipEnableFeaturesEXT-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@$fFiniteBitsPipelineRasterizationConservativeStateCreateFlagsEXT$$fEqConservativeRasterizationModeEXT%$fOrdConservativeRasterizationModeEXT*$fStorableConservativeRasterizationModeEXT&$fZeroConservativeRasterizationModeEXT7$fEqPipelineRasterizationConservativeStateCreateInfoEXT9$fShowPipelineRasterizationConservativeStateCreateInfoEXT:$fShowPhysicalDeviceConservativeRasterizationPropertiesEXT+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$fShowPipelineColorBlendAdvancedStateCreateInfoEXT7$fShowPhysicalDeviceBlendOperationAdvancedPropertiesEXT5$fShowPhysicalDeviceBlendOperationAdvancedFeaturesEXTEXT_4444_FORMATS_EXTENSION_NAMEEXT_4444_FORMATS_SPEC_VERSION8$sel:formatA4R4G4B4:PhysicalDevice4444FormatsFeaturesEXT8$sel:formatA4B4G4R4:PhysicalDevice4444FormatsFeaturesEXT*$fZeroPhysicalDevice4444FormatsFeaturesEXT.$fStorablePhysicalDevice4444FormatsFeaturesEXT1$fFromCStructPhysicalDevice4444FormatsFeaturesEXT/$fToCStructPhysicalDevice4444FormatsFeaturesEXT($fEqPhysicalDevice4444FormatsFeaturesEXT*$fShowPhysicalDevice4444FormatsFeaturesEXT*AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME(AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSIONH$sel:supportsTextureGatherLODBiasAMD:TextureLODGatherFormatPropertiesAMD)$fZeroTextureLODGatherFormatPropertiesAMD-$fStorableTextureLODGatherFormatPropertiesAMD0$fFromCStructTextureLODGatherFormatPropertiesAMD.$fToCStructTextureLODGatherFormatPropertiesAMD'$fEqTextureLODGatherFormatPropertiesAMD)$fShowTextureLODGatherFormatPropertiesAMD+AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME)AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSIONShaderCorePropertiesFlagBitsAMDShaderCorePropertiesFlagsAMD>$sel:shaderCoreFeatures:PhysicalDeviceShaderCoreProperties2AMDB$sel:activeComputeUnitCount:PhysicalDeviceShaderCoreProperties2AMD%$fReadShaderCorePropertiesFlagBitsAMD%$fShowShaderCorePropertiesFlagBitsAMD,$fZeroPhysicalDeviceShaderCoreProperties2AMD0$fStorablePhysicalDeviceShaderCoreProperties2AMD3$fFromCStructPhysicalDeviceShaderCoreProperties2AMD1$fToCStructPhysicalDeviceShaderCoreProperties2AMD#$fEqShaderCorePropertiesFlagBitsAMD$$fOrdShaderCorePropertiesFlagBitsAMD)$fStorableShaderCorePropertiesFlagBitsAMD%$fZeroShaderCorePropertiesFlagBitsAMD%$fBitsShaderCorePropertiesFlagBitsAMD+$fFiniteBitsShaderCorePropertiesFlagBitsAMD*$fEqPhysicalDeviceShaderCoreProperties2AMD,$fShowPhysicalDeviceShaderCoreProperties2AMD,AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME*AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION"PipelineCompilerControlFlagBitsAMDPipelineCompilerControlFlagsAMD>$sel:compilerControlFlags:PipelineCompilerControlCreateInfoAMD($fReadPipelineCompilerControlFlagBitsAMD($fShowPipelineCompilerControlFlagBitsAMD*$fZeroPipelineCompilerControlCreateInfoAMD.$fStorablePipelineCompilerControlCreateInfoAMD1$fFromCStructPipelineCompilerControlCreateInfoAMD/$fToCStructPipelineCompilerControlCreateInfoAMD&$fEqPipelineCompilerControlFlagBitsAMD'$fOrdPipelineCompilerControlFlagBitsAMD,$fStorablePipelineCompilerControlFlagBitsAMD($fZeroPipelineCompilerControlFlagBitsAMD($fBitsPipelineCompilerControlFlagBitsAMD.$fFiniteBitsPipelineCompilerControlFlagBitsAMD($fEqPipelineCompilerControlCreateInfoAMD*$fShowPipelineCompilerControlCreateInfoAMD)AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME'AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSIONA$sel:deviceCoherentMemory:PhysicalDeviceCoherentMemoryFeaturesAMD-$fZeroPhysicalDeviceCoherentMemoryFeaturesAMD1$fStorablePhysicalDeviceCoherentMemoryFeaturesAMD4$fFromCStructPhysicalDeviceCoherentMemoryFeaturesAMD2$fToCStructPhysicalDeviceCoherentMemoryFeaturesAMD+$fEqPhysicalDeviceCoherentMemoryFeaturesAMD-$fShowPhysicalDeviceCoherentMemoryFeaturesAMD>$sel:vulkanMemoryModel:PhysicalDeviceVulkanMemoryModelFeaturesI$sel:vulkanMemoryModelDeviceScope:PhysicalDeviceVulkanMemoryModelFeaturesZ$sel:vulkanMemoryModelAvailabilityVisibilityChains:PhysicalDeviceVulkanMemoryModelFeatures-$fZeroPhysicalDeviceVulkanMemoryModelFeatures1$fStorablePhysicalDeviceVulkanMemoryModelFeatures4$fFromCStructPhysicalDeviceVulkanMemoryModelFeatures2$fToCStructPhysicalDeviceVulkanMemoryModelFeatures+$fEqPhysicalDeviceVulkanMemoryModelFeatures-$fShowPhysicalDeviceVulkanMemoryModelFeatures&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$fShowPhysicalDeviceUniformBufferStandardLayoutFeatures1KHR_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$fShowPhysicalDeviceShaderSubgroupExtendedTypesFeatures1KHR_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(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'$fShowPhysicalDevice8BitStorageFeaturesKHR_8BIT_STORAGE_EXTENSION_NAMEKHR_8BIT_STORAGE_SPEC_VERSION$PhysicalDevice8BitStorageFeaturesKHR8STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR>$sel:scalarBlockLayout:PhysicalDeviceScalarBlockLayoutFeatures-$fZeroPhysicalDeviceScalarBlockLayoutFeatures1$fStorablePhysicalDeviceScalarBlockLayoutFeatures4$fFromCStructPhysicalDeviceScalarBlockLayoutFeatures2$fToCStructPhysicalDeviceScalarBlockLayoutFeatures+$fEqPhysicalDeviceScalarBlockLayoutFeatures-$fShowPhysicalDeviceScalarBlockLayoutFeatures&EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME$EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION*PhysicalDeviceScalarBlockLayoutFeaturesEXT?STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXTSemaphoreWaitFlagBitsSemaphoreWaitFlagsSEMAPHORE_WAIT_ANY_BIT$fReadSemaphoreWaitFlagBits$fShowSemaphoreWaitFlagBits$fEqSemaphoreWaitFlagBits$fOrdSemaphoreWaitFlagBits$fStorableSemaphoreWaitFlagBits$fZeroSemaphoreWaitFlagBits$fBitsSemaphoreWaitFlagBits!$fFiniteBitsSemaphoreWaitFlagBitsResolveModeFlagsRESOLVE_MODE_MAX_BITRESOLVE_MODE_MIN_BIT$fReadResolveModeFlagBits$fShowResolveModeFlagBits$fEqResolveModeFlagBits$fOrdResolveModeFlagBits$fStorableResolveModeFlagBits$fZeroResolveModeFlagBits$fBitsResolveModeFlagBits$fFiniteBitsResolveModeFlagBitsDescriptorBindingFlags$fReadDescriptorBindingFlagBits$fShowDescriptorBindingFlagBits$fEqDescriptorBindingFlagBits$fOrdDescriptorBindingFlagBits#$fStorableDescriptorBindingFlagBits$fZeroDescriptorBindingFlagBits$fBitsDescriptorBindingFlagBits%$fFiniteBitsDescriptorBindingFlagBits%PhysicalDeviceVariablePointerFeaturesI$sel:variablePointersStorageBuffer:PhysicalDeviceVariablePointersFeatures<$sel:variablePointers:PhysicalDeviceVariablePointersFeatures8STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES,$fZeroPhysicalDeviceVariablePointersFeatures0$fStorablePhysicalDeviceVariablePointersFeatures3$fFromCStructPhysicalDeviceVariablePointersFeatures1$fToCStructPhysicalDeviceVariablePointersFeatures*$fEqPhysicalDeviceVariablePointersFeatures,$fShowPhysicalDeviceVariablePointersFeatures$KHR_VARIABLE_POINTERS_EXTENSION_NAME"KHR_VARIABLE_POINTERS_SPEC_VERSION(PhysicalDeviceVariablePointerFeaturesKHR)PhysicalDeviceVariablePointersFeaturesKHR$fStorablePipelineShaderStageRequiredSubgroupSizeCreateInfoEXTA$fFromCStructPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT?$fToCStructPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT0$fEqPhysicalDeviceSubgroupSizeControlFeaturesEXT2$fEqPhysicalDeviceSubgroupSizeControlPropertiesEXT8$fEqPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT:$fShowPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT4$fShowPhysicalDeviceSubgroupSizeControlPropertiesEXT2$fShowPhysicalDeviceSubgroupSizeControlFeaturesEXT2$sel:subgroupSize:PhysicalDeviceSubgroupProperties5$sel:supportedStages:PhysicalDeviceSubgroupProperties9$sel:supportedOperations:PhysicalDeviceSubgroupProperties?$sel:quadOperationsInAllStages:PhysicalDeviceSubgroupProperties&$fZeroPhysicalDeviceSubgroupProperties*$fStorablePhysicalDeviceSubgroupProperties-$fFromCStructPhysicalDeviceSubgroupProperties+$fToCStructPhysicalDeviceSubgroupProperties$$fEqPhysicalDeviceSubgroupProperties&$fShowPhysicalDeviceSubgroupPropertiesShaderModuleCreateFlagBitsShaderModuleCreateFlags $fReadShaderModuleCreateFlagBits $fShowShaderModuleCreateFlagBits$fEqShaderModuleCreateFlagBits$fOrdShaderModuleCreateFlagBits$$fStorableShaderModuleCreateFlagBits $fZeroShaderModuleCreateFlagBits $fBitsShaderModuleCreateFlagBits&$fFiniteBitsShaderModuleCreateFlagBitsSemaphoreCreateFlags$fReadSemaphoreCreateFlags$fShowSemaphoreCreateFlags$fEqSemaphoreCreateFlags$fOrdSemaphoreCreateFlags$fStorableSemaphoreCreateFlags$fZeroSemaphoreCreateFlags$fBitsSemaphoreCreateFlags $fFiniteBitsSemaphoreCreateFlagsSamplerCreateFlagBitsSamplerCreateFlags$fReadSamplerCreateFlagBits$fShowSamplerCreateFlagBits$fEqSamplerCreateFlagBits$fOrdSamplerCreateFlagBits$fStorableSamplerCreateFlagBits$fZeroSamplerCreateFlagBits$fBitsSamplerCreateFlagBits!$fFiniteBitsSamplerCreateFlagBitsSAMPLE_COUNT_64_BITSAMPLE_COUNT_32_BIT$fReadSampleCountFlagBits$fShowSampleCountFlagBits$fEqSampleCountFlagBits$fOrdSampleCountFlagBits$fStorableSampleCountFlagBits$fZeroSampleCountFlagBits$fBitsSampleCountFlagBits$fFiniteBitsSampleCountFlagBitsRenderPassCreateFlags$fReadRenderPassCreateFlagBits$fShowRenderPassCreateFlagBits$fEqRenderPassCreateFlagBits$fOrdRenderPassCreateFlagBits"$fStorableRenderPassCreateFlagBits$fZeroRenderPassCreateFlagBits$fBitsRenderPassCreateFlagBits$$fFiniteBitsRenderPassCreateFlagBits QueueFlagBits QueueFlagsQUEUE_PROTECTED_BITQUEUE_SPARSE_BINDING_BITQUEUE_TRANSFER_BIT$fReadQueueFlagBits$fShowQueueFlagBits$fEqQueueFlagBits$fOrdQueueFlagBits$fStorableQueueFlagBits$fZeroQueueFlagBits$fBitsQueueFlagBits$fFiniteBitsQueueFlagBits$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$fBitsQueryResultFlagBits$fFiniteBitsQueryResultFlagBitsQueryPoolCreateFlags$fReadQueryPoolCreateFlags$fShowQueryPoolCreateFlags$fEqQueryPoolCreateFlags$fOrdQueryPoolCreateFlags$fStorableQueryPoolCreateFlags$fZeroQueryPoolCreateFlags$fBitsQueryPoolCreateFlags $fFiniteBitsQueryPoolCreateFlagsQueryPipelineStatisticFlags7QUERY_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*$fFiniteBitsQueryPipelineStatisticFlagBits$fReadQueryControlFlagBits$fShowQueryControlFlagBits$fEqQueryControlFlagBits$fOrdQueryControlFlagBits$fStorableQueryControlFlagBits$fZeroQueryControlFlagBits$fBitsQueryControlFlagBits $fFiniteBitsQueryControlFlagBitsPRIMITIVE_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,$fFiniteBitsPipelineViewportStateCreateFlags#PipelineVertexInputStateCreateFlags)$fReadPipelineVertexInputStateCreateFlags)$fShowPipelineVertexInputStateCreateFlags'$fEqPipelineVertexInputStateCreateFlags($fOrdPipelineVertexInputStateCreateFlags-$fStorablePipelineVertexInputStateCreateFlags)$fZeroPipelineVertexInputStateCreateFlags)$fBitsPipelineVertexInputStateCreateFlags/$fFiniteBitsPipelineVertexInputStateCreateFlags$PipelineTessellationStateCreateFlags*$fReadPipelineTessellationStateCreateFlags*$fShowPipelineTessellationStateCreateFlags($fEqPipelineTessellationStateCreateFlags)$fOrdPipelineTessellationStateCreateFlags.$fStorablePipelineTessellationStateCreateFlags*$fZeroPipelineTessellationStateCreateFlags*$fBitsPipelineTessellationStateCreateFlags0$fFiniteBitsPipelineTessellationStateCreateFlags(PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NVPIPELINE_STAGE_NONE_KHRPIPELINE_STAGE_ALL_COMMANDS_BITPIPELINE_STAGE_ALL_GRAPHICS_BITPIPELINE_STAGE_TOP_OF_PIPE_BIT$fReadPipelineStageFlagBits$fShowPipelineStageFlagBits$fEqPipelineStageFlagBits$fOrdPipelineStageFlagBits$fStorablePipelineStageFlagBits$fZeroPipelineStageFlagBits$fBitsPipelineStageFlagBits!$fFiniteBitsPipelineStageFlagBits!PipelineShaderStageCreateFlagBitsPipelineShaderStageCreateFlags'$fReadPipelineShaderStageCreateFlagBits'$fShowPipelineShaderStageCreateFlagBits%$fEqPipelineShaderStageCreateFlagBits&$fOrdPipelineShaderStageCreateFlagBits+$fStorablePipelineShaderStageCreateFlagBits'$fZeroPipelineShaderStageCreateFlagBits'$fBitsPipelineShaderStageCreateFlagBits-$fFiniteBitsPipelineShaderStageCreateFlagBits%PipelineRasterizationStateCreateFlags+$fReadPipelineRasterizationStateCreateFlags+$fShowPipelineRasterizationStateCreateFlags)$fEqPipelineRasterizationStateCreateFlags*$fOrdPipelineRasterizationStateCreateFlags/$fStorablePipelineRasterizationStateCreateFlags+$fZeroPipelineRasterizationStateCreateFlags+$fBitsPipelineRasterizationStateCreateFlags1$fFiniteBitsPipelineRasterizationStateCreateFlags#PipelineMultisampleStateCreateFlags)$fReadPipelineMultisampleStateCreateFlags)$fShowPipelineMultisampleStateCreateFlags'$fEqPipelineMultisampleStateCreateFlags($fOrdPipelineMultisampleStateCreateFlags-$fStorablePipelineMultisampleStateCreateFlags)$fZeroPipelineMultisampleStateCreateFlags)$fBitsPipelineMultisampleStateCreateFlags/$fFiniteBitsPipelineMultisampleStateCreateFlagsPipelineLayoutCreateFlags$fReadPipelineLayoutCreateFlags$fShowPipelineLayoutCreateFlags$fEqPipelineLayoutCreateFlags$fOrdPipelineLayoutCreateFlags#$fStorablePipelineLayoutCreateFlags$fZeroPipelineLayoutCreateFlags$fBitsPipelineLayoutCreateFlags%$fFiniteBitsPipelineLayoutCreateFlags%PipelineInputAssemblyStateCreateFlags+$fReadPipelineInputAssemblyStateCreateFlags+$fShowPipelineInputAssemblyStateCreateFlags)$fEqPipelineInputAssemblyStateCreateFlags*$fOrdPipelineInputAssemblyStateCreateFlags/$fStorablePipelineInputAssemblyStateCreateFlags+$fZeroPipelineInputAssemblyStateCreateFlags+$fBitsPipelineInputAssemblyStateCreateFlags1$fFiniteBitsPipelineInputAssemblyStateCreateFlagsPipelineDynamicStateCreateFlags%$fReadPipelineDynamicStateCreateFlags%$fShowPipelineDynamicStateCreateFlags#$fEqPipelineDynamicStateCreateFlags$$fOrdPipelineDynamicStateCreateFlags)$fStorablePipelineDynamicStateCreateFlags%$fZeroPipelineDynamicStateCreateFlags%$fBitsPipelineDynamicStateCreateFlags+$fFiniteBitsPipelineDynamicStateCreateFlags$PipelineDepthStencilStateCreateFlags*$fReadPipelineDepthStencilStateCreateFlags*$fShowPipelineDepthStencilStateCreateFlags($fEqPipelineDepthStencilStateCreateFlags)$fOrdPipelineDepthStencilStateCreateFlags.$fStorablePipelineDepthStencilStateCreateFlags*$fZeroPipelineDepthStencilStateCreateFlags*$fBitsPipelineDepthStencilStateCreateFlags0$fFiniteBitsPipelineDepthStencilStateCreateFlagsPipelineCreateFlags0PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT!PIPELINE_CREATE_DISPATCH_BASE_BIT(PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT$fReadPipelineCreateFlagBits$fShowPipelineCreateFlagBits$fEqPipelineCreateFlagBits$fOrdPipelineCreateFlagBits $fStorablePipelineCreateFlagBits$fZeroPipelineCreateFlagBits$fBitsPipelineCreateFlagBits"$fFiniteBitsPipelineCreateFlagBits"PipelineColorBlendStateCreateFlags($fReadPipelineColorBlendStateCreateFlags($fShowPipelineColorBlendStateCreateFlags&$fEqPipelineColorBlendStateCreateFlags'$fOrdPipelineColorBlendStateCreateFlags,$fStorablePipelineColorBlendStateCreateFlags($fZeroPipelineColorBlendStateCreateFlags($fBitsPipelineColorBlendStateCreateFlags.$fFiniteBitsPipelineColorBlendStateCreateFlags $fReadPipelineCacheHeaderVersion $fShowPipelineCacheHeaderVersion$fEqPipelineCacheHeaderVersion$fOrdPipelineCacheHeaderVersion$$fStorablePipelineCacheHeaderVersion $fZeroPipelineCacheHeaderVersionPipelineCacheCreateFlagBitsPipelineCacheCreateFlags!$fReadPipelineCacheCreateFlagBits!$fShowPipelineCacheCreateFlagBits$fEqPipelineCacheCreateFlagBits $fOrdPipelineCacheCreateFlagBits%$fStorablePipelineCacheCreateFlagBits!$fZeroPipelineCacheCreateFlagBits!$fBitsPipelineCacheCreateFlagBits'$fFiniteBitsPipelineCacheCreateFlagBits#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_ACCELERATION_STRUCTURE_NV+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$fZeroObjectType'EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME%EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION#PFN_vkDeviceMemoryReportCallbackEXT"FN_vkDeviceMemoryReportCallbackEXTDeviceMemoryReportEventTypeEXTDeviceMemoryReportFlagsEXT,$sel:flags:DeviceMemoryReportCallbackDataEXT,$sel:type':DeviceMemoryReportCallbackDataEXT5$sel:memoryObjectId:DeviceMemoryReportCallbackDataEXT+$sel:size:DeviceMemoryReportCallbackDataEXT1$sel:objectType:DeviceMemoryReportCallbackDataEXT3$sel:objectHandle:DeviceMemoryReportCallbackDataEXT0$sel:heapIndex:DeviceMemoryReportCallbackDataEXT0$sel:flags:DeviceDeviceMemoryReportCreateInfoEXT:$sel:pfnUserCallback:DeviceDeviceMemoryReportCreateInfoEXT3$sel:userData:DeviceDeviceMemoryReportCreateInfoEXTC$sel:deviceMemoryReport:PhysicalDeviceDeviceMemoryReportFeaturesEXT5DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT,DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT*DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT(DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT,DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT1$fZeroPhysicalDeviceDeviceMemoryReportFeaturesEXT5$fStorablePhysicalDeviceDeviceMemoryReportFeaturesEXT8$fFromCStructPhysicalDeviceDeviceMemoryReportFeaturesEXT6$fToCStructPhysicalDeviceDeviceMemoryReportFeaturesEXT $fReadDeviceMemoryReportFlagsEXT $fShowDeviceMemoryReportFlagsEXT$$fReadDeviceMemoryReportEventTypeEXT$$fShowDeviceMemoryReportEventTypeEXT'$fZeroDeviceMemoryReportCallbackDataEXT+$fStorableDeviceMemoryReportCallbackDataEXT.$fFromCStructDeviceMemoryReportCallbackDataEXT,$fToCStructDeviceMemoryReportCallbackDataEXT+$fZeroDeviceDeviceMemoryReportCreateInfoEXT/$fStorableDeviceDeviceMemoryReportCreateInfoEXT2$fFromCStructDeviceDeviceMemoryReportCreateInfoEXT0$fToCStructDeviceDeviceMemoryReportCreateInfoEXT/$fEqPhysicalDeviceDeviceMemoryReportFeaturesEXT$fEqDeviceMemoryReportFlagsEXT$fOrdDeviceMemoryReportFlagsEXT$$fStorableDeviceMemoryReportFlagsEXT $fZeroDeviceMemoryReportFlagsEXT $fBitsDeviceMemoryReportFlagsEXT&$fFiniteBitsDeviceMemoryReportFlagsEXT"$fEqDeviceMemoryReportEventTypeEXT#$fOrdDeviceMemoryReportEventTypeEXT($fStorableDeviceMemoryReportEventTypeEXT$$fZeroDeviceMemoryReportEventTypeEXT%$fEqDeviceMemoryReportCallbackDataEXT'$fShowDeviceMemoryReportCallbackDataEXT+$fShowDeviceDeviceMemoryReportCreateInfoEXT1$fShowPhysicalDeviceDeviceMemoryReportFeaturesEXTMemoryPropertyFlagBitsMemoryPropertyFlags'MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMDMEMORY_PROPERTY_HOST_CACHED_BIT MEMORY_PROPERTY_DEVICE_LOCAL_BIT$fReadMemoryPropertyFlagBits$fShowMemoryPropertyFlagBits$fEqMemoryPropertyFlagBits$fOrdMemoryPropertyFlagBits $fStorableMemoryPropertyFlagBits$fZeroMemoryPropertyFlagBits$fBitsMemoryPropertyFlagBits"$fFiniteBitsMemoryPropertyFlagBits$fReadMemoryMapFlags$fShowMemoryMapFlags$fEqMemoryMapFlags$fOrdMemoryMapFlags$fStorableMemoryMapFlags$fZeroMemoryMapFlags$fBitsMemoryMapFlags$fFiniteBitsMemoryMapFlagsMemoryHeapFlagBitsMemoryHeapFlags$fReadMemoryHeapFlagBits$fShowMemoryHeapFlagBits$fEqMemoryHeapFlagBits$fOrdMemoryHeapFlagBits$fStorableMemoryHeapFlagBits$fZeroMemoryHeapFlagBits$fBitsMemoryHeapFlagBits$fFiniteBitsMemoryHeapFlagBitsLogicOp 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$fFiniteBitsInstanceCreateFlags$fReadIndexType$fShowIndexType $fEqIndexType$fOrdIndexType$fStorableIndexType$fZeroIndexType$fReadImageViewType$fShowImageViewType$fEqImageViewType$fOrdImageViewType$fStorableImageViewType$fZeroImageViewTypeImageViewCreateFlagBitsImageViewCreateFlags$fReadImageViewCreateFlagBits$fShowImageViewCreateFlagBits$fEqImageViewCreateFlagBits$fOrdImageViewCreateFlagBits!$fStorableImageViewCreateFlagBits$fZeroImageViewCreateFlagBits$fBitsImageViewCreateFlagBits#$fFiniteBitsImageViewCreateFlagBits$fReadImageUsageFlagBits$fShowImageUsageFlagBits$fEqImageUsageFlagBits$fOrdImageUsageFlagBits$fStorableImageUsageFlagBits$fZeroImageUsageFlagBits$fBitsImageUsageFlagBits$fFiniteBitsImageUsageFlagBits-$sel:stencilUsage:ImageStencilUsageCreateInfo!$fZeroImageStencilUsageCreateInfo%$fStorableImageStencilUsageCreateInfo($fFromCStructImageStencilUsageCreateInfo&$fToCStructImageStencilUsageCreateInfo$fEqImageStencilUsageCreateInfo!$fShowImageStencilUsageCreateInfo)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$IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV$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&$fShowAttachmentReferenceStencilLayout7$fShowPhysicalDeviceSeparateDepthStencilLayoutsFeatures1KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME/KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION%AttachmentDescriptionStencilLayoutKHR#AttachmentReferenceStencilLayoutKHR4PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR*IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR+IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR(IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR)IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR8STRUCTURE_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$fBitsImageCreateFlagBits$fFiniteBitsImageCreateFlagBits1$sel:deviceIndices:BindImageMemoryDeviceGroupInfo<$sel:splitInstanceBindRegions:BindImageMemoryDeviceGroupInfo2$sel:deviceIndices:BindBufferMemoryDeviceGroupInfo%$fZeroBindBufferMemoryDeviceGroupInfo,$fFromCStructBindBufferMemoryDeviceGroupInfo*$fToCStructBindBufferMemoryDeviceGroupInfo$$fZeroBindImageMemoryDeviceGroupInfo+$fFromCStructBindImageMemoryDeviceGroupInfo)$fToCStructBindImageMemoryDeviceGroupInfo$$fShowBindImageMemoryDeviceGroupInfo%$fShowBindBufferMemoryDeviceGroupInfo#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$fBitsImageAspectFlagBits$fFiniteBitsImageAspectFlagBitsA$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$fShowPipelineTessellationDomainOriginStateCreateInfo$fShowImageViewUsageCreateInfo+$fShowPhysicalDevicePointClippingProperties/$fShowRenderPassInputAttachmentAspectCreateInfo$$fShowInputAttachmentAspectReferenceKHR_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$fShowDescriptorSetVariableDescriptorCountLayoutSupport6$fShowDescriptorSetVariableDescriptorCountAllocateInfo/$fShowDescriptorSetLayoutBindingFlagsCreateInfo0$fShowPhysicalDeviceDescriptorIndexingProperties.$fShowPhysicalDeviceDescriptorIndexingFeatures&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$fFiniteBitsDependencyFlagBits,$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'$fShowPhysicalDeviceMultiviewProperties%$fShowPhysicalDeviceMultiviewFeaturesKHR_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$fBitsCullModeFlagBits$fFiniteBitsCullModeFlagBitsCOMPONENT_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$fBitsCommandPoolResetFlagBits$$fFiniteBitsCommandPoolResetFlagBitsCommandPoolCreateFlagBitsCommandPoolCreateFlags!COMMAND_POOL_CREATE_PROTECTED_BIT!COMMAND_POOL_CREATE_TRANSIENT_BIT$fReadCommandPoolCreateFlagBits$fShowCommandPoolCreateFlagBits$fEqCommandPoolCreateFlagBits$fOrdCommandPoolCreateFlagBits#$fStorableCommandPoolCreateFlagBits$fZeroCommandPoolCreateFlagBits$fBitsCommandPoolCreateFlagBits%$fFiniteBitsCommandPoolCreateFlagBitsCommandBufferUsageFlagBitsCommandBufferUsageFlags $fReadCommandBufferUsageFlagBits $fShowCommandBufferUsageFlagBits$fEqCommandBufferUsageFlagBits$fOrdCommandBufferUsageFlagBits$$fStorableCommandBufferUsageFlagBits $fZeroCommandBufferUsageFlagBits $fBitsCommandBufferUsageFlagBits&$fFiniteBitsCommandBufferUsageFlagBits*COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT $fReadCommandBufferResetFlagBits $fShowCommandBufferResetFlagBits$fEqCommandBufferResetFlagBits$fOrdCommandBufferResetFlagBits$$fStorableCommandBufferResetFlagBits $fZeroCommandBufferResetFlagBits $fBitsCommandBufferResetFlagBits&$fFiniteBitsCommandBufferResetFlagBitsCommandBufferLevelCOMMAND_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$fBitsColorComponentFlagBits"$fFiniteBitsColorComponentFlagBitsBufferViewCreateFlags$fReadBufferViewCreateFlags$fShowBufferViewCreateFlags$fEqBufferViewCreateFlags$fOrdBufferViewCreateFlags$fStorableBufferViewCreateFlags$fZeroBufferViewCreateFlags$fBitsBufferViewCreateFlags!$fFiniteBitsBufferViewCreateFlagsBufferUsageFlags$fReadBufferUsageFlagBits$fShowBufferUsageFlagBits$fEqBufferUsageFlagBits$fOrdBufferUsageFlagBits$fStorableBufferUsageFlagBits$fZeroBufferUsageFlagBits$fBitsBufferUsageFlagBits$fFiniteBitsBufferUsageFlagBitsBufferCreateFlags$fReadBufferCreateFlagBits$fShowBufferCreateFlagBits$fEqBufferCreateFlagBits$fOrdBufferCreateFlagBits$fStorableBufferCreateFlagBits$fZeroBufferCreateFlagBits$fBitsBufferCreateFlagBits $fFiniteBitsBufferCreateFlagBits 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)$fFiniteBitsAttachmentDescriptionFlagBits'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_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_NONE_KHRACCESS_MEMORY_WRITE_BITACCESS_MEMORY_READ_BITACCESS_SHADER_WRITE_BIT ACCESS_INPUT_ATTACHMENT_READ_BITACCESS_UNIFORM_READ_BIT ACCESS_VERTEX_ATTRIBUTE_READ_BITACCESS_INDEX_READ_BIT$fReadAccessFlagBits$fShowAccessFlagBits$fEqAccessFlagBits$fOrdAccessFlagBits$fStorableAccessFlagBits$fZeroAccessFlagBits$fBitsAccessFlagBits$fFiniteBitsAccessFlagBits!$sel:userData:AllocationCallbacks&$sel:pfnAllocation:AllocationCallbacks($sel:pfnReallocation:AllocationCallbacks $sel:pfnFree:AllocationCallbacks.$sel:pfnInternalAllocation:AllocationCallbacks($sel:pfnInternalFree:AllocationCallbacks$fZeroAllocationCallbacks$fStorableAllocationCallbacks $fFromCStructAllocationCallbacks$fToCStructAllocationCallbacks$fShowAllocationCallbacks 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_KHR'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-$fShowPhysicalDeviceMemoryBudgetPropertiesEXT,$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($fStorablePhysicalDeviceDriverProperties+$fFromCStructPhysicalDeviceDriverProperties)$fToCStructPhysicalDeviceDriverProperties$fEqConformanceVersion$$fShowPhysicalDeviceDriverProperties$fShowConformanceVersion$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$$fShowExternalMemoryBufferCreateInfo#$fShowExternalMemoryImageCreateInfo"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 ExtensibleextensibleTypeNamegetNextsetNextextends 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$fShowBaseOutStructure DeviceCmdsdeviceCmdsHandlepVkGetDeviceProcAddrpVkDestroyDevicepVkGetDeviceQueuepVkQueueSubmitpVkQueueWaitIdlepVkDeviceWaitIdlepVkAllocateMemory pVkFreeMemory pVkMapMemorypVkUnmapMemorypVkFlushMappedMemoryRangespVkInvalidateMappedMemoryRangespVkGetDeviceMemoryCommitmentpVkGetBufferMemoryRequirementspVkBindBufferMemorypVkGetImageMemoryRequirementspVkBindImageMemory#pVkGetImageSparseMemoryRequirementspVkQueueBindSparsepVkCreateFencepVkDestroyFencepVkResetFencespVkGetFenceStatuspVkWaitForFencespVkCreateSemaphorepVkDestroySemaphorepVkCreateEventpVkDestroyEventpVkGetEventStatus pVkSetEvent pVkResetEventpVkCreateQueryPoolpVkDestroyQueryPoolpVkGetQueryPoolResultspVkResetQueryPoolpVkCreateBufferpVkDestroyBufferpVkCreateBufferViewpVkDestroyBufferViewpVkCreateImagepVkDestroyImagepVkGetImageSubresourceLayoutpVkCreateImageViewpVkDestroyImageViewpVkCreateShaderModulepVkDestroyShaderModulepVkCreatePipelineCachepVkDestroyPipelineCachepVkGetPipelineCacheDatapVkMergePipelineCachespVkCreateGraphicsPipelinespVkCreateComputePipelinespVkDestroyPipelinepVkCreatePipelineLayoutpVkDestroyPipelineLayoutpVkCreateSamplerpVkDestroySamplerpVkCreateDescriptorSetLayoutpVkDestroyDescriptorSetLayoutpVkCreateDescriptorPoolpVkDestroyDescriptorPoolpVkResetDescriptorPoolpVkAllocateDescriptorSetspVkFreeDescriptorSetspVkUpdateDescriptorSetspVkCreateFramebufferpVkDestroyFramebufferpVkCreateRenderPasspVkDestroyRenderPasspVkGetRenderAreaGranularitypVkCreateCommandPoolpVkDestroyCommandPoolpVkResetCommandPoolpVkAllocateCommandBufferspVkFreeCommandBufferspVkBeginCommandBufferpVkEndCommandBufferpVkResetCommandBufferpVkCmdBindPipelinepVkCmdSetViewportpVkCmdSetScissorpVkCmdSetLineWidthpVkCmdSetDepthBiaspVkCmdSetBlendConstantspVkCmdSetDepthBoundspVkCmdSetStencilCompareMaskpVkCmdSetStencilWriteMaskpVkCmdSetStencilReferencepVkCmdBindDescriptorSetspVkCmdBindIndexBufferpVkCmdBindVertexBuffers pVkCmdDrawpVkCmdDrawIndexedpVkCmdDrawIndirectpVkCmdDrawIndexedIndirectpVkCmdDispatchpVkCmdDispatchIndirectpVkCmdCopyBufferpVkCmdCopyImagepVkCmdBlitImagepVkCmdCopyBufferToImagepVkCmdCopyImageToBufferpVkCmdUpdateBufferpVkCmdFillBufferpVkCmdClearColorImagepVkCmdClearDepthStencilImagepVkCmdClearAttachmentspVkCmdResolveImagepVkCmdSetEventpVkCmdResetEventpVkCmdWaitEventspVkCmdPipelineBarrierpVkCmdBeginQuerypVkCmdEndQuery"pVkCmdBeginConditionalRenderingEXT pVkCmdEndConditionalRenderingEXTpVkCmdResetQueryPoolpVkCmdWriteTimestamppVkCmdCopyQueryPoolResultspVkCmdPushConstantspVkCmdBeginRenderPasspVkCmdNextSubpasspVkCmdEndRenderPasspVkCmdExecuteCommandspVkCreateSharedSwapchainsKHRpVkCreateSwapchainKHRpVkDestroySwapchainKHRpVkGetSwapchainImagesKHRpVkAcquireNextImageKHRpVkQueuePresentKHRpVkDebugMarkerSetObjectNameEXTpVkDebugMarkerSetObjectTagEXTpVkCmdDebugMarkerBeginEXTpVkCmdDebugMarkerEndEXTpVkCmdDebugMarkerInsertEXTpVkGetMemoryWin32HandleNV pVkCmdExecuteGeneratedCommandsNV#pVkCmdPreprocessGeneratedCommandsNVpVkCmdBindPipelineShaderGroupNV+pVkGetGeneratedCommandsMemoryRequirementsNV!pVkCreateIndirectCommandsLayoutNV"pVkDestroyIndirectCommandsLayoutNVpVkCmdPushDescriptorSetKHRpVkTrimCommandPoolpVkGetMemoryWin32HandleKHR$pVkGetMemoryWin32HandlePropertiesKHRpVkGetMemoryFdKHRpVkGetMemoryFdPropertiesKHRpVkGetMemoryZirconHandleFUCHSIA)pVkGetMemoryZirconHandlePropertiesFUCHSIApVkGetSemaphoreWin32HandleKHR pVkImportSemaphoreWin32HandleKHRpVkGetSemaphoreFdKHRpVkImportSemaphoreFdKHR"pVkGetSemaphoreZirconHandleFUCHSIA%pVkImportSemaphoreZirconHandleFUCHSIApVkGetFenceWin32HandleKHRpVkImportFenceWin32HandleKHRpVkGetFenceFdKHRpVkImportFenceFdKHRpVkDisplayPowerControlEXTpVkRegisterDeviceEventEXTpVkRegisterDisplayEventEXTpVkGetSwapchainCounterEXT#pVkGetDeviceGroupPeerMemoryFeaturespVkBindBufferMemory2pVkBindImageMemory2pVkCmdSetDeviceMask'pVkGetDeviceGroupPresentCapabilitiesKHR'pVkGetDeviceGroupSurfacePresentModesKHRpVkAcquireNextImage2KHRpVkCmdDispatchBase!pVkCreateDescriptorUpdateTemplate"pVkDestroyDescriptorUpdateTemplate"pVkUpdateDescriptorSetWithTemplate&pVkCmdPushDescriptorSetWithTemplateKHRpVkSetHdrMetadataEXTpVkGetSwapchainStatusKHR pVkGetRefreshCycleDurationGOOGLE"pVkGetPastPresentationTimingGOOGLEpVkCmdSetViewportWScalingNVpVkCmdSetDiscardRectangleEXTpVkCmdSetSampleLocationsEXTpVkGetBufferMemoryRequirements2pVkGetImageMemoryRequirements2$pVkGetImageSparseMemoryRequirements2pVkCreateSamplerYcbcrConversion pVkDestroySamplerYcbcrConversionpVkGetDeviceQueue2pVkCreateValidationCacheEXTpVkDestroyValidationCacheEXTpVkGetValidationCacheDataEXTpVkMergeValidationCachesEXT pVkGetDescriptorSetLayoutSupportpVkGetShaderInfoAMDpVkSetLocalDimmingAMDpVkGetCalibratedTimestampsEXTpVkSetDebugUtilsObjectNameEXTpVkSetDebugUtilsObjectTagEXTpVkQueueBeginDebugUtilsLabelEXTpVkQueueEndDebugUtilsLabelEXT pVkQueueInsertDebugUtilsLabelEXTpVkCmdBeginDebugUtilsLabelEXTpVkCmdEndDebugUtilsLabelEXTpVkCmdInsertDebugUtilsLabelEXT$pVkGetMemoryHostPointerPropertiesEXTpVkCmdWriteBufferMarkerAMDpVkCreateRenderPass2pVkCmdBeginRenderPass2pVkCmdNextSubpass2pVkCmdEndRenderPass2pVkGetSemaphoreCounterValuepVkWaitSemaphorespVkSignalSemaphore,pVkGetAndroidHardwareBufferPropertiesANDROID(pVkGetMemoryAndroidHardwareBufferANDROIDpVkCmdDrawIndirectCountpVkCmdDrawIndexedIndirectCountpVkCmdSetCheckpointNVpVkGetQueueCheckpointDataNV%pVkCmdBindTransformFeedbackBuffersEXTpVkCmdBeginTransformFeedbackEXTpVkCmdEndTransformFeedbackEXTpVkCmdBeginQueryIndexedEXTpVkCmdEndQueryIndexedEXTpVkCmdDrawIndirectByteCountEXTpVkCmdSetExclusiveScissorNVpVkCmdBindShadingRateImageNV%pVkCmdSetViewportShadingRatePaletteNVpVkCmdSetCoarseSampleOrderNVpVkCmdDrawMeshTasksNVpVkCmdDrawMeshTasksIndirectNV"pVkCmdDrawMeshTasksIndirectCountNVpVkCompileDeferredNV pVkCreateAccelerationStructureNV"pVkDestroyAccelerationStructureKHR!pVkDestroyAccelerationStructureNV/pVkGetAccelerationStructureMemoryRequirementsNV$pVkBindAccelerationStructureMemoryNV!pVkCmdCopyAccelerationStructureNV"pVkCmdCopyAccelerationStructureKHRpVkCopyAccelerationStructureKHR*pVkCmdCopyAccelerationStructureToMemoryKHR'pVkCopyAccelerationStructureToMemoryKHR*pVkCmdCopyMemoryToAccelerationStructureKHR'pVkCopyMemoryToAccelerationStructureKHR.pVkCmdWriteAccelerationStructuresPropertiesKHR-pVkCmdWriteAccelerationStructuresPropertiesNV"pVkCmdBuildAccelerationStructureNV+pVkWriteAccelerationStructuresPropertiesKHRpVkCmdTraceRaysKHRpVkCmdTraceRaysNV%pVkGetRayTracingShaderGroupHandlesKHR2pVkGetRayTracingCaptureReplayShaderGroupHandlesKHR#pVkGetAccelerationStructureHandleNVpVkCreateRayTracingPipelinesNVpVkCreateRayTracingPipelinesKHRpVkCmdTraceRaysIndirectKHR1pVkGetDeviceAccelerationStructureCompatibilityKHR'pVkGetRayTracingShaderGroupStackSizeKHR'pVkCmdSetRayTracingPipelineStackSizeKHRpVkGetImageViewHandleNVXpVkGetImageViewAddressNVX(pVkGetDeviceGroupSurfacePresentModes2EXT$pVkAcquireFullScreenExclusiveModeEXT$pVkReleaseFullScreenExclusiveModeEXTpVkAcquireProfilingLockKHRpVkReleaseProfilingLockKHR)pVkGetImageDrmFormatModifierPropertiesEXT pVkGetBufferOpaqueCaptureAddresspVkGetBufferDeviceAddress pVkInitializePerformanceApiINTEL"pVkUninitializePerformanceApiINTELpVkCmdSetPerformanceMarkerINTEL%pVkCmdSetPerformanceStreamMarkerINTEL!pVkCmdSetPerformanceOverrideINTEL'pVkAcquirePerformanceConfigurationINTEL'pVkReleasePerformanceConfigurationINTEL(pVkQueueSetPerformanceConfigurationINTELpVkGetPerformanceParameterINTEL&pVkGetDeviceMemoryOpaqueCaptureAddress%pVkGetPipelineExecutablePropertiesKHR%pVkGetPipelineExecutableStatisticsKHR2pVkGetPipelineExecutableInternalRepresentationsKHRpVkCmdSetLineStippleEXT!pVkCreateAccelerationStructureKHR$pVkCmdBuildAccelerationStructuresKHR,pVkCmdBuildAccelerationStructuresIndirectKHR!pVkBuildAccelerationStructuresKHR+pVkGetAccelerationStructureDeviceAddressKHRpVkCreateDeferredOperationKHRpVkDestroyDeferredOperationKHR(pVkGetDeferredOperationMaxConcurrencyKHR pVkGetDeferredOperationResultKHRpVkDeferredOperationJoinKHRpVkCmdSetCullModeEXTpVkCmdSetFrontFaceEXTpVkCmdSetPrimitiveTopologyEXTpVkCmdSetViewportWithCountEXTpVkCmdSetScissorWithCountEXTpVkCmdBindVertexBuffers2EXTpVkCmdSetDepthTestEnableEXTpVkCmdSetDepthWriteEnableEXTpVkCmdSetDepthCompareOpEXT!pVkCmdSetDepthBoundsTestEnableEXTpVkCmdSetStencilTestEnableEXTpVkCmdSetStencilOpEXTpVkCreatePrivateDataSlotEXTpVkDestroyPrivateDataSlotEXTpVkSetPrivateDataEXTpVkGetPrivateDataEXTpVkCmdCopyBuffer2KHRpVkCmdCopyImage2KHRpVkCmdBlitImage2KHRpVkCmdCopyBufferToImage2KHRpVkCmdCopyImageToBuffer2KHRpVkCmdResolveImage2KHRpVkCmdSetFragmentShadingRateKHR"pVkCmdSetFragmentShadingRateEnumNV(pVkGetAccelerationStructureBuildSizesKHRpVkCmdSetEvent2KHRpVkCmdResetEvent2KHRpVkCmdWaitEvents2KHRpVkCmdPipelineBarrier2KHRpVkQueueSubmit2KHRpVkCmdWriteTimestamp2KHRpVkCmdWriteBufferMarker2AMDpVkGetQueueCheckpointData2NV InstanceCmdsinstanceCmdsHandlepVkDestroyInstancepVkEnumeratePhysicalDevicespVkGetInstanceProcAddrpVkGetPhysicalDeviceProperties)pVkGetPhysicalDeviceQueueFamilyProperties$pVkGetPhysicalDeviceMemoryPropertiespVkGetPhysicalDeviceFeatures$pVkGetPhysicalDeviceFormatProperties)pVkGetPhysicalDeviceImageFormatPropertiespVkCreateDevice!pVkEnumerateDeviceLayerProperties%pVkEnumerateDeviceExtensionProperties/pVkGetPhysicalDeviceSparseImageFormatPropertiespVkCreateAndroidSurfaceKHR(pVkGetPhysicalDeviceDisplayPropertiesKHR-pVkGetPhysicalDeviceDisplayPlanePropertiesKHR&pVkGetDisplayPlaneSupportedDisplaysKHRpVkGetDisplayModePropertiesKHRpVkCreateDisplayModeKHR!pVkGetDisplayPlaneCapabilitiesKHRpVkCreateDisplayPlaneSurfaceKHRpVkDestroySurfaceKHR%pVkGetPhysicalDeviceSurfaceSupportKHR*pVkGetPhysicalDeviceSurfaceCapabilitiesKHR%pVkGetPhysicalDeviceSurfaceFormatsKHR*pVkGetPhysicalDeviceSurfacePresentModesKHRpVkCreateViSurfaceNNpVkCreateWaylandSurfaceKHR1pVkGetPhysicalDeviceWaylandPresentationSupportKHRpVkCreateWin32SurfaceKHR/pVkGetPhysicalDeviceWin32PresentationSupportKHRpVkCreateXlibSurfaceKHR.pVkGetPhysicalDeviceXlibPresentationSupportKHRpVkCreateXcbSurfaceKHR-pVkGetPhysicalDeviceXcbPresentationSupportKHRpVkCreateDirectFBSurfaceEXT2pVkGetPhysicalDeviceDirectFBPresentationSupportEXT pVkCreateImagePipeSurfaceFUCHSIA#pVkCreateStreamDescriptorSurfaceGGPpVkCreateScreenSurfaceQNX0pVkGetPhysicalDeviceScreenPresentationSupportQNXpVkCreateDebugReportCallbackEXT pVkDestroyDebugReportCallbackEXTpVkDebugReportMessageEXT3pVkGetPhysicalDeviceExternalImageFormatPropertiesNVpVkGetPhysicalDeviceFeatures2pVkGetPhysicalDeviceProperties2%pVkGetPhysicalDeviceFormatProperties2*pVkGetPhysicalDeviceImageFormatProperties2*pVkGetPhysicalDeviceQueueFamilyProperties2%pVkGetPhysicalDeviceMemoryProperties20pVkGetPhysicalDeviceSparseImageFormatProperties2,pVkGetPhysicalDeviceExternalBufferProperties/pVkGetPhysicalDeviceExternalSemaphoreProperties+pVkGetPhysicalDeviceExternalFencePropertiespVkReleaseDisplayEXTpVkAcquireXlibDisplayEXTpVkGetRandROutputDisplayEXTpVkAcquireWinrtDisplayNVpVkGetWinrtDisplayNV+pVkGetPhysicalDeviceSurfaceCapabilities2EXT pVkEnumeratePhysicalDeviceGroups(pVkGetPhysicalDevicePresentRectanglesKHRpVkCreateIOSSurfaceMVKpVkCreateMacOSSurfaceMVKpVkCreateMetalSurfaceEXT,pVkGetPhysicalDeviceMultisamplePropertiesEXT+pVkGetPhysicalDeviceSurfaceCapabilities2KHR&pVkGetPhysicalDeviceSurfaceFormats2KHR)pVkGetPhysicalDeviceDisplayProperties2KHR.pVkGetPhysicalDeviceDisplayPlaneProperties2KHRpVkGetDisplayModeProperties2KHR"pVkGetDisplayPlaneCapabilities2KHR/pVkGetPhysicalDeviceCalibrateableTimeDomainsEXTpVkCreateDebugUtilsMessengerEXT pVkDestroyDebugUtilsMessengerEXTpVkSubmitDebugUtilsMessageEXT1pVkGetPhysicalDeviceCooperativeMatrixPropertiesNV+pVkGetPhysicalDeviceSurfacePresentModes2EXT@pVkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR8pVkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHRpVkCreateHeadlessSurfaceEXTBpVkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV%pVkGetPhysicalDeviceToolPropertiesEXT+pVkGetPhysicalDeviceFragmentShadingRatesKHRgetInstanceProcAddr'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$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$fZeroPhysicalDeviceShadingRateImagePropertiesNV4$fStorablePhysicalDeviceShadingRateImagePropertiesNV7$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$fShowCoarseSampleOrderCustomNV$fShowCoarseSampleLocationNV0$fShowPhysicalDeviceShadingRateImagePropertiesNV.$fShowPhysicalDeviceShadingRateImageFeaturesNV7$fShowPipelineViewportShadingRateImageStateCreateInfoNV$fShowShadingRatePaletteNV#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.$fShowPhysicalDeviceExclusiveScissorFeaturesNVNV_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*$fShowPhysicalDeviceMeshShaderPropertiesNV($fShowPhysicalDeviceMeshShaderFeaturesNV/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'$fShowQueueFamilyCheckpointPropertiesNV&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-$fShowDedicatedAllocationMemoryAllocateInfoNV+$fShowDedicatedAllocationBufferCreateInfoNV*$fShowDedicatedAllocationImageCreateInfoNV)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$fBitsPipelineCoverageReductionStateCreateFlagsNV7$fFiniteBitsPipelineCoverageReductionStateCreateFlagsNV$fEqCoverageReductionModeNV$fOrdCoverageReductionModeNV!$fStorableCoverageReductionModeNV$fZeroCoverageReductionModeNV($fEqFramebufferMixedSamplesCombinationNV.$fEqPipelineCoverageReductionStateCreateInfoNV*$fShowFramebufferMixedSamplesCombinationNV0$fShowPipelineCoverageReductionStateCreateInfoNV3$fShowPhysicalDeviceCoverageReductionModeFeaturesNV$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#$fShowCooperativeMatrixPropertiesNV1$fShowPhysicalDeviceCooperativeMatrixPropertiesNV/$fShowPhysicalDeviceCooperativeMatrixFeaturesNV&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/$fShowPipelineViewportWScalingStateCreateInfoNV$fShowViewportWScalingNV$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$fShowImageViewHandleInfoNVX$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#KHR_PIPELINE_LIBRARY_EXTENSION_NAME!KHR_PIPELINE_LIBRARY_SPEC_VERSION+$sel:libraries:PipelineLibraryCreateInfoKHR"$fZeroPipelineLibraryCreateInfoKHR)$fFromCStructPipelineLibraryCreateInfoKHR'$fToCStructPipelineLibraryCreateInfoKHR"$fShowPipelineLibraryCreateInfoKHR1KHR_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$fShowPipelineExecutableInternalRepresentationKHR$$fShowPipelineExecutableStatisticKHR$fShowPipelineExecutableInfoKHR%$fShowPipelineExecutablePropertiesKHR$fShowPipelineInfoKHR;$fShowPhysicalDevicePipelineExecutablePropertiesFeaturesKHR$KHR_PERFORMANCE_QUERY_EXTENSION_NAME"KHR_PERFORMANCE_QUERY_SPEC_VERSIONAcquireProfilingLockFlagBitsKHRAcquireProfilingLockFlagsKHR(PerformanceCounterDescriptionFlagBitsKHR%PerformanceCounterDescriptionFlagsKHRPerformanceCounterStorageKHRPerformanceCounterUnitKHRPerformanceCounterScopeKHR 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:PhysicalDevicePerformanceQueryFeaturesKHR=PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR=PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_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_KHR9PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR9PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHRQUERY_SCOPE_COMMAND_KHRQUERY_SCOPE_RENDER_PASS_KHRQUERY_SCOPE_COMMAND_BUFFER_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.$fBitsPerformanceCounterDescriptionFlagBitsKHR4$fFiniteBitsPerformanceCounterDescriptionFlagBitsKHR#$fEqAcquireProfilingLockFlagBitsKHR$$fOrdAcquireProfilingLockFlagBitsKHR)$fStorableAcquireProfilingLockFlagBitsKHR%$fZeroAcquireProfilingLockFlagBitsKHR%$fBitsAcquireProfilingLockFlagBitsKHR+$fFiniteBitsAcquireProfilingLockFlagBitsKHR$fEqAcquireProfilingLockInfoKHR#$fShowPerformanceQuerySubmitInfoKHR!$fShowAcquireProfilingLockInfoKHR'$fShowQueryPoolPerformanceCreateInfoKHR&$fShowPerformanceCounterDescriptionKHR$fShowPerformanceCounterKHR1$fShowPhysicalDevicePerformanceQueryPropertiesKHR/$fShowPhysicalDevicePerformanceQueryFeaturesKHR(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$fShowImportSemaphoreFdInfoKHR%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$fShowMemoryFdPropertiesKHR$fShowImportMemoryFdInfoKHR$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$fShowImportFenceFdInfoKHR%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$fBitsPipelineRasterizationStateStreamCreateFlagsEXT:$fFiniteBitsPipelineRasterizationStateStreamCreateFlagsEXT1$fEqPipelineRasterizationStateStreamCreateInfoEXT3$fShowPipelineRasterizationStateStreamCreateInfoEXT2$fShowPhysicalDeviceTransformFeedbackPropertiesEXT0$fShowPhysicalDeviceTransformFeedbackFeaturesEXTEXT_TOOLING_INFO_EXTENSION_NAMEEXT_TOOLING_INFO_SPEC_VERSIONToolPurposeFlagBitsEXTToolPurposeFlagsEXT)$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"$fFiniteBitsToolPurposeFlagBitsEXT%$fShowPhysicalDeviceToolPropertiesEXT#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$fZeroPhysicalDeviceSampleLocationsPropertiesEXT4$fStorablePhysicalDeviceSampleLocationsPropertiesEXT7$fFromCStructPhysicalDeviceSampleLocationsPropertiesEXT5$fToCStructPhysicalDeviceSampleLocationsPropertiesEXT$fZeroMultisamplePropertiesEXT"$fStorableMultisamplePropertiesEXT%$fFromCStructMultisamplePropertiesEXT#$fToCStructMultisamplePropertiesEXT$fEqSampleLocationEXT$fShowMultisamplePropertiesEXT0$fShowPhysicalDeviceSampleLocationsPropertiesEXT/$fShowPipelineSampleLocationsStateCreateInfoEXT+$fShowRenderPassSampleLocationsBeginInfoEXT$fShowSubpassSampleLocationsEXT"$fShowAttachmentSampleLocationsEXT$fShowSampleLocationsInfoEXT$fShowSampleLocationEXT%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$fShowPipelineRasterizationLineStateCreateInfoEXT2$fShowPhysicalDeviceLineRasterizationPropertiesEXT0$fShowPhysicalDeviceLineRasterizationFeaturesEXT'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$fShowPhysicalDeviceExternalMemoryHostPropertiesEXT$$fShowMemoryHostPointerPropertiesEXT$$fShowImportMemoryHostPointerInfoEXT%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$fBitsPipelineDiscardRectangleStateCreateFlagsEXT7$fFiniteBitsPipelineDiscardRectangleStateCreateFlagsEXT$fEqDiscardRectangleModeEXT$fOrdDiscardRectangleModeEXT!$fStorableDiscardRectangleModeEXT$fZeroDiscardRectangleModeEXT0$fShowPipelineDiscardRectangleStateCreateInfoEXT1$fShowPhysicalDeviceDiscardRectanglePropertiesEXT(EXT_CONDITIONAL_RENDERING_EXTENSION_NAME&EXT_CONDITIONAL_RENDERING_SPEC_VERSIONConditionalRenderingFlagBitsEXTConditionalRenderingFlagsEXTG$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+$fFiniteBitsConditionalRenderingFlagBitsEXT$$fEqConditionalRenderingBeginInfoEXT3$fShowPhysicalDeviceConditionalRenderingFeaturesEXT9$fShowCommandBufferInheritanceConditionalRenderingInfoEXT&$fShowConditionalRenderingBeginInfoEXT(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 $fShowCalibratedTimestampInfoEXTAMD_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!$fStorableShaderStatisticsInfoAMD$$fFromCStructShaderStatisticsInfoAMD"$fToCStructShaderStatisticsInfoAMD$fReadShaderInfoTypeAMD$fShowShaderInfoTypeAMD$fEqShaderResourceUsageAMD$fEqShaderInfoTypeAMD$fOrdShaderInfoTypeAMD$fStorableShaderInfoTypeAMD$fZeroShaderInfoTypeAMD$fShowShaderStatisticsInfoAMD$fShowShaderResourceUsageAMD 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$fShowSemaphoreWaitInfo!$fShowTimelineSemaphoreSubmitInfo$fShowSemaphoreTypeCreateInfo/$fShowPhysicalDeviceTimelineSemaphoreProperties-$fShowPhysicalDeviceTimelineSemaphoreFeatures%KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME#KHR_TIMELINE_SEMAPHORE_SPEC_VERSIONSemaphoreSignalInfoKHRSemaphoreWaitInfoKHRTimelineSemaphoreSubmitInfoKHRSemaphoreTypeCreateInfoKHR,PhysicalDeviceTimelineSemaphorePropertiesKHR*PhysicalDeviceTimelineSemaphoreFeaturesKHRSemaphoreWaitFlagBitsKHRSemaphoreWaitFlagsKHRSEMAPHORE_WAIT_ANY_BIT_KHRSEMAPHORE_TYPE_TIMELINE_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$$fShowFramebufferAttachmentImageInfo&$fShowFramebufferAttachmentsCreateInfo0$fShowPhysicalDeviceImagelessFramebufferFeatures(KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME&KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION RenderPassAttachmentBeginInfoKHR!FramebufferAttachmentImageInfoKHR#FramebufferAttachmentsCreateInfoKHR-PhysicalDeviceImagelessFramebufferFeaturesKHR$FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR4STRUCTURE_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,$fShowMemoryOpaqueCaptureAddressAllocateInfo*$fShowBufferOpaqueCaptureAddressCreateInfo$fShowBufferDeviceAddressInfo/$fShowPhysicalDeviceBufferDeviceAddressFeatures(KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME&KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION'DeviceMemoryOpaqueCaptureAddressInfoKHR)MemoryOpaqueCaptureAddressAllocateInfoKHR'BufferOpaqueCaptureAddressCreateInfoKHRBufferDeviceAddressInfoKHR,PhysicalDeviceBufferDeviceAddressFeaturesKHR5MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR&MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR3BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR*BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHRSTRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR$fToCStructCommandBufferInheritanceRenderPassTransformInfoQCOM$$fEqRenderPassTransformBeginInfoQCOM9$fShowCommandBufferInheritanceRenderPassTransformInfoQCOM&$fShowRenderPassTransformBeginInfoQCOMKHR_SWAPCHAIN_EXTENSION_NAMEKHR_SWAPCHAIN_SPEC_VERSIONSwapchainCreateFlagBitsKHRSwapchainCreateFlagsKHR,$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'$fZeroDeviceGroupSwapchainCreateInfoKHR+$fStorableDeviceGroupSwapchainCreateInfoKHR.$fFromCStructDeviceGroupSwapchainCreateInfoKHR,$fToCStructDeviceGroupSwapchainCreateInfoKHR'$fZeroDeviceGroupPresentCapabilitiesKHR+$fStorableDeviceGroupPresentCapabilitiesKHR.$fFromCStructDeviceGroupPresentCapabilitiesKHR,$fToCStructDeviceGroupPresentCapabilitiesKHR$fZeroDeviceGroupPresentInfoKHR&$fFromCStructDeviceGroupPresentInfoKHR$$fToCStructDeviceGroupPresentInfoKHR$fExtensiblePresentInfoKHR $fReadSwapchainCreateFlagBitsKHR $fShowSwapchainCreateFlagBitsKHR$fZeroSwapchainCreateInfoKHR#$fFromCStructSwapchainCreateInfoKHR!$fToCStructSwapchainCreateInfoKHR"$fExtensibleSwapchainCreateInfoKHR$fEqImageSwapchainCreateInfoKHR#$fEqBindImageMemorySwapchainInfoKHR$fEqAcquireNextImageInfoKHR%$fEqDeviceGroupPresentModeFlagBitsKHR&$fOrdDeviceGroupPresentModeFlagBitsKHR+$fStorableDeviceGroupPresentModeFlagBitsKHR'$fZeroDeviceGroupPresentModeFlagBitsKHR'$fBitsDeviceGroupPresentModeFlagBitsKHR-$fFiniteBitsDeviceGroupPresentModeFlagBitsKHR%$fEqDeviceGroupSwapchainCreateInfoKHR$fEqSwapchainCreateFlagBitsKHR$fOrdSwapchainCreateFlagBitsKHR$$fStorableSwapchainCreateFlagBitsKHR $fZeroSwapchainCreateFlagBitsKHR $fBitsSwapchainCreateFlagBitsKHR&$fFiniteBitsSwapchainCreateFlagBitsKHR'$fShowDeviceGroupSwapchainCreateInfoKHR$fShowDeviceGroupPresentInfoKHR$fShowAcquireNextImageInfoKHR%$fShowBindImageMemorySwapchainInfoKHR!$fShowImageSwapchainCreateInfoKHR'$fShowDeviceGroupPresentCapabilitiesKHR$fShowPresentInfoKHR$fShowSwapchainCreateInfoKHR+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-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$fStorableSurfaceFormat2KHR$fFromCStructSurfaceFormat2KHR$fToCStructSurfaceFormat2KHR$fShowSurfaceFormat2KHR$fShowSurfaceCapabilities2KHR#$fShowPhysicalDeviceSurfaceInfo2KHR$KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME"KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION"$sel:srcRect:DisplayPresentInfoKHR"$sel:dstRect:DisplayPresentInfoKHR%$sel:persistent:DisplayPresentInfoKHR$fZeroDisplayPresentInfoKHR$fStorableDisplayPresentInfoKHR"$fFromCStructDisplayPresentInfoKHR $fToCStructDisplayPresentInfoKHR$fShowDisplayPresentInfoKHRKHR_DISPLAY_EXTENSION_NAMEKHR_DISPLAY_SPEC_VERSIONDisplayPlaneAlphaFlagBitsKHRDisplayPlaneAlphaFlagsKHRDisplaySurfaceCreateFlagsKHRDisplayModeCreateFlagsKHR&$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"$fStorableDisplayModeParametersKHR%$fFromCStructDisplayModeParametersKHR#$fToCStructDisplayModeParametersKHR$fZeroDisplayModePropertiesKHR"$fStorableDisplayModePropertiesKHR%$fFromCStructDisplayModePropertiesKHR#$fToCStructDisplayModePropertiesKHR$fReadDisplayModeCreateFlagsKHR$fShowDisplayModeCreateFlagsKHR$fZeroDisplayModeCreateInfoKHR"$fStorableDisplayModeCreateInfoKHR%$fFromCStructDisplayModeCreateInfoKHR#$fToCStructDisplayModeCreateInfoKHR"$fReadDisplaySurfaceCreateFlagsKHR"$fShowDisplaySurfaceCreateFlagsKHR"$fReadDisplayPlaneAlphaFlagBitsKHR"$fShowDisplayPlaneAlphaFlagBitsKHR!$fZeroDisplayPlaneCapabilitiesKHR%$fStorableDisplayPlaneCapabilitiesKHR($fFromCStructDisplayPlaneCapabilitiesKHR&$fToCStructDisplayPlaneCapabilitiesKHR!$fZeroDisplaySurfaceCreateInfoKHR%$fStorableDisplaySurfaceCreateInfoKHR($fFromCStructDisplaySurfaceCreateInfoKHR&$fToCStructDisplaySurfaceCreateInfoKHR$fEqDisplayPlanePropertiesKHR$fEqDisplayModeCreateFlagsKHR$fOrdDisplayModeCreateFlagsKHR#$fStorableDisplayModeCreateFlagsKHR$fZeroDisplayModeCreateFlagsKHR$fBitsDisplayModeCreateFlagsKHR%$fFiniteBitsDisplayModeCreateFlagsKHR $fEqDisplaySurfaceCreateFlagsKHR!$fOrdDisplaySurfaceCreateFlagsKHR&$fStorableDisplaySurfaceCreateFlagsKHR"$fZeroDisplaySurfaceCreateFlagsKHR"$fBitsDisplaySurfaceCreateFlagsKHR($fFiniteBitsDisplaySurfaceCreateFlagsKHR $fEqDisplayPlaneAlphaFlagBitsKHR!$fOrdDisplayPlaneAlphaFlagBitsKHR&$fStorableDisplayPlaneAlphaFlagBitsKHR"$fZeroDisplayPlaneAlphaFlagBitsKHR"$fBitsDisplayPlaneAlphaFlagBitsKHR($fFiniteBitsDisplayPlaneAlphaFlagBitsKHR!$fShowDisplaySurfaceCreateInfoKHR!$fShowDisplayPlaneCapabilitiesKHR$fShowDisplayModeCreateInfoKHR$fShowDisplayModePropertiesKHR$fShowDisplayModeParametersKHR$fShowDisplayPlanePropertiesKHR$fShowDisplayPropertiesKHR+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$$fStorableDisplayPlaneProperties2KHR'$fFromCStructDisplayPlaneProperties2KHR%$fToCStructDisplayPlaneProperties2KHR$fZeroDisplayModeProperties2KHR#$fStorableDisplayModeProperties2KHR&$fFromCStructDisplayModeProperties2KHR$$fToCStructDisplayModeProperties2KHR$fZeroDisplayPlaneInfo2KHR$fStorableDisplayPlaneInfo2KHR!$fFromCStructDisplayPlaneInfo2KHR$fToCStructDisplayPlaneInfo2KHR"$fZeroDisplayPlaneCapabilities2KHR&$fStorableDisplayPlaneCapabilities2KHR)$fFromCStructDisplayPlaneCapabilities2KHR'$fToCStructDisplayPlaneCapabilities2KHR$fEqDisplayPlaneInfo2KHR"$fShowDisplayPlaneCapabilities2KHR$fShowDisplayPlaneInfo2KHR$fShowDisplayModeProperties2KHR $fShowDisplayPlaneProperties2KHR$fShowDisplayProperties2KHRKHR_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_VERSIONwithDeferredOperationKHR 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($fFiniteBitsAndroidSurfaceCreateFlagsKHR$fEqAndroidSurfaceCreateInfoKHR!$fShowAndroidSurfaceCreateInfoKHR&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.$fShowPerformanceConfigurationAcquireInfoINTEL"$fShowPerformanceOverrideInfoINTEL&$fShowPerformanceStreamMarkerInfoINTEL $fShowPerformanceMarkerInfoINTEL.$fShowQueryPoolPerformanceQueryCreateInfoINTEL'$fShowInitializePerformanceApiInfoINTEL$fShowPerformanceValueINTEL$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$fShowPresentTimesInfoGOOGLE"$fShowPastPresentationTimingGOOGLE $fShowRefreshCycleDurationGOOGLEGgpStreamDescriptor,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+$fBitsStreamDescriptorSurfaceCreateFlagsGGP1$fFiniteBitsStreamDescriptorSurfaceCreateFlagsGGP($fEqStreamDescriptorSurfaceCreateInfoGGP*$fShowStreamDescriptorSurfaceCreateInfoGGP(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.$fFiniteBitsImagePipeSurfaceCreateFlagsFUCHSIA%$fEqImagePipeSurfaceCreateInfoFUCHSIA'$fShowImagePipeSurfaceCreateInfoFUCHSIA)FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME'FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION2$sel:semaphore:SemaphoreGetZirconHandleInfoFUCHSIA3$sel:handleType:SemaphoreGetZirconHandleInfoFUCHSIA5$sel:semaphore:ImportSemaphoreZirconHandleInfoFUCHSIA1$sel:flags:ImportSemaphoreZirconHandleInfoFUCHSIA6$sel:handleType:ImportSemaphoreZirconHandleInfoFUCHSIA8$sel:zirconHandle:ImportSemaphoreZirconHandleInfoFUCHSIA,$fZeroImportSemaphoreZirconHandleInfoFUCHSIA0$fStorableImportSemaphoreZirconHandleInfoFUCHSIA3$fFromCStructImportSemaphoreZirconHandleInfoFUCHSIA1$fToCStructImportSemaphoreZirconHandleInfoFUCHSIA)$fZeroSemaphoreGetZirconHandleInfoFUCHSIA-$fStorableSemaphoreGetZirconHandleInfoFUCHSIA0$fFromCStructSemaphoreGetZirconHandleInfoFUCHSIA.$fToCStructSemaphoreGetZirconHandleInfoFUCHSIA*$fEqImportSemaphoreZirconHandleInfoFUCHSIA'$fEqSemaphoreGetZirconHandleInfoFUCHSIA)$fShowSemaphoreGetZirconHandleInfoFUCHSIA,$fShowImportSemaphoreZirconHandleInfoFUCHSIA&FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME$FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION,$sel:memory:MemoryGetZirconHandleInfoFUCHSIA0$sel:handleType:MemoryGetZirconHandleInfoFUCHSIA7$sel:memoryTypeBits:MemoryZirconHandlePropertiesFUCHSIA3$sel:handleType:ImportMemoryZirconHandleInfoFUCHSIA/$sel:handle:ImportMemoryZirconHandleInfoFUCHSIA)$fZeroImportMemoryZirconHandleInfoFUCHSIA-$fStorableImportMemoryZirconHandleInfoFUCHSIA0$fFromCStructImportMemoryZirconHandleInfoFUCHSIA.$fToCStructImportMemoryZirconHandleInfoFUCHSIA)$fZeroMemoryZirconHandlePropertiesFUCHSIA-$fStorableMemoryZirconHandlePropertiesFUCHSIA0$fFromCStructMemoryZirconHandlePropertiesFUCHSIA.$fToCStructMemoryZirconHandlePropertiesFUCHSIA&$fZeroMemoryGetZirconHandleInfoFUCHSIA*$fStorableMemoryGetZirconHandleInfoFUCHSIA-$fFromCStructMemoryGetZirconHandleInfoFUCHSIA+$fToCStructMemoryGetZirconHandleInfoFUCHSIA'$fEqImportMemoryZirconHandleInfoFUCHSIA'$fEqMemoryZirconHandlePropertiesFUCHSIA$$fEqMemoryGetZirconHandleInfoFUCHSIA&$fShowMemoryGetZirconHandleInfoFUCHSIA)$fShowMemoryZirconHandlePropertiesFUCHSIA)$fShowImportMemoryZirconHandleInfoFUCHSIA#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)$fFiniteBitsValidationCacheCreateFlagsEXT#$fEqValidationCacheHeaderVersionEXT$$fOrdValidationCacheHeaderVersionEXT)$fStorableValidationCacheHeaderVersionEXT%$fZeroValidationCacheHeaderVersionEXT.$fShowShaderModuleValidationCacheCreateInfoEXT"$fShowValidationCacheCreateInfoEXTEXT_PRIVATE_DATA_EXTENSION_NAMEEXT_PRIVATE_DATA_SPEC_VERSION PrivateDataSlotCreateFlagBitsEXTPrivateDataSlotCreateFlagsEXT5$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,$fFiniteBitsPrivateDataSlotCreateFlagBitsEXT $fEqPrivateDataSlotCreateInfoEXT*$fShowPhysicalDevicePrivateDataFeaturesEXT"$fShowPrivateDataSlotCreateInfoEXT$$fShowDevicePrivateDataCreateInfoEXT 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&$fFiniteBitsMetalSurfaceCreateFlagsEXT$fEqMetalSurfaceCreateInfoEXT$fShowMetalSurfaceCreateInfoEXT#EXT_HEADLESS_SURFACE_EXTENSION_NAME!EXT_HEADLESS_SURFACE_SPEC_VERSIONHeadlessSurfaceCreateFlagsEXT'$sel:flags:HeadlessSurfaceCreateInfoEXT#$fReadHeadlessSurfaceCreateFlagsEXT#$fShowHeadlessSurfaceCreateFlagsEXT"$fZeroHeadlessSurfaceCreateInfoEXT&$fStorableHeadlessSurfaceCreateInfoEXT)$fFromCStructHeadlessSurfaceCreateInfoEXT'$fToCStructHeadlessSurfaceCreateInfoEXT!$fEqHeadlessSurfaceCreateFlagsEXT"$fOrdHeadlessSurfaceCreateFlagsEXT'$fStorableHeadlessSurfaceCreateFlagsEXT#$fZeroHeadlessSurfaceCreateFlagsEXT#$fBitsHeadlessSurfaceCreateFlagsEXT)$fFiniteBitsHeadlessSurfaceCreateFlagsEXT $fEqHeadlessSurfaceCreateInfoEXT"$fShowHeadlessSurfaceCreateInfoEXTEXT_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$fStorableHdrMetadataEXT$fFromCStructHdrMetadataEXT$fToCStructHdrMetadataEXT$fEqXYColorEXT$fShowHdrMetadataEXT$fShowXYColorEXTHMONITOR(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/$fShowSurfaceCapabilitiesFullScreenExclusiveEXT,$fShowSurfaceFullScreenExclusiveWin32InfoEXT'$fShowSurfaceFullScreenExclusiveInfoEXT*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_BIT_EXTSURFACE_COUNTER_VBLANK_EXT(STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT$fReadSurfaceCounterFlagBitsEXT$fShowSurfaceCounterFlagBitsEXT$fZeroSurfaceCapabilities2EXT!$fStorableSurfaceCapabilities2EXT$$fFromCStructSurfaceCapabilities2EXT"$fToCStructSurfaceCapabilities2EXT$fEqSurfaceCounterFlagBitsEXT$fOrdSurfaceCounterFlagBitsEXT#$fStorableSurfaceCounterFlagBitsEXT$fZeroSurfaceCounterFlagBitsEXT$fBitsSurfaceCounterFlagBitsEXT%$fFiniteBitsSurfaceCounterFlagBitsEXT$fShowSurfaceCapabilities2EXT"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$fShowDisplayEventInfoEXT$fShowDeviceEventInfoEXT$fShowDisplayPowerInfoEXTIDirectFBSurface#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)$fFiniteBitsDirectFBSurfaceCreateFlagsEXT $fEqDirectFBSurfaceCreateInfoEXT"$fShowDirectFBSurfaceCreateInfoEXT&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-$fFiniteBitsDebugUtilsMessengerCreateFlagsEXT+$fEqDebugUtilsMessengerCallbackDataFlagsEXT,$fOrdDebugUtilsMessengerCallbackDataFlagsEXT1$fStorableDebugUtilsMessengerCallbackDataFlagsEXT-$fZeroDebugUtilsMessengerCallbackDataFlagsEXT-$fBitsDebugUtilsMessengerCallbackDataFlagsEXT3$fFiniteBitsDebugUtilsMessengerCallbackDataFlagsEXT($fEqDebugUtilsMessageSeverityFlagBitsEXT)$fOrdDebugUtilsMessageSeverityFlagBitsEXT.$fStorableDebugUtilsMessageSeverityFlagBitsEXT*$fZeroDebugUtilsMessageSeverityFlagBitsEXT*$fBitsDebugUtilsMessageSeverityFlagBitsEXT0$fFiniteBitsDebugUtilsMessageSeverityFlagBitsEXT$$fEqDebugUtilsMessageTypeFlagBitsEXT%$fOrdDebugUtilsMessageTypeFlagBitsEXT*$fStorableDebugUtilsMessageTypeFlagBitsEXT&$fZeroDebugUtilsMessageTypeFlagBitsEXT&$fBitsDebugUtilsMessageTypeFlagBitsEXT,$fFiniteBitsDebugUtilsMessageTypeFlagBitsEXT($fShowDebugUtilsMessengerCallbackDataEXT&$fShowDebugUtilsMessengerCreateInfoEXT$fShowDebugUtilsLabelEXT $fShowDebugUtilsObjectTagInfoEXT!$fShowDebugUtilsObjectNameInfoEXTEXT_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_EXT6DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_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-DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT)DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT+STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXTwithDebugReportCallbackEXT$fReadDebugReportFlagBitsEXT$fShowDebugReportFlagBitsEXT$fReadDebugReportObjectTypeEXT$fShowDebugReportObjectTypeEXT&$fZeroDebugReportCallbackCreateInfoEXT*$fStorableDebugReportCallbackCreateInfoEXT-$fFromCStructDebugReportCallbackCreateInfoEXT+$fToCStructDebugReportCallbackCreateInfoEXT$fEqDebugReportFlagBitsEXT$fOrdDebugReportFlagBitsEXT $fStorableDebugReportFlagBitsEXT$fZeroDebugReportFlagBitsEXT$fBitsDebugReportFlagBitsEXT"$fFiniteBitsDebugReportFlagBitsEXT$fEqDebugReportObjectTypeEXT$fOrdDebugReportObjectTypeEXT"$fStorableDebugReportObjectTypeEXT$fZeroDebugReportObjectTypeEXT&$fShowDebugReportCallbackCreateInfoEXT)KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME'KHR_ACCELERATION_STRUCTURE_SPEC_VERSION!BuildAccelerationStructureModeKHR&AccelerationStructureCreateFlagBitsKHR#AccelerationStructureCreateFlagsKHR$AccelerationStructureGeometryDataKHR TrianglesAabbs InstancesDeviceAddressConstHostAddressConst HostAddressE$sel:accelerationStructureSize:AccelerationStructureBuildSizesInfoKHR=$sel:updateScratchSize:AccelerationStructureBuildSizesInfoKHR<$sel:buildScratchSize:AccelerationStructureBuildSizesInfoKHR1$sel:src:CopyMemoryToAccelerationStructureInfoKHR1$sel:dst:CopyMemoryToAccelerationStructureInfoKHR2$sel:mode:CopyMemoryToAccelerationStructureInfoKHR1$sel:src:CopyAccelerationStructureToMemoryInfoKHR1$sel:dst:CopyAccelerationStructureToMemoryInfoKHR2$sel:mode:CopyAccelerationStructureToMemoryInfoKHR)$sel:src:CopyAccelerationStructureInfoKHR)$sel:dst:CopyAccelerationStructureInfoKHR*$sel:mode:CopyAccelerationStructureInfoKHR4$sel:versionData:AccelerationStructureVersionInfoKHRD$sel:accelerationStructure:AccelerationStructureDeviceAddressInfoKHR/$sel:transform:AccelerationStructureInstanceKHR9$sel:instanceCustomIndex:AccelerationStructureInstanceKHR*$sel:mask:AccelerationStructureInstanceKHRL$sel:instanceShaderBindingTableRecordOffset:AccelerationStructureInstanceKHR+$sel:flags:AccelerationStructureInstanceKHRD$sel:accelerationStructureReference:AccelerationStructureInstanceKHR"$sel:matrixRow0:TransformMatrixKHR"$sel:matrixRow1:TransformMatrixKHR"$sel:matrixRow2:TransformMatrixKHR$sel:minX:AabbPositionsKHR$sel:minY:AabbPositionsKHR$sel:minZ:AabbPositionsKHR$sel:maxX:AabbPositionsKHR$sel:maxY:AabbPositionsKHR$sel:maxZ:AabbPositionsKHR3$sel:createFlags:AccelerationStructureCreateInfoKHR.$sel:buffer:AccelerationStructureCreateInfoKHR.$sel:offset:AccelerationStructureCreateInfoKHR,$sel:size:AccelerationStructureCreateInfoKHR-$sel:type':AccelerationStructureCreateInfoKHR5$sel:deviceAddress:AccelerationStructureCreateInfoKHR:$sel:primitiveCount:AccelerationStructureBuildRangeInfoKHR;$sel:primitiveOffset:AccelerationStructureBuildRangeInfoKHR7$sel:firstVertex:AccelerationStructureBuildRangeInfoKHR;$sel:transformOffset:AccelerationStructureBuildRangeInfoKHR4$sel:type':AccelerationStructureBuildGeometryInfoKHR4$sel:flags:AccelerationStructureBuildGeometryInfoKHR3$sel:mode: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:maxVertex:AccelerationStructureGeometryTrianglesDataKHR<$sel:indexType:AccelerationStructureGeometryTrianglesDataKHR<$sel:indexData:AccelerationStructureGeometryTrianglesDataKHR@$sel:transformData:AccelerationStructureGeometryTrianglesDataKHRF$sel:maxGeometryCount:PhysicalDeviceAccelerationStructurePropertiesKHRF$sel:maxInstanceCount:PhysicalDeviceAccelerationStructurePropertiesKHRG$sel:maxPrimitiveCount:PhysicalDeviceAccelerationStructurePropertiesKHRa$sel:maxPerStageDescriptorAccelerationStructures:PhysicalDeviceAccelerationStructurePropertiesKHRp$sel:maxPerStageDescriptorUpdateAfterBindAccelerationStructures:PhysicalDeviceAccelerationStructurePropertiesKHR\$sel:maxDescriptorSetAccelerationStructures:PhysicalDeviceAccelerationStructurePropertiesKHRk$sel:maxDescriptorSetUpdateAfterBindAccelerationStructures:PhysicalDeviceAccelerationStructurePropertiesKHRd$sel:minAccelerationStructureScratchOffsetAlignment:PhysicalDeviceAccelerationStructurePropertiesKHRI$sel:accelerationStructure:PhysicalDeviceAccelerationStructureFeaturesKHRV$sel:accelerationStructureCaptureReplay:PhysicalDeviceAccelerationStructureFeaturesKHRV$sel:accelerationStructureIndirectBuild:PhysicalDeviceAccelerationStructureFeaturesKHRU$sel:accelerationStructureHostCommands:PhysicalDeviceAccelerationStructureFeaturesKHRi$sel:descriptorBindingAccelerationStructureUpdateAfterBind:PhysicalDeviceAccelerationStructureFeaturesKHRF$sel:accelerationStructures:WriteDescriptorSetAccelerationStructureKHR5ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR3ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR4ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR,ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR*ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHRGEOMETRY_TYPE_INSTANCES_KHR'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR,ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR)ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR,BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR+BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR0COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR.COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR,COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR*COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHRCACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_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_KHRwithAccelerationStructureKHR0$fZeroWriteDescriptorSetAccelerationStructureKHR7$fFromCStructWriteDescriptorSetAccelerationStructureKHR5$fToCStructWriteDescriptorSetAccelerationStructureKHR4$fZeroPhysicalDeviceAccelerationStructureFeaturesKHR8$fStorablePhysicalDeviceAccelerationStructureFeaturesKHR;$fFromCStructPhysicalDeviceAccelerationStructureFeaturesKHR9$fToCStructPhysicalDeviceAccelerationStructureFeaturesKHR6$fZeroPhysicalDeviceAccelerationStructurePropertiesKHR:$fStorablePhysicalDeviceAccelerationStructurePropertiesKHR=$fFromCStructPhysicalDeviceAccelerationStructurePropertiesKHR;$fToCStructPhysicalDeviceAccelerationStructurePropertiesKHR,$fZeroAccelerationStructureBuildRangeInfoKHR0$fStorableAccelerationStructureBuildRangeInfoKHR3$fFromCStructAccelerationStructureBuildRangeInfoKHR1$fToCStructAccelerationStructureBuildRangeInfoKHR$fZeroAabbPositionsKHR$fStorableAabbPositionsKHR$fFromCStructAabbPositionsKHR$fToCStructAabbPositionsKHR$fZeroTransformMatrixKHR$fStorableTransformMatrixKHR$fFromCStructTransformMatrixKHR$fToCStructTransformMatrixKHR/$fZeroAccelerationStructureDeviceAddressInfoKHR3$fStorableAccelerationStructureDeviceAddressInfoKHR6$fFromCStructAccelerationStructureDeviceAddressInfoKHR4$fToCStructAccelerationStructureDeviceAddressInfoKHR)$fZeroAccelerationStructureVersionInfoKHR0$fFromCStructAccelerationStructureVersionInfoKHR.$fToCStructAccelerationStructureVersionInfoKHR,$fZeroAccelerationStructureBuildSizesInfoKHR0$fStorableAccelerationStructureBuildSizesInfoKHR3$fFromCStructAccelerationStructureBuildSizesInfoKHR1$fToCStructAccelerationStructureBuildSizesInfoKHR$fZeroDeviceOrHostAddressKHR!$fToCStructDeviceOrHostAddressKHR!$fZeroDeviceOrHostAddressConstKHR&$fToCStructDeviceOrHostAddressConstKHR3$fZeroAccelerationStructureGeometryInstancesDataKHR8$fToCStructAccelerationStructureGeometryInstancesDataKHR/$fZeroAccelerationStructureGeometryAabbsDataKHR4$fToCStructAccelerationStructureGeometryAabbsDataKHR3$fZeroAccelerationStructureGeometryTrianglesDataKHR8$fToCStructAccelerationStructureGeometryTrianglesDataKHR*$fZeroAccelerationStructureGeometryDataKHR/$fToCStructAccelerationStructureGeometryDataKHR!$fReadGeometryInstanceFlagBitsKHR!$fShowGeometryInstanceFlagBitsKHR&$fZeroAccelerationStructureInstanceKHR*$fStorableAccelerationStructureInstanceKHR-$fFromCStructAccelerationStructureInstanceKHR+$fToCStructAccelerationStructureInstanceKHR$fReadGeometryFlagBitsKHR$fShowGeometryFlagBitsKHR+$fReadBuildAccelerationStructureFlagBitsKHR+$fShowBuildAccelerationStructureFlagBitsKHR,$fReadAccelerationStructureCreateFlagBitsKHR,$fShowAccelerationStructureCreateFlagBitsKHR&$fReadCopyAccelerationStructureModeKHR&$fShowCopyAccelerationStructureModeKHR.$fZeroCopyMemoryToAccelerationStructureInfoKHR3$fToCStructCopyMemoryToAccelerationStructureInfoKHR.$fZeroCopyAccelerationStructureToMemoryInfoKHR3$fToCStructCopyAccelerationStructureToMemoryInfoKHR&$fZeroCopyAccelerationStructureInfoKHR*$fStorableCopyAccelerationStructureInfoKHR-$fFromCStructCopyAccelerationStructureInfoKHR+$fToCStructCopyAccelerationStructureInfoKHR'$fReadBuildAccelerationStructureModeKHR'$fShowBuildAccelerationStructureModeKHR"$fReadAccelerationStructureTypeKHR"$fShowAccelerationStructureTypeKHR($fZeroAccelerationStructureCreateInfoKHR,$fStorableAccelerationStructureCreateInfoKHR/$fFromCStructAccelerationStructureCreateInfoKHR-$fToCStructAccelerationStructureCreateInfoKHR$fReadGeometryTypeKHR$fShowGeometryTypeKHR&$fZeroAccelerationStructureGeometryKHR+$fToCStructAccelerationStructureGeometryKHR/$fZeroAccelerationStructureBuildGeometryInfoKHR4$fToCStructAccelerationStructureBuildGeometryInfoKHR'$fReadAccelerationStructureBuildTypeKHR'$fShowAccelerationStructureBuildTypeKHR+$fReadAccelerationStructureCompatibilityKHR+$fShowAccelerationStructureCompatibilityKHR2$fEqPhysicalDeviceAccelerationStructureFeaturesKHR4$fEqPhysicalDeviceAccelerationStructurePropertiesKHR*$fEqAccelerationStructureBuildRangeInfoKHR$fEqAabbPositionsKHR$fEqTransformMatrixKHR-$fEqAccelerationStructureDeviceAddressInfoKHR*$fEqAccelerationStructureBuildSizesInfoKHR$fShowDeviceOrHostAddressKHR!$fShowDeviceOrHostAddressConstKHR*$fShowAccelerationStructureGeometryDataKHR$fEqGeometryInstanceFlagBitsKHR $fOrdGeometryInstanceFlagBitsKHR%$fStorableGeometryInstanceFlagBitsKHR!$fZeroGeometryInstanceFlagBitsKHR!$fBitsGeometryInstanceFlagBitsKHR'$fFiniteBitsGeometryInstanceFlagBitsKHR$fEqGeometryFlagBitsKHR$fOrdGeometryFlagBitsKHR$fStorableGeometryFlagBitsKHR$fZeroGeometryFlagBitsKHR$fBitsGeometryFlagBitsKHR$fFiniteBitsGeometryFlagBitsKHR)$fEqBuildAccelerationStructureFlagBitsKHR*$fOrdBuildAccelerationStructureFlagBitsKHR/$fStorableBuildAccelerationStructureFlagBitsKHR+$fZeroBuildAccelerationStructureFlagBitsKHR+$fBitsBuildAccelerationStructureFlagBitsKHR1$fFiniteBitsBuildAccelerationStructureFlagBitsKHR*$fEqAccelerationStructureCreateFlagBitsKHR+$fOrdAccelerationStructureCreateFlagBitsKHR0$fStorableAccelerationStructureCreateFlagBitsKHR,$fZeroAccelerationStructureCreateFlagBitsKHR,$fBitsAccelerationStructureCreateFlagBitsKHR2$fFiniteBitsAccelerationStructureCreateFlagBitsKHR$$fEqCopyAccelerationStructureModeKHR%$fOrdCopyAccelerationStructureModeKHR*$fStorableCopyAccelerationStructureModeKHR&$fZeroCopyAccelerationStructureModeKHR$$fEqCopyAccelerationStructureInfoKHR%$fEqBuildAccelerationStructureModeKHR&$fOrdBuildAccelerationStructureModeKHR+$fStorableBuildAccelerationStructureModeKHR'$fZeroBuildAccelerationStructureModeKHR $fEqAccelerationStructureTypeKHR!$fOrdAccelerationStructureTypeKHR&$fStorableAccelerationStructureTypeKHR"$fZeroAccelerationStructureTypeKHR&$fEqAccelerationStructureCreateInfoKHR$fEqGeometryTypeKHR$fOrdGeometryTypeKHR$fStorableGeometryTypeKHR$fZeroGeometryTypeKHR%$fEqAccelerationStructureBuildTypeKHR&$fOrdAccelerationStructureBuildTypeKHR+$fStorableAccelerationStructureBuildTypeKHR'$fZeroAccelerationStructureBuildTypeKHR)$fEqAccelerationStructureCompatibilityKHR*$fOrdAccelerationStructureCompatibilityKHR/$fStorableAccelerationStructureCompatibilityKHR+$fZeroAccelerationStructureCompatibilityKHR,$fShowAccelerationStructureBuildSizesInfoKHR.$fShowCopyMemoryToAccelerationStructureInfoKHR.$fShowCopyAccelerationStructureToMemoryInfoKHR&$fShowCopyAccelerationStructureInfoKHR)$fShowAccelerationStructureVersionInfoKHR/$fShowAccelerationStructureDeviceAddressInfoKHR&$fShowAccelerationStructureInstanceKHR$fShowTransformMatrixKHR$fShowAabbPositionsKHR($fShowAccelerationStructureCreateInfoKHR,$fShowAccelerationStructureBuildRangeInfoKHR/$fShowAccelerationStructureBuildGeometryInfoKHR&$fShowAccelerationStructureGeometryKHR3$fShowAccelerationStructureGeometryInstancesDataKHR/$fShowAccelerationStructureGeometryAabbsDataKHR3$fShowAccelerationStructureGeometryTrianglesDataKHR6$fShowPhysicalDeviceAccelerationStructurePropertiesKHR4$fShowPhysicalDeviceAccelerationStructureFeaturesKHR0$fShowWriteDescriptorSetAccelerationStructureKHREXT_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!$fShowDebugMarkerObjectTagInfoEXT"$fShowDebugMarkerObjectNameInfoEXT'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,$fShowDisplayNativeHdrSurfaceCapabilitiesAMD-$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#$fShowDescriptorUpdateTemplateEntry#$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$fShowPushConstantRange"$sel:flags:PipelineCacheCreateInfo,$sel:initialDataSize:PipelineCacheCreateInfo($sel:initialData:PipelineCacheCreateInfowithPipelineCache$fZeroPipelineCacheCreateInfo!$fStorablePipelineCacheCreateInfo$$fFromCStructPipelineCacheCreateInfo"$fToCStructPipelineCacheCreateInfo$fShowPipelineCacheCreateInfo$sel:size:MemoryRequirements!$sel:alignment:MemoryRequirements&$sel:memoryTypeBits:MemoryRequirements$fZeroMemoryRequirements$fStorableMemoryRequirements$fFromCStructMemoryRequirements$fToCStructMemoryRequirements$fEqMemoryRequirements$fShowMemoryRequirements$sel:layerName:LayerProperties $sel:specVersion:LayerProperties*$sel:implementationVersion:LayerProperties $sel:description:LayerProperties$fZeroLayerProperties$fStorableLayerProperties$fFromCStructLayerProperties$fToCStructLayerProperties$fShowLayerProperties&$sel:extensionName:ExtensionProperties$$sel:specVersion:ExtensionProperties$fZeroExtensionProperties$fStorableExtensionProperties $fFromCStructExtensionProperties$fToCStructExtensionProperties$fShowExtensionProperties$sel:flags:EventCreateInfo withEvent$fZeroEventCreateInfo$fStorableEventCreateInfo$fFromCStructEventCreateInfo$fToCStructEventCreateInfo$fEqEventCreateInfo$fShowEventCreateInfo $sel:flags:CommandPoolCreateInfo+$sel:queueFamilyIndex:CommandPoolCreateInfowithCommandPool$fZeroCommandPoolCreateInfo$fStorableCommandPoolCreateInfo"$fFromCStructCommandPoolCreateInfo $fToCStructCommandPoolCreateInfo$fEqCommandPoolCreateInfo$fShowCommandPoolCreateInfo$sel:flags:BufferViewCreateInfo $sel:buffer:BufferViewCreateInfo $sel:format:BufferViewCreateInfo $sel:offset:BufferViewCreateInfo$sel:range:BufferViewCreateInfowithBufferView$fZeroBufferViewCreateInfo$fStorableBufferViewCreateInfo!$fFromCStructBufferViewCreateInfo$fToCStructBufferViewCreateInfo$fEqBufferViewCreateInfo$fShowBufferViewCreateInfo>$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)$fShowPhysicalDeviceExternalSemaphoreInfo2KHR_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$fShowBindBufferMemoryInfo 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%$fStorableSparseImageFormatProperties($fFromCStructSparseImageFormatProperties&$fToCStructSparseImageFormatProperties#$fZeroSparseImageMemoryRequirements'$fStorableSparseImageMemoryRequirements*$fFromCStructSparseImageMemoryRequirements($fToCStructSparseImageMemoryRequirements$fZeroImageSubresource$fStorableImageSubresource$fFromCStructImageSubresource$fToCStructImageSubresource$fZeroSparseMemoryBind$fStorableSparseMemoryBind$fFromCStructSparseMemoryBind$fToCStructSparseMemoryBind$fZeroSparseImageMemoryBind$fStorableSparseImageMemoryBind"$fFromCStructSparseImageMemoryBind $fToCStructSparseImageMemoryBind $fZeroSparseBufferMemoryBindInfo'$fFromCStructSparseBufferMemoryBindInfo%$fToCStructSparseBufferMemoryBindInfo%$fZeroSparseImageOpaqueMemoryBindInfo,$fFromCStructSparseImageOpaqueMemoryBindInfo*$fToCStructSparseImageOpaqueMemoryBindInfo$fZeroSparseImageMemoryBindInfo&$fFromCStructSparseImageMemoryBindInfo$$fToCStructSparseImageMemoryBindInfo$fZeroBindSparseInfo$fFromCStructBindSparseInfo$fToCStructBindSparseInfo$fExtensibleBindSparseInfo$fEqImageSubresource$fEqSparseMemoryBind$fShowBindSparseInfo$fShowSparseImageMemoryBindInfo%$fShowSparseImageOpaqueMemoryBindInfo $fShowSparseBufferMemoryBindInfo$fShowSparseImageMemoryBind$fShowSparseMemoryBind$fShowImageSubresource#$fShowSparseImageMemoryRequirements!$fShowSparseImageFormatProperties6$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($fStorableSparseImageMemoryRequirements2+$fFromCStructSparseImageMemoryRequirements2)$fToCStructSparseImageMemoryRequirements2!$fEqBufferMemoryRequirementsInfo2&$fEqImageSparseMemoryRequirementsInfo2$$fShowSparseImageMemoryRequirements2$fShowMemoryRequirements2($fShowImageSparseMemoryRequirementsInfo2"$fShowImageMemoryRequirementsInfo2#$fShowBufferMemoryRequirementsInfo2,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$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$sel:next:SemaphoreCreateInfo$sel:flags:SemaphoreCreateInfo withSemaphore$fZeroSemaphoreCreateInfo $fFromCStructSemaphoreCreateInfo$fToCStructSemaphoreCreateInfo$fExtensibleSemaphoreCreateInfo$fShowSemaphoreCreateInfo$sel:next:SubmitInfo$sel:waitSemaphores:SubmitInfo $sel:waitDstStageMask:SubmitInfo$sel:commandBuffers:SubmitInfo $sel:signalSemaphores:SubmitInfoqueueWaitIdleSafedeviceWaitIdleSafe$fZeroSubmitInfo$fFromCStructSubmitInfo$fToCStructSubmitInfo$fExtensibleSubmitInfo$fShowSubmitInfo$sel:next:QueryPoolCreateInfo$sel:flags:QueryPoolCreateInfo"$sel:queryType:QueryPoolCreateInfo#$sel:queryCount:QueryPoolCreateInfo+$sel:pipelineStatistics:QueryPoolCreateInfo withQueryPool$fZeroQueryPoolCreateInfo $fFromCStructQueryPoolCreateInfo$fToCStructQueryPoolCreateInfo$fExtensibleQueryPoolCreateInfo$fShowQueryPoolCreateInfo$$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)$fZeroPipelineDepthStencilStateCreateInfo-$fStorablePipelineDepthStencilStateCreateInfo0$fFromCStructPipelineDepthStencilStateCreateInfo.$fToCStructPipelineDepthStencilStateCreateInfo $fZeroGraphicsPipelineCreateInfo'$fFromCStructGraphicsPipelineCreateInfo%$fToCStructGraphicsPipelineCreateInfo&$fExtensibleGraphicsPipelineCreateInfo $fEqViewport$fEqSpecializationMapEntry!$fEqVertexInputBindingDescription#$fEqVertexInputAttributeDescription($fEqPipelineInputAssemblyStateCreateInfo%$fEqPipelineColorBlendAttachmentState$fEqStencilOpState $fShowGraphicsPipelineCreateInfo)$fShowPipelineDepthStencilStateCreateInfo$fShowStencilOpState$$fShowPipelineDynamicStateCreateInfo'$fShowPipelineColorBlendStateCreateInfo'$fShowPipelineColorBlendAttachmentState($fShowPipelineMultisampleStateCreateInfo*$fShowPipelineRasterizationStateCreateInfo%$fShowPipelineViewportStateCreateInfo)$fShowPipelineTessellationStateCreateInfo*$fShowPipelineInputAssemblyStateCreateInfo($fShowPipelineVertexInputStateCreateInfo%$fShowVertexInputAttributeDescription#$fShowVertexInputBindingDescription$fShowComputePipelineCreateInfo#$fShowPipelineShaderStageCreateInfo$fShowSpecializationInfo$fShowSpecializationMapEntry$fShowViewport+NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME)NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSIONIndirectCommandsTokenTypeNVIndirectStateFlagBitsNVIndirectStateFlagsNV%IndirectCommandsLayoutUsageFlagBitsNV"IndirectCommandsLayoutUsageFlagsNV@$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+$fBitsIndirectCommandsLayoutUsageFlagBitsNV1$fFiniteBitsIndirectCommandsLayoutUsageFlagBitsNV$fEqIndirectStateFlagBitsNV$fOrdIndirectStateFlagBitsNV!$fStorableIndirectStateFlagBitsNV$fZeroIndirectStateFlagBitsNV$fBitsIndirectStateFlagBitsNV#$fFiniteBitsIndirectStateFlagBitsNV$fEqIndirectCommandsTokenTypeNV $fOrdIndirectCommandsTokenTypeNV%$fStorableIndirectCommandsTokenTypeNV!$fZeroIndirectCommandsTokenTypeNV/$fShowGeneratedCommandsMemoryRequirementsInfoNV$fShowGeneratedCommandsInfoNV($fShowIndirectCommandsLayoutCreateInfoNV#$fShowIndirectCommandsLayoutTokenNV$fShowIndirectCommandsStreamNV$$fShowSetStateFlagsIndirectCommandNV'$fShowBindVertexBufferIndirectCommandNV&$fShowBindIndexBufferIndirectCommandNV&$fShowBindShaderGroupIndirectCommandNV.$fShowGraphicsPipelineShaderGroupsCreateInfoNV%$fShowGraphicsShaderGroupCreateInfoNV7$fShowPhysicalDeviceDeviceGeneratedCommandsPropertiesNV5$fShowPhysicalDeviceDeviceGeneratedCommandsFeaturesNV'KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME%KHR_RAY_TRACING_PIPELINE_SPEC_VERSIONG$sel:maxPipelineRayPayloadSize:RayTracingPipelineInterfaceCreateInfoKHRL$sel:maxPipelineRayHitAttributeSize:RayTracingPipelineInterfaceCreateInfoKHR&$sel:width:TraceRaysIndirectCommandKHR'$sel:height:TraceRaysIndirectCommandKHR&$sel:depth:TraceRaysIndirectCommandKHR0$sel:deviceAddress:StridedDeviceAddressRegionKHR)$sel:stride:StridedDeviceAddressRegionKHR'$sel:size:StridedDeviceAddressRegionKHRH$sel:shaderGroupHandleSize:PhysicalDeviceRayTracingPipelinePropertiesKHRG$sel:maxRayRecursionDepth:PhysicalDeviceRayTracingPipelinePropertiesKHRG$sel:maxShaderGroupStride:PhysicalDeviceRayTracingPipelinePropertiesKHRK$sel:shaderGroupBaseAlignment:PhysicalDeviceRayTracingPipelinePropertiesKHRU$sel:shaderGroupHandleCaptureReplaySize:PhysicalDeviceRayTracingPipelinePropertiesKHRP$sel:maxRayDispatchInvocationCount:PhysicalDeviceRayTracingPipelinePropertiesKHRM$sel:shaderGroupHandleAlignment:PhysicalDeviceRayTracingPipelinePropertiesKHRI$sel:maxRayHitAttributeSize:PhysicalDeviceRayTracingPipelinePropertiesKHRC$sel:rayTracingPipeline:PhysicalDeviceRayTracingPipelineFeaturesKHRa$sel:rayTracingPipelineShaderGroupHandleCaptureReplay:PhysicalDeviceRayTracingPipelineFeaturesKHRf$sel:rayTracingPipelineShaderGroupHandleCaptureReplayMixed:PhysicalDeviceRayTracingPipelineFeaturesKHRT$sel:rayTracingPipelineTraceRaysIndirect:PhysicalDeviceRayTracingPipelineFeaturesKHRM$sel:rayTraversalPrimitiveCulling:PhysicalDeviceRayTracingPipelineFeaturesKHR)$sel:next:RayTracingPipelineCreateInfoKHR*$sel:flags:RayTracingPipelineCreateInfoKHR+$sel:stages:RayTracingPipelineCreateInfoKHR+$sel:groups:RayTracingPipelineCreateInfoKHRA$sel:maxPipelineRayRecursionDepth:RayTracingPipelineCreateInfoKHR0$sel:libraryInfo:RayTracingPipelineCreateInfoKHR5$sel:libraryInterface:RayTracingPipelineCreateInfoKHR1$sel:dynamicState: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:RayTracingShaderGroupCreateInfoKHR$SHADER_GROUP_SHADER_INTERSECTION_KHRSHADER_GROUP_SHADER_ANY_HIT_KHR#SHADER_GROUP_SHADER_CLOSEST_HIT_KHRSHADER_GROUP_SHADER_GENERAL_KHR6RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR5RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR)RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHRwithRayTracingPipelinesKHR1$fZeroPhysicalDeviceRayTracingPipelineFeaturesKHR5$fStorablePhysicalDeviceRayTracingPipelineFeaturesKHR8$fFromCStructPhysicalDeviceRayTracingPipelineFeaturesKHR6$fToCStructPhysicalDeviceRayTracingPipelineFeaturesKHR3$fZeroPhysicalDeviceRayTracingPipelinePropertiesKHR7$fStorablePhysicalDeviceRayTracingPipelinePropertiesKHR:$fFromCStructPhysicalDeviceRayTracingPipelinePropertiesKHR8$fToCStructPhysicalDeviceRayTracingPipelinePropertiesKHR#$fZeroStridedDeviceAddressRegionKHR'$fStorableStridedDeviceAddressRegionKHR*$fFromCStructStridedDeviceAddressRegionKHR($fToCStructStridedDeviceAddressRegionKHR!$fZeroTraceRaysIndirectCommandKHR%$fStorableTraceRaysIndirectCommandKHR($fFromCStructTraceRaysIndirectCommandKHR&$fToCStructTraceRaysIndirectCommandKHR.$fZeroRayTracingPipelineInterfaceCreateInfoKHR2$fStorableRayTracingPipelineInterfaceCreateInfoKHR5$fFromCStructRayTracingPipelineInterfaceCreateInfoKHR3$fToCStructRayTracingPipelineInterfaceCreateInfoKHR"$fReadRayTracingShaderGroupTypeKHR"$fShowRayTracingShaderGroupTypeKHR($fZeroRayTracingShaderGroupCreateInfoKHR,$fStorableRayTracingShaderGroupCreateInfoKHR/$fFromCStructRayTracingShaderGroupCreateInfoKHR-$fToCStructRayTracingShaderGroupCreateInfoKHR%$fZeroRayTracingPipelineCreateInfoKHR,$fFromCStructRayTracingPipelineCreateInfoKHR*$fToCStructRayTracingPipelineCreateInfoKHR+$fExtensibleRayTracingPipelineCreateInfoKHR$fReadShaderGroupShaderKHR$fShowShaderGroupShaderKHR/$fEqPhysicalDeviceRayTracingPipelineFeaturesKHR1$fEqPhysicalDeviceRayTracingPipelinePropertiesKHR!$fEqStridedDeviceAddressRegionKHR$fEqTraceRaysIndirectCommandKHR,$fEqRayTracingPipelineInterfaceCreateInfoKHR $fEqRayTracingShaderGroupTypeKHR!$fOrdRayTracingShaderGroupTypeKHR&$fStorableRayTracingShaderGroupTypeKHR"$fZeroRayTracingShaderGroupTypeKHR$fEqShaderGroupShaderKHR$fOrdShaderGroupShaderKHR$fStorableShaderGroupShaderKHR$fZeroShaderGroupShaderKHR.$fShowRayTracingPipelineInterfaceCreateInfoKHR!$fShowTraceRaysIndirectCommandKHR#$fShowStridedDeviceAddressRegionKHR3$fShowPhysicalDeviceRayTracingPipelinePropertiesKHR1$fShowPhysicalDeviceRayTracingPipelineFeaturesKHR%$fShowRayTracingPipelineCreateInfoKHR($fShowRayTracingShaderGroupCreateInfoKHRNV_RAY_TRACING_EXTENSION_NAMENV_RAY_TRACING_SPEC_VERSIONAccelerationStructureInstanceNVTransformMatrixNVAabbPositionsNVRayTracingShaderGroupTypeNVGeometryTypeNVAccelerationStructureTypeNVCopyAccelerationStructureModeNV$BuildAccelerationStructureFlagBitsNVGeometryInstanceFlagBitsNVGeometryFlagBitsNV!BuildAccelerationStructureFlagsNVGeometryInstanceFlagsNVGeometryFlagsNV-AccelerationStructureMemoryRequirementsTypeNV?$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:AccelerationStructureMemoryRequirementsInfoNVE$sel:accelerationStructures:WriteDescriptorSetAccelerationStructureNV@$sel:accelerationStructure:BindAccelerationStructureMemoryInfoNV1$sel:memory:BindAccelerationStructureMemoryInfoNV7$sel:memoryOffset:BindAccelerationStructureMemoryInfoNV8$sel:deviceIndices:BindAccelerationStructureMemoryInfoNV4$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_NV*ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV)ACCESS_ACCELERATION_STRUCTURE_READ_BIT_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_NVwithAccelerationStructureNVwithRayTracingPipelinesNV'$fZeroRayTracingShaderGroupCreateInfoNV+$fStorableRayTracingShaderGroupCreateInfoNV.$fFromCStructRayTracingShaderGroupCreateInfoNV,$fToCStructRayTracingShaderGroupCreateInfoNV$$fZeroRayTracingPipelineCreateInfoNV+$fFromCStructRayTracingPipelineCreateInfoNV)$fToCStructRayTracingPipelineCreateInfoNV*$fExtensibleRayTracingPipelineCreateInfoNV$fZeroGeometryTrianglesNV$fStorableGeometryTrianglesNV $fFromCStructGeometryTrianglesNV$fToCStructGeometryTrianglesNV$fZeroGeometryAABBNV$fStorableGeometryAABBNV$fFromCStructGeometryAABBNV$fToCStructGeometryAABBNV$fZeroGeometryDataNV$fStorableGeometryDataNV$fFromCStructGeometryDataNV$fToCStructGeometryDataNV$fZeroGeometryNV$fStorableGeometryNV$fFromCStructGeometryNV$fToCStructGeometryNV+$fZeroBindAccelerationStructureMemoryInfoNV2$fFromCStructBindAccelerationStructureMemoryInfoNV0$fToCStructBindAccelerationStructureMemoryInfoNV/$fZeroWriteDescriptorSetAccelerationStructureNV6$fFromCStructWriteDescriptorSetAccelerationStructureNV4$fToCStructWriteDescriptorSetAccelerationStructureNV*$fZeroPhysicalDeviceRayTracingPropertiesNV.$fStorablePhysicalDeviceRayTracingPropertiesNV1$fFromCStructPhysicalDeviceRayTracingPropertiesNV/$fToCStructPhysicalDeviceRayTracingPropertiesNV3$fReadAccelerationStructureMemoryRequirementsTypeNV3$fShowAccelerationStructureMemoryRequirementsTypeNV3$fZeroAccelerationStructureMemoryRequirementsInfoNV7$fStorableAccelerationStructureMemoryRequirementsInfoNV:$fFromCStructAccelerationStructureMemoryRequirementsInfoNV8$fToCStructAccelerationStructureMemoryRequirementsInfoNV!$fZeroAccelerationStructureInfoNV($fFromCStructAccelerationStructureInfoNV&$fToCStructAccelerationStructureInfoNV'$fZeroAccelerationStructureCreateInfoNV.$fFromCStructAccelerationStructureCreateInfoNV,$fToCStructAccelerationStructureCreateInfoNV%$fEqRayTracingShaderGroupCreateInfoNV$fEqGeometryTrianglesNV$fEqGeometryAABBNV($fEqPhysicalDeviceRayTracingPropertiesNV1$fEqAccelerationStructureMemoryRequirementsTypeNV2$fOrdAccelerationStructureMemoryRequirementsTypeNV7$fStorableAccelerationStructureMemoryRequirementsTypeNV3$fZeroAccelerationStructureMemoryRequirementsTypeNV1$fEqAccelerationStructureMemoryRequirementsInfoNV*$fShowPhysicalDeviceRayTracingPropertiesNV3$fShowAccelerationStructureMemoryRequirementsInfoNV/$fShowWriteDescriptorSetAccelerationStructureNV+$fShowBindAccelerationStructureMemoryInfoNV'$fShowAccelerationStructureCreateInfoNV!$fShowAccelerationStructureInfoNV$fShowGeometryNV$fShowGeometryDataNV$fShowGeometryAABBNV$fShowGeometryTrianglesNV$$fShowRayTracingPipelineCreateInfoNV'$fShowRayTracingShaderGroupCreateInfoNV)EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME'EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSIONG$sel:extendedDynamicState:PhysicalDeviceExtendedDynamicStateFeaturesEXT3$fZeroPhysicalDeviceExtendedDynamicStateFeaturesEXT7$fStorablePhysicalDeviceExtendedDynamicStateFeaturesEXT:$fFromCStructPhysicalDeviceExtendedDynamicStateFeaturesEXT8$fToCStructPhysicalDeviceExtendedDynamicStateFeaturesEXT1$fEqPhysicalDeviceExtendedDynamicStateFeaturesEXT3$fShowPhysicalDeviceExtendedDynamicStateFeaturesEXT$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$fShowRenderPassCreateInfo$fShowSubpassDependency$fShowSubpassDescription$fShowAttachmentReference$fShowAttachmentDescription'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$fZeroPhysicalDeviceFragmentDensityMapPropertiesEXT7$fStorablePhysicalDeviceFragmentDensityMapPropertiesEXT:$fFromCStructPhysicalDeviceFragmentDensityMapPropertiesEXT8$fToCStructPhysicalDeviceFragmentDensityMapPropertiesEXT/$fZeroRenderPassFragmentDensityMapCreateInfoEXT3$fStorableRenderPassFragmentDensityMapCreateInfoEXT6$fFromCStructRenderPassFragmentDensityMapCreateInfoEXT4$fToCStructRenderPassFragmentDensityMapCreateInfoEXT/$fEqPhysicalDeviceFragmentDensityMapFeaturesEXT/$fShowRenderPassFragmentDensityMapCreateInfoEXT3$fShowPhysicalDeviceFragmentDensityMapPropertiesEXT1$fShowPhysicalDeviceFragmentDensityMapFeaturesEXT$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$fShowMemoryAllocateInfo$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$fShowImageSubresourceRange$fShowComponentMapping$KHR_SYNCHRONIZATION_2_EXTENSION_NAME"KHR_SYNCHRONIZATION_2_SPEC_VERSIONSubmitFlagBitsKHRSubmitFlagsKHRAccessFlagBits2KHR?$sel:synchronization2:PhysicalDeviceSynchronization2FeaturesKHR$sel:stage:CheckpointData2NV'$sel:checkpointMarker:CheckpointData2NVD$sel:checkpointExecutionStageMask:QueueFamilyCheckpointProperties2NV$sel:next:SubmitInfo2KHR$sel:flags:SubmitInfo2KHR&$sel:waitSemaphoreInfos:SubmitInfo2KHR&$sel:commandBufferInfos:SubmitInfo2KHR($sel:signalSemaphoreInfos:SubmitInfo2KHR-$sel:commandBuffer:CommandBufferSubmitInfoKHR*$sel:deviceMask:CommandBufferSubmitInfoKHR%$sel:semaphore:SemaphoreSubmitInfoKHR!$sel:value:SemaphoreSubmitInfoKHR%$sel:stageMask:SemaphoreSubmitInfoKHR'$sel:deviceIndex:SemaphoreSubmitInfoKHR&$sel:dependencyFlags:DependencyInfoKHR%$sel:memoryBarriers:DependencyInfoKHR+$sel:bufferMemoryBarriers:DependencyInfoKHR*$sel:imageMemoryBarriers:DependencyInfoKHR)$sel:srcStageMask:BufferMemoryBarrier2KHR*$sel:srcAccessMask:BufferMemoryBarrier2KHR)$sel:dstStageMask:BufferMemoryBarrier2KHR*$sel:dstAccessMask:BufferMemoryBarrier2KHR0$sel:srcQueueFamilyIndex:BufferMemoryBarrier2KHR0$sel:dstQueueFamilyIndex:BufferMemoryBarrier2KHR#$sel:buffer:BufferMemoryBarrier2KHR#$sel:offset:BufferMemoryBarrier2KHR!$sel:size:BufferMemoryBarrier2KHR $sel:next:ImageMemoryBarrier2KHR($sel:srcStageMask:ImageMemoryBarrier2KHR)$sel:srcAccessMask:ImageMemoryBarrier2KHR($sel:dstStageMask:ImageMemoryBarrier2KHR)$sel:dstAccessMask:ImageMemoryBarrier2KHR%$sel:oldLayout:ImageMemoryBarrier2KHR%$sel:newLayout:ImageMemoryBarrier2KHR/$sel:srcQueueFamilyIndex:ImageMemoryBarrier2KHR/$sel:dstQueueFamilyIndex:ImageMemoryBarrier2KHR!$sel:image:ImageMemoryBarrier2KHR,$sel:subresourceRange:ImageMemoryBarrier2KHR#$sel:srcStageMask:MemoryBarrier2KHR$$sel:srcAccessMask:MemoryBarrier2KHR#$sel:dstStageMask:MemoryBarrier2KHR$$sel:dstAccessMask:MemoryBarrier2KHRSUBMIT_PROTECTED_BIT_KHR+PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT.PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT*PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV9PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR5PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR+PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR1PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT#PIPELINE_STAGE_2_TASK_SHADER_BIT_NV#PIPELINE_STAGE_2_MESH_SHADER_BIT_NV2PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR/PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR$PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHRPIPELINE_STAGE_2_CLEAR_BIT_KHRPIPELINE_STAGE_2_BLIT_BIT_KHR PIPELINE_STAGE_2_RESOLVE_BIT_KHRPIPELINE_STAGE_2_COPY_BIT_KHR%PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR%PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHRPIPELINE_STAGE_2_HOST_BIT_KHR'PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR%PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR'PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR0PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR,PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR-PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR(PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR(PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR7PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR4PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR&PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR%PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR&PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR$PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHRPIPELINE_STAGE_2_NONE_KHR)ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT0ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT1ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT+ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT'ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV(ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV6ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR,ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR-ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR*ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT2ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT%ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR$ACCESS_2_SHADER_STORAGE_READ_BIT_KHR$ACCESS_2_SHADER_SAMPLED_READ_BIT_KHRACCESS_2_MEMORY_WRITE_BIT_KHRACCESS_2_MEMORY_READ_BIT_KHRACCESS_2_HOST_WRITE_BIT_KHRACCESS_2_HOST_READ_BIT_KHRACCESS_2_TRANSFER_WRITE_BIT_KHRACCESS_2_TRANSFER_READ_BIT_KHR/ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR.ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR'ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR&ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHRACCESS_2_SHADER_WRITE_BIT_KHRACCESS_2_SHADER_READ_BIT_KHR&ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHRACCESS_2_UNIFORM_READ_BIT_KHR&ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHRACCESS_2_INDEX_READ_BIT_KHR&ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHRACCESS_2_NONE_KHR!PIPELINE_STAGE_2_TRANSFER_BIT_KHR,ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV+ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV4PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV*PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV'ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV*PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NVcmdWaitEvents2KHRSafe $fZeroCommandBufferSubmitInfoKHR$$fStorableCommandBufferSubmitInfoKHR'$fFromCStructCommandBufferSubmitInfoKHR%$fToCStructCommandBufferSubmitInfoKHR/$fZeroPhysicalDeviceSynchronization2FeaturesKHR3$fStorablePhysicalDeviceSynchronization2FeaturesKHR6$fFromCStructPhysicalDeviceSynchronization2FeaturesKHR4$fToCStructPhysicalDeviceSynchronization2FeaturesKHR$fReadAccessFlagBits2KHR$fShowAccessFlagBits2KHR$fReadPipelineStageFlagBits2KHR$fShowPipelineStageFlagBits2KHR$fZeroCheckpointData2NV$fStorableCheckpointData2NV$fFromCStructCheckpointData2NV$fToCStructCheckpointData2NV($fZeroQueueFamilyCheckpointProperties2NV,$fStorableQueueFamilyCheckpointProperties2NV/$fFromCStructQueueFamilyCheckpointProperties2NV-$fToCStructQueueFamilyCheckpointProperties2NV$fZeroSemaphoreSubmitInfoKHR $fStorableSemaphoreSubmitInfoKHR#$fFromCStructSemaphoreSubmitInfoKHR!$fToCStructSemaphoreSubmitInfoKHR$fZeroBufferMemoryBarrier2KHR!$fStorableBufferMemoryBarrier2KHR$$fFromCStructBufferMemoryBarrier2KHR"$fToCStructBufferMemoryBarrier2KHR$fZeroImageMemoryBarrier2KHR#$fFromCStructImageMemoryBarrier2KHR!$fToCStructImageMemoryBarrier2KHR"$fExtensibleImageMemoryBarrier2KHR$fZeroMemoryBarrier2KHR$fStorableMemoryBarrier2KHR$fFromCStructMemoryBarrier2KHR$fToCStructMemoryBarrier2KHR$fZeroDependencyInfoKHR$fFromCStructDependencyInfoKHR$fToCStructDependencyInfoKHR$fReadSubmitFlagBitsKHR$fShowSubmitFlagBitsKHR$fZeroSubmitInfo2KHR$fFromCStructSubmitInfo2KHR$fToCStructSubmitInfo2KHR$fExtensibleSubmitInfo2KHR$fEqCommandBufferSubmitInfoKHR-$fEqPhysicalDeviceSynchronization2FeaturesKHR$fEqAccessFlagBits2KHR$fOrdAccessFlagBits2KHR$fStorableAccessFlagBits2KHR$fZeroAccessFlagBits2KHR$fBitsAccessFlagBits2KHR$fFiniteBitsAccessFlagBits2KHR$fEqPipelineStageFlagBits2KHR$fOrdPipelineStageFlagBits2KHR#$fStorablePipelineStageFlagBits2KHR$fZeroPipelineStageFlagBits2KHR$fBitsPipelineStageFlagBits2KHR%$fFiniteBitsPipelineStageFlagBits2KHR&$fEqQueueFamilyCheckpointProperties2NV$fEqSemaphoreSubmitInfoKHR$fEqBufferMemoryBarrier2KHR$fEqMemoryBarrier2KHR$fEqSubmitFlagBitsKHR$fOrdSubmitFlagBitsKHR$fStorableSubmitFlagBitsKHR$fZeroSubmitFlagBitsKHR$fBitsSubmitFlagBitsKHR$fFiniteBitsSubmitFlagBitsKHR/$fShowPhysicalDeviceSynchronization2FeaturesKHR$fShowCheckpointData2NV($fShowQueueFamilyCheckpointProperties2NV$fShowSubmitInfo2KHR $fShowCommandBufferSubmitInfoKHR$fShowSemaphoreSubmitInfoKHR$fShowDependencyInfoKHR$fShowBufferMemoryBarrier2KHR$fShowImageMemoryBarrier2KHR$fShowMemoryBarrier2KHR>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)$fShowImageDrmFormatModifierPropertiesEXT1$fShowImageDrmFormatModifierExplicitCreateInfoEXT-$fShowImageDrmFormatModifierListCreateInfoEXT1$fShowPhysicalDeviceImageDrmFormatModifierInfoEXT$$fShowDrmFormatModifierPropertiesEXT($fShowDrmFormatModifierPropertiesListEXT$sel:next:FenceCreateInfo$sel:flags:FenceCreateInfo withFencewaitForFencesSafe$fZeroFenceCreateInfo$fFromCStructFenceCreateInfo$fToCStructFenceCreateInfo$fExtensibleFenceCreateInfo$fShowFenceCreateInfo-$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$fStorableQueueFamilyProperties"$fFromCStructQueueFamilyProperties $fToCStructQueueFamilyProperties$fZeroMemoryType$fStorableMemoryType$fFromCStructMemoryType$fToCStructMemoryType$fZeroMemoryHeap$fStorableMemoryHeap$fFromCStructMemoryHeap$fToCStructMemoryHeap$$fZeroPhysicalDeviceMemoryProperties($fStorablePhysicalDeviceMemoryProperties+$fFromCStructPhysicalDeviceMemoryProperties)$fToCStructPhysicalDeviceMemoryProperties$fZeroFormatProperties$fStorableFormatProperties$fFromCStructFormatProperties$fToCStructFormatProperties$fZeroImageFormatProperties$fStorableImageFormatProperties"$fFromCStructImageFormatProperties $fToCStructImageFormatProperties$fZeroPhysicalDeviceFeatures $fStorablePhysicalDeviceFeatures#$fFromCStructPhysicalDeviceFeatures!$fToCStructPhysicalDeviceFeatures$$fZeroPhysicalDeviceSparseProperties($fStorablePhysicalDeviceSparseProperties+$fFromCStructPhysicalDeviceSparseProperties)$fToCStructPhysicalDeviceSparseProperties$fZeroPhysicalDeviceLimits$fStorablePhysicalDeviceLimits!$fFromCStructPhysicalDeviceLimits$fToCStructPhysicalDeviceLimits$fZeroPhysicalDeviceProperties"$fStorablePhysicalDeviceProperties%$fFromCStructPhysicalDeviceProperties#$fToCStructPhysicalDeviceProperties$fEqMemoryType$fEqMemoryHeap$fEqFormatProperties$fEqPhysicalDeviceFeatures"$fEqPhysicalDeviceSparseProperties$fEqPhysicalDeviceLimits$fShowPhysicalDeviceLimits$$fShowPhysicalDeviceSparseProperties$fShowPhysicalDeviceFeatures$fShowImageFormatProperties$fShowFormatProperties$fShowMemoryHeap$fShowMemoryType$$fShowPhysicalDeviceMemoryProperties$fShowQueueFamilyProperties$fShowInstanceCreateInfo$fShowApplicationInfo$fShowPhysicalDeviceProperties.NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME,NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSIONExternalMemoryFeatureFlagBitsNVExternalMemoryFeatureFlagsNV:$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)$fStorableExternalImageFormatPropertiesNV,$fFromCStructExternalImageFormatPropertiesNV*$fToCStructExternalImageFormatPropertiesNV&$fEqExternalMemoryHandleTypeFlagBitsNV'$fOrdExternalMemoryHandleTypeFlagBitsNV,$fStorableExternalMemoryHandleTypeFlagBitsNV($fZeroExternalMemoryHandleTypeFlagBitsNV($fBitsExternalMemoryHandleTypeFlagBitsNV.$fFiniteBitsExternalMemoryHandleTypeFlagBitsNV#$fEqExternalMemoryFeatureFlagBitsNV$$fOrdExternalMemoryFeatureFlagBitsNV)$fStorableExternalMemoryFeatureFlagBitsNV%$fZeroExternalMemoryFeatureFlagBitsNV%$fBitsExternalMemoryFeatureFlagBitsNV+$fFiniteBitsExternalMemoryFeatureFlagBitsNV%$fShowExternalImageFormatPropertiesNVSECURITY_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#$fShowImportMemoryWin32HandleInfoNVLPCWSTR(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$$fShowMemoryWin32HandlePropertiesKHR$$fShowExportMemoryWin32HandleInfoKHR$$fShowImportMemoryWin32HandleInfoKHR+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$fShowD3D12FenceSubmitInfoKHR'$fShowExportSemaphoreWin32HandleInfoKHR'$fShowImportSemaphoreWin32HandleInfoKHR'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#$fShowExportFenceWin32HandleInfoKHR#$fShowImportFenceWin32HandleInfoKHR!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%$fShowExternalMemoryImageCreateInfoNV0$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&$fStorableSparseImageFormatProperties2)$fFromCStructSparseImageFormatProperties2'$fToCStructSparseImageFormatProperties2*$fZeroPhysicalDeviceSparseImageFormatInfo2.$fStorablePhysicalDeviceSparseImageFormatInfo21$fFromCStructPhysicalDeviceSparseImageFormatInfo2/$fToCStructPhysicalDeviceSparseImageFormatInfo2($fEqPhysicalDeviceSparseImageFormatInfo2*$fShowPhysicalDeviceSparseImageFormatInfo2"$fShowSparseImageFormatProperties2%$fShowPhysicalDeviceMemoryProperties2$fShowQueueFamilyProperties2$$fShowPhysicalDeviceImageFormatInfo2$fShowImageFormatProperties2$fShowFormatProperties2$fShowPhysicalDeviceProperties2$fShowPhysicalDeviceFeatures23KHR_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$fShowDeviceQueueCreateInfoKnownPropertyStructsPropertyStructSPropertyStructBasicPropertyStructExtendedPropertyStructKnownFeatureStructsFeatureStructSFeatureStructBasicFeatureStructExtendedFeatureStructDeviceRequirementRequireDeviceVersionRequireDeviceFeatureRequireDevicePropertyRequireDeviceExtension!$sel:version:RequireDeviceVersion%$sel:featureName:RequireDeviceVersion&$sel:checkFeature:RequireDeviceVersion'$sel:enableFeature:RequireDeviceVersion&$sel:propertyName:RequireDeviceVersion'$sel:checkProperty:RequireDeviceVersion2$sel:deviceExtensionLayerName:RequireDeviceVersion-$sel:deviceExtensionName:RequireDeviceVersion3$sel:deviceExtensionMinVersion:RequireDeviceVersionInstanceRequirementRequireInstanceVersionRequireInstanceLayerRequireInstanceExtension#$sel:version:RequireInstanceVersion-$sel:instanceLayerName:RequireInstanceVersion3$sel:instanceLayerMinVersion:RequireInstanceVersion6$sel:instanceExtensionLayerName:RequireInstanceVersion1$sel:instanceExtensionName:RequireInstanceVersion7$sel:instanceExtensionMinVersion:RequireInstanceVersion$fKnownFeatureStructfeat*$fKnownFeatureStructPhysicalDeviceFeatures$fKnownPropertyStructprop-$fKnownPropertyStructPhysicalDeviceProperties#$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$fShowDescriptorPoolCreateInfo$fShowDescriptorPoolSize#$fShowDescriptorSetLayoutCreateInfo $fShowDescriptorSetLayoutBinding$fShowCopyDescriptorSet$fShowWriteDescriptorSet$fShowDescriptorImageInfo$fShowDescriptorBufferInfo"KHR_PUSH_DESCRIPTOR_EXTENSION_NAME KHR_PUSH_DESCRIPTOR_SPEC_VERSIONA$sel:maxPushDescriptors:PhysicalDevicePushDescriptorPropertiesKHR/$fZeroPhysicalDevicePushDescriptorPropertiesKHR3$fStorablePhysicalDevicePushDescriptorPropertiesKHR6$fFromCStructPhysicalDevicePushDescriptorPropertiesKHR4$fToCStructPhysicalDevicePushDescriptorPropertiesKHR-$fEqPhysicalDevicePushDescriptorPropertiesKHR/$fShowPhysicalDevicePushDescriptorPropertiesKHR-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*$fShowPhysicalDeviceMaintenance3PropertiesKHR_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$fStorableClearRect$fFromCStructClearRect$fToCStructClearRect$fZeroImageSubresourceLayers $fStorableImageSubresourceLayers#$fFromCStructImageSubresourceLayers!$fToCStructImageSubresourceLayers$fZeroBufferCopy$fStorableBufferCopy$fFromCStructBufferCopy$fToCStructBufferCopy$fZeroImageCopy$fStorableImageCopy$fFromCStructImageCopy$fToCStructImageCopy$fZeroImageBlit$fStorableImageBlit$fFromCStructImageBlit$fToCStructImageBlit$fZeroBufferImageCopy$fStorableBufferImageCopy$fFromCStructBufferImageCopy$fToCStructBufferImageCopy$fZeroImageResolve$fStorableImageResolve$fFromCStructImageResolve$fToCStructImageResolve$fZeroClearDepthStencilValue $fStorableClearDepthStencilValue#$fFromCStructClearDepthStencilValue!$fToCStructClearDepthStencilValue$fZeroClearColorValue$fToCStructClearColorValue$fZeroClearValue$fToCStructClearValue$fZeroClearAttachment$fToCStructClearAttachment$fZeroRenderPassBeginInfo$fToCStructRenderPassBeginInfo$fExtensibleRenderPassBeginInfo$fEqImageSubresourceLayers$fEqBufferCopy$fEqClearDepthStencilValue$fShowClearColorValue$fShowClearValue$fShowClearAttachment$fShowClearDepthStencilValue$fShowRenderPassBeginInfo$fShowImageResolve$fShowBufferImageCopy$fShowImageBlit$fShowImageCopy$fShowBufferCopy$fShowImageSubresourceLayers$fShowClearRect"KHR_COPY_COMMANDS_2_EXTENSION_NAME KHR_COPY_COMMANDS_2_SPEC_VERSION"$sel:srcImage:ResolveImageInfo2KHR($sel:srcImageLayout:ResolveImageInfo2KHR"$sel:dstImage:ResolveImageInfo2KHR($sel:dstImageLayout:ResolveImageInfo2KHR!$sel:regions:ResolveImageInfo2KHR'$sel:srcImage:CopyImageToBufferInfo2KHR-$sel:srcImageLayout:CopyImageToBufferInfo2KHR($sel:dstBuffer:CopyImageToBufferInfo2KHR&$sel:regions:CopyImageToBufferInfo2KHR($sel:srcBuffer:CopyBufferToImageInfo2KHR'$sel:dstImage:CopyBufferToImageInfo2KHR-$sel:dstImageLayout:CopyBufferToImageInfo2KHR&$sel:regions:CopyBufferToImageInfo2KHR$sel:srcImage:BlitImageInfo2KHR%$sel:srcImageLayout:BlitImageInfo2KHR$sel:dstImage:BlitImageInfo2KHR%$sel:dstImageLayout:BlitImageInfo2KHR$sel:regions:BlitImageInfo2KHR$sel:filter':BlitImageInfo2KHR$sel:srcImage:CopyImageInfo2KHR%$sel:srcImageLayout:CopyImageInfo2KHR$sel:dstImage:CopyImageInfo2KHR%$sel:dstImageLayout:CopyImageInfo2KHR$sel:regions:CopyImageInfo2KHR!$sel:srcBuffer:CopyBufferInfo2KHR!$sel:dstBuffer:CopyBufferInfo2KHR$sel:regions:CopyBufferInfo2KHR$$sel:srcSubresource:ImageResolve2KHR$sel:srcOffset:ImageResolve2KHR$$sel:dstSubresource:ImageResolve2KHR$sel:dstOffset:ImageResolve2KHR$sel:extent:ImageResolve2KHR$sel:next:BufferImageCopy2KHR%$sel:bufferOffset:BufferImageCopy2KHR($sel:bufferRowLength:BufferImageCopy2KHR*$sel:bufferImageHeight:BufferImageCopy2KHR)$sel:imageSubresource:BufferImageCopy2KHR$$sel:imageOffset:BufferImageCopy2KHR$$sel:imageExtent:BufferImageCopy2KHR$sel:next:ImageBlit2KHR!$sel:srcSubresource:ImageBlit2KHR$sel:srcOffsets:ImageBlit2KHR!$sel:dstSubresource:ImageBlit2KHR$sel:dstOffsets:ImageBlit2KHR!$sel:srcSubresource:ImageCopy2KHR$sel:srcOffset:ImageCopy2KHR!$sel:dstSubresource:ImageCopy2KHR$sel:dstOffset:ImageCopy2KHR$sel:extent:ImageCopy2KHR$sel:srcOffset:BufferCopy2KHR$sel:dstOffset:BufferCopy2KHR$sel:size:BufferCopy2KHR$fZeroBufferCopy2KHR$fStorableBufferCopy2KHR$fFromCStructBufferCopy2KHR$fToCStructBufferCopy2KHR$fZeroImageCopy2KHR$fStorableImageCopy2KHR$fFromCStructImageCopy2KHR$fToCStructImageCopy2KHR$fZeroImageBlit2KHR$fFromCStructImageBlit2KHR$fToCStructImageBlit2KHR$fExtensibleImageBlit2KHR$fZeroBufferImageCopy2KHR $fFromCStructBufferImageCopy2KHR$fToCStructBufferImageCopy2KHR$fExtensibleBufferImageCopy2KHR$fZeroImageResolve2KHR$fStorableImageResolve2KHR$fFromCStructImageResolve2KHR$fToCStructImageResolve2KHR$fZeroCopyBufferInfo2KHR$fFromCStructCopyBufferInfo2KHR$fToCStructCopyBufferInfo2KHR$fZeroCopyImageInfo2KHR$fFromCStructCopyImageInfo2KHR$fToCStructCopyImageInfo2KHR$fZeroBlitImageInfo2KHR$fFromCStructBlitImageInfo2KHR$fToCStructBlitImageInfo2KHR$fZeroCopyBufferToImageInfo2KHR&$fFromCStructCopyBufferToImageInfo2KHR$$fToCStructCopyBufferToImageInfo2KHR$fZeroCopyImageToBufferInfo2KHR&$fFromCStructCopyImageToBufferInfo2KHR$$fToCStructCopyImageToBufferInfo2KHR$fZeroResolveImageInfo2KHR!$fFromCStructResolveImageInfo2KHR$fToCStructResolveImageInfo2KHR$fEqBufferCopy2KHR$fShowResolveImageInfo2KHR$fShowCopyImageToBufferInfo2KHR$fShowCopyBufferToImageInfo2KHR$fShowBlitImageInfo2KHR$fShowCopyImageInfo2KHR$fShowCopyBufferInfo2KHR$fShowImageResolve2KHR$fShowBufferImageCopy2KHR$fShowImageBlit2KHR$fShowImageCopy2KHR$fShowBufferCopy2KHR&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$fShowPhysicalDeviceCustomBorderColorFeaturesEXT2$fShowPhysicalDeviceCustomBorderColorPropertiesEXT+$fShowSamplerCustomBorderColorCreateInfoEXT$sel:contents:SubpassBeginInfo$sel:next:RenderPassCreateInfo2 $sel:flags:RenderPassCreateInfo2&$sel:attachments:RenderPassCreateInfo2$$sel:subpasses:RenderPassCreateInfo2'$sel:dependencies:RenderPassCreateInfo2.$sel:correlatedViewMasks:RenderPassCreateInfo2$sel:next:SubpassDependency2"$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$fFromCStructSubpassDependency2$fToCStructSubpassDependency2$fExtensibleSubpassDependency2$fZeroRenderPassCreateInfo2"$fFromCStructRenderPassCreateInfo2 $fToCStructRenderPassCreateInfo2!$fExtensibleRenderPassCreateInfo2$fZeroSubpassBeginInfo$fStorableSubpassBeginInfo$fFromCStructSubpassBeginInfo$fToCStructSubpassBeginInfo$fZeroSubpassEndInfo$fStorableSubpassEndInfo$fFromCStructSubpassEndInfo$fToCStructSubpassEndInfo$fEqSubpassBeginInfo$fEqSubpassEndInfo$fShowSubpassEndInfo$fShowSubpassBeginInfo$fShowRenderPassCreateInfo2$fShowSubpassDependency2$fShowSubpassDescription2$fShowAttachmentReference2$fShowAttachmentDescription2(KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME&KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION6$sel:sampleCounts:PhysicalDeviceFragmentShadingRateKHR6$sel:fragmentSize:PhysicalDeviceFragmentShadingRateKHR]$sel:minFragmentShadingRateAttachmentTexelSize:PhysicalDeviceFragmentShadingRatePropertiesKHR]$sel:maxFragmentShadingRateAttachmentTexelSize:PhysicalDeviceFragmentShadingRatePropertiesKHRh$sel:maxFragmentShadingRateAttachmentTexelSizeAspectRatio:PhysicalDeviceFragmentShadingRatePropertiesKHRe$sel:primitiveFragmentShadingRateWithMultipleViewports:PhysicalDeviceFragmentShadingRatePropertiesKHRQ$sel:layeredShadingRateAttachments:PhysicalDeviceFragmentShadingRatePropertiesKHR\$sel:fragmentShadingRateNonTrivialCombinerOps:PhysicalDeviceFragmentShadingRatePropertiesKHRC$sel:maxFragmentSize:PhysicalDeviceFragmentShadingRatePropertiesKHRN$sel:maxFragmentSizeAspectRatio:PhysicalDeviceFragmentShadingRatePropertiesKHRY$sel:maxFragmentShadingRateCoverageSamples:PhysicalDeviceFragmentShadingRatePropertiesKHR^$sel:maxFragmentShadingRateRasterizationSamples:PhysicalDeviceFragmentShadingRatePropertiesKHRc$sel:fragmentShadingRateWithShaderDepthStencilWrites:PhysicalDeviceFragmentShadingRatePropertiesKHRU$sel:fragmentShadingRateWithSampleMask:PhysicalDeviceFragmentShadingRatePropertiesKHR[$sel:fragmentShadingRateWithShaderSampleMask:PhysicalDeviceFragmentShadingRatePropertiesKHRd$sel:fragmentShadingRateWithConservativeRasterization:PhysicalDeviceFragmentShadingRatePropertiesKHRb$sel:fragmentShadingRateWithFragmentShaderInterlock:PhysicalDeviceFragmentShadingRatePropertiesKHR`$sel:fragmentShadingRateWithCustomSampleLocations:PhysicalDeviceFragmentShadingRatePropertiesKHR]$sel:fragmentShadingRateStrictMultiplyCombiner:PhysicalDeviceFragmentShadingRatePropertiesKHRM$sel:pipelineFragmentShadingRate:PhysicalDeviceFragmentShadingRateFeaturesKHRN$sel:primitiveFragmentShadingRate:PhysicalDeviceFragmentShadingRateFeaturesKHRO$sel:attachmentFragmentShadingRate:PhysicalDeviceFragmentShadingRateFeaturesKHR?$sel:fragmentSize:PipelineFragmentShadingRateStateCreateInfoKHR>$sel:combinerOps:PipelineFragmentShadingRateStateCreateInfoKHRG$sel:fragmentShadingRateAttachment:FragmentShadingRateAttachmentInfoKHRH$sel:shadingRateAttachmentTexelSize:FragmentShadingRateAttachmentInfoKHR)FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR)FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR)FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR*$fZeroFragmentShadingRateAttachmentInfoKHR1$fFromCStructFragmentShadingRateAttachmentInfoKHR/$fToCStructFragmentShadingRateAttachmentInfoKHR2$fZeroPhysicalDeviceFragmentShadingRateFeaturesKHR6$fStorablePhysicalDeviceFragmentShadingRateFeaturesKHR9$fFromCStructPhysicalDeviceFragmentShadingRateFeaturesKHR7$fToCStructPhysicalDeviceFragmentShadingRateFeaturesKHR4$fZeroPhysicalDeviceFragmentShadingRatePropertiesKHR8$fStorablePhysicalDeviceFragmentShadingRatePropertiesKHR;$fFromCStructPhysicalDeviceFragmentShadingRatePropertiesKHR9$fToCStructPhysicalDeviceFragmentShadingRatePropertiesKHR*$fZeroPhysicalDeviceFragmentShadingRateKHR.$fStorablePhysicalDeviceFragmentShadingRateKHR1$fFromCStructPhysicalDeviceFragmentShadingRateKHR/$fToCStructPhysicalDeviceFragmentShadingRateKHR&$fReadFragmentShadingRateCombinerOpKHR&$fShowFragmentShadingRateCombinerOpKHR3$fZeroPipelineFragmentShadingRateStateCreateInfoKHR7$fStorablePipelineFragmentShadingRateStateCreateInfoKHR:$fFromCStructPipelineFragmentShadingRateStateCreateInfoKHR8$fToCStructPipelineFragmentShadingRateStateCreateInfoKHR0$fEqPhysicalDeviceFragmentShadingRateFeaturesKHR$$fEqFragmentShadingRateCombinerOpKHR%$fOrdFragmentShadingRateCombinerOpKHR*$fStorableFragmentShadingRateCombinerOpKHR&$fZeroFragmentShadingRateCombinerOpKHR*$fShowPhysicalDeviceFragmentShadingRateKHR4$fShowPhysicalDeviceFragmentShadingRatePropertiesKHR2$fShowPhysicalDeviceFragmentShadingRateFeaturesKHR3$fShowPipelineFragmentShadingRateStateCreateInfoKHR*$fShowFragmentShadingRateAttachmentInfoKHR-NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME+NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSIONFragmentShadingRateTypeNVE$sel:shadingRateType:PipelineFragmentShadingRateEnumStateCreateInfoNVA$sel:shadingRate:PipelineFragmentShadingRateEnumStateCreateInfoNVA$sel:combinerOps:PipelineFragmentShadingRateEnumStateCreateInfoNV]$sel:maxFragmentShadingRateInvocationCount:PhysicalDeviceFragmentShadingRateEnumsPropertiesNVN$sel:fragmentShadingRateEnums:PhysicalDeviceFragmentShadingRateEnumsFeaturesNVU$sel:supersampleFragmentShadingRates:PhysicalDeviceFragmentShadingRateEnumsFeaturesNVV$sel:noInvocationFragmentShadingRates:PhysicalDeviceFragmentShadingRateEnumsFeaturesNV#FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV4FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV4FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV4FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV4FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV4FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV4FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV6$fZeroPhysicalDeviceFragmentShadingRateEnumsFeaturesNV:$fStorablePhysicalDeviceFragmentShadingRateEnumsFeaturesNV=$fFromCStructPhysicalDeviceFragmentShadingRateEnumsFeaturesNV;$fToCStructPhysicalDeviceFragmentShadingRateEnumsFeaturesNV8$fZeroPhysicalDeviceFragmentShadingRateEnumsPropertiesNV<$fStorablePhysicalDeviceFragmentShadingRateEnumsPropertiesNV?$fFromCStructPhysicalDeviceFragmentShadingRateEnumsPropertiesNV=$fToCStructPhysicalDeviceFragmentShadingRateEnumsPropertiesNV$fReadFragmentShadingRateNV$fShowFragmentShadingRateNV$fReadFragmentShadingRateTypeNV$fShowFragmentShadingRateTypeNV6$fZeroPipelineFragmentShadingRateEnumStateCreateInfoNV:$fStorablePipelineFragmentShadingRateEnumStateCreateInfoNV=$fFromCStructPipelineFragmentShadingRateEnumStateCreateInfoNV;$fToCStructPipelineFragmentShadingRateEnumStateCreateInfoNV4$fEqPhysicalDeviceFragmentShadingRateEnumsFeaturesNV6$fEqPhysicalDeviceFragmentShadingRateEnumsPropertiesNV$fEqFragmentShadingRateNV$fOrdFragmentShadingRateNV$fStorableFragmentShadingRateNV$fZeroFragmentShadingRateNV$fEqFragmentShadingRateTypeNV$fOrdFragmentShadingRateTypeNV#$fStorableFragmentShadingRateTypeNV$fZeroFragmentShadingRateTypeNV4$fEqPipelineFragmentShadingRateEnumStateCreateInfoNV6$fShowPipelineFragmentShadingRateEnumStateCreateInfoNV8$fShowPhysicalDeviceFragmentShadingRateEnumsPropertiesNV6$fShowPhysicalDeviceFragmentShadingRateEnumsFeaturesNV&KHR_CREATE_RENDERPASS_2_EXTENSION_NAME$KHR_CREATE_RENDERPASS_2_SPEC_VERSIONSubpassEndInfoKHRSubpassBeginInfoKHRRenderPassCreateInfo2KHRSubpassDependency2KHRSubpassDescription2KHRAttachmentDescription2KHR#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+$fShowSubpassDescriptionDepthStencilResolve1$fShowPhysicalDeviceDepthStencilResolveProperties(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*$fStorablePhysicalDeviceVulkan12Properties-$fFromCStructPhysicalDeviceVulkan12Properties+$fToCStructPhysicalDeviceVulkan12Properties"$fEqPhysicalDeviceVulkan11Features"$fEqPhysicalDeviceVulkan12Features&$fShowPhysicalDeviceVulkan12Properties$$fShowPhysicalDeviceVulkan12Features&$fShowPhysicalDeviceVulkan11Properties$$fShowPhysicalDeviceVulkan11FeaturesspirvExtensionRequirementsspirvCapabilityRequirements $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"$fShowCommandBufferInheritanceInfo$fShowCommandBufferAllocateInfo$sel:next:BufferCreateInfo$sel:flags:BufferCreateInfo$sel:size:BufferCreateInfo$sel:usage:BufferCreateInfo!$sel:sharingMode:BufferCreateInfo($sel:queueFamilyIndices:BufferCreateInfo withBuffer$fZeroBufferCreateInfo$fFromCStructBufferCreateInfo$fToCStructBufferCreateInfo$fExtensibleBufferCreateInfo$fShowBufferCreateInfoextensionDependenciesextensionCoreRequirementbaseGHC.PtrPtrbytestring-0.10.10.1Data.ByteString.Internal ByteStringplusPtr Debug.Trace traceEventIO resultStringwaitSemaphoresSafeOrUnsafeacquireNextImageKHRSafeOrUnsafe acquireNextImage2KHRSafeOrUnsafequeueWaitIdleSafeOrUnsafedeviceWaitIdleSafeOrUnsafecmdWaitEvents2KHRSafeOrUnsafewaitForFencesSafeOrUnsafecmdWaitEventsSafeOrUnsafe.&&.