!zU.        ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ?@ABCDEFGHIJKLMNOPQRSTUVWXY Z![!\"]"^#_#`$a%b&c'd(e(f)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)z){)|)})~))))))***++,--.//////0000001111111111111111112334567899999999::::::::;<<==>>????@ABBCCDDEEEEEFFGGHIIJJJKKKKKKLMMNNNNNNOOOOOOOOOPPPPPQQRRRSS S S S S TUVVVVWWWWWXYYZ[\]] ]!]"]#^$^%^&^'^(^)^*_+_,`-`.a/b0b1b2b3c4c5c6d7e8f9g:h;h<h=h>h?h@iAjBkCkDkEkFkGkHkIkJkKkLkMlNmOmPnQnRnSnToUoVoWoXpYpZp[p\q]r^r_r`rasbscsdsetfugvhvivjvkwlxmynyoypyqzrzsztzu{v{w{x{y|z|{||}}}~}}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF 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 { | } ~                                                                                                                                               !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~$$$$$$$$$      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~wwwwwwwwwwwwwwwwwwwwwwwwuuuuuuuuuuuuuuuuuuuuuqqqqqqqqqqqqqqqqqqqqqq      !"#$%&'()* + , - . / 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 XYZ[\]^_` abcdefghijklmnop!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 Sa Ta Ua Va Wa Xa 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 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 !2 "2 #3 $3 %3 &3 '3 (3 )3 *3 +3 ,3 -3 .4 /4 04 14 24 34 44 54 64 74 84 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 { | } ~  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ x x x x x x x x x x x x x x x x x x x x x x t t t t t t t t t t t t t t t t t t t t t l llllllllll j j j j jjjjj555555iiiiiii6 6!6"6#6$6%g&g'g(g)g*g+g,7-7.7/707172f3f4f5f6f7f8f9f:f;f<f=f>f?f@fAfBfCfDfEfFfGfHfI8J8K8L8M8N8O8P8Q8R8SeTeUeVeWeXeYeZe[9\9]9^9_9`9a9b9cdddedfdgdhdidjdk:l:m:n:o:p:qcrcsctcucvcwcxcyczc{c|c}c~ccccccccc;;;;;;;;;;;;;;\\\\\\\\\<<<<<<ZZZZZZZ======>>>>>>>>>>>???????????????@@@@@@@@@@@@@@UUUUUUUUUUAAAAAAAATTTTTTTTTAAAAAAAAAABBBBBBCCCCC C C C C CCCCCCCCCCDDDDDDDDD D!D"=#=$=%=&='=(=)=*=+=,=-=.E/E0E1E2E3E4E5E6E7E8E9E:E;F<F=F>F?F@FAFBFCFDFEFFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGULVLWLXLYLZL[L\H]H^H_H`HaHbHcHdHeIfIgIhIiIjIkIlImInIoIpIq<r<s<t<u<v<w<x<y<z<{<|<}<~<<<<<<JJJJJJJJJJJJJKKKKKKKKKKKKKKHHHHHHHLLLLLLLLLMMMMMMMMMMMMNNNNNNNNN;;;;;;;;OOOOOOOOOOOOOO###########PPPPPPPPPPPQQQQQQQQQQQQQ"""""""""""" " " " " """""""" !"#$%&'()*+,-./012@3@4@5@6@7@8@9@:@;@<R=R>R?R@RARBRCRDRERFSGSHSISJSKSLSMSNSOTPTQTRTSTTTUTVTWTXTYTZT[!\!]!^!_!`!a!b!c!d!e!f!g!h!i!jUkUlUmUnUoUpUqUrUsUtUuVvVwVxVyVzV{V|V}V~VVVVVVWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYZZZZZZZZZ[[[[[[[[[\\\\\\\\\\\\]]]]]]]]] ^ ^ ^ ^ ^^^^^_________````` `!`"`#`$a%a&a'a(a)a*a+a,a-b.b/b0b1b2b3b4b5b6c7c8c9c:c;c<c=c>c?c@cAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRdSdTdUdVdWdXdYdZd[e\e]e^e_e`eaebecedeeeffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxyz{|}~gggggggggggghhhhhhhhhiiiiiiiiiii[[[[[[[jjjjjjkkkkkkkkkkkkkkkkkkkkkPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP P P P P PPlllllllllllllllll l!l"l#l$l%l&9'9(9)9*9+9,9-9.9/909192939495969798999:9;9<9=9>9?9@9A9B9C9D9E9F9G9H9I9J9K9L9M9N9O9P9Q9R9S9T9U9V9W9X9Y9Z9[9\9]9^9_9`9a9b9c9d9e9f9g9h9i9j9k9l9m9n9o9p9qrstuvwxyz{|}~mmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnYYYYYYYYYYYYYYYooooooooooooopppppppppppqqqqqqqqqrrrrrrrrrrrs s s s s sssstttttttttttt !"#$%u&u'u(u)u*u+u,u-u.u/u0u1W2W3W4W5W6W7W8W9W:W;W<W=W>W?W@WAWBWCWDWEWFWGWHWIWJWKWLWMWNWOWPWQWRWSWTWUWVWWWXWYWZW[W\W]W^W_W`WaWbWcWdWeWfWgWhWiWjWkWlWmWnWoWpWqWrWsWtWuWvWwWxWyWzW{v|v}v~vvvvvvvvvvvvvvvvvvvvRRRRRRRRRRRRRRRRRRRRRRRRRwwwwwwwwwwwxxxxxxxxxxxxxxyyyyyyyyyyyyyzzzzzzzzzzzzz{{{{{{{{{{{{{{ | | | | |||||}}}}}}}}}}}}}} }!}"}#}$}%}&}'}(})}*~+~,~-~.~/~0~1~2~3~4~5~6~7~8~9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~```````````````````JJJJJJJJJJJJJJJJJJJJJ)))))))))) ) ) ) ) ))))))))))))))))))) )!)")#)$)%)&)')()))*)+),)-).)/)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){)|)})~))))))))))))))))))))))))))))))))))))))))))))))))      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~||||||||||||||||||||||||||||||||||||||hhhhhhhhhhhhhhhhhhhhh h h h h hhhhhhhhhhhhhhhhhhh h!h"h#h$%&'()*+,-./0123456789:;<=b>b?b@bAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb[\]^_`abcdefghijklmnopqrstuv]w]x]y]z]{]|]}]~]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]XXXXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK K K K K KKKKKKKKKKKKKK !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUIVIWIXIYIZI\I]I^I_I`IaIbIcIdIeIfghijklmnopqrstuvwxyGzG{G|G}G~GGGGGGGGGGGCCCCCCCCCCCCCCCC???????????????????????????????>>>>>>>>>>>>>>kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk k k k k kkkkkkkkkkkkkkkkkkk k!k"k#k$k%k&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e fm gm hm im jm km lm mm nm om pm qm rm sm tm um vm wm xm yD zD {D |D }D ~D D D D D D D D D D D D D D D D D D D D D D D 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 . . . . . . . . . . . . . , , , , , , , , , , , , % % % % % % % % % % % % %               & & & & & & & & &!&!!!!!!!!! ! ! ! ! !!!!!!!!!!!!!!!!!!! !!!"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2!3!4!5!6!7!8!9!:!;!<!=!>!?!@!A!B!C!D!EM!FM!GM!HM!IM!JM!KM!LM!MM!NM!OM!PM!QM!RM!SM!TM!UM!VM!W!X!Y!Z![!\!]!^!_!`!a!b!c!d!e!f!g!h!i!j!kB!lB!mB!nB!oB!pB!qB!rB!sB!tB!uB!vB!wB!xB!yB!zB!{B!|B!}B!~B!B!B!!!!!!!!!!!!8!8!8!8!8!8!8!8!8!8!8!8!7!7!7!7!7!7!7!7!7!7!7!7!7!7!7!7!7!7!7!7!7!7!7!7!7!7!6!6!6!6!6!6!6!6!6!6!6!5!5!5!5!5!5!5!5!5!5!5!5!5!5!5!4!4!4!4!4!4!4!4!4!4!4!4!4!4!4!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" 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"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/"{/"|/"}/"~/"/"/"/"/"/"/"/"/"-"-"-"-"-"-"-"-"-"-"-"-"-"-"-"-"-"-"-"-"-"-"-"-"-"-"-"+"+"+"+"+"+"+"+"+"+"+"+"+"+"+"+"+"+"+"+"+"+"+"+"+"+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""S"S"S"S"S"S"S"S"S"S"S"S#S#S#S#S#S#S#S#S#S# S# S# S# S# S#S#S#S#S#S#S#S#S#S#S#S#S#S#S#S#S#S#S# S#!S#"S##S#$S#%S#&S#'S#(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*#{*#|*#}*#~*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*###################################################:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:$:$:$:$:$:$:$:$:$:$ :$ :$ :$ :$ :$:$:$:$:$:$:$:$:$:$:$:$:$:$:$:$:$:$:$ N$!N$"N$#N$$N$%N$&N$'N$(N$)N$*N$+N$,N$-N$.N$/N$0N$1N$2N$3N$4N$5N$6N$7N$8N$9N$:N$;N$<N$=N$>N$?N$@N$AN$BN$CN$DN$EN$FN$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 %{ %| %} %~ % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O%O&O&O&O&O&O&O&O&O&O& O& O& O& O& O&O&O&O&O&O&O&O&O&O&O&O&O&O&O&O&O&O&O& O&!O&"O&#&$&%&&&'&(&)&*&+&,&-&.&/&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 &{ &| &} &~ & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Q&Q&Q&Q&Q&Q&Q&Q&Q&Q&Q&Q&Q&Q&Q&Q&Q&&&&&&&&&& & & & & & & & & & & ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '! '" '# '$ '% '& '' '( ') '* '+ ', '- '. '/ '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({(|(}^(~^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(^(((((((((((((((((((((((_(_(_(_(_(_(_(_(_(_(_(_(_(_(_(_(_(_(((((()))))))))) V) V) V) V) V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V) V)!V)"V)#V)$V)%V)&V)'V)(V))V)*V)+V),V)-V).V)/V)0V)1V)2V)3V)4V)5V)6V)7V)8V)9V):V);V)<V)=V)>V)?V)@V)AV)BV)CV)DV)EV)FV)GV)HV)IV)JV)KV)LV)MV)NV)OV)PV)QV)RV)SV)TV)UV)VV)WV)XV)YV)ZV)[V)\V)]V)^V)_V)`V)aV)bV)cV)dV)eV)fV)gV)hV)iV)jV)kV)lV)mV)nV)oV)pV)qV)rV)sV)tV)uV)vV)wV)xV)yV)zV){V)|V)}V)~V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)F)F)F)F)F)F)F)F)F)F)F)F)F)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E)E))))))))))))))))))))))))))))))))))))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*01*11*21*31*41*51*61*71*81*91*:1*;1*<1*=1*>1*?1*@1*A1*B1*C1*D1*E1*F1*G1*H1*I1*J1*K1*L1*M1*N1*O1*P1*Q1*R1*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*t1*u1*v1*w1*x1*y1*z1*{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********************************************++++++++++ + + + + +++++++++++++++++++ +!+"+#+$+%+&+'+(+)+*+++,+-+.+/+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-{-|-}-~---------------------------------------------------------------------------------------------------------------------------------None'"#%&'-./189;=>?FHIMSUVX_dghklmqf 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'"#%&'-./189;=>?FHIMSUVX_dghklmqsvulkan.An unpopulated type intended to be used as in . (FixedArray n a)5 to indicate that the pointer points to an array of n asvulkanStore a ._ in a fixed amount of space inserting a null character at the end and truncating if necessary.If the .H is not long enough to fill the space the remaining bytes are unchangedNote that if the .D is exactly long enough the last byte will still be replaced with 0vulkanStore a .5 in a fixed amount of space, truncating if necessary.If the .H is not long enough to fill the space the remaining bytes are unchangedvulkanPeek a ." from a fixed sized array of bytesvulkan1Get the pointer to the first element in the arrayvulkanA type restricted .nNone'"#%&'-./189;=>?FHIMSUVX_dghklmquUPQRSQSPRoNone'"#%&'-./189;=>?FHIMSUVX_dghklmqvTUVWUWTVpNone'"#%&'-./189;=>?FHIMSUVX_dghklmqxqXYZ[Y[XZrNone'"#%&'-./189;=>?FHIMSUVX_dghklmqy]^_`^`]_sNone'"#%&'-./189;=>?FHIMSUVX_dghklmq{abcdbdacvNone'"#%&'-./189;=>?FHIMSUVX_dghklmq}ghijhjgiyNone'"#%&'-./189;=>?FHIMSUVX_dghklmq~mnopnpmozNone'"#%&'-./189;=>?FHIMSUVX_dghklmq7qrstrtqs{None'"#%&'-./189;=>?FHIMSUVX_dghklmquvwxvxuw}None'"#%&'-./189;=>?FHIMSUVX_dghklmqS|}~}|~None'"#%&'-./189;=>?FHIMSUVX_dghklmqNone'"#%&'-./189;=>?FHIMSUVX_dghklmqoNone'"#%&'-./189;=>?FHIMSUVX_dghklmqNone'"#%&'-./189;=>?FHIMSUVX_dghklmqNone'"#%&'-./189;=>?FHIMSUVX_dghklmqNone'"#%&'-./189;=>?FHIMSUVX_dghklmqNone'"#%&'-./189;=>?FHIMSUVX_dghklmq5None'"#%&'-./189;=>?FHIMSUVX_dghklmqNone'"#%&'-./189;=>?FHIMSUVX_dghklmqQNone'"#%&'-./189;=>?FHIMSUVX_dghklmq !" "!None'"#%&'-./189;=>?FHIMSUVX_dghklmqm#$%&$&#%None'"#%&'-./189;=>?FHIMSUVX_dghklmq'()*(*')None'"#%&'-./189;=>?FHIMSUVX_dghklmqNone'"#%&'-./189;=>?FHIMSUVX_dghklmqNone'"#%&'-./189;=>?FHIMSUVX_dghklmqNone'"#%&'-./189;=>?FHIMSUVX_dghklmq3None'"#%&'-./189;=>?FHIMSUVX_dghklmqNone'"#%&'-./189;=>?FHIMSUVX_dghklmqONone'"#%&'-./189;=>?FHIMSUVX_dghklmqNone'"#%&'-./189;=>?FHIMSUVX_dghklmqkNone'"#%&'-./189;=>?FHIMSUVX_dghklmqNone'"#%&'-./189;=>?FHIMSUVX_dghklmq    None'"#%&'-./189;=>?FHIMSUVX_dghklmqNone'"#%&'-./189;=>?FHIMSUVX_dghklmq !" "!None'"#%&'-./189;=>?FHIMSUVX_dghklmq1#$%&$&#%None'"#%&'-./189;=>?FHIMSUVX_dghklmq)*+,-./0123456789:;<=>>=<.;:/,9-)87654*+3201None'"#%&'-./189;=>?FHIMSUVX_dghklmqk?vulkanAnnotate a type with a name??None'"#%&'-./189;=>?FHIMSUVX_dghklmq@ABCDEBA@CDE None'"#%&'-./189;=>?FHIMSUVX_dghklmqFvulkan2A 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" tagFGFG None'"#%&'-./189;=>?FHIMSUVX_dghklmqEZvulkanBVkColorSpaceKHR - supported color space of the presentation engine DescriptionNoteIn the initial release of the VK_KHR_surface and VK_KHR_swapchain extensions, the token  VK_COLORSPACE_SRGB_NONLINEAR_KHR was used. Starting in the 2016-05-13 updates to the extension branches, matching release 1.0.13 of the core API specification, m{ is used instead for consistency with Vulkan naming rules. The older enum is still available for backwards compatibility.Note$In older versions of this extension ` was misnamed n. 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 Z/ 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^vulkan^l specifies support for the Display-P3 color space to be displayed using an sRGB-like EOTF (defined below)._vulkan_Z specifies support for the extended sRGB color space to be displayed using a linear EOTF.`vulkan`W specifies support for the Display-P3 color space to be displayed using a linear EOTF.avulkana 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.bvulkanbR specifies support for the BT709 color space to be displayed using a linear EOTF.cvulkancX specifies support for the BT709 color space to be displayed using the SMPTE 170M EOTF.dvulkandS specifies support for the BT2020 color space to be displayed using a linear EOTF.evulkane~ specifies support for the HDR10 (BT2020 color) space to be displayed using the SMPTE ST2084 Perceptual Quantizer (PQ) EOTF.fvulkanf specifies support for the Dolby Vision (BT2020 color space), proprietary encoding, to be displayed using the SMPTE ST2084 EOTF.gvulkangm specifies support for the HDR10 (BT2020 color space) to be displayed using the Hybrid Log Gamma (HLG) EOTF.hvulkanhU specifies support for the AdobeRGB color space to be displayed using a linear EOTF.ivulkaniZ specifies support for the AdobeRGB color space to be displayed using the Gamma 2.2 EOTF.jvulkanj specifies that color components are used as is . This is intended to allow applications to supply data for color spaces not described here.kvulkankY specifies support for the extended sRGB color space to be displayed using an sRGB EOTF.lvulkanl specifies support for the display s native color space. This matches the color space expectations of AMD s FreeSync2 standard, for displays supporting it.mvulkanm- specifies support for the sRGB color space.XYZmlkjihgfedcba`_^[\]n'nZmlkjihgfedcba`_^[mlkjihgfedcba`_^Y]X\ None'"#%&'-./189;=>?FHIMSUVX_dghklmq@vulkan A version of getInstanceProcAddr; which can be called with a null pointer for the instance.wuvyx~}z{|0 !"+,-5./~DFECMLGIHB76JK8>?@;<=9:)Ayxz$}*SQPUTR1234'&     {|#bdfhtmjegis_`upol%(NO\[Zkcn]^rqaVWYXwvwwuvyx~}z{|0 !"+,-5./~DFECMLGIHB76JK8>?@;<=9:)Ayxz$}*SQPUTR1234'&     {|#bdfhtmjegis_`upol%(NO\[Zkcn]^rqaVWYXwvw None'"#%&'-./189;=>?FHIMSUVX_dghklmq,vulkanrVkShaderFloatControlsIndependence - Enum specifying whether, and how, shader float controls can be set separatelySee Alsof, Vvulkan: 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'"#%&'-./189;=>?FHIMSUVX_dghklmq6vulkan:VkSemaphoreType - Sepcifies the type of a semaphore objectSee Alsohvulkan specifies a timeline semaphore type that has a monotonically increasing 64-bit unsigned integer payload indicating whether the semaphore is signaled with respect to a particular reference value. When created, the semaphore payload has the value given by the  initialValue field of h.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'"#%&'-./189;=>?FHIMSUVX_dghklmqBvulkanEVkSamplerReductionMode - Specify reduction mode for texture filteringSee AlsoY 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'"#%&'-./189;=>?FHIMSUVX_dghklmqMvulkanVkDriverId - 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 Also`, VNone'"#%&'-./189;=>?FHIMSUVX_dghklmq[S&vulkanGVkTessellationDomainOrigin - Enum describing tessellation domain origin DescriptionThis enum affects how the  VertexOrderCw and VertexOrderCcwx tessellation execution modes are interpreted, since the winding is defined relative to the orientation of the domain.See AlsoP(vulkan(a 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.)vulkan)a 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'"#%&'-./189;=>?FHIMSUVX_dghklmqk#0vulkan>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 S is ignored in this case.See Also, S2vulkan2 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.3vulkan3 specifies that the full range of the encoded values are valid and interpreted according to the ITU full range  quantization rules.0321032132None'"#%&'-./189;=>?FHIMSUVX_dghklmqd:vulkanFVkSamplerYcbcrModelConversion - Color model component of a color space Description@G 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 S:: 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, S:@?>=<; :@?>=<;@?>=<None'"#%&'-./189;=>?FHIMSUVX_dghklmqGvulkanEVkPointClippingBehavior - Enum specifying the point clipping behaviorSee AlsoP, VIvulkanIa specifies that the primitive is discarded only if the vertex lies outside any user clip plane.JvulkanJ specifies that the primitive is discarded if the vertex lies outside any clip plane, including the planes bounding the view volume.GJIHGJIHJINone'"#%&'-./189;=>?FHIMSUVX_dghklmq6Qvulkan]VkDescriptorUpdateTemplateType - Indicates the valid usage of the descriptor update templateSee AlsoDSvulkanS_ specifies that the descriptor update template will be used for push descriptor updates only.TvulkanT] specifies that the descriptor update template will be used for descriptor set updates only.QTSRQTSRTSNone'"#%&'-./189;=>?FHIMSUVX_dghklmq[vulkan9VkChromaLocation - Position of downsampled chroma samplesSee Also, S]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.[^]\[^]\^]None'"#%&'-./189;=>?FHIMSUVX_dghklmq evulkanTVkVertexInputRate - Specify rate at which vertex attributes are pulled from buffersSee Also1gvulkangQ specifies that vertex attribute addressing is a function of the instance index.hvulkanhO specifies that vertex attribute addressing is a function of the vertex index.ehgfehgfhgNone'"#%&'-./189;=>?FHIMSUVX_dghklmqovulkanVkVendorId - 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 availableotsrqp otsrqptsrqNone'"#%&'-./189;=>?FHIMSUVX_dghklmqּ{vulkan*VkSystemAllocationScope - Allocation scope DescriptionT specifies that the allocation is scoped to the duration of the Vulkan command.v specifies that the allocation is scoped to the lifetime of the Vulkan object that is being created or used.H specifies that the allocation is scoped to the lifetime of a ) or k object.~S specifies that the allocation is scoped to the lifetime of the Vulkan device.}U specifies that the allocation is scoped to the lifetime of the Vulkan instance.Most Vulkan commands operate on a single object, or there is a sole object that is being created or manipulated. When an allocation uses an allocation scope of  or G, the allocation is scoped to the object being created or manipulated.When an implementation requires host memory, it will make callbacks to the application using the most specific allocator and allocation scope available:YIf an allocation is scoped to the duration of a command, the allocator will use the  allocation scope. The most specific allocator available is used: if the object being created or manipulated has an allocator, that object s allocator will be used, else if the parent ); has an allocator it will be used, else if the parent )- has an allocator it will be used. Else,+If an allocation is associated with a k or )) object, the allocator will use the u allocation scope. The most specific allocator available is used (cache, else device, else instance). Else,If an allocation is scoped to the lifetime of an object, that object is being created or manipulated by the command, and that object s type is not ) or )5, the allocator will use an allocation scope of e. The most specific allocator available is used (object, else device, else instance). Else,pIf an allocation is scoped to the lifetime of a device, the allocator will use an allocation scope of ~S. The most specific allocator available is used (device, else instance). Else,If the allocation is scoped to the lifetime of an instance and the instance has an allocator, its allocator will be used with an allocation scope of }.kOtherwise an implementation will allocate memory through an alternative mechanism that is unspecified.See Also{~}| {~}|~}$None'"#%&'-./189;=>?FHIMSUVX_dghklmq`vulkan\VkSubpassContents - Specify how commands in the first subpass of a render pass are providedSee Also^,  ,  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.``None'"#%&'-./189;=>?FHIMSUVX_dghklmq vulkan*VkStructureType - Vulkan structure types (sType) Description8Each value corresponds to a particular structure with a sTypeD member with a matching name. As a general rule, the name of each O value is obtained by taking the name of the structure, stripping the leading Vk%, prefixing each capital letter with _P, converting the entire resulting string to upper case, and prefixing it with VK_STRUCTURE_TYPE_#. For example, structures of type * correspond to a  of 2, 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, ^, c, , , , F, B, F, B, , S, :, , , ], /, N, ], , , , , , , , ,  , 1, , , , ,  , , , , , , , , , , , , , , , ,  , ,  , W,  , Q , W , W , D,   ,  , , E, E, G, , , E, E, , ], q,  , , ?, , , , m,  , !, ", #, $, %, &, ', %(, H), *, J+, ,, -, ., L/, 0, K1, I2, 3, K4, J5, J6, 7, M8, '9, :, ;, <, O=, b>, b?, 0@, A, B, C, D, E, F, 1G, H, I, J, K, L, *, M, N, O, aP, OQ, /R, NS, T, SU, NV, [W, X, Y, Z, +[, \, P], ^, _, `, a, b, c, d, e, f, g, h, i,  j, k, -l, Em, -n, /o, Cp, Cq, r, s, t, u, v, ]w, x, Ny, z, {, |, }, ~, , , , , , A, \, , , , ], , l, , , , , , , , , , _, W, W, , , , , `, , K, I, K, , M, O, f, , , , , G, X, K, , O, , b, , , , , , Q, , , O, , , R, , R, , , , , , P, O, ?, ?, , , , , , , , , Y, S, Z, c, d, , x, w, , T, e, , , , , g, , , O, @, , , , , , , h, h, , , , i, U, , , V, V, V, V, j, , 2, , 1, t, , , , , 1, , 1, , , , , , 1, 3, , 1, , ,  , 1 , u ,  ,  , , 1, , P, 1, , 1, , , , 1, , , , , , , ?, 4,  , !, ", O#, $, %, &, ', (, b),  *, 0+, ^,, -, P., R/, 0, 1, 2, 73, Y, S, S4, S5, 66, 7, 8, h9, h, h:, 8;, <, =, O>, N?, @, 5A, ^, ^B, ^C, _D, ^E, F, G, H, I, J, K, L, M, N, mO, ~P, hQ, R, S, T, U, V, W, X, Y,  Z, [, \, ], ^@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ^@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      @?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      None'"#%&'-./189;=>?FHIMSUVX_dghklmq1vulkan>VkPresentFrameTokenGGP - The Google Games Platform frame tokenValid Usage (Implicit)See AlsoJvulkan frameToken must be a valid 5IJ5GHKLIJHLGK5None'"#%&'-./189;=>?FHIMSUVX_dghklmq9 vulkanRVkValidationFlagsEXT - Specify validation checks to disable for a Vulkan instanceValid Usage (Implicit)See Also, TTvulkan;VkValidationCheckEXT - Specify validation checks to disableSee Also WvulkanpDisabledValidationChecks must$ be a valid pointer to an array of disabledValidationCheckCount valid T valuesZvulkanZ/ specifies that shader validation is disabled.[vulkan[4 specifies that all validation checks are disabled.  VWRST[ZUXY  VWT[ZU[ZSYRXNone'"#%&'-./189;=>?FHIMSUVX_dghklmqj vulkanaVkValidationFeaturesEXT - Specify validation features to enable or disable for a Vulkan instance Valid UsageIf the pEnabledValidationFeatures array contains z, then it must also contain {If the pEnabledValidationFeatures array contains x , then it must not contain {Valid Usage (Implicit)sType must be If enabledValidationFeatureCount is not 0, pEnabledValidationFeatures must( be a valid pointer to an array of enabledValidationFeatureCount valid j valuesIf disabledValidationFeatureCount is not 0, pDisabledValidationFeatures must( be a valid pointer to an array of disabledValidationFeatureCount valid h valuesSee Also, h, jhvulkanFVkValidationFeatureDisableEXT - Specify validation features to disableSee Also jvulkanDVkValidationFeatureEnableEXT - Specify validation features to enableSee Also mvulkanpEnabledValidationFeatures is a pointer to an array of j: values specifying the validation features to be enabled.nvulkanpDisabledValidationFeatures is a pointer to an array of h; values specifying the validation features to be disabled.qvulkanq specifies that protection against duplicate non-dispatchable object handles is disabled. This feature is enabled by default.rvulkanr 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.svulkans\ specifies that object lifetime validation is disabled. This feature is enabled by default.tvulkant` specifies that stateless parameter validation is disabled. This feature is enabled by default.uvulkanuZ specifies that thread safety validation is disabled. This feature is enabled by default.vvulkanvS specifies that shader validation is disabled. This feature is enabled by default.wvulkanw4 specifies that all validation checks are disabled.xvulkanx) 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.yvulkany 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.zvulkanz 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.{vulkan{ specifies that GPU-assisted validation is enabled. Activating this feature instruments shader programs to generate additional diagnostic data. This feature is disabled by default. lmnfghwvutsrqij{zyxkop" lmnj{zyxk{zyxhwvutsrqiwvutsrqgpfoNone'"#%&'-./189;=>?FHIMSUVX_dghklmqrvulkanhVkPhysicalDevicePCIBusInfoPropertiesEXT - Structure containing PCI bus information of a physical deviceValid Usage (Implicit)See Alsovulkan 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'"#%&'-./189;=>?FHIMSUVX_dghklmqhvulkanJVkDeviceQueueGlobalPriorityCreateInfoEXT - Specify a system wide priority Description$A queue created without specifying  will default to .Valid Usage (Implicit)See Also, vulkanJVkQueueGlobalPriorityEXT - Values specifying a system-wide queue priority DescriptionPriority values are sorted in ascending order. A comparison operation on the enum values can be used to determine the priority order.See AlsovulkanglobalPriority 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. wNone'"#%&'-./189;=>?FHIMSUVX_dghklmqkvulkanVkPhysicalDeviceShaderCorePropertiesAMD - Structure describing shader core properties that can be supported by an implementationMembersThe members of the kC structure describe the following implementation-dependent limits: DescriptionIf the k structure is included in the pNext chain of O9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See AlsovulkanshaderEngineCount{ is an unsigned integer value indicating the number of shader engines found inside the shader core of the physical device.vulkanshaderArraysPerEngineCount 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.vulkancomputeUnitsPerShaderArray is an unsigned integer value indicating the physical number of compute units within a shader array. The active number of compute units in a shader array mayg be lower. A compute unit houses a set of SIMDs along with a sequencer module and a local data store.vulkansimdPerComputeUnit is an unsigned integer value indicating the number of SIMDs inside a compute unit. Each SIMD processes a single instruction at a time.vulkan wavefrontSizeI is an unsigned integer value indicating the maximum size of a subgroup.vulkan sgprsPerSimds is an unsigned integer value indicating the number of physical Scalar General Purpose Registers (SGPRs) per SIMD.vulkanminSgprAllocation[ is an unsigned integer value indicating the minimum number of SGPRs allocated for a wave.vulkanmaxSgprAllocation[ is an unsigned integer value indicating the maximum number of SGPRs allocated for a wave.vulkansgprAllocationGranularityX is an unsigned integer value indicating the granularity of SGPR allocation for a wave.vulkan vgprsPerSimds is an unsigned integer value indicating the number of physical Vector General Purpose Registers (VGPRs) per SIMD.vulkanminVgprAllocation[ is an unsigned integer value indicating the minimum number of VGPRs allocated for a wave.vulkanmaxVgprAllocation[ is an unsigned integer value indicating the maximum number of VGPRs allocated for a wave.vulkanvgprAllocationGranularityX is an unsigned integer value indicating the granularity of VGPR allocation for a wave.kkuNone'"#%&'-./189;=>?FHIMSUVX_dghklmqqfvulkansVkPipelineRasterizationStateRasterizationOrderAMD - 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 fT structure then the rasterization order used by the graphics pipeline defaults to .See Also, vulkanNVkRasterizationOrderAMD - Specify rasterization order for a graphics pipelineSee AlsofvulkanrasterizationOrder 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. f fqNone'"#%&'-./189;=>?FHIMSUVX_dghklmq\vulkangVkDeviceMemoryOverallocationCreateInfoAMD - Specify memory overallocation behavior for a Vulkan deviceValid Usage (Implicit)See Also, vulkanKVkMemoryOverallocationBehaviorAMD - Specify memory overallocation behaviorSee Also\vulkanoverallocationBehavior 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. \\None'"#%&'-./189;=>?FHIMSUVX_dghklmq vulkan)VkStencilOp - Stencil comparison function DescriptionaFor purposes of increment and decrement, the stencil bits are considered as an unsigned integer.If the stencil test fails, the sample s coverage bit is cleared in the fragment. If there is no stencil framebuffer attachment, stencil modification cannot7 occur, and it is as if the stencil tests always pass. If the stencil test passes, the  writeMask member of the 1af structures controls how the updated stencil value is written to the stencil framebuffer attachment. The least significant s bits of  writeMask , where s is the number of bits in the stencil framebuffer attachment, specify an integer mask. Where a 1 appears in this mask, the corresponding bit in the stencil value in the depth/stencil attachment is written; where a 0 appears, the bit is not written. The  writeMask value uses either the front-facing or back-facing state based on the facingness of the fragment. Fragments generated by front-facing primitives use the front mask and fragments generated by back-facing primitives use the back mask.See Also1avulkang 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. None'"#%&'-./189;=>?FHIMSUVX_dghklmqvulkan.VkSharingMode - Buffer and image sharing modes DescriptionNote mayA result in lower performance access to the buffer or image than .IRanges of buffers and image subresources of image objects created using  must: only be accessed by queues in the queue family that has  ownership of the resource. Upon creation, such resources are not owned by any queue family; ownership is implicitly acquired upon first use within a queue. Once a resource using 1 is owned by some queue family, the application must perform a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transferf to make the memory contents of a range or image subresource accessible to a different queue family.NoteImages still require a  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-layoutslayout transition from b or c' 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, *, , Nvulkan~ specifies that concurrent access to any range or image subresource of the object from multiple queue families is supported.vulkan~ specifies that access to any range or image subresource of the object will be exclusive to a single queue family at a time.None'"#%&'-./189;=>?FHIMSUVX_dghklmqvulkanBVkSamplerMipmapMode - 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 Also73vulkan specifies linear filtering.vulkan specifies nearest filtering.None'"#%&'-./189;=>?FHIMSUVX_dghklmqcvulkan^VkSamplerAddressMode - Specify behavior of sampling with texture coordinates outside an imageSee Also73vulkanY 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'"#%&'-./189;=>?FHIMSUVX_dghklmq%&'())&(%' None'"#%&'-./189;=>?FHIMSUVX_dghklmqm$Yvulkan&VkResult - Vulkan command return codes DescriptionIf a command returns a run time error, unless otherwise specified any output parameters will have undefined contents, except that if the output parameter is a structure with sType and pNextG fields, those fields will be unmodified. Any structures chained from pNext1 will also have undefined contents, except that sType and pNext will be unmodified.Out of memory errors do not damage any currently existing Vulkan objects. Objects that have already been successfully created can# still be used by the application.? will be returned by an implementation when an unexpected error occurs that cannot be attributed to valid behavior of the application and implementation. Under these conditions, it may+ be returned from any command returning a Y.Note?w is not expected to ever be returned if the application behavior is valid, and if the implementation is bug-free. If ? is received, the application should be checked against the latest validation layers to verify correct behavior as much as possible. If no issues are identified it could be an implementation issue, and the implementor should be contacted for support.Performance-critical commands generally do not have return codes. If a run time error occurs in such commands, the implementation will defer reporting the error until a specified point. For commands that record into command buffers (vkCmd*#) run time errors are reported by d.See Also+vulkan+, A pool memory allocation has failed. This must only be returned if no attempt to allocate host or device memory was made to accommodate the new allocation. If the failure was definitely due to fragmentation of the pool, @ should be returned instead.,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.0vulkan0w The requested window is already in use by Vulkan or another API in a manner which prevents it from being used again.1vulkan1D A swapchain no longer matches the surface properties exactly, but can6 still be used to present to the surface successfully.2vulkan2 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.3vulkan3 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.5vulkan5h One or more shaders failed to compile or link. More details are reported back to the application via VK_EXT_debug_report if enabled.9vulkan9, An operation on a swapchain created with e> 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.;vulkan;f A deferred operation is not complete but there is no work remaining to assign to additional threads.<vulkan<P A deferred operation was requested and at least some of the work was deferred.=vulkan=E A deferred operation was requested and no operations were deferred.>vulkan> A requested pipeline creation would have required compilation, but the application requested compilation to not be performed.?vulkan?~ An unknown error has occurred; either the application has provided invalid input, or an implementation failure has occurred.@vulkan@O 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.AvulkanA5 A requested format is not supported on this device.BvulkanB9 Too many objects of the type have already been created.CvulkanC The requested version of Vulkan is not supported by the driver or is otherwise incompatible for implementation-specific reasons.DvulkanD& A requested feature is not supported.EvulkanE( A requested extension is not supported.FvulkanF: A requested layer is not present or could not be loaded.GvulkanG' Mapping of a memory object has failed.HvulkanH4 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 DeviceIvulkanIY Initialization of an object could not be completed for implementation-specific reasons.JvulkanJ' A device memory allocation has failed.KvulkanK% A host memory allocation has failed.LvulkanL, A return array was too small for the resultMvulkanM An event is unsignaledNvulkanN An event is signaledOvulkanO9 A wait operation has not completed in the specified timePvulkanP' A fence or query has not yet completedQvulkanQ Command successfully completed)YQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*PYQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*QPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+None'"#%&'-./189;=>?FHIMSUVX_dghklmqsXvulkandThis exception is thrown from calls to marshalled Vulkan commands which return a negative VkResult..vulkan0A human understandable message for each VkResultXYZXYZ None'"#%&'-./189;=>?FHIMSUVX_dghklmq`vulkanSvkEnumerateInstanceVersion - Query instance-level version before instance creation Parameters pApiVersion is a pointer to a uint32_ts, which is the version of Vulkan supported by instance-level functionality, encoded as described in  yhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-coreversions-versionnumbers. DescriptionNoteThe intended behaviour of ` is that an implementation should- not need to perform memory allocations and should unconditionally return Q'. The loader, and any enabled layers, may return K, in the case of a failed memory allocation. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKSee Also!No cross-references are available``None'"#%&'-./189;=>?FHIMSUVX_dghklmq1 XvulkanAVkQueryType - Specify the type of queries managed by a query poolSee Also4, f, g, hbvulkanb specifies a  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-transform-feedbacktransform feedback query.cvulkanc specifies a  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-performanceperformance query.dvulkand specifies a  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-copying-ray tracing acceleration structure size query.evulkane specifies a lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-copying;ray tracing serialization acceleration structure size queryfvulkanf specifies a  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-performance-intelIntel performance query.gvulkang specifies a  `https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-timestampstimestamp query.hvulkanh specifies a  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestatspipeline statistics query.ivulkani specifies an  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-occlusionocclusion query. XihgfedcbaXihgfedcbaihgfedcb!None'"#%&'-./189;=>?FHIMSUVX_dghklmq ٿ pvulkan4VkPrimitiveTopology - 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 Also1rvulkanr specifies  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-patch-listsseparate patch primitives.svulkans 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.tvulkant 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.uvulkanu 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.vvulkanv 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.wvulkanw specifies a series of  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-fansconnected triangle primitives- with all triangles sharing a common vertex.xvulkanx 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.yvulkany specifies a series of  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-listsseparate triangle primitives.zvulkanz 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. p|{zyxwvutsrqp|{zyxwvutsrq|{zyxwvutsr"None'"#%&'-./189;=>?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 Also1 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.vulkan6 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'"#%&'-./189;=>?FHIMSUVX_dghklmq vulkan<VkPipelineCacheHeaderVersion - Encode pipeline cache versionSee Also2i, 2jvulkan. specifies version one of the pipeline cache.None'"#%&'-./189;=>?FHIMSUVX_dghklmq *QvulkanVVkPipelineBindPoint - Specify the bind point of a pipeline object to a command bufferSee AlsoD, B, C, g, 0k, ^C,  l,  m, n, ovulkan. specifies binding as a ray tracing pipeline.vulkan) specifies binding as a compute pipeline.vulkan* specifies binding as a graphics pipeline.QQ$None'"#%&'-./189;=>?FHIMSUVX_dghklmq vulkan6VkPhysicalDeviceType - Supported physical device types DescriptionThe physical device type is advertised for informational purposes only, and does not directly affect the operation of the system. However, the device type mayt correlate with other advertised properties or capabilities of the system, such as how many memory heaps there are.See Also pvulkanG - 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'"#%&'-./189;=>?FHIMSUVX_dghklmq 2svulkanBVkObjectType - Specify an enumeration to track object handle types Description' " D Vulkan Handle Type &  C Unknown/Undefined Handle    )    )q    )    )r    )s    )t    )u    )v    )w    )x    )y    )z    ){    )|    )}    )    )~    )    )    )    )    )    )    )    )    >    >    k    k    k    k    k    k    k    k    k    k +VkObjectType and Vulkan Handle RelationshipSee Also, )P&None'"#%&'-./189;=>?FHIMSUVX_dghklmq Rvulkan*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 Also1"'None'"#%&'-./189;=>?FHIMSUVX_dghklmq Wvulkan*VkInternalAllocationType - Allocation typeSee Also(, (vulkanF specifies that the allocation is intended for execution by the host.(None'"#%&'-./189;=>?FHIMSUVX_dghklmq dvulkanDPFN_vkVoidFunction - Dummy function pointer type returned by queriesSee Also ,  vulkan=PFN_vkFreeFunction - Application-defined memory free function Parameters pUserData! is the value specified for :: pUserData4 in the allocator specified by the application.pMemory is the allocation to be freed. 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 Also vulkanJPFN_vkAllocationFunction - Application-defined memory allocation function Parameters pUserData! is the value specified for :: pUserData4 in the allocator specified by the application.size2 is the size in bytes of the requested allocation. alignment@ is the requested alignment of the allocation in bytes and must be a power of two.allocationScope is a {f value specifying the allocation scope of the lifetime of the allocation, as described  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-host-allocation-scopehere. 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 )0 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 run-time 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 Also vulkanNPFN_vkReallocationFunction - Application-defined memory reallocation function Parameters pUserData! is the value specified for :: pUserData4 in the allocator specified by the application. pOriginal must be either NULL* or a pointer previously returned by pfnReallocation or  pfnAllocation of a compatible allocator.size2 is the size in bytes of the requested allocation. alignment@ is the requested alignment of the allocation in bytes and must be a power of two.allocationScope is a {f value specifying the allocation scope of the lifetime of the allocation, as described  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-host-allocation-scopehere. 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 Also vulkanWPFN_vkInternalFreeNotification - Application-defined memory free notification function Parameters pUserData! is the value specified for :: pUserData4 in the allocator specified by the application.size( is the requested size of an allocation.allocationType is a ; value specifying the requested type of an allocation.allocationScope is a {f value specifying the allocation scope of the lifetime of the allocation, as described  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-host-allocation-scopehere.See Also vulkancPFN_vkInternalAllocationNotification - Application-defined memory allocation notification function Parameters pUserData! is the value specified for :: pUserData4 in the allocator specified by the application.size( is the requested size of an allocation.allocationType is a ; value specifying the requested type of an allocation.allocationScope is a {f value specifying the allocation scope of the lifetime of the allocation, as described  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-host-allocation-scopehere. Description(This is a purely informational callback.See Also de                 deNone'"#%&'-./189;=>?FHIMSUVX_dghklmq TOvulkan*VkIndexType - Type of index buffer indicesSee Also, , , F, h,   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.O O (None'"#%&'-./189;=>?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 +&. This table also shows which SPIR-V  OpTypeImage Dim and Arrayed0 parameters correspond to each image view type.See Also+[,                          None'"#%&'-./189;=>?FHIMSUVX_dghklmq ʋLvulkan3VkImageType - Specifies the type of an image objectSee Also*, O, O, ,  , : $vulkan $% specifies a three-dimensional image. %vulkan %# specifies a two-dimensional image. &vulkan &# specifies a one-dimensional image.L & % $ #L & % $ # & % $None'"#%&'-./189;=>?FHIMSUVX_dghklmq KvulkanDVkImageTiling - Specifies the tiling arrangement of data in an imageSee Also*, O, O, ,  , : .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 N or M, 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). 0vulkan 0} specifies optimal tiling (texels are laid out in an implementation-dependent arrangement, for more optimal memory access).K 0 / . -K 0 / . - 0 / .None'"#%&'-./189;=>?FHIMSUVX_dghklmq .Jvulkan6VkImageLayout - 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 0+ (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 Also0, ^, c, 0, ^, c,  , *, /R, ,  ,  ,  ,  ,  ,  ,   8vulkan 8 specifies a layout for depth/stencil format images allowing read and write access to the stencil aspect as a stencil attachment, and read only access to the depth aspect as a depth attachment or in shaders. It is equivalent to  ; and  <. 9vulkan 9 specifies a layout for depth/stencil format images allowing read and write access to the depth aspect as a depth attachment, and read only access to the stencil aspect as a stencil attachment or in shaders. It is equivalent to  : and  =. :vulkan : specifies a layout for the depth aspect of a depth/stencil format image allowing read and write access as a depth attachment. ;vulkan ; specifies a layout for the depth aspect of a depth/stencil format image allowing read-only access as a depth attachment or in shaders. <vulkan < specifies a layout for the stencil aspect of a depth/stencil format image allowing read and write access as a stencil attachment. =vulkan = specifies a layout for the stencil aspect of a depth/stencil format image allowing read-only access as a stencil attachment or in shaders. >vulkan > mustS only be used for presenting a presentable image for display. A swapchain s image must1 be transitioned to this layout before calling , and must6 be transitioned away from this layout after calling . ?vulkan ?3 is valid only for shared presentable images, and must* be used for any usage the image supports. @vulkan @ must only be used as a read-only  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-imageshading-rate-imageQ. This layout is valid only for image subresources of images created with the  usage bit enabled. Avulkan A must: only be used as a fragment density map attachment in a )P. This layout is valid only for image subresources of images created with the  usage bit enabled. Bvulkan B. does not support device access. This layout must only be used as the  initialLayout member of * or 0 , or as the  oldLayout in an image transition. When transitioning out of this layout, the contents of the memory are preserved. This layout is intended to be used as the initial layout for an image whose contents are written by the host, and hence the data can] be written to memory immediately, without first executing a layout transition. Currently,  B 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. Cvulkan C 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. Dvulkan D 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. Evulkan E must7 only be used as a read-only image in a shader (which can be read as a sampled image, combined image/sampler and/or input attachment). This layout is valid only for image subresources of images created with the  or  usage bit enabled. Fvulkan F specifies a layout for both the depth and stencil aspects of a depth/stencil format image allowing read only access as a depth/stencil attachment or in shaders. It is equivalent to  ; and  =. Gvulkan G specifies a layout for both the depth and stencil aspects of a depth/stencil format image allowing read and write access as a depth/stencil attachment. It is equivalent to  : and  <. Hvulkan H must5 only be used as a color or resolve attachment in a )Q. This layout is valid only for image subresources of images created with the  usage bit enabled. Ivulkan I% supports all types of device access. Jvulkan J. does not support device access. This layout must only be used as the  initialLayout member of * or 0 , or as the  oldLayout in an image transition. When transitioning out of this layout, the contents of the memory are not guaranteed to be preserved.J J I H G F E D C B A @ ? > = < ; : 9 8 7(J J I H G F E D C B A @ ? > = < ; : 9 8 7 J I H G F E D C B A @ ? > = < ; : 9 8)None'"#%&'-./189;=>?FHIMSUVX_dghklmq 6l Qvulkan8VkFrontFace - Interpret polygon front-facing orientation DescriptionVAny triangle which is not front-facing is back-facing, including zero-area triangles.See Also1 Svulkan SJ specifies that a triangle with negative area is considered front-facing. Tvulkan TJ specifies that a triangle with positive area is considered front-facing. Q T S R Q T S R T SNone'"#%&'-./189;=>?FHIMSUVX_dghklmq$`Gvulkan"VkFormat - Available image formatsSee Also, , , 0, ^, , b>, F, *, aP, Y, +[, O, O, S, , N, 1, ,  , O, ,  , : \vulkan \ specifies a four-component, 32-bit format containing a pair of G components, an R component, and a B component, collectively encoding a 21 rectangle of unsigned normalized RGB texel data. One G value is present at each i coordinate, with the B and R values shared across both G values and thus recorded at half the horizontal resolution of the image. This format has an 8-bit G component for the even iY coordinate in byte 0, an 8-bit B component in byte 1, an 8-bit G component for the odd iR coordinate in byte 2, and an 8-bit R component in byte 3. Images in this format must be defined with a width that is a multiple of two. For the purposes of the constraints on copy extents, this format is treated as a compressed format with a 21 compressed texel block. ]vulkan ] specifies a four-component, 32-bit format containing a pair of G components, an R component, and a B component, collectively encoding a 21 rectangle of unsigned normalized RGB texel data. One G value is present at each i coordinate, with the B and R values shared across both G values and thus recorded at half the horizontal resolution of the image. This format has an 8-bit B component in byte 0, an 8-bit G component for the even i] coordinate in byte 1, an 8-bit R component in byte 2, and an 8-bit G component for the odd i. coordinate in byte 3. Images in this format must be defined with a width that is a multiple of two. For the purposes of the constraints on copy extents, this format is treated as a compressed format with a 21 compressed texel block. ^vulkan ^# specifies an unsigned normalized multi-planar format that has an 8-bit G component in plane 0, an 8-bit B component in plane 1, and an 8-bit R component in plane 2. The horizontal and vertical dimensions of the R and B planes are halved relative to the image dimensions, and each R and B component is shared with the G components for which (lfloor i_G times 0.5 rfloor = i_B = i_R) and (lfloor j_G times 0.5 rfloor = j_B = j_R). The location of each plane when this image is in linear layout can be determined via * , using k for the G plane, k for the B plane, and k) for the R plane. Images in this format must? be defined with a width and height that is a multiple of two. _vulkan _# specifies an unsigned normalized multi-planar format{ that has an 8-bit G component in plane 0, and a two-component, 16-bit BR plane 1 consisting of an 8-bit B component in byte 0 and an 8-bit R component in byte 1. The horizontal and vertical dimensions of the BR plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which (lfloor i_G times 0.5 rfloor = i_B = i_R) and *\lfloor j_G \times 0.5 \rfloor = j_B = j_RY. The location of each plane when this image is in linear layout can be determined via * , using k for the G plane, and k* for the BR plane. Images in this format must? be defined with a width and height that is a multiple of two. `vulkan `# specifies an unsigned normalized multi-planar format that has an 8-bit G component in plane 0, an 8-bit B component in plane 1, and an 8-bit R component in plane 2. The horizontal dimension of the R and B plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which *\lfloor i_G \times 0.5 \rfloor = i_B = i_RY. The location of each plane when this image is in linear layout can be determined via * , using k for the G plane, k for the B plane, and k) for the R plane. Images in this format must4 be defined with a width that is a multiple of two. avulkan a# 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 *\lfloor i_G \times 0.5 \rfloor = i_B = i_RY. The location of each plane when this image is in linear layout can be determined via * , using k for the G plane, and k* for the BR plane. Images in this format must4 be defined with a width that is a multiple of two. bvulkan b# 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 * , using k for the G plane, k for the B plane, and k for the R plane. cvulkan c 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. dvulkan d 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. evulkan e 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. fvulkan f specifies a four-component, 64-bit format containing a pair of G components, an R component, and a B component, collectively encoding a 21 rectangle of unsigned normalized RGB texel data. One G value is present at each i coordinate, with the B and R values shared across both G values and thus recorded at half the horizontal resolution of the image. This format has a 10-bit G component for the even i coordinate in the top 10 bits of the word in bytes 0..1, a 10-bit B component in the top 10 bits of the word in bytes 2..3, a 10-bit G component for the odd i coordinate in the top 10 bits of the word in bytes 4..5, and a 10-bit R component in the top 10 bits of the word in bytes 6..7, with the bottom 6 bits of each word unused. Images in this format must be defined with a width that is a multiple of two. For the purposes of the constraints on copy extents, this format is treated as a compressed format with a 21 compressed texel block. gvulkan g specifies a four-component, 64-bit format containing a pair of G components, an R component, and a B component, collectively encoding a 21 rectangle of unsigned normalized RGB texel data. One G value is present at each i coordinate, with the B and R values shared across both G values and thus recorded at half the horizontal resolution of the image. This format has a 10-bit B component in the top 10 bits of the word in bytes 0..1, a 10-bit G component for the even i coordinate in the top 10 bits of the word in bytes 2..3, a 10-bit R component in the top 10 bits of the word in bytes 4..5, and a 10-bit G component for the odd i~ coordinate in the top 10 bits of the word in bytes 6..7, with the bottom 6 bits of each word unused. Images in this format must be defined with a width that is a multiple of two. For the purposes of the constraints on copy extents, this format is treated as a compressed format with a 21 compressed texel block. hvulkan h# specifies an unsigned normalized multi-planar formatz 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 (lfloor i_G times 0.5 rfloor = i_B = i_R) and (lfloor j_G times 0.5 rfloor = j_B = j_R). The location of each plane when this image is in linear layout can be determined via * , using k for the G plane, k for the B plane, and k) for the R plane. Images in this format must? be defined with a width and height that is a multiple of two. ivulkan i# 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 (lfloor i_G times 0.5 rfloor = i_B = i_R) and *\lfloor j_G \times 0.5 \rfloor = j_B = j_RY. The location of each plane when this image is in linear layout can be determined via * , using k for the G plane, and k* for the BR plane. Images in this format must? be defined with a width and height that is a multiple of two. jvulkan j# 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 *\lfloor i_G \times 0.5 \rfloor = i_B = i_RY. The location of each plane when this image is in linear layout can be determined via * , using k for the G plane, k for the B plane, and k) for the R plane. Images in this format must4 be defined with a width that is a multiple of two. kvulkan k# 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 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 *\lfloor i_G \times 0.5 \rfloor = i_B = i_RY. The location of each plane when this image is in linear layout can be determined via * , using k for the G plane, and k* for the BR plane. Images in this format must4 be defined with a width that is a multiple of two. lvulkan l# 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 * , using k for the G plane, k for the B plane, and k for the R plane. mvulkan m 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. nvulkan n 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. ovulkan o 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. pvulkan p specifies a four-component, 64-bit format containing a pair of G components, an R component, and a B component, collectively encoding a 21 rectangle of unsigned normalized RGB texel data. One G value is present at each i coordinate, with the B and R values shared across both G values and thus recorded at half the horizontal resolution of the image. This format has a 12-bit G component for the even i coordinate in the top 12 bits of the word in bytes 0..1, a 12-bit B component in the top 12 bits of the word in bytes 2..3, a 12-bit G component for the odd i coordinate in the top 12 bits of the word in bytes 4..5, and a 12-bit R component in the top 12 bits of the word in bytes 6..7, with the bottom 4 bits of each word unused. Images in this format must be defined with a width that is a multiple of two. For the purposes of the constraints on copy extents, this format is treated as a compressed format with a 21 compressed texel block. qvulkan q specifies a four-component, 64-bit format containing a pair of G components, an R component, and a B component, collectively encoding a 21 rectangle of unsigned normalized RGB texel data. One G value is present at each i coordinate, with the B and R values shared across both G values and thus recorded at half the horizontal resolution of the image. This format has a 12-bit B component in the top 12 bits of the word in bytes 0..1, a 12-bit G component for the even i coordinate in the top 12 bits of the word in bytes 2..3, a 12-bit R component in the top 12 bits of the word in bytes 4..5, and a 12-bit G component for the odd i~ coordinate in the top 12 bits of the word in bytes 6..7, with the bottom 4 bits of each word unused. Images in this format must be defined with a width that is a multiple of two. For the purposes of the constraints on copy extents, this format is treated as a compressed format with a 21 compressed texel block. rvulkan r# specifies an unsigned normalized multi-planar formatz 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 (lfloor i_G times 0.5 rfloor = i_B = i_R) and (lfloor j_G times 0.5 rfloor = j_B = j_R). The location of each plane when this image is in linear layout can be determined via * , using k for the G plane, k for the B plane, and k) for the R plane. Images in this format must? be defined with a width and height that is a multiple of two. svulkan s# 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 (lfloor i_G times 0.5 rfloor = i_B = i_R) and *\lfloor j_G \times 0.5 \rfloor = j_B = j_RY. The location of each plane when this image is in linear layout can be determined via * , using k for the G plane, and k* for the BR plane. Images in this format must? be defined with a width and height that is a multiple of two. tvulkan t# 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 *\lfloor i_G \times 0.5 \rfloor = i_B = i_RY. The location of each plane when this image is in linear layout can be determined via * , using k for the G plane, k for the B plane, and k) for the R plane. Images in this format must4 be defined with a width that is a multiple of two. uvulkan u# 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 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 *\lfloor i_G \times 0.5 \rfloor = i_B = i_RY. The location of each plane when this image is in linear layout can be determined via * , using k for the G plane, and k* for the BR plane. Images in this format must4 be defined with a width that is a multiple of two. vvulkan v# 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 * , using k for the G plane, k for the B plane, and k for the R plane. wvulkan w specifies a four-component, 64-bit format containing a pair of G components, an R component, and a B component, collectively encoding a 21 rectangle of unsigned normalized RGB texel data. One G value is present at each i coordinate, with the B and R values shared across both G values and thus recorded at half the horizontal resolution of the image. This format has a 16-bit G component for the even iz coordinate in the word in bytes 0..1, a 16-bit B component in the word in bytes 2..3, a 16-bit G component for the odd ir coordinate in the word in bytes 4..5, and a 16-bit R component in the word in bytes 6..7. Images in this format must be defined with a width that is a multiple of two. For the purposes of the constraints on copy extents, this format is treated as a compressed format with a 21 compressed texel block. xvulkan x specifies a four-component, 64-bit format containing a pair of G components, an R component, and a B component, collectively encoding a 21 rectangle of unsigned normalized RGB texel data. One G value is present at each i coordinate, with the B and R values shared across both G values and thus recorded at half the horizontal resolution of the image. This format has a 16-bit B component in the word in bytes 0..1, a 16-bit G component for the even i~ coordinate in the word in bytes 2..3, a 16-bit R component in the word in bytes 4..5, and a 16-bit G component for the odd i> coordinate in the word in bytes 6..7. Images in this format must be defined with a width that is a multiple of two. For the purposes of the constraints on copy extents, this format is treated as a compressed format with a 21 compressed texel block. yvulkan y# 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 (lfloor i_G times 0.5 rfloor = i_B = i_R) and (lfloor j_G times 0.5 rfloor = j_B = j_R). The location of each plane when this image is in linear layout can be determined via * , using k for the G plane, k for the B plane, and k) for the R plane. Images in this format must? be defined with a width and height that is a multiple of two. zvulkan z# 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 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 (lfloor i_G times 0.5 rfloor = i_B = i_R) and *\lfloor j_G \times 0.5 \rfloor = j_B = j_RY. The location of each plane when this image is in linear layout can be determined via * , using k for the G plane, and k* for the BR plane. Images in this format must? be defined with a width and height that is a multiple of two. {vulkan {# specifies an unsigned normalized multi-planar formatM 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 *\lfloor i_G \times 0.5 \rfloor = i_B = i_RY. The location of each plane when this image is in linear layout can be determined via * , using k for the G plane, k for the B plane, and k) for the R plane. Images in this format must4 be defined with a width that is a multiple of two. |vulkan |# specifies an unsigned normalized multi-planar formatu 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 *\lfloor i_G \times 0.5 \rfloor = i_B = i_RY. The location of each plane when this image is in linear layout can be determined via * , using k for the G plane, and k* for the BR plane. Images in this format must4 be defined with a width that is a multiple of two. }vulkan }# specifies an unsigned normalized multi-planar formath 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 * , using k for the G plane, k for the B plane, and k for the R plane. ~vulkan ~ specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes an 84 rectangle of unsigned normalized RGBA texel data. vulkan  specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data. vulkan  specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes an 84 rectangle of unsigned normalized RGBA texel data. vulkan  specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data. vulkan  specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes an 84 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. vulkan  specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. vulkan  specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes an 84 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. vulkan  specifies a four-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 44 rectangle of unsigned normalized RGBA texel data 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 signed floating-point RGBA texel data. vulkan  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. vulkan  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. vulkan  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. vulkan  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. vulkan  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. vulkan  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. vulkan  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. vulkan  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, 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. vulkan d specifies a one-component, 8-bit unsigned integer format that has 8-bits in the stencil component. vulkan i 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. vulkan h 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. vulkan f 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. vulkan a 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. vulkan f 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. vulkan a 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. vulkan f 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. vulkan a specifies a one-component, 16-bit unsigned integer format that has a single 16-bit R component. vulkan f specifies a one-component, 16-bit signed scaled integer format that has a single 16-bit R component. vulkan h specifies a one-component, 16-bit unsigned scaled integer format that has a single 16-bit R component. vulkan b specifies a one-component, 16-bit signed normalized format that has a single 16-bit R component. vulkan d 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. vulkan T 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. 0vulkan 0 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. 1vulkan 1 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. 2vulkan 2 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. 3vulkan 3 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. 4vulkan 4 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. 5vulkan 5 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. 6vulkan 6 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. 7vulkan 7 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. 8vulkan 8 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. 9vulkan 9 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. Avulkan Af specifies a one-component, 8-bit unsigned scaled integer format that has a single 8-bit R component. Bvulkan B` specifies a one-component, 8-bit signed normalized format that has a single 8-bit R component. Cvulkan Cb specifies a one-component, 8-bit unsigned normalized format that has a single 8-bit R component. Dvulkan D 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. Evulkan E 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. Fvulkan F 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. Gvulkan G 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. Hvulkan H 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. Ivulkan I 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. Jvulkan J 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. Kvulkan K 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. Lvulkan L, specifies that the format is not specified.G L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                            ~ } | { z 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 ` _ ^ ] \ [G L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                            ~ } | { z 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 ` _ ^ ] \ [ L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                            ~ } | { z 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 ` _ ^ ] \aNone'"#%&'-./189;=>?FHIMSUVX_dghklmqBP.vulkan4VkImageFormatListCreateInfo - 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 .% structure were not included in the pNext list of *. Valid UsageIf viewFormatCount is not 0!, all of the formats in the  pViewFormats array must5 be compatible with the format specified in the format field of *, as described in the chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibilitycompatibility tableIf *::flags does not contain , viewFormatCount must be 0 or 1If viewFormatCount is not 0, *::format must be in  pViewFormatsValid Usage (Implicit)sType must be If viewFormatCount is not 0,  pViewFormats must( be a valid pointer to an array of viewFormatCount valid G valuesSee AlsoG,  Tvulkan pViewFormats. is an array which lists of all formats which can, be used when creating views of this image.. S T43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      a. S T43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      *None'"#%&'-./189;=>?FHIMSUVX_dghklmqX Y Z [ \ ] ^ ^ [ Z ] Y \None'"#%&'-./189;=>?FHIMSUVX_dghklmq_Fvulkan3VkFilter - 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 Also73, S,   avulkan a specifies linear filtering. bvulkan b specifies nearest filtering.F b a ` _F b a ` _ b a `+None'"#%&'-./189;=>?FHIMSUVX_dghklmq ivulkanSVkDynamicState - Indicate which dynamic state is taken from dynamic state commandsSee Also1 kvulkan k specifies that the pViewportScalings state in  will be ignored and must be set dynamically with = before any draws are performed with a pipeline state with  member viewportScalingEnable set to  lvulkan l specifies that the pDiscardRectangles state in  will be ignored and must be set dynamically with * before any draw or clear commands. The I and the number of active discard rectangles is still specified by the discardRectangleMode and discardRectangleCount members of . mvulkan m 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 . nvulkan n specifies that the pShadingRatePalettes state in  will be ignored and must be set dynamically with  before any draw commands. ovulkan o3 specifies that the coarse sample order state in  will be ignored and must be set dynamically with  before any draw commands. pvulkan p specifies that the pExclusiveScissors state in  will be ignored and must be set dynamically with u before any draw commands. The number of exclusive scissor rectangles used by a pipeline is still specified by the exclusiveScissorCount member of . qvulkan q specifies that the lineStippleFactor and lineStipplePattern state in   will be ignored and must be set dynamically with = before any draws are performed with a pipeline state with   member stippledLineEnable set to . rvulkan r specifies that the  reference state in 1 for both front and back will be ignored and must be set dynamically with  = before any draws are performed with a pipeline state with 1 member stencilTestEnable set to  svulkan s specifies that the  writeMask state in 1 for both front and back will be ignored and must be set dynamically with  = before any draws are performed with a pipeline state with 1 member stencilTestEnable set to  tvulkan t specifies that the  compareMask state in 1 for both front and back will be ignored and must be set dynamically with  = before any draws are performed with a pipeline state with 1 member stencilTestEnable set to  uvulkan u specifies that the minDepthBounds and maxDepthBounds states of 1 will be ignored and must be set dynamically with  = before any draws are performed with a pipeline state with 1 member depthBoundsTestEnable set to . vvulkan v specifies that the blendConstants state in 1 will be ignored and must be set dynamically with  = before any draws are performed with a pipeline state with 1 member  blendEnable set to > and any of the blend functions using a constant blend color. wvulkan w specifies that the depthBiasConstantFactor, depthBiasClamp and depthBiasSlopeFactor states in 1  will be ignored and must be set dynamically with  & before any draws are performed with depthBiasEnable in 1  set to . xvulkan x specifies that the  lineWidth state in 1  will be ignored and must be set dynamically with  L before any draw commands that generate line primitives for the rasterizer. yvulkan y specifies that the  pScissors state in 1 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 1. zvulkan z specifies that the  pViewports state in 1 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 1. i z y x w v u t s r q p o n m l k j" i z y x w v u t s r q p o n m l k j z y x w v u t s r q p o n m l k,None'"#%&'-./189;=>?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.2When a descriptor set is updated via elements of  Z, 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  Z:: pImageInfo is accessed.For  ,   , or   , only the  imageView and  imageLayout! members of each element of  Z:: pImageInfo are accessed.For  +, all members of each element of  Z:: pImageInfo are accessed.For  ,  ,   , or  +, all members of each element of  Z:: pBufferInfo are accessed.For   or  , each element of  Z::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  Z$. 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  Z.See Also ,  , D, \,  Z  -None'"#%&'-./189;=>?FHIMSUVX_dghklmq vulkan8VkComponentSwizzle - Specify how a component is swizzled DescriptionvSetting the identity swizzle on a component is equivalent to setting the identity mapping on that component. That is:# Component # Identity Mapping   components.r      components.g      components.b      components.a    !Component Mappings Equivalent To  See Also+ vulkan S specifies that the component is set to the value of the A component of the image. vulkan S specifies that the component is set to the value of the B component of the image. vulkan S specifies that the component is set to the value of the G component of the image. vulkan S 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'"#%&'-./189;=>?FHIMSUVX_dghklmq vulkan)VkCompareOp - Stencil comparison functionSee Also1, 73, 1a vulkan ' specifies that the test always passes. vulkan + specifies that the test passes when R "e S. vulkan + specifies that the test passes when R "` S. vulkan + specifies that the test passes when R > S. vulkan + specifies that the test passes when R "d S. vulkan + specifies that the test passes when R = S. vulkan + specifies that the test passes when R < S. vulkan & specifies that the test never passes.  /None'"#%&'-./189;=>?FHIMSUVX_dghklmq vulkanBVkCommandBufferLevel - Enumerant specifying a command buffer levelSee Also vulkan & specifies a secondary command buffer. vulkan $ specifies a primary command buffer.  0None'"#%&'-./189;=>?FHIMSUVX_dghklmq vulkan=VkBorderColor - Specify border color used for texture lookups Description)These colors are described in detail in  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-replacementTexel Replacement.See Also73 vulkan 3 specifies an opaque, integer format, white color. vulkan : specifies an opaque, floating-point format, white color. vulkan 3 specifies an opaque, integer format, black color. vulkan : specifies an opaque, floating-point format, black color. vulkan 7 specifies a transparent, integer format, black color. vulkan > specifies a transparent, floating-point format, black color.  1None'"#%&'-./189;=>?FHIMSUVX_dghklmq9 vulkan+VkBlendOp - Framebuffer blending operations DescriptionNThe semantics of each basic blend operations is described in the table below:    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 Also15  h   2None'"#%&'-./189;=>?FHIMSUVX_dghklmqb 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 Also1                 (                                3None'"#%&'-./189;=>?FHIMSUVX_dghklmqw #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 Also0, ^ %vulkan %\ specifies that the contents within the render area were not written during rendering, and may not be written to memory. If the attachment was written to during the renderpass, the contents of the attachment will be undefined inside the render area. &vulkan &T specifies the contents within the render area are not needed after rendering, and may be discarded; the contents of the attachment will be undefined inside the render area. For attachments with a depth/stencil format, this uses the access type C. For attachments with a color format, this uses the access type . 'vulkan ' specifies the contents generated during the render pass and within the render area are written to memory. For attachments with a depth/stencil format, this uses the access type C. For attachments with a color format, this uses the access type . # ' & % $ # ' & % $ ' & %4None'"#%&'-./189;=>?FHIMSUVX_dghklmq .vulkaneVkAttachmentLoadOp - Specify how contents of an attachment are treated at the beginning of a subpassSee Also0, ^ 0vulkan 0 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 . 1vulkan 1 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 . 2vulkan 2 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 . . 2 1 0 / . 2 1 0 / 2 1 0None'"#%&'-./189;=>?FHIMSUVX_dghklmqvulkan4VkDeviceSize - Vulkan device memory size and offsetsSee Also, , , , , , B, B,  , ,  , /, , ,  , B, D, F,  , Z, , -l, -n,  , ., ,  _, Q, , , , , V, :, :, :, , *, ., ., ,  , ,  , , ,  ,  ,  , , , ,  , , , , , , , ,  , , ,  , , -, 4, -vulkan,VkDeviceAddress - Vulkan device address typeSee Also, , , , , , ZvulkanVkBool32 - Vulkan boolean type Description < represents a boolean True (integer 1) value, and  = a boolean False (integer 0) value.6All values returned from a Vulkan implementation in a  will be either  < or  =. Applications must not pass any other values than  < or  =' into a Vulkan implementation where a  is expected.See Also, , , , , , , Q , m, $, , <, h, Cq, , , A, \, , , , ], , l, , , , , , , , , _, W, W, , , ,  , f, , , , , G, X, K, b, , ,  _, , , , R, , , , , , ?, ?, , , , , Y, S, Z, c, d, , , T, e, , , , g, ,   , @, , , , , h, , , i, U, , V, V, V, V, j, , , 1, 1, , , 1, ,  , 1, 1, ,  , 1 ,  , , , , ?, 73, S, H, L, N, mO, ~P, ,  ,  , m , ' 9vulkanVkFlags - Vulkan bitmasks DescriptionYBitmasks are passed to many commands and structures to compactly represent options, but  9. is not used directly in the API. Instead, a Vk*Flags type which is an alias of  9,, and whose name matches the corresponding  Vk*FlagBits' that are valid for that type, is used.Any Vk*Flags1 member or parameter used in the API as an input must be a valid combination of bit flags. A valid combination is either zero or the bitwise OR of valid bit flags. A bit flag is valid if:'The bit flag is defined as part of the  Vk*FlagBitsd type, where the bits type is obtained by taking the flag type and replacing the trailing  9 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 Vk*Flagsg member or parameter returned from a query command or otherwise output from Vulkan to the application may3 contain bit flags undefined in its corresponding  Vk*FlagBits type. An application cannot- rely on the state of these unspecified bits._Only the low-order 31 bits (bit positions zero through 30) are available for use as flag bits.Note`This restriction is due to poorly defined behavior by C compilers given a C enumerant value of  0x80000000U. In some cases adding this enumerant value may increase the size of the underlying  Vk*FlagBits type, breaking the ABI.See Also{ :vulkan2VkSampleMask - Mask of sample coverage informationSee Also1  = < ; 9 : > ? > ? = < ; = < : 9None'"#%&'-./189;=>?FHIMSUVX_dghklmq{ vulkan=VkViewportSwizzleNV - Structure specifying a viewport swizzleValid Usage (Implicit)See Also,  HvulkanpVkPipelineViewportSwizzleStateCreateInfoNV - Structure specifying swizzle applied to primitive clip coordinatesValid Usage (Implicit)See Also J, ,  HvulkanNVkViewportCoordinateSwizzleNV - 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 Also JvulkanEVkPipelineViewportSwizzleStateCreateFlagsNV - Reserved for future use Description JQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also Mvulkanflags must be 0 NvulkanpViewportSwizzles must$ be a valid pointer to an array of  viewportCount valid  structures Pvulkanx must be a valid  H value Qvulkany must be a valid  H value Rvulkanz must be a valid  H value Svulkanw must be a valid  H value O P S Q R L M N F G H ] \ [ Z Y X W V I J K T U" O P S Q R L M N J K H ] \ [ Z Y X W V I ] \ [ Z Y X W V G U F TNone'"#%&'-./189;=>?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 O9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Also vulkanVkPhysicalDeviceShaderSMBuiltinsFeaturesNV - Structure describing the shader SM Builtins features that can be supported by an implementationMembersThe members of the  , structure describe the following features: DescriptionIf the   structure is included in the pNext chain of OJ, it is filled with values indicating whether the feature is supported.   can also be included in the pNext chain of    to enable the feature.Valid Usage (Implicit)See Also,  wvulkanshaderSMBuiltins; indicates whether the implementation supports the SPIR-V ShaderSMBuiltinsNV capability. yvulkan shaderSMCount$ is the number of SMs on the device. zvulkanshaderWarpsPerSMC is the maximum number of simultaneously executing warps on an SM.  x y z v w t u { |  x y z v w u | t {None'"#%&'-./189;=>?FHIMSUVX_dghklmq vulkanVkPhysicalDeviceShaderImageFootprintFeaturesNV - Structure describing shader image footprint features that can be supported by an implementation DescriptionSee  `https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-footprintTexel Footprint Evaluation for more information.If the   structure is included in the pNext chain of OK, 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 Also,  vulkanimageFootprint4 specifies whether the implementation supports the ImageFootprintNV SPIR-V capability.  None'"#%&'-./189;=>?FHIMSUVX_dghklmq vulkanjVkPipelineRepresentativeFragmentTestStateCreateInfoNV - Structure specifying representative fragment test Description"If this structure is not present,  representativeFragmentTestEnable is considered to be 4, and the representative fragment test is disabled.If  `https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-early-modeearly 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 Also, vulkanVkPhysicalDeviceRepresentativeFragmentTestFeaturesNV - Structure describing the representative fragment test features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of OJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of    to enable the feature.Valid Usage (Implicit)See Also,  vulkan representativeFragmentTestEnable? controls whether the representative fragment test is enabled. vulkanrepresentativeFragmentTestW indicates whether the implementation supports the representative fragment test. See  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-rep-frag-testRepresentative Fragment Test.     None'"#%&'-./189;=>?FHIMSUVX_dghklmq? vulkanpVkPipelineCoverageModulationStateCreateInfoNV - Structure specifying parameters controlling coverage modulation DescriptionIf coverageModulationTableEnable is , then for each color sample the associated bits of the fragment s coverage are counted and divided by the number of associated bits to produce a modulation factor R in the range (0,1] (a value of zero would have been killed due to a color coverage of 0). Specifically: N = value of rasterizationSamplesM = value of 0::samples for any color attachments0R = popcount(associated coverage bits) / (N / M)If coverageModulationTableEnable is , the value R is computed using a programmable lookup table. The lookup table has N / M elements, and the element of the table is selected by:R = pCoverageModulationTable&[popcount(associated coverage bits)-1]Note that the table does not have an entry for popcount(associated coverage bits) = 0, because such samples would have been killed.The values of pCoverageModulationTable mayq be rounded to an implementation-dependent precision, which is at least as fine as 1 / N, and clamped to [0,1].For each color attachment with a floating point or normalized color format, each fragment output color value is replicated to M values which can each be modulated (multiplied) by that color sample s associated value of R. Which components are modulated is controlled by coverageModulationMode..If this structure is not present, it is as if coverageModulationMode is  .If the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-coverage-reductioncoverage reduction mode is b, each color sample is associated with only a single coverage sample. In this case, it is as if coverageModulationMode is  . Valid UsageIf coverageModulationTableEnable is , coverageModulationTableCount mustp be equal to the number of rasterization samples divided by the number of color samples in the subpassValid Usage (Implicit)sType must be flags must be 0coverageModulationMode must be a valid   valueSee Also,  ,  ,  vulkanAVkCoverageModulationModeNV - Specify the coverage modulation modeSee Also vulkanHVkPipelineCoverageModulationStateCreateFlagsNV - 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. 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. vulkanpCoverageModulationTableY is a table of modulation factors containing a value for each number of covered samples. vulkan H specifies that all components are multiplied by the modulation factor. vulkan L 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. vulkan G specifies that no components are multiplied by the modulation factor.  None'"#%&'-./189;=>?FHIMSUVX_dghklmqOvulkanVkPhysicalDeviceFragmentShaderBarycentricFeaturesNV - Structure describing barycentric support in fragment shaders that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionSee  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-barycentricBarycentric Interpolation for more information.If the  structure is included in the pNext chain of OJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of    to enable features.Valid Usage (Implicit)See Also,  vulkanfragmentShaderBarycentric1 indicates that the implementation supports the  BaryCoordNV and BaryCoordNoPerspNV4 SPIR-V fragment shader built-ins and supports the  PerVertexNV7 SPIR-V decoration on fragment shader input variables.  None'"#%&'-./189;=>?FHIMSUVX_dghklmquvulkanmVkPipelineCoverageToColorStateCreateInfoNV - Structure specifying whether fragment coverage replaces a color DescriptionIf coverageToColorEnable is g, the fragment coverage information is treated as a bitmask with one bit for each sample (as in the  `https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-samplemask Sample Mask section), and this bitmask replaces the first component of the color value corresponding to the fragment shader output location with Location equal to coverageToColorLocation and Index3 equal to zero. If the color attachment format has fewer bits than the sample coverage, the low bits of the sample coverage bitmask are taken without any clamping. If the color attachment format has more bits than the sample coverage, the high bits of the sample coverage bitmask are filled with zeros.If  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshadingSample Shading is in use, the coverage bitmask only has bits set for samples that correspond to the fragment shader invocation that shades those samples.This pipeline stage occurs after sample counting and before blending, and is always performed after fragment shading regardless of the setting of EarlyFragmentTests.If coverageToColorEnable is P, these operations are skipped. If this structure is not present, it is as if coverageToColorEnable is . Valid UsageIf coverageToColorEnable is 6, then the render pass subpass indicated by 1G:: renderPass and 1G::subpass must: have a color attachment at the location selected by coverageToColorLocation, with a  of , , , ,  , or Valid Usage (Implicit)sType must be flags must be 0See Also,  ,  vulkanEVkPipelineCoverageToColorStateCreateFlagsNV - 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. vulkancoverageToColorEnableP controls whether the fragment coverage value replaces a fragment color output. vulkancoverageToColorLocation@ controls which fragment shader color output value is replaced.   None'"#%&'-./189;=>?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 OJ, it is filled with values indicating whether the feature is supported.  can also be used in the pNext chain of    to enable the feature.Valid Usage (Implicit)See Also, vulkanWVkDeviceDiagnosticsConfigCreateInfoNV - Specify diagnostics config for a Vulkan deviceValid Usage (Implicit)See Also ,  vulkanKVkDeviceDiagnosticsConfigFlagBitsNV - Bitmask specifying diagnostics flagsSee Also vulkanflags must be a valid combination of   values vulkandiagnosticsConfigZ indicates whether the implementation supports the ability to configure diagnostic tools. vulkan " enables automatic insertion of  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#device-diagnostic-checkpointsdiagnostic checkpoints for draw calls, dispatches, trace rays, and copies. The CPU call stack at the time of the command will be associated as the marker data for the automatically inserted checkpoints. vulkan r enables driver side tracking of resources (images, buffers, etc.) used to augment the device fault information. vulkan : enables the generation of debug information for shaders.    None'"#%&'-./189;=>?FHIMSUVX_dghklmq2vulkanVkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV - 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 OK, 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 Also,  vulkan dedicatedAllocationImageAliasingl indicates that the implementation supports aliasing of compatible image objects on a dedicated allocation.        None'"#%&'-./189;=>?FHIMSUVX_dghklmqovulkanVkPhysicalDeviceCornerSampledImageFeaturesNV - 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 OK, 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 Also,  vulkancornerSampledImage1 specifies whether images can be created with a *::flags containing . See  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-images-corner-sampledCorner-Sampled Images.            None'"#%&'-./189;=>?FHIMSUVX_dghklmqvulkanVkPhysicalDeviceComputeShaderDerivativesFeaturesNV - Structure describing compute shader derivative features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionSee  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#texture-derivatives-computeCompute Shader Derivatives for more information.If the  structure is included in the pNext chain of OK, 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 Also,  vulkancomputeDerivativeGroupQuads1 indicates that the implementation supports the ComputeDerivativeGroupQuadsNV SPIR-V capability. vulkancomputeDerivativeGroupLinear1 indicates that the implementation supports the ComputeDerivativeGroupLinearNV SPIR-V capability.     ! "    "  !None'"#%&'-./189;=>?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 O9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Also,  +vulkanperViewPositionAllComponents is p if the implementation supports per-view position values that differ in components other than the X component. * + ( ) , - * + ) - ( ,None'"#%&'-./189;=>?FHIMSUVX_dghklmqvulkanaVkSurfaceProtectedCapabilitiesKHR - Structure describing capability of a surface to be protectedValid Usage (Implicit)See Also,  6vulkansupportsProtected7 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. 5 6 3 4 7 8 5 6 4 8 3 7None'"#%&'-./189;=>?FHIMSUVX_dghklmq֮vulkanhVkPhysicalDeviceShaderClockFeaturesKHR - Structure describing features supported by VK_KHR_shader_clock DescriptionIf the  structure is included in the pNext chain of OK, it is filled with values indicating whether each feature is supported.  can also be included in the pNext chain of    to enable the features.Valid Usage (Implicit)See Also,  AvulkanshaderSubgroupClock indicates whether shaders can support Subgroup scoped clock reads. BvulkanshaderDeviceClock indicates whether shaders can support ) scoped clock reads. @ A B > ? C D @ A B ? D > CNone'"#%&'-./189;=>?FHIMSUVX_dghklmq/3vulkanVkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL - Structure describing shader integer functions that can be supported by an implementationMembersThe members of the 3, structure describe the following features: DescriptionIf the 3 structure is included in the pNext chain of OJ, it is filled with values indicating whether the feature is supported. 3 can also be included in the pNext chain of    to enable features.Valid Usage (Implicit)See Also,  MvulkanshaderIntegerFunctions21 indicates that the implementation supports the ShaderIntegerFunctions2INTEL SPIR-V capability.3 L M J K N O3 L M K O J NNone'"#%&'-./189;=>?FHIMSUVX_dghklmq1vulkanVkPhysicalDeviceYcbcrImageArraysFeaturesEXT - 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 OJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of    to enable features.Valid Usage (Implicit)See Also,  XvulkanycbcrImageArraysZ 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. W X U V Y Z W X V Z U YNone'"#%&'-./189;=>?FHIMSUVX_dghklmq!  vulkangVkVertexInputBindingDivisorDescriptionEXT - Structure specifying a divisor used in instanced rendering Description|If this structure is not used to define a divisor value for an attribute then the divisor has a logical default value of 1. Valid Usagebinding must be less than  _::maxVertexInputBindingsIf the &vertexAttributeInstanceRateZeroDivisor feature is not enabled, divisor must not be 0If the "vertexAttributeInstanceRateDivisor feature is not enabled, divisor must be 1divisor must be a value between 0 and  ::maxVertexAttribDivisor, inclusive1:: inputRate must be of type  for this bindingSee Also  vulkan~VkPipelineVertexInputDivisorStateCreateInfoEXT - Structure specifying vertex attributes assignment during instanced renderingValid Usage (Implicit)See Also,   vulkanVkPhysicalDeviceVertexAttributeDivisorPropertiesEXT - Structure describing max value of vertex attribute divisor that can be supported by an implementationMembersThe members of the  C structure describe the following implementation-dependent limits: DescriptionIf the   structure is included in the pNext chain of O9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See AlsovulkanVkPhysicalDeviceVertexAttributeDivisorFeaturesEXT - Structure describing if fetching of vertex attribute may be repeated for instanced rendering DescriptionIf the  structure is included in the pNext chain of OO, it is filled with values indicating the implementation-dependent behavior.  can also be included in pNext chain of    to enable the feature.Valid Usage (Implicit)See Also,  cvulkan"vertexAttributeInstanceRateDivisor] specifies whether vertex attribute fetching may be repeated in case of instanced rendering. dvulkan&vertexAttributeInstanceRateZeroDivisor% specifies whether a zero value for  ::divisor is supported. fvulkanmaxVertexAttribDivisor is the maximum value of the number of instances that will repeat the value of vertex attribute data when instanced rendering is enabled. hvulkanpVertexBindingDivisors must$ be a valid pointer to an array of vertexBindingDivisorCount   structures jvulkanbinding: is the binding number for which the divisor is specified. kvulkandivisorn 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. i j k g h e f b c d ` a l m i j k g h e f b c d a m ` lNone'"#%&'-./189;=>?FHIMSUVX_dghklmq2vulkanVkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT - 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 OK, 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 Also,  vulkantextureCompressionASTC_HDRy indicates whether all of the ASTC HDR compressed texture formats are supported. If this feature is enabled, then the n, n and n features must be supported in optimalTilingFeatures for the following formats: !"#$%&'()*+,-GTo query for additional properties, or if the feature is not enabled,   and   canL be used to check for supported properties of individual formats as normal.  None'"#%&'-./189;=>?FHIMSUVX_dghklmqZvulkanVkPhysicalDeviceTexelBufferAlignmentPropertiesEXT - 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 O9, 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 Also, , 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 OJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of    to enable the feature.Valid Usage (Implicit)See Also,  vulkan&storageTexelBufferOffsetAlignmentBytesR is a byte alignment that is sufficient for a storage texel buffer of any format. vulkan,storageTexelBufferOffsetSingleTexelAlignmentb indicates whether single texel alignment is sufficient for a storage texel buffer of any format. vulkan&uniformTexelBufferOffsetAlignmentBytesR is a byte alignment that is sufficient for a uniform texel buffer of any format. vulkan,uniformTexelBufferOffsetSingleTexelAlignmentb indicates whether single texel alignment is sufficient for a uniform texel buffer of any format. vulkantexelBufferAlignment` indicates whether the implementation uses more specific alignment requirements advertised in  rather than  _::minTexelBufferOffsetAlignment.     None'"#%&'-./189;=>?FHIMSUVX_dghklmqg1vulkanVkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT - 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 OJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of    to enable the feature.Valid Usage (Implicit)See Also,  vulkanshaderDemoteToHelperInvocation; indicates whether the implementation supports the SPIR-V DemoteToHelperInvocationEXT capability.  None'"#%&'-./189;=>?FHIMSUVX_dghklmq:vulkanVkPhysicalDeviceRobustness2PropertiesEXT - 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 O9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Also, vulkanoVkPhysicalDeviceRobustness2FeaturesEXT - Structure describing the out-of-bounds behavior for an implementationMembersThe members of the , structure describe the following features: DescriptionrobustBufferAccess2} indicates whether buffer accesses are tightly bounds-checked against the range of the descriptor. Uniform buffers mustl be bounds-checked to the range of the descriptor, where the range is rounded up to a multiple of  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustUniformBufferAccessSizeAlignment&robustUniformBufferAccessSizeAlignment. Storage buffers mustl be bounds-checked to the range of the descriptor, where the range is rounded up to a multiple of  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment&robustStorageBufferAccessSizeAlignment. Out of bounds buffer loads will return zero values, and formatted loads will have (0,0,1) values inserted for missing G, B, or A components based on the format.robustImageAccess2 indicates whether image accesses are tightly bounds-checked against the dimensions of the image view. Out of bounds image loads will return zero values, with (0,0,1) values  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-conversion-to-rgba*inserted for missing G, B, or A components based on the format.nullDescriptor indicates whether descriptors can be written with a .u resource or view, which are considered valid to access and act as if the descriptor were bound to nothing.If the  structure is included in the pNext chain of OI, it is filled with values indicating whether each feature is supported. Valid UsageIf robustBufferAccess2 is enabled then  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobustBufferAccess must also be enabledValid Usage (Implicit)sType must be  See Also,  vulkan&robustStorageBufferAccessSizeAlignment} is the number of bytes that the range of a storage buffer descriptor is rounded up to when used for bounds-checking when  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2* is enabled. This value is either 1 or 4. vulkan&robustUniformBufferAccessSizeAlignment} is the number of bytes that the range of a uniform buffer descriptor is rounded up to when used for bounds-checking when  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2A is enabled. This value is a power of two in the range [1, 256].     None'"#%&'-./189;=>?FHIMSUVX_dghklmqk vulkan\VkPipelineCreationFeedbackEXT - Feedback about the creation of a pipeline or pipeline stage DescriptionIf the   is not set in flags, an implementation must not set any other bits in flags, and all other  data members are undefined.See Also,  ,  vulkan`VkPipelineCreationFeedbackCreateInfoEXT - Request for feedback about the creation of a pipeline DescriptionAn implementation should& write pipeline creation feedback to pPipelineCreationFeedback and may, write pipeline stage creation feedback to pPipelineStageCreationFeedbacks. An implementation must set or clear the   in ::flags for pPipelineCreationFeedback and every element of pPipelineStageCreationFeedbacks.NoteNOne common scenario for an implementation to skip per-stage feedback is when   is set in pPipelineCreationFeedback.When chained to $, %, or 1G, the i element of pPipelineStageCreationFeedbacks corresponds to the i element of $::pStages, %::pStages, or 1G::pStages. When chained to 1, the first element of pPipelineStageCreationFeedbacks corresponds to 1::stage. Valid UsageWhen chained to 1G, ::"pipelineStageCreationFeedbackCount must equal 1G:: stageCountWhen chained to 1, ::"pipelineStageCreationFeedbackCount must equal 1When chained to $, ::"pipelineStageCreationFeedbackCount must equal $:: stageCountWhen chained to %, ::"pipelineStageCreationFeedbackCount must equal %:: stageCountValid Usage (Implicit)sType must be pPipelineCreationFeedback must be a valid pointer to a  structurepPipelineStageCreationFeedbacks must( be a valid pointer to an array of "pipelineStageCreationFeedbackCount  structures"pipelineStageCreationFeedbackCount must be greater than 0See Also1, 1G, , $, %,  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 1/, 0, 1, or 12D. 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'"#%&'-./189;=>?FHIMSUVX_dghklmqvulkanVkPhysicalDevicePipelineCreationCacheControlFeaturesEXT - 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 OJ, it is filled with values indicating whether the feature is supported.  can also be used in the pNext chain of    to enable features.Valid Usage (Implicit)See Also,  vulkanpipelineCreationCacheControl- indicates that the implementation supports:The following can be used in Vk*PipelineCreateInfo::flags:c3c4The following can be used in 2::flags:e5   None'"#%&'-./189;=>?FHIMSUVX_dghklmq&vulkanVkPhysicalDeviceMemoryPriorityFeaturesEXT - Structure describing memory priority features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of OJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of    to enable features.Valid Usage (Implicit)See Also, vulkanFVkMemoryPriorityAllocateInfoEXT - Specify a memory allocation priority Description(Memory allocations with higher priority mayY be more likely to stay in device-local memory when the system is under memory pressure.3If this structure is not included, it is as if the priority value were 0.5.Valid Usage (Implicit)See Also vulkanpriority must be between 0 and 1 , inclusive vulkanmemoryPriorityh indicates that the implementation supports memory priorities specified at memory allocation time via .     None'"#%&'-./189;=>?FHIMSUVX_dghklmq, vulkan[VkWriteDescriptorSetInlineUniformBlockEXT - Structure specifying inline uniform block dataValid Usage (Implicit)See AlsovulkanVkPhysicalDeviceInlineUniformBlockPropertiesEXT - Structure describing inline uniform block properties that can be supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of O9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See AlsovulkanVkPhysicalDeviceInlineUniformBlockFeaturesEXT - Structure describing inline uniform block features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of OK, 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 Also, vulkanVkDescriptorPoolInlineUniformBlockCreateInfoEXT - Structure specifying the maximum number of inline uniform block bindings of a newly created descriptor poolValid Usage (Implicit)See Also vulkanmaxInlineUniformBlockBindings= is the number of inline uniform block bindings to allocate. vulkandataSize must be greater than 0 vulkanpData must# be a valid pointer to an array of dataSize bytes vulkanmaxInlineUniformBlockSize% 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. vulkan7maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks is similar to (maxPerStageDescriptorInlineUniformBlocksS but counts descriptor bindings from descriptor sets created with or without the t6 bit set. vulkan#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 ,7e count against this limit. Only descriptor bindings in descriptor set layouts created without the t6# bit set count against this limit. vulkan2maxDescriptorSetUpdateAfterBindInlineUniformBlocks is similar to #maxDescriptorSetInlineUniformBlocksS but counts descriptor bindings from descriptor sets created with or without the t6 bit set. vulkaninlineUniformBlocks indicates whether the implementation supports inline uniform block descriptors. If this feature is not enabled, ,7 must not be used. vulkan2descriptorBindingInlineUniformBlockUpdateAfterBind indicates whether the implementation supports updating inline uniform block descriptors after a set is bound. If this feature is not enabled, @8 must not be used with ,7.                            None'"#%&'-./189;=>?FHIMSUVX_dghklmq6NvulkanfVkPhysicalDeviceIndexTypeUint8FeaturesEXT - 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 OJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of    to enable features.Valid Usage (Implicit)See Also,  *vulkanindexTypeUint8 indicates that 9 can be used with  . ) * ' ( + , ) * ( , ' +None'"#%&'-./189;=>?FHIMSUVX_dghklmqFvulkanVkPhysicalDeviceFragmentShaderInterlockFeaturesEXT - 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 OJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of    to enable features.Valid Usage (Implicit)See Also,  5vulkanfragmentShaderSampleInterlock1 indicates that the implementation supports the  FragmentShaderSampleInterlockEXT SPIR-V capability. 6vulkanfragmentShaderPixelInterlock1 indicates that the implementation supports the FragmentShaderPixelInterlockEXT SPIR-V capability. 7vulkan"fragmentShaderShadingRateInterlock1 indicates that the implementation supports the %FragmentShaderShadingRateInterlockEXT SPIR-V capability.  4 5 6 7 2 3 8 9  4 5 6 7 3 9 2 8None'"#%&'-./189;=>?FHIMSUVX_dghklmq\Tvulkan_VkPipelineRasterizationDepthClipStateCreateInfoEXT - Structure specifying depth clipping stateValid Usage (Implicit)See Also,  A, vulkanlVkPhysicalDeviceDepthClipEnableFeaturesEXT - Structure indicating support for explicit enable of depth clipMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of OJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of    to enable this feature.Valid Usage (Implicit)See Also,  AvulkanNVkPipelineRasterizationDepthClipStateCreateFlagsEXT - Reserved for future use Description AQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also Dvulkanflags must be 0 EvulkandepthClipEnable> 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. GvulkandepthClipEnablef indicates that the implementation supports setting the depth clipping operation explicitly via the A pipeline state. Otherwise depth clipping is only enabled when 1 ::depthClampEnable is set to .  C D E F G ? @ A B H I  F G C D E A B @ I ? HNone'"#%&'-./189;=>?FHIMSUVX_dghklmqavulkangVkPipelineRasterizationConservativeStateCreateInfoEXT - Structure specifying conservative raster stateValid Usage (Implicit)See Also ],  _, vulkanVkPhysicalDeviceConservativeRasterizationPropertiesEXT - Structure describing conservative raster properties that can be supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of OH, it is filled with the implementation-dependent limits and properties.Valid Usage (Implicit)See Also,  ]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 bvulkanflags must be 0 cvulkanconservativeRasterizationMode must be a valid  ] value dvulkan extraPrimitiveOverestimationSize must be in the range of 0.0 to ::#maxExtraPrimitiveOverestimationSize inclusive fvulkanprimitiveOverestimationSizex is the size in pixels the generating primitive is increased at each of its edges during conservative rasterization overestimation mode. Even with a size of 0.0, conservative rasterization overestimation rules still apply and if any part of the pixel rectangle is covered by the generating primitive, fragments are generated for the entire pixel. However implementations mayj make the pixel coverage area even more conservative by increasing the size of the generating primitive. gvulkan#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. hvulkan+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. ivulkanprimitiveUnderestimation- is true if the implementation supports the  q2 conservative rasterization mode in addition to  r/. Otherwise the implementation only supports  r. jvulkan%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. kvulkandegenerateTrianglesRasterized 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. lvulkandegenerateLinesRasterized 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. mvulkan'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. nvulkan*conservativeRasterizationPostDepthCoverageN is true if the implementation supports conservative rasterization with the  zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-earlytest-postdepthcoveragePostDepthCoverage. execution mode enabled. When supported the : built-in input variable will reflect the coverage after the early per-fragment depth and stencil tests are applied even when conservative rasterization is enabled. Otherwise  zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-earlytest-postdepthcoveragePostDepthCoverage execution mode must9 not be used when conservative rasterization is enabled. qvulkan qO specifies that conservative rasterization is enabled in underestimation mode. rvulkan rN specifies that conservative rasterization is enabled in overestimation mode. svulkan s^ specifies that conservative rasterization is disabled and rasterization proceeds as normal. a b c d e f g h i j k l m n [ \ ] s r q ^ _ ` o p e f g h i j k l m n a b c d _ ` ] s r q ^ s r q \ p [ oNone'"#%&'-./189;=>?FHIMSUVX_dghklmqvulkanwVkPipelineColorBlendAdvancedStateCreateInfoEXT - Structure specifying parameters that affect advanced blend operations Description"If this structure is not present, srcPremultiplied and dstPremultiplied are both considered to be , and  blendOverlap is considered to be  . Valid Usage If the  zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendNonPremultipliedSrcColornon-premultiplied source color! property is not supported, srcPremultiplied must be  If the  zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendNonPremultipliedDstColor#non-premultiplied destination color! property is not supported, dstPremultiplied must be  If the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendCorrelatedOverlapcorrelated overlap! property is not supported,  blendOverlap must be  Valid Usage (Implicit)sType must be  blendOverlap must be a valid   valueSee Also , , vulkanVkPhysicalDeviceBlendOperationAdvancedPropertiesEXT - Structure describing advanced blending limits that can be supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of O9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Also, vulkanVkPhysicalDeviceBlendOperationAdvancedFeaturesEXT - Structure describing advanced blending features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of OK, it is filled with values indicating whether each feature is supported.  can also be included in the pNext chain of    to enable the features.Valid Usage (Implicit)See Also,  vulkanDVkBlendOverlapEXT - Enumerant specifying the blend overlap parameter Description'# Overlap Mode V Weighting Equations      \begin{aligned} p_0(A_s,A_d) & = A_sA_d \\ p_1(A_s,A_d) & = A_s(1-A_d) \\ p_2(A_s,A_d) & = A_d(1-A_s) \\ \end{aligned}      \begin{aligned} p_0(A_s,A_d) & = min(A_s,A_d) \\ p_1(A_s,A_d) & = max(A_s-A_d,0) \\ p_2(A_s,A_d) & = max(A_d-A_s,0) \\ \end{aligned}      \begin{aligned} p_0(A_s,A_d) & = max(A_s+A_d-1,0) \\ p_1(A_s,A_d) & = min(A_s,1-A_d) \\ p_2(A_s,A_d) & = min(A_d,1-A_s) \\ \end{aligned} Advanced Blend Overlap ModesSee Also vulkansrcPremultipliedX specifies whether the source color of the blend operation is treated as premultiplied. vulkandstPremultiplied] specifies whether the destination color of the blend operation is treated as premultiplied. vulkan blendOverlap is a  R value specifying how the source and destination sample s coverage is correlated. vulkan advancedBlendMaxColorAttachments> is one greater than the highest color attachment index that can5 be used in a subpass, for a pipeline that uses an  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advancedadvanced blend operation. vulkanadvancedBlendIndependentBlend. specifies whether advanced blend operations can vary per-attachment. vulkan%advancedBlendNonPremultipliedSrcColor% specifies whether the source color can. be treated as non-premultiplied. If this is , then ::srcPremultiplied must be . vulkan%advancedBlendNonPremultipliedDstColor* specifies whether the destination color can. be treated as non-premultiplied. If this is , then ::dstPremultiplied must be . vulkanadvancedBlendCorrelatedOverlap% specifies whether the overlap mode can' be treated as correlated. If this is , then :: blendOverlap must be  . vulkanadvancedBlendAllOperations^ specifies whether all advanced blend operation enums are supported. See the valid usage of 1. vulkanadvancedBlendCoherentOperations# specifies whether blending using  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advancedadvanced blend operations. is guaranteed to execute atomically and in  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-orderprimitive order. If this is , ; is treated the same as ^, and advanced blending needs no additional synchronization over basic blending. If this is , then memory dependencies are required to guarantee order between two advanced blending operations that occur on the same sample. vulkan \ specifies that the source and destination coverage are considered to have maximal overlap. vulkan \ specifies that the source and destination coverage are considered to have minimal overlap. vulkan U specifies that there is no correlation between the source and destination coverage.      None'"#%&'-./189;=>?FHIMSUVX_dghklmq1_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 OK, 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 Also, vulkan[VkImageViewASTCDecodeModeEXT - Structure describing the ASTC decode mode for an image view Valid Usage decodeMode must be one of <,  , or = If the  thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-astc-decodeModeSharedExponentdecodeModeSharedExponent feature is not enabled,  decodeMode must not be =If  decodeMode is  the image view must3 not include blocks using any of the ASTC HDR modesformat of the image view must be one of >, ?, @, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, or YIf format uses sRGB encoding then the  decodeMode has no effect.Valid Usage (Implicit)sType must be . decodeMode must be a valid G valueSee AlsoG,  vulkandecodeModeSharedExponentU indicates whether the implementation supports decoding ASTC compressed formats to = internal precision. vulkan decodeModeD is the intermediate format used to decode ASTC compressed formats.     ~None'"#%&'-./189;=>?FHIMSUVX_dghklmq:vulkanVkTextureLODGatherFormatPropertiesAMD - 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 Also,  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.  xNone'"#%&'-./189;=>?FHIMSUVX_dghklmqH2lvulkanVkPhysicalDeviceShaderCoreProperties2AMD - Structure describing shader core properties that can be supported by an implementationMembersThe members of the lC structure describe the following implementation-dependent limits: DescriptionIf the l structure is included in the pNext chain of O9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Also ,  vulkanNVkShaderCorePropertiesFlagBitsAMD - Bitmask specifying shader core propertiesSee Alsol,  vulkanshaderCoreFeatures is a bitmask of  > indicating the set of features supported by the shader core. vulkanactiveComputeUnitCount] is an unsigned integer value indicating the number of compute units that have been enabled. l l tNone'"#%&'-./189;=>?FHIMSUVX_dghklmqNevulkanhVkPipelineCompilerControlCreateInfoAMD - Structure used to pass compilation control flags to a pipelineValid Usage (Implicit)See Also ,  vulkan[VkPipelineCompilerControlFlagBitsAMD - Enum specifying available compilation control flagsSee Also vulkancompilerControlFlags must be 0 e e lNone'"#%&'-./189;=>?FHIMSUVX_dghklmqVMvulkanVkPhysicalDeviceCoherentMemoryFeaturesAMD - Structure describing whether device coherent memory can be supported by an implementationMembersThe members of the M, structure describe the following features:Valid Usage (Implicit)See Also, vulkandeviceCoherentMemory- indicates that the implementation supports  VkMemoryPropertyFlagBits.htmldevice coherent memory.M M  jNone'"#%&'-./189;=>?FHIMSUVX_dghklmqgsAvulkanhVkPhysicalDeviceVulkanMemoryModelFeatures - Structure describing features supported by the memory modelValid Usage (Implicit)See Also,  vulkanvulkanMemoryModelI 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. vulkanvulkanMemoryModelDeviceScope4 indicates whether the Vulkan Memory Model can use )D scope synchronization. This also indicates whether shader modules can declare the VulkanMemoryModelDeviceScope capability. vulkan-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.A    43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      cA    43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      5None'"#%&'-./189;=>?FHIMSUVX_dghklmq}IiNone'"#%&'-./189;=>?FHIMSUVX_dghklmq?@vulkan~VkPhysicalDeviceUniformBufferStandardLayoutFeatures - Structure indicating support for std430-like packing in uniform buffersMembersThe members of the @, structure describe the following features: DescriptionIf the @ structure is included in the pNext chain of OJ, it is filled with values indicating whether the feature is supported. @ can also be included in the pNext chain of    to enable this feature.Valid Usage (Implicit)See Also, vulkanuniformBufferStandardLayout indicates that the implementation supports the same layouts for uniform buffers as for storage and other kinds of buffers. See  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources-standard-layoutStandard Buffer Layout.@43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      a@43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      6None'"#%&'-./189;=>?FHIMSUVX_dghklmq !"#$$! #"gNone'"#%&'-./189;=>?FHIMSUVX_dghklmq9vulkanVkPhysicalDeviceShaderSubgroupExtendedTypesFeatures - Structure describing the extended types subgroups support feature for an implementationMembersThe members of the 9, structure describe the following features: DescriptionIf the 9 structure is included in the pNext chain of OK, it is filled with values indicating whether each feature is supported. 9 can also be included in the pNext chain of    to enable features.Valid Usage (Implicit)See Also, &vulkanshaderSubgroupExtendedTypes is a boolean that specifies whether subgroup operations can use 8-bit integer, 16-bit integer, 64-bit integer, 16-bit floating-point, and vectors of these types in  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operationsgroup operations with  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroupsubgroup scope*if the implementation supports the types.9%&43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      a9%&43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      7None'"#%&'-./189;=>?FHIMSUVX_dghklmq,-./011.-0,/fNone'"#%&'-./189;=>?FHIMSUVX_dghklmq8vulkantVkPhysicalDeviceFloatControlsProperties - Structure describing properties supported by VK_KHR_shader_float_controlsMembersThe members of the 8C structure describe the following implementation-dependent limits: DescriptionIf the 8 structure is included in the pNext chain of O9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Also, , 3vulkandenormBehaviorIndependence is a h value indicating whether, and how, denorm behavior can be set independently for different bit widths.4vulkanroundingModeIndependence is a g value indicating whether, and how, rounding modes can be set independently for different bit widths.5vulkan%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.6vulkan%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.7vulkan%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.8vulkanshaderDenormPreserveFloat162 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.9vulkanshaderDenormPreserveFloat322 is a boolean value indicating whether denormals canT be preserved in 32-bit floating-point computations. It also indicates whether the DenormPreserve execution mode can* be used for 32-bit floating-point types.:vulkanshaderDenormPreserveFloat642 is a boolean value indicating whether denormals canT be preserved in 64-bit floating-point computations. It also indicates whether the DenormPreserve execution mode can* be used for 64-bit floating-point types.;vulkanshaderDenormFlushToZeroFloat162 is a boolean value indicating whether denormals canZ be flushed to zero in 16-bit floating-point computations. It also indicates whether the DenormFlushToZero execution mode can) be used for 16-bit floating-point types.<vulkanshaderDenormFlushToZeroFloat322 is a boolean value indicating whether denormals canZ be flushed to zero in 32-bit floating-point computations. It also indicates whether the DenormFlushToZero execution mode can) be used for 32-bit floating-point types.=vulkanshaderDenormFlushToZeroFloat642 is a boolean value indicating whether denormals canZ be flushed to zero in 64-bit floating-point computations. It also indicates whether the DenormFlushToZero execution mode can) be used for 64-bit floating-point types.>vulkanshaderRoundingModeRTEFloat16 is a boolean value indicating whether an implementation supports the round-to-nearest-even rounding mode for 16-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTE execution mode can* be used for 16-bit floating-point types.?vulkanshaderRoundingModeRTEFloat32 is a boolean value indicating whether an implementation supports the round-to-nearest-even rounding mode for 32-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTE execution mode can* be used for 32-bit floating-point types.@vulkanshaderRoundingModeRTEFloat64 is a boolean value indicating whether an implementation supports the round-to-nearest-even rounding mode for 64-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTE execution mode can* be used for 64-bit floating-point types.AvulkanshaderRoundingModeRTZFloat16 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.BvulkanshaderRoundingModeRTZFloat32 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.CvulkanshaderRoundingModeRTZFloat64 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.823456789:;<=>?@ABC43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      q823456789:;<=>?@ABC43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      8None'"#%&'-./189;=>?FHIMSUVX_dghklmq/2 IJKLMNOPQR RQPOLKJNIMeNone'"#%&'-./189;=>?FHIMSUVX_dghklmqER7vulkanrVkPhysicalDeviceShaderFloat16Int8Features - Structure describing features supported by VK_KHR_shader_float16_int8Valid Usage (Implicit)See Also, Tvulkan shaderFloat16s indicates whether 16-bit floats (halfs) are supported in shader code. This also indicates whether shader modules can declare the Float16d capability. However, this only enables a subset of the storage classes that SPIR-V allows for the Float16> SPIR-V capability: Declaring and using 16-bit floats in the Private,  Workgroup, and Function[ storage classes is enabled, while declaring them in the interface storage classes (e.g., UniformConstant, Uniform,  StorageBuffer, Input, Output, and  PushConstant) is not enabled.Uvulkan shaderInt8 indicates whether 8-bit integers (signed and unsigned) are supported in shader code. This also indicates whether shader modules can declare the Int8d capability. However, this only enables a subset of the storage classes that SPIR-V allows for the Int8? SPIR-V capability: Declaring and using 8-bit integers in the Private,  Workgroup, and Function[ storage classes is enabled, while declaring them in the interface storage classes (e.g., UniformConstant, Uniform,  StorageBuffer, Input, Output, and  PushConstant) is not enabled.7STU43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      b7STU43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      9None'"#%&'-./189;=>?FHIMSUVX_dghklmq[ [\]^_`abba^]\`[_dNone'"#%&'-./189;=>?FHIMSUVX_dghklmqc6vulkanrVkPhysicalDeviceShaderAtomicInt64Features - Structure describing features supported by VK_KHR_shader_atomic_int64Valid Usage (Implicit)See Also, dvulkanshaderBufferInt64Atomics indicates whether shaders canJ support 64-bit unsigned and signed integer atomic operations on buffers.evulkanshaderSharedInt64Atomics indicates whether shaders canP support 64-bit unsigned and signed integer atomic operations on shared memory.6cde43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      b6cde43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      :None'"#%&'-./189;=>?FHIMSUVX_dghklmqyklmnoppmlokncNone'"#%&'-./189;=>?FHIMSUVX_dghklmqB3vulkanVkPhysicalDeviceSeparateDepthStencilLayoutsFeatures - Structure describing whether the implementation can do depth and stencil image barriers separatelyMembersThe members of the 3, structure describe the following features: DescriptionIf the 3 structure is included in the pNext chain of OJ, it is filled with values indicating whether the feature is supported. 3 can also be included in the pNext chain of    to enable the feature.Valid Usage (Implicit)See Also, 4vulkanTVkAttachmentReferenceStencilLayout - Structure specifying an attachment descriptionValid Usage (Implicit)See AlsoJ, 5vulkanVVkAttachmentDescriptionStencilLayout - Structure specifying an attachment descriptionValid Usage (Implicit)See AlsoJ, rvulkanstencilInitialLayout must be a valid J valuesvulkanstencilFinalLayout must be a valid J valueuvulkan stencilLayout must be a valid J valuewvulkanseparateDepthStencilLayouts2 indicates whether the implementation supports a /R. for a depth/stencil image with only one of kZ or k[ set, and whether  :,  ;,  <, or  = can be used.J 7 J I H G F E D C B A @ ? > = < ; : 9 83vw4tu5qrs43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      3vw4tu5qrsJ 7 J I H G F E D C B A @ ? > = < ; : 9 8 J I H G F E D C B A @ ? > = < ; : 9 843 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ;None'"#%&'-./189;=>?FHIMSUVX_dghklmq4\None'"#%&'-./189;=>?FHIMSUVX_dghklmqfvulkaneVkPhysicalDevice8BitStorageFeatures - Structure describing features supported by VK_KHR_8bit_storageValid Usage (Implicit)See Also, vulkanstorageBuffer8BitAccess# indicates whether objects in the  StorageBuffer or PhysicalStorageBuffer storage class with the Block decoration canT have 8-bit integer members. If this feature is not enabled, 8-bit integer members mustJ not be used in such objects. This also indicates whether shader modules can declare the StorageBuffer8BitAccess capability.vulkan!uniformAndStorageBuffer8BitAccess# indicates whether objects in the Uniform storage class with the Block decoration and in the  StorageBuffer or PhysicalStorageBuffer) storage class with the same decoration canT have 8-bit integer members. If this feature is not enabled, 8-bit integer members mustJ not be used in such objects. This also indicates whether shader modules can declare the !UniformAndStorageBuffer8BitAccess capability.vulkanstoragePushConstant8" indicates whether objects in the  PushConstant storage class canT have 8-bit integer members. If this feature is not enabled, 8-bit integer members mustJ not be used in such objects. This also indicates whether shader modules can declare the StoragePushConstant8 capability.43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      c43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      <None'"#%&'-./189;=>?FHIMSUVX_dghklmq<ZNone'"#%&'-./189;=>?FHIMSUVX_dghklmqvulkanbVkPhysicalDeviceScalarBlockLayoutFeatures - 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 OJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of    to enable this feature.Valid Usage (Implicit)See Also, vulkanscalarBlockLayout] indicates that the implementation supports the layout of resource blocks in shaders using  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-alignment-requirementsscalar alignment.43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      a43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      =None'"#%&'-./189;=>?FHIMSUVX_dghklmq>None'"#%&'-./189;=>?FHIMSUVX_dghklmq vulkanaVkSemaphoreWaitFlagBits - Bitmask specifying additional parameters of a semaphore wait operationSee AlsovulkanY specifies that the semaphore wait condition is that at least one of the semaphores in h::: pSemaphoresC has reached the value specified by the corresponding element of h:::pValues. If M is not set, the semaphore wait condition is that all of the semaphores in h::: pSemaphoresD have reached the value specified by the corresponding element of h:::pValues.?None'"#%&'-./189;=>?FHIMSUVX_dghklmq9vulkanUVkResolveModeFlagBits - Bitmask indicating supported depth and stencil resolve modesSee Also, _DvulkanU indicates that result of the resolve operation is the maximum of the sample values.vulkanU indicates that result of the resolve operation is the minimum of the sample values.vulkanU indicates that result of the resolve operation is the average of the sample values.vulkanS indicates that result of the resolve operation is equal to the value of sample 0.vulkan- indicates that no resolve operation is done. @None'"#%&'-./189;=>?FHIMSUVX_dghklmq5>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 Alsovulkan 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 ,7 where descriptorCountY specifies the upper bound on the byte size of the binding, thus it counts against the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxInlineUniformBlockSizemaxInlineUniformBlockSize limit instead. .vulkan: indicates that descriptors in this binding that are not dynamically used need not contain valid descriptors at the time the descriptors are consumed. A descriptor is dynamically used if any shader invocation executes an instruction that performs any memory access using the descriptor.vulkan- indicates that descriptors in this binding can be updated after a command buffer has bound this descriptor set, or while a command buffer that uses this descriptor set is pending execution, as long as the descriptors that are updated are not used by those command buffers. If  is also set, then descriptors canT be updated as long as they are not dynamically used by any shader invocations. If  is not set, then descriptors canO be updated as long as they are not statically used by any shader invocations.vulkan indicates that if descriptors in this binding are updated between when the descriptor set is bound in a command buffer and when that command buffer is submitted to a queue, then the submission will use the most recently set descriptors for this binding and the updates do not invalidate the command buffer. Descriptor bindings created with this flag are also partially exempt from the external synchronization requirement in \ and  ]+. Multiple descriptors with this flag set canK be updated concurrently in different threads, though the same descriptor mustM not be updated concurrently by two threads. Descriptors with this flag set can be updated concurrently with the set being bound to a command buffer in another thread, but not concurrently with the set being reset or freed. ^None'"#%&'-./189;=>?FHIMSUVX_dghklmq6/   UNone'"#%&'-./189;=>?FHIMSUVX_dghklmqKSvulkanVkPhysicalDeviceVariablePointersFeatures - Structure describing variable pointers features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionvariablePointersStorageBuffer? specifies whether the implementation supports the SPIR-V VariablePointersStorageBufferC capability. When this feature is not enabled, shader modules must not declare the SPV_KHR_variable_pointers extension or the VariablePointersStorageBuffer capability.variablePointers? specifies whether the implementation supports the SPIR-V VariablePointersC capability. When this feature is not enabled, shader modules must not declare the VariablePointers capability.If the  structure is included in the pNext chain of OK, it is filled with values indicating whether each feature is supported.  can also be included in the pNext chain of    to enable the features. Valid UsageIf variablePointers is enabled then variablePointersStorageBuffer must also be enabledValid Usage (Implicit)sType must be See Also, 43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      d43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ANone'"#%&'-./189;=>?FHIMSUVX_dghklmqa1TNone'"#%&'-./189;=>?FHIMSUVX_dghklmqi vulkanVkPhysicalDeviceShaderDrawParametersFeatures - Structure describing shader draw parameter features that can be supported by an implementation DescriptionIf the   structure is included in the pNext chain of OI, it is filled with a value indicating whether the feature is supported.Valid Usage (Implicit)See Also, vulkanshaderDrawParameters9 specifies whether shader draw parameters are supported. 43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      c 43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ANone'"#%&'-./189;=>?FHIMSUVX_dghklmq/vulkangVkPhysicalDevice16BitStorageFeatures - Structure describing features supported by VK_KHR_16bit_storageValid Usage (Implicit)See Also, vulkanstorageBuffer16BitAccess# specifies whether objects in the  StorageBuffer or PhysicalStorageBuffer storage class with the Block decoration can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members mustJ not be used in such objects. This also specifies whether shader modules can declare the StorageBuffer16BitAccess capability.vulkan"uniformAndStorageBuffer16BitAccess# specifies whether objects in the Uniform storage class with the Block decoration and in the  StorageBuffer or PhysicalStorageBuffer) storage class with the same decoration can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members mustJ not be used in such objects. This also specifies whether shader modules can declare the "UniformAndStorageBuffer16BitAccess capability.vulkanstoragePushConstant16" specifies whether objects in the  PushConstant storage class can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or floating-point members mustJ not be used in such objects. This also specifies whether shader modules can declare the StoragePushConstant16 capability.vulkanstorageInputOutput16" specifies whether objects in the Input and Output storage classes can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members mustJ not be used in such objects. This also specifies whether shader modules can declare the StorageInputOutput16 capability.43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      d43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      BNone'"#%&'-./189;=>?FHIMSUVX_dghklmq CNone'"#%&'-./189;=>?FHIMSUVX_dghklmq? vulkandVkSubgroupFeatureFlagBits - Enum describing what group operations are supported with subgroup scopeSee AlsovulkanH specifies the device will accept SPIR-V shader modules containing the GroupNonUniformPartitionedNV capability.vulkanH specifies the device will accept SPIR-V shader modules containing the GroupNonUniformQuad capability. vulkan H specifies the device will accept SPIR-V shader modules containing the GroupNonUniformClustered capability. vulkan H specifies the device will accept SPIR-V shader modules containing the GroupNonUniformShuffleRelative capability. vulkan H specifies the device will accept SPIR-V shader modules containing the GroupNonUniformShuffle capability. vulkan H specifies the device will accept SPIR-V shader modules containing the GroupNonUniformBallot capability. vulkan H specifies the device will accept SPIR-V shader modules containing the GroupNonUniformArithmetic capability.vulkanH specifies the device will accept SPIR-V shader modules containing the GroupNonUniformVote capability.vulkanH specifies the device will accept SPIR-V shader modules containing the GroupNonUniform capability.                DNone'"#%&'-./189;=>?FHIMSUVX_dghklmquvulkanaVkSemaphoreImportFlagBits - Bitmask specifying additional parameters of semaphore payload import Description'These bits have the following meanings:See Alsovulkan[ 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.=None'"#%&'-./189;=>?FHIMSUVX_dghklmqvulkanPVkPeerMemoryFeatureFlagBits - Bitmask specifying supported peer memory features DescriptionNoteKThe peer memory features of a memory heap also apply to any accesses that may be performed during  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitionsimage layout transitions.% mustO be supported for all host local heaps and for at least one device local heap.If a device does not support a peer memory feature, it is still valid to use a resource that includes both local and peer memory bindings with the corresponding access type as long as only the local bindings are actually accessed. For example, an application doing split-frame rendering would use framebuffer attachments that include both local and peer memory bindings, but would scissor the rendering to only update local memory.See Also#vulkan# specifies that the memory canT be written as any memory access type. Shader atomics are considered to be writes.$vulkan$ specifies that the memory can$ be read as any memory access type.%vulkan% specifies that the memory can' be accessed as the destination of a  _,  ,  , or   command.&vulkan& specifies that the memory can" be accessed as the source of a  _,  ,  , or   command.&%$#" &%$#"&%$#ENone'"#%&'-./189;=>?FHIMSUVX_dghklmq/vulkanSVkMemoryAllocateFlagBits - Bitmask specifying flags for a device memory allocationSee Also.1vulkan1 specifies that the memory can3 be attached to a buffer object created with the }` bit set in usage, and that the memory handle can- be used to retrieve an opaque address via ]a.2vulkan2& specifies that the memory s address canT be saved and reused on a subsequent run (e.g. for trace capture and replay), see ] for more detail.3vulkan3> specifies that memory will be allocated for the devices in Em:: deviceMask../3210 /3210321.FNone'"#%&'-./189;=>?FHIMSUVX_dghklmq<vulkanYVkFenceImportFlagBits - Bitmask specifying additional parameters of fence payload importSee Also;>vulkan>W specifies that the fence payload will be imported only temporarily, as described in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importingImporting Fence Payloads#, regardless of the permanence of  handleType.;<>=<>=>;GNone'"#%&'-./189;=>?FHIMSUVX_dghklmq8GvulkanYVkExternalSemaphoreHandleTypeFlagBits - Bitmask of valid external semaphore handle types DescriptionNoteHandles of type I generated by the implementation may represent either Linux Sync Files or Android Fences at the implementation s discretion. Applications should only use operations defined for both types of file descriptors, unless they know via means external to Vulkan the type of the file descriptor, or are prepared to deal with the system-defined operation failures resulting from using the wrong type.Some external semaphore handle types can only be shared within the same underlying physical device and/or the same driver version, as defined in the following table:7 Handle type  K:: driverUUID  K:: deviceUUID  M u Must match u Must match  L u Must match u Must match  K u Must match u Must match  J u Must match u Must match  I u No restriction u No restriction -External semaphore handle types compatibilitySee AlsoF, e, f, M, 7, 8IvulkanIM 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.JvulkanJ% specifies an NT handle returned by  ID3D12Device::CreateSharedHandle referring to a Direct3D 12 fence. It owns a reference to the underlying synchronization primitive associated with the Direct3D fence.KvulkanKw 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.LvulkanLl 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.MvulkanM~ 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.FGMLKJIH GMLKJIHMLKJIFLNone'"#%&'-./189;=>?FHIMSUVX_dghklmqCvulkanfVkExportSemaphoreCreateInfo - Structure specifying handle types that can be exported from a semaphore Valid Usage The bits in  handleTypes must7 be supported and compatible, as reported by M8Valid Usage (Implicit)sType must be  handleTypes must be a valid combination of Gb valuesSee AlsoF, Vvulkan handleTypes is a bitmask of Gb@ 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.UV43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      fUV43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      HNone'"#%&'-./189;=>?FHIMSUVX_dghklmqY \]^_`abcd dc`_^]b\aINone'"#%&'-./189;=>?FHIMSUVX_dghklmq`,fvulkangVkExternalSemaphoreFeatureFlagBits - Bitfield describing features of an external semaphore handle typeSee Alsoehvulkanh& specifies that handles of this type can) be imported as Vulkan semaphore objects.ivulkani& specifies that handles of this type can+ be exported from Vulkan semaphore objects.efihgfihgihe<None'"#%&'-./189;=>?FHIMSUVX_dghklmqK 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  K:: driverUUID  K:: deviceUUID  | u Must match u Must match  { u Must match u Must match  z u Must match u Must match  y u Must match u Must match  x u Must match u Must match  w u Must match u Must match  v u Must match u Must match  t u No restriction u No restriction  u u No restriction u No restriction  r u No restriction u No restriction  s u No restriction u No restriction *External memory handle types compatibilityNoteFThe above table does not restrict the drivers and devices with which t and u 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 r mayr be shared, query mechanisms exist in the Vulkan API that prevent the import of incompatible dma-bufs (such as c=) and that prevent incompatible usage of dma-bufs (such as K and K).See Also, a, b, c, t, u, K, K, c, d, ervulkanr is a file descriptor for a Linux dma_buf. It owns a reference to the underlying memory resource represented by its Vulkan memory object.svulkans specifies an f* 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.tvulkant 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.uvulkanu 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.vvulkanv% 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.wvulkanw% 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.xvulkanx. 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.yvulkany% 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.zvulkanzf 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.|{zyxwvutsrq|{zyxwvutsrq|{zyxwvutsrJNone'"#%&'-./189;=>?FHIMSUVX_dghklmqvulkan`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 <g. Implementations must not report 3 for images or buffers with external handle type <h, or <i.See Alsovulkan& 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.vulkanY specifies that images or buffers created with the specified parameters and handle type must! use the mechanisms defined by Cq and CpG to create (or import) a dedicated allocation for the image or buffer. KNone'"#%&'-./189;=>?FHIMSUVX_dghklmqqvulkanQVkExternalFenceHandleTypeFlagBits - 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  K:: driverUUID  K:: deviceUUID   u Must match u Must match   u Must match u Must match   u Must match u Must match   u No restriction u No restriction )External fence handle types compatibilitySee Also, :, ;, _, `, IvulkanF 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.vulkanq 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.vulkanl 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. HNone'"#%&'-./189;=>?FHIMSUVX_dghklmqvulkan^VkExportFenceCreateInfo - Structure specifying handle types that can be exported from a fence Valid Usage The bits in  handleTypes must7 be supported and compatible, as reported by I2Valid Usage (Implicit)sType must be  handleTypes must be a valid combination of Kj valuesSee Also, vulkan handleTypes is a bitmask of Kj< 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.43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ;<=>f43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      <=>>;LNone'"#%&'-./189;=>?FHIMSUVX_dghklmq1  MNone'"#%&'-./189;=>?FHIMSUVX_dghklmq7vulkan_VkExternalFenceFeatureFlagBits - Bitfield describing features of an external fence handle typeSee Alsovulkan! 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.NNone'"#%&'-./189;=>?FHIMSUVX_dghklmq?FHIMSUVX_dghklmq@vulkan0VkCommandPoolTrimFlags - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Alsok, lmNone'"#%&'-./189;=>?FHIMSUVX_dghklmqB'mq|{zyxwvutsr"&%$#&')(0132:;@?>=<GHJIQRTS[\^]     ./0321;<=>FGHMLKJIefgihONone'"#%&'-./189;=>?FHIMSUVX_dghklmqZtvulkanDVkSubpassDescriptionFlagBits - Bitmask specifying usage of a subpass DescriptionNoteWShader resolve operations allow for custom resolve operations, but overdrawing pixels may! have a performance and/or power cost. Furthermore, since the contents of any depth stencil attachment or color attachment is undefined at the begining of a shader resolve subpass, any depth testing, stencil testing, or blending which sources these undefined values are also undefined.See Alsovulkan 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'"#%&'-./189;=>?FHIMSUVX_dghklmqb_vulkanfVkStencilFaceFlagBits - Bitmask specifying sets of stencil state for which to update the compare maskSee Also^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.^_ _^PNone'"#%&'-./189;=>?FHIMSUVX_dghklmqfvulkan[VkSparseMemoryBindFlagBits - Bitmask specifying usage of a sparse memory binding operationSee AlsovulkanH specifies that the memory being bound is only for the metadata aspect.QNone'"#%&'-./189;=>?FHIMSUVX_dghklmqqrvulkanfVkSparseImageFormatFlagBits - Bitmask specifying additional information about a sparse image resourceSee AlsovulkanU 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.vulkanN specifies that the image uses a single mip tail region for all array layers. "None'"#%&'-./189;=>?FHIMSUVX_dghklmq]vulkan;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 Also1, \, |nvulkan$ specifies the ray generation stage.vulkan specifies the any-hit stage.vulkan! specifies the closest hit stage.vulkan 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.vulkany is a combination of bits used as shorthand to specify all graphics stages defined above (excluding the compute stage).vulkan specifies the compute stage. vulkan  specifies the fragment stage. vulkan  specifies the geometry stage. vulkan . specifies the tessellation evaluation stage. vulkan + specifies the tessellation control stage. vulkan  specifies the vertex stage.\]     #]          \None'"#%&'-./189;=>?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 1\, it specifies that the pipeline shader stage being compiled has a required subgroup size.Valid Usage (Implicit)See AlsovulkanVkPhysicalDeviceSubgroupSizeControlPropertiesEXT - Structure describing the control subgroup size properties of an implementationMembersThe members of the . structure describe the following properties: DescriptionIf the  structure is included in the pNext chain of O9, 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, minSubgroupSize must be greater than or equal to 4.Valid Usage (Implicit)See Also\, vulkanVkPhysicalDeviceSubgroupSizeControlFeaturesEXT - Structure describing the subgroup size control features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of OJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of    to enable the feature.NoteThe * structure was added in version 2 of the VK_EXT_subgroup_size_control extension. Version 1 implementations of this extension will not fill out the features structure but applications may assume that both subgroupSizeControl and computeFullSubgroups> are supported if the extension is supported. (See also the  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-requirementsFeature Requirements/ section.) Applications are advised to add a  structure to the pNext chain of    to enable the features regardless of the version of the extension supported by the implementation. If the implementation only supports version 1, it will safely ignore the  structure.Valid Usage (Implicit)See Also, vulkanrequiredSubgroupSize must be less than or equal to fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroup-sizemaxSubgroupSizevulkanminSubgroupSize9 is the minimum subgroup size supported by this device. minSubgroupSizeA is at least one if any of the physical device s queues support Vo or Vp. 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.vulkanmaxSubgroupSize9 is the maximum subgroup size supported by this device. maxSubgroupSizeA is at least one if any of the physical device s queues support Vo or Vp. maxSubgroupSize is a power-of-two. maxSubgroupSize is greater than or equal to minSubgroupSize. maxSubgroupSize is greater than or equal to  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subgroup-size subgroupSize.vulkanmaxComputeWorkgroupSubgroupsX is the maximum number of subgroups supported by the implementation within a workgroup.vulkanrequiredSubgroupSizeStagesX is a bitfield of what shader stages support having a required subgroup size specified.vulkansubgroupSizeControl[ indicates whether the implementation supports controlling shader subgroup sizes via the \q flag and the  structure. vulkancomputeFullSubgroupse indicates whether the implementation supports requiring full subgroups in compute shaders via the \r flag. !" "!@None'"#%&'-./189;=>?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 O9, 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 Also, \, , 3vulkan subgroupSize9 is the default number of invocations in each subgroup.  subgroupSize? is at least 1 if any of the physical device s queues support Vo or Vp.  subgroupSize is a power-of-two.4vulkansupportedStages is a bitfield of "s% 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 "t: bit set if any of the physical device s queues support Vp.5vulkansupportedOperations 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 : bit set if any of the physical device s queues support Vo or Vp.6vulkanquadOperationsInAllStages" 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.2345643 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!           y2345643 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!                RNone'"#%&'-./189;=>?FHIMSUVX_dghklmqF<=>=><SNone'"#%&'-./189;=>?FHIMSUVX_dghklmqlFvulkan0VkSemaphoreCreateFlags - Reserved for future use DescriptionFQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also66FGFGTNone'"#%&'-./189;=>?FHIMSUVX_dghklmq PvulkanNVkSamplerCreateFlagBits - Bitmask specifying additional parameters of sampler DescriptionNoteThe approximations used when S@ 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 AlsoORvulkanRB specifies that the sampler will read from an image created with flags containing u.SvulkanS$ specifies that the implementation mayg use approximations when reconstructing a full color value for texture access from a subsampled image.OPSRQPSRQSRO!None'"#%&'-./189;=>?FHIMSUVX_dghklmq3[vulkanlVkSampleCountFlagBits - Bitmask specifying sample counts supported for an image used for storage operationsSee Also0, ^, A, *, O, 1, Z, 2, v, :\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.avulkana- specifies an image with 2 samples per pixel.bvulkanb. specifies an image with one sample per pixel. Z[ba`_^]\[[ba`_^]\[ba`_^]\ZUNone'"#%&'-./189;=>?FHIMSUVX_dghklmqkvulkanVVkRenderPassCreateFlagBits - Bitmask specifying additional properties of a renderpassSee Alsojmvulkanm< 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.jkmlkmlmjVNone'"#%&'-./189;=>?FHIMSUVX_dghklmq=/vvulkanNVkQueueFlagBits - 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.zM specifies that queues in this queue family support transfer operations.yg 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 xD is set, then the queues in this queue family support the rw bit. (see  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-protected-memoryProtected Memory). If the protected memory physical device feature is supported, then at least one queue family of at least one physical device exposed by the implementation must support this bit.If an implementation exposes any queue family that supports graphics operations, at least one queue family of at least one physical device exposed by the implementation must/ support both graphics and compute operations.Furthermore, if the protected memory physical device feature is supported, then at least one queue family of at least one physical device exposed by the implementation mustS support graphics operations, compute operations, and protected memory operations.NoteAll commands that are allowed on a queue that supports transfer operations are also allowed on a queue that supports either graphics or compute operations. Thus, if the capabilities of a queue family include | or {, then reporting the z1 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 Alsouuv|{zyxw v|{zyxw|{zyxuNone'"#%&'-./189;=>?FHIMSUVX_dghklmqGWvulkanSVkQueryResultFlagBits - Bitmask specifying how and when query results are returnedSee AlsoVvulkan9 specifies that returning partial results is acceptable.vulkanA specifies that the availability status accompanies the results.vulkanl 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.VW WVWNone'"#%&'-./189;=>?FHIMSUVX_dghklmqLvulkan0VkQueryPoolCreateFlags - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also4XNone'"#%&'-./189;=>?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 4).See Alsovulkan 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.vulkana 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.vulkand 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.vulkand 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.vulkanb 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'"#%&'-./189;=>?FHIMSUVX_dghklmqUvulkanBVkQueryControlFlagBits - Bitmask specifying constraints on a querySee AlsoTvulkan specifies the precision of  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-occlusionocclusion queries.TUUTYNone'"#%&'-./189;=>?FHIMSUVX_dghklmqvulkan<VkPipelineViewportStateCreateFlags - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also1ZNone'"#%&'-./189;=>?FHIMSUVX_dghklmqbvulkan?VkPipelineVertexInputStateCreateFlags - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also1[None'"#%&'-./189;=>?FHIMSUVX_dghklmqvulkan@VkPipelineTessellationStateCreateFlags - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also1None'"#%&'-./189;=>?FHIMSUVX_dghklmqSvulkan<VkPipelineStageFlagBits - Bitmask specifying pipeline stages DescriptionNote"An execution dependency with only . in the destination stage mask will only prevent that stage from executing in subsequently submitted commands. As this stage does not perform any actual execution, this is not observable - in effect, it does not delay processing of subsequent commands. Similarly an execution dependency with only X in the source stage mask will effectively not wait for any prior commands to complete./When defining a memory dependency, using only  or d would never make any accesses available and/or visible because these stages do not access memory. and  are useful for accomplishing layout transitions and queue ownership operations when the required execution dependency is satisfied by other means - for example, semaphore operations between queues.See Also, R, ,  xvulkanz 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; specifies the execution of the ray tracing shader stages.vulkan specifies the execution of y, z, and f.vulkan1 specifies the stage of the pipeline where the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-imageshading rate imageP is read to determine the shading rate for portions of a rasterized primitive.vulkan! specifies the task shader stage.vulkan! specifies the mesh shader stage.vulkanQ 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.vulkanb specifies the stage of the pipeline where device-side preprocessing for generated commands via { is handled.vulkanu is equivalent to the logical OR of every other pipeline stage flag that is supported on the queue it is used with.vulkanb 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.vulkanj specifies the final stage in the pipeline where operations generated by all commands complete execution.vulkan" specifies the following commands: All  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands, including     All  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clearsclear commands", with the exception of  |vulkan. 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.vulkan5 specifies the tessellation evaluation shader stage.vulkan2 specifies the tessellation control shader stage.vulkan# specifies the vertex shader stage.vulkanR specifies the stage of the pipeline where vertex and index buffers are consumed.vulkan specifies the stage of the pipeline where Draw/DispatchIndirect data structures are consumed. This stage also includes reading commands written by  .vulkan] specifies the stage of the pipeline where any commands are initially received by the queue.RS7SR\None'"#%&'-./189;=>?FHIMSUVX_dghklmq<vulkanaVkPipelineShaderStageCreateFlagBits - Bitmask controlling how a pipeline shader stage is created DescriptionNoteIf  and  are specified and  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroup-sizeminSubgroupSize does not equal  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroup-sizemaxSubgroupSize and no  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-required-subgroup-sizerequired subgroup sizeu is specified, then the only way to guarantee that the 'X' dimension of the local workgroup size is a multiple of  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sgs SubgroupSize is to make it a multiple of maxSubgroupSizeb. Under these conditions, you are guaranteed full subgroups but not any particular subgroup size.See Alsovulkan specifies that the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sgs SubgroupSize may vary in the shader stage.vulkan$ specifies that the subgroup sizes must? be launched with all invocations active in the compute stage.]None'"#%&'-./189;=>?FHIMSUVX_dghklmqvulkanAVkPipelineRasterizationStateCreateFlags - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also1 ^None'"#%&'-./189;=>?FHIMSUVX_dghklmq vulkan?VkPipelineMultisampleStateCreateFlags - Reserved for future use Description Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also1    _None'"#%&'-./189;=>?FHIMSUVX_dghklmq"Jvulkan5VkPipelineLayoutCreateFlags - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also3`None'"#%&'-./189;=>?FHIMSUVX_dghklmq&vulkanAVkPipelineInputAssemblyStateCreateFlags - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also1aNone'"#%&'-./189;=>?FHIMSUVX_dghklmq*$vulkan;VkPipelineDynamicStateCreateFlags - Reserved for future use Description$Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also1$%$%bNone'"#%&'-./189;=>?FHIMSUVX_dghklmq/T-vulkan@VkPipelineDepthStencilStateCreateFlags - Reserved for future use Description-Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also1-.-.cNone'"#%&'-./189;=>?FHIMSUVX_dghklmqf7vulkanHVkPipelineCreateFlagBits - Bitmask controlling how a pipeline is created DescriptionJQ specifies that the created pipeline will not be optimized. Using this flag may3 reduce the time taken to create the pipeline.I 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.Hh specifies that the pipeline to be created will be a child of a previously created parent pipeline.9= specifies that any shader input variables decorated as  ViewIndex; will be assigned values as if they were decorated as  DeviceIndex.E}( specifies that a compute pipeline can be used with E~% with a non-zero base workgroup.A specifies that a pipeline is created with all shaders in the deferred state. Before using the pipeline the application must call Q exactly once on each shader in the pipeline before using the pipeline.B 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.C 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.E" specifies that the pipeline cannot) be used directly, and instead defines a pipeline library that can1 be combined with other pipelines using the ; structure. This is available in raytracing pipelines.;l specifies that an any hit shader will always be present when an any hit shader would be executed.<r specifies that a closest hit shader will always be present when a closest hit shader would be executed.=d specifies that a miss shader will always be present when a miss shader would be executed.>v specifies that an intersection shader will always be present when an intersection shader would be executed.?U specifies that triangle primitives will be skipped during traversal using  OpTraceKHR.@L specifies that AABB primitives will be skipped during traversal using  OpTraceKHR.DG 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.Fg specifies that pipeline creation will fail if a compile is required for creation of a valid ) object;  : will be returned by pipeline creation, and the ) will be set to ..'When creating multiple pipelines, G 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 I and Ha. 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 Also667JIHGFEDCBA@?>=<;:98'7JIHGFEDCBA@?>=<;:98JIHGFEDCBA@?>=<;:96dNone'"#%&'-./189;=>?FHIMSUVX_dghklmqlRvulkan>VkPipelineColorBlendStateCreateFlags - Reserved for future use DescriptionRQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also1RSRSeNone'"#%&'-./189;=>?FHIMSUVX_dghklmqt\vulkanVVkPipelineCacheCreateFlagBits - Bitmask specifying the behavior of the pipeline cacheSee Also[^vulkan^7 specifies that all commands that modify the created ) will be  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehaviorexternally synchronized . When set, the implementation mays skip any unnecessary processing needed to support simultaneous modification from multiple threads where allowed.[\^]\^]^[fNone'"#%&'-./189;=>?FHIMSUVX_dghklmqk gvulkanKVkMemoryPropertyFlagBits - Bitmask specifying properties for a memory type Description(For any memory allocated with both the n and the j, 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 Alsofivulkani 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 i set and any of o set, or n set, or m set.jvulkanjv bit specifies that device accesses to allocations of this memory type are automatically made available and visible.kvulkank bit specifies that memory allocated with this type is not cached on the device. Uncached device memory is always device coherent.lvulkanl[ bit specifies that the memory type only allows device access to the memory. Memory types must not have both l and o1 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.mvulkanm 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.nvulkann9 bit specifies that the host cache management commands - and -m are not needed to flush host writes to the device or make device writes visible to the host, respectively.ovulkano5 bit specifies that memory allocated with this type can" be mapped for host access using -.pvulkanp 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 g set. fgponmlkjihgponmlkjihponmlkjifNone'"#%&'-./189;=>?FHIMSUVX_dghklmqPvulkan*VkMemoryMapFlags - Reserved for future use DescriptionPQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also-PxPxgNone'"#%&'-./189;=>?FHIMSUVX_dghklmq:vulkanDVkMemoryHeapFlagBits - 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.hNone'"#%&'-./189;=>?FHIMSUVX_dghklmqtvulkan/VkInstanceCreateFlags - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also jiNone'"#%&'-./189;=>?FHIMSUVX_dghklmq!vulkanVVkImageViewCreateFlagBits - Bitmask specifying additional parameters of an image viewSee Alsovulkan[ prohibits the implementation from accessing the fragment density map by the host during  8 as the contents are expected to change after recordingNone'"#%&'-./189;=>?FHIMSUVX_dghklmq` NvulkanDVkImageUsageFlagBits - Bitmask specifying intended usage of an imageSee AlsoMvulkan specifies that the image can be used to create a )| suitable for use as a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-imageshading rate image.vulkan specifies that the image can be used to create a )| suitable for use as a  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapopsfragment density map image.vulkan specifies that the image can be used to create a )| suitable for occupying ) 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 f (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 )|: 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. MNNM[None'"#%&'-./189;=>?FHIMSUVX_dghklmqvulkanmVkImageStencilUsageCreateInfo - Specify separate usage flags for the stencil aspect of a depth-stencil image DescriptionIf the pNext chain of * 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 *#, 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 *", the stencil aspect of an image must only be used as specified *::usageE. Use of other aspects of an image are unaffected by this structure.This structure can also be included in the pNext chain of O 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 O.. When this structure is not included in the pNext chain of O then the implicit value of  stencilUsage matches that of O::usage. Valid UsageIf  stencilUsage includes  , it must" not include bits other than  or Valid Usage (Implicit)sType must be  stencilUsage must be a valid combination of  values stencilUsage must not be 0See AlsoM, vulkan stencilUsage is a bitmask of C describing the intended usage of the stencil aspect of the image.43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      a43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      jNone'"#%&'-./189;=>?FHIMSUVX_dghklmqNone'"#%&'-./189;=>?FHIMSUVX_dghklmqQIvulkanMVkImageCreateFlagBits - 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 AlsoHvulkane 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 J6 or 7 structure whose  handleTypes member is not 0, it is as if  is set.vulkan specifies that the image can' be used with a non-zero value of the splitInstanceBindRegionCount member of a F structure passed into Be. This flag also has the effect of making the image use the standard sparse image block dimensions.vulkan specifies that the image can be used to create a )| of type ( or (.vulkan6 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.vulkan 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.vulkan0 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:ZImage data read as an image sampler is undefined if the sampler was not created with flags containing Tl or was not sampled through the use of a combined image sampler with an immutable sampler in  .Image data read with an input attachment is undefined if the contents were not written as an attachment in an earlier subpass of the same render pass.%Image data read with load operations may> be resampled to the fragment density of the render pass.sImage contents outside of the render area become undefined if the image is stored as a render pass attachment.vulkan specifies that the image can be used to create a )| of type ( or (.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.HI!IHkNone'"#%&'-./189;=>?FHIMSUVX_dghklmq_5 vulkan\VkImageAspectFlagBits - Bitmask specifying which aspects of an image are included in a viewSee AlsoS, , SUvulkan 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.PNone'"#%&'-./189;=>?FHIMSUVX_dghklmq vulkan}VkRenderPassInputAttachmentAspectCreateInfo - Structure specifying, for a given subpass/input attachment pair, which aspect can be read. DescriptionAn application can] access any aspect of an input attachment that does not have a specified aspect mask in the pAspectReferences# array. Otherwise, an application must\ not access aspect(s) of an input attachment other than those in its specified aspect mask.Valid Usage (Implicit)See Also, vulkantVkPipelineTessellationDomainOriginStateCreateInfo - Structure specifying the orientation of the tessellation domain DescriptionIf the  structure is included in the pNext chain of 1e, it controls the origin of the tessellation domain. If this structure is not present, it is as if  domainOrigin were ).Valid Usage (Implicit)See Also, &vulkanzVkPhysicalDevicePointClippingProperties - Structure describing the point clipping behavior supported by an implementationMembersThe members of the B structure describe the following implementation-dependent limit: DescriptionIf the  structure is included in the pNext chain of O9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See AlsoG, 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 +[ 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 +[.Valid Usage (Implicit)See AlsoM, vulkan domainOrigin must be a valid & valuevulkanusage must not be 0vulkanpointClippingBehavior is a GP value specifying the point clipping behavior supported by the implementation.vulkanpAspectReferences must$ be a valid pointer to an array of aspectReferenceCount valid  structuresvulkansubpass is an index into the  pSubpasses array of the parent 0+ structure.vulkaninputAttachmentIndex is an index into the pInputAttachments of the specified subpass.vulkan aspectMask must not be 0HIJ 7 J I H G F E D C B A @ ? > = < ; : 9 8&')(GHJI43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      J 7 J I H G F E D C B A @ ? > = < ; : 9 8 J I H G F E D C B A @ ? > = < ; : 9 843 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      IHGHJIJI&')()(lNone'"#%&'-./189;=>?FHIMSUVX_dghklmq !"#$%%$#"! 9None'"#%&'-./189;=>?FHIMSUVX_dghklmqvulkan<VkOffset3D - Structure specifying a three-dimensional offsetSee Also ,  ,  ,  , :vulkan:VkOffset2D - Structure specifying a two-dimensional offsetSee Also,  , vulkanJVkImageSubresourceRange - Structure specifying an image subresource range Description-The number of mipmap levels and array layers must be a subset of the image subresources in the image. If an application wants to use all mip levels or layers in an image after the  baseMipLevel or baseArrayLayer, it can set  levelCount and  layerCount to the special values  and ; without knowing the exact number of mip levels or layers.OFor cube and cube array image views, the layers of the image view starting at baseArrayLayer correspond to faces in the order +X, -X, +Y, -Y, +Z, -Z. For cube arrays, each set of six sequential layers is a single cube, so the number of cube maps in a cube map array view is  layerCount / 6, and image array layer (baseArrayLayer' + i) is face index (i mod 6) of cube i / 6B. If the number of layers in the view, whether set explicitly in  layerCount or implied by :, is not a multiple of 6, the last cube map in the array must not be accessed. aspectMask must be only k, kZ or k[ 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 kZ and k[, 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.The +  components member describes a remapping from components of the image to components of the vector returned by shader image instructions. This remapping mustm be identity 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 2CBCR conversion.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 k.When creating a )|L, if sampler Y 2CBCR conversion is not enabled in the sampler and the image format is  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar , the image must have been created with  , and the  aspectMask of the )| s subresourceRange must be k, k or k. Valid UsageIf  levelCount is not  , it must be greater than 0If  layerCount is not  , it must be greater than 0If  aspectMask includes k, then it must not include any of k, k, or k aspectMask must not include &VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT for any index iValid Usage (Implicit) aspectMask must be a valid combination of k values aspectMask must not be 0See Also, /R, +[,  ,  vulkanLVkImageSubresourceLayers - Structure specifying an image subresource layers Valid UsageIf  aspectMask contains k , it must not contain either of kZ or k[ aspectMask must not contain k aspectMask must not include &VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT for any index i layerCount must be greater than 0Valid Usage (Implicit) aspectMask must be a valid combination of k values aspectMask must not be 0See Also , ,  ,  ,  vulkan<VkExtent3D - Structure specifying a three-dimensional extentSee Also ,  , *,  ,  ,  , :, :vulkan:VkExtent2D - Structure specifying a two-dimensional extentSee Also, , , &, |, , , ,  , , 2, F, , N, 0vulkanLVkClearDepthStencilValue - Structure specifying a clear depth stencil value Valid Usage Unless the VK_EXT_depth_range_unrestricted extension is enabled depth must be between 0.0 and 1.0 , inclusiveSee Also&,  -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..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.0vulkan aspectMask is a bitmask of kC specifying which aspect(s) of the image are included in the view.1vulkan baseMipLevel2 is the first mipmap level accessible to the view.2vulkan levelCount0 is the number of mipmap levels (starting from  baseMipLevel) accessible to the view.3vulkanbaseArrayLayer1 is the first array layer accessible to the view.4vulkan layerCount/ is the number of array layers (starting from baseArrayLayer) accessible to the view.6vulkan aspectMask is a combination of kB, selecting the color, depth and/or stencil aspects to be copied.7vulkanmipLevel" is the mipmap level to copy from.8vulkanbaseArrayLayer and  layerCount6 are the starting layer and number of layers to copy.;vulkanwidth is the width of the extent.<vulkanheight is the height of the extent.=vulkandepth is the depth of the extent.?vulkanwidth is the width of the extent.@vulkanheight is the height of the extent.Bvulkanx is the x offset.Cvulkany is the y offset.Dvulkanz is the z offset.Fvulkanx is the x offset.Gvulkany is the y offset.**)+ABCDEFG/0341256789:;<=>?@,-.&'(*EFGABCD>?@:;<=56789/03412,-.*)+&'(None'"#%&'-./189;=>?FHIMSUVX_dghklmq5XvulkanuVkRectLayerKHR - Structure containing a rectangle, including layer, changed by vkQueuePresentKHR for a given VkImage Valid Usage The sum of offset and extent must be no greater than the  imageExtent member of the N structure passed to layer must be less than the imageArrayLayers member of the N 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. Xf specifies pixels of the swapchain s image(s), which will be constant for the life of the swapchain.See Also, , ZYvulkanYVkPresentRegionsKHR - Structure hint of rectangular regions changed by vkQueuePresentKHR Valid UsageswapchainCount must be the same value as ::swapchainCount , where  is included in the pNext chain of this Y structureValid Usage (Implicit)sType must be BIf pRegions is not NULL, pRegions must( be a valid pointer to an array of swapchainCount valid Z structuresswapchainCount must be greater than 0See AlsoZ, ZvulkannVkPresentRegionKHR - Structure containing rectangular region changed by vkQueuePresentKHR for a given VkImageValid Usage (Implicit)If rectangleCount is not 0, and  pRectangles is not NULL,  pRectangles must( be a valid pointer to an array of rectangleCount valid X structuresSee AlsoY, Xtvulkanoffset+ is the origin of the rectangle, in pixels.uvulkanextent) is the size of the rectangle, in pixels.vvulkanlayerJ is the layer of the image. For images with only one layer, the value of layer must be 0.xvulkan pRectangles is either NULL or a pointer to an array of X structures. The Xr 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.zvulkanpRegions is NULL or a pointer to an array of Z elements with swapchainCount entries. If not NULL, each element of pRegionsr contains the region that has changed since the last present to the swapchain in the corresponding entry in the :: pSwapchains array.XstuvYyzZwxqr{|YyzZwxXstuvr|q{mNone'"#%&'-./189;=>?FHIMSUVX_dghklmq;ZvulkanGVkFramebufferCreateFlagBits - Bitmask specifying framebuffer propertiesSee Alsovulkanw specifies that image views are not specified, and only attachment compatibility information will be provided via a b> structure.nNone'"#%&'-./189;=>?FHIMSUVX_dghklmq'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  ::format:# specifies that an image view can be  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage sampled from.# specifies that an image view can be used as a  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimagestorage images.# specifies that an image view can: be used as storage image that supports atomic operations.# specifies that an image view canK be used as a framebuffer color attachment and as an input attachment.# specifies that an image view canb be used as a framebuffer color attachment that supports blending and as an input attachment.# specifies that an image view canS be used as a framebuffer depth/stencil attachment and as an input attachment. specifies that an image can be used as srcImage for the   command. specifies that an image can be used as dstImage for the   command. specifies that if  is also set, an image view can0 be used with a sampler that has either of  magFilter or  minFilter set to  , or  mipmapMode set to  . If / is also set, an image can be used as the srcImage to   with a filter of . This bit must8 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 )x 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 )x 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 S  xChromaOffset and/or  yChromaOffset of . Otherwise both  xChromaOffset and  yChromaOffset must be . If a format does not incorporate chroma downsampling (it is not a 422  or 420  format) but the implementation supports sampler Y 2CBCR conversion for this format, the implementation must set .$ specifies that an application can define a  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversionK using this format as a source, and that an image of this format can be used with a S  xChromaOffset and/or  yChromaOffset of . Otherwise both  xChromaOffset and  yChromaOffset must be . If neither  nor  is set, the application must not define a  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversion$ using this format as a source. specifies that the format can do linear sampler filtering (min/magFilter) whilst sampler Y 2CBCR conversion is enabled.U specifies that the format can have different chroma, min, and mag filters.F specifies that reconstruction is explicit, as described in  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstructionI. If this bit is not present, reconstruction is implicit by default.$ specifies that reconstruction can0 be forcibly made explicit by setting S::forceExplicitReconstruction to 1. If the format being queried supports  it must also support .* specifies that a multi-planar image can have the 3 set during image creation. An implementation must not set  for single-plane formats.# specifies that an image view can be used as a  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachmentfragment density map attachment.The following bits may be set in bufferFeatures1, specifying that the features are supported by  VkBuffer.htmlbuffers or  VkBufferView.html buffer views created with the queried  ::format: specifies that the format can& be used to create a buffer view that can be bound to a , 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 (1::format).See Alsovulkan specifies that an image can! be used as a source image for  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands.vulkan specifies that an image can& be used as a destination image for  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands and  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clearsclear commands.vulkan specifies that an application can define a  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversionB using this format as a source, and that an image of this format can be used with a S  xChromaOffset and/or  yChromaOffset of . Otherwise both  xChromaOffset and  yChromaOffset must be . If a format does not incorporate chroma downsampling (it is not a 422  or 420  format) but the implementation supports sampler Y 2CBCR conversion for this format, the implementation must set .vulkany specifies that the format can do linear sampler filtering (min/magFilter) whilst sampler Y 2CBCR conversion is enabled.vulkanM specifies that the format can have different chroma, min, and mag filters.vulkan> specifies that reconstruction is explicit, as described in  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstructionE. If this bit is not present, reconstruction is implicit by default.vulkan specifies that reconstruction can' be forcibly made explicit by setting S::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 S  xChromaOffset and/or  yChromaOffset of . Otherwise both  xChromaOffset and  yChromaOffset must be . If neither  nor  is set, the application must not define a  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversion using this format as a source.vulkan specifies )x can0 be used as a sampled image with a min or max  . This bit must4 only be exposed for formats that also support the .vulkan specifies that an image view can be used as a  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachmentfragment density map attachment.vulkan specifies that if  is also set, an image view can, be used with a sampler that has either of  magFilter or  minFilter set to , or  mipmapMode set to . If + is also set, an image can be used as the srcImage to   with a filter of  . This bit must4 only be exposed for formats that also support the  or .If the format being queried is a depth/stencil format, this bit only specifies that the depth aspect (not the stencil aspect) of an image of this format supports linear filtering, and that linear filtering of the depth aspect is supported whether depth compare is enabled in the sampler or not. If this bit is not present, linear filtering with depth compare disabled is unsupported and linear filtering with depth compare enabled is supported, but may compute the filtered value in an implementation-dependent manner which differs from the normal rules of linear filtering. The resulting value must be in the range [0,1] and should\ be proportional to, or a weighted average of, the number of comparison passes or failures.vulkan specifies that an image can be used as dstImage for the   command.vulkan specifies that an image can be used as srcImage for the   command.vulkan specifies that an image view canO be used as a framebuffer depth/stencil attachment and as an input attachment.vulkan specifies that an image view can^ be used as a framebuffer color attachment that supports blending and as an input attachment.vulkan specifies that an image view canG be used as a framebuffer color attachment and as an input attachment.vulkan specifies that the format can) be used as a vertex attribute format (1::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.7None'"#%&'-./189;=>?FHIMSUVX_dghklmq vulkanVVkPhysicalDeviceImageViewImageFormatInfoEXT - Structure for providing image view typeValid Usage (Implicit)See Also , vulkan{VkFilterCubicImageViewImageFormatPropertiesEXT - Structure for querying cubic filtering capabilities of an image view typeValid Usage (Implicit)sType must be  Valid UsageIf the pNext chain of the OQ structure includes a  structure, the pNext chain of the O structure must include a  structure with an  imageViewType that is compatible with  imageTypeSee Also, vulkan 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.vulkanfilterCubicMinmax8 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.vulkan imageViewType must be a valid   value  YNone'"#%&'-./189;=>?FHIMSUVX_dghklmq-.vulkanOVkSamplerReductionModeCreateInfo - Structure specifying sampler reduction mode DescriptionIf the pNext chain of 73 includes a k 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, 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 O9, 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 - . 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 Also, vulkan reductionMode must be a valid  valuevulkan"filterMinmaxSingleComponentFormatsd is a boolean value indicating whether a minimum set of required formats support min/max filtering.vulkan!filterMinmaxImageComponentMapping is a boolean value indicating whether the implementation supports non-identity component mapping of the image when doing min/max filtering.   43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!            oNone'"#%&'-./189;=>?FHIMSUVX_dghklmqD  pNone'"#%&'-./189;=>?FHIMSUVX_dghklmqJvulkanQVkFenceCreateFlagBits - 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.qNone'"#%&'-./189;=>?FHIMSUVX_dghklmqN%vulkan,VkEventCreateFlags - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also%(rNone'"#%&'-./189;=>?FHIMSUVX_dghklmqR4vulkanFVkDeviceQueueCreateFlagBits - Bitmask specifying behavior of the queueSee Alsovulkan? specifies that the device queue is a protected-capable queue.sNone'"#%&'-./189;=>?FHIMSUVX_dghklmqVZvulkan-VkDeviceCreateFlags - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also    tNone'"#%&'-./189;=>?FHIMSUVX_dghklmqcRvulkanZVkDescriptorSetLayoutCreateFlagBits - Bitmask specifying descriptor set layout propertiesSee Alsovulkan3 specifies that descriptor sets using this layout must8 be allocated from a descriptor pool created with the u9 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 o.None'"#%&'-./189;=>?FHIMSUVX_dghklmqgEvulkan4VkDescriptorPoolResetFlags - Reserved for future use DescriptionEQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also EEuNone'"#%&'-./189;=>?FHIMSUVX_dghklmqs3&vulkanfVkDescriptorPoolCreateFlagBits - Bitmask specifying certain supported operations on a descriptor poolSee Also%(vulkan(: specifies that descriptor sets allocated from this pool can include bindings with the @8\ bit set. It is valid to allocate descriptor sets that have bindings that do not set the @8 bit from a pool that has ( set.)vulkan)! specifies that descriptor sets can@ return their individual allocations to the pool, i.e. all of  ,  , and  B are allowed. Otherwise, descriptor sets allocated from the pool must9 not be individually freed back to the pool, i.e. only   and   are allowed.%&)('&)(')(%WNone'"#%&'-./189;=>?FHIMSUVX_dghklmqv3vulkanVkPhysicalDeviceDescriptorIndexingProperties - 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 O9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Also, vulkanVkPhysicalDeviceDescriptorIndexingFeatures - Structure describing descriptor indexing features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of OK, 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 Also, vulkanVkDescriptorSetVariableDescriptorCountLayoutSupport - Structure returning information about whether a descriptor set layout can be supported Description?If the create info includes a variable-sized descriptor, then  supportedR is determined assuming the requested size of the variable-sized descriptor, and maxVariableDescriptorCount5 is set to the maximum size of that descriptor that can be successfully created (which is greater than or equal to the requested size passed in). If the create info does not include a variable-sized descriptor or if the ::(descriptorBindingVariableDescriptorCount feature is not enabled, then maxVariableDescriptorCount` is set to zero. For the purposes of this command, a variable-sized descriptor binding with a descriptorCount of zero is treated as if the descriptorCount is one, and thus the binding is not ignored and the maximum descriptor count will be returned. If the layout is not supported, then the value written to maxVariableDescriptorCount is undefined.Valid Usage (Implicit)See AlsovulkanVkDescriptorSetVariableDescriptorCountAllocateInfo - Structure specifying additional allocation parameters for descriptor sets DescriptionIf descriptorSetCount3 is zero or this structure is not included in the pNextI chain, then the variable lengths are considered to be zero. Otherwise, pDescriptorCounts[i] is the number of descriptors in the variable count descriptor binding in the corresponding descriptor set layout. If the variable count descriptor binding in the corresponding descriptor set layout has a descriptor type of ,7 then pDescriptorCounts4[i] specifies the binding s capacity in bytes. If  :: pSetLayoutsA[i] does not include a variable count descriptor binding, then pDescriptorCounts[i] is ignored. Valid UsageIf descriptorSetCount is not zero, descriptorSetCount must equal  ::descriptorSetCountIf  :: pSetLayouts7[i] has a variable descriptor count binding, then pDescriptorCounts [i] musty be less than or equal to the descriptor count specified for that binding when the descriptor set layout was createdValid Usage (Implicit)sType must be If descriptorSetCount is not 0, pDescriptorCounts must( be a valid pointer to an array of descriptorSetCount uint32_t valuesSee AlsovulkanuVkDescriptorSetLayoutBindingFlagsCreateInfo - Structure specifying creation flags for descriptor set layout bindings DescriptionIf  bindingCount6 is zero or if this structure is not included in the pNext chain, the u for each descriptor set layout binding is considered to be zero. Otherwise, the descriptor set layout binding at  :: pBindings[i] uses the flags in  pBindingFlags[i]. Valid UsageIf  bindingCount is not zero,  bindingCount must equal  :: bindingCountIf  ::flags includes , then all elements of  pBindingFlags must not include , , or If an element of  pBindingFlags includes ', then all other elements of  :: pBindings must have a smaller value of bindingIf ::-descriptorBindingUniformBufferUpdateAfterBind= is not enabled, all bindings with descriptor type , must not use If ::,descriptorBindingSampledImageUpdateAfterBind= is not enabled, all bindings with descriptor type ,, ,, or , must not use If ::,descriptorBindingStorageImageUpdateAfterBind= is not enabled, all bindings with descriptor type , must not use If ::-descriptorBindingStorageBufferUpdateAfterBind= is not enabled, all bindings with descriptor type , must not use If ::2descriptorBindingUniformTexelBufferUpdateAfterBind= is not enabled, all bindings with descriptor type , must not use If ::2descriptorBindingStorageTexelBufferUpdateAfterBind= is not enabled, all bindings with descriptor type , must not use If ::2descriptorBindingInlineUniformBlockUpdateAfterBind= is not enabled, all bindings with descriptor type ,7 must not use 'All bindings with descriptor type ,, ,, or , must not use If ::)descriptorBindingUpdateUnusedWhilePending& is not enabled, all elements of  pBindingFlags must not include If ::descriptorBindingPartiallyBound& is not enabled, all elements of  pBindingFlags must not include If ::(descriptorBindingVariableDescriptorCount& is not enabled, all elements of  pBindingFlags must not include If an element of  pBindingFlags includes , that element s descriptorType must not be , or ,Valid Usage (Implicit)sType must be If  bindingCount is not 0, and  pBindingFlags is not NULL,  pBindingFlags must( be a valid pointer to an array of  bindingCount valid combinations of  valuesSee Also, 2vulkanmaxVariableDescriptorCount 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 ,7 then maxVariableDescriptorCount_ indicates the maximum byte size supported for the binding, if that binding is variable-sized.4vulkanpDescriptorCounts 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.6vulkan pBindingFlags is a pointer to an array of 8 bitfields, one for each descriptor set layout binding.8vulkan'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.9vulkan0shaderUniformBufferArrayNonUniformIndexingNativeu is a boolean value indicating whether uniform buffer descriptors natively support nonuniform indexing. If this is k, then a single dynamic instance of an instruction that nonuniformly indexes an array of uniform buffers may@ execute multiple times in order to access all the descriptors.:vulkan/shaderSampledImageArrayNonUniformIndexingNativex is a boolean value indicating whether sampler and image descriptors natively support nonuniform indexing. If this is n, then a single dynamic instance of an instruction that nonuniformly indexes an array of samplers or images may@ execute multiple times in order to access all the descriptors.;vulkan0shaderStorageBufferArrayNonUniformIndexingNativeu is a boolean value indicating whether storage buffer descriptors natively support nonuniform indexing. If this is k, then a single dynamic instance of an instruction that nonuniformly indexes an array of storage buffers may@ execute multiple times in order to access all the descriptors.<vulkan/shaderStorageImageArrayNonUniformIndexingNativet is a boolean value indicating whether storage image descriptors natively support nonuniform indexing. If this is j, then a single dynamic instance of an instruction that nonuniformly indexes an array of storage images may@ execute multiple times in order to access all the descriptors.=vulkan2shaderInputAttachmentArrayNonUniformIndexingNativew is a boolean value indicating whether input attachment descriptors natively support nonuniform indexing. If this is m, then a single dynamic instance of an instruction that nonuniformly indexes an array of input attachments may@ execute multiple times in order to access all the descriptors.>vulkan!robustBufferAccessUpdateAfterBind) is a boolean value indicating whether  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobustBufferAccess can- be enabled in a device simultaneously with -descriptorBindingUniformBufferUpdateAfterBind, -descriptorBindingStorageBufferUpdateAfterBind, 2descriptorBindingUniformTexelBufferUpdateAfterBind , and/or 2descriptorBindingStorageTexelBufferUpdateAfterBind. If this is , then either robustBufferAccess must9 be disabled or all of these update-after-bind features must be disabled.?vulkanquadDivergentImplicitLod is a boolean value indicating whether implicit level of detail calculations for image operations have well-defined results when the image and/or sampler objects used for the instruction are not uniform within a quad. See  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-derivative-image-operationsDerivative Image Operations.@vulkan,maxPerStageDescriptorUpdateAfterBindSamplers is similar to maxPerStageDescriptorSamplersK but counts descriptors from descriptor sets created with or without the  bit set.Avulkan2maxPerStageDescriptorUpdateAfterBindUniformBuffers is similar to #maxPerStageDescriptorUniformBuffersK but counts descriptors from descriptor sets created with or without the  bit set.Bvulkan2maxPerStageDescriptorUpdateAfterBindStorageBuffers is similar to #maxPerStageDescriptorStorageBuffersK but counts descriptors from descriptor sets created with or without the  bit set.Cvulkan1maxPerStageDescriptorUpdateAfterBindSampledImages is similar to "maxPerStageDescriptorSampledImagesK but counts descriptors from descriptor sets created with or without the  bit set.Dvulkan1maxPerStageDescriptorUpdateAfterBindStorageImages is similar to "maxPerStageDescriptorStorageImagesK but counts descriptors from descriptor sets created with or without the  bit set.Evulkan4maxPerStageDescriptorUpdateAfterBindInputAttachments is similar to %maxPerStageDescriptorInputAttachmentsK but counts descriptors from descriptor sets created with or without the  bit set.Fvulkan#maxPerStageUpdateAfterBindResources is similar to maxPerStageResourcesK but counts descriptors from descriptor sets created with or without the  bit set.Gvulkan'maxDescriptorSetUpdateAfterBindSamplers is similar to maxDescriptorSetSamplersK but counts descriptors from descriptor sets created with or without the  bit set.Hvulkan-maxDescriptorSetUpdateAfterBindUniformBuffers is similar to maxDescriptorSetUniformBuffersK but counts descriptors from descriptor sets created with or without the  bit set.Ivulkan4maxDescriptorSetUpdateAfterBindUniformBuffersDynamic is similar to %maxDescriptorSetUniformBuffersDynamicK but counts descriptors from descriptor sets created with or without the  bit set.Jvulkan-maxDescriptorSetUpdateAfterBindStorageBuffers is similar to maxDescriptorSetStorageBuffersK but counts descriptors from descriptor sets created with or without the  bit set.Kvulkan4maxDescriptorSetUpdateAfterBindStorageBuffersDynamic is similar to %maxDescriptorSetStorageBuffersDynamicK but counts descriptors from descriptor sets created with or without the  bit set.Lvulkan,maxDescriptorSetUpdateAfterBindSampledImages is similar to maxDescriptorSetSampledImagesK but counts descriptors from descriptor sets created with or without the  bit set.Mvulkan,maxDescriptorSetUpdateAfterBindStorageImages is similar to maxDescriptorSetStorageImagesK but counts descriptors from descriptor sets created with or without the  bit set.Nvulkan/maxDescriptorSetUpdateAfterBindInputAttachments is similar to  maxDescriptorSetInputAttachmentsK but counts descriptors from descriptor sets created with or without the  bit set.Pvulkan)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.Qvulkan,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.Rvulkan,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.Svulkan*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.Tvulkan)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.Uvulkan*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.Vvulkan)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.Wvulkan,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.Xvulkan/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.Yvulkan/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.Zvulkan-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 ,.[vulkan,descriptorBindingSampledImageUpdateAfterBind indicates whether the implementation supports updating sampled image descriptors after a set is bound. If this feature is not enabled,  must not be used with ,, ,, or ,.\vulkan,descriptorBindingStorageImageUpdateAfterBind indicates whether the implementation supports updating storage image descriptors after a set is bound. If this feature is not enabled,  must not be used with ,.]vulkan-descriptorBindingStorageBufferUpdateAfterBind indicates whether the implementation supports updating storage buffer descriptors after a set is bound. If this feature is not enabled,  must not be used with ,.^vulkan2descriptorBindingUniformTexelBufferUpdateAfterBind indicates whether the implementation supports updating uniform texel buffer descriptors after a set is bound. If this feature is not enabled,  must not be used with ,._vulkan2descriptorBindingStorageTexelBufferUpdateAfterBind indicates whether the implementation supports updating storage texel buffer descriptors after a set is bound. If this feature is not enabled,  must not be used with ,.`vulkan)descriptorBindingUpdateUnusedWhilePending indicates whether the implementation supports updating descriptors while the set is in use. If this feature is not enabled,  must not be used.avulkandescriptorBindingPartiallyBound 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.bvulkan(descriptorBindingVariableDescriptorCount indicates whether the implementation supports descriptor sets with a variable-sized last binding. If this feature is not enabled,  must not be used.cvulkanruntimeDescriptorArray; indicates whether the implementation supports the SPIR-V RuntimeDescriptorArray: capability. If this feature is not enabled, descriptors must# not be declared in runtime arrays."Y*QPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc12345643 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      %&')(OPQRSTUVWXYZ[\]^_`abc789:;<=>?@ABCDEFGHIJKLMN56341243 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      Y*QPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+QPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+&')()(%vNone'"#%&'-./189;=>?FHIMSUVX_dghklmqp{|}~~}|{None'"#%&'-./189;=>?FHIMSUVX_dghklmqKDvulkan[VkDependencyFlagBits - Bitmask specifying how execution and memory dependencies are formedSee AlsoCvulkan" 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.CD DCRNone'"#%&'-./189;=>?FHIMSUVX_dghklmq WvulkanXVkRenderPassMultiviewCreateInfo - 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 O 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 O bit must" write per-view attributes to the  *PerViewNV[]8 shader outputs, in addition to the non-per-view (e.g. PositionQ) outputs. Pipelines compiled against a subpass that does not include this bit must not include the  *PerViewNV[] outputs in their interfaces. Valid UsageEach view index must- not be set in more than one element of pCorrelationMasksValid Usage (Implicit)sType must be If  subpassCount is not 0,  pViewMasks must( be a valid pointer to an array of  subpassCount uint32_t valuesIf dependencyCount is not 0,  pViewOffsets must( be a valid pointer to an array of dependencyCount int32_t valuesIf correlationMaskCount is not 0, pCorrelationMasks must( be a valid pointer to an array of correlationMaskCount uint32_t valuesSee AlsovulkanwVkPhysicalDeviceMultiviewProperties - 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 O9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See AlsovulkanwVkPhysicalDeviceMultiviewFeatures - Structure describing multiview features that can be supported by an implementationMembersThe members of the , structure describe the following features: Description multiview specifies whether the implementation supports multiview rendering within a render pass. If this feature is not enabled, the view mask of each subpass must always be zero.multiviewGeometryShaderh specifies whether the implementation supports multiview rendering within a render pass, with  Vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometrygeometry shadersq. If this feature is not enabled, then a pipeline compiled against a subpass with a non-zero view mask must$ not include a geometry shader.multiviewTessellationShaderh specifies whether the implementation supports multiview rendering within a render pass, with  Zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellationtessellation shadersq. If this feature is not enabled, then a pipeline compiled against a subpass with a non-zero view mask must+ not include any tessellation shaders.If the  structure is included in the pNext chain of OK, it is filled with values indicating whether each feature is supported.  can also be included in the pNext chain of    to enable the features. Valid UsageIf multiviewGeometryShader is enabled then  multiview must also be enabledIf multiviewTessellationShader is enabled then  multiview must also be enabledValid Usage (Implicit)sType must be See Also, vulkan 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.vulkanmaxMultiviewViewCount2 is one greater than the maximum view index that can be used in a subpass.vulkanmaxMultiviewInstanceIndex 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.CD43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      u43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      DCwNone'"#%&'-./189;=>?FHIMSUVX_dghklmq n  xNone'"#%&'-./189;=>?FHIMSUVX_dghklmq vPvulkan9VkCullModeFlagBits - Bitmask controlling triangle culling Description[Following culling, fragments are produced for any triangles which have not been discarded.See Alsovulkan, 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 discarded None'"#%&'-./189;=>?FHIMSUVX_dghklmq {BvulkanRVkCommandPoolResetFlagBits - Bitmask controlling behavior of a command pool resetSee AlsoAvulkanr specifies that resetting a command pool recycles all of the resources from the command pool back to the system.ABBAyNone'"#%&'-./189;=>?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. zNone'"#%&'-./189;=>?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'"#%&'-./189;=>?FHIMSUVX_dghklmq @vulkanVVkCommandBufferResetFlagBits - Bitmask controlling behavior of a command buffer resetSee Also?vulkanT specifies that most or all memory resources currently owned by the command buffer should\ be returned to the parent command pool. If this flag is not set, then the command buffer mayE hold onto memory resources and reuse them when recording commands.  commandBuffer is moved to the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state.?@@?{None'"#%&'-./189;=>?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 Alsovulkan specifies that the A value is written to the color attachment for the appropriate sample. Otherwise, the value in memory is unmodified.vulkan specifies that the B value is written to the color attachment for the appropriate sample. Otherwise, the value in memory is unmodified.vulkan specifies that the G value is written to the color attachment for the appropriate sample. Otherwise, the value in memory is unmodified.vulkan specifies that the R value is written to the color attachment for the appropriate sample. Otherwise, the value in memory is unmodified. |None'"#%&'-./189;=>?FHIMSUVX_dghklmq Q vulkan1VkBufferViewCreateFlags - Reserved for future use Description Q is a bitmask type for setting a mask, but is currently reserved for future use.See Also    }None'"#%&'-./189;=>?FHIMSUVX_dghklmq <vulkanDVkBufferUsageFlagBits - Bitmask specifying allowed usage of a bufferSee Alsovulkan specifies that the buffer can3 be used to retrieve a buffer device address via ]C and use that address to access the buffer s memory from a shader.vulkand specifies that the buffer is suitable for using for binding as a transform feedback buffer with .vulkanL specifies that the buffer is suitable for using as a counter buffer with  and .vulkan; specifies that the buffer is suitable for passing as the buffer parameter to .vulkan4 specifies that the buffer is suitable for use in  and y.vulkan; specifies that the buffer is suitable for passing as the buffer parameter to  ,  , , , or  *. It is also suitable for passing as the buffer member of , or sequencesCountBuffer or sequencesIndexBuffer or preprocessedBuffer member of BvulkanI specifies that the buffer is suitable for passing as an element of the pBuffers array to  .vulkan; specifies that the buffer is suitable for passing as the buffer parameter to  .vulkan specifies that the buffer can be used in a   suitable for occupying a ) slot either of type , or ,.vulkan specifies that the buffer can be used in a   suitable for occupying a ) slot either of type , or ,.vulkan specifies that the buffer can be used to create a ){ suitable for occupying a ) slot of type ,. vulkan  specifies that the buffer can be used to create a ){ suitable for occupying a ) slot of type ,.!vulkan! specifies that the buffer can3 be used as the destination of a transfer command."vulkan" specifies that the buffer can be used as the source of a transfer command (see the definition of  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-transfer)."! "! "! ~None'"#%&'-./189;=>?FHIMSUVX_dghklmq +vulkanNVkBufferCreateFlagBits - 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 ] 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 1 flag.0vulkan0 specifies that the buffer canS be partially backed using sparse memory binding. Buffers created with this flag must also be created with the 1 flag.1vulkan1G specifies that the buffer will be backed using sparse memory binding.*+10/.-, +10/.-,10/.-*None'"#%&'-./189;=>?FHIMSUVX_dghklmq :vulkan\VkAttachmentDescriptionFlagBits - Bitmask specifying additional properties of an attachmentSee Also9<vulkan<T specifies that the attachment aliases the same device memory as other attachments.9:<;:<;<9None'"#%&'-./189;=>?FHIMSUVX_dghklmq!EvulkangVkAccessFlagBits - Bitmask specifying memory access types that will participate in a memory dependency DescriptionCertain access types are only performed by a subset of pipeline stages. Any synchronization command that takes both stage masks and access masks uses both to define the  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopesx - only the specified access types performed by the specified stages are included in the access scope. An application must not specify an access flag in a synchronization command if it does not include a pipeline stage in the corresponding stage mask that is able to perform accesses of that type. The following table lists, for each access flag, which pipeline stages can perform that type of access.4 Access flag j Supported pipeline stages  b    a    `    _  , ,  , , , , , , or   ]  , ,  , , , , , , or   \  , ,  , , , , , , or   ^    [    Z    Y>  , or   X=  , or   W    V    U    T    S j Any  R j Any  K    P    Q    J    N    G    I    H    L<   , or   M    O   Supported access types&If a memory object does not have the f property, then - must be called in order to guarantee that writes to the memory object from the host are made available to the host domain, where they canU be further made available to the device domain via a domain operation. Similarly, - mustp be called to guarantee that writes which are available to the host domain are made visible to host operations.$If the memory object does have the f property flag, writes to the memory object from the host are automatically made available to the host domain. Similarly, writes made available to the host domain are automatically made visible to the host.NoteThe 5 command  thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-host-writes=automatically performs a domain operation from host to device for all writes performed before the command executes, so in most cases an explicit memory barrier is not needed for this case. In the few circumstances where a submit does not occur between the host write and the device read access, writes can8 be made available by using an explicit memory barrier.See AlsoDGvulkanG_ specifies write access to a transform feedback buffer made when transform feedback is active.HvulkanHS specifies read access to a transform feedback counter buffer which is read when  executes.IvulkanIW specifies write access to a transform feedback counter buffer which is written when  executes.JvulkanJH specifies read access to a predicate as part of conditional rendering.KvulkanK is similar to [, but also includes  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advancedadvanced blend operations.LvulkanLY specifies read access to an acceleration structure as part of a trace or build command.MvulkanMQ specifies write access to an acceleration structure as part of a build command.NvulkanN[ specifies read access to a shading rate image as part of a drawing command, as bound by .OvulkanO 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 operationsPvulkanP specifies reads from )w inputs to {.QvulkanQ specifies writes to the )w preprocess outputs in {.RvulkanRt 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.SvulkanSr 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.TvulkanT specifies write access by a host operation. Accesses of this type are not performed through a resource, but directly on memory.UvulkanU specifies read access by a host operation. Accesses of this type are not performed through a resource, but directly on memory.VvulkanV5 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.WvulkanW4 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.XvulkanX 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.YvulkanY 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.ZvulkanZ 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,  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.`vulkan`S specifies read access to a vertex buffer as part of a drawing command, bound by  .avulkana\ specifies read access to an index buffer as part of an indexed drawing command, bound by  .bvulkanbi specifies read access to indirect command data read as part of an indirect drawing or dispatch command.DEba`_^]\[ZYXWVUTSRQPONMLKJIHGF;Eba`_^]\[ZYXWVUTSRQPONMLKJIHGFba`_^]\[ZYXWVUTSRQPONMLKJIHGDNone'"#%&'-./189;=>?FHIMSUVX_dghklmq!?@ABCDEF _ b a `G [ L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                            ~ } | { z 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 ` _ ^ ] \HIJ 7 J I H G F E D C B A @ ? > = < ; : 9 8K - 0 / .L # & % $MNO PxQRSTUVWXaihgfedcbY*QPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+Z[[ba`_^]\\]     ^_`efhgoptsrq{|~}43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      pq|{zyxwvutsr          Q R T S i j z y x w v u t s r q p o n m l k                  # $ ' & % . / 2 1 0<=>FGOPQSRjklmuvw|{zyx  $%-.678JIHGFEDCBA@?>=<;:9RS[\]^fghponmlkji %&')(  "! *+,10/.-9:;<DEFba`_^]\[ZYXWVUTSRQPONMLKJIHGNone'"#%&'-./189;=>?FHIMSUVX_dghklmq!vulkan^VkAllocationCallbacks - Structure containing callback function pointers for memory allocation Valid Usage pfnAllocation must1 be a valid pointer to a valid user-defined  pfnReallocation must1 be a valid pointer to a valid user-defined  pfnFree must1 be a valid pointer to a valid user-defined  If either of pfnInternalAllocation or pfnInternalFree is not NULL, both must be valid callbacksSee Also , ,  ,  ,  , -, , , , , ,  , 12, , , ,  ,  , D, ,  , , , %, ', 0, 1/, , , *, , +, ,  , , , 2i, 3, 4, 0, 1, 0, ^, , 7, S, , 6, 8, , , , , , , , , , ,  ,  ,  ,   ,  , , ,  ,  , D, ,  , %, ', 0, *, +, ,  , 1, 2, 3, 4, 0, 7 , S!, ", 6#, 8$, %, &, ', -(, ), *kvulkan 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.lvulkan pfnAllocation is a  ? pointer to an application-defined memory allocation function.mvulkanpfnReallocation is a  A pointer to an application-defined memory reallocation function.nvulkanpfnFree is a 9 pointer to an application-defined memory free function.ovulkanpfnInternalAllocation is a   pointer to an application-defined function that is called by the implementation when the implementation makes internal allocations.pvulkanpfnInternalFree is a   pointer to an application-defined function that is called by the implementation when the implementation frees internal allocations.jklmnopjklmnopNone'"#%&'-./189;=>?FHIMSUVX_dghklmq!+vvulkan-A class for things which can be created with vulkan1VK_NULL_HANDLE - Reserved non-valid object handleSee Also!No cross-references are available6 ; = <vwxyz{|}~9~}|{zyxwv ; = < = <None'"#%&'-./189;=>?FHIMSUVX_dghklmq!U||None'"#%&'-./189;=>?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 Also, vulkan heapBudget is an array of   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   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.`None'"#%&'-./189;=>?FHIMSUVX_dghklmq"K ,vulkanZVkPhysicalDeviceDriverProperties - 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 Also-, , -vulkantVkConformanceVersion - Structure containing the conformance test suite version the implementation is compliant withSee Also,, VvulkandriverID> is a unique identifier for the driver of the physical device.vulkan driverName is an array of y charM containing a null-terminated UTF-8 string which is the name of the driver.vulkan driverInfo is an array of x charZ containing a null-terminated UTF-8 string with additional information about the driver.vulkanconformanceVersionW is the version of the Vulkan conformance test this driver is conformant against (see -).vulkanmajor; is the major version number of the conformance test suite.vulkanminor; is the minor version number of the conformance test suite.vulkansubminor> is the subminor version number of the conformance test suite.vulkanpatch; is the patch version number of the conformance test suite.,-43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      xy-,43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      yxNone'"#%&'-./189;=>?FHIMSUVX_dghklmq",JNone'"#%&'-./189;=>?FHIMSUVX_dghklmq"B$vulkanYVkExternalMemoryImageCreateInfo - Specify that an image may be backed by external memoryMembersNoteA  structure must be included in the creation parameters for an image that will be bound to memory that is either exported or imported.Valid Usage (Implicit)See Also, vulkanZVkExternalMemoryBufferCreateInfo - Specify that a buffer may be backed by external memoryMembersNoteA  structure must be included in the creation parameters for a buffer that will be bound to memory that is either exported or imported.Valid Usage (Implicit)See Also, vulkanXVkExportMemoryAllocateInfo - Specify exportable handle types for a device memory object Valid Usage The bits in  handleTypes must7 be supported and compatible, as reported by K4 or K1Valid Usage (Implicit)sType must be  handleTypes must be a valid combination of <+ valuesSee Also, vulkan handleTypes is a bitmask of <+= 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 must be a valid combination of <+ valuesvulkan handleTypes must not be 0Y*QPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      }43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      Y*QPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+QPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+}None'"#%&'-./189;=>?FHIMSUVX_dghklmq"Z  )None'"#%&'-./189;=>?FHIMSUVX_dghklmq"4fvulkan8VkShaderModule - Opaque handle to a shader module objectSee Also1, 8, 8$gvulkan1VkSemaphore - Opaque handle to a semaphore objectSee Also, :, e, f, , 7, 8, h9, h:, 5A, , 6, 6#, h,, -hvulkan-VkSampler - Opaque handle to a sampler objectSee Also ,  , \, 7, 7 ivulkan4VkRenderPass - Opaque handle to a render pass objectSee Also, 0@, 1G,  *, 0, ^, , 0, 0jvulkan;An opaque type for representing pointers to VkQueue handleskvulkan)VkQueue - Opaque handle to a queue objectSee Also5., ?/, 0, 1, :2, 3, 4, , 5, 5, 56lvulkan2VkQueryPool - Opaque handle to a query pool objectSee Also 7, 8,  ,  9, :,  ;, f, g,  x, 4, 4, 4, X<, =mvulkan<VkPipelineLayout - Opaque handle to a pipeline layout objectSee Also1, D, 1G, h, $, %,  l,  >, o, ?, 3, 3nvulkan:VkPipelineCache - Opaque handle to a pipeline cache objectSee Also12, 1/, 2i, 0, 1, 2, 2j, 2@ovulkan/VkPipeline - Opaque handle to a pipeline objectSee Also1, B, C, 1G, H, , , , $, %,  m, n, , 12, 1/, 0, 1, 1, A, B, C, |npvulkanDAn opaque type for representing pointers to VkPhysicalDevice handlesqvulkan<VkPhysicalDevice - Opaque handle to a physical device objectSee AlsoG, G, D,  , , &E, ,F, G,  H, I, J, K, L, M, N, O, P, Q, R, S, KT, U, IV, W, , MX, Y,  Z, O[, \,  , O, ,  , O, ],  ^, O_, `, v, a,  , Ob, c, d,  e, Of, g, :, Oh, i, j, k, l, m, n, o, p, q,  , r, s, t, u, v, w, xrvulkan>An opaque type for representing pointers to VkInstance handlessvulkan0VkInstance - Opaque handle to an instance objectSee Also, , , , , , ,  , , , , , , , , , y,  , ,  , %, Gz, {,  H,  , |tvulkan3VkImageView - Opaque handle to an image view objectSee Also , 0@, \, b), , +, +, }uvulkan*VkImage - Opaque handle to an image objectSee AlsoB, , /R, NS, NV, +[, Cp, :~, :, .,  ,  ,  ,  ,  ,  ,  , *, *, , ., :, *, vvulkan5VkFramebuffer - Opaque handle to a framebuffer objectSee Also,  *, 0, 0wvulkan)VkFence - Opaque handle to a fence objectSee Also, :, ;, _, `, , ', ', ', :2, 5, ), *, ', 'xvulkan*VkEvent - Opaque handle to an event objectSee Also ,  ,  , %, %, %, %, %yvulkan<An opaque type for representing pointers to VkDevice handleszvulkan+VkDevice - Opaque handle to a device objectSee Also, , , , , ,  , -, , , ., B, , ., B, , , , , , , , , , ,  , 12, ,  ,  , D, ,  , %, ', 0, 1/, *, +, , 2i, 3, 4, 0, 1, 0, ^, , 7, S, , 6, 8, , , , , , , ,  ,  ,  ,   , ,  ,  , D, ,  , %, ', 0, *, +, , 1, 2, 3, 4, 0, 7 , S!, ", 6#, 8$, &, ', 5, , -, ,  , -(, , , , , , ], , , ., N, , ], , , , , Q, , , E, , , , , -, ]a, ,  , 5., ?/, %, , ', , , , ., N, , :, N, , *, }, , , , c, d, , , e, , , 2j, , , , 4, A, B, C, , 0, h,, -, , , |n, , , , , , , , , , -, -, 2@, , ), *, , , ,  ,  , %, ', X<, =, , , %, , m , h, , k, l, , -, D, \,  ], ', h, , h{vulkan8VkDeviceMemory - Opaque handle to a device memory objectSee Also, B, B, ], -l, s, t, u, :, :, W, X, -, ., ., -(, -, , -, -|vulkanGVkDescriptorSetLayout - Opaque handle to a descriptor set layout objectSee Also , D, 3,  ,  }vulkan:VkDescriptorSet - Opaque handle to a descriptor set objectSee Also ,  Z,  ,  l,  , D, \~vulkan<VkDescriptorPool - Opaque handle to a descriptor pool objectSee Also ,  ,  ,  ,  vulkan6VkCommandPool - Opaque handle to a command pool objectSee Also,  ,   , ,  , k, lvulkanCAn opaque type for representing pointers to VkCommandBuffer handlesvulkan:VkCommandBuffer - Opaque handle to a command buffer objectSee Also5A, , , , ,  7, 8,  , ^, , ,  l,  ,  m, n, , ,  ,  , , y, ,  |,  ,  , z, , ,  _,  ,  ,  , ,  , , , ,  , E~, ,  ,  ,  ,  , , , ,  , , , , , , , , , ,  9, :,  , ^, , ,  ,  ,  , ,  , ^, ,  , {,  >, o, ?,  ,  ;,  ,  , , ,  ,  , E, , ,  , , ,  , , , , ,  ,  ,  ,  ,  , , , , , ,  ,  , f, g, ,  x, d, , vulkan4VkBufferView - Opaque handle to a buffer view objectSee Also Z, ,  vulkan+VkBuffer - Opaque handle to a buffer objectSee AlsoB, ], /, N, , , ,  , B, D, F, , Cp, :, , ., ,  , ,  , , ,  _,  ,  ,  ,  ,  , , , ,  , , , , , , , ,  , , ,  , , ,  , .Af gh ijklm no pqrs! t uvwxyz{|}~As! rqpzykj{ut f o m h }|~wgxlvinNone'"#%&'-./189;=>?FHIMSUVX_dghklmq"vulkan^VkWin32KeyedMutexAcquireReleaseInfoNV - use Windows keyex mutex mechanism to synchronize workValid Usage (Implicit)sType must be $If  acquireCount is not 0,  pAcquireSyncs must( be a valid pointer to an array of  acquireCount valid { handlesIf  acquireCount is not 0,  pAcquireKeys must( be a valid pointer to an array of  acquireCount uint64_t valuesIf  acquireCount is not 0, pAcquireTimeoutMilliseconds must( be a valid pointer to an array of  acquireCount uint32_t valuesIf  releaseCount is not 0,  pReleaseSyncs must( be a valid pointer to an array of  releaseCount valid { handlesIf  releaseCount is not 0,  pReleaseKeys must( be a valid pointer to an array of  releaseCount uint64_t valuesBoth of the elements of  pAcquireSyncs, and the elements of  pReleaseSyncs7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same )See Also{, vulkan pAcquireSyncs is a pointer to an array of {9 objects which were imported from Direct3D 11 resources.vulkan pAcquireKeys is a pointer to an array of mutex key values to wait for prior to beginning the submitted work. Entries refer to the keyed mutex associated with the corresponding entries in  pAcquireSyncs.vulkanpAcquireTimeoutMillisecondsc is a pointer to an array of timeout values, in millisecond units, for each acquire specified in  pAcquireKeys.vulkan pReleaseSyncs is a pointer to an array of {9 objects which were imported from Direct3D 11 resources.vulkan pReleaseKeys is a pointer to an array of mutex key values to set when the submitted work has completed. Entries refer to the keyed mutex associated with the corresponding entries in  pReleaseSyncs.  None'"#%&'-./189;=>?FHIMSUVX_dghklmq$ vulkanDVkCoarseSampleOrderTypeNV - Shading rate image sample ordering typesSee Also, vulkanLVkShadingRatePaletteNV - Structure specifying a single shading rate paletteValid Usage (Implicit)See Also, , vulkan{VkPipelineViewportShadingRateImageStateCreateInfoNV - Structure specifying parameters controlling shading rate image usage Description"If this structure is not present, shadingRateImageEnable is considered to be 8, and the shading rate image and palettes are not used. Valid Usage If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  viewportCount must be 0 or 1 viewportCount must be less than or equal to  _:: maxViewportsIf shadingRateImageEnable is ,  viewportCount must be equal to the  viewportCount member of 1If no element of the pDynamicStates member of  pDynamicState is +, pShadingRatePalettes must( be a valid pointer to an array of  viewportCount  structuresValid Usage (Implicit)sType must be If  viewportCount is not 0, and pShadingRatePalettes is not NULL, pShadingRatePalettes must( be a valid pointer to an array of  viewportCount valid  structuresSee Also, , vulkanVkPipelineViewportCoarseSampleOrderStateCreateInfoNV - 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 +t, the contents of this structure (if present) are ignored, and the coverage sample order is instead specified by . Valid UsageIf sampleOrderType is not , customSamplerOrderCount must be 0 The array pCustomSampleOrders mustC not contain two structures with matching values for both the  shadingRate and  sampleCount membersValid Usage (Implicit)sType must be sampleOrderType must be a valid  valueIf customSampleOrderCount is not 0, pCustomSampleOrders must( be a valid pointer to an array of customSampleOrderCount valid  structuresSee Also, , vulkanVkPhysicalDeviceShadingRateImagePropertiesNV - Structure describing shading rate image limits that can be supported by an implementationMembersThe members of the X 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  structure is included in the pNext chain of O9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Also, vulkanVkPhysicalDeviceShadingRateImageFeaturesNV - Structure describing shading rate image features that can be supported by an implementationMembersThe members of the , 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  structure is included in the pNext chain of OJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of    to enable features.Valid Usage (Implicit)See Also, vulkancVkCoarseSampleOrderCustomNV - Structure specifying parameters controlling shading rate image usage Description-When using a custom sample ordering, element i in pSampleLocationst specifies a specific pixel and per-pixel coverage sample number that corresponds to the coverage sample numbered i in the multi-pixel fragment. Valid Usage shadingRate mustI be a shading rate that generates fragments with more than one pixel sampleCount must1 correspond to a sample count enumerated in !- whose corresponding bit is set in  _::$framebufferNoAttachmentsSampleCountssampleLocationCount must! be equal to the product of  sampleCount, the fragment width for  shadingRate#, and the fragment height for  shadingRatesampleLocationCount must, be less than or equal to the value of ::shadingRateMaxCoarseSamples The array pSampleLocations mustJ contain exactly one entry for every combination of valid values for pixelX, pixelY , and sample in the structure Valid Usage (Implicit) shadingRate must be a valid  valuepSampleLocations must( be a valid pointer to an array of sampleLocationCount  structuressampleLocationCount must be greater than 0See Also, , , vulkan`VkCoarseSampleLocationNV - Structure specifying parameters controlling shading rate image usage Valid UsageSee AlsovulkanDVkShadingRatePaletteEntryNV - 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 Also, vulkansampleOrderType\ specifies the mechanism used to order coverage samples in fragments larger than one pixel.vulkanpCustomSampleOrders is a pointer to an array of customSampleOrderCount  structures, each of which specifies the coverage sample order for a single combination of fragment area and coverage sample count.vulkan shadingRate is a shading rate palette entry that identifies the fragment width and height for the combination of fragment area and per-pixel coverage sample count to control.vulkan sampleCount{ identifies the per-pixel coverage sample count for the combination of fragment area and coverage sample count to control.vulkanpSampleLocations is a pointer to an array of K structures specifying the location of each sample in the custom ordering.vulkanpixelX must3 be less than the width (in pixels) of the fragmentvulkanpixelY must4 be less than the height (in pixels) of the fragmentvulkansample mustU be less than the number of coverage samples in each pixel belonging to the fragmentvulkanshadingRateTexelSizey indicates the width and height of the portion of the framebuffer corresponding to each texel in the shading rate image.vulkanshadingRatePaletteSizeW indicates the maximum number of palette entries supported for the shading rate image.vulkanshadingRateMaxCoarseSamples4 specifies the maximum number of coverage samples supported in a single fragment. If the product of the fragment size derived from the base shading rate and the number of coverage samples per pixel exceeds this limit, the final shading rate will be adjusted so that its product does not exceed the limit.vulkanshadingRateImage indicates that the implementation supports the use of a shading rate image to derive an effective shading rate for fragment processing. It also indicates that the implementation supports the  ShadingRateNV SPIR-V execution mode.vulkanshadingRateCoarseSampleOrder indicates that the implementation supports a user-configurable ordering of coverage samples in fragments larger than one pixel.vulkanshadingRateImageEnableR specifies whether shading rate image and palettes are used during rasterization.vulkanpShadingRatePalettes is a pointer to an array of { structures defining the palette for each viewport. If the shading rate palette state is dynamic, this member is ignored.vulkanpShadingRatePaletteEntries must$ be a valid pointer to an array of shadingRatePaletteEntryCount valid  valuesvulkan specifies that coverage samples will be ordered sequentially, sorted first by coverage sample number 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 coverage sample number.vulkanu specifies that coverage samples will be ordered according to the array of custom orderings provided in either the pCustomSampleOrders member of  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 Parameters commandBufferD is the command buffer into which the command will be recorded. imageViewA is an image view handle specifying the shading rate image.  imageView may be set to .T, which is equivalent to specifying a view of an image filled with zero values. imageLayout@ is the layout that the image subresources accessible from  imageView4 will be in when the shading rate image is accessed. Valid Usage The  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature must be enabledIf  imageView is not ., it must be a valid t handle of type ( or (If  imageView is not ., it must have a format of If  imageView is not ., it must have been created with a usage value including If  imageView is not .,  imageLayout must match the actual J* of each subresource accessible from  imageView- at the time the subresource is accessedIf  imageView is not .,  imageLayout must be  @ or  IValid Usage (Implicit) commandBuffer must be a valid  handleIf  imageView is not .,  imageView must be a valid t handle imageLayout must be a valid J value commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operationsBoth of  commandBuffer, and  imageView7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, J, tvulkan[vkCmdSetViewportShadingRatePaletteNV - Set shading rate image palettes on a command buffer Parameters commandBufferD is the command buffer into which the command will be recorded. firstViewport^ is the index of the first viewport whose shading rate palette is updated by the command. viewportCountX is the number of viewports whose shading rate palettes are updated by the command.pShadingRatePalettes" is a pointer to an array of 8 structures defining the palette for each viewport. Valid Usage The  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImageshading rate image feature must be enabled firstViewport must be less than  _:: maxViewports The sum of  firstViewport and  viewportCount must be between 1 and  _:: maxViewports, inclusive If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  firstViewport must be 0 If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  viewportCount must be 1Valid Usage (Implicit) commandBuffer must be a valid  handlepShadingRatePalettes must( be a valid pointer to an array of  viewportCount valid  structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations viewportCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) that  commandBuffer was allocated from must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type  Primary Secondary  Both  Graphics  See Also, vulkanXvkCmdSetCoarseSampleOrderNV - Set sample order for coarse fragments on a command buffer Parameters commandBufferD is the command buffer into which the command will be recorded.sampleOrderType` specifies the mechanism used to order coverage samples in fragments larger than one pixel.customSampleOrderCount\ specifies the number of custom sample orderings to use when ordering coverage samples.pCustomSampleOrders" is a pointer to an array of  structures, each of which specifies the coverage sample order for a single combination of fragment area and coverage sample count. DescriptionIf sampleOrderType is t, the coverage sample order used for any combination of fragment area and coverage sample count not enumerated in pCustomSampleOrders% will be identical to that used for . Valid UsageIf sampleOrderType is not , customSamplerOrderCount must be 0 The array pCustomSampleOrders mustC not contain two structures with matching values for both the  shadingRate and  sampleCount membersValid Usage (Implicit) commandBuffer must be a valid  handlesampleOrderType must be a valid  valueIf customSampleOrderCount is not 0, pCustomSampleOrders must( be a valid pointer to an array of customSampleOrderCount valid  structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) 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, , 9INone'"#%&'-./189;=>?FHIMSUVX_dghklmq&;vulkanVVkPhysicalDeviceMeshShaderPropertiesNV - Structure describing mesh shading propertiesMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of O9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Alsovulkan}VkPhysicalDeviceMeshShaderFeaturesNV - Structure describing mesh shading features that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of OK, it is filled with a value indicating whether the feature is supported.  can also be included in pNext chain of    to enable the features.Valid Usage (Implicit)See Also, vulkan[VkDrawMeshTasksIndirectCommandNV - Structure specifying a mesh tasks draw indirect command DescriptionThe members of = have the same meaning as the similarly named parameters of /. Valid UsageSee Also0vulkan taskCount must be less than or equal to ::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.+vulkan taskShader6 indicates whether the task shader stage is supported.,vulkan meshShader6 indicates whether the mesh shader stage is supported./vulkan0vkCmdDrawMeshTasksNV - Draw mesh task work items Parameters commandBufferD is the command buffer into which the command will be recorded. taskCountt is the number of local workgroups to dispatch in the X dimension. Y and Z dimension are implicitly set to one. firstTask. is the X component of the first workgroup ID. Description@When the command is executed, a global workgroup consisting of  taskCount local workgroups is assembled. Valid UsageIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain nIf 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 nIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any )| being sampled with " as a result of this command must have a (E and format that supports cubic filtering, as specified by <:: filterCubic returned by OAny )| being sampled with + with a reduction mode of either  or " as a result of this command must have a (i and format that supports cubic filtering together with minmax filtering, as specified by <::filterCubicMinmax returned by OAny )x created with a *::flags containing * sampled as a result of this command must only be sampled using a  of  For each set n% that is statically used by the )N bound to the pipeline bind point used by this command, a descriptor set must have been bound to 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???;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 )~; that is compatible for push constants, with the )~! used to create the current ), as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via  l, must2 be valid if they are statically used by the ); bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the )o object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the )f object bound to the pipeline bind point used by this command, since that pipeline was boundIf the )S object bound to the pipeline bind point used by this command accesses a )> object that uses unnormalized coordinates, that sampler must% not be used to sample from any )x with a )| of the type (, (, (, ( or (, in any shader stageIf the )S object bound to the pipeline bind point used by this command accesses a )> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj( in their name, in any shader stageIf the )S object bound to the pipeline bind point used by this command accesses a )> 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 stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the )f object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the )f object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the )C object bound to the pipeline bind point used by this command must! not be a protected resourceThe 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 1G1 structure specified when creating the ) bound to -The subpass index of the current render pass must be equal to the subpass member of the 1G1 structure specified when creating the ) bound to 3Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor setGImage subresources used as attachments in the current render pass mustL not be accessed in any way other than as an attachment by this commandjIf the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to R::maxMultiviewInstanceIndex5If the bound graphics pipeline was created with ::sampleLocationsEnable set to S and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit set taskCount must be less than or equal to ::maxDrawMeshTasksCountValid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations This command must0 only be called inside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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 Also0vulkanWvkCmdDrawMeshTasksIndirectNV - Issue an indirect mesh tasks draw into a command buffer Parameters commandBuffer? is the command buffer into which the command is recorded.buffer* is the buffer containing draw parameters.offset is the byte offset into buffer where parameters begin. drawCount( is the number of draws to execute, and can be zero.strideD is the byte stride between successive sets of draw parameters. Description0 behaves similarly to /U except that the parameters are read by the device from a buffer during execution.  drawCount@ draws are executed by the command, with parameters taken from buffer starting at offset and increasing by strideY bytes for each successive draw. The parameters of each draw are encoded in an array of  structures. If  drawCount is less than or equal to one, stride is ignored. Valid UsageIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain n 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 nIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any )| being sampled with " as a result of this command must have a (E and format that supports cubic filtering, as specified by <:: filterCubic returned by OAny )| being sampled with + with a reduction mode of either  or " as a result of this command must have a (i and format that supports cubic filtering together with minmax filtering, as specified by <::filterCubicMinmax returned by OAny )x created with a *::flags containing * sampled as a result of this command must only be sampled using a  of  For each set n% that is statically used by the )N bound to the pipeline bind point used by this command, a descriptor set must have been bound to 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???;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 )~; that is compatible for push constants, with the )~! used to create the current ), as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via  l, must2 be valid if they are statically used by the ); bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the )o object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the )f object bound to the pipeline bind point used by this command, since that pipeline was boundIf the )S object bound to the pipeline bind point used by this command accesses a )> object that uses unnormalized coordinates, that sampler must% not be used to sample from any )x with a )| of the type (, (, (, ( or (, in any shader stageIf the )S object bound to the pipeline bind point used by this command accesses a )> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj( in their name, in any shader stageIf the )S object bound to the pipeline bind point used by this command accesses a )> 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 stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the )f object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the )f object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the )C object bound to the pipeline bind point used by this command must! not be a protected resourceThe 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 1G1 structure specified when creating the ) bound to -The subpass index of the current render pass must be equal to the subpass member of the 1G1 structure specified when creating the ) bound to 3Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor setGImage subresources used as attachments in the current render pass mustL not be accessed in any way other than as an attachment by this commandjIf the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to R::maxMultiviewInstanceIndex5If the bound graphics pipeline was created with ::sampleLocationsEnable set to S and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit setIf buffer is non-sparse then it must< be bound completely and contiguously to a single )v objectbuffer must! have been created with the }  bit setoffset must be a multiple of 4 commandBuffer must" not be a protected command buffer If the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirectmulti-draw indirect feature is not enabled,  drawCount must be 0 or 1 drawCount must be less than or equal to  _::maxDrawIndirectCountIf  drawCount is greater than 1, stride must be a multiple of 4 and must" be greater than or equal to sizeof()If  drawCount is equal to 1, (offset + sizeof()) must+ be less than or equal to the size of bufferIf  drawCount is greater than 1, (stride ( drawCount - 1) + offset + sizeof()) must+ be less than or equal to the size of bufferValid Usage (Implicit) commandBuffer must be a valid  handlebuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations This command must0 only be called inside of a render pass instanceBoth of buffer, and  commandBuffer 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, , 1vulkanrvkCmdDrawMeshTasksIndirectCountNV - Perform an indirect mesh tasks draw with the draw count sourced from a buffer Parameters commandBuffer? is the command buffer into which the command is recorded.buffer* is the buffer containing draw parameters.offset is the byte offset into buffer where parameters begin. countBuffer) is the buffer containing the draw count.countBufferOffset is the byte offset into  countBuffer" where the draw count begins. 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.strideD is the byte stride between successive sets of draw parameters. Description1 behaves similarly to 0 except that the draw count is read by the device from a buffer during execution. The command will read an unsigned 32-bit integer from  countBuffer located at countBufferOffset! and use this as the draw count. Valid UsageIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain n#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 nIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any )| being sampled with " as a result of this command must have a (E and format that supports cubic filtering, as specified by <:: filterCubic returned by OAny )| being sampled with + with a reduction mode of either  or " as a result of this command must have a (i and format that supports cubic filtering together with minmax filtering, as specified by <::filterCubicMinmax returned by OAny )x created with a *::flags containing * sampled as a result of this command must only be sampled using a  of  For each set n% that is statically used by the )N bound to the pipeline bind point used by this command, a descriptor set must have been bound to 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???;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 )~; that is compatible for push constants, with the )~! used to create the current ), as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via  l, must2 be valid if they are statically used by the ); bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the )o object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the )f object bound to the pipeline bind point used by this command, since that pipeline was boundIf the )S object bound to the pipeline bind point used by this command accesses a )> object that uses unnormalized coordinates, that sampler must% not be used to sample from any )x with a )| of the type (, (, (, ( or (, in any shader stageIf the )S object bound to the pipeline bind point used by this command accesses a )> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj( in their name, in any shader stageIf the )S object bound to the pipeline bind point used by this command accesses a )> 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 stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the )f object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the )f object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the )C object bound to the pipeline bind point used by this command must! not be a protected resourceThe 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 1G1 structure specified when creating the ) bound to -The subpass index of the current render pass must be equal to the subpass member of the 1G1 structure specified when creating the ) bound to 3Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor setGImage subresources used as attachments in the current render pass mustL not be accessed in any way other than as an attachment by this commandjIf the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to R::maxMultiviewInstanceIndex5If the bound graphics pipeline was created with ::sampleLocationsEnable set to S and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit setIf buffer is non-sparse then it must< be bound completely and contiguously to a single )v objectbuffer must! have been created with the }  bit setoffset must be a multiple of 4 commandBuffer must" not be a protected command bufferIf  countBuffer is non-sparse then it must< be bound completely and contiguously to a single )v object countBuffer must! have been created with the }  bit setcountBufferOffset must be a multiple of 4The count stored in  countBuffer must be less than or equal to  _::maxDrawIndirectCountstride must be a multiple of 4 and must" be greater than or equal to sizeof()If  maxDrawCount is greater than or equal to 1, (stride ( maxDrawCount - 1) + offset + sizeof()) must+ be less than or equal to the size of bufferIf the count stored in  countBuffer is equal to 1, (offset + sizeof()) must+ be less than or equal to the size of bufferIf the count stored in  countBuffer is greater than 1, (stride ( drawCount - 1) + offset + sizeof()) must+ be less than or equal to the size of bufferValid Usage (Implicit) commandBuffer must be a valid  handlebuffer must be a valid  handle countBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations This command must0 only be called inside of a render pass instanceEach of buffer,  commandBuffer, and  countBuffer mustD have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, ,  !"#$%&'()*+,-./01/01*+, !"#$%&'().-None'"#%&'-./189;=>?FHIMSUVX_dghklmq&vulkan^VkQueueFamilyCheckpointPropertiesNV - return structure for queue family checkpoint info queryValid Usage (Implicit)See AlsoR, vulkanHVkCheckpointDataNV - return structure for command buffer checkpoint dataValid Usage (Implicit)2Note that the stages at which a checkpoint marker can- be executed are implementation-defined and can be queried by calling Of.See AlsoS, , KDvulkanstageF indicates which pipeline stage the checkpoint marker data refers to.EvulkanpCheckpointMarkerN contains the value of the last checkpoint marker executed in the stage that stage refers to.GvulkancheckpointExecutionStageMaskb is a mask indicating which pipeline stages the implementation can execute checkpoint markers in.JvulkanEvkCmdSetCheckpointNV - insert diagnostic checkpoint in command stream Parameters commandBuffer3 is the command buffer that will receive the markerpCheckpointMarkerZ is an opaque application-provided value that will be associated with the checkpoint.Valid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must7 support graphics, compute, or transfer operationsHost SynchronizationHost 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@vkGetQueueCheckpointDataNV - retrieve diagnostic checkpoint data Parametersqueue is the kB object the caller would like to retrieve checkpoint data forpCheckpointDataCount{ is a pointer to an integer related to the number of checkpoint markers available or queried, as described below.pCheckpointData is either NULL" or a pointer to an array of  structures. DescriptionIf pCheckpointData is NULLB, then the number of checkpoint markers available is returned in pCheckpointDataCount. Otherwise, pCheckpointDataCount mustG point to a variable set by the user to the number of elements in the pCheckpointDataf array, and on return the variable is overwritten with the number of structures actually written to pCheckpointData.If pCheckpointDataCountC is less than the number of checkpoint markers available, at most pCheckpointDataCount structures will be written. Valid UsageThe device that queue belongs to must be in the lost stateValid Usage (Implicit)queue must be a valid k handlepCheckpointDataCount must be a valid pointer to a uint32_t valueIf the value referenced by pCheckpointDataCount is not 0 , and pCheckpointData is not NULL, pCheckpointData must( be a valid pointer to an array of pCheckpointDataCount  structuresSee Also, k FGCEDABHIJK JKFGCEDBIAHNone'"#%&'-./189;=>?FHIMSUVX_dghklmq& vulkan[VkDedicatedAllocationMemoryAllocateInfoNV - Specify a dedicated memory allocation resource Valid UsageAt least one of image and buffer must be .If image is not ., the image must have been created with ::dedicatedAllocation equal to If buffer is not . , the buffer must" have been created with ::dedicatedAllocation equal to If image is not ., -n::allocationSize must equal the .::size of the imageIf buffer is not ., -n::allocationSize must equal the .::size of the bufferIf image is not . and -nC defines a memory import operation, the memory being imported must/ also be a dedicated image allocation and image mustC be identical to the image associated with the imported memoryIf buffer is not . and -nC defines a memory import operation, the memory being imported must0 also be a dedicated buffer allocation and buffer mustD be identical to the buffer associated with the imported memoryValid Usage (Implicit)sType must be If image is not ., image must be a valid u handleIf buffer is not ., buffer must be a valid  handleBoth of buffer, and image7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same )See Also, u, vulkangVkDedicatedAllocationImageCreateInfoNV - Specify that an image is bound to a dedicated memory resource DescriptionNote\Using a dedicated allocation for color and depth/stencil attachments or other large images may% improve performance on some devices. Valid UsageIf dedicatedAllocation is , *::flags must not include  ,  , or  Valid Usage (Implicit)sType must be See Also, vulkanhVkDedicatedAllocationBufferCreateInfoNV - Specify that a buffer is bound to a dedicated memory resourceValid Usage (Implicit)See Also, Yvulkanimage is .= or a handle of an image which this memory will be bound to.Zvulkanbuffer is .= or a handle of a buffer which this memory will be bound to.\vulkandedicatedAllocationL specifies whether the buffer will have a dedicated allocation bound to it.^vulkandedicatedAllocationK specifies whether the image will have a dedicated allocation bound to it.XZY]^[\VW_`]^[\XZYW`V_None'"#%&'-./189;=>?FHIMSUVX_dghklmq';vulkannVkPipelineCoverageReductionStateCreateInfoNV - Structure specifying parameters controlling coverage reduction Description^If this structure is not present, the default coverage reduction mode is inferred as follows:If the VK_NV_framebuffer_mixed_samples1 extension is enabled, then it is as if the coverageReductionMode is .If the VK_AMD_mixed_attachment_samples1 extension is enabled, then it is as if the coverageReductionMode is .If both VK_NV_framebuffer_mixed_samples and VK_AMD_mixed_attachment_samplesX are enabled, then the default coverage reduction mode is implementation-dependent.Valid Usage (Implicit)sType must be flags must be 0coverageReductionMode must be a valid r valueSee Alsor, t, vulkanVkPhysicalDeviceCoverageReductionModeFeaturesNV - Structure describing the coverage reduction mode features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of OJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of    to enable the feature.Valid Usage (Implicit)See Also, vulkancVkFramebufferMixedSamplesCombinationNV - Structure specifying a supported sample count combinationValid Usage (Implicit)See Alsor, [, Z, , rvulkan?VkCoverageReductionModeNV - Specify the coverage reduction modeSee Also, tvulkanGVkPipelineCoverageReductionStateCreateFlagsNV - Reserved for future use DescriptiontQ is a bitmask type for setting a mask, but is currently reserved for future use.See AlsowvulkancoverageReductionMode is a r/ value specifying the coverage reduction mode.xvulkanrasterizationSamplesM specifies the number of rasterization samples in the supported combination.yvulkandepthStencilSamples 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.zvulkan 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 r value controlling how the color sample mask% is generated from the coverage mask.vulkancoverageReductionModeO indicates whether the implementation supports coverage reduction modes. See  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-coverage-reductionCoverage Reduction.vulkan: In this mode, only the first M raster samples are associated with the color samples such that raster sample i maps to color sample i, where M is the number of color samples.vulkan: In this mode, there is an implementation-dependent association of each raster sample to a color sample. The reduced color sample mask is computed such that the bit for each color sample is 1 if any of the associated bits in the fragment s coverage is on, and 0 otherwise.vulkannvkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV - Query supported sample count combinations ParametersphysicalDeviceI is the physical device from which to query the set of combinations.pCombinationCountp is a pointer to an integer related to the number of combinations available or queried, as described below. pCombinations is either NULL" or a pointer to an array of  values, indicating the supported combinations of coverage reduction mode, rasterization samples, and color, depth, stencil attachment sample counts. 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 L will be returned instead of Q> to indicate that not all the supported values were returned.Valid Usage (Implicit)physicalDevice must be a valid q handlepCombinationCount must be a valid pointer to a uint32_t valueIf the value referenced by pCombinationCount is not 0 , and  pCombinations is not NULL,  pCombinations must( be a valid pointer to an array of pCombinationCount  structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, q{|}~vwxyzpqrstu~{|}vwxyztursqpNone'"#%&'-./189;=>?FHIMSUVX_dghklmq'S 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 O9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Also\, vulkanVkPhysicalDeviceCooperativeMatrixFeaturesNV - Structure describing cooperative matrix features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of OJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of    to enable features.Valid Usage (Implicit)See Also, vulkanUVkCooperativeMatrixPropertiesNV - Structure specifying cooperative matrix properties DescriptionKIf some types are preferred over other types (e.g. for performance), they should+ appear earlier in the list enumerated by .At least one entry in the list must& have power of two values for all of MSize, KSize, and NSize.Valid Usage (Implicit)See Also, , , vulkanDVkComponentTypeNV - Specify SPIR-V cooperative matrix component typeSee Alsovulkan VkScopeNV - Specify SPIR-V scope Description5All enum values match the corresponding SPIR-V value.See AlsovulkanMSize/ is the number of rows in matrices A, C, and D.vulkanNSize. is the number of columns in matrices B, C, D.vulkanKSize; is the number of columns in matrix A and rows in matrix B.vulkanAType must be a valid  valuevulkanBType must be a valid  valuevulkanCType must be a valid  valuevulkanDType must be a valid  valuevulkanscope must be a valid  valuevulkan cooperativeMatrixSupportedStages is a bitfield of "sW describing the shader stages that cooperative matrix instructions are supported in.  cooperativeMatrixSupportedStages will have the "t: bit set if any of the physical device s queues support Vp.vulkancooperativeMatrix1 indicates that the implementation supports the CooperativeMatrixNV SPIR-V capability.vulkan#cooperativeMatrixRobustBufferAccessM indicates that the implementation supports robust buffer access for SPIR-V OpCooperativeMatrixLoadNV and OpCooperativeMatrixStoreNV instructions.vulkan corresponds to SPIR-V  OpTypeInt 64 0.vulkan corresponds to SPIR-V  OpTypeInt 32 0.vulkan corresponds to SPIR-V  OpTypeInt 16 0.vulkan corresponds to SPIR-V  OpTypeInt 8 0.vulkan corresponds to SPIR-V  OpTypeInt 64 1.vulkan corresponds to SPIR-V  OpTypeInt 32 1.vulkan corresponds to SPIR-V  OpTypeInt 16 1.vulkan corresponds to SPIR-V  OpTypeInt 8 1.vulkan corresponds to SPIR-V  OpTypeFloat 64.vulkan corresponds to SPIR-V  OpTypeFloat 32.vulkan corresponds to SPIR-V  OpTypeFloat 16.vulkan corresponds to SPIR-V  QueueFamily scope.vulkan corresponds to SPIR-V Subgroup scope.vulkan corresponds to SPIR-V  Workgroup scope.vulkan corresponds to SPIR-V ) scope.vulkan}vkGetPhysicalDeviceCooperativeMatrixPropertiesNV - Returns properties describing what cooperative matrix types are supported ParametersphysicalDevice is the physical device.pPropertyCountm is a pointer to an integer related to the number of cooperative matrix properties available or queried. pProperties is either NULL" or a pointer to an array of  structures. 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, L will be returned instead of QV, to indicate that not all the available cooperative matrix properties were returned.Valid Usage (Implicit)physicalDevice must be a valid q handlepPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount  structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, q)8None'"#%&'-./189;=>?FHIMSUVX_dghklmq'vulkan6VkViewportWScalingNV - Structure specifying a viewportSee Also, vulkanVkPipelineViewportWScalingStateCreateInfoNV - Structure specifying parameters of a newly created pipeline viewport W scaling stateValid Usage (Implicit)See Also, , vulkanviewportWScalingEnable controls whether viewport W scaling is enabled.vulkanpViewportWScalings 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 Parameters commandBufferD is the command buffer into which the command will be recorded. firstViewportU is the index of the first viewport whose parameters are updated by the command. viewportCountM is the number of viewports whose parameters are updated by the command.pViewportWScalings" is a pointer to an array of + structures specifying viewport parameters. Description0The viewport parameters taken from element i of pViewportWScalings3 replace the current state for the viewport index  firstViewport + i, for i in [0,  viewportCount). Valid Usage firstViewport must be less than  _:: maxViewports The sum of  firstViewport and  viewportCount must be between 1 and  _:: maxViewports, inclusiveValid Usage (Implicit) commandBuffer must be a valid  handlepViewportWScalings must( be a valid pointer to an array of  viewportCount  structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations viewportCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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,   None'"#%&'-./189;=>?FHIMSUVX_dghklmq' vulkanRVkImageViewHandleInfoNVX - Structure specifying the image view for handle queries Valid UsagedescriptorType must be ,, ,, or ,sampler must be a valid h if descriptorType is ,If descriptorType is , or ,, the image that  imageView was created from must& have been created with the  usage bit setIf descriptorType is ,, the image that  imageView was created from must& have been created with the  usage bit setValid Usage (Implicit)sType must be pNext must be NULL imageView must be a valid t handledescriptorType must be a valid   valueIf sampler is not ., sampler must be a valid h handleBoth of  imageView, and sampler7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same zSee Also , t, h, , vulkanYVkImageViewAddressPropertiesNVX - Structure specifying the image view for handle queriesValid Usage (Implicit)See Also, , , 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 type Parametersdevice0 is the logical device that owns the image view.pInfo6 describes the image view to query and type of handle.Valid Usage (Implicit)See Alsoz, vulkanBvkGetImageViewAddressNVX - Get the device address of an image view Parametersdevice0 is the logical device that owns the image view. imageView is a handle to the image view. pPropertiesA contains the device address and size when the call returns. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure?See Alsoz, t, None'"#%&'-./189;=>?FHIMSUVX_dghklmq'ԪvulkancVkWin32KeyedMutexAcquireReleaseInfoKHR - Use the Windows keyed mutex mechanism to synchronize work Valid UsageEach member of  pAcquireSyncs and  pReleaseSyncs must9 be a device memory object imported by setting c:: handleType to < or <Valid Usage (Implicit)sType must be 7If  acquireCount is not 0,  pAcquireSyncs must( be a valid pointer to an array of  acquireCount valid { handlesIf  acquireCount is not 0,  pAcquireKeys must( be a valid pointer to an array of  acquireCount uint64_t valuesIf  acquireCount is not 0, pAcquireTimeouts must( be a valid pointer to an array of  acquireCount uint32_t valuesIf  releaseCount is not 0,  pReleaseSyncs must( be a valid pointer to an array of  releaseCount valid { handlesIf  releaseCount is not 0,  pReleaseKeys must( be a valid pointer to an array of  releaseCount uint64_t valuesBoth of the elements of  pAcquireSyncs, and the elements of  pReleaseSyncs7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same )See Also{, vulkan pAcquireSyncs is a pointer to an array of {9 objects which were imported from Direct3D 11 resources.vulkan pAcquireKeys is a pointer to an array of mutex key values to wait for prior to beginning the submitted work. Entries refer to the keyed mutex associated with the corresponding entries in  pAcquireSyncs.vulkan pReleaseSyncs is a pointer to an array of {9 objects which were imported from Direct3D 11 resources.vulkan pReleaseKeys is a pointer to an array of mutex key values to set when the submitted work has completed. Entries refer to the keyed mutex associated with the corresponding entries in  pReleaseSyncs.    None'"#%&'-./189;=>?FHIMSUVX_dghklmq'ThvulkaniVkPipelineLibraryCreateInfoKHR - Structure specifying pipeline libraries to use when creating a pipeline Valid UsageEach element of  pLibraries must have been created with cValid Usage (Implicit)sType must be  pNext must be NULLIf  libraryCount is not 0,  pLibraries must( be a valid pointer to an array of  libraryCount valid o handlesSee Alsoo, $, vulkan pLibrariesD is an array of pipeline libraries to use when creating a pipeline.h h None'"#%&'-./189;=>?FHIMSUVX_dghklmq(cbvulkan3VkPipelineInfoKHR - Structure describing a pipelineValid Usage (Implicit)See Alsoo, , KcvulkaneVkPipelineExecutableStatisticKHR - Structure describing a compile-time pipeline executable statisticValid Usage (Implicit)See Also', ), , LdvulkanOVkPipelineExecutablePropertiesKHR - 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 Also\, , KevulkanVkPipelineExecutableInternalRepresentationKHR - 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 M will return L. 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 Also, , MfvulkanVkPipelineExecutableInfoKHR - Structure describing a pipeline executable to query for associated statistics or internal representationsValid Usage (Implicit)See Alsoo, , M, LgvulkanVkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR - Structure describing whether pipeline executable properties are availableMembersThe members of the g, structure describe the following features: DescriptionIf the g structure is included in the pNext chain of OJ, it is filled with values indicating whether the feature is supported. g can also be included in the pNext chain of    to enable features.Valid Usage (Implicit)See Also, 'vulkanYVkPipelineExecutableStatisticFormatKHR - Enum describing a pipeline executable statisticSee Alsoc/vulkanname is an array of  chars containing a null-terminated UTF-8 string which is a short human readable name for this internal representation.0vulkan description is an array of  chart containing a null-terminated UTF-8 string which is a human readable description for this internal representation.1vulkanisTextA 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.2vulkandataSizeg is an integer related to the size, in bytes, of the internal representation data, as described below.3vulkanpData is either NULL} or a pointer to an block of data into which the implementation will write the textual form of the internal representation.5vulkanname is an array of  chare containing a null-terminated UTF-8 string which is a short human readable name for this statistic.6vulkan description is an array of  charf containing a null-terminated UTF-8 string which is a human readable description for this statistic.7vulkanformat is a '3 value specifying the format of the data found in value.8vulkanvalue is the value of this statistic.:vulkanpipeline must be a valid o handle;vulkanexecutableIndex must9 be less than the number of executables associated with pipeline as returned in the pExecutableCount parameter of K=vulkanstages is a bitmask of "so indicating which shader stages (if any) were principally used as inputs to compile this pipeline executable.>vulkanname is an array of  charf containing a null-terminated UTF-8 string which is a short human readable name for this executable.?vulkan description is an array of  charg containing a null-terminated UTF-8 string which is a human readable description for this executable.@vulkan subgroupSize@ is the subgroup size with which this executable is dispatched.Bvulkanpipeline must be a valid o handleDvulkanpipelineExecutableInfo indicates that the implementation supports reporting properties and statistics about the executables associated with a compiled pipeline.GvulkanGP specifies that the statistic is returned as a 64-bit floating-point value and should be read from the f64 field of ).HvulkanHM specifies that the statistic is returned as an unsigned 64-bit integer and should be read from the u64 field of ).IvulkanIJ specifies that the statistic is returned as a signed 64-bit integer and should be read from the i64 field of ).JvulkanJK 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 ).KvulkanVvkGetPipelineExecutablePropertiesKHR - Get the executables associated with a pipeline Parametersdevice) is the device that created the pipeline. pPipelineInfo& describes the pipeline being queried.pExecutableCountx is a pointer to an integer related to the number of pipeline executables available or queried, as described below. pProperties is either NULL" or a pointer to an array of d structures. 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 K will return L. Valid Usage mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineExecutableInfopipelineExecutableInfo must be enabledpipeline member of  pPipelineInfo must have been created with deviceValid Usage (Implicit)device must be a valid z handle pPipelineInfo must$ be a valid pointer to a valid b structurepExecutableCount must be a valid pointer to a uint32_t valueIf the value referenced by pExecutableCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pExecutableCount d structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Alsoz, d, bLvulkanivkGetPipelineExecutableStatisticsKHR - Get compile time statistics associated with a pipeline executable Parametersdevice) is the device that created the pipeline.pExecutableInfo1 describes the pipeline executable being queried.pStatisticCountn is a pointer to an integer related to the number of statistics available or queried, as described below. pStatistics is either NULL" or a pointer to an array of c structures. 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 L will return L. Valid Usage mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineExecutableInfopipelineExecutableInfo must be enabledpipeline member of pExecutableInfo must have been created with devicepipeline member of pExecutableInfo must have been created with c set in the flags field of 1G or 1Valid Usage (Implicit)device must be a valid z handlepExecutableInfo must$ be a valid pointer to a valid f structurepStatisticCount must be a valid pointer to a uint32_t valueIf the value referenced by pStatisticCount is not 0 , and  pStatistics is not NULL,  pStatistics must( be a valid pointer to an array of pStatisticCount c structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Alsoz, f, cMvulkanlvkGetPipelineExecutableInternalRepresentationsKHR - Get internal representations of the pipeline executable Parametersdevice) is the device that created the pipeline.pExecutableInfo1 describes the pipeline executable being queried.pInternalRepresentationCount is a pointer to an integer related to the number of internal representations available or queried, as described below.pInternalRepresentations is either NULL" or a pointer to an array of e structures. 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 M will return L.gWhile the details of the internal representations remain implementation dependent, the implementation should order the internal representations in the order in which they occur in the compile pipeline with the final shader assembly (if any) last. Valid Usage mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineExecutableInfopipelineExecutableInfo must be enabledpipeline member of pExecutableInfo must have been created with devicepipeline member of pExecutableInfo must have been created with c set in the flags field of 1G or 1Valid Usage (Implicit)device must be a valid z handlepExecutableInfo must$ be a valid pointer to a valid f structurepInternalRepresentationCount must be a valid pointer to a uint32_t valueIf the value referenced by pInternalRepresentationCount is not 0, and pInternalRepresentations is not NULL, pInternalRepresentations must( be a valid pointer to an array of pInternalRepresentationCount e structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Alsoz, f, e0bABc48567d<>@=?e./2301f9:;gCD%&'JIHG()*+,-EFKLMN4KLMgCDbABd<>@=?f9:;c48567e./2301)*+,-N'JIHG(JIHG&F%ENone'"#%&'-./189;=>?FHIMSUVX_dghklmq)C6[vulkanpVkQueryPoolPerformanceCreateInfoKHR - Structure specifying parameters of a newly created performance query pool Valid UsagequeueFamilyIndex must1 be a valid queue family index of the device The  |https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-features-performanceCounterQueryPoolsperformanceCounterQueryPools feature must be enabledEach element of pCounterIndices must3 be in the range of counters reported by ( for the queue family specified in queueFamilyIndexValid Usage (Implicit)sType must be [pCounterIndices must( be a valid pointer to an array of counterIndexCount uint32_t valuescounterIndexCount must be greater than 0See Also, \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 O=, it is filled with the implementation-dependent properties.See Also, ]vulkansVkPhysicalDevicePerformanceQueryFeaturesKHR - Structure describing performance query support for an implementationMembersThe members of the ]E structure describe the following implementation-dependent features:Valid Usage (Implicit)BTo query supported performance counter query pool features, call O[ with a ] structure included in the pNext chain of its  pFeatures parameter. The ] structure can also be included in the pNext chain of a   [ structure, in which case it controls which additional features are enabled in the device.See Also, ^vulkanrVkPerformanceQuerySubmitInfoKHR - Structure indicating which counter pass index is active for performance queries DescriptionIf the 5A::pNextX chain does not include this structure, the batch defaults to use counter pass index 0.Valid Usage (Implicit)See Also_vulkanJVkPerformanceCounterKHR - Structure providing information about a counterValid Usage (Implicit)See Also, }, , , `vulkancVkPerformanceCounterDescriptionKHR - Structure providing more detailed information about a counterValid Usage (Implicit)See Alsoz, , avulkan^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 Alsow, , xvulkan;VkAcquireProfilingLockFlagBitsKHR - Reserved for future useSee Alsow{vulkan]VkPerformanceCounterDescriptionFlagBitsKHR - Bitmask specifying usage behavior for a counterSee Alsoz}vulkan@VkPerformanceCounterStorageKHR - Supported counter storage typesSee Also_vulkan:VkPerformanceCounterUnitKHR - Supported counter unit typesSee Also_vulkan<VkPerformanceCounterScopeKHR - Supported counter scope typesSee Also_vulkancounterPassIndex 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 must be 0vulkantimeout` indicates how long the function waits, in nanoseconds, if the profiling lock is not available.vulkanqueueFamilyIndexF is the queue family index to create this performance query pool for.vulkanpCounterIndices# is the array of indices into the :: pCounters+ to enable in this performance query pool.vulkanflags is a bitmask of {0 indicating the usage behavior for the counter.vulkanname is an array of size P, containing a null-terminated UTF-8 string specifying the name of the counter.vulkancategory is an array of size T, containing a null-terminated UTF-8 string specifying the category of the counter.vulkan description is an array of size W, containing a null-terminated UTF-8 string specifying the description of the counter.vulkanunit is a 8 specifying the unit that the counter data will record.vulkanscope is a 3 specifying the scope that the counter belongs to.vulkanstorage is a }; specifying the storage type that the counter s data uses.vulkanuuid is an array of size r, containing 8-bit values that represent a universally unique identifier for the counter of the physical device.vulkanallowCommandBufferQueryCopies is > if the performance query pools are allowed to be used with  .vulkanperformanceCounterQueryPools is B if the physical device supports performance counter query pools.vulkan$performanceCounterMultipleQueryPools is ('Graphics.Vulkan.Core10.BaseType.TRUE'\` if the physical device supports using multiple performance query pools in a primary command buffer and secondary command buffers executed within it.vulkang specifies that concurrently recording the counter while other submitted command buffers are running may& impact the accuracy of the recording.vulkan' specifies that recording the counter may& have a noticeable performance impact.vulkan? - the performance counter storage is a 64-bit floating-point.vulkan? - the performance counter storage is a 32-bit floating-point.vulkanA - the performance counter storage is a 64-bit unsigned integer.vulkanA - the performance counter storage is a 32-bit unsigned integer.vulkan? - the performance counter storage is a 64-bit signed integer.vulkan? - the performance counter storage is a 32-bit signed integer.vulkan6 - the performance counter unit is a value of cycles.vulkan: - the performance counter unit is a value of hertz (Hz).vulkan8 - 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 ParametersphysicalDevices is the handle to the physical device whose queue family performance query counter properties will be queried.queueFamilyIndex^ is the index into the queue family of the physical device we want to get properties for. pCounterCountl is a pointer to an integer related to the number of counters available or queried, as described below. pCounters is either NULL" or a pointer to an array of _ structures.pCounterDescriptions is either NULL" or a pointer to an array of ` structures. 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 L will be returned instead of Q.Valid Usage (Implicit)physicalDevice must be a valid q handle pCounterCount must be a valid pointer to a uint32_t valueIf the value referenced by  pCounterCount is not 0 , and  pCounters is not NULL,  pCounters must( be a valid pointer to an array of  pCounterCount _ structuresIf the value referenced by  pCounterCount is not 0 , and pCounterDescriptions is not NULL, pCounterDescriptions must( be a valid pointer to an array of  pCounterCount ` structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJISee Also`, _, qvulkanvkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR - Reports the number of passes require for a performance query pool type ParametersphysicalDevices is the handle to the physical device whose queue family performance query counter properties will be queried.pPerformanceQueryCreateInfo is a pointer to a [5 of the performance query that is to be created. pNumPasses is a pointer to an integer related to the number of passes required to query the performance query pool, as described below. 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 Alsoq, [vulkan7vkAcquireProfilingLockKHR - Acquires the profiling lock Parametersdevice" is the logical device to profile.pInfo is a pointer to a aZ structure which contains information about how the profiling is to be acquired. 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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureOSee Alsoa, zvulkan7vkReleaseProfilingLockKHR - Releases the profiling lock Parametersdevice- is the logical device to cease profiling on. Valid UsageThe profiling lock of device must7 have been held via a previous successful call to Valid Usage (Implicit)device must be a valid z handleSee AlsozO[\]^_`auvwxyz{|}~e]\_`[a^}~{|zxywvuNone'"#%&'-./189;=>?FHIMSUVX_dghklmq)LvulkanbVkSemaphoreGetWin32HandleInfoKHR - Structure describing a Win32 handle semaphore export operation Description>The properties of the handle returned depend on the value of  handleType. See GV for a description of the properties of the defined external semaphore handle types. Valid Usage handleType must have been included in L/:: handleTypes when the  semaphore s current payload was createdIf  handleType" is defined as an NT handle,  mustG be called no more than once for each valid unique combination of  semaphore and  handleType semaphore must` not currently have its payload replaced by an imported payload as described below in  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importingImporting Semaphore PayloadsF unless that imported payload s handle type was included in M8::exportFromImportedHandleTypes for  handleTypeIf  handleTypea refers to a handle type with copy payload transference semantics, as defined below in  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importingImporting Semaphore Payloads , there must be no queue waiting on  semaphoreIf  handleTypeH refers to a handle type with copy payload transference semantics,  semaphore must. be signaled, or have an associated  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operation pending execution handleType must9 be defined as an NT handle or a global share handleValid Usage (Implicit)sType must be ;pNext must be NULL semaphore must be a valid g handle handleType must be a valid G valueSee AlsoG, g, , MvulkancVkImportSemaphoreWin32HandleInfoKHR - Structure specifying Windows handle to import to a semaphore DescriptionThe handle types supported by  handleType are:x Handle Type  Transference  Permanence Supported  G  Reference  Temporary,Permanent  G  Reference  Temporary,Permanent  G  Reference  Temporary,Permanent Handle Types Supported by M Valid Usage handleType must! be a value included in the  yhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphore-handletypes-win32Handle Types Supported by table If  handleType is not G or G, name must be NULLIf  handleType is not 0 and handle is NULL, name mustK name a valid synchronization primitive of the type specified by  handleTypeIf  handleType is not 0 and name is NULL, handle must1 be a valid handle of the type specified by  handleTypeIf handle is not NULL, name must be NULLIf handle is not NULL, it must' obey any requirements listed for  handleType in {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility-external semaphore handle types compatibilityIf name is not NULL, it must' obey any requirements listed for  handleType in {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility-external semaphore handle types compatibilityIf  handleType is G or G, the 66::flags field must( match that of the semaphore from which handle or name was exportedIf  handleType is G or G, the h:: semaphoreType field must( match that of the semaphore from which handle or name was exportedIf flags contains D, the h:: semaphoreType( field of the semaphore from which handle or name was exported must not be  Valid Usage (Implicit)sType must be 8pNext must be NULL semaphore must be a valid g handleflags must be a valid combination of D valuesIf  handleType is not 0,  handleType must be a valid G valueHost SynchronizationHost access to  semaphore must be externally synchronizedSee AlsoG, g, , , Nvulkan~VkExportSemaphoreWin32HandleInfoKHR - Structure specifying additional attributes of Windows handles exported from a semaphore DescriptionIf L/ is not present in the same pNext" chain, this structure is ignored.If L/ is present in the pNext chain of 66 with a Windows  handleType , but either N 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:GThe implementation mustR ensure the access rights allow both signal and wait operations on the semaphore.#For handles of the following types:GThe access rights must be:  GENERIC_ALL 1 ehttps://docs.microsoft.com/en-us/windows/win32/sync/synchronization-object-security-and-access-rights Valid UsageIf L/:: handleTypes does not include G or G, N must not be included in the pNext chain of 66Valid Usage (Implicit)sType must be 9If  pAttributes is not NULL,  pAttributes must) be a valid pointer to a valid 4 valueSee AlsoOvulkan`VkD3D12FenceSubmitInfoKHR - Structure specifying values for Direct3D 12 fence-backed semaphores DescriptionIf the semaphore in 5A::pWaitSemaphores or 5A::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 G 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 hQ structure instead of the OX structure to specify the values to use when waiting for and signaling such semaphores. Valid UsagewaitSemaphoreValuesCount must be the same value as 5A::waitSemaphoreCount , where 5A is in the pNext chain of this O structuresignalSemaphoreValuesCount must be the same value as 5A::signalSemaphoreCount , where 5A is in the pNext chain of this O structureValid Usage (Implicit)sType must be :If waitSemaphoreValuesCount is not 0, and pWaitSemaphoreValues is not NULL, pWaitSemaphoreValues must( be a valid pointer to an array of waitSemaphoreValuesCount uint64_t valuesIf signalSemaphoreValuesCount is not 0 , and pSignalSemaphoreValues is not NULL, pSignalSemaphoreValues must( be a valid pointer to an array of signalSemaphoreValuesCount uint64_t valuesSee Alsovulkan semaphore4 is the semaphore from which state will be exported.vulkan handleType! is the type of handle requested.vulkanpWaitSemaphoreValues is a pointer to an array of waitSemaphoreValuesCount- values for the corresponding semaphores in 5A::pWaitSemaphores to wait for. vulkanpSignalSemaphoreValues is a pointer to an array of signalSemaphoreValuesCount- values for the corresponding semaphores in 5A::pSignalSemaphores to set when signaled. vulkan pAttributes is a pointer to a Windows 49 structure specifying security attributes of the handle. vulkandwAccess is a ;) specifying access rights of the handle. vulkanname is a null-terminated UTF-16 string to associate with the underlying synchronization primitive referenced by NT handles exported from the created semaphore.vulkan semaphore: is the semaphore into which the payload will be imported.vulkanflags is a bitmask of DO specifying additional parameters for the semaphore payload import operation.vulkan handleType specifies the type of handle.vulkanhandle& is the external handle to import, or NULL.vulkannamec is a null-terminated UTF-16 string naming the underlying synchronization primitive to import, or NULL.vulkanCvkGetSemaphoreWin32HandleKHR - Get a Windows HANDLE for a semaphore ParametersdeviceF is the logical device that created the semaphore being exported.pGetWin32HandleInfo is a pointer to a L> structure containing parameters of the export operation.pHandleF will return the Windows handle representing the semaphore state. DescriptionAFor handle types defined as NT handles, the handles returned by L are owned by the application. To avoid leaking resources, the application must& release ownership of them using the  CloseHandle, system call when they are no longer needed.,Exporting a Windows handle from a semaphore mayb have side effects depending on the transference of the specified handle type, as described in  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importingImporting Semaphore Payloads. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureBKSee Alsoz, LvulkanKvkImportSemaphoreWin32HandleKHR - Import a semaphore from a Windows HANDLE Parametersdevice2 is the logical device that created the semaphore.pImportSemaphoreWin32HandleInfo is a pointer to a M? structure specifying the semaphore and import parameters. 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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureK,See Alsoz, MLMN    O .4:;MN    O L.;:4None'"#%&'-./189;=>?FHIMSUVX_dghklmq*c3 JvulkanUVkSemaphoreGetFdInfoKHR - Structure describing a POSIX FD semaphore export operation DescriptionGThe properties of the file descriptor returned depend on the value of  handleType. See GV for a description of the properties of the defined external semaphore handle types. Valid Usage handleType must have been included in L/:: handleTypes when  semaphore s current payload was created semaphore must` not currently have its payload replaced by an imported payload as described below in  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importingImporting Semaphore PayloadsF unless that imported payload s handle type was included in M8::exportFromImportedHandleTypes for  handleTypeIf  handleTypea refers to a handle type with copy payload transference semantics, as defined below in  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importingImporting Semaphore Payloads , there must be no queue waiting on  semaphoreIf  handleTypeH refers to a handle type with copy payload transference semantics,  semaphore must. be signaled, or have an associated  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operation pending execution handleType must- be defined as a POSIX file descriptor handleIf  handleTypeH refers to a handle type with copy payload transference semantics,  semaphore must have been created with a   of  If  handleTypeH refers to a handle type with copy payload transference semantics,  semaphore must have an associated semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) must, have also been submitted for executionValid Usage (Implicit)sType must be =pNext must be NULL semaphore must be a valid g handle handleType must be a valid G valueSee AlsoG, g, , 7KvulkanaVkImportSemaphoreFdInfoKHR - Structure specifying POSIX file descriptor to import to a semaphore DescriptionThe handle types supported by  handleType are:q Handle Type  Transference  Permanence Supported  G  Reference  Temporary,Permanent  G  Copy  Temporary Handle Types Supported by K Valid Usage handleType must! be a value included in the  vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphore-handletypes-fdHandle Types Supported by tablefd must" obey any requirements listed for  handleType in {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility-external semaphore handle types compatibilityIf  handleType is G, the 66::flags field must( match that of the semaphore from which fd was exportedIf  handleType is G, the h:: semaphoreType field must( match that of the semaphore from which fd was exportedIf flags contains D, the h:: semaphoreType( field of the semaphore from which fd was exported must not be  Valid Usage (Implicit)sType must be <pNext must be NULL semaphore must be a valid g handleflags must be a valid combination of D values handleType must be a valid G valueHost SynchronizationHost access to  semaphore must be externally synchronizedSee AlsoG, g, , , 8.vulkan semaphore4 is the semaphore from which state will be exported./vulkan handleType! is the type of handle requested.1vulkan semaphore: is the semaphore into which the payload will be imported.2vulkanflags is a bitmask of DO specifying additional parameters for the semaphore payload import operation.3vulkan handleType specifies the type of fd.4vulkanfd" is the external handle to import.7vulkanHvkGetSemaphoreFdKHR - Get a POSIX file descriptor handle for a semaphore ParametersdeviceF is the logical device that created the semaphore being exported. pGetFdInfo is a pointer to a J> structure containing parameters of the export operation.pFdI will return the file descriptor representing the semaphore payload. Description Each call to 7 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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureBKSee Alsoz, J8vulkanHvkImportSemaphoreFdKHR - Import a semaphore from a POSIX file descriptor Parametersdevice2 is the logical device that created the semaphore.pImportSemaphoreFdInfo is a pointer to a K? structure specifying the semaphore and import parameters. 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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureK,See Alsoz, KJ-./K04213+,567878K04213J-./,6+5None'"#%&'-./189;=>?FHIMSUVX_dghklmq*FvulkanQVkMemoryWin32HandlePropertiesKHR - Properties of External Memory Windows HandlesValid Usage (Implicit)See Also, UGvulkan_VkMemoryGetWin32HandleInfoKHR - Structure describing a Win32 handle semaphore export operation Description>The properties of the handle returned depend on the value of  handleType. See S for a description of the properties of the defined external memory handle types. Valid Usage handleType must have been included in J+:: handleTypes when memory was createdIf  handleType" is defined as an NT handle, T mustG be called no more than once for each valid unique combination of memory and  handleType handleType must9 be defined as an NT handle or a global share handleValid Usage (Implicit)sType must be 3pNext must be NULLmemory must be a valid { handle handleType must be a valid  valueSee Also{, , , THvulkan[VkImportMemoryWin32HandleInfoKHR - import Win32 memory created on the same physical device DescriptionImporting memory objects from Windows handles does not transfer ownership of the handle to the Vulkan implementation. For handle types defined as NT handles, the application must release ownership using the  CloseHandle1 system call when the handle is no longer needed. Applications can import the same underlying memory into multiple instances of Vulkan, into the same instance from which it was exported, and multiple times into a given Vulkan instance. In all cases, each import operation must create a distinct { object. Valid UsageIf  handleType is not 0, it must3 be supported for import, as reported by K4 or K1The memory from which handle+ was exported, or the memory named by name mustB have been created on the same underlying physical device as deviceIf  handleType is not 0, it must9 be defined as an NT handle or a global share handleIf  handleType is not {, y, w, or v, name must be NULLIf  handleType is not 0 and handle is NULL, name must< name a valid memory resource of the type specified by  handleTypeIf  handleType is not 0 and name is NULL, handle must1 be a valid handle of the type specified by  handleTypeif handle is not NULL, name must be NULLIf handle is not NULL, it must' obey any requirements listed for  handleType in xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility*external memory handle types compatibilityIf name is not NULL, it must' obey any requirements listed for  handleType in xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility*external memory handle types compatibilityValid Usage (Implicit)sType must be 0If  handleType is not 0,  handleType must be a valid  valueSee Also, IvulkanxVkExportMemoryWin32HandleInfoKHR - Structure specifying additional attributes of Windows handles exported from a memory DescriptionIf J+ is not present in the same pNext" chain, this structure is ignored.If J+ is present in the pNext chain of -n with a Windows  handleType , but either I 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:{ yThe implementation mustE ensure the access rights allow read and write access to the memory.#For handles of the following types:w vThe access rights must be:  GENERIC_ALL 1 ehttps://docs.microsoft.com/en-us/windows/win32/sync/synchronization-object-security-and-access-rights Valid UsageIf J+:: handleTypes does not include {, y, w, or v , a I structure must not be included in the pNext chain of -nValid Usage (Implicit)sType must be 1If  pAttributes is not NULL,  pAttributes must) be a valid pointer to a valid 4 valueSee AlsoFvulkanmemory= is the memory object from which the handle will be exported.Gvulkan handleType! is the type of handle requested.IvulkanmemoryTypeBits_ is a bitmask containing one bit set for every memory type which the specified windows handle can be imported as.Kvulkan pAttributes is a pointer to a Windows 49 structure specifying security attributes of the handle.LvulkandwAccess is a ;) specifying access rights of the handle.Mvulkanname is a null-terminated UTF-16 string to associate with the underlying resource referenced by NT handles exported from the created memory.Ovulkan handleType specifies the type of handle or name.Pvulkanhandle& is the external handle to import, or NULL.QvulkannameY is a null-terminated UTF-16 string naming the underlying memory resource to import, or NULL.TvulkanDvkGetMemoryWin32HandleKHR - Get a Windows HANDLE for a memory object ParametersdeviceJ is the logical device that created the device memory being exported.pGetWin32HandleInfo is a pointer to a G> structure containing parameters of the export operation.pHandleg will return the Windows handle representing the underlying resources of the device memory object. DescriptionAFor handle types defined as NT handles, the handles returned by TL are owned by the application. To avoid leaking resources, the application must& release ownership of them using the  CloseHandle, system call when they are no longer needed. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureBKSee Alsoz, GUvulkanVvkGetMemoryWin32HandlePropertiesKHR - Get Properties of External Memory Win32 Handles Parametersdevice. is the logical device that will be importing handle. handleType is the type of the handle handle.handle& is the handle which will be imported.pMemoryWin32HandleProperties will return properties of handle. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure,See Alsoz, , FFHIGEGFHNPQOIJMKL.4:;CDRSTUTUHNPQOIJMKLFHIGEGFDSCR.;:4None'"#%&'-./189;=>?FHIMSUVX_dghklmq+ CvulkanRVkMemoryGetFdInfoKHR - 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 -n::allocationSize. If  handleType is r, then the application can$ query the file s actual size with  man:lseek(2)lseek(2).Valid Usage (Implicit)See Also{, , , vDvulkanHVkMemoryFdPropertiesKHR - Properties of External Memory File DescriptorsValid Usage (Implicit)See Also, wEvulkancVkImportMemoryFdInfoKHR - import memory created on the same physical device from a file descriptor DescriptionImporting memory from a file descriptor transfers ownership of the file descriptor from the application to the Vulkan implementation. The application mustN not perform any operations on the file descriptor after a successful import. Applications can import the same underlying memory into multiple instances of Vulkan, into the same instance from which it was exported, and multiple times into a given Vulkan instance. In all cases, each import operation must create a distinct { object. Valid UsageIf  handleType is not 0, it must3 be supported for import, as reported by K4 or K1The memory from which fd was exported mustB have been created on the same underlying physical device as deviceIf  handleType is not 0, it must2 be defined as a POSIX file descriptor handleIf  handleType is not 0, fd must1 be a valid handle of the type specified by  handleTypeThe memory represented by fd mustR have been created from a physical device and driver that is compatible with device and  handleType, as described in xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibilityfd must" obey any requirements listed for  handleType in xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility*external memory handle types compatibilityValid Usage (Implicit)sType must be 4If  handleType is not 0,  handleType must be a valid  valueSee Also, mvulkanmemory must be a valid { handlenvulkan handleType must be a valid  valuepvulkanmemoryTypeBits` is a bitmask containing one bit set for every memory type which the specified file descriptor can be imported as.rvulkan handleType specifies the handle type of fd.svulkanfd" is the external handle to import.vvulkanBvkGetMemoryFdKHR - Get a POSIX file descriptor for a memory object ParametersdeviceJ is the logical device that created the device memory being exported. pGetFdInfo is a pointer to a C> structure containing parameters of the export operation.pFdf will return a file descriptor representing the underlying resources of the device memory object. Description Each call to v must} create a new file descriptor and transfer ownership of it to the application. To avoid leaking resources, the application must5 release ownership of the file descriptor using the close system call when it is no longer needed, or by importing a Vulkan memory object from it. Where supported by the operating system, the implementation must= set the file descriptor to be closed automatically when an execve system call is made. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureBKSee Alsoz, CwvulkanPvkGetMemoryFdPropertiesKHR - Get Properties of External Memory File Descriptors Parametersdevice. is the logical device that will be importing fd. handleType is the type of the handle fd.fd& is the handle which will be imported.pMemoryFdProperties is a pointer to a D6 structure in which the properties of the handle fd are returned. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure,See Alsoz, , DClnmDopEqsrjktuvwvwEqsrDopClnmkujtNone'"#%&'-./189;=>?FHIMSUVX_dghklmq+@vulkan(VkImportFenceWin32HandleInfoKHR - (None) DescriptionThe handle types supported by  handleType are:p Handle Type  Transference  Permanence Supported  K  Reference  Temporary,Permanent  K  Reference  Temporary,Permanent Handle Types Supported by @ Valid Usage handleType must! be a value included in the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fence-handletypes-win32Handle Types Supported by tableIf  handleType is not K, name must be NULLIf  handleType is not 0 and handle is NULL, name mustK name a valid synchronization primitive of the type specified by  handleTypeIf  handleType is not 0 and name is NULL, handle must1 be a valid handle of the type specified by  handleTypeIf handle is not NULL, name must be NULLIf handle is not NULL, it must' obey any requirements listed for  handleType in whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility)external fence handle types compatibilityIf name is not NULL, it must' obey any requirements listed for  handleType in whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility)external fence handle types compatibilityValid Usage (Implicit)sType must be TpNext must be NULLfence must be a valid w handleflags must be a valid combination of F  valuesIf  handleType is not 0,  handleType must be a valid  valueHost SynchronizationHost access to fence must be externally synchronizedSee Also, w, ;, , AvulkanZVkFenceGetWin32HandleInfoKHR - Structure describing a Win32 handle fence export operation Description>The properties of the handle returned depend on the value of  handleType. See R for a description of the properties of the defined external fence handle types. Valid Usage handleType must have been included in H):: handleTypes when the fence s current payload was createdIf  handleType is defined as an NT handle,  mustG be called no more than once for each valid unique combination of fence and  handleTypefence must` not currently have its payload replaced by an imported payload as described below in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importingImporting Fence PayloadsF unless that imported payload s handle type was included in I2::exportFromImportedHandleTypes for  handleTypeIf  handleTypeH refers to a handle type with copy payload transference semantics, fence must. be signaled, or have an associated  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signalingfence signal operation pending execution handleType must9 be defined as an NT handle or a global share handleValid Usage (Implicit)sType must be VpNext must be NULLfence must be a valid w handle handleType must be a valid  valueSee Also, w, , BvulkanvVkExportFenceWin32HandleInfoKHR - Structure specifying additional attributes of Windows handles exported from a fence DescriptionIf H) is not present in the same pNext" chain, this structure is ignored.If H) is present in the pNext chain of '9 with a Windows  handleType , but either B 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:K 1 ehttps://docs.microsoft.com/en-us/windows/win32/sync/synchronization-object-security-and-access-rights Valid UsageIf H):: handleTypes does not include K , a B structure must not be included in the pNext chain of '9Valid Usage (Implicit)sType must be UIf  pAttributes is not NULL,  pAttributes must) be a valid pointer to a valid 4 valueSee Alsovulkanfence0 is the fence from which state will be exported.vulkan handleType! is the type of handle requested.vulkan pAttributes is a pointer to a Windows 49 structure specifying security attributes of the handle.vulkandwAccess is a ;) specifying access rights of the handle.vulkanname is a null-terminated UTF-16 string to associate with the underlying synchronization primitive referenced by NT handles exported from the created fence.vulkanfence4 is the fence into which the state will be imported.vulkanflags is a bitmask of F J specifying additional parameters for the fence payload import operation.vulkan handleType specifies the type of handle.vulkanhandle& is the external handle to import, or NULL.vulkannamec is a null-terminated UTF-16 string naming the underlying synchronization primitive to import, or NULL.vulkan;vkGetFenceWin32HandleKHR - Get a Windows HANDLE for a fence ParametersdeviceB is the logical device that created the fence being exported.pGetWin32HandleInfo is a pointer to a A> structure containing parameters of the export operation.pHandleB will return the Windows handle representing the fence state. DescriptionAFor handle types defined as NT handles, the handles returned by L are owned by the application. To avoid leaking resources, the application must& release ownership of them using the  CloseHandle, system call when they are no longer needed.(Exporting a Windows handle from a fence mayb have side effects depending on the transference of the specified handle type, as described in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importingImporting Fence Payloads. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureBKSee Alsoz, AvulkanBvkImportFenceWin32HandleKHR - Import a fence from a Windows HANDLE Parametersdevice. is the logical device that created the fence.pImportFenceWin32HandleInfo is a pointer to a @; structure specifying the fence and import parameters. 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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureK,See Alsoz, @@AB.4:;@BA.;:4None'"#%&'-./189;=>?FHIMSUVX_dghklmq+ >vulkanVkImportFenceFdInfoKHR - (None) DescriptionThe handle types supported by  handleType are:i Handle Type  Transference  Permanence Supported  K!  Reference  Temporary,Permanent  K"  Copy  Temporary Handle Types Supported by > Valid Usage handleType must! be a value included in the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fence-handletypes-fdHandle Types Supported by tablefd must" obey any requirements listed for  handleType in whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility)external fence handle types compatibilityIf  handleType is K", 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 K" from a w which is signaled.Valid Usage (Implicit)sType must be WpNext must be NULLfence must be a valid w handleflags must be a valid combination of F  values handleType must be a valid  valueHost SynchronizationHost access to fence must be externally synchronizedSee Also, w, ;, , ?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 handleType must have been included in H):: handleTypes when fence s current payload was createdIf  handleTypeH refers to a handle type with copy payload transference semantics, fence must. be signaled, or have an associated  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signalingfence signal operation pending executionfence must` not currently have its payload replaced by an imported payload as described below in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importingImporting Fence PayloadsF unless that imported payload s handle type was included in I2::exportFromImportedHandleTypes for  handleType handleType must- be defined as a POSIX file descriptor handleValid Usage (Implicit)sType must be XpNext must be NULLfence must be a valid w handle handleType must be a valid  valueSee Also, w, , 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 F J specifying additional parameters for the fence payload import operation.vulkan handleType specifies the type of fd.vulkanfd" is the external handle to import.vulkan@vkGetFenceFdKHR - Get a POSIX file descriptor handle for a fence ParametersdeviceB is the logical device that created the fence being exported. pGetFdInfo is a pointer to a ?> structure containing parameters of the export operation.pFdE will return the file descriptor representing the fence payload. 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 K"( 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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureBKSee Alsoz, ?vulkan@vkImportFenceFdKHR - Import a fence from a POSIX file descriptor Parametersdevice. is the logical device that created the fence.pImportFenceFdInfo is a pointer to a >; structure specifying the fence and import parameters. 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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureK,See Alsoz, >>?>?None'"#%&'-./189;=>?FHIMSUVX_dghklmq.zvulkanpVkPipelineRasterizationStateStreamCreateInfoEXT - Structure defining the geometry stream used for rasterization Description"If this structure is not present, rasterizationStream is assumed to be zero.Valid Usage (Implicit)See Also, vulkanVkPhysicalDeviceTransformFeedbackPropertiesEXT - Structure describing transform feedback properties that can be supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of OH, it is filled with the implementation-dependent limits and properties.Valid Usage (Implicit)See Also, , 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 OK, 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 Also, vulkanKVkPipelineRasterizationStateStreamCreateFlagsEXT - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Alsovulkanflags must be 0vulkanrasterizationStream must be zero if ::*transformFeedbackRasterizationStreamSelect is vulkanmaxTransformFeedbackStreamsf is the maximum number of vertex streams that can be output from geometry shaders declared with the GeometryStreams5 capability. If the implementation does not support ::geometryStreams then maxTransformFeedbackStreams must be set to 1.vulkanmaxTransformFeedbackBuffers is the maximum number of transform feedback buffers that can be bound for capturing shader outputs from the last vertex processing stage.vulkanmaxTransformFeedbackBufferSize] is the maximum size that can be specified when binding a buffer for transform feedback in .vulkan"maxTransformFeedbackStreamDataSize is the maximum amount of data in bytes for each vertex that captured to one or more transform feedback buffers associated with a specific vertex stream.vulkan"maxTransformFeedbackBufferDataSizew is the maximum amount of data in bytes for each vertex that can be captured to a specific transform feedback buffer.vulkan$maxTransformFeedbackBufferDataStrideJ is the maximum stride between each capture of vertex data to the buffer.vulkantransformFeedbackQueries- is true if the implementation supports the # query type. transformFeedbackQueries# is false if queries of this type cannot be created.vulkan&transformFeedbackStreamsLinesTriangles= is true if the implementation supports the geometry shader OpExecutionMode of OutputLineStrip and OutputTriangleStrip in addition to  OutputPoints1 when more than one vertex stream is output. If &transformFeedbackStreamsLinesTriangles/ is false the implementation only supports an OpExecutionMode of  OutputPointsF when more than one vertex stream is output from the geometry shader.vulkan*transformFeedbackRasterizationStreamSelect- is true if the implementation supports the GeometryStreams0 SPIR-V capability and the application can use [ to modify which vertex stream output is used for rasterization. Otherwise vertex stream 0 must" always be used for rasterization.vulkantransformFeedbackDraw- is true if the implementation supports the ! function otherwise the function must not be called.vulkantransformFeedbackV indicates whether the implementation supports transform feedback and shader modules can declare the TransformFeedback capability.vulkangeometryStreams4 indicates whether the implementation supports the GeometryStreams SPIR-V capability.vulkan[vkCmdBindTransformFeedbackBuffersEXT - Bind transform feedback buffers to a command buffer Parameters commandBuffer? is the command buffer into which the command is recorded. firstBindinga is the index of the first transform feedback binding whose state is updated by the command. bindingCountY is the number of transform feedback bindings whose state is updated by the command.pBuffers, is a pointer to an array of buffer handles.pOffsets, is a pointer to an array of buffer offsets.pSizes 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 $q, then the maximum bytes captured will be the size of the corresponding buffer minus the buffer offset. Description$The values taken from elements i of pBuffers, pOffsets and pSizes@ replace the current state for the transform feedback binding  firstBinding + i, for i in [0,  bindingCountR). The transform feedback binding is updated to start at the offset indicated by pOffsets"[i] from the start of the buffer pBuffers[i]. Valid Usage::transformFeedback must be enabled  firstBinding must be less than ::maxTransformFeedbackBuffers The sum of  firstBinding and  bindingCount must$ be less than or equal to ::maxTransformFeedbackBuffersAll elements of pOffsets must< be less than the size of the corresponding element in pBuffersAll elements of pOffsets must be a multiple of 4All elements of pBuffers must! have been created with the }% flagIf the optional pSize% array is specified, each element of pSizes must either be $(, or be less than or equal to ::maxTransformFeedbackBufferSizeAll elements of pSizes mustG be less than or equal to the size of the corresponding buffer in pBuffersAll elements of pOffsets plus pSizes , where the pSizes, element is not $, mustH be less than or equal to the size of the corresponding element in pBuffersEach element of pBuffers that is non-sparse must< be bound completely and contiguously to a single )v objectTransform feedback must not be active when the  command is recordedValid Usage (Implicit) commandBuffer must be a valid  handlepBuffers must# be a valid pointer to an array of  bindingCount valid  handlespOffsets must# be a valid pointer to an array of  bindingCount  valuesIf pSizes is not NULL, pSizes must( be a valid pointer to an array of  bindingCount  values commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operationsIf pSizes is not NULL,  bindingCount must be greater than 0Both of  commandBuffer, and the elements of pBuffers mustD have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, , vulkanVvkCmdBeginTransformFeedbackEXT - Make transform feedback active in the command buffer Parameters commandBuffer? is the command buffer into which the command is recorded.firstCounterBufferK is the index of the first transform feedback buffer corresponding to pCounterBuffers [0] and pCounterBufferOffsets[0].counterBufferCount is the size of the pCounterBuffers and pCounterBufferOffsets arrays.pCounterBuffersK 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 Q 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 ., transform feedback will start capturing vertex data to byte zero in the corresponding bound transform feedback buffer.pCounterBufferOffsets9 is an optional array of offsets within each of the pCounterBuffersm 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. Description^The active transform feedback buffers will capture primitives emitted from the corresponding  XfbBuffer& in the bound graphics pipeline. Any  XfbBuffer[ emitted that does not output to an active transform feedback buffer will not be captured. Valid Usage::transformFeedback must be enabledTransform feedback must not be activefirstCounterBuffer must be less than ::maxTransformFeedbackBuffers The sum of firstCounterBuffer and counterBufferCount must$ be less than or equal to ::maxTransformFeedbackBuffersIf counterBufferCount is not 0, and pCounterBuffers is not NULL, pCounterBuffers must( be a valid pointer to an array of counterBufferCount , handles that are either valid or .7For each buffer handle in the array, if it is not . it must` reference a buffer large enough to hold 4 bytes at the corresponding offset from the pCounterBufferOffsets arrayIf pCounterBuffer is NULL, then pCounterBufferOffsets must also be NULLFor each buffer handle in the pCounterBuffers array that is not . it must have been created with a usage value containing }&Transform feedback mustI not be made active in a render pass instance with multiview enabledValid Usage (Implicit) commandBuffer must be a valid  handleIf counterBufferCount is not 0, and pCounterBufferOffsets is not NULL, pCounterBufferOffsets must( be a valid pointer to an array of counterBufferCount  values commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations This command must0 only be called inside of a render pass instanceBoth of  commandBuffer, and the elements of pCounterBuffers7 that are valid handles of non-ignored parameters mustD have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, , 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 first argument. To just extract the pair pass '(,)' as the first argument.$Note that there is no inner resourcevulkanVvkCmdEndTransformFeedbackEXT - Make transform feedback inactive in the command buffer Parameters commandBuffer? is the command buffer into which the command is recorded.firstCounterBufferK is the index of the first transform feedback buffer corresponding to pCounterBuffers [0] and pCounterBufferOffsets[0].counterBufferCount is the size of the pCounterBuffers and pCounterBufferOffsets arrays.pCounterBuffers 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 ` call to resume transform feedback capture from this position. It can also be used by 5 to determine the vertex count of the draw call.pCounterBufferOffsets9 is an optional array of offsets within each of the pCounterBuffersd 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. Valid Usage::transformFeedback must be enabledTransform feedback must be activefirstCounterBuffer must be less than ::maxTransformFeedbackBuffers The sum of firstCounterBuffer and counterBufferCount must$ be less than or equal to ::maxTransformFeedbackBuffersIf counterBufferCount is not 0, and pCounterBuffers is not NULL, pCounterBuffers must( be a valid pointer to an array of counterBufferCount , handles that are either valid or .7For each buffer handle in the array, if it is not . it must` reference a buffer large enough to hold 4 bytes at the corresponding offset from the pCounterBufferOffsets arrayIf pCounterBuffer is NULL, then pCounterBufferOffsets must also be NULLFor each buffer handle in the pCounterBuffers array that is not . it must have been created with a usage value containing }&Valid Usage (Implicit) commandBuffer must be a valid  handleIf counterBufferCount is not 0, and pCounterBufferOffsets is not NULL, pCounterBufferOffsets must( be a valid pointer to an array of counterBufferCount  values commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations This command must0 only be called inside of a render pass instanceBoth of  commandBuffer, and the elements of pCounterBuffers7 that are valid handles of non-ignored parameters mustD have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, , vulkan2vkCmdBeginQueryIndexedEXT - Begin an indexed query Parameters commandBufferE is the command buffer into which this command will be recorded. queryPoolB is the query pool that will manage the results of the query.queryM is the query index within the query pool that will contain the results.flags is a bitmask of U: specifying constraints on the types of queries that can be performed.index? is the query type specific index. When the query type is #- the index represents the vertex stream. DescriptionThe # command operates the same as the  7= command, except that it also accepts a query type specific index parameter. Valid Usage queryPool must have been created with a  queryType: that differs from that of any queries that are  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive within  commandBuffer All queries used by the command must be unavailableThe  queryType used to create  queryPool must not be ) If the  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-occlusionQueryPreciseprecise occlusion queries% feature is not enabled, or the  queryType used to create  queryPool was not *, flags must not contain query must' be less than the number of queries in  queryPoolIf the  queryType used to create  queryPool was * , the ) that  commandBuffer was allocated from must support graphics operationsIf the  queryType used to create  queryPool was + and any of the pipelineStatistics( indicate graphics operations, the ) that  commandBuffer was allocated from must! support graphics operationsIf the  queryType used to create  queryPool was + and any of the pipelineStatistics' indicate compute operations, the ) that  commandBuffer was allocated from must support compute operations commandBuffer must" not be a protected command buffer4If called within a render pass instance, the sum of queryD and the number of bits set in the current subpass s view mask must8 be less than or equal to the number of queries in  queryPoolIf the  queryType used to create  queryPool was # the ) that  commandBuffer was allocated from must! support graphics operationsIf the  queryType used to create  queryPool was # the index parameter must be less than ::maxTransformFeedbackStreamsIf the  queryType used to create  queryPool was not # the index must be zeroIf the  queryType used to create  queryPool was # then ::transformFeedbackQueries must be supportedIf  queryPool was created with a  queryType of ,, the  \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#profiling-lockprofiling lock must have been held before  was called on  commandBufferIf  queryPool was created with a  queryType of ,- and one of the counters used to create  queryPool was -, the query begin must' be the first recorded command in  commandBufferIf  queryPool was created with a  queryType of ,- and one of the counters used to create  queryPool was ., the begin command must3 not be recorded within a render pass instanceIf  queryPool was created with a  queryType of ,$ and another query pool with a  queryType , has been used within  commandBuffer, its parent primary command buffer or secondary command buffer recorded within the same parent primary command buffer as  commandBuffer , the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-features-performanceCounterMultipleQueryPools$performanceCounterMultipleQueryPools feature must be enabledIf  queryPool was created with a  queryType of ,, this command must{ not be recorded in a command buffer that, either directly or through secondary command buffers, also contains a  ;& command affecting the same queryValid Usage (Implicit) commandBuffer must be a valid  handle queryPool must be a valid l handleflags must be a valid combination of U values commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must- support graphics, or compute operationsBoth of  commandBuffer, 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  Both  Graphics Compute  See Also, T, lvulkan=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 first argument. To just extract the pair pass '(,)' as the first argument.$Note that there is no inner resourcevulkan&vkCmdEndQueryIndexedEXT - Ends a query Parameters commandBufferE is the command buffer into which this command will be recorded. queryPoolB is the query pool that is managing the results of the query.queryJ is the query index within the query pool where the result is stored.index" is the query type specific index. DescriptionThe # command operates the same as the  9= command, except that it also accepts a query type specific index parameter. Valid Usage All queries used by the command must be fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactivequery must' be less than the number of queries in  queryPool commandBuffer must" not be a protected command bufferIf : is called within a render pass instance, the sum of queryD and the number of bits set in the current subpass s view mask must8 be less than or equal to the number of queries in  queryPoolIf the  queryType used to create  queryPool was # the index parameter must be less than ::maxTransformFeedbackStreamsIf the  queryType used to create  queryPool was not # the index must be zeroIf the  queryType used to create  queryPool was # index must equal the index used to begin the queryValid Usage (Implicit) commandBuffer must be a valid  handle queryPool must be a valid l handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must- support graphics, or compute operationsBoth of  commandBuffer, 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  Both  Graphics Compute  See Also, lvulkanvkCmdDrawIndirectByteCountEXT - Draw primitives where the vertex count is derived from the counter byte value in the counter buffer Parameters commandBuffer? is the command buffer into which the command is recorded. instanceCount$ is the number of instances to draw. firstInstance2 is the instance ID of the first instance to draw. counterBuffer= is the buffer handle from where the byte count is read.counterBufferOffset is the offset into the buffer used to read the byte count, which is used to calculate the vertex count for this draw call. counterOffset6 is subtracted from the byte count read from the  counterBuffer at the counterBufferOffset 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. DescriptionUWhen the command is executed, primitives are assembled in the same way as done with   except the  vertexCount2 is calculated based on the byte count read from  counterBuffer at offset counterBufferOffset@. The assembled primitives execute the bound graphics pipeline.The effective  vertexCount is calculated as follows: const uint32_t * counterBufferPtr = (const uint8_t *)counterBuffer.address + counterBufferOffset; vertexCount = floor(max(0, (*counterBufferPtr - counterOffset)) / vertexStride);The effective  firstVertex is zero. Valid UsageIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain nIf 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 nIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any )| being sampled with " as a result of this command must have a (E and format that supports cubic filtering, as specified by <:: filterCubic returned by OAny )| being sampled with + with a reduction mode of either  or " as a result of this command must have a (i and format that supports cubic filtering together with minmax filtering, as specified by <::filterCubicMinmax returned by OAny )x created with a *::flags containing * sampled as a result of this command must only be sampled using a  of  For each set n% that is statically used by the )N bound to the pipeline bind point used by this command, a descriptor set must have been bound to 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???;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 )~; that is compatible for push constants, with the )~! used to create the current ), as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via  l, must2 be valid if they are statically used by the ); bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the )o object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the )f object bound to the pipeline bind point used by this command, since that pipeline was boundIf the )S object bound to the pipeline bind point used by this command accesses a )> object that uses unnormalized coordinates, that sampler must% not be used to sample from any )x with a )| of the type (, (, (, ( or (, in any shader stageIf the )S object bound to the pipeline bind point used by this command accesses a )> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj( in their name, in any shader stageIf the )S object bound to the pipeline bind point used by this command accesses a )> 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 stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the )f object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the )f object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the )C object bound to the pipeline bind point used by this command must! not be a protected resourceThe 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 1G1 structure specified when creating the ) bound to -The subpass index of the current render pass must be equal to the subpass member of the 1G1 structure specified when creating the ) bound to 3Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor setGImage subresources used as attachments in the current render pass mustL not be accessed in any way other than as an attachment by this commandjIf the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to R::maxMultiviewInstanceIndex5If the bound graphics pipeline was created with ::sampleLocationsEnable set to S and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit setyAll vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must have either valid or . buffers bound If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must not be .>For a given vertex buffer binding, any attribute data fetched mustf be entirely contained within the corresponding vertex buffer binding, as described in \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input???::transformFeedback must be enabledThe implementation must support ::transformFeedbackDraw vertexStride must2 be greater than 0 and less than or equal to  _::$maxTransformFeedbackBufferDataStride counterBuffer must! have been created with the }  bit set commandBuffer must" not be a protected command bufferValid Usage (Implicit) commandBuffer must be a valid  handle counterBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations This command must0 only be called inside of a render pass instanceBoth of  commandBuffer, and  counterBuffer mustD have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, , ""None'"#%&'-./189;=>?FHIMSUVX_dghklmq.DvulkanYVkPhysicalDeviceToolPropertiesEXT - Structure providing information about an active toolValid Usage (Implicit)See Also, ,  vulkanMVkToolPurposeFlagBitsEXT - Bitmask specifying the purposes of an active toolSee AlsovulkannameD is a null-terminated UTF-8 string containing the name of the tool.vulkanversionG is a null-terminated UTF-8 string containing the version of the tool.vulkanpurposes is a bitmask of 9 which is populated with purposes supported by the tool.vulkan descriptionI is a null-terminated UTF-8 string containing a description of the tool.vulkanlayer 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.vulkanh specifies that the tool reports additional information to the application via callbacks specified by  or vulkan# 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 labelsvulkand specifies that the tool modifies the API features/limits/extensions presented to the application.vulkano 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 ParametersphysicalDeviceE is the handle to the physical device to query for active tools. pToolCountJ is a pointer to an integer describing the number of tools active on physicalDevice.pToolProperties is either NULL" or a pointer to an array of  structures. DescriptionIf pToolProperties is NULL0, then the number of tools currently active on physicalDevice is returned in  pToolCount. Otherwise,  pToolCount mustG point to a variable set by the user to the number of elements in the pToolPropertiesf array, and on return the variable is overwritten with the number of structures actually written to pToolProperties. If  pToolCount= is less than the number of currently active tools, at most  pToolCount structures will be written.)The count and properties of active tools mayV change in response to events outside the scope of the specification. An application should9 assume these properties might change at any given time.Valid Usage (Implicit)physicalDevice must be a valid q handle pToolCount must be a valid pointer to a uint32_t valueIf the value referenced by  pToolCount is not 0 , and pToolProperties is not NULL, pToolProperties must( be a valid pointer to an array of  pToolCount  structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQLSee Alsoq,      None'"#%&'-./189;=>?FHIMSUVX_dghklmq/i\vulkanVkSubpassSampleLocationsEXT - Structure specifying the sample locations state to use for layout transitions of attachments performed after a given subpass Description[If the image referenced by the depth/stencil attachment used in the subpass identified by  subpassIndex was not created with  B or if the subpass does not use a depth/stencil attachment, and ::variableSampleLocations is  then the values specified in sampleLocationsInfo are ignored.Valid Usage (Implicit)See Also, vulkanJVkSampleLocationsInfoEXT - Structure specifying a set of sample locations DescriptionThis structure can be used either to specify the sample locations to be used for rendering or to specify the set of sample locations an image subresource has been last rendered with for the purposes of layout transitions of depth/stencil images created with  .The sample locations in pSampleLocations specify sampleLocationsPerPixelQ number of sample locations for each pixel in the grid of the size specified in sampleLocationGridSizeT. The sample location for sample i at the pixel grid location (x,y) is taken from pSampleLocations [(x + y * sampleLocationGridSize.width) * sampleLocationsPerPixel + i].If the render pass has a fragment density map, the implementation will choose the sample locations for the fragment and the contents of pSampleLocations may be ignored. Valid UsagesampleLocationsPerPixel must$ be a bit value that is set in ::sampleLocationSampleCountssampleLocationsCount must equal sampleLocationsPerPixel sampleLocationGridSize.width sampleLocationGridSize.heightValid Usage (Implicit)sType must be yIf sampleLocationsPerPixel is not 0, sampleLocationsPerPixel must be a valid [ valueIf sampleLocationsCount is not 0, pSampleLocations must( be a valid pointer to an array of sampleLocationsCount  structuresSee Also, , , [, , , , 6vulkanPVkSampleLocationEXT - 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 O.See AlsovulkanVkRenderPassSampleLocationsBeginInfoEXT - Structure specifying sample locations to use for the layout transition of custom sample locations compatible depth/stencil attachmentsValid Usage (Implicit)sType must be zIf %attachmentInitialSampleLocationsCount is not 0, !pAttachmentInitialSampleLocations must( be a valid pointer to an array of %attachmentInitialSampleLocationsCount valid  structuresIf postSubpassSampleLocationsCount is not 0, pPostSubpassSampleLocations must( be a valid pointer to an array of postSubpassSampleLocationsCount valid  structuresSee Also, , vulkancVkPipelineSampleLocationsStateCreateInfoEXT - Structure specifying sample locations for a pipelineValid Usage (Implicit)See Also, , vulkanVkPhysicalDeviceSampleLocationsPropertiesEXT - Structure describing sample location limits that can be supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of O9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Also, , Z, vulkanVkMultisamplePropertiesEXT - Structure returning information about sample count specific additional multisampling capabilitiesValid Usage (Implicit)See Also, , 7vulkanVkAttachmentSampleLocationsEXT - 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.vulkansampleLocationSampleCounts is a bitmask of [B indicating the sample counts supporting custom sample locations.vulkanmaxSampleLocationGridSizeB is the maximum size of the pixel grid in which sample locations can2 vary that is supported for all sample counts in sampleLocationSampleCounts.vulkansampleLocationCoordinateRange;[2] is the range of supported sample location coordinates.vulkansampleLocationSubPixelBitsC is the number of bits of subpixel precision for sample locations. vulkanvariableSampleLocationsx 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.#vulkansampleLocationsInfo must be a valid  structure%vulkan!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 subpassIndex must be less than the  subpassCount specified in 0+ the render pass specified by  *:: renderPass was created with)vulkansampleLocationsInfo must be a valid  structure+vulkanattachmentIndex must be less than the attachmentCount specified in 0+ the render pass specified by  *:: renderPass was created with,vulkansampleLocationsInfo must be a valid  structure.vulkansampleLocationsPerPixel is a [6 specifying the number of sample locations per pixel./vulkansampleLocationGridSizeP is the size of the sample location grid to select custom sample locations for.0vulkanpSampleLocations is a pointer to an array of sampleLocationsCount  structures.2vulkanx7 is the horizontal coordinate of the sample s location.3vulkany5 is the vertical coordinate of the sample s location.6vulkanCvkCmdSetSampleLocationsEXT - Set the dynamic sample locations state Parameters commandBufferD is the command buffer into which the command will be recorded.pSampleLocationsInfo& is the sample locations state to set. Valid UsageThe sampleLocationsPerPixel member of pSampleLocationsInfo must equal the rasterizationSamples member of the 1A structure the bound graphics pipeline has been created withIf ::variableSampleLocations is # then the current render pass must& have been begun by specifying a  structure whose pPostSubpassSampleLocations( member contains an element with a  subpassIndex1 matching the current subpass index and the sampleLocationsInfo member of that element must5 match the sample locations state pointed to by pSampleLocationsInfoValid Usage (Implicit) commandBuffer must be a valid  handlepSampleLocationsInfo must$ be a valid pointer to a valid  structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) 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, 7vulkan{vkGetPhysicalDeviceMultisamplePropertiesEXT - Report sample count specific multisampling capabilities of a physical device ParametersphysicalDevice[ is the physical device from which to query the additional multisampling capabilities.samples3 is the sample count to query the capabilities for.pMultisampleProperties is a pointer to a  structure in which information about the additional multisampling capabilities specific to the sample count is returned.Valid Usage (Implicit)See Also, q, [)')(-0./123$%&!#" *,+4567)67123-0./*,+')($%&!#" 54None'"#%&'-./189;=>?FHIMSUVX_dghklmq/vulkanVkPipelineRasterizationLineStateCreateInfoEXT - Structure specifying parameters of a newly created pipeline line rasterization state Valid UsageIf lineRasterizationMode is o, then the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rectangularLinesrectangularLines feature must be enabledIf lineRasterizationMode is n, then the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bresenhamLinesbresenhamLines feature must be enabledIf lineRasterizationMode is m, then the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bresenhamLines smoothLines feature must be enabledIf stippledLineEnable is  and lineRasterizationMode is o, then the  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLinesstippledRectangularLines feature must be enabledIf stippledLineEnable is  and lineRasterizationMode is n, then the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLinesstippledBresenhamLines feature must be enabledIf stippledLineEnable is  and lineRasterizationMode is m, then the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLinesstippledSmoothLines feature must be enabledIf stippledLineEnable is  and lineRasterizationMode is p, 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)sType must be lineRasterizationMode must be a valid [ valueSee Also, [, vulkanVkPhysicalDeviceLineRasterizationPropertiesEXT - Structure describing line rasterization properties supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of O9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See AlsovulkanVkPhysicalDeviceLineRasterizationFeaturesEXT - Structure describing the line rasterization features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of OJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of    to enable the feature.Valid Usage (Implicit)See Also, [vulkan5VkLineRasterizationModeEXT - Line rasterization modesSee Also^vulkanlineRasterizationMode 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.avulkanlineStipplePattern9 is the bit pattern used in stippled line rasterization.cvulkanlineSubPixelPrecisionBitse 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.evulkanrectangularLines0 indicates whether the implementation supports  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-linesrectangular line rasterization.fvulkanbresenhamLines0 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.gvulkan smoothLines0 indicates whether the implementation supports  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-smoothsmooth line rasterization.hvulkanstippledRectangularLines0 indicates whether the implementation supports  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-stipplestippled line rasterization with o lines, or with p lines if  _:: strictLines is .ivulkanstippledBresenhamLines0 indicates whether the implementation supports  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-stipplestippled line rasterization with n lines.jvulkanstippledSmoothLines0 indicates whether the implementation supports  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-stipplestippled line rasterization with m lines.mvulkanml 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.nvulkannk 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.ovulkanoI specifies lines drawn as if they were rectangles extruded from the linepvulkanp is equivalent to o 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.qvulkan9vkCmdSetLineStippleEXT - Set the dynamic line width state Parameters commandBufferD is the command buffer into which the command will be recorded.lineStippleFactor? is the repeat factor used in stippled line rasterization.lineStipplePattern= is the bit pattern used in stippled line rasterization. Valid UsagelineStippleFactor must be in the range [1,256]Valid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) 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]`a^_bcdefghijYZ[ponm\klq qdefghijbc]`a^_[ponm\ponmZlYkNone'"#%&'-./189;=>?FHIMSUVX_dghklmq0vulkanVkPhysicalDeviceConditionalRenderingFeaturesEXT - 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 OO, it is filled with values indicating the implementation-dependent behavior.  can also be included in pNext chain of    to enable the features.Valid Usage (Implicit)See Also, vulkan[VkConditionalRenderingBeginInfoEXT - Structure specifying conditional rendering begin info DescriptionIf the 32-bit value at offset in buffer memory is zero, then the rendering commands are discarded, otherwise they are executed as normal. If the value of the predicate in buffer memory changes while conditional rendering is active, the rendering commands may be discarded in an implementation-dependent way. Some implementations may latch the value of the predicate upon beginning conditional rendering while others may read it before every rendering command. Valid UsageIf buffer is non-sparse then it must< be bound completely and contiguously to a single )v objectbuffer must! have been created with the }/ bit setoffset must be less than the size of buffer by at least 32 bitsoffset must be a multiple of 4Valid Usage (Implicit)sType must be ApNext must be NULLbuffer must be a valid  handleflags must be a valid combination of  valuesSee Also, , , , vulkanmVkCommandBufferInheritanceConditionalRenderingInfoEXT - Structure specifying command buffer inheritance info Description9If this structure is not present, the behavior is as if conditionalRenderingEnable is . Valid Usage If the  thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedConditionalRenderinginherited conditional rendering feature is not enabled, conditionalRenderingEnable must be Valid Usage (Implicit)sType must be ?See Also, vulkanRVkConditionalRenderingFlagBitsEXT - Specify the behavior of conditional renderingSee AlsovulkanconditionalRendering7 specifies whether conditional rendering is supported.vulkaninheritedConditionalRendering/ specifies whether a secondary command buffer canR be executed while conditional rendering is active in the primary command buffer.vulkanconditionalRenderingEnable& specifies whether the command buffer can_ be executed while conditional rendering is active in the primary command buffer. If this is , then this command buffer canf be executed whether the primary command buffer has active conditional rendering or not. If this is #, then the primary command buffer must' not have conditional rendering active.vulkanbuffer@ is a buffer containing the predicate for conditional rendering.vulkanoffset is the byte offset into buffer! where the predicate is located.vulkanflags is a bitmask of 3 specifying the behavior of conditional rendering.vulkan specifies the condition used to determine whether to discard rendering commands or not. That is, if the 32-bit predicate read from buffer memory at offset_ is zero, the rendering commands are not discarded, and if non zero, then they are discarded.vulkanZvkCmdBeginConditionalRenderingEXT - Define the beginning of a conditional rendering block Parameters commandBufferE is the command buffer into which this command will be recorded.pConditionalRenderingBegin is a pointer to a ? structure specifying parameters of conditional rendering. Valid UsageConditional rendering must not already be jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-renderingactiveValid Usage (Implicit) commandBuffer must be a valid  handlepConditionalRenderingBegin must$ be a valid pointer to a valid  structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) 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=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 first argument. To just extract the pair pass '(,)' as the first argument.$Note that there is no inner resourcevulkanRvkCmdEndConditionalRenderingEXT - Define the end of a conditional rendering block Parameters commandBufferE is the command buffer into which this command will be recorded. Description3Once ended, conditional rendering becomes inactive. Valid UsageConditional rendering must be jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-renderingactive'If conditional rendering was made  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-renderingactive, outside of a render pass instance, it must0 not be ended inside a render pass instance'If conditional rendering was made  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-renderingactive within a subpass it must be ended in the same subpassValid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) 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 AlsoNone'"#%&'-./189;=>?FHIMSUVX_dghklmq0 vulkan(VkTimeDomainEXT - Supported time domains Description estruct timespec tv; clock_gettime(CLOCK_MONOTONIC, &tv); return tv.tv_nsec + tv.tv_sec*1000000000ull; istruct timespec tv; clock_gettime(CLOCK_MONOTONIC_RAW, &tv); return tv.tv_nsec + tv.tv_sec*1000000000ull; RLARGE_INTEGER counter; QueryPerformanceCounter(&counter); return counter.QuadPart;See Also, vulkaniVkCalibratedTimestampInfoEXT - Structure specifying the input parameters of a calibrated timestamp queryValid Usage (Implicit)See Also, , vulkan timeDomain must be a valid  valuevulkan- 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  x7 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 ParametersphysicalDeviceW is the physical device from which to query the set of calibrateable time domains.pTimeDomainCount is a pointer to an integer related to the number of calibrateable time domains available or queried, as described below. pTimeDomains is either NULL" or a pointer to an array of B values, indicating the supported 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, L will be returned instead of Q> to indicate that not all the available values were returned.Valid Usage (Implicit)physicalDevice must be a valid q handlepTimeDomainCount must be a valid pointer to a uint32_t valueIf the value referenced by pTimeDomainCount is not 0 , and  pTimeDomains is not NULL,  pTimeDomains must( be a valid pointer to an array of pTimeDomainCount  values Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Alsoq, vulkan:vkGetCalibratedTimestampsEXT - Query calibrated timestamps Parametersdevice1 is the logical device used to perform the query.timestampCount& is the number of timestamps to query.pTimestampInfos is a pointer to an array of timestampCount ` structures, describing the time domains the calibrated timestamps should be captured from. pTimestamps is a pointer to an array of timestampCountj 64-bit unsigned integer values in which the requested calibrated timestamp values are returned. pMaxDeviation is a pointer to a 64-bit unsigned integer value in which the strictly positive maximum deviation, in nanoseconds, of the calibrated timestamp values is returned. 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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, z|None'"#%&'-./189;=>?FHIMSUVX_dghklmq1-fyvulkanHVkShaderInfoTypeAMD - Enum specifying which type of shader info to querySee Alsozvulkan`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{, \{vulkanbVkShaderResourceUsageAMD - Resource usage information about a particular shader within a pipelineSee AlsozvulkanshaderStageMaskL 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 Parametersdevice is the device that created pipeline.pipeline is the target of the query. shaderStaged identifies the particular shader within the pipeline about which information is being queried.infoType5 describes what kind of information is being queried. pInfoSizeb is a pointer to a value related to the amount of data the query returns, as described below.pInfo is either NULL or a pointer to a buffer. 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 L.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 D.LIf information is successfully and fully queried, the function will return Q.For infoType , a z8 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)device must be a valid z handlepipeline must be a valid o handle shaderStage must be a valid ] valueinfoType must be a valid y value pInfoSize must be a valid pointer to a size_t valueIf the value referenced by  pInfoSize is not 0, and pInfo is not NULL, pInfo must( be a valid pointer to an array of  pInfoSize bytespipeline must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureDKSee Alsoz, o, y, ]yz{{zyNone'"#%&'-./189;=>?FHIMSUVX_dghklmq1{vulkanVvkCmdWriteBufferMarkerAMD - Execute a pipelined write of a marker value into a buffer Parameters commandBufferD is the command buffer into which the command will be recorded. pipelineStage is one of the S\ values, specifying the pipeline stage whose completion triggers the marker write. dstBuffer3 is the buffer where the marker will be written to. dstOffsetM is the byte offset into the buffer where the marker will be written to.marker# is the 32-bit value of the marker. 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 0E, and the pipeline stages for identifying the synchronization scope must include both  pipelineStage and .Note Similar to  xX, if an implementation is unable to write a marker at any specific pipeline stage, it may, instead do so at any logically later stage.NoteImplementations may only support a limited number of pipelined marker write operations in flight at a given time, thus excessive number of marker write operations may' degrade command execution performance. Valid Usage dstOffset must& be less than or equal to the size of  dstBuffer minus 4 dstBuffer must have been created with }1 usage flagIf  dstBuffer is non-sparse then it must< be bound completely and contiguously to a single )v object dstOffset must be a multiple of 4Valid Usage (Implicit) commandBuffer must be a valid  handle pipelineStage must be a valid S value dstBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must7 support transfer, graphics, or compute operationsBoth of  commandBuffer, and  dstBuffer 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 v Primary Secondary j Both g Transfer Graphics Compute  Transfer See Also, , , ShNone'"#%&'-./189;=>?FHIMSUVX_dghklmq1O:vulkandVkTimelineSemaphoreSubmitInfo - Structure specifying signal and wait values for timeline semaphores DescriptionIf the semaphore in 5A::pWaitSemaphores or 5A::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)sType must be If waitSemaphoreValueCount is not 0, and pWaitSemaphoreValues is not NULL, pWaitSemaphoreValues must( be a valid pointer to an array of waitSemaphoreValueCount uint64_t valuesIf signalSemaphoreValueCount is not 0 , and pSignalSemaphoreValues is not NULL, pSignalSemaphoreValues must# be a valid pointer to an array of signalSemaphoreValueCount uint64_t valuesSee Also;vulkanZVkSemaphoreWaitInfo - Structure containing information about the semaphore wait condition Valid UsageAll of the elements of  pSemaphores must9 reference a semaphore that was created with a  of Valid Usage (Implicit)sType must be pNext must be NULLflags must be a valid combination of  values pSemaphores must( be a valid pointer to an array of semaphoreCount valid g handlespValues must# be a valid pointer to an array of semaphoreCount uint64_t valuessemaphoreCount must be greater than 0See Alsog, , , , <vulkanWVkSemaphoreTypeCreateInfo - Structure specifying the type of a newly created semaphoreValid Usage (Implicit)sType must be  semaphoreType must be a valid  value Valid Usage If the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-timelineSemaphoretimelineSemaphore feature is not enabled,  semaphoreType must not equal If  semaphoreType is ,  initialValue must be zeroIf no < structure is included in the pNext chain of 663, then the created semaphore will have a default  of .See Also, =vulkan\VkSemaphoreSignalInfo - Structure containing information about a semaphore signal operationValid Usage (Implicit)See Alsog, , , >vulkanVkPhysicalDeviceTimelineSemaphoreProperties - Structure describing timeline semaphore properties that can be supported by an implementationMembersThe members of the >C structure describe the following implementation-dependent limits:Valid Usage (Implicit)See Also?vulkanVkPhysicalDeviceTimelineSemaphoreFeatures - Structure describing timeline semaphore 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 OK, 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 Also, vulkan semaphore must be a valid g handlevulkanvalue 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.vulkanpWaitSemaphoreValues is an array of length waitSemaphoreValueCount9 containing values for the corresponding semaphores in 5A::pWaitSemaphores to wait for.vulkanpSignalSemaphoreValues is an array of length signalSemaphoreValueCount9 containing values for the corresponding semaphores in 5A::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 .vulkan#maxTimelineSemaphoreValueDifference indicates the maximum difference allowed by the implementation between the current value of a timeline semaphore and any pending signal or wait operations.vulkantimelineSemaphore. indicates whether semaphores created with a  of  are supported.vulkanMvkGetSemaphoreCounterValue - Query the current state of a timeline semaphore Parametersdevice/ is the logical device that owns the semaphore. semaphore) is the handle of the semaphore to query.pValuem is a pointer to a 64-bit integer value in which the current counter value of the semaphore is returned. 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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJHSee Alsoz, gvulkan;vkWaitSemaphores - Wait for timeline semaphores on the host Parametersdevice/ is the logical device that owns the semaphore. pWaitInfo is a pointer to a ;@ structure containing information about the wait condition.timeout0 is the timeout period in units of nanoseconds. timeoutl is adjusted to the closest value allowed by the implementation-dependent timeout accuracy, which may7 be substantially longer than one nanosecond, and may* be longer than the requested period. Description#If the condition is satisfied when  is called, then E returns immediately. If the condition is not satisfied at the time  is called, then  will block and wait up to timeout4 nanoseconds for the condition to become satisfied.If timeout is zero, then [ does not wait, but simply returns information about the current state of the semaphore. Om will be returned in this case if the condition is not satisfied, even though no actual wait was performed.LIf the specified timeout period expires before the condition is satisfied,  returns O(. If the condition is satisfied before timeout nanoseconds has expired,  returns Q.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 Q or H. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQO  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJHSee Alsoz, ;vulkan;vkSignalSemaphore - Signal a timeline semaphore on the host Parametersdevice/ is the logical device that owns the semaphore. pSignalInfo is a pointer to a =B structure containing information about the signal operation. 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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Alsoz, =:;<=>?43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ?><:;=43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      None'"#%&'-./189;=>?FHIMSUVX_dghklmq2$%&'()*+,-./0123456789:;<987654321:;<.-,+*)('&%0$/bNone'"#%&'-./189;=>?FHIMSUVX_dghklmq2D /vulkandVkRenderPassAttachmentBeginInfo - Structure specifying images to be used as framebuffer attachments Valid UsageEach element of  pAttachments must% only specify a single mip levelEach element of  pAttachments must1 have been created with the identity swizzleValid Usage (Implicit)sType must be If attachmentCount is not 0,  pAttachments must( be a valid pointer to an array of attachmentCount valid t handlesSee Alsot, 0vulkangVkPhysicalDeviceImagelessFramebufferFeatures - Structure indicating support for imageless framebuffersMembersThe members of the 0, structure describe the following features: DescriptionIf the 0 structure is included in the pNext chain of OJ, it is filled with values indicating whether the feature is supported. 0 can also be included in the pNext chain of    to enable this feature.Valid Usage (Implicit)See Also, 1vulkantVkFramebufferAttachmentsCreateInfo - Structure specifying parameters of images that will be used with a framebufferValid Usage (Implicit)sType must be If attachmentImageInfoCount is not 0, pAttachmentImageInfos must# be a valid pointer to an array of attachmentImageInfoCount valid 2 structuresSee Also2, 2vulkantVkFramebufferAttachmentImageInfo - 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 /, mustH be created with parameters that are identical to those specified here.Valid Usage (Implicit)sType must be pNext must be NULLflags must be a valid combination of 2 valuesusage must be a valid combination of  valuesusage must not be 0If viewFormatCount is not 0,  pViewFormats must( be a valid pointer to an array of viewFormatCount valid G valuesSee AlsoG, 1, H, M, >vulkan pAttachments is a pointer to an array of tb handles, each of which will be used as the corresponding attachment in the render pass instance.@vulkanflags is a bitmask of 2, matching the value of *::flagsB used to create an image that will be used with this framebuffer.Avulkanusage is a bitmask of , matching the value of *::usage5 used to create an image used with this framebuffer.Bvulkanwidth3 is the width of the image view used for rendering.Cvulkanheight4 is the height of the image view used for rendering.Evulkan pViewFormats. is an array which lists of all formats which canC be used when creating views of the image, matching the value of aPC::pViewFormats used to create an image used with this framebuffer.GvulkanpAttachmentImageInfos is a pointer to an array of 2w instances, each of which describes a number of parameters of the corresponding attachment in a render pass instance.IvulkanimagelessFramebufferv indicates that the implementation supports specifying the image view for attachments at render pass begin time via /./=>0HI1FG2?BCE@AD43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      t0HI1FG2?BCE@AD/=>43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      None'"#%&'-./189;=>?FHIMSUVX_dghklmq2[ [\]^_`abcdefg gfedc`_^]\b[aNone'"#%&'-./189;=>?FHIMSUVX_dghklmq3vhvulkan\vkCmdDrawIndirectCount - Perform an indirect draw with the draw count sourced from a buffer Parameters commandBuffer? is the command buffer into which the command is recorded.buffer* is the buffer containing draw parameters.offset is the byte offset into buffer where parameters begin. countBuffer) is the buffer containing the draw count.countBufferOffset is the byte offset into  countBuffer" where the draw count begins. 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.strideD is the byte stride between successive sets of draw parameters. Descriptionh behaves similarly to   except that the draw count is read by the device from a buffer during execution. The command will read an unsigned 32-bit integer from  countBuffer located at countBufferOffset! and use this as the draw count. Valid UsageIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain n'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 nIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any )| being sampled with " as a result of this command must have a (E and format that supports cubic filtering, as specified by <:: filterCubic returned by OAny )| being sampled with + with a reduction mode of either  or " as a result of this command must have a (i and format that supports cubic filtering together with minmax filtering, as specified by <::filterCubicMinmax returned by OAny )x created with a *::flags containing * sampled as a result of this command must only be sampled using a  of  For each set n% that is statically used by the )N bound to the pipeline bind point used by this command, a descriptor set must have been bound to 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???;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 )~; that is compatible for push constants, with the )~! used to create the current ), as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via  l, must2 be valid if they are statically used by the ); bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the )o object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the )f object bound to the pipeline bind point used by this command, since that pipeline was boundIf the )S object bound to the pipeline bind point used by this command accesses a )> object that uses unnormalized coordinates, that sampler must% not be used to sample from any )x with a )| of the type (, (, (, ( or (, in any shader stageIf the )S object bound to the pipeline bind point used by this command accesses a )> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj( in their name, in any shader stageIf the )S object bound to the pipeline bind point used by this command accesses a )> 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 stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the )f object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the )f object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the )C object bound to the pipeline bind point used by this command must! not be a protected resourceThe 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 1G1 structure specified when creating the ) bound to -The subpass index of the current render pass must be equal to the subpass member of the 1G1 structure specified when creating the ) bound to 3Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor setGImage subresources used as attachments in the current render pass mustL not be accessed in any way other than as an attachment by this commandjIf the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to R::maxMultiviewInstanceIndex5If the bound graphics pipeline was created with ::sampleLocationsEnable set to S and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit setyAll vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must have either valid or . buffers bound If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must not be .>For a given vertex buffer binding, any attribute data fetched mustf be entirely contained within the corresponding vertex buffer binding, as described in \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input???If buffer is non-sparse then it must< be bound completely and contiguously to a single )v objectbuffer must! have been created with the }  bit setoffset must be a multiple of 4 commandBuffer must" not be a protected command bufferIf  countBuffer is non-sparse then it must< be bound completely and contiguously to a single )v object countBuffer must! have been created with the }  bit setcountBufferOffset must be a multiple of 4The count stored in  countBuffer must be less than or equal to  _::maxDrawIndirectCountstride must be a multiple of 4 and must. be greater than or equal to sizeof(/3)If  maxDrawCount is greater than or equal to 1, (stride ( maxDrawCount - 1) + offset + sizeof(/3)) must& be less than or equal to the size of bufferIf the count stored in  countBuffer is equal to 1, (offset + sizeof(/3)) must& be less than or equal to the size of bufferIf the count stored in  countBuffer is greater than 1, (stride ( drawCount - 1) + offset + sizeof(/3)) must& be less than or equal to the size of bufferIf  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectCountdrawIndirectCount# is not enabled this function must not be usedValid Usage (Implicit) commandBuffer must be a valid  handlebuffer must be a valid  handle countBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations This command must0 only be called inside of a render pass instanceEach of buffer,  commandBuffer, and  countBuffer mustD have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, , ivulkankvkCmdDrawIndexedIndirectCount - Perform an indexed indirect draw with the draw count sourced from a buffer Parameters commandBuffer? is the command buffer into which the command is recorded.buffer* is the buffer containing draw parameters.offset is the byte offset into buffer where parameters begin. countBuffer) is the buffer containing the draw count.countBufferOffset is the byte offset into  countBuffer" where the draw count begins. 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.strideD is the byte stride between successive sets of draw parameters. Descriptioni behaves similarly to   except that the draw count is read by the device from a buffer during execution. The command will read an unsigned 32-bit integer from  countBuffer located at countBufferOffset! and use this as the draw count. Valid UsageIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain n&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 nIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any )| being sampled with " as a result of this command must have a (E and format that supports cubic filtering, as specified by <:: filterCubic returned by OAny )| being sampled with + with a reduction mode of either  or " as a result of this command must have a (i and format that supports cubic filtering together with minmax filtering, as specified by <::filterCubicMinmax returned by OAny )x created with a *::flags containing * sampled as a result of this command must only be sampled using a  of  For each set n% that is statically used by the )N bound to the pipeline bind point used by this command, a descriptor set must have been bound to 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???;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 )~; that is compatible for push constants, with the )~! used to create the current ), as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via  l, must2 be valid if they are statically used by the ); bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the )o object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the )f object bound to the pipeline bind point used by this command, since that pipeline was boundIf the )S object bound to the pipeline bind point used by this command accesses a )> object that uses unnormalized coordinates, that sampler must% not be used to sample from any )x with a )| of the type (, (, (, ( or (, in any shader stageIf the )S object bound to the pipeline bind point used by this command accesses a )> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj( in their name, in any shader stageIf the )S object bound to the pipeline bind point used by this command accesses a )> 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 stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the )f object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the )f object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the )C object bound to the pipeline bind point used by this command must! not be a protected resourceThe 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 1G1 structure specified when creating the ) bound to -The subpass index of the current render pass must be equal to the subpass member of the 1G1 structure specified when creating the ) bound to 3Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor setGImage subresources used as attachments in the current render pass mustL not be accessed in any way other than as an attachment by this commandjIf the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to R::maxMultiviewInstanceIndex5If the bound graphics pipeline was created with ::sampleLocationsEnable set to S and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit setyAll vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must have either valid or . buffers bound If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must not be .>For a given vertex buffer binding, any attribute data fetched mustf be entirely contained within the corresponding vertex buffer binding, as described in \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input???If buffer is non-sparse then it must< be bound completely and contiguously to a single )v objectbuffer must! have been created with the }  bit setoffset must be a multiple of 4 commandBuffer must" not be a protected command bufferIf  countBuffer is non-sparse then it must< be bound completely and contiguously to a single )v object countBuffer must! have been created with the }  bit setcountBufferOffset must be a multiple of 4The count stored in  countBuffer must be less than or equal to  _::maxDrawIndirectCountstride must be a multiple of 4 and must. be greater than or equal to sizeof(/4)If  maxDrawCount is greater than or equal to 1, (stride ( maxDrawCount - 1) + offset + sizeof(/4)) must& be less than or equal to the size of bufferIf count stored in  countBuffer is equal to 1, (offset + sizeof(/4)) must& be less than or equal to the size of bufferIf count stored in  countBuffer is greater than 1, (stride ( drawCount - 1) + offset + sizeof(/4)) must& be less than or equal to the size of bufferValid Usage (Implicit) commandBuffer must be a valid  handlebuffer must be a valid  handle countBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations This command must0 only be called inside of a render pass instanceEach of buffer,  commandBuffer, and  countBuffer mustD have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, , hihiNone'"#%&'-./189;=>?FHIMSUVX_dghklmq3jklmnonokmjlNone'"#%&'-./189;=>?FHIMSUVX_dghklmq3Βpqrstutuqspr]None'"#%&'-./189;=>?FHIMSUVX_dghklmq4[hvulkanVkPhysicalDeviceBufferDeviceAddressFeatures - Structure describing buffer address features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionNotebufferDeviceAddressMultiDeviceA exists to allow certain legacy platforms to be able to support bufferDeviceAddressZ without needing to support shared GPU virtual addresses for multi-device configurations.See  for more information.If the  structure is included in the pNext chain of OJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of    to enable features.Valid Usage (Implicit)See Also, vulkan^VkMemoryOpaqueCaptureAddressAllocateInfo - Request a specific address for a memory allocation DescriptionIf opaqueCaptureAddress+ is zero, no specific address is requested.If opaqueCaptureAddress is not zero, it should be an address retrieved from I on an identically created memory allocation on the same implementation.Note.In most cases, it is expected that a non-zero  opaqueAddress is an address retrieved from Y on an identically created memory allocation. If this is not the case, it likely that . errors will occur.This is, however, not a strict requirement because trace capture/replay tools may need to adjust memory allocation parameters for imported memory..If this structure is not present, it is as if opaqueCaptureAddress is zero.Valid Usage (Implicit)See Also vulkanhVkDeviceMemoryOpaqueCaptureAddressInfo - Structure specifying the memory object to query an address forValid Usage (Implicit)See Also{, , , !vulkanQVkBufferOpaqueCaptureAddressCreateInfo - Request a specific address for a buffer DescriptionIf opaqueCaptureAddress+ is zero, no specific address is requested.If opaqueCaptureAddress is not zero, then it should be an address retrieved from ? for an identically created buffer on the same implementation..If this structure is not present, it is as if opaqueCaptureAddress is zero.Apps should avoid creating buffers with app-provided addresses and implementation-provided addresses in the same process, to reduce the likelihood of . errors.NoteOThe expected usage for this is that a trace capture/replay tool will add the . flag to all buffers that use , and during capture will save the queried opaque device addresses in the trace. During replay, the buffers will be created specifying the original address so any address values stored in the trace data will remain valid.Implementations are expected to separate such buffers in the GPU address space so normal allocations will avoid using these addresses. Apps/tools should avoid mixing app-provided and implementation-provided addresses for buffers created with ./, to avoid address space allocation conflicts.Valid Usage (Implicit)See Also"vulkanTVkBufferDeviceAddressInfo - Structure specifying the buffer to query an address for Valid UsageIf buffer1 is non-sparse and was not created with the . flag, then it must7 be bound completely and contiguously to a single { objectbuffer must have been created with Valid Usage (Implicit)sType must be pNext must be NULLbuffer must be a valid  handleSee Also, , , , , , wvulkanmemory must be a valid { handleyvulkanopaqueCaptureAddressD is the opaque capture address requested for the memory allocation.{vulkanopaqueCaptureAddress9 is the opaque capture address requested for the buffer.}vulkanbuffer5 specifies the buffer whose address is being queried.vulkanbufferDeviceAddress indicates that the implementation supports accessing buffer memory in shaders as storage buffers via an address queried from .vulkan bufferDeviceAddressCaptureReplay indicates that the implementation supports saving and reusing buffer and device addresses, e.g. for trace capture and replay.vulkanbufferDeviceAddressMultiDevice1 indicates that the implementation supports the bufferDeviceAddress and  rayTracing features for logical devices created with multiple physical devices. If this feature is not supported, buffer and acceleration structure addresses mustP not be queried on a logical device created with more than one physical device.vulkanNvkGetBufferOpaqueCaptureAddress - Query an opaque capture address of a buffer Parametersdevice6 is the logical device that the buffer was created on.pInfo is a pointer to a "A structure specifying the buffer to retrieve an address for. DescriptionFThe 64-bit return value is an opaque capture address of the start of  pInfo->buffer.4If the buffer was created with a non-zero value of !::opaqueCaptureAddress the return value must be the same address. Valid Usage The  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressbufferDeviceAddress feature must be enabledIf device; was created with multiple physical devices, then the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevicebufferDeviceAddressMultiDevice feature must be enabledValid Usage (Implicit)device must be a valid z handlepInfo must$ be a valid pointer to a valid " structureSee Also", zvulkan7vkGetBufferDeviceAddress - Query an address of a buffer Parametersdevice6 is the logical device that the buffer was created on.pInfo is a pointer to a "A structure specifying the buffer to retrieve an address for. Description6The 64-bit return value is an address of the start of  pInfo->bufferV. The address range starting at this value and whose size is the size of the buffer canK be used in a shader to access the memory bound to that buffer, using the SPV_KHR_physical_storage_buffer extension or the equivalent SPV_EXT_physical_storage_buffer extension and the PhysicalStorageBuffer( storage class. For example, this value can0 be stored in a uniform buffer, and the shader can read the value from the uniform buffer and use it to do a dependent read/write to this buffer. A value of zero is reserved as a null  pointer and musth not be returned as a valid buffer device address. All loads, stores, and atomics in a shader through PhysicalStorageBuffer pointers must7 access addresses in the address range of some buffer.4If the buffer was created with a non-zero value of !::opaqueCaptureAddress or :: deviceAddressO the return value will be the same address that was returned at capture time. Valid Usage The  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressbufferDeviceAddress or  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressEXT::bufferDeviceAddress feature must be enabledIf device; was created with multiple physical devices, then the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevicebufferDeviceAddressMultiDevice or  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDeviceEXT ::bufferDeviceAddressMultiDevice feature must be enabledValid Usage (Implicit)device must be a valid z handlepInfo must$ be a valid pointer to a valid " structureSee Also", zvulkan[vkGetDeviceMemoryOpaqueCaptureAddress - Query an opaque capture address of a memory object ParametersdeviceD is the logical device that the memory object was allocated on.pInfo is a pointer to a  H structure specifying the memory object to retrieve an address for. DescriptionHThe 64-bit return value is an opaque address representing the start of  pInfo->memory.=If the memory object was allocated with a non-zero value of ::opaqueCaptureAddress, the return value must be the same address.NoteThe expected usage for these opaque addresses is only for trace capture/replay tools to store these addresses in a trace and subsequently specify them during replay. Valid Usage The  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressbufferDeviceAddress feature must be enabledIf device; was created with multiple physical devices, then the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevicebufferDeviceAddressMultiDevice feature must be enabledValid Usage (Implicit)device must be a valid z handlepInfo must$ be a valid pointer to a valid   structureSee Alsoz,   Y*QPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+~xy vw!z{"|}43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ./0321"! *+,10/.-~"|}!z{xy vw43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      Y*QPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+QPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+"! "! +,10/.-10/.-*/0321321.None'"#%&'-./189;=>?FHIMSUVX_dghklmq4tNone'"#%&'-./189;=>?FHIMSUVX_dghklmq4vulkanVkPhysicalDeviceBufferDeviceAddressFeaturesEXT - 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 OJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of    to enable features.NoteThe ) structure has the same members as the ]v structure, but the functionality indicated by the members is expressed differently. The features indicated by the ] 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 Also, vulkanMVkBufferDeviceAddressCreateInfoEXT - Request a specific address for a buffer DescriptionIf  deviceAddress+ is zero, no specific address is requested.If  deviceAddress is not zero, then it muste be an address retrieved from an identically created buffer on the same implementation. The buffer must* also be bound to an identically created )v 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 Also, vulkan deviceAddress0 is the device address requested for the buffer.vulkanbufferDeviceAddress indicates that the implementation supports accessing buffer memory in shaders as storage buffers via an address queried from .vulkan bufferDeviceAddressCaptureReplayu indicates that the implementation supports saving and reusing buffer addresses, e.g. for trace capture and replay.vulkanbufferDeviceAddressMultiDevice1 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.XNone'"#%&'-./189;=>?FHIMSUVX_dghklmq4vulkaniVkPhysicalDeviceHostQueryResetFeatures - 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 OJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of    to enable features.Valid Usage (Implicit)See Also, vulkanhostQueryResetR indicates that the implementation supports resetting queries from the host with .vulkan0vkResetQueryPool - Reset queries in a query pool Parametersdevice0 is the logical device that owns the query pool. queryPoolG is the handle of the query pool managing the queries being reset. firstQuery% is the initial query index to reset. queryCount# is the number of queries to reset. Description/This command sets the status of query indices [ firstQuery,  firstQuery +  queryCount - 1] to unavailable.If  queryPool is ,1 this command sets the status of query indices [ firstQuery,  firstQuery +  queryCount# - 1] to unavailable for each pass. Valid Usage The  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-hostQueryResethostQueryReset feature must be enabled firstQuery must, be less than the number of queries in  queryPool The sum of  firstQuery and  queryCount must8 be less than or equal to the number of queries in  queryPool8Submitted commands that refer to the range specified by  firstQuery and  queryCount in  queryPool must have completed execution"The range of queries specified by  firstQuery and  queryCount in  queryPool must not be in use by calls to 4 or  in other threadsValid Usage (Implicit)device must be a valid z handle queryPool must be a valid l handle queryPool must6 have been created, allocated, or retrieved from deviceSee Alsoz, l43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      b43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      None'"#%&'-./189;=>?FHIMSUVX_dghklmq4ЪNone'"#%&'-./189;=>?FHIMSUVX_dghklmq4vulkan'vkTrimCommandPool - Trim a command pool Parametersdevice2 is the logical device that owns the command pool. commandPool is the command pool to trim.flags is reserved for future use. DescriptionTrimming a command pool recycles unused memory from the command pool back to the system. Command buffers allocated from the pool are not affected by the command.NoteqThis command provides applications with some control over the internal memory allocations used by command pools.'Unused memory normally arises from command buffers that have been recorded and later reset, such that they are no longer using the memory. On reset, a command buffer can return memory to its command pool, but the only way to release memory from a command pool to the system requires calling  , which cannot be executed while any command buffers from that pool are still in use. Subsequent recording operations into command buffers will re-use this memory but since total memory requirements fluctuate over time, unused memory can accumulate.+In this situation, trimming a command pool may be useful to return unused memory back to the system, returning the total outstanding memory allocated by the pool back to a more average  value.Implementations utilize many internal allocation strategies that make it impossible to guarantee that all unused memory is released back to the system. For instance, an implementation of a command pool may+ involve allocating memory in bulk from the system and sub-allocating from that memory. In such an implementation any live command buffer that holds a reference to a bulk allocation would prevent that allocation from being freed, even if only a small proportion of the bulk allocation is in use.In most cases trimming will result in a reduction in allocated but unused memory, but it does not guarantee the ideal  behavior. Trimming may be an expensive operation, and should% not be called frequently. Trimming should be treated as a way to relieve memory pressure after application-known points when there exists enough unused memory that the cost of trimming is worth  it.Valid Usage (Implicit)device must be a valid z handle commandPool must be a valid  handleflags must be 0 commandPool must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  commandPool must be externally synchronizedSee Also, , z[HIY*QPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+߫Y*QPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+QPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+IHNone'"#%&'-./189;=>?FHIMSUVX_dghklmq4a  KNone'"#%&'-./189;=>?FHIMSUVX_dghklmq5kvulkanWVkPhysicalDeviceIDProperties - Structure specifying IDs related to the physical device Description deviceUUID is an array of  uint8_tI values representing a universally unique identifier for the device. driverUUID is an array of  uint8_ti values representing a universally unique identifier for the driver build in use by the device. deviceLUID is an array of  uint8_tE values representing a locally unique identifier for the device.deviceNodeMask is a uint32_t_ bitfield identifying the node within a linked device adapter corresponding to the device.deviceLUIDValid& is a boolean value that will be  if  deviceLUID contains a valid LUID and deviceNodeMask& contains a valid node mask, and  if they do not. deviceUUID mustp be immutable for a given device across instances, processes, driver APIs, driver versions, and system reboots. Applications can compare the  driverUUID4 value across instance and process boundaries, and can make similar queries in external APIs to determine whether they are capable of sharing memory objects and resources using them with the device. deviceUUID and/or  driverUUID must be used to determine whether a particular external object can be shared between driver components, where such a restriction exists as defined in the compatibility table for the particular object type: xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility*External memory handle types compatibility {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility-External semaphore handle types compatibility whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility)External fence handle types compatibilityIf deviceLUIDValid is , the values of  deviceLUID and deviceNodeMask are undefined. If deviceLUIDValid is I and Vulkan is running on the Windows operating system, the contents of  deviceLUID can be cast to an LUID object and must1 be equal to the locally unique identifier of a  IDXGIAdapter1 object that corresponds to physicalDevice. If deviceLUIDValid is , deviceNodeMask mustn contain exactly one bit. If Vulkan is running on an operating system that supports the Direct3D 12 API and physicalDeviceB corresponds to an individual device in a linked device adapter, deviceNodeMask3 identifies the Direct3D 12 node corresponding to physicalDevice. Otherwise, deviceNodeMask must be 1.Note,Although they have identical descriptions, :: deviceUUID may differ from O::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.NoteWhile :: deviceUUID is specified to remain consistent across driver versions and system reboots, it is not intended to be usable as a serializable persistent identifier for a device. It may change when a device is physically added to, removed from, or moved to a different connector in a system while that system is powered down. Further, there is no reasonable way to verify with conformance testing that a given device retains the same UUID in a given system across all driver versions supported in that system. While implementations should make every effort to report consistent device UUIDs across driver versions, applications should avoid relying on the persistence of this value for uses other than identifying compatible devices for external object sharing purposes.Valid Usage (Implicit)sType must be See Also, vulkanbVkPhysicalDeviceExternalImageFormatInfo - Structure specifying external image creation parameters DescriptionIf  handleType is 0, O 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 O , then O returns  5.Valid Usage (Implicit)sType must be If  handleType is not 0,  handleType must be a valid  valueSee Also, vulkanUVkPhysicalDeviceExternalBufferInfo - Structure specifying buffer creation parametersValid Usage (Implicit)See Also*, , , , , Uvulkan[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 OQ will be the same when :: handleType is set to that type. The application is responsible for querying the capabilities of all handle types intended for concurrent use in a single image and intersecting them to obtain the compatible set of capabilities.See Also, , , vulkan\VkExternalImageFormatProperties - Structure specifying supported external handle propertiesValid Usage (Implicit)See Also, vulkanYVkExternalBufferProperties - Structure specifying supported external handle capabilitiesValid Usage (Implicit)See Also, , , UvulkanexternalMemoryProperties is a  structure specifying various capabilities of the external handle type when used with the specified buffer creation parameters.vulkanflags must be a valid combination of ~6 valuesvulkanusage must not be 0vulkan 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 buffers ParametersphysicalDeviceI is the physical device from which to query the buffer capabilities.pExternalBufferInfo is a pointer to a I structure describing the parameters that would be consumed by .pExternalBufferProperties is a pointer to a 3 structure in which capabilities are returned.Valid Usage (Implicit)See Also, q, q|{zyxwvutsr43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      q|{zyxwvutsr|{zyxwvutsrNone'"#%&'-./189;=>?FHIMSUVX_dghklmq5 !"#$%&'()*+,-./0123456789876543210/.-,+*9)&%$#"! ('None'"#%&'-./189;=>?FHIMSUVX_dghklmq5ʶvulkanVkPhysicalDeviceExternalMemoryHostPropertiesEXT - Structure describing external memory host pointer limits that can be supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of O9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Also, vulkanNVkMemoryHostPointerPropertiesEXT - Properties of external memory host pointer DescriptionThe value returned by memoryTypeBits mustF only include bits that identify memory types which are host visible.Valid Usage (Implicit)See Also, EvulkanDVkImportMemoryHostPointerInfoEXT - import memory from a host pointer DescriptionImporting memory from a host pointer shares ownership of the memory between the host and the Vulkan implementation. The application can continue to access the memory through the host pointer but it is the application s responsibility to synchronize device and non-device access to the underlying memory as defined in  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-hostaccess$Host Access to Device Memory Objects. Applications can import the same underlying memory into multiple instances of Vulkan and multiple times into a given Vulkan instance. However, implementations mayt fail to import the same underlying memory multiple times into a given physical device due to platform constraints.0Importing memory from a particular host pointer may not be possible due to additional platform-specific restrictions beyond the scope of this specification in which case the implementation must8 fail the memory import operation with the error code 7.The application mustt ensure that the imported memory range remains valid and accessible for the lifetime of the imported memory object. Valid UsageIf  handleType is not 0, it must3 be supported for import, as reported in K8If  handleType is not 0, it must be t or u pHostPointer must5 be a pointer aligned to an integer multiple of ::minImportedHostPointerAlignmentIf  handleType is t,  pHostPointer must be a pointer to allocationSize, number of bytes of host memory, where allocationSize is the member of the -n, structure this structure is chained toIf  handleType is u,  pHostPointer must be a pointer to allocationSize; number of bytes of host mapped foreign memory, where allocationSize is the member of the -n, structure this structure is chained toValid Usage (Implicit)sType must be  handleType must be a valid  valueSee Also, =vulkanminImportedHostPointerAlignment is the minimum requiredK alignment, in bytes, for the base address and size of host pointers that can( be imported to a Vulkan memory object.?vulkanmemoryTypeBits] is a bitmask containing one bit set for every memory type which the specified host pointer can be imported as.Avulkan handleType specifies the handle type.Bvulkan pHostPointer$ is the host pointer to import from.EvulkanUvkGetMemoryHostPointerPropertiesEXT - Get properties of external memory host pointer Parametersdevice3 is the logical device that will be importing  pHostPointer. handleType is the type of the handle  pHostPointer. pHostPointer$ is the host pointer to import from.pMemoryHostPointerProperties is a pointer to a B structure in which the host pointer properties are returned. Valid Usage handleType must be t or u pHostPointer must5 be a pointer aligned to an integer multiple of ::minImportedHostPointerAlignmentIf  handleType is t,  pHostPointer must be a pointer to host memoryIf  handleType is u,  pHostPointer must+ be a pointer to host mapped foreign memoryValid Usage (Implicit)device must be a valid z handle handleType must be a valid  valuepMemoryHostPointerProperties must be a valid pointer to a  structure Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure,See Alsoz, , <=>?@AB$&:;CDEE@AB>?<=;D:C&$INone'"#%&'-./189;=>?FHIMSUVX_dghklmq5vulkanTVkPhysicalDeviceExternalFenceInfo - 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, , [, WvulkanZVkExternalFenceProperties - 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, , , [, WVvulkanexportFromImportedHandleTypes is a bitmask of , indicating which types of imported handle  handleType can be exported from.WvulkancompatibleHandleTypes is a bitmask of  specifying handle types which can# be specified at the same time as  handleType when creating a fence.XvulkanexternalFenceFeatures is a bitmask of  indicating the features of  handleType.Zvulkan handleType must be a valid  value[vulkangvkGetPhysicalDeviceExternalFenceProperties - Function for querying external fence handle capabilities. ParametersphysicalDeviceH is the physical device from which to query the fence capabilities.pExternalFenceInfo is a pointer to a I structure describing the parameters that would be consumed by '.pExternalFenceProperties is a pointer to a 3 structure in which capabilities are returned.Valid Usage (Implicit)See Also, q, YZUVWX43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      [y[YZUVWX43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      None'"#%&'-./189;=>?FHIMSUVX_dghklmq5$)fghijklmnopqrstuvwxwvutsrqpxmlkjihgofn)GNone'"#%&'-./189;=>?FHIMSUVX_dghklmq6D[vulkanXVkPhysicalDeviceGroupProperties - Structure specifying physical device group propertiesValid Usage (Implicit)See Also, )q, , , {vulkanWVkDeviceGroupDeviceCreateInfo - Create a logical device from multiple physical devices DescriptionThe elements of the pPhysicalDevices^ array are an ordered list of the physical devices that the logical device represents. These must be a subset of a single device group, and need not be in the same order as they were enumerated. The order of the physical devices in the pPhysicalDevices array determines the  device index of each physical device, with element i being assigned a device index of i. Certain commands and structures refer to one or more physical devices by using device indices or  device masks formed using device indices.'A logical device created without using  , or with physicalDeviceCount$ equal to zero, is equivalent to a physicalDeviceCount of one and pPhysicalDevices pointing to the physicalDevice parameter to  C. In particular, the device index of that physical device is zero. Valid UsageEach element of pPhysicalDevices must be uniqueAll elements of pPhysicalDevices must3 be in the same device group as enumerated by If physicalDeviceCount is not 0, the physicalDevice parameter of   must be an element of pPhysicalDevicesValid Usage (Implicit)sType must be If physicalDeviceCount is not 0, pPhysicalDevices must( be a valid pointer to an array of physicalDeviceCount valid )q handlesSee Also)q, zvulkanpPhysicalDevicesY is a pointer to an array of physical device handles belonging to the same device group.|vulkanphysicalDeviceCount0 is the number of physical devices in the group.}vulkanphysicalDevices is an array of z )qD handles representing all physical devices in the group. The first physicalDeviceCount& elements of the array will be valid.~vulkansubsetAllocation} specifies whether logical devices created from the group support allocating device memory on a subset of devices, via the  deviceMask member of the Em. If this is ], then all device memory allocations are made across all physical devices in the group. If physicalDeviceCount is 1, then subsetAllocation must be .vulkan{vkEnumeratePhysicalDeviceGroups - Enumerates groups of physical devices that can be used to create a single logical device Parametersinstance? is a handle to a Vulkan instance previously created with  .pPhysicalDeviceGroupCountv is a pointer to an integer related to the number of device groups available or queried, as described below.pPhysicalDeviceGroupProperties is either NULL" or a pointer to an array of  structures. 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 pPhysicalDeviceGroupCount: is smaller than the number of device groups available, L will be returned instead of QF, to indicate that not all the available device groups were returned.Every physical device must be in exactly one device group.Valid Usage (Implicit)instance must be a valid s handlepPhysicalDeviceGroupCount must be a valid pointer to a uint32_t valueIf the value referenced by pPhysicalDeviceGroupCount is not 0 , and pPhysicalDeviceGroupProperties is not NULL, pPhysicalDeviceGroupProperties must( be a valid pointer to an array of pPhysicalDeviceGroupCount  structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJISee Alsos, {|}~yz43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      zp{|}~yz43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      zNone'"#%&'-./189;=>?FHIMSUVX_dghklmq6Z  CNone'"#%&'-./189;=>?FHIMSUVX_dghklmq6vulkanuVkMemoryDedicatedRequirements - 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 Ny structure passed as the pMemoryRequirements parameter of a N call, requiresDedicatedAllocation may be ( under one of the following conditions:The pNext chain of  for the call to > used to create the buffer being queried included a J5? structure, and any of the handle types specified in J5:: handleTypes9 requires dedicated allocation, as reported by KT in K1::/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 Ny! structure passed to a call to N.If the  structure is included in the pNext chain of the Ny structure passed as the pMemoryRequirements parameter of a N call and ~9 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 Ny structure passed as the pMemoryRequirements parameter of a N call, requiresDedicatedAllocation may be ( under one of the following conditions:The pNext chain of * for the call to *= used to create the image being queried included a J6? structure, and any of the handle types specified in J6:: handleTypes9 requires dedicated allocation, as reported by O in K4::/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 Ny! structure passed to a call to N.If the  structure is included in the pNext chain of the Ny structure passed as the pMemoryRequirements parameter of a N call and   was set in *::flags when image% was created then the implementation must set both prefersDedicatedAllocation and requiresDedicatedAllocation to .Valid Usage (Implicit)sType must be See Also, vulkanOVkMemoryDedicatedAllocateInfo - Specify a dedicated memory allocation resource Valid UsageAt least one of image and buffer must be . If image is not .F and the memory is not an imported Android Hardware Buffer, -n::allocationSize must equal the .::size of the imageIf image is not ., image must have been created without   set in *::flagsIf buffer is not .F and the memory is not an imported Android Hardware Buffer, -n::allocationSize must equal the .::size of the bufferIf buffer is not ., buffer must% have been created without ~9 set in ::flagsIf image is not . and -n> defines a memory import operation with handle type <:, <;, <, <, <<, or <=b, and the external handle was created by the Vulkan API, then the memory being imported must/ also be a dedicated image allocation and imageH must be identical to the image associated with the imported memoryIf buffer is not . and -n> defines a memory import operation with handle type <:, <;, <, <, <<, or <=b, and the external handle was created by the Vulkan API, then the memory being imported must0 also be a dedicated buffer allocation and buffer mustD be identical to the buffer associated with the imported memoryIf image is not . and -n> defines a memory import operation with handle type <>!, the memory being imported must/ also be a dedicated image allocation and image mustC be identical to the image associated with the imported memoryIf buffer is not . and -n> defines a memory import operation with handle type <>!, the memory being imported must0 also be a dedicated buffer allocation and buffer mustD be identical to the buffer associated with the imported memoryIf image is not ., image must! not have been created with  set in *::flagsValid Usage (Implicit)sType must be If image is not ., image must be a valid u handleIf buffer is not ., buffer must be a valid  handleBoth of buffer, and image7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same )See Also, u, vulkanimage is .= or a handle of an image which this memory will be bound to.vulkanbuffer is .= or a handle of a buffer which this memory will be bound to.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.43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      f43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      None'"#%&'-./189;=>?FHIMSUVX_dghklmq6ʤ?None'"#%&'-./189;=>?FHIMSUVX_dghklmq6 vulkanQVkProtectedSubmitInfo - Structure indicating whether the submission is protected Valid Usage0If the protected memory feature is not enabled, protectedSubmit must not be If protectedSubmit is  , then each element of the pCommandBuffers array must# be a protected command bufferIf protectedSubmit is  , then each element of the pCommandBuffers array must& be an unprotected command bufferIf the 5A::pNext chain does not include a @ structure, then each element of the command buffer of the pCommandBuffers array must& be an unprotected command bufferValid Usage (Implicit)sType must be See Also, vulkanVkPhysicalDeviceProtectedMemoryProperties - Structure describing protected memory properties that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of OO, it is filled with a value indicating the implementation-dependent behavior.Valid Usage (Implicit)See Also, vulkanVkPhysicalDeviceProtectedMemoryFeatures - Structure describing protected memory features that can be supported by an implementation DescriptionIf the  structure is included in the pNext chain of OI, it is filled with a value indicating whether the feature is supported.Valid Usage (Implicit)See Also, vulkanXVkDeviceQueueInfo2 - Structure specifying the parameters used for device queue creation DescriptionThe queue returned by  must have the same flagsG value from this structure as that used at device creation time in a   instance. If no matching flags- were specified at device creation time then pQueue will return ..Valid Usage (Implicit)See Also, , vulkanflags must be a valid combination of  valuesvulkanqueueFamilyIndex must4 be one of the queue family indices specified when device was created, via the   structurevulkan queueIndex mustV be less than the number of queues created for the specified queue family index and  member flags equal to this flags value when device was created, via the  queueCount member of the   structurevulkanprotectedNoFault4 specifies the behavior of the implementation when  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-protected-access-rulesprotected memory access rules are broken. If protectedNoFault is N, breaking those rules will not result in process termination or device loss.vulkanprotectedMemory1 specifies whether protected memory is supported.vulkanprotectedSubmit/ specifies whether the batch is protected. If protectedSubmit is , the batch is protected. If protectedSubmit is $, the batch is unprotected. If the 5A::pNextB chain does not include this structure, the batch is unprotected.vulkan4vkGetDeviceQueue2 - Get a queue handle from a device Parametersdevice+ is the logical device that owns the queue. pQueueInfo is a pointer to a K structure, describing the parameters used to create the device queue.pQueue is a pointer to a kI object that will be filled with the handle for the requested queue.Valid Usage (Implicit)See Alsoz, , kHI43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      uvw|{zyxfghponmlkji*+,10/.-43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      vw|{zyx|{zyxughponmlkjiponmlkjif+,10/.-10/.-*IH>None'"#%&'-./189;=>?FHIMSUVX_dghklmq7vulkandVkSamplerYcbcrConversion - Opaque handle to a device-specific sampler Y 2CBCR conversion descriptionSee AlsoS5, S, , S!, "vulkanKVkDescriptorUpdateTemplate - Opaque handle to a descriptor update templateSee Also?, D, , D, , D, \(h km qs! uz{|}(s! qzk{um h }|kNone'"#%&'-./189;=>?FHIMSUVX_dghklmq7g* BvulkanAVkValidationCacheEXT - Opaque handle to a validation cache objectSee Also<, , ', , Cvulkan4VkSwapchainKHR - 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 u4 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 presented 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, , X, , N, , , , , &, , , , , , , , m Dvulkan0VkSurfaceKHR - Opaque handle to a surface object DescriptionThe VK_KHR_surface extension declares the D1 object, and provides a function for destroying DY objects. Separate platform-specific extensions each provide a function for creating a D 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, N, , , , , , , , , , , , , , %, , a, k, m, o, q,  EvulkanOVkPerformanceConfigurationINTEL - Device configuration for performance queriesSee Also, 5, FvulkanQVkIndirectCommandsLayoutNV - Opaque handle to an indirect commands layout objectSee AlsoB, C, , Gvulkan9VkDisplayModeKHR - Opaque handle to a display mode objectSee Also?, !, &, , LHvulkan0VkDisplayKHR - Opaque handle to a display objectSee Also@, , D, , , I, J, M, w, *, xIvulkan-VkDeferredOperationKHR - A deferred operation DescriptioneThis handle refers to a tracking structure which manages the execution state for a deferred command.See Also, , , , , JvulkanDVkDebugUtilsMessengerEXT - Opaque handle to a debug messenger object DescriptionThe debug messenger will provide detailed feedback on the application s use of Vulkan when events of interest occur. When an event of interest does occur, the debug messenger will submit a debug message to the debug callback that was provided during its creation. Additionally, the debug messenger is responsible with filtering out debug messages that the callback is not interested in and will only provide desired debug messages.See Also, KvulkanKVkDebugReportCallbackEXT - Opaque handle to a debug report callback objectSee Also,  LvulkanOVkAccelerationStructureKHR - Opaque handle to an acceleration structure objectSee Also, , , , , , , [, , , f, g, , ,  , , hRf gh iklm no qs! t uvwz{|}BCDEFGHIJKLRFBLEIHGDCKJs! qzk{ut f o m h }|wglvinNone'"#%&'-./189;=>?FHIMSUVX_dghklmq7Xvulkan_VkViSurfaceCreateInfoNN - Structure specifying parameters of a newly created VI surface objectValid Usage (Implicit)See Also, (, /+vulkanflags must be 0,vulkanwindow must be a valid nn::vi::NativeWindowHandle/vulkan vkCreateViSurfaceNN - Create a D object for a VI layer Parametersinstance5 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 D= handle in which the created surface object is returned. Description=During the lifetime of a surface created using a particular nn::vi::NativeWindowHandle, applications must5 not attempt to create another surface for the same nn::vi::Layer$ or attempt to connect to the same nn::vi::Layer$ through other platform mechanisms.7If the native window is created with a specified size,  currentExtentc will reflect that size. In this case, applications should use the same size for the swapchain s  imageExtent. Otherwise, the  currentExtent will have the special value (0xFFFFFFFF, 0xFFFFFFFF), indicating that applications are expected to choose an appropriate size for the swapchain s  imageExtent- (e.g., by matching the result of a call to nn::vi::GetDisplayResolution).Valid Usage (Implicit)instance must be a valid s handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a D handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJ0See Also, s, D,  D*+,&'()-./ /*+,()'.&-DNone'"#%&'-./189;=>?FHIMSUVX_dghklmq7vulkanfVkMacOSSurfaceCreateInfoMVK - Structure specifying parameters of a newly created macOS surface objectValid Usage (Implicit)See Also>, , EAvulkanflags must be 0BvulkanpView must be a valid NSView and must be backed by a CALayer instance of type AEvulkanJvkCreateMacOSSurfaceMVK - Create a VkSurfaceKHR object for a macOS NSView Parametersinstance5 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 D= handle in which the created surface object is returned.Valid Usage (Implicit)instance must be a valid s handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a D handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJ0See Also, s, , D D@AB<=>?CDE E@AB>?=D<CDNone'"#%&'-./189;=>?FHIMSUVX_dghklmq7vulkanbVkIOSSurfaceCreateInfoMVK - Structure specifying parameters of a newly created iOS surface objectValid Usage (Implicit)See AlsoT, , [Wvulkanflags must be 0XvulkanpView must be a valid UIView and must be backed by a CALayer instance of type A[vulkanFvkCreateIOSSurfaceMVK - Create a VkSurfaceKHR object for an iOS UIView Parametersinstance5 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 D= handle in which the created surface object is returned.Valid Usage (Implicit)instance must be a valid s handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a D handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJ0See Also, , s, D DVWXRSTUYZ[ [VWXTUSZRYDNone'"#%&'-./189;=>?FHIMSUVX_dghklmq7tvulkandVkXlibSurfaceCreateInfoKHR - Structure specifying parameters of a newly created Xlib surface objectValid Usage (Implicit)See Also, j, rmvulkanflags must be 0nvulkandpy must point to a valid Xlib /ovulkanwindow must be a valid Xlib 9rvulkan#vkCreateXlibSurfaceKHR - Create a D> object for an X11 window, using the Xlib client-side library Parametersinstance/ is the instance to associate the surface with. pCreateInfo is a pointer to a \ structure containing the 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 D= handle in which the created surface object is returned.Valid Usage (Implicit)instance must be a valid s handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a D handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, s, D, svulkanpvkGetPhysicalDeviceXlibPresentationSupportKHR - Query physical device for presentation to X11 server using Xlib ParametersphysicalDevice is the physical device.queueFamilyIndex is the queue family index.dpy is a pointer to an Xlib / connection to the server.visualId is an X11 visual (,). Description This platform-specific function can( be called prior to creating a surface.Valid Usage (Implicit)See AlsoqDlnmo,/9hijkpqrsrslnmojkiqhpD/,9None'"#%&'-./189;=>?FHIMSUVX_dghklmq8vulkanbVkXcbSurfaceCreateInfoKHR - Structure specifying parameters of a newly created Xcb surface objectValid Usage (Implicit)See Also, , vulkanflags must be 0vulkan connection must point to a valid X11 xcb_connection_tvulkanwindow must be a valid X11  xcb_window_tvulkan"vkCreateXcbSurfaceKHR - Create a D< object for a X11 window, using the XCB client-side library Parametersinstance/ is the instance to associate the surface with. 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 D= handle in which the created surface object is returned.Valid Usage (Implicit)instance must be a valid s handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a D handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, s, D, vulkannvkGetPhysicalDeviceXcbPresentationSupportKHR - Query physical device for presentation to X11 server using XCB ParametersphysicalDevice is the physical device.queueFamilyIndex is the queue family index. connection is a pointer to an xcb_connection_t to the X server. visual_id is an X11 visual (xcb_visualid_t). Description This platform-specific function can( be called prior to creating a surface.Valid Usage (Implicit)See AlsoqD)*8D)8*None'"#%&'-./189;=>?FHIMSUVX_dghklmq8"vulkanfVkWin32SurfaceCreateInfoKHR - Structure specifying parameters of a newly created Win32 surface objectValid Usage (Implicit)See Also, , vulkan6VkWin32SurfaceCreateFlagsKHR - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Alsovulkanflags must be 0vulkan hinstance must be a valid Win32 >vulkanhwnd must be a valid Win32 =vulkan$vkCreateWin32SurfaceKHR - Create a D# object for an Win32 native window Parametersinstance/ is the instance to associate the surface with. 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 D= handle in which the created surface object is returned.Valid Usage (Implicit)instance must be a valid s handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a D handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, s, D, vulkanpvkGetPhysicalDeviceWin32PresentationSupportKHR - query queue family support for presentation on a Win32 display ParametersphysicalDevice is the physical device.queueFamilyIndex is the queue family index. Description This platform-specific function can( be called prior to creating a surface.Valid Usage (Implicit)See AlsoqD=>D>=None'"#%&'-./189;=>?FHIMSUVX_dghklmq8C5vulkanjVkWaylandSurfaceCreateInfoKHR - Structure specifying parameters of a newly created Wayland surface objectValid Usage (Implicit)See Also, , vulkanflags must be 0vulkandisplay must point to a valid Wayland  wl_displayvulkansurface must point to a valid Wayland  wl_surfacevulkan&vkCreateWaylandSurfaceKHR - Create a D object for a Wayland window Parametersinstance/ is the instance to associate the surface with. 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 D= handle in which the created surface object is returned.Valid Usage (Implicit)instance must be a valid s handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a D handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, s, D, vulkanevkGetPhysicalDeviceWaylandPresentationSupportKHR - Query physical device for presentation to Wayland ParametersphysicalDevice is the physical device.queueFamilyIndex is the queue family index.display is a pointer to the  wl_display+ associated with a Wayland compositor. Description This platform-specific function can( be called prior to creating a surface.Valid Usage (Implicit)See AlsoqD+3D+3None'"#%&'-./189;=>?FHIMSUVX_dghklmq8} 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    ::supportedUsageFlags    ::supportedUsageFlags    ::supportedUsageFlags    ::supportedUsageFlags    :: sharedPresentSupportedUsageFlags    :: sharedPresentSupportedUsageFlags Presentable image usage queriesNote%For reference, the mode indicated by u is equivalent to the behavior of {wgl|glX|egl}SwapBuffers with a swap interval of 1, while the mode indicated by  is equivalent to the behavior of {wgl|glX}SwapBuffers with a swap interval of -1 (from the {WGL|GLX}_EXT_swap_control_tear extensions).See AlsoN, p, qvulkanoVkSharedPresentSurfaceCapabilitiesKHR - structure describing capabilities of a surface for shared presentationValid Usage (Implicit)See AlsoM, vulkan sharedPresentSupportedUsageFlags is a bitmask of ( representing the ways the application canA use the shared presentable image from a swapchain created with  set to  or , for the surface on the specified device.  must, be included in the set but implementations may support additional usages.vulkan~ specifies that the presentation engine and application have concurrent access to a single image, which is referred to as a shared presentable image. The presentation engine is only required to update the current image after a new presentation request is received. Therefore the application must` make a presentation request whenever an update is required. However, the presentation engine may; update the current image at any point, meaning this mode may result in visible tearing.vulkan~ specifies that the presentation engine and application have concurrent access to a single image, which is referred to as a shared presentable image. The presentation engine periodically updates the current image on its regular refresh cycle. The application is only required to make one initial presentation request, after which the presentation engine must` update the current image without any need for further presentation requests. The application can indicate the image contents have been updated by making a presentation request, but this does not guarantee the timing of when it will be updated. This mode mayM result in visible tearing if rendering to the image is not timed correctly.vulkanN specifies that the presentation engine generally waits for the next vertical blanking period to update the current image. If a vertical blanking period has already passed since the last update of the current image then the presentation engine does not wait for another vertical blanking period for the update, meaning this mode may3 result in visible tearing in this case. This mode is useful for reducing visual stutter with an application that will mostly present a new image before the next vertical blanking period, but may occasionally be late, and present a new image just after the next vertical blanking period. An internal queue is used to hold pending presentation requests. New requests are appended to the end of the queue, and one request is removed from the beginning of the queue and processed during or after each vertical blanking period in which the queue is non-empty.vulkan{ specifies that the presentation engine waits for the next vertical blanking period to update the current image. Tearing cannot/ be observed. An internal queue is used to hold pending presentation requests. New requests are appended to the end of the queue, and one request is removed from the beginning of the queue and processed during each vertical blanking period in which the queue is non-empty. This is the only value of  presentMode that is required to be supported.vulkan{ specifies that the presentation engine waits for the next vertical blanking period to update the current image. Tearing cannot be observed. An internal single-entry queue is used to hold pending presentation requests. If the queue is full when a new presentation request is received, the new request replaces the existing entry, and any images associated with the prior entry become available for re-use by the application. One request is removed from the queue and processed during each vertical blanking period in which the queue is non-empty.vulkan specifies that the presentation engine does not wait for a vertical blanking period to update the current image, meaning this mode may~ result in visible tearing. No internal queuing of presentation requests is needed, as the requests are applied immediately.vulkan2vkGetSwapchainStatusKHR - Get a swapchain s status Parametersdevice is the device associated with  swapchain. swapchain is the swapchain to query.Valid Usage (Implicit)device must be a valid z handle swapchain must be a valid C handleBoth of device, and  swapchain mustD have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  swapchain must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ1  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJH2/9See Alsoz, CCCNone'"#%&'-./189;=>?FHIMSUVX_dghklmq9t<6vulkanpVkDisplaySurfaceCreateInfoKHR - Structure specifying parameters of a newly created display plane surface object DescriptionNoteCreating a display surface must] not modify the state of the displays, planes, or other resources it names. For example, it must not apply the specified mode to be set on the associated display. Application of display configuration occurs as a side effect of presenting to a display surface. Valid Usage planeIndex mustf be less than the number of display planes supported by the device as determined by calling $If the planeReorderPossible member of the 7 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 8 returned by $- for the display plane corresponding to  displayModeIf  alphaMode is ! then  globalAlpha must be between 0 and 1 , inclusive alphaMode must be 0( or one of the bits present in the supportedAlpha member of 9 returned by (- for the display plane corresponding to  displayModeThe width and height members of  imageExtent must be less than the maxImageDimensions2D member of  _Valid Usage (Implicit)sType must be  pNext must be NULLflags must be 0 displayMode must be a valid G handle transform must be a valid  value alphaMode must be a valid  valueSee AlsoG, , , , , , )7vulkanJVkDisplayPropertiesKHR - 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 Also, H, %, , , #8vulkanLVkDisplayPlanePropertiesKHR - Structure describing display plane propertiesSee AlsoH, ", $9vulkanbVkDisplayPlaneCapabilitiesKHR - Structure describing capabilities of a mode and plane combination DescriptionThe minimum and maximum position and extent fields describe the implementation limits, if any, as they apply to the specified display mode and plane. Vendors may support displaying a subset of a swapchain s presentable images on the specified display plane. This is expressed by returning minSrcPosition, maxSrcPosition,  minSrcExtent, and  maxSrcExtent? values that indicate a range of possible positions and sizes may be used to specify the region within the presentable images that source pixels will be read from when creating a swapchain on the specified display mode and plane.Vendors may also support mapping the presentable images  content to a subset or superset of the visible region in the specified display mode. This is expressed by returning minDstPosition, maxDstPosition,  minDstExtent and  maxDstExtent? values that indicate a range of possible positions and sizes mayb be used to describe the region within the display mode that the source pixels will be mapped to.Other vendors maya support only a 1-1 mapping between pixels in the presentable images and the display mode. This may& be indicated by returning (0,0) for minSrcPosition, maxSrcPosition, minDstPosition, and maxDstPosition5, and (display mode width, display mode height) for  minSrcExtent,  maxSrcExtent,  minDstExtent, and  maxDstExtent.These values indicate the limits of the implementation s individual fields. Not all combinations of values within the offset and extent ranges returned in 9] are guaranteed to be supported. Presentation requests specifying unsupported combinations may fail.See Also,  , , , (:vulkanJVkDisplayModePropertiesKHR - Structure describing display mode propertiesSee AlsoG, ;, , &;vulkandVkDisplayModeParametersKHR - Structure describing display parameters associated with a display mode DescriptionNote0For example, a 60Hz display mode would report a  refreshRate of 60,000. Valid UsageThe width member of  visibleRegion must be greater than 0The height member of  visibleRegion must be greater than 0 refreshRate must be greater than 0See Also<, :, <vulkandVkDisplayModeCreateInfoKHR - Structure specifying parameters of a newly created display mode objectValid Usage (Implicit)See Also, ;, , 'vulkanNVkSurfaceTransformFlagBitsKHR - presentation transforms supported on a deviceSee Also, 6, 1, F, , , Nvulkan4VkDisplayPlaneAlphaFlagBitsKHR - Alpha blending typeSee Also, 6vulkan8VkDisplaySurfaceCreateFlagsKHR - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also6vulkan5VkDisplayModeCreateFlagsKHR - 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, and must be zero.vulkan displayMode is a GA handle specifying the mode to use when displaying this surface.vulkan planeIndex, is the plane on which this surface appears.vulkanplaneStackIndex is the z-order of the plane.vulkan transform is a Z value specifying the transformation to apply to images as part of the scanout operation.vulkan globalAlpha6 is the global alpha value. This value is ignored if  alphaMode is not !.vulkan alphaMode is a 5 value specifying the type of alpha blending to use.vulkan imageExtent= The size of the presentable images to use with the surface.vulkansupportedAlpha is a bitmask of 0 describing the supported alpha blending modes.vulkanminSrcPositionZ is the minimum source rectangle offset supported by this plane using the specified mode.vulkanmaxSrcPosition_ 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.vulkan minSrcExtentX is the minimum source rectangle size supported by this plane using the specified mode.vulkan maxSrcExtentX is the maximum source rectangle size supported by this plane using the specified mode.vulkanminDstPosition, maxDstPosition,  minDstExtent,  maxDstExtent4 all have similar semantics to their corresponding *Src* equivalents, but apply to the output region within the mode rather than the input region within the source image. Unlike the *Src* offsets, minDstPosition and maxDstPosition may contain negative values.vulkanflags must be 0vulkan parameters must be a valid ; structurevulkan 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 .. 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 specifies that the presentation transform is not specified, and is instead determined by platform-specific considerations and mechanisms outside Vulkan.vulkan] specifies that image content is mirrored horizontally, then rotated 270 degrees clockwise.vulkan] specifies that image content is mirrored horizontally, then rotated 180 degrees clockwise.vulkan\ specifies that image content is mirrored horizontally, then rotated 90 degrees clockwise.vulkan8 specifies that image content is mirrored horizontally.vulkan@ specifies that image content is rotated 270 degrees clockwise.vulkan@ specifies that image content is rotated 180 degrees clockwise.vulkan? specifies that image content is rotated 90 degrees clockwise.vulkanF specifies that image content is presented without being transformed.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 ParametersphysicalDevice is a physical device.pPropertyCounts is a pointer to an integer related to the number of display devices available or queried, as described below. pProperties is either NULL" or a pointer to an array of 7 structures. 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, L will be returned instead of Q> to indicate that not all the available values were returned.Valid Usage (Implicit)physicalDevice must be a valid q handlepPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount 7 structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also7, q$vulkanJvkGetPhysicalDeviceDisplayPlanePropertiesKHR - Query the plane properties ParametersphysicalDevice is a physical device.pPropertyCountr is a pointer to an integer related to the number of display planes available or queried, as described below. pProperties is either NULL" or a pointer to an array of 8 structures. DescriptionIf  pProperties is NULL3, then the number of display planes available for physicalDevice is returned in pPropertyCount. Otherwise, pPropertyCount mustG point to a variable set by the user to the number of elements in the  pPropertiesf array, and on return the variable is overwritten with the number of structures actually written to  pProperties. If the value of pPropertyCount0 is less than the number of display planes for physicalDevice , at most pPropertyCount structures will be written.Valid Usage (Implicit)physicalDevice must be a valid q handlepPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount 8 structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also8, q%vulkanTvkGetDisplayPlaneSupportedDisplaysKHR - Query the list of displays a plane supports ParametersphysicalDevice is a physical device. planeIndex< is the plane which the application wishes to use, and must6 be in the range [0, physical device plane count - 1]. pDisplayCountl is a pointer to an integer related to the number of displays available or queried, as described below. pDisplays is either NULL" or a pointer to an array of H handles. 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, L will be returned instead of Q> to indicate that not all the available values were returned. Valid Usage planeIndex mustf be less than the number of display planes supported by the device as determined by calling $Valid Usage (Implicit)physicalDevice must be a valid q handle pDisplayCount must be a valid pointer to a uint32_t valueIf the value referenced by  pDisplayCount is not 0 , and  pDisplays is not NULL,  pDisplays must( be a valid pointer to an array of  pDisplayCount H handles Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee AlsoH, q&vulkanZvkGetDisplayModePropertiesKHR - Query the set of mode properties supported by the display ParametersphysicalDevice( is the physical device associated with display.display is the display to query.pPropertyCountq is a pointer to an integer related to the number of display modes available or queried, as described below. pProperties is either NULL" or a pointer to an array of : structures. 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, L will be returned instead of Q> to indicate that not all the available values were returned.Valid Usage (Implicit)physicalDevice must be a valid q handledisplay must be a valid H handlepPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount : structuresdisplay must6 have been created, allocated, or retrieved from physicalDevice Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee AlsoH, :, q'vulkan.vkCreateDisplayModeKHR - Create a display mode ParametersphysicalDevice( is the physical device associated with display.display1 is the display to create an additional mode for. pCreateInfo is a <2 structure describing the new mode to create. 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).pMode( returns the handle of the mode created.Valid Usage (Implicit)physicalDevice must be a valid q handledisplay must be a valid H handle pCreateInfo must$ be a valid pointer to a valid < structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepMode must be a valid pointer to a G handledisplay must6 have been created, allocated, or retrieved from physicalDeviceHost SynchronizationHost access to display must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJISee Also, H, <, G, q(vulkanVvkGetDisplayPlaneCapabilitiesKHR - Query capabilities of a mode and plane combination ParametersphysicalDevice( is the physical device associated with displaymode is the display mode the application intends to program when using the specified plane. Note this parameter also implicitly specifies a display. 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. pCapabilities is a pointer to a 97 structure in which the capabilities are returned.Valid Usage (Implicit)physicalDevice must be a valid q handlemode must be a valid G handle pCapabilities must be a valid pointer to a 9 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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee AlsoG, 9, q)vulkan+vkCreateDisplayPlaneSurfaceKHR - Create a D1 structure representing a display plane and mode ParametersinstanceV is the instance corresponding to the physical device the targeted display is on. pCreateInfo is a pointer to a 6c structure specifying which mode, plane, and other parameters to use, as described below. 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 D6 handle in which the created surface is returned.Valid Usage (Implicit)instance must be a valid s handle pCreateInfo must$ be a valid pointer to a valid 6 structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a D handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, 6, s, DVDGH67  8   9:;<"! #$%&'()c#$%&'()7  8   ;:<96"! "! HGDNone'"#%&'-./189;=>?FHIMSUVX_dghklmq:J:PvulkanKVkDisplayProperties2KHR - Structure describing an available display deviceValid Usage (Implicit)See Also7, , rQvulkanOVkDisplayPlaneProperties2KHR - Structure describing an available display planeValid Usage (Implicit)See Also8, , sRvulkanZVkDisplayPlaneInfo2KHR - 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 R! correspond to the arguments to L, with sType and pNext added for extensibility.Valid Usage (Implicit)sType must be fpNext must be NULLmode must be a valid G handleHost SynchronizationHost access to mode must be externally synchronizedSee AlsoG, , uSvulkangVkDisplayPlaneCapabilities2KHR - Structure describing the capabilities of a mode and plane combinationValid Usage (Implicit)See Also9, , uTvulkanMVkDisplayModeProperties2KHR - Structure describing an available display modeValid Usage (Implicit)See Also:, , tfvulkan capabilities is a 9 structure.hvulkanmodeX is the display mode the application intends to program when using the specified plane.kvulkandisplayModeProperties is a : structure.mvulkandisplayPlaneProperties is a 8 structure.ovulkandisplayProperties is a 7 structure.rvulkanZvkGetPhysicalDeviceDisplayProperties2KHR - Query information about the available displays ParametersphysicalDevice is a physical device.pPropertyCounts is a pointer to an integer related to the number of display devices available or queried, as described below. pProperties is either NULL" or a pointer to an array of P structures. Descriptionr behaves similarly to SR, with the ability to return extended information via chained output structures.Valid Usage (Implicit)physicalDevice must be a valid q handlepPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount P structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee AlsoP, qsvulkanfvkGetPhysicalDeviceDisplayPlaneProperties2KHR - Query information about the available display planes. ParametersphysicalDevice is a physical device.pPropertyCountr is a pointer to an integer related to the number of display planes available or queried, as described below. pProperties is either NULL" or a pointer to an array of Q structures. Descriptions behaves similarly to QR, with the ability to return extended information via chained output structures.Valid Usage (Implicit)physicalDevice must be a valid q handlepPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount Q structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee AlsoQ, qtvulkanVvkGetDisplayModeProperties2KHR - Query information about the available display modes. ParametersphysicalDevice( is the physical device associated with display.display is the display to query.pPropertyCountq is a pointer to an integer related to the number of display modes available or queried, as described below. pProperties is either NULL" or a pointer to an array of T structures. Descriptiont behaves similarly to JR, with the ability to return extended information via chained output structures.Valid Usage (Implicit)physicalDevice must be a valid q handledisplay must be a valid H handlepPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount T structuresdisplay must6 have been created, allocated, or retrieved from physicalDevice Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee AlsoH, T, quvulkanWvkGetDisplayPlaneCapabilities2KHR - Query capabilities of a mode and plane combination ParametersphysicalDevice- is the physical device associated with pDisplayPlaneInfo.pDisplayPlaneInfo is a pointer to a R. structure describing the plane and mode. pCapabilities is a pointer to a S7 structure in which the capabilities are returned. Descriptionu behaves similarly to L, with the ability to specify extended inputs via chained input structures, and to return extended information via chained output structures. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee AlsoS, R, qOGH7  8   9:;PnoQlmRgihSefTjk"! cdpqrstu\rstuPnoQlmTjkRgihSefdqcpHG7  8   ;:9"! "! None'"#%&'-./189;=>?FHIMSUVX_dghklmq:!5vulkan7VkDeferredOperationInfoKHR - Deferred operation request DescriptionThe application can{ request deferral of an operation by adding this structure to the argument list of a command or by providing this in the pNext chain of a relevant structure for an operation when the corresponding command is invoked. If this structure is not present, no deferral is requested. If operationHandle is .>, no deferral is requested and the command proceeds as if no 5 structure was provided.HWhen an application requests an operation deferral, the implementation mayr defer the operation. When deferral is requested and the implementation defers any operation, the implementation must return <] as the success code if no errors occurred. When deferral is requested, the implementation should defer the operation when the workload is significant, however if the implementation chooses not to defer any of the requested operations and instead executes all of them immediately, the implementation must return =, as the success code if no errors occurred. A deferred operation is created complete" with an initial result value of Q". The deferred operation becomes pending= when an operation has been successfully deferred with that operationHandle.yA deferred operation is considered pending until the deferred operation completes. A pending deferred operation becomes completez when it has been fully executed by one or more threads. Pending deferred operations will never complete until they are joined" by an application thread, using . Applications cany join multiple threads to the same deferred operation, enabling concurrent execution of subtasks within that operation.The application can query the status of a I using the  or  commands.nFrom the perspective of other commands - parameters to the original command that are externally synchronized must not be accessed before the deferred operation completes, and the result of the deferred operation (e.g. object creation) are not considered complete until the deferred operation completes.oIf the deferred operation is one which creates an object (for example, a pipeline object), the implementation mustm allocate that object as it normally would, and return a valid handle to the application. This object is a pending object, and must not be used by the application until the deferred operation is completed (unless otherwise specified by the deferral extension). When the deferred operation is complete, the application should call , to obtain the result of the operation. If % indicates failure, the application must destroy the pending object using an appropriate command, so that the implementation has an opportunity to recover the handle. The application must not perform this destruction until the deferred operation is complete. Construction of the pending object uses the same allocator which would have been used if the operation had not been deferred. Valid Usage>Any previous deferred operation that was associated with operationHandle must be completeValid Usage (Implicit)sType must be See AlsoI, vulkanoperationHandleL is a handle to a tracking object to associate with the deferred operation.vulkanAvkCreateDeferredOperationKHR - Create a deferred operation handle Parametersdevice is the device which owns  operation. pAllocator: 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.pDeferredOperation4 is a pointer to a handle in which the created I is returned.Valid Usage (Implicit)device must be a valid z handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepDeferredOperation must be a valid pointer to a I handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKSee Also, I, zvulkan=A convenience wrapper to make a compatible pair of calls to  and To ensure that  is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument.vulkanCvkDestroyDeferredOperationKHR - Destroy a deferred operation handle Parametersdevice is the device which owns  operation. operation, is the completed operation to be destroyed. pAllocator: 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. Valid UsageIf  were provided when  operation1 was created, a compatible set of callbacks must be provided here If no  were provided when  operation was created,  pAllocator must be NULL operation must be completedValid Usage (Implicit)device must be a valid z handle operation must be a valid I handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure operation must6 have been created, allocated, or retrieved from deviceSee Also, I, zvulkan`vkGetDeferredOperationMaxConcurrencyKHR - Query the maximum concurrency on a deferred operation Parametersdevice is the device which owns  operation. operation) is the deferred operation to be queried. Description*The returned value is the maximum number of threads that can usefully execute a deferred operation concurrently, reported for the state of the deferred operation at the point this command is called. This value is intended to be used to better schedule work onto available threads. Applications cant join any number of threads to the deferred operation and expect it to eventually complete, though excessive joins may return :) immediately, performing no useful work.bIf the deferred operation is currently joined to any threads, the value returned by this command may immediately be out of date.Implementations must not return zero.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.Valid Usage (Implicit)See AlsoI, zvulkanKvkGetDeferredOperationResultKHR - Query the result of a deferred operation Parametersdevice is the device which owns  operation. operation9 is the operation whose deferred result is being queried. Description&If the deferred operation is pending,  returns PJ. Otherwise, it returns the result of the deferred operation. This value must be one of the Yh 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-successcodesSuccessQPSee AlsoI, zvulkanDvkDeferredOperationJoinKHR - Assign a thread to a deferred operation Parametersdevice is the device which owns  operation. operationG is the deferred operation that the calling thread should work on. 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 Q indicates that  operation is complete. The application should use  to retrieve the result of  operation.A return value of ; indicates that the deferred operation is not complete, but there is no work remaining to assign to threads. Future calls to I are not necessary and will simply harm performance. This situation may) occur when other threads executing  are about to complete  operationN, and the implementation is unable to partition the workload any further.A return value of : indicates that the deferred operation is not complete, and there is no work for the thread to do at the time of the call. This situation may` occur if the operation encounters a temporary reduction in parallelism. By returning :, the implementation is signaling that it expects that more opportunities for parallelism will emerge as execution progresses, and that future calls to  can6 be beneficial. In the meantime, the application can/ perform other work on the calling thread.Implementations mustC guarantee forward progress by enforcing the following invariants: If only one thread has invoked ( on a given operation, that thread must5 execute the operation to completion and return Q.3If multiple threads have concurrently invoked 7 on the same operation, then at least one of them must( complete the operation and return Q.Valid Usage (Implicit)device must be a valid z handle operation must be a valid I handle operation must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ;:  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee AlsoI, zI55INone'"#%&'-./189;=>?FHIMSUVX_dghklmq; m4vulkanjVkAndroidSurfaceCreateInfoKHR - Structure specifying parameters of a newly created Android surface objectValid Usage (Implicit)See Also, , vulkanflags must be 0vulkanwindow must point to a valid Android 1vulkan&vkCreateAndroidSurfaceKHR - Create a D% object for an Android native window Parametersinstance/ is the instance to associate the surface with. pCreateInfo is a pointer to a 4X 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 D= handle in which the created surface object is returned. Description=During the lifetime of a surface created using a particular 1> handle any attempts to create another surface for the same 1* and any attempts to connect to the same 1. through other platform mechanisms will fail.NoteIn particular, only one D canA exist at a time for a given window. Similarly, a native window cannot be used by both a D and  EGLSurface simultaneously.If successful,  increments the 1 s reference count, and % will decrement it.On Android, when a swapchain s  imageExtent does not match the surface s  currentExtentZ, the presentable images will be scaled to the surface s dimensions during presentation. minImageExtent is (1,1), and maxImageExtentR is the maximum image size supported by the consumer. For the system compositor,  currentExtent: is the window size (i.e. the consumer s preferred size).Valid Usage (Implicit)instance must be a valid s handle pCreateInfo must$ be a valid pointer to a valid 4 structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a D handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJ0See Also, 4, s, DD414D1None'"#%&'-./189;=>?FHIMSUVX_dghklmq< Y$+vulkan@VkPerformanceParameterTypeINTEL - Parameters that can be queriedSee Also,vulkanuVkQueryPoolPerformanceQueryCreateInfoINTEL - Structure specifying parameters to create a pool of performance queriesMembers5To create a pool for Intel performance queries, set 4:: queryType to C and add a , structure to the pNext chain of the 4 structure.Valid Usage (Implicit)See Also, -vulkanZVkPerformanceValueINTEL - Container for value and types of parameters that can be queriedValid Usage (Implicit)See Also, , .vulkanUVkPerformanceStreamMarkerInfoINTEL - Structure specifying stream performance markers Valid Usage*The value written by the application into marker must. only used the valid bits as reported by  with the Valid Usage (Implicit)sType must be pNext must be NULLSee Also, /vulkan:VkPerformanceOverrideInfoINTEL - Performance override infoValid Usage (Implicit)See Also, , , 0vulkanGVkPerformanceMarkerInfoINTEL - Structure specifying performance markersValid Usage (Implicit)See Also, 1vulkanaVkPerformanceConfigurationAcquireInfoINTEL - Acquire a configuration to capture performance dataValid Usage (Implicit)See Also, , 2vulkanbVkInitializePerformanceApiInfoINTEL - Structure specifying parameters of initialize of the deviceValid Usage (Implicit)See Also, vulkanHVkPerformanceValueTypeINTEL - Type of the parameters that can be queriedSee Also-vulkan:VkPerformanceOverrideTypeINTEL - Performance override typeSee Also/vulkanZVkQueryPoolSamplingModeINTEL - Enum specifying how performance queries should be capturedSee Also,vulkanGVkPerformanceConfigurationTypeINTEL - Type of performance configurationSee Also1vulkantype must be a valid  valuevulkantype must be a valid  valuevulkanenable) defines whether the override is enabled.vulkan parameter4 is a potential required parameter for the override.vulkanmarkera is the marker value that will be recorded into the reports consumed by an external application.vulkanmarkerJ is the marker value that will be recorded into the opaque query results.vulkanperformanceCountersSampling must be a valid  valuevulkan pUserData# is a pointer for application data.vulkantype must be a valid  valuevulkandata must be a valid  unionvulkanR has a 32 bits integer result which tells how many bits can be written into the - value.vulkanM has a boolean result which tells whether hardware counters can be captured.vulkan stalls the stream of commands until all previously emitted commands have completed and all caches been flushed and invalidated.vulkan+ turns all rendering operations into noop.vulkan6 is the default mode in which the application calls  7 and  9 to record performance data.vulkanNvkInitializePerformanceApiINTEL - Initialize a device for performance queries Parametersdevice, is the logical device used for the queries.pInitializeInfo is a pointer to a 25 structure specifying initialization parameters. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureBKSee Alsoz, 2vulkanRvkUninitializePerformanceApiINTEL - Uninitialize a device for performance queries Parametersdevice, is the logical device used for the queries.Valid Usage (Implicit)See Alsozvulkan(vkCmdSetPerformanceMarkerINTEL - Markers ParametersfThe last marker set onto a command buffer before the end of a query will be part of the query result.Valid Usage (Implicit) commandBuffer must be a valid  handle pMarkerInfo must$ be a valid pointer to a valid 0 structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must7 support graphics, compute, or transfer operationsHost SynchronizationHost 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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureBKSee Also, 0vulkan.vkCmdSetPerformanceStreamMarkerINTEL - MarkersValid Usage (Implicit) commandBuffer must be a valid  handle pMarkerInfo must$ be a valid pointer to a valid . structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must7 support graphics, compute, or transfer operationsHost SynchronizationHost 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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureBKSee Also, .vulkan@vkCmdSetPerformanceOverrideINTEL - Performance override settings Parameters commandBuffer; is the command buffer where the override takes place. pOverrideInfo is a pointer to a /4 structure selecting the parameter to override. Valid Usage pOverrideInfo must not be used with a ( that is not reported available by Valid Usage (Implicit) commandBuffer must be a valid  handle pOverrideInfo must$ be a valid pointer to a valid / structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must7 support graphics, compute, or transfer operationsHost SynchronizationHost 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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureBKSee Also, /vulkanRvkAcquirePerformanceConfigurationINTEL - Acquire the performance query capability ParametersdeviceU is the logical device that the performance query commands will be submitted to. pAcquireInfo is a pointer to a 1E structure, specifying the performance configuration to acquire.pConfiguration is a pointer to a EE handle in which the resulting configuration object is returned. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureBKSee Alsoz, 1, Evulkan]vkReleasePerformanceConfigurationINTEL - Release a configuration to capture performance data ParametersdeviceF is the device associated to the configuration object to release. configuration( is the configuration object to release. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureBKSee Alsoz, EvulkanAvkQueueSetPerformanceConfigurationINTEL - Set a performance query Parametersqueue6 is the queue on which the configuration will be used. configuration is the configuration to use.Valid Usage (Implicit)queue must be a valid k handle configuration must be a valid E handleBoth of  configuration, and queue mustD have been created, allocated, or retrieved from the same zCommand 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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureBKSee AlsoE, kvulkanNvkGetPerformanceParameterINTEL - Query performance capabilities of the device Parametersdevice is the logical device to query. parameter is the parameter to query.pValue is a pointer to a -J structure in which the type and value of the parameter are returned. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureBKSee Alsoz, +, -EE+,-./012P-2,0./1+ENone'"#%&'-./189;=>?FHIMSUVX_dghklmq<+vulkanQVkRefreshCycleDurationGOOGLE - Structure containing the RC duration of a displaySee AlsoAvulkanLVkPresentTimesInfoGOOGLE - The earliest time each image should be presented Valid UsageswapchainCount must be the same value as ::swapchainCount , where  is included in the pNext chain of this  structureValid Usage (Implicit)sType must be IIf pTimes is not NULL, pTimes must( be a valid pointer to an array of swapchainCount  structuresswapchainCount must be greater than 0See Also, vulkanAVkPresentTimeGOOGLE - The earliest time image should be presentedSee AlsovulkanlVkPastPresentationTimingGOOGLE - Structure containing timing information about a previously-presented image DescriptionThe results for a given  swapchain and  presentID are only returned once from B.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 AlsoB3vulkan presentID7 is an application-provided identification value, that can be used with the results of B], 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.4vulkandesiredPresentTime 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.6vulkanpTimes is NULL or a pointer to an array of  elements with swapchainCount entries. If not NULL, each element of pTimesU contains the earliest time to present the image corresponding to the entry in the :: pImageIndices array.8vulkan 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.9vulkandesiredPresentTime@ 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.AvulkanMvkGetRefreshCycleDurationGOOGLE - Obtain the RC duration of the PE s display Parametersdevice is the device associated with  swapchain. swapchain5 is the swapchain to obtain the refresh duration for.pDisplayTimingProperties is a pointer to a  structure.Valid Usage (Implicit)device must be a valid z handle swapchain must be a valid C handlepDisplayTimingProperties must be a valid pointer to a  structureBoth of device, and  swapchain mustD have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  swapchain must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureH/See Alsoz, , CBvulkanRvkGetPastPresentationTimingGOOGLE - Obtain timing of a previously-presented image Parametersdevice is the device associated with  swapchain. swapchainN is the swapchain to obtain presentation timing information duration for.pPresentationTimingCount: is a pointer to an integer related to the number of . structures to query, as described below.pPresentationTimings is either NULL" or a pointer to an array of  structures. 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, L will be returned instead of Q> to indicate that not all the available values were returned.Valid Usage (Implicit)device must be a valid z handle swapchain must be a valid C handlepPresentationTimingCount must be a valid pointer to a uint32_t valueIf the value referenced by pPresentationTimingCount is not 0 , and pPresentationTimings is not NULL, pPresentationTimings must# be a valid pointer to an array of pPresentationTimingCount  structuresBoth of device, and  swapchain mustD have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  swapchain must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureH2/See Alsoz, , CC=>56234789:;<01?@ABAB=>789:;<562341@0?CNone'"#%&'-./189;=>?FHIMSUVX_dghklmq<vulkanVkStreamDescriptorSurfaceCreateInfoGGP - Structure specifying parameters of a newly created Google Games Platform stream surface objectValid Usage (Implicit)See AlsoX, , _[vulkanflags must be 0\vulkanstreamDescriptor must be a valid 6_vulkan/vkCreateStreamDescriptorSurfaceGGP - Create a D+ object for a Google Games Platform stream Parametersinstance/ is the instance to associate with the surface. pCreateInfo is a pointer to a U structure containing parameters that affect 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 D= handle in which the created surface object is returned.Valid Usage (Implicit)instance must be a valid s handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a D handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJ0See Also, s, , DDZ[\6VWXY]^__Z[\XYW^V]D6None'"#%&'-./189;=>?FHIMSUVX_dghklmq<vulkanrVkImagePipeSurfaceCreateInfoFUCHSIA - Structure specifying parameters of a newly created ImagePipe surface objectValid Usage (Implicit)See Alson, , uqvulkanflags must be 0rvulkanimagePipeHandle must be a valid  zx_handle_tuvulkan,vkCreateImagePipeSurfaceFUCHSIA - Create a D object for a Fuchsia ImagePipe Parametersinstance/ is the instance to associate with 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 D= handle in which the created surface object is returned.Valid Usage (Implicit)instance must be a valid s handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a D handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, , s, DDpqr7lmnostuupqrnomtlsD7None'"#%&'-./189;=>?FHIMSUVX_dghklmq=_avulkaneVkValidationCacheCreateInfoEXT - Structure specifying parameters of a newly created validation cache Valid UsageIf initialDataSize is not 0, it must be equal to the size of  pInitialData, as returned by  when  pInitialData was originally retrievedIf initialDataSize is not 0,  pInitialData must2 have been retrieved from a previous call to Valid Usage (Implicit)sType must be pNext must be NULLflags must be 0If initialDataSize is not 0,  pInitialData must( be a valid pointer to an array of initialDataSize bytesSee Also, , vulkankVkShaderModuleValidationCacheCreateInfoEXT - Specify validation cache to use during shader module creationValid Usage (Implicit)See Also, BvulkanCVkValidationCacheHeaderVersionEXT - Encode validation cache versionSee Also, vulkan9VkValidationCacheCreateFlagsEXT - Reserved for future use DescriptionQ is a bitmask type for setting a mask, but is currently reserved for future use.See AlsovulkanvalidationCache must be a valid B handlevulkanflags is reserved for future use.vulkaninitialDataSize is the number of bytes in  pInitialData. If initialDataSize7 is zero, the validation cache will initially be empty.vulkan pInitialData is a pointer to previously retrieved validation cache data. If the validation cache data is incompatible (as defined below) with the device, the validation cache will be initially empty. If initialDataSize is zero,  pInitialData is ignored.vulkan0 specifies version one of the validation cache.vulkan;vkCreateValidationCacheEXT - Creates a new validation cache ParametersdeviceE is the logical device that creates the validation cache object. pCreateInfo is a pointer to a W structure containing the initial parameters for the validation cache object. pAllocator: 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.pValidationCache is a pointer to a BH handle in which the resulting validation cache object is returned. DescriptionNote Applications canU track and manage the total host memory size of a validation cache object using the  pAllocator. Applications canH limit the amount of data retrieved from a validation cache object in . Implementations shouldy not internally limit the total number of entries added to a validation cache object or the total host memory consumed.!Once created, a validation cache can be passed to the 8( command by adding this object to the 8; structure s pNext chain. If a  object is included in the 8;::pNext chain, and its validationCache field is not ., the implementation will query it for possible reuse opportunities and update it with new content. The use of the validation cache object in these commands is internally synchronized, and the same validation cache object can- be used in multiple threads simultaneously.NoteImplementations should make every effort to limit any critical sections to the actual accesses to the cache, which is expected to be significantly shorter than the duration of the 8 command.Valid Usage (Implicit)device must be a valid z handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepValidationCache must be a valid pointer to a B handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKSee Also, z, , Bvulkan=A convenience wrapper to make a compatible pair of calls to  and To ensure that  is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument.vulkan?vkDestroyValidationCacheEXT - Destroy a validation cache object ParametersdeviceF is the logical device that destroys the validation cache object.validationCache2 is the handle of the validation cache to destroy. pAllocator: 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. Valid UsageIf  were provided when validationCache1 was created, a compatible set of callbacks must be provided here If no  were provided when validationCache was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid z handleIf validationCache is not ., validationCache must be a valid B handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf validationCache is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to validationCache must be externally synchronizedSee Also, z, BvulkanHvkGetValidationCacheDataEXT - Get the data store from a validation cache Parametersdevice6 is the logical device that owns the validation cache.validationCache/ is the validation cache to retrieve data from. pDataSizeh is a pointer to a value related to the amount of data in the validation cache, as described below.pData is either NULL or a pointer to a buffer. DescriptionIf pData is NULL), then the maximum size of the data that canD be retrieved from the validation cache, in bytes, is returned in  pDataSize . Otherwise,  pDataSize mustY point to a variable set by the user to the size of the buffer, in bytes, pointed to by pDataZ, and on return the variable is overwritten with the amount of data actually written to pData.If  pDataSize$ is less than the maximum size that can0 be retrieved by the validation cache, at most  pDataSize bytes will be written to pData, and  will return L. Any data written to pData is valid and can be provided as the  pInitialData member of the  structure passed to . Two calls to  with the same parameters mustj retrieve the same data unless a command that modifies the contents of the cache is called between them. Applications can store the data retrieved from the validation cache, and use these data, possibly in a future run of the application, to populate new validation cache objects. The results of validation, however, may depend on the vendor ID, device ID, driver version, and other details of the device. To enable applications to detect when previously retrieved data is incompatible with the device, the initial bytes written to pData must2 be a header consisting of the following members: Offset 1 Size 2 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  4  a t value written as a stream of bytes, with the least significant byte first # 8  D  a layer commit ID expressed as a UUID, which uniquely identifies the version of the validation layers used to generate these validation results ,Layout for validation cache header version The first four bytes encode the length of the entire validation cache header, in bytes. This value includes all fields in the header including the validation cache version field and the size of the length field.KThe next four bytes encode the validation cache version, as described for &. A consumer of the validation cache shouldG use the cache version to interpret the remainder of the cache header.If  pDataSizeR is less than what is necessary to store this header, nothing will be written to pData and zero will be written to  pDataSize.Valid Usage (Implicit)device must be a valid z handlevalidationCache must be a valid B handle pDataSize must be a valid pointer to a size_t valueIf the value referenced by  pDataSize is not 0, and pData is not NULL, pData must( be a valid pointer to an array of  pDataSize bytesvalidationCache must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Alsoz, BvulkanJvkMergeValidationCachesEXT - Combine the data stores of validation caches ParametersdeviceC is the logical device that owns the validation cache objects.dstCacheB is the handle of the validation cache to merge results into. srcCacheCount is the length of the  pSrcCaches array. pSrcCachesV 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. DescriptionNoteVThe details of the merge operation are implementation dependent, but implementations shouldT merge the contents of the specified validation caches and prune duplicate entries. Valid UsagedstCache must( not appear in the list of source cachesValid Usage (Implicit)device must be a valid z handledstCache must be a valid B handle pSrcCaches must( be a valid pointer to an array of  srcCacheCount valid B handles srcCacheCount must be greater than 0dstCache must6 have been created, allocated, or retrieved from deviceEach element of  pSrcCaches must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to dstCache must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Alsoz, BBBNone'"#%&'-./189;=>?FHIMSUVX_dghklmq=xvulkanfVkMetalSurfaceCreateInfoEXT - Structure specifying parameters of a newly created Metal surface objectValid Usage (Implicit)See Also, , vulkanflags must be 0vulkanpLayer is a reference to a 2+ object representing a renderable surface.vulkanGvkCreateMetalSurfaceEXT - Create a VkSurfaceKHR object for CAMetalLayer Parametersinstance5 is the instance with which to associate the surface. pCreateInfo is a pointer to a X structure specifying 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 D= handle in which the created surface object is returned.Valid Usage (Implicit)instance must be a valid s handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a D handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJ0See Also, s, , DD2D2None'"#%&'-./189;=>?FHIMSUVX_dghklmq=evulkanlVkHeadlessSurfaceCreateInfoEXT - Structure specifying parameters of a newly created headless surface objectValid Usage (Implicit)See Also, , vulkanflags must be 0vulkan0vkCreateHeadlessSurfaceEXT - Create a headless D object Parametersinstance/ is the instance to associate the surface with. 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 D= handle in which the created surface object is returned.Valid Usage (Implicit)instance must be a valid s handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSurface must be a valid pointer to a D handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, , s, D D DNone'"#%&'-./189;=>?FHIMSUVX_dghklmq= vulkan@VkXYColorEXT - structure to specify X,Y chromaticity coordinatesSee Alsovulkan4VkHdrMetadataEXT - structure to specify Hdr metadataValid Usage (Implicit)NoteAThe validity and use of this data is outside the scope of Vulkan.See Also, , vulkandisplayPrimaryRedD is the mastering display s red primary in chromaticity coordinatesvulkandisplayPrimaryGreenF is the mastering display s green primary in chromaticity coordinatesvulkandisplayPrimaryBlueE is the mastering display s blue primary in chromaticity coordinatesvulkan whitePointD is the mastering display s white-point in chromaticity coordinatesvulkan maxLuminance: is the maximum luminance of the mastering display in nitsvulkan minLuminance: is the minimum luminance of the mastering display in nitsvulkanmaxContentLightLevel' is content s maximum luminance in nitsvulkanmaxFrameAverageLightLevel2 is the maximum frame average light level in nitsvulkan2vkSetHdrMetadataEXT - function to set Hdr metadata Parametersdevice; is the logical device where the swapchain(s) were created.swapchainCount. is the number of swapchains included in  pSwapchains. pSwapchains is a pointer to an array of swapchainCount C handles. pMetadata is a pointer to an array of swapchainCount  structures.Valid Usage (Implicit)device must be a valid z handle pSwapchains must( be a valid pointer to an array of swapchainCount valid C handles pMetadata must( be a valid pointer to an array of swapchainCount valid  structuresswapchainCount must be greater than 0Both of device, and the elements of  pSwapchains mustD have been created, allocated, or retrieved from the same )See Alsoz, , CCCNone'"#%&'-./189;=>?FHIMSUVX_dghklmq= 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, , M, , , , ,  vulkanLVkCompositeAlphaFlagBitsKHR - alpha compositing modes supported on a device Description&These values are described as follows:See Also, NvulkansupportedSurfaceCounters 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 surfacevulkan specifies a counter incrementing once every time a vertical blanking period occurs on the display associated with the surface.vulkanu: The way in which the presentation engine treats the alpha channel in the images is unknown to the Vulkan API. Instead, the application is responsible for setting the composite alpha blending mode using native window system commands. If the application does not set the blending mode using native window system commands, then a platform-specific default will be used.vulkanH: The alpha channel, if it exists, of the images is respected in the compositing process. The non-alpha channels of the image are not expected to already be multiplied by the alpha channel by the application; instead, the compositor will multiply the non-alpha channels of the image by the alpha channel during compositing. vulkan : The alpha channel, if it exists, of the images is respected in the compositing process. The non-alpha channels of the image are expected to already be multiplied by the alpha channel by the application. vulkan : The alpha channel, if it exists, of the images is ignored in the compositing process. Instead, the image is treated as if it has a constant alpha of 1.0. vulkanGvkGetPhysicalDeviceSurfaceCapabilities2EXT - Query surface capabilities ParametersphysicalDevicem is the physical device that will be associated with the swapchain to be created, as described for .surface; is the surface that will be associated with the swapchain.pSurfaceCapabilities is a pointer to a 7 structure in which the capabilities are returned. Description  behaves similarly to mZ, with the ability to return extended information by adding extension structures to the pNext chain of its pSurfaceCapabilities parameter.Valid Usage (Implicit)physicalDevice must be a valid q handlesurface must be a valid D handlepSurfaceCapabilities must be a valid pointer to a  structureBoth of physicalDevice, and surface mustD have been created, allocated, or retrieved from the same ) Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJ/See Alsoq, , D,D    :      DNone'"#%&'-./189;=>?FHIMSUVX_dghklmq>vulkanXVkSurfaceFormatKHR - Structure describing a supported swapchain format-color space pairSee AlsoZ, G, I, 4vulkanJVkSurfaceCapabilitiesKHR - Structure describing capabilities of a surface DescriptionNote9Supported usage flags of a presentable image when using  or % presentation mode are provided by =:: sharedPresentSupportedUsageFlags.NoteFormulas such as min(N,  maxImageCount) are not correct, since  maxImageCount may be zero.See Also, , M, G, , , 3"vulkanformat is a G0 that is compatible with the specified surface.#vulkan colorSpace is a presentation Z& 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 can: use the presentable images of a swapchain created with  set to , ,  or , for the surface on the specified device.  must, be included in the set but implementations may support additional usages.1vulkan3vkDestroySurfaceKHR - Destroy a VkSurfaceKHR object Parametersinstance, is the instance used to create the surface.surface is the surface to destroy. 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). Description Destroying a D merely severs the connection between Vulkan and the native surface, and does not imply destroying the native surface, closing a window, or similar behavior. Valid UsageAll k objects created for surface must. have been destroyed prior to destroying surfaceIf  were provided when surface1 was created, a compatible set of callbacks must be provided here If no  were provided when surface was created,  pAllocator must be NULLValid Usage (Implicit)instance must be a valid s handleIf surface is not ., surface must be a valid D handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf surface is a valid handle, it must6 have been created, allocated, or retrieved from instanceHost SynchronizationHost access to surface must be externally synchronizedSee Also, s, D2vulkanJvkGetPhysicalDeviceSurfaceSupportKHR - Query if presentation is supported ParametersphysicalDevice is the physical device.queueFamilyIndex is the queue family.surface is the surface. pSupported is a pointer to a , which is set to  < to indicate support, and  = otherwise. Valid UsagequeueFamilyIndex must be less than pQueueFamilyPropertyCount returned by  e for the given physicalDeviceValid Usage (Implicit)physicalDevice must be a valid q handlesurface must be a valid D handle pSupported must be a valid pointer to a  valueBoth of physicalDevice, and surface mustD have been created, allocated, or retrieved from the same s Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJ/See Also, q, D3vulkanFvkGetPhysicalDeviceSurfaceCapabilitiesKHR - Query surface capabilities ParametersphysicalDevicem is the physical device that will be associated with the swapchain to be created, as described for .surface; is the surface that will be associated with the swapchain.pSurfaceCapabilities is a pointer to a 7 structure in which the capabilities are returned.Valid Usage (Implicit)physicalDevice must be a valid q handlesurface must be a valid D handlepSurfaceCapabilities must be a valid pointer to a  structureBoth of physicalDevice, and surface mustD have been created, allocated, or retrieved from the same s Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJ/See Alsoq, , D4vulkanPvkGetPhysicalDeviceSurfaceFormatsKHR - Query color formats supported by surface ParametersphysicalDevicem is the physical device that will be associated with the swapchain to be created, as described for .surface; is the surface that will be associated with the swapchain.pSurfaceFormatCountp is a pointer to an integer related to the number of format pairs available or queried, as described below.pSurfaceFormats is either NULL" or a pointer to an array of  structures. 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, L will be returned instead of Q> to indicate that not all the available values were returned.%The number of format pairs supported must! be greater than or equal to 1. pSurfaceFormats must' not contain an entry whose value for format is E.If pSurfaceFormats# includes an entry whose value for  colorSpace is m and whose value for formatm 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 Usagesurface must be supported by physicalDevice, as reported by 22 or an equivalent platform-specific mechanismValid Usage (Implicit)physicalDevice must be a valid q handlesurface must be a valid D handlepSurfaceFormatCount must be a valid pointer to a uint32_t valueIf the value referenced by pSurfaceFormatCount is not 0 , and pSurfaceFormats is not NULL, pSurfaceFormats must( be a valid pointer to an array of pSurfaceFormatCount  structuresBoth of physicalDevice, and surface mustD have been created, allocated, or retrieved from the same s Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJ/See Alsoq, , D5vulkanOvkGetPhysicalDeviceSurfacePresentModesKHR - Query supported presentation modes ParametersphysicalDevicem is the physical device that will be associated with the swapchain to be created, as described for .surface; is the surface that will be associated with the swapchain.pPresentModeCountv is a pointer to an integer related to the number of presentation modes available or queried, as described below. pPresentModes is either NULL" or a pointer to an array of : values, indicating the 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, L will be returned instead of Q> to indicate that not all the available values were returned.Valid Usage (Implicit)physicalDevice must be a valid q handlesurface must be a valid D handlepPresentModeCount must be a valid pointer to a uint32_t valueIf the value referenced by pPresentModeCount is not 0 , and  pPresentModes is not NULL,  pPresentModes must( be a valid pointer to an array of pPresentModeCount  valuesBoth of physicalDevice, and surface mustD have been created, allocated, or retrieved from the same s Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJ/See Alsoq, , DHD!"#$+%&'()*,-.Z[mlkjihgfedcba`_^   /012345k12345$+%&'()*,-.!"# 0/DZ[mlkjihgfedcba`_^mlkjihgfedcba`_^    None'"#%&'-./189;=>?FHIMSUVX_dghklmq>vulkanFVkSwapchainCounterCreateInfoEXT - Specify the surface counters desired Valid Usage The bits in surfaceCounters must be supported by N::surface, as reported by kValid Usage (Implicit)sType must be HsurfaceCounters must be a valid combination of  valuesSee Also, vulkan=VkDisplayPowerInfoEXT - Describe the power state of a displayValid Usage (Implicit)See AlsoE, , Vvulkan:VkDisplayEventInfoEXT - Describe a display event to createValid Usage (Implicit)See AlsoA, , Xvulkan8VkDeviceEventInfoEXT - Describe a device event to createValid Usage (Implicit)See AlsoC, , WAvulkanAVkDisplayEventTypeEXT - Events that can occur on a display objectSee AlsoCvulkan?VkDeviceEventTypeEXT - Events that can occur on a device objectSee AlsoEvulkan<VkDisplayPowerStateEXT - Possible power states for a displaySee AlsoHvulkansurfaceCounters is a bitmask of : specifying surface counters to enable for the swapchain.Jvulkan displayEvent must be a valid A valueLvulkan deviceEvent must be a valid C valueNvulkan powerState must be a valid E valueQvulkanQ specifies that the fence is signaled when the first pixel of the next display refresh cycle leaves the display engine for the display.RvulkanR| 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.SvulkanS* specifies that the display is powered on.TvulkanTI specifies that the display is put into a low power mode, from which it may be able to transition back to S" more quickly than if it were in U . This state may be the same as U.UvulkanU- specifies that the display is powered down.Vvulkan;vkDisplayPowerControlEXT - Set the power state of a display Parametersdevice% is a logical device associated with display.display. is the display whose power state is modified.pDisplayPowerInfo is a 2 structure specifying the new power state of display.Valid Usage (Implicit)device must be a valid z handledisplay must be a valid H handlepDisplayPowerInfo must$ be a valid pointer to a valid  structureBoth of device, and display mustD have been created, allocated, or retrieved from the same )q Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQSee Alsoz, H, WvulkanDvkRegisterDeviceEventEXT - Signal a fence when a device event occurs Parametersdevice( is a logical device on which the event may occur.pDeviceEventInfo is a pointer to a D structure describing the event of interest to the application. pAllocator: 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.pFenceO is a pointer to a handle in which the resulting fence object is returned.Valid Usage (Implicit)device must be a valid z handlepDeviceEventInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepFence must be a valid pointer to a w handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQSee Also, z, , wXvulkanFvkRegisterDisplayEventEXT - Signal a fence when a display event occurs Parametersdevice% is a logical device associated with displaydisplay# is the display on which the event may occur.pDisplayEventInfo is a pointer to a D structure describing the event of interest to the application. pAllocator: 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.pFenceO is a pointer to a handle in which the resulting fence object is returned.Valid Usage (Implicit)device must be a valid z handledisplay must be a valid H handlepDisplayEventInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepFence must be a valid pointer to a w handleBoth of device, and display mustD have been created, allocated, or retrieved from the same )q Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQSee Also, z, , H, wYvulkanGvkGetSwapchainCounterEXT - Query the current value of a surface counter Parametersdevice is the z associated with  swapchain. swapchain8 is the swapchain from which to query the counter value.counter is the counter to query. pCounterValue. will return the current value of the counter. DescriptionXIf a counter is not available because the swapchain is out of date, the implementation may return 2. Valid Usage One or more present commands on  swapchain must4 have been processed by the presentation engineValid Usage (Implicit)device must be a valid z handle swapchain must be a valid C handlecounter must be a valid  value pCounterValue must be a valid pointer to a uint64_t valueBoth of device, and  swapchain mustD have been created, allocated, or retrieved from the same ) Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureH2See Alsoz, , C'CHGHMNIJKL?@AQBCRDEUTSFOPVWXY-VWXYMNKLIJGHEUTSFUTSCRDRAQBQ@P?OHCNone'"#%&'-./189;=>?FHIMSUVX_dghklmq?vulkan@vkReleaseDisplayEXT - Release access to an acquired VkDisplayKHR ParametersphysicalDevice' The physical device the display is on.display# The display to release control of. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQSee AlsoH, qHHNone'"#%&'-./189;=>?FHIMSUVX_dghklmq@2vulkanoVkDebugUtilsMessageTypeFlagBitsEXT - 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 Also, , vulkanRVkDebugUtilsObjectNameInfoEXT - Specify parameters of a name to give to an object Description Applications may> change the name associated with an object simply by calling  again with a new string. If  pObjectName is either NULL> or an empty string, then any previously set name is removed. Valid UsageIf  objectType is %F,  objectHandle must not be .If  objectType is not %F,  objectHandle must be .; or a valid Vulkan handle of the type associated with  objectType as defined in the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-object-types+VkObjectType and Vulkan Handle Relationship tableValid Usage (Implicit)sType must be jpNext must be NULL objectType must be a valid  valueIf  pObjectName is not NULL,  pObjectName must' be a null-terminated UTF-8 stringSee Also, , , vulkanhVkDebugUtilsMessengerCreateInfoEXT - Structure specifying parameters of a newly created debug messenger Description For each J 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 J 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 J 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 Jm 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, , , , , 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 k6 which has had one or more labels associated with it. Likewise,  pCmdBufLabels will only be non-NULL if one of the objects in pObjects' can be related directly to a defined  which has had one or more labels associated with it. Additionally, while command buffer labels allow for beginning and ending across different command buffers, the debug messaging framework cannot guarantee that labels in  pCmdBufLables will contain those defined outside of the associated command buffer. This is partially due to the fact that the association of one command buffer with another may not have been defined at the time the debug message is triggered.Valid Usage (Implicit)sType must be mpNext must be NULLflags must be 0If pMessageIdName is not NULL, pMessageIdName must' be a null-terminated UTF-8 stringpMessage must" be a null-terminated UTF-8 stringIf queueLabelCount is not 0,  pQueueLabels must( be a valid pointer to an array of queueLabelCount valid  structuresIf cmdBufLabelCount is not 0,  pCmdBufLabels must( be a valid pointer to an array of cmdBufLabelCount valid  structuresIf  objectCount is not 0, pObjects must( be a valid pointer to an array of  objectCount valid  structuresSee Also, , , , vulkan;VkDebugUtilsLabelEXT - Specify parameters of a label regionValid Usage (Implicit)See Also, , , , , vulkan]PFN_vkDebugUtilsMessengerCallbackEXT - Application-defined debug messenger callback function ParametersmessageSeverity specifies the  that triggered this callback. messageTypes is a bitmask of @ specifying which type of event(s) triggered this callback. pCallbackData4 contains all the callback related data in the  structure. pUserData) is the user data provided when the J was created. Description The callback must not call .The callback returns a E, which is interpreted in a layer-specified manner. The application should always return . The 1 value is reserved for use in layer development.See Alsovulkanflags 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 k4 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 must be 0vulkanmessageSeverity must not be 0vulkan messageType must not be 0vulkanpfnUserCallback must be a valid  valuevulkan pUserData+ is user data to be passed to the callback.vulkan pLabelName must" be a null-terminated UTF-8 stringvulkancolore 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 must be a valid  valuevulkan objectHandle must7 be a valid Vulkan handle of the type associated with  objectType as defined in the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-object-types+VkObjectType and Vulkan Handle Relationship tablevulkantagName& is a numerical identifier of the tag.vulkantagSize must be greater than 0vulkanpTag must# be a valid pointer to an array of tagSize bytesvulkan objectType is a 0 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.vulkanA specifies a potentially non-optimal use of Vulkan, e.g. using   when setting 0::loadOp to 4G would have worked.vulkan specifies that something has occurred during validation against the Vulkan specification that may indicate invalid behavior.vulkanp 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.vulkano 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 Parametersdevice' is the device that created the object. pNameInfo is a pointer to a G structure specifying parameters of the name to set on the object. Valid UsagepNameInfo->objectType must not be %FpNameInfo->objectHandle must not be .Valid Usage (Implicit)device must be a valid z handle pNameInfo must$ be a valid pointer to a valid  structureHost SynchronizationHost access to pNameInfo->objectHandle must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, zvulkan@vkSetDebugUtilsObjectTagEXT - Attach arbitrary data to an object Parametersdevice' is the device that created the object.pTagInfo is a pointer to a I structure specifying parameters of the tag to attach to the object.Valid Usage (Implicit)device must be a valid z handlepTagInfo must$ be a valid pointer to a valid  structureHost SynchronizationHost access to pTagInfo->objectHandle must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, zvulkan@vkQueueBeginDebugUtilsLabelEXT - Open a queue debug label region Parametersqueue5 is the queue in which to start a debug label region. pLabelInfo is a pointer to a B structure specifying parameters of the label region to open.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  - See Also, kvulkan?vkQueueEndDebugUtilsLabelEXT - Close a queue debug label region Parametersqueue= is the queue in which a debug label region should be closed. Description The calls to  and  must be matched and balanced. Valid UsageThere must be an outstanding  command prior to the  on the queueValid Usage (Implicit)queue must be a valid k 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 Alsokvulkan=vkQueueInsertDebugUtilsLabelEXT - Insert a label into a queue Parametersqueue8 is the queue into which a debug label will be inserted. pLabelInfo is a pointer to a = structure specifying parameters of the label to insert.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  - See Also, kvulkanGvkCmdBeginDebugUtilsLabelEXT - Open a command buffer debug label region Parameters commandBuffer? is the command buffer into which the command is recorded. pLabelInfo is a pointer to a B structure specifying parameters of the label region to open.Valid Usage (Implicit) commandBuffer must be a valid  handle pLabelInfo must$ be a valid pointer to a valid  structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must- support graphics, or compute operationsHost SynchronizationHost 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 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 first argument. To just extract the pair pass '(,)' as the first argument.$Note that there is no inner resourcevulkan@vkCmdEndDebugUtilsLabelEXT - Close a command buffer label region Parameters commandBuffer? is the command buffer into which the command is recorded. DescriptionAn application may open a debug label region in one command buffer and close it in another, or otherwise split debug label regions across multiple command buffers or multiple queue submissions. When viewed from the linear series of submissions to a single queue, the calls to  and  must be matched and balanced. Valid UsageThere must be an outstanding  command prior to the  on the queue that  commandBuffer is submitted toIf  commandBuffer& is a secondary command buffer, there must be an outstanding  command recorded to  commandBuffer6 that has not previously been ended by a call to Valid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must- support graphics, or compute operationsHost SynchronizationHost 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 AlsovulkanDvkCmdInsertDebugUtilsLabelEXT - Insert a label into a command buffer Parameters commandBuffer? is the command buffer into which the command is recorded.pInfo is a pointer to a = structure specifying parameters of the label to insert.Valid Usage (Implicit) commandBuffer must be a valid  handle pLabelInfo must$ be a valid pointer to a valid  structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must- support graphics, or compute operationsHost SynchronizationHost 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 object Parametersinstance1 is the instance the messenger will be used with. pCreateInfo is a pointer to a  structure containing the callback pointer, as well as defining conditions under which this messenger will trigger the callback. pAllocator: 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. pMessenger is a pointer to a J5 handle in which the created object is returned.Valid Usage (Implicit)instance must be a valid s handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pMessenger must be a valid pointer to a J handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKThe 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, , J, svulkan=A convenience wrapper to make a compatible pair of calls to  and To ensure that  is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument.vulkanBvkDestroyDebugUtilsMessengerEXT - Destroy a debug messenger object Parametersinstance0 is the instance where the callback was created. messenger is the J object to destroy.  messenger/ is an externally synchronized object and mustE not be used on more than one thread at a time. This means that  must. not be called when a callback is active. pAllocator: 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. Valid UsageIf  were provided when  messenger1 was created, a compatible set of callbacks must be provided here If no  were provided when  messenger was created,  pAllocator must be NULLValid Usage (Implicit)instance must be a valid s handle messenger must be a valid J handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure messenger 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, J, svulkanCvkSubmitDebugUtilsMessageEXT - Inject a message into a debug stream Parametersinstance is the debug stream s s.messageSeverity is the % severity of this event/message. messageTypes is a bitmask of F specifying which type of event(s) to identify with this message. pCallbackData4 contains all the callback related data in the  structure. DescriptionThe call will propagate through the layers and generate callback(s) as indicated by the message s flags. The parameters are passed on to the callback in addition to the  pUserDataB value that was defined at the time the messenger was registered. Valid UsageThe  objectType member of each element of pCallbackData->pObjects must not be %FValid Usage (Implicit)instance must be a valid s handlemessageSeverity must be a valid  value messageTypes must be a valid combination of  values messageTypes must not be 0 pCallbackData must$ be a valid pointer to a valid  structureSee Also, , , sFJMJNone'"#%&'-./189;=>?FHIMSUVX_dghklmqANvulkanAVkDebugReportObjectTypeEXT - Specify the type of an object handle Description'  = Vulkan Handle Type    < Unknown/Undefined Handle     s     )q     )     )r     )s     )t     )u     )v     )w     )x     )y     )z     ){     )|     )}     )     )~     )     )     )     )     )     )     )     )     k     k     K     k     k    >  and Vulkan Handle RelationshipNoteThe primary expected use of 4 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 K 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 K* 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 Kn objects were created. A callback will always be executed in the same thread as the originating Vulkan call.A callback may be called from multiple threads simultaneously (if the application is making Vulkan calls from multiple threads).Valid Usage (Implicit)See Also, , ,  'vulkanRPFN_vkDebugReportCallbackEXT - Application-defined debug report callback function Parametersflags specifies the # that triggered this callback. objectType is a i value specifying the type of object being used or created at the time the event was triggered.object0 is the object where the issue was detected. If  objectType is  , object is undefined.locationJ is a component (layer, driver, loader) defined value specifying the location of the trigger. This is an optional value. messageCodeL is a layer-defined value indicating what test triggered this callback. pLayerPrefixl is a null-terminated string that is an abbreviation of the name of the component making the callback.  pLayerPrefix5 is only valid for the duration of the callback.pMessageD is a null-terminated string detailing the trigger conditions. pMessage5 is only valid for the duration of the callback. pUserData& is the user data given when the K was created. Description The callback must not call  ).The callback returns a E, which is interpreted in a layer-specified manner. The application should always return . The 1 value is reserved for use in layer development.object must be a Vulkan object or .. If  objectType is not   and object is not ., object must? be a Vulkan object of the corresponding type associated with  objectType as defined in  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debug-report-object-types.See Alsovulkanflags must be a valid combination of  valuesvulkan pfnCallback must be a valid  valuevulkan pUserData+ is user data to be passed to the callback. !vulkan !F specifies diagnostic information from the implementation and layers. "vulkan "[ specifies that the application has violated a valid usage condition of the specification. #vulkan #A specifies a potentially non-optimal use of Vulkan, e.g. using   when setting 0::loadOp to 4G would have worked. $vulkan $ specifies use of Vulkan that may expose an app bug. Such cases may not be immediately harmful, such as a fragment shader outputting to a location with no attachment. Other cases may point to behavior that is almost certainly bad when unintended such as using an image whose memory has not been filled. In general if you see a warning but you know that the behavior is intended/desired, then simply ignore the warning. %vulkan %o specifies an informational message such as resource details that may be handy when debugging an application. 'vulkanFvkCreateDebugReportCallbackEXT - Create a debug report callback object Parametersinstance0 is the instance the callback will be logged on. pCreateInfo is a pointer to a V structure defining the conditions under which this callback will be called. pAllocator: 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. pCallback is a pointer to a K5 handle in which the created object is returned.Valid Usage (Implicit)instance must be a valid s handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pCallback must be a valid pointer to a K handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKSee Also, , K, s (vulkan=A convenience wrapper to make a compatible pair of calls to  ' and  )To ensure that  ) is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument. )vulkanHvkDestroyDebugReportCallbackEXT - Destroy a debug report callback object Parametersinstance0 is the instance where the callback was created.callback is the K object to destroy. callback/ is an externally synchronized object and mustE not be used on more than one thread at a time. This means that  ) must. not be called when a callback is active. pAllocator: 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. Valid UsageIf  were provided when callback1 was created, a compatible set of callbacks must be provided here If no  were provided when callback was created,  pAllocator must be NULLValid Usage (Implicit)instance must be a valid s handlecallback must be a valid K handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurecallback must6 have been created, allocated, or retrieved from instanceHost SynchronizationHost access to callback must be externally synchronizedSee Also, K, s *vulkan>vkDebugReportMessageEXT - Inject a message into a debug stream Parametersinstance is the debug stream s s.flags specifies the + classification of this event/message. objectType is a ^ specifying the type of object being used or created at the time the event was triggered.object- is the object where the issue was detected. object can be .6 if there is no object associated with the event.location! is an application defined value. messageCode! is an application defined value. pLayerPrefixE is the abbreviation of the component making this event/message.pMessageC is a null-terminated string detailing the trigger conditions. DescriptionThe call will propagate through the layers and generate callback(s) as indicated by the message s flags. The parameters are passed on to the callback in addition to the  pUserDataA value that was defined at the time the callback was registered. Valid Usageobject must be a Vulkan object or .If  objectType is not   and object is not ., object mustC be a Vulkan object of the corresponding type associated with  objectType as defined in ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debug-report-object-typesValid Usage (Implicit)instance must be a valid s handleflags must be a valid combination of  valuesflags must not be 0 objectType must be a valid  value pLayerPrefix must" be a null-terminated UTF-8 stringpMessage must" be a null-terminated UTF-8 stringSee Also, , s?K                            % $ # " ! & ' ( ) *g ' ( ) * & % $ # " ! % $ # " !                                                      KNone'"#%&'-./189;=>?FHIMSUVX_dghklmqAvulkanSVkDebugMarkerObjectTagInfoEXT - 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, ,  OvulkanSVkDebugMarkerObjectNameInfoEXT - Specify parameters of a name to give to an object Description Applications may> change the name associated with an object simply by calling  N< again with a new string. To remove a previously set name,  pObjectName should be set to an empty string.Valid Usage (Implicit)See Also, ,  NvulkanRVkDebugMarkerMarkerInfoEXT - Specify parameters of a command buffer marker regionValid Usage (Implicit)See Also,  P,  R @vulkan pMarkerName must" be a null-terminated UTF-8 string Avulkancolor 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. Cvulkan objectType must be a valid  value Dvulkanobject 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 EvulkantagName& is a numerical identifier of the tag. FvulkantagSize must be greater than 0 GvulkanpTag must# be a valid pointer to an array of tagSize bytes Ivulkan objectType must be a valid  value Jvulkanobject 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 Kvulkan pObjectName must" be a null-terminated UTF-8 string NvulkanFvkDebugMarkerSetObjectNameEXT - Give a user-friendly name to an object Parametersdevice' is the device that created the object. pNameInfo is a pointer to a P structure specifying the parameters of the name to set on the object.Valid Usage (Implicit)device must be a valid z handle pNameInfo must$ be a valid pointer to a valid  structureHost SynchronizationHost access to pNameInfo->object must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, z OvulkanAvkDebugMarkerSetObjectTagEXT - Attach arbitrary data to an object Parametersdevice' is the device that created the object.pTagInfo is a pointer to a M structure specifying the parameters of the tag to attach to the object.Valid Usage (Implicit)device must be a valid z handlepTagInfo must$ be a valid pointer to a valid  structureHost SynchronizationHost access to pTagInfo->object must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, z Pvulkan>vkCmdDebugMarkerBeginEXT - Open a command buffer marker region Parameters commandBuffer? is the command buffer into which the command is recorded. pMarkerInfo is a pointer to a G structure specifying the parameters of the marker region to open.Valid Usage (Implicit) commandBuffer must be a valid  handle pMarkerInfo must$ be a valid pointer to a valid  structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must- support graphics, or compute operationsHost SynchronizationHost 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,  Qvulkan=vkCmdDebugMarkerEndEXT - Close a command buffer marker region Parameters commandBuffer? is the command buffer into which the command is recorded. 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  P and  Q must be matched and balanced. Valid UsageThere must be an outstanding  P command prior to the  Q on the queue that  commandBuffer is submitted toIf  commandBuffer& is a secondary command buffer, there must be an outstanding  P command recorded to  commandBuffer6 that has not previously been ended by a call to  QValid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must- support graphics, or compute operationsHost SynchronizationHost 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 RvulkanGvkCmdDebugMarkerInsertEXT - Insert a marker label into a command buffer Parameters commandBuffer? is the command buffer into which the command is recorded. pMarkerInfo is a pointer to a B structure specifying the parameters of the marker to insert.Valid Usage (Implicit) commandBuffer must be a valid  handle pMarkerInfo must$ be a valid pointer to a valid  structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must- support graphics, or compute operationsHost SynchronizationHost 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, > B D G C E F H K J I ? A @                            = > L M N O P Q Ra N O P Q R H K J I B D G C E F ? A @ > M = L                                                      None'"#%&'-./189;=>?FHIMSUVX_dghklmqBm dvulkanEvkAcquireXlibDisplayEXT - Acquire access to a VkDisplayKHR using Xlib ParametersphysicalDevice' The physical device the display is on.dpy4 A connection to the X11 server that currently owns display.display4 The display the caller wishes to control in Vulkan. 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 I.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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureISee AlsoH, q evulkanYvkGetRandROutputDisplayEXT - Query the VkDisplayKHR corresponding to an X11 RandR Output ParametersphysicalDevice4 The physical device to query the display handle on.dpy+ A connection to the X11 server from which rrOutput was queried.rrOutput An X11 RandR output ID.pDisplay The corresponding H# handle will be returned here. DescriptionIf there is no H corresponding to rrOutput on physicalDevice, . must be returned in pDisplay. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQSee AlsoH, q H-/ ` a b c d e d e a c ` bH/-mNone'"#%&'-./189;=>?FHIMSUVX_dghklmqB:NvulkanVkSwapchainDisplayNativeHdrCreateInfoAMD - Structure specifying display native HDR parameters of a newly created swapchain object DescriptionIf the pNext chain of N: does not include this structure, the default value for localDimmingEnable is  <@, meaning local dimming is initially enabled for the swapchain.Valid Usage (Implicit)sType must be  Valid UsageIt is only valid to set localDimmingEnable to  < if O::localDimmingSupport is supportedSee Also, OvulkanvVkDisplayNativeHdrSurfaceCapabilitiesAMD - Structure describing display native HDR specific capabilities of a surfaceValid Usage (Implicit)See Also,  ivulkanlocalDimmingEnable? specifies whether local dimming is enabled for the swapchain. kvulkanlocalDimmingSupportC specifies whether the surface supports local dimming. If this is  <, N canq be used to explicitly enable or disable local dimming for the surface. Local dimming may also be overriden by  n' during the lifetime of the swapchain. nvulkan(vkSetLocalDimmingAMD - Set Local Dimming Parametersdevice is the device associated with  swapChain. swapChain handle to enable local dimming.localDimmingEnableC specifies whether local dimming is enabled for the swapchain.Valid Usage (Implicit)device must be a valid z handle swapChain must be a valid C handleBoth of device, and  swapChain mustD have been created, allocated, or retrieved from the same ) Valid UsageIt is only valid to call  n if O::localDimmingSupport is supportedSee Also, z, CCN h iO j kZ[mlkjihgfedcba`_^ f g l m n/ nO j kN h i g m f lCZ[mlkjihgfedcba`_^mlkjihgfedcba`_^DNone'"#%&'-./189;=>?FHIMSUVX_dghklmqCvulkaniVkDescriptorUpdateTemplateEntry - Describes a single descriptor update of the descriptor update template Valid Usage dstBinding must be a valid binding in the descriptor set layout implicitly specified when using a descriptor update template to update descriptorsdstArrayElement and descriptorCount must be less than or equal to the number of array elements in the descriptor set binding implicitly specified when using a descriptor update template to update descriptors, and all applicable consecutive bindings, as described by phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutiveIf  descriptor type is ,7, dstArrayElement must be an integer multiple of 4If  descriptor type is ,7, descriptorCount must be an integer multiple of 4Valid Usage (Implicit)descriptorType must be a valid   valueSee Also , vulkanuVkDescriptorUpdateTemplateCreateInfo - Structure specifying parameters of a newly created descriptor update template Valid UsageIf  templateType is T, descriptorSetLayout must be a valid | handleIf  templateType is S, pipelineBindPoint must be a valid Q valueIf  templateType is S, pipelineLayout must be a valid m handleIf  templateType is S, set musts be the unique set number in the pipeline layout that uses a descriptor set layout that was created with tHValid Usage (Implicit)sType must be pNext must be NULLflags must be 0pDescriptorUpdateEntries must( be a valid pointer to an array of descriptorUpdateEntryCount valid  structures templateType must be a valid Q valuedescriptorUpdateEntryCount must be greater than 0Both of descriptorSetLayout, and pipelineLayout7 that are valid handles of non-ignored parameters mustD have been created, allocated, or retrieved from the same zSee Also|, , , Q, Q, m, ,  ,  zvulkanflags 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 T it can6 only be used to update descriptor sets with a fixed descriptorSetLayout . If set to S 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 T. ~vulkanpipelineBindPoint is a Q| indicating whether the descriptors will be used by graphics pipelines or compute pipelines. This parameter is ignored if  templateType is not S vulkanpipelineLayout is a mE object used to program the bindings. This parameter is ignored if  templateType is not S 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 S 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  srcBinding has a descriptor type of ,7 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  Z1 above. If the descriptor binding identified by  dstBinding has a descriptor type of ,7 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 ,7 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 template ParametersdeviceH is the logical device that creates the descriptor update template. pCreateInfo is a pointer to a \ structure specifying the set of descriptors to update with a single call to ? or  . pAllocator: 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.pDescriptorUpdateTemplate is a pointer to a R handle in which the resulting descriptor update template object is returned.Valid Usage (Implicit)device must be a valid z handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepDescriptorUpdateTemplate must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, , , z vulkan=A convenience wrapper to make a compatible pair of calls to   and  To ensure that   is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument. vulkanPvkDestroyDescriptorUpdateTemplate - Destroy a descriptor update template object ParametersdeviceW is the logical device that has been used to create the descriptor update templatedescriptorUpdateTemplate3 is the descriptor update template to destroy. pAllocator: 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. Valid UsageIf  were provided when descriptorSetLayout1 was created, a compatible set of callbacks must be provided here If no  were provided when descriptorSetLayout was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid z handleIf descriptorUpdateTemplate is not ., descriptorUpdateTemplate must be a valid  handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf descriptorUpdateTemplate is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to descriptorUpdateTemplate must be externally synchronizedSee Also, , z vulkanlvkUpdateDescriptorSetWithTemplate - Update the contents of a descriptor set object using an update template Parametersdevice8 is the logical device that updates the descriptor sets. descriptorSet is the descriptor set to updatedescriptorUpdateTemplate is a 3 object specifying the update mapping between pData' and the descriptor set to update.pData4 is a pointer to memory containing one or more  ,   , or ){/ structures used to write the descriptors. Valid UsagepData 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)device must be a valid z handle descriptorSet must be a valid } handledescriptorUpdateTemplate must be a valid  handledescriptorUpdateTemplate must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  descriptorSet must be externally synchronized API example.  ustruct AppBufferView { VkBufferView bufferView; uint32_t applicationRelatedInformation; }; struct AppDataStructure { VkDescriptorImageInfo imageInfo; // a single image info VkDescriptorBufferInfo bufferInfoArray[3]; // 3 buffer infos in an array AppBufferView bufferView[2]; // An application defined structure containing a bufferView // ... some more application related data }; const VkDescriptorUpdateTemplateEntry descriptorUpdateTemplateEntries[] = { // binding to a single image descriptor { 0, // binding 0, // dstArrayElement 1, // descriptorCount VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, // descriptorType offsetof(AppDataStructure, imageInfo), // offset 0 // stride is not required if descriptorCount is 1 }, // binding to an array of buffer descriptors { 1, // binding 0, // dstArrayElement 3, // descriptorCount VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, // descriptorType offsetof(AppDataStructure, bufferInfoArray), // offset sizeof(VkDescriptorBufferInfo) // stride, descriptor buffer infos are compact }, // binding to an array of buffer views { 2, // binding 0, // dstArrayElement 2, // descriptorCount VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, // descriptorType offsetof(AppDataStructure, bufferView) + offsetof(AppBufferView, bufferView), // offset sizeof(AppBufferView) // stride, bufferViews do not have to be compact }, }; // create a descriptor update template for descriptor set updates const VkDescriptorUpdateTemplateCreateInfo createInfo = { VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, // sType NULL, // pNext 0, // flags 3, // descriptorUpdateEntryCount descriptorUpdateTemplateEntries, // pDescriptorUpdateEntries VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, // templateType myLayout, // descriptorSetLayout 0, // pipelineBindPoint, ignored by given templateType 0, // pipelineLayout, ignored by given templateType 0, // set, ignored by given templateType }; VkDescriptorUpdateTemplate myDescriptorUpdateTemplate; myResult = vkCreateDescriptorUpdateTemplate( myDevice, &createInfo, NULL, &myDescriptorUpdateTemplate); } AppDataStructure appData; // fill appData here or cache it in your engine vkUpdateDescriptorSetWithTemplate(myDevice, myDescriptorSet, myDescriptorUpdateTemplate, &appData);See Also}, , z y z { | } ~ QRTS43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!        y z { | } ~ 43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      QRTSTS3None'"#%&'-./189;=>?FHIMSUVX_dghklmqCn vulkan@VkPushConstantRange - Structure specifying a push constant rangeValid Usage (Implicit)See Also, \vulkankVkPipelineLayoutCreateInfo - Structure specifying the parameters of a newly created pipeline layout object Valid UsagesetLayoutCount must be less than or equal to  _::maxBoundDescriptorSets#XThe total number of descriptors in descriptor set layouts created without the t6 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  _::maxPerStageDescriptorSamplersXThe total number of descriptors in descriptor set layouts created without the t6 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  _::#maxPerStageDescriptorUniformBuffersXThe total number of descriptors in descriptor set layouts created without the t6 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  _::#maxPerStageDescriptorStorageBuffersXThe total number of descriptors in descriptor set layouts created without the t6 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  _::"maxPerStageDescriptorSampledImagesXThe total number of descriptors in descriptor set layouts created without the t6 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  _::"maxPerStageDescriptorStorageImagesXThe total number of descriptors in descriptor set layouts created without the t6 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  _::%maxPerStageDescriptorInputAttachmentsUThe total number of bindings in descriptor set layouts created without the t6 bit set with a descriptorType of ,7G accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to ::(maxPerStageDescriptorInlineUniformBlocks'The total number of descriptors with a descriptorType of , and ,G accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to W::,maxPerStageDescriptorUpdateAfterBindSamplers'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 W::2maxPerStageDescriptorUpdateAfterBindUniformBuffers'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 W::2maxPerStageDescriptorUpdateAfterBindStorageBuffers'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 W::1maxPerStageDescriptorUpdateAfterBindSampledImages'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 W::1maxPerStageDescriptorUpdateAfterBindStorageImages'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 W::4maxPerStageDescriptorUpdateAfterBindInputAttachments$The total number of bindings with a descriptorType of ,7G accessible to any given shader stage across all elements of  pSetLayouts must be less than or equal to ::7maxPerStageDescriptorUpdateAfterBindInlineUniformBlocksXThe total number of descriptors in descriptor set layouts created without the t6 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  _::maxDescriptorSetSamplersXThe total number of descriptors in descriptor set layouts created without the t6 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  _::maxDescriptorSetUniformBuffersXThe total number of descriptors in descriptor set layouts created without the t6 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  _::%maxDescriptorSetUniformBuffersDynamicXThe total number of descriptors in descriptor set layouts created without the t6 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  _::maxDescriptorSetStorageBuffersXThe total number of descriptors in descriptor set layouts created without the t6 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  _::%maxDescriptorSetStorageBuffersDynamicXThe total number of descriptors in descriptor set layouts created without the t6 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  _::maxDescriptorSetSampledImagesXThe total number of descriptors in descriptor set layouts created without the t6 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  _::maxDescriptorSetStorageImagesXThe total number of descriptors in descriptor set layouts created without the t6 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  _:: maxDescriptorSetInputAttachmentsUThe total number of bindings in descriptor set layouts created without the t6 bit set with a descriptorType of ,7J accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to ::#maxDescriptorSetInlineUniformBlocks1The total number of descriptors of the type , and ,J accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to W::'maxDescriptorSetUpdateAfterBindSamplers1The 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 W::-maxDescriptorSetUpdateAfterBindUniformBuffers1The 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 W::4maxDescriptorSetUpdateAfterBindUniformBuffersDynamic1The 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 W::-maxDescriptorSetUpdateAfterBindStorageBuffers1The 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 W::4maxDescriptorSetUpdateAfterBindStorageBuffersDynamic1The 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 W::,maxDescriptorSetUpdateAfterBindSampledImages1The 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 W::,maxDescriptorSetUpdateAfterBindStorageImages1The 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 W::/maxDescriptorSetUpdateAfterBindInputAttachments$The total number of bindings with a descriptorType of ,7J accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to ::2maxDescriptorSetUpdateAfterBindInlineUniformBlocksAny two elements of pPushConstantRanges must$ not include the same stage in  stageFlags pSetLayouts mustQ not contain more than one descriptor set layout that was created with tH set$The total number of bindings with a descriptorType of ,IJ accessible across all shader stages and across all elements of  pSetLayouts must be less than or equal to ::&maxDescriptorSetAccelerationStructuresValid Usage (Implicit)sType must be "pNext must be NULLflags must be 0If setLayoutCount is not 0,  pSetLayouts must( be a valid pointer to an array of setLayoutCount valid | handlesIf pushConstantRangeCount is not 0, pPushConstantRanges must( be a valid pointer to an array of pushConstantRangeCount valid  structuresSee Also|, , , ,  vulkanflags is reserved for future use. vulkan pSetLayouts is a pointer to an array of | objects. vulkanpPushConstantRanges is a pointer to an array of  structures defining a set of push constant ranges for use in a single pipeline layout. In addition to descriptor set layouts, a pipeline layout also describes how many push constants can, be accessed by each stage of the pipeline.NotePush constants represent a high speed path to modify constant data in pipelines that is expected to outperform memory-backed resource updates. vulkan stageFlags must not be 0 vulkanoffset must be a multiple of 4 vulkansize must be less than or equal to  _::maxPushConstantsSize minus offset vulkan=vkCreatePipelineLayout - Creates a new pipeline layout object Parametersdevice8 is the logical device that creates the pipeline layout. pCreateInfo is a pointer to a C structure specifying the state of the pipeline layout object. pAllocator: 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.pPipelineLayout is a pointer to a mG handle in which the resulting pipeline layout object is returned.Valid Usage (Implicit)device must be a valid z handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepPipelineLayout must be a valid pointer to a m handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, z, m,  vulkan=A convenience wrapper to make a compatible pair of calls to   and  To ensure that   is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument. vulkan:vkDestroyPipelineLayout - Destroy a pipeline layout object Parametersdevice9 is the logical device that destroys the pipeline layout.pipelineLayout# is the pipeline layout to destroy. pAllocator: 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. Valid UsageIf  were provided when pipelineLayout1 was created, a compatible set of callbacks must be provided here If no  were provided when pipelineLayout was created,  pAllocator must be NULLpipelineLayout must not have been passed to any vkCmd*A command for any command buffers that are still in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state when   is calledValid Usage (Implicit)device must be a valid z handleIf pipelineLayout is not ., pipelineLayout must be a valid m handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf pipelineLayout is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to pipelineLayout must be externally synchronizedSee Also, z, m 2None'"#%&'-./189;=>?FHIMSUVX_dghklmqD vulkan^VkPipelineCacheCreateInfo - Structure specifying parameters of a newly created pipeline cache Valid UsageIf initialDataSize is not 0, it must be equal to the size of  pInitialData, as returned by   when  pInitialData was originally retrievedIf initialDataSize is not 0,  pInitialData must2 have been retrieved from a previous call to   If the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControlpipelineCreationCacheControl feature is not enabled, flags must not include e5Valid Usage (Implicit)sType must be /pNext must be NULLflags must be a valid combination of eJ valuesIf initialDataSize is not 0,  pInitialData must( be a valid pointer to an array of initialDataSize bytesSee Also[, ,  vulkanflags is a bitmask of eJ0 specifying the behavior of the pipeline cache. vulkaninitialDataSize is the number of bytes in  pInitialData. If initialDataSize5 is zero, the pipeline cache will initially be empty. vulkan pInitialData is a pointer to previously retrieved pipeline cache data. If the pipeline cache data is incompatible (as defined below) with the device, the pipeline cache will be initially empty. If initialDataSize is zero,  pInitialData is ignored. vulkan4vkCreatePipelineCache - Creates a new pipeline cache ParametersdeviceC is the logical device that creates the pipeline cache object. pCreateInfo is a pointer to a L structure containing initial parameters for the pipeline cache object. pAllocator: 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.pPipelineCache is a pointer to a nF handle in which the resulting pipeline cache object is returned. DescriptionNote Applications canS track and manage the total host memory size of a pipeline cache object using the  pAllocator. Applications canF limit the amount of data retrieved from a pipeline cache object in  . Implementations shouldw not internally limit the total number of entries added to a pipeline cache object or the total host memory consumed.Once created, a pipeline cache can be passed to the 1/ 0, 1, and 12E commands. If the pipeline cache passed into these commands is not ., the implementation will query it for possible reuse opportunities and update it with new content. The use of the pipeline cache object in these commands is internally synchronized, and the same pipeline cache object can- be used in multiple threads simultaneously.If flags of  pCreateInfo includes e5?, all commands that modify the returned pipeline cache object must be  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehaviorexternally synchronized.NoteImplementations should make every effort to limit any critical sections to the actual accesses to the cache, which is expected to be significantly shorter than the duration of the vkCreate*Pipelines commands.Valid Usage (Implicit)device must be a valid z handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepPipelineCache must be a valid pointer to a n handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, z, n,  vulkan=A convenience wrapper to make a compatible pair of calls to   and  To ensure that   is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument. vulkan8vkDestroyPipelineCache - Destroy a pipeline cache object ParametersdeviceD is the logical device that destroys the pipeline cache object. pipelineCache0 is the handle of the pipeline cache to destroy. pAllocator: 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. Valid UsageIf  were provided when  pipelineCache1 was created, a compatible set of callbacks must be provided here If no  were provided when  pipelineCache was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid z handleIf  pipelineCache is not .,  pipelineCache must be a valid n handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf  pipelineCache is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  pipelineCache must be externally synchronizedSee Also, z, n vulkanAvkGetPipelineCacheData - Get the data store from a pipeline cache Parametersdevice4 is the logical device that owns the pipeline cache. pipelineCache- is the pipeline cache to retrieve data from. pDataSize is a pointer to a size_tT value related to the amount of data in the pipeline cache, as described below.pData is either NULL or a pointer to a buffer. DescriptionIf pData is NULL), then the maximum size of the data that canA be retrieved from the pipeline cache, in bytes, is returned in  pDataSize. Otherwise,  pDataSize mustY point to a variable set by the user to the size of the buffer, in bytes, pointed to by pDataZ, and on return the variable is overwritten with the amount of data actually written to pData.If  pDataSize$ is less than the maximum size that can. be retrieved by the pipeline cache, at most  pDataSize bytes will be written to pData, and   will return L. Any data written to pData is valid and can be provided as the  pInitialData member of the  structure passed to  . Two calls to   with the same parameters mustj retrieve the same data unless a command that modifies the contents of the cache is called between them. Applications can store the data retrieved from the pipeline cache, and use these data, possibly in a future run of the application, to populate new pipeline cache objects. The results of pipeline compiles, however, may depend on the vendor ID, device ID, driver version, and other details of the device. To enable applications to detect when previously retrieved data is incompatible with the device, the initial bytes written to pData must2 be a header consisting of the following members: Offset 1 Size ] Meaning  0 c 4  length in bytes of the entire pipeline cache header written as a stream of bytes, with the least significant byte first  4 c 4  a #Kd value written as a stream of bytes, with the least significant byte first  8  4 _ a vendor ID equal to  p::vendorIDh written as a stream of bytes, with the least significant byte first  12  4 _ a device ID equal to  p::deviceIDh written as a stream of bytes, with the least significant byte first  16  D3 _ a pipeline cache ID equal to  p::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 #K$. A consumer of the pipeline cache shouldG use the cache version to interpret the remainder of the cache header.If  pDataSizeR is less than what is necessary to store this header, nothing will be written to pData and zero will be written to  pDataSize.Valid Usage (Implicit)device must be a valid z handle pipelineCache must be a valid n handle pDataSize must be a valid pointer to a size_t valueIf the value referenced by  pDataSize is not 0, and pData is not NULL, pData must( be a valid pointer to an array of  pDataSize bytes pipelineCache must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Alsoz, n vulkanBvkMergePipelineCaches - Combine the data stores of pipeline caches Parametersdevice< is the logical device that owns the pipeline cache objects.dstCache@ is the handle of the pipeline cache to merge results into. srcCacheCount is the length of the  pSrcCaches array. pSrcCachesT 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. DescriptionNoteVThe details of the merge operation are implementation dependent, but implementations shouldL merge the contents of the specified pipelines and prune duplicate entries. Valid UsagedstCache must( not appear in the list of source cachesValid Usage (Implicit)device must be a valid z handledstCache must be a valid n handle pSrcCaches must( be a valid pointer to an array of  srcCacheCount valid n handles srcCacheCount must be greater than 0dstCache must6 have been created, allocated, or retrieved from deviceEach element of  pSrcCaches must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to dstCache must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Alsoz, n .None'"#%&'-./189;=>?FHIMSUVX_dghklmqEOHvulkan?VkMemoryRequirements - Structure specifying memory requirementsSee Also, Ny,  ,  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. vulkan\vkGetBufferMemoryRequirements - Returns the memory requirements for specified Vulkan object Parametersdevice, is the logical device that owns the buffer.buffer is the buffer to query.pMemoryRequirements is a pointer to a X structure in which the memory requirements of the buffer object are returned. Valid UsageIf buffer was created with the <g( external memory handle type, then buffer must be bound to memory.Valid Usage (Implicit)device must be a valid z handlebuffer must be a valid  handlepMemoryRequirements must be a valid pointer to a  structurebuffer must6 have been created, allocated, or retrieved from deviceSee Also, z,  vulkan:vkBindBufferMemory - Bind device memory to a buffer object Parametersdevice7 is the logical device that owns the buffer and memory.buffer( is the buffer to be attached to memory.memory is a {4 object describing the device memory to attach. memoryOffset& is the start offset of the region of memoryS 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. Description 7 is equivalent to passing the same parameters through B to B. Valid Usagebuffer must) not already be backed by a memory objectbuffer must@ not have been created with any sparse memory binding flags memoryOffset must be less than the size of memorymemory mustG have been allocated using one of the memory types allowed in the memoryTypeBits member of the ( structure returned from a call to   with buffer memoryOffset must be an integer multiple of the  alignment member of the ( structure returned from a call to   with bufferThe size member of the ( structure returned from a call to   with buffer must+ be less than or equal to the size of memory minus  memoryOffsetIf buffer5 requires a dedicated allocation(as reported by N in Cq'::requiresDedicatedAllocation for buffer), memory must have been created with Cp::buffer equal to bufferIf the -n provided when memory was allocated included a Cp structure in its pNext chain, and Cp::buffer was not . , then buffer must equal Cp::buffer , and  memoryOffset must be zero$If buffer was created with the ~M bit set, the buffer mustQ be bound to a memory object allocated with a memory type that reports fN$If buffer was created with the ~M bit not set, the buffer mustS not be bound to a memory object created with a memory type that reports fNIf buffer was created with ::dedicatedAllocation equal to , memory must" have been created with ::bufferR equal to a buffer handle created with identical creation parameters to buffer and  memoryOffset must be zeroIf the value of J+:: handleTypes used to allocate memory is not 0, it must6 include at least one of the handles set in J5:: handleTypes when buffer was createdIf memory< 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 J5:: handleTypes when buffer was createdIf memory was created with the ^) memory import operation with a non-NULL buffer value, <g must also have been set in J5:: handleTypes when buffer was created If the ]::bufferDeviceAddress feature is enabled and buffer was created with the }` bit set, memory must# have been allocated with the EO bit setValid Usage (Implicit)device must be a valid z handlebuffer must be a valid  handlememory must be a valid { handlebuffer must6 have been created, allocated, or retrieved from devicememory must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to buffer must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJPSee Also, z, {,  vulkan[vkGetImageMemoryRequirements - Returns the memory requirements for specified Vulkan object Parametersdevice+ is the logical device that owns the image.image is the image to query.pMemoryRequirements is a pointer to a W structure in which the memory requirements of the image object are returned. Valid Usageimage must% not have been created with the  flag setIf image was created with the <g( external memory handle type, then image must be bound to memory.Valid Usage (Implicit)device must be a valid z handleimage must be a valid u handlepMemoryRequirements must be a valid pointer to a  structureimage must6 have been created, allocated, or retrieved from deviceSee Alsoz, u,  vulkan9vkBindImageMemory - Bind device memory to an image object Parametersdevice6 is the logical device that owns the image and memory.image is the image.memory is the {4 object describing the device memory to attach. memoryOffset& is the start offset of the region of memoryR 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. Description 7 is equivalent to passing the same parameters through B to B. Valid Usageimage must% not have been created with the  setimage must) not already be backed by a memory objectimage must@ not have been created with any sparse memory binding flags memoryOffset must be less than the size of memorymemory mustG have been allocated using one of the memory types allowed in the memoryTypeBits member of the ( structure returned from a call to   with image memoryOffset must be an integer multiple of the  alignment member of the ( structure returned from a call to   with imageThe difference of the size of memory and  memoryOffset must& be greater than or equal to the size member of the ( structure returned from a call to   with the same imageIf image6 requires a dedicated allocation (as reported by N in Cq'::requiresDedicatedAllocation for image), memory must have been created with Cp::image equal to image If the  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dedicatedAllocationImageAliasing#dedicated allocation image aliasing+ feature is not enabled, and the -n provided when memory was allocated included a Cp structure in its pNext chain, and Cp::image was not . , then image must equal Cp::image and  memoryOffset must be zero If the  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dedicatedAllocationImageAliasing#dedicated allocation image aliasing' feature is enabled, and the -n provided when memory was allocated included a Cp structure in its pNext chain, and Cp::image was not . , then  memoryOffset must be zero, and image must be either equal to Cp::imageE or an image that was created using the same parameters in *, 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 musth be equal to or smaller than the original image for which the allocation was created; and the  arrayLayers$ parameter of the image being bound must^ be equal to or smaller than the original image for which the allocation was created#If image was created with the Q bit set, the image mustQ be bound to a memory object allocated with a memory type that reports fN#If image was created with the Q bit not set, the image mustS not be bound to a memory object created with a memory type that reports fNIf image was created with ::dedicatedAllocation equal to , memory must" have been created with ::imageR equal to an image handle created with identical creation parameters to image and  memoryOffset must be zeroIf the value of J+:: handleTypes used to allocate memory is not 0, it must6 include at least one of the handles set in J6:: handleTypes when image was createdIf memory< 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 J6:: handleTypes when image was createdIf memory was created with the ^) memory import operation with a non-NULL buffer value, <g must also have been set in J6:: handleTypes when image was createdValid Usage (Implicit)device must be a valid z handleimage must be a valid u handlememory must be a valid { handleimage must6 have been created, allocated, or retrieved from devicememory must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to image must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Alsoz, {, , u ,None'"#%&'-./189;=>?FHIMSUVX_dghklmqEvulkan9VkLayerProperties - Structure specifying layer propertiesSee Also ,  vulkan layerName is an array of  charb containing a null-terminated UTF-8 string which is the name of the layer. Use this name in the ppEnabledLayerNames array passed in the  j1 structure to enable this layer for an instance. vulkan specVersionK is the Vulkan version the layer was written to, encoded as described in  yhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-coreversions-versionnumbers. vulkanimplementationVersion^ is the version of this layer. It is an integer, increasing with backward compatible changes. vulkan description is an array of  charT containing a null-terminated UTF-8 string which provides additional details that can2 be used by the application to identify the layer. vulkan_vkEnumerateInstanceLayerProperties - Returns up to requested number of global layer properties ParameterspPropertyCountt is a pointer to an integer related to the number of layer properties available or queried, as described below. pProperties is either NULL" or a pointer to an array of  structures. 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, L will be returned instead of QI, to indicate that not all the available layer properties were returned.{The list of available layers may change at any time due to actions outside of the Vulkan implementation, so two calls to   with the same parameters may2 return different results, or retrieve different pPropertyCount values or  pProperties contents. Once an instance has been created, the layers enabled for that instance will continue to be enabled and valid for the lifetime of that instance, even if some of them become unavailable for future instances.Valid Usage (Implicit)pPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount  structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also vulkanZvkEnumerateDeviceLayerProperties - Returns properties of available physical device layers ParameterspPropertyCount` is a pointer to an integer related to the number of layer properties available or queried. pProperties is either NULL" or a pointer to an array of  structures. 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, L will be returned instead of QI, to indicate that not all the available layer properties were returned.!The list of layers enumerated by   mustN be exactly the sequence of layers enabled for the instance. The members of  for each enumerated layer mustB be the same as the properties when the layer was enumerated by  .Valid Usage (Implicit)physicalDevice must be a valid q handlepPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount  structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, q  %None'"#%&'-./189;=>?FHIMSUVX_dghklmqEiavulkanMVkEventCreateInfo - Structure specifying parameters of a newly created eventValid Usage (Implicit)See Also, ,  vulkanflags must be 0 vulkan)vkCreateEvent - Create a new event object Parametersdevice. is the logical device that creates the event. pCreateInfo is a pointer to a aL structure containing information about how the event is to be created. pAllocator: 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.pEventO is a pointer to a handle in which the resulting event object is returned. Description:When created, the event object is in the unsignaled state.Valid Usage (Implicit)device must be a valid z handle pCreateInfo must be a valid pointer to a valid a structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepEvent 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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, z, x, a vulkan=A convenience wrapper to make a compatible pair of calls to   and  To ensure that   is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument. vulkan(vkDestroyEvent - Destroy an event object Parametersdevice/ is the logical device that destroys the event.event' is the handle of the event to destroy. pAllocator: 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. Valid Usage%All submitted commands that refer to event must have completed executionIf  were provided when event1 was created, a compatible set of callbacks must be provided here If no  were provided when event was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid z handleIf event is not ., event must be a valid x handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf event is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to event must be externally synchronizedSee Also, z, x vulkan9vkGetEventStatus - Retrieve the status of an event object Parametersdevice+ is the logical device that owns the event.event% is the handle of the event to query. DescriptionUpon success,  H returns the state of the event object with the following return codes:3 Status # Meaning  N7  The event specified by event( is signaled.  M5  The event specified by event( is unsignaled. Event Object Status CodesIf a   or  1 command is in a command buffer that is in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state+, then the value returned by this command may immediately be out of date.The state of an event cana be updated by the host. The state of the event is immediately changed, and subsequent calls to  ~ will return the new state. If an event is already in the requested state, then updating it to the same state has no effect. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessNM  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJHSee Alsoz, x vulkan+vkSetEvent - Set an event to signaled state Parametersdevice+ is the logical device that owns the event.event is the event to set. DescriptionWhen  m is executed on the host, it defines an /event signal operation/ which sets the event to the signaled state.If event' is already in the signaled state when   is executed, then  5 has no effect, and no event signal operation occurs.Valid Usage (Implicit)device must be a valid z handleevent must be a valid x handleevent must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to event must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Alsoz, x vulkan3vkResetEvent - Reset an event to non-signaled state Parametersdevice+ is the logical device that owns the event.event is the event to reset. DescriptionWhen  s is executed on the host, it defines an /event unsignal operation/ which resets the event to the unsignaled state.If event) is already in the unsignaled state when   is executed, then  8 has no effect, and no event unsignal operation occurs. Valid Usageevent must not be waited on by a  ) command that is currently executingValid Usage (Implicit)device must be a valid z handleevent must be a valid x handleevent must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to event must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Alsoz, x a a None'"#%&'-./189;=>?FHIMSUVX_dghklmqFY4'vulkanZVkCommandPoolCreateInfo - Structure specifying parameters of a newly created command pool Valid Usage9If the protected memory feature is not enabled, the yR bit of flags must not be setValid Usage (Implicit)sType must be pNext must be NULLflags must be a valid combination of yS valuesSee Also, ,  vulkanflags is a bitmask of ySP indicating usage behavior for the pool and command buffers allocated from it. vulkanqueueFamilyIndex4 designates a queue family as described in section  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-queuepropsQueue Family Properties8. All command buffers allocated from this command pool must4 be submitted on queues from the same queue family. vulkan6vkCreateCommandPool - Create a new command pool object Parametersdevice5 is the logical device that creates the command pool. pCreateInfo is a pointer to a '@ structure specifying the state of the command pool object. pAllocator: 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. pCommandPool is a pointer to a 3 handle in which the created pool is returned. Valid UsagepCreateInfo->queueFamilyIndex mustE be the index of a queue family available in the logical device deviceValid Usage (Implicit)device must be a valid z handle pCreateInfo must$ be a valid pointer to a valid ' structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pCommandPool must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, , ', z vulkan=A convenience wrapper to make a compatible pair of calls to   and  To ensure that   is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument. vulkan4vkDestroyCommandPool - Destroy a command pool object Parametersdevice6 is the logical device that destroys the command pool. commandPool. is the handle of the command pool to destroy. pAllocator: 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. DescriptionKWhen a pool is destroyed, all command buffers allocated from the pool are  vkFreeCommandBuffers.htmlfreed.3Any primary command buffer allocated from another  that is in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording or executable state4 and has a secondary command buffer allocated from  commandPool recorded into it, becomes  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleinvalid. Valid UsageAll )t objects allocated from  commandPool must not be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending stateIf  were provided when  commandPool1 was created, a compatible set of callbacks must be provided here If no  were provided when  commandPool was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid z handleIf  commandPool is not .,  commandPool must be a valid  handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf  commandPool is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  commandPool must be externally synchronizedSee Also, , z vulkan)vkResetCommandPool - Reset a command pool Parametersdevice2 is the logical device that owns the command pool. commandPool is the command pool to reset.flags is a bitmask of B& controlling the reset operation. DescriptionResetting a command pool recycles all of the resources from all of the command buffers allocated from the command pool back to the command pool. All command buffers that have been allocated from the command pool are put in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state.3Any primary command buffer allocated from another  that is in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording or executable state4 and has a secondary command buffer allocated from  commandPool recorded into it, becomes  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleinvalid. Valid UsageAll )t objects allocated from  commandPool must not be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending stateValid Usage (Implicit)device must be a valid z handle commandPool must be a valid  handleflags must be a valid combination of B values commandPool must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  commandPool must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, A, z'  ' None'"#%&'-./189;=>?FHIMSUVX_dghklmqF vulkanXVkBufferViewCreateInfo - Structure specifying parameters of a newly created buffer view Valid Usageoffset must be less than the size of buffer If range is not equal to $, range must be greater than 0If range is not equal to $, range must8 be an integer multiple of the texel block size of formatIf range is not equal to $, range) divided by the texel block size of formatb, multiplied by the number of texels per texel block for that format (as defined in the  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibilityCompatible Formats table), must be less than or equal to  _::maxTexelBufferElementsIf range is not equal to $, the sum of offset and range must+ be less than or equal to the size of bufferbuffer must have been created with a usage, value containing at least one of }T or }UIf buffer was created with usage containing }T, format mustG be supported for uniform texel buffers, as specified by the nV flag in  W::bufferFeatures returned by  If buffer was created with usage containing }U, format mustG be supported for storage texel buffers, as specified by the nX flag in  W::bufferFeatures returned by  If buffer is non-sparse then it must< be bound completely and contiguously to a single )v object If the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignmenttexelBufferAlignment feature is not enabled, offset must be a multiple of  _::minTexelBufferOffsetAlignment If the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignmenttexelBufferAlignment feature is enabled and if buffer was created with usage containing }U, offset must% be a multiple of the lesser of ::&storageTexelBufferOffsetAlignmentBytes or, if ::,storageTexelBufferOffsetSingleTexelAlignment is ,, the size of a texel of the requested formatc. If the size of a texel is a multiple of three bytes, then the size of a single component of format is used instead If the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignmenttexelBufferAlignment feature is enabled and if buffer was created with usage containing }T, offset must% be a multiple of the lesser of ::&uniformTexelBufferOffsetAlignmentBytes or, if ::,uniformTexelBufferOffsetSingleTexelAlignment is ,, the size of a texel of the requested formatc. If the size of a texel is a multiple of three bytes, then the size of a single component of format is used insteadValid Usage (Implicit)sType must be 3pNext must be NULLflags must be 0buffer must be a valid  handleformat must be a valid G valueSee Also,  , , G, ,  vulkanflags is reserved for future use. vulkanbuffer is a $ on which the view will be created. vulkanformat is a G; 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 object Parametersdevice4 is the logical device that creates the buffer view. pCreateInfo is a pointer to a F structure containing parameters to be used to create the buffer. pAllocator: 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.pView is a pointer to a C handle in which the resulting buffer view object is returned.Valid Usage (Implicit)device must be a valid z handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepView must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, , , z vulkan=A convenience wrapper to make a compatible pair of calls to   and  To ensure that   is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument. vulkan2vkDestroyBufferView - Destroy a buffer view object Parametersdevice5 is the logical device that destroys the buffer view. bufferView is the buffer view to destroy. pAllocator: 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. Valid Usage%All submitted commands that refer to  bufferView must have completed executionIf  were provided when  bufferView1 was created, a compatible set of callbacks must be provided here If no  were provided when  bufferView was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid z handleIf  bufferView is not .,  bufferView must be a valid  handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf  bufferView is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  bufferView must be externally synchronizedSee Also, , z   &None'"#%&'-./189;=>?FHIMSUVX_dghklmqG bvulkanDVkExtensionProperties - Structure specifying an extension propertiesSee Also ,  vulkan extensionName is an array of  charP containing a null-terminated UTF-8 string which is the name of the extension. vulkan specVersionc is the version of this extension. It is an integer, incremented with backward compatible changes. vulkangvkEnumerateInstanceExtensionProperties - Returns up to requested number of global extension properties Parameters pLayerName is either NULLb or a pointer to a null-terminated UTF-8 string naming the layer to retrieve extensions from.pPropertyCountx is a pointer to an integer related to the number of extension properties available or queried, as described below. pProperties is either NULL" or a pointer to an array of b structures. 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, L will be returned instead of QC, to indicate that not all the available properties were returned.MBecause the list of available layers may change externally between calls to  1, two calls may retrieve different results if a  pLayerName is available in one call but not in another. The extensions supported by a layer may also change between two calls, e.g. if the layer implementation is replaced by a different version between those calls.Implementations must not advertise any pair of extensions that cannot be enabled together due to behavioral differences, or any extension that cannot be enabled against the advertised version.Valid Usage (Implicit)If  pLayerName is not NULL,  pLayerName must' be a null-terminated UTF-8 stringpPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount b structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJFSee Alsob vulkanbvkEnumerateDeviceExtensionProperties - Returns properties of available physical device extensions ParametersphysicalDevice- is the physical device that will be queried. pLayerName is either NULLb or a pointer to a null-terminated UTF-8 string naming the layer to retrieve extensions from.pPropertyCount is a pointer to an integer related to the number of extension properties available or queried, and is treated in the same fashion as the  ::pPropertyCount parameter. pProperties is either NULL" or a pointer to an array of b structures. DescriptionWhen  pLayerName parameter is NULLm, only extensions provided by the Vulkan implementation or by implicitly enabled layers are returned. When  pLayerNameT is the name of a layer, the device extensions provided by that layer are returned.Implementations must not advertise any pair of extensions that cannot be enabled together due to behavioral differences, or any extension that cannot be enabled against the advertised version.Valid Usage (Implicit)physicalDevice must be a valid q handleIf  pLayerName is not NULL,  pLayerName must' be a null-terminated UTF-8 stringpPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount b structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJFSee Alsob, qb  b None'"#%&'-./189;=>?FHIMSUVX_dghklmqG vulkanAVkBaseOutStructure - Base structure for a read-only pointer chain Description r can be used to facilitate iterating through a structure pointer chain that returns data back to the application.See Also ,  vulkan@VkBaseInStructure - Base structure for a read-only pointer chain Description R can be used to facilitate iterating through a read-only structure pointer chain.See Also , !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.!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{..} :& ())  !! ! !!! ! !!!!!! !!! ! ! !!!!!! !!! ! !!! ! !! !! ! !!!!!!! !!!!!7!6None'"#%&'-./189;=>?FHIMSUVX_dghklmqG UvulkanNVkSurfaceFormat2KHR - Structure describing a supported swapchain format tupleValid Usage (Implicit)See Also, , !6VvulkanKVkSurfaceCapabilities2KHR - Structure describing capabilities of a surfaceValid Usage (Implicit)sType must be aEach pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of O, , , or The sType value of each struct in the pNext chain must be uniqueSee Also, , !5WvulkankVkPhysicalDeviceSurfaceInfo2KHR - Structure specifying a surface and related swapchain creation parameters DescriptionThe members of W" correspond to the arguments to m, with sType and pNext added for extensibility.%Additional capabilities of a surface may be available to swapchains created with different full-screen exclusive settings - particularly if exclusive full-screen access is application controlled. These additional capabilities can be queried by adding a  structure to the pNext chain of this structure when used to query surface properties. Additionally, for Win32 surfaces with application controlled exclusive full-screen access, chaining a  structure may also report additional surface capabilities. These additional capabilities only apply to swapchains created with the same parameters included in the pNext chain of N. Valid UsageIf the pNext chain includes a  structure with its fullScreenExclusive member set to e , and surface was created using , a  structure must be included in the pNext chainValid Usage (Implicit)sType must be `Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of  or The sType value of each struct in the pNext chain must be uniquesurface must be a valid D handleSee Also, D, , !5, !6, p!,vulkan surfaceFormat is a ` structure describing a format-color space pair that is compatible with the specified surface.!.vulkanpNext is NULL1 or a pointer to an extension-specific structure.!/vulkansurfaceCapabilities is a A structure describing the capabilities of the specified surface.!1vulkanpNext is NULL1 or a pointer to an extension-specific structure.!2vulkansurface; is the surface that will be associated with the swapchain.!5vulkandvkGetPhysicalDeviceSurfaceCapabilities2KHR - Reports capabilities of a surface on a physical device ParametersphysicalDevicem is the physical device that will be associated with the swapchain to be created, as described for . pSurfaceInfo is a pointer to a Wf structure describing the surface and other fixed parameters that would be consumed by .pSurfaceCapabilities is a pointer to a V7 structure in which the capabilities are returned. Description!5 behaves similarly to m, with the ability to specify extended inputs via chained input structures, and to return extended information via chained output structures. Valid Usage If a # structure is included in the pNext chain of pSurfaceCapabilities , a  structure must be included in the pNext chain of  pSurfaceInfoValid Usage (Implicit)physicalDevice must be a valid q handle pSurfaceInfo must$ be a valid pointer to a valid W structurepSurfaceCapabilities must be a valid pointer to a V structure Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJ/See Alsoq, W, V!6vulkanQvkGetPhysicalDeviceSurfaceFormats2KHR - Query color formats supported by surface ParametersphysicalDevicem is the physical device that will be associated with the swapchain to be created, as described for . pSurfaceInfo is a pointer to a Wf structure describing the surface and other fixed parameters that would be consumed by .pSurfaceFormatCountq is a pointer to an integer related to the number of format tuples available or queried, as described below.pSurfaceFormats is either NULL" or a pointer to an array of U structures. Description!6 behaves similarly to o', with the ability to be extended via pNext chains.If pSurfaceFormats is NULL<, then the number of format tuples supported for the given surface is returned in pSurfaceFormatCount. Otherwise, pSurfaceFormatCount mustG point to a variable set by the user to the number of elements in the pSurfaceFormatsf array, and on return the variable is overwritten with the number of structures actually written to pSurfaceFormats. If the value of pSurfaceFormatCount> is less than the number of format tuples supported, at most pSurfaceFormatCount! structures will be written. If pSurfaceFormatCount` is smaller than the number of format tuples supported for the surface parameters described in  pSurfaceInfo, L will be returned instead of Q> to indicate that not all the available values were returned. Valid UsagepSurfaceInfo->surface must be supported by physicalDevice, as reported by  2 or an equivalent platform-specific mechanismValid Usage (Implicit)physicalDevice must be a valid q handle pSurfaceInfo must$ be a valid pointer to a valid W structurepSurfaceFormatCount must be a valid pointer to a uint32_t valueIf the value referenced by pSurfaceFormatCount is not 0 , and pSurfaceFormats is not NULL, pSurfaceFormats must( be a valid pointer to an array of pSurfaceFormatCount U structures Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJ/See Alsoq, W, UHDU!+!,V!-!.!/W!0!1!2!"#$+%&'()*,-.Z[mlkjihgfedcba`_^  !)!*!3!4!5!6e!5!6W!0!1!2V!-!.!/U!+!,!*!4!)!3D$+%&'()*,-.!"#Z[mlkjihgfedcba`_^mlkjihgfedcba`_^    MNone'"#%&'-./189;=>?FHIMSUVX_dghklmqGvulkan\VkPhysicalDeviceExternalSemaphoreInfo - Structure specifying semaphore creation parameters.Valid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of <The sType value of each struct in the pNext chain must be unique handleType must be a valid G valueSee AlsoG, , !L, YvulkanbVkExternalSemaphoreProperties - 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 Alsoe, F, , !L, Y!FvulkanexportFromImportedHandleTypes is a bitmask of G, specifying which types of imported handle  handleType can be exported from.!GvulkancompatibleHandleTypes is a bitmask of G specifying handle types which can# be specified at the same time as  handleType when creating a semaphore.!HvulkanexternalSemaphoreFeatures is a bitmask of f describing the features of  handleType.!JvulkanpNext is NULL1 or a pointer to an extension-specific structure.!Kvulkan handleType is a G_ value specifying the external semaphore handle type for which capabilities will be returned.!LvulkanovkGetPhysicalDeviceExternalSemaphoreProperties - Function for querying external semaphore handle capabilities. ParametersphysicalDeviceL is the physical device from which to query the semaphore capabilities.pExternalSemaphoreInfo is a pointer to a I structure describing the parameters that would be consumed by 6.pExternalSemaphoreProperties is a pointer to a 3 structure in which capabilities are returned.Valid Usage (Implicit)See Also, q, !I!J!K!E!F!G!H43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      FGHMLKJIefgih!L|!L!I!J!K!E!F!G!H43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      GHMLKJIMLKJIFfgihiheNone'"#%&'-./189;=>?FHIMSUVX_dghklmqG)!W!X!Y!Z![!\!]!^!_!`!a!b!c!d!e!f!g!h!i!j!i!h!g!f!e!d!c!b!a!j!^!]!\![!Z!Y!X!`!W!_)BNone'"#%&'-./189;=>?FHIMSUVX_dghklmqHt3 vulkanLVkBindImageMemoryInfo - Structure specifying how to bind an image to memory Valid Usageimage must) not already be backed by a memory objectimage must@ not have been created with any sparse memory binding flags memoryOffset must be less than the size of memoryIf the pNext chain does not include a   structure, memory mustG have been allocated using one of the memory types allowed in the memoryTypeBits member of the .- structure returned from a call to N with imageIf the pNext chain does not include a   structure,  memoryOffset must$ be an integer multiple of the  alignment member of the .- structure returned from a call to N with imageIf the pNext chain does not include a  / structure, the difference of the size of memory and  memoryOffset must! be greater than or equal to the size member of the .- structure returned from a call to N with the same imageIf the pNext chain includes a   structure, image must! have been created with the  bit setIf the pNext chain includes a   structure, memory mustG have been allocated using one of the memory types allowed in the memoryTypeBits member of the .- structure returned from a call to N with image and where  :: planeAspect corresponds to the SU:: planeAspect in the NS structure s pNext chainIf the pNext chain includes a   structure,  memoryOffset must$ be an integer multiple of the  alignment member of the .- structure returned from a call to N with image and where  :: planeAspect corresponds to the SU:: planeAspect in the NS structure s pNext chainIf the pNext chain includes a  / structure, the difference of the size of memory and  memoryOffset must! be greater than or equal to the size member of the .- structure returned from a call to N with the same image and where  :: planeAspect corresponds to the SU:: planeAspect in the NS structure s pNext chainIf image6 requires a dedicated allocation (as reported by N in Cq'::requiresDedicatedAllocation for image), memory must have been created with Cp::image equal to image and  memoryOffset must be zero If the  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dedicatedAllocationImageAliasing#dedicated allocation image aliasing+ feature is not enabled, and the -n provided when memory was allocated included a Cp structure in its pNext chain, and Cp::image was not . , then image must equal Cp::image and  memoryOffset must be zero If the  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dedicatedAllocationImageAliasing#dedicated allocation image aliasing' feature is enabled, and the -n provided when memory was allocated included a Cp structure in its pNext chain, and Cp::image was not . , then  memoryOffset must be zero, and image must be either equal to Cp::imageE or an image that was created using the same parameters in *, 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 musth be equal to or smaller than the original image for which the allocation was created; and the  arrayLayers$ parameter of the image being bound must^ be equal to or smaller than the original image for which the allocation was createdIf image was created with ::dedicatedAllocation equal to , memory must" have been created with ::image equal to image and  memoryOffset must be zeroIf the pNext chain includes a " structure, all instances of memory specified by ::pDeviceIndices must have been allocatedIf the pNext chain includes a  structure, and ::splitInstanceBindRegionCount is not zero, then image must! have been created with the  bit setIf the pNext chain includes a & structure, all elements of ::pSplitInstanceBindRegions must= be valid rectangles contained within the dimensions of imageIf the pNext chain includes a @ structure, the union of the areas of all elements of ::pSplitInstanceBindRegions. that correspond to the same instance of image must cover the entire imageIf image3 was created with a valid swapchain handle in X:: swapchain, then the pNext chain must include a 4 structure containing the same swapchain handleIf the pNext chain includes a  structure, memory must be .If the pNext chain does not include a  structure, memory must be a valid { handleIf the value of J+:: handleTypes used to allocate memory is not 0, it must6 include at least one of the handles set in J6:: handleTypes when image was createdIf memory< 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 J6:: handleTypes when image was createdIf memory was created with the ^) memory import operation with a non-NULL buffer value, <g must also have been set in J6:: handleTypes when image was createdValid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , , or  The sType value of each struct in the pNext chain must be uniqueimage must be a valid u handleBoth of image, and memory7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same zSee Also{, , u, , !v, vulkanMVkBindBufferMemoryInfo - Structure specifying how to bind a buffer to memory Valid Usagebuffer must) not already be backed by a memory object buffer must@ not have been created with any sparse memory binding flags memoryOffset must be less than the size of memorymemory mustG have been allocated using one of the memory types allowed in the memoryTypeBits member of the .- structure returned from a call to . with buffer memoryOffset must be an integer multiple of the  alignment member of the .- structure returned from a call to . with bufferThe size member of the .- structure returned from a call to . with buffer must& be less than or equal to the size of memory minus  memoryOffsetIf buffer5 requires a dedicated allocation(as reported by N in Cq'::requiresDedicatedAllocation for buffer), memory must have been created with Cp::buffer equal to buffer and  memoryOffset must be zeroIf the -n provided when memory was allocated included a Cp structure in its pNext chain, and Cp::buffer was not . , then buffer must equal Cp::buffer and  memoryOffset must be zeroIf buffer was created with ::dedicatedAllocation equal to , memory must" have been created with ::buffer equal to buffer and  memoryOffset must be zeroIf the pNext chain includes a " structure, all instances of memory specified by ::pDeviceIndices must have been allocatedIf the value of J+:: handleTypes used to allocate memory is not 0, it must6 include at least one of the handles set in J5:: handleTypes when buffer was createdIf memory< 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 J5:: handleTypes when buffer was createdIf memory was created with the ^) memory import operation with a non-NULL buffer value, <g must also have been set in J5:: handleTypes when buffer was created If the Y::bufferDeviceAddress feature is enabled and buffer was created with the Z bit set, memory must# have been allocated with the [ bit setValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniquebuffer must be a valid  handlememory must be a valid { handleBoth of buffer, and memory must? have been created, allocated, or retrieved from the same zSee Also, {, , , !u, !lvulkanpNext is NULL1 or a pointer to an extension-specific structure.!mvulkanimage' is the image to be attached to memory.!nvulkanmemory is a {0 object describing the device memory to attach.!ovulkan 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.!qvulkanpNext is NULL1 or a pointer to an extension-specific structure.!rvulkanbuffer( is the buffer to be attached to memory.!svulkanmemory is a {0 object describing the device memory to attach.!tvulkan 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.!uvulkan:vkBindBufferMemory2 - Bind device memory to buffer objects Parametersdevice8 is the logical device that owns the buffers and memory. bindInfoCount is the number of elements in  pBindInfos. pBindInfos is a pointer to an array of  bindInfoCount 7 structures describing buffers and memory to bind. 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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJPSee Also, z!vvulkan8vkBindImageMemory2 - Bind device memory to image objects Parametersdevice7 is the logical device that owns the images and memory. bindInfoCount is the number of elements in  pBindInfos. pBindInfos is a pointer to an array of 7 structures, describing images and memory to bind. DescriptionOn some implementations, it mayC be more efficient to batch memory bindings into a single command. Valid UsageIf any ::image was created with  then all planes of ::image must( be bound individually in separate  pBindInfos pBindInfos must= not refer to the same image subresource more than once.Valid Usage (Implicit)device must be a valid z handle pBindInfos must( be a valid pointer to an array of  bindInfoCount valid  structures bindInfoCount must be greater than 0 Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, zHI!k!o!l!m!n!p!t!q!r!s43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      !u!v!u!v!p!t!q!r!s!k!o!l!m!n43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      IHNone'"#%&'-./189;=>?FHIMSUVX_dghklmqH !!!!!!!!!!! !!!!!!!!!!!8None'"#%&'-./189;=>?FHIMSUVX_dghklmqHvulkan\VkShaderModuleCreateInfo - Structure specifying parameters of a newly created shader module Valid UsagecodeSize must be greater than 0If pCode is a pointer to SPIR-V code, codeSize must be a multiple of 4pCode mustW point to either valid SPIR-V code, formatted and packed as described by the  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirv-specKhronos SPIR-V Specification or valid GLSL code which must be written to the GL_KHR_vulkan_glsl extension specificationIf pCode( is a pointer to SPIR-V code, that code must; adhere to the validation rules described by the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-module-validation Validation Rules within a Module section of the  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilitiesSPIR-V Environment appendixIf pCode is a pointer to GLSL code, it must( be valid GLSL code written to the GL_KHR_vulkan_glsl GLSL extension specificationpCode must declare the Shader capability for SPIR-V codepCode must\ not declare any capability that is not supported by the API, as described by the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-module-validation Capabilities section of the  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilitiesSPIR-V Environment appendixIf pCode, declares any of the capabilities listed as optional in the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-tableSPIR-V Environment- appendix, the corresponding feature(s) must be enabledValid Usage (Implicit)sType must be 0pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueflags must be 0pCode must( be a valid pointer to an array of \textrm{codeSize} \over 4 uint32_t valuesSee Also<, , !!vulkanpNext is NULL1 or a pointer to an extension-specific structure.!vulkanflags is reserved for future use.!vulkanpCode is a pointer to code that is used to create the shader module. The type and format of the code is determined from the content of the memory addressed by pCode.!vulkan9vkCreateShaderModule - Creates a new shader module object Parametersdevice6 is the logical device that creates the shader module. pCreateInfo is a pointer to a  structure. pAllocator: 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. pShaderModule is a pointer to a fE handle in which the resulting shader module object is returned. 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 5U will be generated and the compile log will be reported back to the application by VK_EXT_debug_report if enabled.Valid Usage (Implicit)device must be a valid z handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pShaderModule must be a valid pointer to a f handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJ5See Also, z, f, !vulkan=A convenience wrapper to make a compatible pair of calls to ! and !To ensure that ! is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument.!vulkan/vkDestroyShaderModule - Destroy a shader module Parametersdevice7 is the logical device that destroys the shader module. shaderModule/ is the handle of the shader module to destroy. pAllocator: 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. DescriptionA shader module canJ be destroyed while pipelines created using its shaders are still in use. Valid UsageIf  were provided when  shaderModule1 was created, a compatible set of callbacks must be provided here If no  were provided when  shaderModule was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid z handleIf  shaderModule is not .,  shaderModule must be a valid f handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf  shaderModule is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  shaderModule must be externally synchronizedSee Also, z, f!!!!!!!!!!!!!!7None'"#%&'-./189;=>?FHIMSUVX_dghklmqI~vulkanQVkSamplerCreateInfo - Structure specifying parameters of a newly created sampler Description(Mapping of OpenGL to Vulkan filter modes magFilter values of \ and  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  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 =  or  minFilter = \, 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. If maxSamplerAllocationCount is exceeded, ! will return B.Since h5 is a non-dispatchable handle type, implementations may return the same handle for sampler state vectors that are identical. In such cases, all such objects would only count once against the maxSamplerAllocationCount limit. Valid UsageThe absolute value of  mipLodBias must be less than or equal to  _::maxSamplerLodBiasmaxLod must be greater than or equal to minLod If the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-samplerAnisotropyanisotropic sampling feature is not enabled, anisotropyEnable must be If anisotropyEnable is ,  maxAnisotropy must be between 1.0 and  _::maxSamplerAnisotropy, inclusiveIf  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversion is enabled and the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-sampler-ycbcr-conversion-format-features$sampler Y 2CBCR conversion s features do not support n^,  minFilter and  magFilter must2 be equal to the sampler Y 2CBCR conversion s  chromaFilterIf unnormalizedCoordinates is ,  minFilter and  magFilter must be equalIf unnormalizedCoordinates is ,  mipmapMode must be ]If unnormalizedCoordinates is , minLod and maxLod must be zeroIf unnormalizedCoordinates is ,  addressModeU and  addressModeV must each be either  or _If unnormalizedCoordinates is , anisotropyEnable must be If unnormalizedCoordinates is ,  compareEnable must be  If any of  addressModeU,  addressModeV or  addressModeW are _,  borderColor must be a valid   valueIf  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversion is enabled,  addressModeU,  addressModeV, and  addressModeW must be , anisotropyEnable must be  , and unnormalizedCoordinates must be The sampler reduction mode must be set to ` if  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversion is enabledIf  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-samplerMirrorClampToEdgesamplerMirrorClampToEdge! is not enabled, and if the #VK_KHR_sampler_mirror_clamp_to_edge extension is not enabled,  addressModeU,  addressModeV and  addressModeW must not be aIf  compareEnable is ,  compareOp must be a valid   value If either  magFilter or  minFilter is , anisotropyEnable must be If  compareEnable is  , the  reductionMode member of  must be `If flags includes T , then  minFilter and  magFilter must be equalIf flags includes T , then  mipmapMode must be ]If flags includes T , then minLod and maxLod must be zeroIf flags includes T , then  addressModeU and  addressModeV must each be either  or _If flags includes T , then anisotropyEnable must be If flags includes T , then  compareEnable must be If flags includes T , then unnormalizedCoordinates must be Valid Usage (Implicit)sType must be ! Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of  or The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of Tb values magFilter must be a valid F value minFilter must be a valid F value mipmapMode must be a valid  value addressModeU must be a valid  value addressModeV must be a valid  value addressModeW must be a valid  valueSee Also,  ,  , F, , O, , , !!vulkanpNext is NULL1 or a pointer to an extension-specific structure.!vulkanflags is a bitmask of Tb2 describing additional parameters of the sampler.!vulkan magFilter is a F@ value specifying the magnification filter to apply to lookups.!vulkan minFilter is a F? value specifying the minification filter to apply to lookups.!vulkan mipmapMode is a 9 value specifying the mipmap filter to apply to lookups.!vulkan addressModeU is a R value specifying the addressing mode for outside [0..1] range for U coordinate.!vulkan addressModeV is a R value specifying the addressing mode for outside [0..1] range for V coordinate.!vulkan addressModeW is a R value specifying the addressing mode for outside [0..1] range for W coordinate.!vulkan mipLodBias is the bias to be added to mipmap LOD (level-of-detail) calculation and bias provided by image sampling functions in SPIR-V, as described in the  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-level-of-detail-operationLevel-of-Detail Operation section.!vulkananisotropyEnable is 8 to enable anisotropic filtering, as described in the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-anisotropic-filteringTexel Anisotropic Filtering section, or  otherwise.!vulkan maxAnisotropy9 is the anisotropy value clamp used by the sampler when anisotropyEnable is . If anisotropyEnable is ,  maxAnisotropy is ignored.!vulkan compareEnable is E to enable comparison against a reference value during lookups, or  otherwise.[Note: Some implementations will default to shader state if this member does not match.!vulkan compareOp is a  k value specifying the comparison function to apply to fetched data before filtering as described in the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operationDepth Compare Operation section.!vulkanminLod and maxLodL are the values used to clamp the computed LOD value, as described in the  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-level-of-detail-operationLevel-of-Detail Operation section.!vulkan borderColor is a  6 value specifying the predefined border color to use.!vulkanunnormalizedCoordinatest controls whether to use unnormalized or normalized texel coordinates to address texels of the image. When set to , the range of the image coordinates used to lookup the texel is in the range of zero to the image dimensions for x, y and z. When set to 0 the range of image coordinates is zero to one.When unnormalizedCoordinates is Q, images the sampler is used with in the shader have the following requirements:The viewType must be either (c or (.The image view must, have a single layer and a single mip level.When unnormalizedCoordinates is _, image built-in functions in the shader that use the sampler have the following requirements:The functions must not use projection.The functions must not use offsets.!vulkan-vkCreateSampler - Create a new sampler object Parametersdevice0 is the logical device that creates the sampler. pCreateInfo is a pointer to a ; structure specifying the state of the sampler object. pAllocator: 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.pSampler is a pointer to a h? handle in which the resulting sampler object is returned.Valid Usage (Implicit)device must be a valid z handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepSampler must be a valid pointer to a h handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJBSee Also, z, h, !vulkan=A convenience wrapper to make a compatible pair of calls to ! and !To ensure that ! is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument.!vulkan+vkDestroySampler - Destroy a sampler object Parametersdevice1 is the logical device that destroys the sampler.sampler is the sampler to destroy. pAllocator: 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. Valid Usage%All submitted commands that refer to sampler must have completed executionIf  were provided when sampler1 was created, a compatible set of callbacks must be provided here If no  were provided when sampler was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid z handleIf sampler is not ., sampler must be a valid h handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf sampler is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to sampler must be externally synchronizedSee Also, z, h!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!6None'"#%&'-./189;=>?FHIMSUVX_dghklmqI0vulkanUVkSemaphoreCreateInfo - Structure specifying parameters of a newly created semaphoreValid Usage (Implicit)sType must be 7Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , N, or <The sType value of each struct in the pNext chain must be uniqueflags must be 0See AlsoF, , !!vulkanpNext is NULL1 or a pointer to an extension-specific structure.!vulkanflags is reserved for future use.!vulkan7vkCreateSemaphore - Create a new queue semaphore object Parametersdevice2 is the logical device that creates the semaphore. pCreateInfo is a pointer to a P structure containing information about how the semaphore is to be created. pAllocator: 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. pSemaphoreS is a pointer to a handle in which the resulting semaphore object is returned.Valid Usage (Implicit)device must be a valid z handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pSemaphore must be a valid pointer to a g handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, z, g, !vulkan=A convenience wrapper to make a compatible pair of calls to ! and !To ensure that ! is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument.!vulkan/vkDestroySemaphore - Destroy a semaphore object Parametersdevice3 is the logical device that destroys the semaphore. semaphore+ is the handle of the semaphore to destroy. pAllocator: 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. Valid Usage$All submitted batches that refer to  semaphore must have completed executionIf  were provided when  semaphore1 was created, a compatible set of callbacks must be provided here If no  were provided when  semaphore was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid z handleIf  semaphore is not .,  semaphore must be a valid g handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf  semaphore is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  semaphore must be externally synchronizedSee Also, z, g!!!!!!!!!!!!5None'"#%&'-./189;=>?FHIMSUVX_dghklmqK vulkan<VkSubmitInfo - Structure specifying a queue submit operation Description)The order that command buffers appear in pCommandBuffers is used to determine  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission order, and thus all the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-implicitimplicit ordering guaranteesJ that respect it. Other than these implicit ordering guarantees and any  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization#explicit synchronization primitives, these command buffers may+ overlap or otherwise execute out of order. Valid UsageEach element of pCommandBuffers must( not have been allocated with /d  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  If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders. feature is not enabled, each element of pWaitDstStageMask must not contain  or Each element of pWaitDstStageMask must not include If any element of pWaitSemaphores or pSignalSemaphores was created with a   of  , then the pNext chain must include a : structureIf the pNext) chain of this structure includes a :# structure and any element of pWaitSemaphores was created with a   of  , then its waitSemaphoreValueCount member must equal waitSemaphoreCountIf the pNext) chain of this structure includes a :# structure and any element of pSignalSemaphores was created with a   of  , then its signalSemaphoreValueCount member must equal signalSemaphoreCountFor each element of pSignalSemaphores created with a   of  ( the corresponding element of :::pSignalSemaphoreValues mustQ have a value greater than the current value of the semaphore when the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operation is executedFor each element of pWaitSemaphores created with a   of  ( the corresponding element of :::pWaitSemaphoreValues must have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on that semaphore by more than xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference#maxTimelineSemaphoreValueDifferenceFor each element of pSignalSemaphores created with a   of  ( the corresponding element of :::pSignalSemaphoreValues must have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on that semaphore by more than xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference#maxTimelineSemaphoreValueDifference If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders. feature is not enabled, each element of pWaitDstStageMask must not contain  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 Valid Usage (Implicit)sType must be <Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of O, , ^, , :, , or The sType value of each struct in the pNext chain must be uniqueIf waitSemaphoreCount is not 0, pWaitSemaphores must( be a valid pointer to an array of waitSemaphoreCount valid g handlesIf waitSemaphoreCount is not 0, pWaitDstStageMask must( be a valid pointer to an array of waitSemaphoreCount! valid combinations of e valuesEach element of pWaitDstStageMask must not be 0If commandBufferCount is not 0, pCommandBuffers must( be a valid pointer to an array of commandBufferCount valid )t handlesIf signalSemaphoreCount is not 0, pSignalSemaphores must( be a valid pointer to an array of signalSemaphoreCount valid g handlesEach of the elements of pCommandBuffers, the elements of pSignalSemaphores, and the elements of pWaitSemaphores7 that are valid handles of non-ignored parameters mustD have been created, allocated, or retrieved from the same zSee Also)t, R, g, , !!vulkanpNext is NULL1 or a pointer to an extension-specific structure.!vulkanpWaitSemaphores is a pointer to an array of g 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 )t" handles to execute in the batch.!vulkanpSignalSemaphores is a pointer to an array of g 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 Parametersdevice+ is the logical device that owns the queue.queueFamilyIndexB is the index of the queue family to which the queue belongs. queueIndexE is the index within this queue family of the queue to retrieve.pQueue is a pointer to a kI object that will be filled with the handle for the requested queue. Description! must8 only be used to get queues that were created with the flags parameter of  ? set to zero. To get queues that were created with a non-zero flags parameter use ?/. Valid UsagequeueFamilyIndex must8 be one of the queue family indices specified when device was created, via the   structure queueIndex mustZ be less than the number of queues created for the specified queue family index when device was created, via the  queueCount member of the   structure ::flags must have been set to zero when device was createdValid Usage (Implicit)device must be a valid z handlepQueue must be a valid pointer to a k handleSee Alsoz, k!vulkanOvkQueueSubmit - Submits a sequence of semaphores or command buffers to a queue Parametersqueue< is the queue that the command buffers will be submitted to. submitCount" is the number of elements in the pSubmits array.pSubmits is a pointer to an array of D structures, each specifying a command buffer submission batch.fence is an optionalg handle to a fence to be signaled once all submitted command buffers have completed execution. If fence is not ., it defines a  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signalingfence signal operation. DescriptionNote>Submission can be a high overhead operation, and applications should6 attempt to batch work together into as few calls to ! as possible.! 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 zf! 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 K or J". 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 H. See  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device. Valid UsageIf fence is not ., fence must be unsignaledIf fence is not ., fence mustg not be associated with any other queue command that has not yet completed execution on that queueAny 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 )y that is referenced by any of those commands in a command buffer that has been submitted to another queue and is still in the  pending state.Any stage flag included in any element of the pWaitDstStageMask member of any element of pSubmits mustB be a pipeline stage supported by one of the capabilities of queue, as specified in the whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported"table of supported pipeline stagesEach element of the pSignalSemaphores member of any element of pSubmits must\ be unsignaled when the semaphore signal operation it defines is executed on the devicecWhen a semaphore wait operation referring to a binary semaphore defined by any element of the pWaitSemaphores member of any element of pSubmits executes on queue, there must6 be no other queues waiting on the same semaphoreAll elements of the pWaitSemaphores member of all elements of pSubmits created with a   of   must reference a semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) must' have also been submitted for executionEach element of the pCommandBuffers member of each element of pSubmits must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclepending or executable stateIf any element of the pCommandBuffers member of any element of pSubmits was not recorded with the zg , it must not be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state Any  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-secondary"secondary command buffers recorded into any element of the pCommandBuffers member of any element of pSubmits must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclepending or executable state If any  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-secondary"secondary command buffers recorded into any element of the pCommandBuffers member of any element of pSubmits was not recorded with the zg , it must not be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending stateEach element of the pCommandBuffers member of each element of pSubmits must! have been allocated from a )1 that was created for the same queue family queue belongs toIf any element of pSubmits->pCommandBuffers includes a  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquire'Queue Family Transfer Acquire Operation , there must# exist a previously submitted  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-release'Queue Family Transfer Release Operation on a queue in the queue family identified by the acquire operation, with parameters matching the acquire operation as defined in the definition of such  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquireacquire operations5, and which happens-before the acquire operation*If a command recorded into any element of pCommandBuffers was a  7 whose  queryPool was created with a  queryType of ,, the  \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#profiling-lockprofiling lock must) have been held continuously on the z that queueG was retrieved from, throughout recording of those command buffersAny resource created with h0 that is read by an operation specified by pSubmits must@ not be owned by any queue family other than the one which queue, belongs to, at the time it is executedValid Usage (Implicit)queue must be a valid k handleIf  submitCount is not 0, pSubmits must( be a valid pointer to an array of  submitCount valid  structuresIf fence is not ., fence must be a valid w handleBoth of fence, and queue7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same zHost 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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJHSee Alsow, k, !vulkan1vkQueueWaitIdle - Wait for a queue to become idle Parametersqueue is the queue on which to wait. Description!o is equivalent to submitting a fence to a queue and waiting with an infinite timeout for that fence to signal.Valid Usage (Implicit)queue must be a valid k 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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJHSee Alsok!vulkan3vkDeviceWaitIdle - Wait for a device to become idle Parametersdevice is the logical device to idle. Description! is equivalent to calling ! for all queues owned by device.Valid Usage (Implicit)device must be a valid z handleHost SynchronizationHost access to all k objects created from device must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJHSee Alsoz !!!!!!!!!! !!!!!!!!!!4None'"#%&'-./189;=>?FHIMSUVX_dghklmqK vulkanVVkQueryPoolCreateInfo - Structure specifying parameters of a newly created query pool DescriptionpipelineStatistics is ignored if  queryType is not +. Valid Usage If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineStatisticsQuerypipeline statistics queries feature is not enabled,  queryType must not be +If  queryType is +, pipelineStatistics must be a valid combination of Xi valuesIf  queryType is , , the pNext chain must" include a structure of type [ queryCount must be greater than 0Valid Usage (Implicit)sType must be 5Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of [ or ,The sType value of each struct in the pNext chain must be uniqueflags must be 0 queryType must be a valid X valueSee Also, , X, , !!vulkanpNext is NULL1 or a pointer to an extension-specific structure.!vulkanflags is reserved for future use.!vulkan queryType is a X; 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 Xia 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 object Parametersdevice3 is the logical device that creates the query pool. pCreateInfo is a pointer to a T structure containing the number and type of queries to be managed by the pool. pAllocator: 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. pQueryPool is a pointer to a lB handle in which the resulting query pool object is returned.Valid Usage (Implicit)device must be a valid z handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pQueryPool must be a valid pointer to a l handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, z, l, !vulkan=A convenience wrapper to make a compatible pair of calls to ! and !To ensure that ! is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument.!vulkan0vkDestroyQueryPool - Destroy a query pool object Parametersdevice4 is the logical device that destroys the query pool. queryPool is the query pool to destroy. pAllocator: 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. Valid Usage%All submitted commands that refer to  queryPool must have completed executionIf  were provided when  queryPool1 was created, a compatible set of callbacks must be provided here If no  were provided when  queryPool was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid z handleIf  queryPool is not .,  queryPool must be a valid l handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf  queryPool is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  queryPool must be externally synchronizedSee Also, z, l!vulkanXvkGetQueryPoolResults - Copy results of queries in a query pool to a host memory region Parametersdevice0 is the logical device that owns the query pool. queryPoolL is the query pool managing the queries containing the desired results. firstQuery is the initial query index. queryCount" is the number of queries to read.dataSize2 is the size in bytes of the buffer pointed to by pData.pDataO is a pointer to a user-allocated buffer where the results will be writtenstrideK is the stride in bytes between results for individual queries within pData.flags is a bitmask of W3 specifying how and when results are returned. 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 Q 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 P3. However, availability state is still written to pData for those queries if  is set.Note Applications must& take care to ensure that use of the  bit has the desired effect.]For example, if a query has been used previously and a command buffer records the commands  ;,  7, and  9K for that query, then the query will remain in the available state until X< 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 X< is called or the  ;< command has been executed since the last use of the query.Note Applications canz double-buffer query pool usage, with a pool per frame, and reset queries at the end of the frame in which they are read.If  is set,  is not set, and the query s status is unavailable, an intermediate result value between zero and the final result value is written to pData for that query.If  is set, the final integer value written for each query is non-zero if the query s status was available or zero if the status was unavailable. When  is used, implementations mustY guarantee that if they return a non-zero availability value then the numerical results mustG be valid, assuming the results are not reset by a subsequent command.NoteSatisfying this guarantee mayp require careful ordering by the application, e.g. to read the availability status before reading the results. Valid Usage firstQuery must, be less than the number of queries in  queryPool If  is not set in flags, then pData and stride must be multiples of 4If  is not set in flags and the  queryType used to create  queryPool was not , , then pData and stride must be multiples of 4If  is set in flags then pData and stride must be multiples of 8If the  queryType used to create  queryPool was , , then pData and stride must" be multiples of the size of j The sum of  firstQuery and  queryCount must8 be less than or equal to the number of queries in  queryPooldataSize mustM be large enough to contain the result of each query, as described lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-memorylayouthereIf the  queryType used to create  queryPool was ), flags must not contain If the  queryType used to create  queryPool was ,, flags must not contain ,  or If the  queryType used to create  queryPool was , , the  queryPool mustL have been recorded once for each pass as retrieved via a call to dValid Usage (Implicit)device must be a valid z handle queryPool must be a valid l handlepData must# be a valid pointer to an array of dataSize bytesflags must be a valid combination of W valuesdataSize must be greater than 0 queryPool must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQP  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJHSee Alsoz, , l, V !!!!!!!!!! !!!!!!!!!!0None'"#%&'-./189;=>?FHIMSUVX_dghklmqO+0vulkanAVkSubpassDescription - 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 k, the application mustK 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 kD, writes to the corresponding location by a fragment are discarded.If flags does not include Ol , 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 k.Similarly, if flags does not include Ol, and _D::pDepthStencilResolveAttachment is not NULL and does not have the value k5, 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 ?mx, then the depth component of the resolve attachment is not written to and its contents are preserved. Similarly, if _D::stencilResolveMode is ?ml, then the stencil component of the resolve attachment is not written to and its contents are preserved. _D::depthResolveMode is ignored if the G of the pDepthStencilResolveAttachment/ does not have a depth component. Similarly, _D::stencilResolveMode is ignored if the G 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 0::pPostSubpassSampleLocations for the subpass.If pDepthStencilAttachment is NULL!, or if its attachment index is kM, 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:Ol is set.BThe attachment is used as a color or depth/stencil in the subpass.?Once the contents of an attachment become undefined in subpass S[, they remain undefined for subpasses in subpass dependency chains starting with subpass S until they are written again. However, they remain valid for subpasses in other subpass dependency chains starting with subpass S13 if those subpasses use or preserve the attachment. Valid UsagepipelineBindPoint must be colorAttachmentCount must be less than or equal to  _::maxColorAttachmentsIf the first use of an attachment in this render pass is as an input attachment, and the attachment is not also used as a color or depth/stencil attachment in the same subpass, then loadOp must not be 4GIf pResolveAttachments is not NULL/, for each resolve attachment that is not k*, the corresponding color attachment must not be kIf pResolveAttachments is not NULL/, for each resolve attachment that is not k*, the corresponding color attachment must! not have a sample count of !nIf pResolveAttachments is not NULL+, each resolve attachment that is not k must have a sample count of !nIf pResolveAttachments is not NULL+, each resolve attachment that is not k must have the same G+ as its corresponding color attachmentAll attachments in pColorAttachments that are not k must have the same sample countAll attachments in pInputAttachments that are not k must? have formats whose features contain at least one of no or npAll attachments in pColorAttachments that are not k must/ have formats whose features contain noAll attachments in pResolveAttachments that are not k must/ have formats whose features contain noIf pDepthStencilAttachment is not NULL and the attachment is not k then it must+ have a format whose features contain npIf the VK_AMD_mixed_attachment_samples3 extension is enabled, and all attachments in pColorAttachments that are not k mustT have a sample count that is smaller than or equal to the sample count of pDepthStencilAttachment if it is not kIf neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples% extensions are enabled, and if pDepthStencilAttachment is not k and any attachments in pColorAttachments are not k, they must have the same sample countThe  attachment member of each element of pPreserveAttachments must not be kEach element of pPreserveAttachments mustK not also be an element of any other member of the subpass description+If any attachment is used by more than one  member, then each use must use the same layoutIf flags includes Oq , it must also include OIf flags includes Ol, and if pResolveAttachments is not NULL$, then each resolve attachment must be kIf flags includes Ol, and if !pDepthStencilResolveAttachmentKHR is not NULL1, then the depth/stencil resolve attachment must be kIf flags includes Ol, then the subpass must7 be the last subpass in a subpass dependency chainIf flags includes Or6, then the sample count of the input attachments must equal rasterizationSamplesIf flags includes Or, and if sampleShadingEnable1 is enabled (explicitly or implicitly) then minSampleShading must equal 0.0(If the render pass is created with Us each of the elements of pInputAttachments must be kValid Usage (Implicit)flags must be a valid combination of Ot valuespipelineBindPoint must be a valid Q valueIf inputAttachmentCount is not 0, pInputAttachments must( be a valid pointer to an array of inputAttachmentCount valid  structuresIf colorAttachmentCount is not 0, pColorAttachments must( be a valid pointer to an array of colorAttachmentCount valid  structuresIf colorAttachmentCount is not 0, and pResolveAttachments is not NULL, pResolveAttachments must( be a valid pointer to an array of colorAttachmentCount valid  structuresIf pDepthStencilAttachment is not NULL, pDepthStencilAttachment must$ be a valid pointer to a valid  structureIf preserveAttachmentCount is not 0, pPreserveAttachments must# be a valid pointer to an array of preserveAttachmentCount uint32_t valuesSee Also, Q, , 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 u , 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 u, 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 /o (with matching  srcAccessMask and  dstAccessMask' parameters) submitted as a part of a   (with matching  srcStageMask and  dstStageMask parameters). The only difference being that its scopes are limited to the identified subpasses rather than potentially affecting everything before and after.@For attachments however, subpass dependencies work more like a /R defined similarly to the /o* above, the queue family indices set to v, and layouts as follows:The equivalent to  oldLayoutJ is the attachment s layout according to the subpass description for  srcSubpass.The equivalent to  newLayoutJ is the attachment s layout according to the subpass description for  dstSubpass. Valid Usage If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  srcStageMask must not contain  If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  dstStageMask must not contain  If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  srcStageMask must not contain  or  If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  dstStageMask must not contain  or  srcSubpass must be less than or equal to  dstSubpass", unless one of them is uF, to avoid cyclic dependencies and ensure a valid execution order srcSubpass and  dstSubpass must not both be equal to uIf  srcSubpass is equal to  dstSubpass# and not all of the stages in  srcStageMask and  dstStageMask are  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regionsframebuffer-space stages, the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically latest pipeline stage in  srcStageMask must be  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically earlier than or equal to the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically earliest pipeline stage in  dstStageMaskAny access flag included in  srcAccessMask must4 be supported by one of the pipeline stages in  srcStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesAny access flag included in  dstAccessMask must4 be supported by one of the pipeline stages in  dstStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesIf  srcSubpass equals  dstSubpass, and  srcStageMask and  dstStageMask both include a  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regionsframebuffer-space stage , then dependencyFlags must include wIf dependencyFlags includes x,  srcSubpass must not be equal to uIf dependencyFlags includes x,  dstSubpass must not be equal to uIf  srcSubpass equals  dstSubpassH and that subpass has more than one bit set in the view mask, then dependencyFlags must include x If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  srcStageMask must not contain  If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  srcStageMask must not contain  If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  dstStageMask must not contain  If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  dstStageMask must not contain Valid Usage (Implicit) srcStageMask must be a valid combination of e values srcStageMask must not be 0 dstStageMask must be a valid combination of e values dstStageMask must not be 0 srcAccessMask must be a valid combination of y values dstAccessMask must be a valid combination of y valuesdependencyFlags must be a valid combination of z valuesSee AlsoD, C, R, vulkanXVkRenderPassCreateInfo - Structure specifying parameters of a newly created render pass DescriptionNoteCare should be taken to avoid a data race here; if any subpasses access attachments with overlapping memory locations, and one of those accesses is a write, a subpass dependency needs to be included between them. Valid UsageIf the  attachment member of any element of pInputAttachments, pColorAttachments, pResolveAttachments or pDepthStencilAttachment, or any element of pPreserveAttachments in any element of  pSubpasses is not k, it must be less than attachmentCountFor any member of  pAttachments with a loadOp equal to 4G(, the first use of that attachment must not specify a layout equal to { or |For any member of  pAttachments with a  stencilLoadOp equal to 4G(, the first use of that attachment must not specify a layout equal to { or |For any member of  pAttachments with a loadOp equal to 4G(, the first use of that attachment must not specify a layout equal to }For any member of  pAttachments with a  stencilLoadOp equal to 4G(, the first use of that attachment must not specify a layout equal to ~If the pNext chain includes a  structure, the subpass$ member of each element of its pAspectReferences member must be less than  subpassCountIf the pNext chain includes a  structure, the inputAttachmentIndex$ member of each element of its pAspectReferences member must be less than the value of inputAttachmentCount in the member of  pSubpasses identified by its subpass memberIf the pNext chain includes a ( structure, for any element of the pInputAttachments member of any element of  pSubpasses where the  attachment member is not k , the  aspectMask- member of the corresponding element of ::pAspectReferences must` only include aspects that are present in images of the format specified by the element of  pAttachments at  attachmentIf the pNext chain includes a  structure, and its  subpassCount& member is not zero, that member must be equal to the value of  subpassCountIf the pNext chain includes a  structure, if its dependencyCount member is not zero, it must be equal to dependencyCountIf the pNext chain includes a . structure, for each non-zero element of  pViewOffsets , the  srcSubpass and  dstSubpass members of  pDependencies at the same index must not be equalIf the pNext chain includes a $ structure, for any element of  pDependencies with a dependencyFlags# member that does not include x(, the corresponding element of the  pViewOffsets member of that  instance must be 0If the pNext chain includes a ! structure, elements of its  pViewMasks member must either all be 0, or all not be 0If the pNext chain includes a ) structure, and each element of its  pViewMasks member is 0 , the dependencyFlags member of each element of  pDependencies must not include xIf the pNext chain includes a ) structure, and each element of its  pViewMasks member is 0, correlatedViewMaskCount must be 0If the pNext chain includes a % structure, each element of its  pViewMask member mustC not have a bit set at an index greater than or equal to  _::maxFramebufferLayersFor any element of  pDependencies , if the  srcSubpass is not u', all stage flags included in the  srcStageMask member of that dependency must+ be a pipeline stage supported by the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-typespipeline identified by the pipelineBindPoint member of the source subpassFor any element of  pDependencies , if the  dstSubpass is not u', all stage flags included in the  dstStageMask member of that dependency must+ be a pipeline stage supported by the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-typespipeline identified by the pipelineBindPoint' member of the destination subpassThe  srcSubpass member of each element of  pDependencies must be less than  subpassCountThe  dstSubpass member of each element of  pDependencies must be less than  subpassCountValid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , , or The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of U valuesIf attachmentCount is not 0,  pAttachments must( be a valid pointer to an array of attachmentCount valid  structures pSubpasses must# be a valid pointer to an array of  subpassCount valid  structuresIf dependencyCount is not 0,  pDependencies must( be a valid pointer to an array of dependencyCount valid  structures subpassCount must be greater than 0See Also, j, , , , " vulkanYVkFramebufferCreateInfo - Structure specifying parameters of a newly created framebuffer Description Applications must ensure that all accesses to memory that backs image subresources used as attachments in a given renderpass instance either happen-before the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-opsload operations. for those attachments, or happen-after the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-opsstore operations for those attachments.+For depth/stencil attachments, each aspect can be used separately as attachments and non-attachments as long as the non-attachment accesses are also via an image subresource in either the } layout or the ~o layout, and the attachment resource uses whichever of those two layouts the image accesses do not. Use of non-attachment aspects in this case is only well defined if the attachment is used in the subpass where the non-attachment access is being made, or the layout of the image subresource is constant throughout the entire render pass instance, including the  initialLayout and  finalLayout.NoteThese restrictions mean that the render pass has full knowledge of all uses of all of the attachments, so that the implementation is able to make correct decisions about when and how to perform layout transitions, when to overlap execution of subpasses, etc.It is legal for a subpass to use no color or depth/stencil attachments, either because it has no attachment references or because all of them are k. 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 1F 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 1::rasterizationSamples. Valid UsageattachmentCount must4 be equal to the attachment count specified in  renderPass(If flags does not include m , and attachmentCount is not 0,  pAttachments must( be a valid pointer to an array of attachmentCount valid t handlesIf flags does not include m, 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 If flags does not include m, each element of  pAttachments4 that is used as a depth/stencil attachment by  renderPass must have been created with a usage value including If flags does not include m, each element of  pAttachments< that is used as a depth/stencil resolve attachment by  renderPass must have been created with a usage value including If flags does not include m, each element of  pAttachments- that is used as an input attachment by  renderPass must have been created with a usage value including 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 uIf  renderPass0 has a fragment density map attachment and  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nonsubsampledimagesnon-subsample image feature& is not enabled, each element of  pAttachments must have been created with a flags value including u@ unless that element is the fragment density map attachmentIf flags does not include m, each element of  pAttachments must have been created with a G value that matches the G% specified by the corresponding  in  renderPassIf flags does not include m, each element of  pAttachments must have been created with a samples value that matches the samples+ value specified by the corresponding  in  renderPassIf flags does not include m, each element of  pAttachments must have dimensions at least as large as the corresponding framebuffer dimension except for any element that is referenced by fragmentDensityMapAttachmentIf  renderPass> was specified with non-zero view masks, each element of  pAttachments that is not referenced by fragmentDensityMapAttachment must have a  layerCount\ greater than the index of the most significant bit set in any of those view masksIf  renderPass> was specified with non-zero view masks, each element of  pAttachments that is referenced by fragmentDensityMapAttachment must have a  layerCount equal to 1Z or greater than the index of the most significant bit set in any of those view masksIf  renderPassB was not specified with non-zero view masks, each element of  pAttachments that is referenced by fragmentDensityMapAttachment must have a  layerCount equal to 1If flags does not include m, an element of  pAttachments that is referenced by fragmentDensityMapAttachment must- have a width at least as large as ?\lceil{\frac{width}{maxFragmentDensityTexelSize_{width}}}\rceilIf flags does not include m, an element of  pAttachments that is referenced by fragmentDensityMapAttachment must. have a height at least as large as A\lceil{\frac{height}{maxFragmentDensityTexelSize_{height}}}\rceilIf flags does not include m, each element of  pAttachments must% only specify a single mip levelIf flags does not include m, each element of  pAttachments must1 have been created with the identity swizzlewidth must be greater than 0width must be less than or equal to  _::maxFramebufferWidthheight must be greater than 0height must be less than or equal to  _::maxFramebufferHeightlayers must be greater than 0layers must be less than or equal to  _::maxFramebufferLayersIf  renderPass) was specified with non-zero view masks, layers must be 1If flags does not include m, each element of  pAttachments@ that is a 2D or 2D array image view taken from a 3D image must not be a depth/stencil formatIf flags does not include m , and attachmentCount is not 0,  pAttachments must( be a valid pointer to an array of attachmentCount valid t handles If the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-imagelessFramebufferimageless framebuffer feature is not enabled, flags must not include mIf flags includes m , the pNext chain must include a 1 structureIf flags includes m , the attachmentImageInfoCount member of a 1 structure included in the pNext chain must! be equal to either zero or attachmentCountIf flags includes m , the width member of any element of the pAttachmentImageInfos member of a 1 structure included in the pNext chain must" be greater than or equal to width4, except for any element that is referenced by ::fragmentDensityMapAttachment in  renderPassIf flags includes m , the height member of any element of the pAttachmentImageInfos member of a 1 structure included in the pNext chain must" be greater than or equal to height4, except for any element that is referenced by ::fragmentDensityMapAttachment in  renderPassIf flags includes m , the width member of any element of the pAttachmentImageInfos member of a 1 structure included in the pNext" chain that is referenced by ::fragmentDensityMapAttachment in  renderPass must" be greater than or equal to ?\lceil{\frac{width}{maxFragmentDensityTexelSize_{width}}}\rceilIf flags includes m , the height member of any element of the pAttachmentImageInfos member of a 1 structure included in the pNext" chain that is referenced by ::fragmentDensityMapAttachment in  renderPass must" be greater than or equal to A\lceil{\frac{height}{maxFragmentDensityTexelSize_{height}}}\rceilIf multiview is enabled for  renderPass, and flags includes m , the  layerCount# member of any element of the pAttachmentImageInfos member of a 1 structure included in the pNext chain mustn be greater than the maximum bit index set in the view mask in the subpasses in which it is used in  renderPass If multiview is not enabled for  renderPass, and flags includes m , the  layerCount# member of any element of the pAttachmentImageInfos member of a 1 structure included in the pNext chain must" be greater than or equal to layersIf flags includes m , the usage member of any element of the pAttachmentImageInfos member of a 1 structure included in the pNext] chain that refers to an attachment used as a color attachment or resolve attachment by  renderPass must include If flags includes m , the usage member of any element of the pAttachmentImageInfos member of a 1 structure included in the pNextO chain that refers to an attachment used as a depth/stencil attachment by  renderPass must include If flags includes m , the usage member of any element of the pAttachmentImageInfos member of a 1 structure included in the pNextW chain that refers to an attachment used as a depth/stencil resolve attachment by  renderPass must include If flags includes m , the usage member of any element of the pAttachmentImageInfos member of a 1 structure included in the pNextH chain that refers to an attachment used as an input attachment by  renderPass must include If flags includes m#, at least one element of the  pViewFormats# member of any element of the pAttachmentImageInfos member of a 1 structure included in the pNext chain must- be equal to the corresponding value of ::format used to create  renderPassValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of 1The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of m values renderPass must be a valid i handleBoth of  renderPass, and the elements of  pAttachments7 that are valid handles of non-ignored parameters mustD have been created, allocated, or retrieved from the same zSee Also, t, i, , "vulkanDVkAttachmentReference - Structure specifying an attachment reference Valid UsageIf  attachment is not k, layout must not be b, c, , ;, ;, ;, or ;Valid Usage (Implicit)layout must be a valid J valueSee AlsoJ, , vulkanHVkAttachmentDescription - Structure specifying an attachment description Description,If the attachment uses a color format, then loadOp and storeOp are used, and  stencilLoadOp and stencilStoreOpB are ignored. If the format has depth and/or stencil components, loadOp and storeOp& apply only to the depth data, while  stencilLoadOp and stencilStoreOp* define how the stencil data is handled. loadOp and  stencilLoadOp define the load operationsF that execute as part of the first subpass that uses the attachment. storeOp and stencilStoreOp define the store operationsD that execute as part of the last subpass that uses the attachment.The load operation for each sample in an attachment happens-before any recorded command which accesses the sample in the first subpass where the attachment is used. Load operations for attachments with a depth/stencil format execute in the W pipeline stage. Load operations for attachments with a color format execute in the  pipeline stage.The store operation for each sample in an attachment happens-after any recorded command which accesses the sample in the last subpass where the attachment is used. Store operations for attachments with a depth/stencil format execute in the X pipeline stage. Store operations for attachments with a color format execute in the  pipeline stage.2If an attachment is not used by any subpass, then loadOp, storeOp, stencilStoreOp, and  stencilLoadOpq are ignored, and the attachment s memory contents will not be modified by execution of a render pass instance.aThe load and store operations apply on the first and last use of each view in the render pass, respectively. If a view index of an attachment is not included in the view mask in any subpass that uses it, then the load and store operations are ignored, and the attachment s memory contents will not be modified by execution of a render pass instance.{During a render pass instance, input/color attachments with color formats that have a component size of 8, 16, or 32 bits must be represented in the attachment s format throughout the instance. Attachments with other floating- or fixed-point color formats, or with depth components mayU be represented in a format with a precision higher than the attachment format, but mustN be represented with the same range. When such a component is loaded via the loadOpj, it will be converted into an implementation-dependent format used by the render pass. Such components must be converted from the render pass format, to the format of the attachment, before they are resolved or stored at the end of a render pass instance via storeOp&. Conversions occur as described in  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-numerics&Numeric Representation and Computation and  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-fixedconvFixed-Point Data Conversions.If flags includes , then the attachment is treated as if it shares physical memory with another attachment in the same render pass. This information limits the ability of the implementation to reorder certain operations (like layout transitions and the loadOp) such that it is not improperly reordered against other uses of the same physical memory via a different attachment. This is described in more detail below.aIf a render pass uses multiple attachments that alias the same device memory, those attachments must each include the k bit in their attachment description flags. Attachments aliasing the same memory occurs in multiple ways:]Multiple attachments being assigned the same image view as part of framebuffer creation.fAttachments using distinct image views that correspond to the same image subresource of an image.iAttachments using views of distinct image subresources which are bound to overlapping memory ranges.NoteRender passes must include subpass dependencies (either directly or via a subpass dependency chain) between any two subpasses that operate on the same attachment or aliasing attachments and those subpass dependencies must include execution and memory dependencies separating uses of the aliases, if at least one of those subpasses writes to one of the aliases. These dependencies must not include the wS 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 b, 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 4G. Valid Usage finalLayout must not be b or cIf format is a color format,  initialLayout must not be , |, ~, or }If format is a depth/stencil format,  initialLayout must not be If format is a color format,  finalLayout must not be , |, ~, or }If format is a depth/stencil format,  finalLayout must not be  If the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts feature is not enabled,  initialLayout must not be , , , or  If the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts feature is not enabled,  finalLayout must not be , , , or If format is a color format,  initialLayout must not be , , , or If format is a color format,  finalLayout must not be , , , or If formatO is a depth/stencil format which includes both depth and stencil aspects,  initialLayout must not be , , , or If formatO is a depth/stencil format which includes both depth and stencil aspects,  finalLayout must not be , , , or If formatF is a depth/stencil format which includes only the depth aspect,  initialLayout must not be  or If formatF is a depth/stencil format which includes only the depth aspect,  finalLayout must not be  or If formatH is a depth/stencil format which includes only the stencil aspect,  initialLayout must not be  or If formatH is a depth/stencil format which includes only the stencil aspect,  finalLayout must not be  or Valid Usage (Implicit)flags must be a valid combination of  valuesformat must be a valid G valuesamples must be a valid [ valueloadOp must be a valid  . valuestoreOp must be a valid  # value stencilLoadOp must be a valid  . valuestencilStoreOp must be a valid  # value initialLayout must be a valid J value finalLayout must be a valid J valueSee Also9,  .,  #, G, J, , [!vulkanpNext is NULL1 or a pointer to an extension-specific structure.!vulkanflags is a bitmask of m!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 te handles, each of which will be used as the corresponding attachment in a render pass instance. If flags includes m, 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 NULL1 or a pointer to an extension-specific structure.!vulkanflags is a bitmask of U!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 u.!vulkan dstSubpassC is the subpass index of the second subpass in the dependency, or u.!vulkan srcStageMask is a bitmask of e 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 e 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 y 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 y 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 z.!vulkanflags is a bitmask of Ot" specifying usage of the subpass.!vulkanpipelineBindPoint is a Q@ 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 k. to signify that this attachment is not used.!vulkanlayout is a JE 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 GV 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 [."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 Parametersdevice4 is the logical device that creates the framebuffer. pCreateInfo is a pointer to a M structure describing additional information about framebuffer creation. pAllocator: 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. pFramebuffer is a pointer to a vC handle in which the resulting framebuffer object is returned. Valid UsageIf pCreateInfo->flags does not include m , and attachmentCount is not 0, each element of pCreateInfo->pAttachments must have been created on deviceValid Usage (Implicit)device must be a valid z handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pFramebuffer must be a valid pointer to a v handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, z, v, "vulkan=A convenience wrapper to make a compatible pair of calls to " and "To ensure that " is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument."vulkan3vkDestroyFramebuffer - Destroy a framebuffer object Parametersdevice5 is the logical device that destroys the framebuffer. framebuffer- is the handle of the framebuffer to destroy. pAllocator: 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. Valid Usage%All submitted commands that refer to  framebuffer must have completed executionIf  were provided when  framebuffer1 was created, a compatible set of callbacks must be provided here If no  were provided when  framebuffer was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid z handleIf  framebuffer is not .,  framebuffer must be a valid v handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf  framebuffer is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  framebuffer must be externally synchronizedSee Also, z, v" vulkan4vkCreateRenderPass - Create a new render pass object Parametersdevice4 is the logical device that creates the render pass. pCreateInfo is a pointer to a = structure describing the parameters of the render pass. pAllocator: 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. pRenderPass is a pointer to a iC handle in which the resulting render pass object is returned.Valid Usage (Implicit)device must be a valid z handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pRenderPass must be a valid pointer to a i handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, z, i, " vulkan=A convenience wrapper to make a compatible pair of calls to "  and " To ensure that "  is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument." vulkan2vkDestroyRenderPass - Destroy a render pass object Parametersdevice5 is the logical device that destroys the render pass. renderPass- is the handle of the render pass to destroy. pAllocator: 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. Valid Usage%All submitted commands that refer to  renderPass must have completed executionIf  were provided when  renderPass1 was created, a compatible set of callbacks must be provided here If no  were provided when  renderPass was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid z handleIf  renderPass is not .,  renderPass must be a valid i handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf  renderPass is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  renderPass must be externally synchronizedSee Also, z, i" vulkanMvkGetRenderAreaGranularity - Returns the granularity for optimal render area Parametersdevice1 is the logical device that owns the render pass. renderPass is a handle to a render pass. pGranularity is a pointer to a 5 structure in which the granularity is returned. 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 # (the horizontal granularity).the offset.y member in  renderArea is a multiple of the height of the returned ! (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)device must be a valid z handle renderPass must be a valid i handle pGranularity must be a valid pointer to a  structure renderPass must6 have been created, allocated, or retrieved from deviceSee Alsoz, , i8!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""""""""" " " " 8"""" " " " !!!!""""""!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!None'"#%&'-./189;=>?FHIMSUVX_dghklmqOF vulkansVkRenderPassFragmentDensityMapCreateInfoEXT - Structure containing fragment density map attachment for render pass DescriptionlThe fragment density map attachment is read at an implementation-dependent time either by the host during  6 if the attachment s image view was not created with flags containing iE, or by the device when drawing commands in the renderpass execute ./If this structure is not present, it is as if fragmentDensityMapAttachment was given as k. Valid UsageIf fragmentDensityMapAttachment is not k, fragmentDensityMapAttachment must be less than 0+::attachmentCountIf fragmentDensityMapAttachment is not k, fragmentDensityMapAttachment must not be an element of 0k::pInputAttachments, 0k::pColorAttachments, 0k::pResolveAttachments, 0k::pDepthStencilAttachment, or 0k::pPreserveAttachments for any subpassIf fragmentDensityMapAttachment is not k, layout must be equal to  , or If fragmentDensityMapAttachment is not k, fragmentDensityMapAttachment must% reference an attachment with a loadOp equal to 4 or 4If fragmentDensityMapAttachment is not k, fragmentDensityMapAttachment must% reference an attachment with a storeOp equal to 3Valid Usage (Implicit)sType must be fragmentDensityMapAttachment must be a valid  structureSee Also, vulkanVkPhysicalDeviceFragmentDensityMapPropertiesEXT - Structure describing fragment density map properties that can be supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits:Valid Usage (Implicit)If the  structure is included in the pNext chain of OH, it is filled with the implementation-dependent limits and properties.See Also, , vulkanVkPhysicalDeviceFragmentDensityMapFeaturesEXT - Structure describing fragment density map features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of OK, it is filled with values indicating whether each feature is supported.  can also be included in pNext chain of    to enable the features.Valid Usage (Implicit)See Also, "-vulkanfragmentDensityMapAttachment9 is the fragment density map to use for the render pass."/vulkanminFragmentDensityTexelSize is the minimum  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-fragment-density-texel-sizefragment density texel size."0vulkanmaxFragmentDensityTexelSize- is the maximum fragment density texel size."1vulkanfragmentDensityInvocations& specifies whether the implementation mayH invoke additional fragment shader invocations for each covered sample."3vulkanfragmentDensityMap specifies whether the implementation supports render passes with a fragment density map attachment. If this feature is not enabled and the pNext chain of 0+ includes a  structure, fragmentDensityMapAttachment must be k."4vulkanfragmentDensityMapDynamic| specifies whether the implementation supports dynamic fragment density map image views. If this feature is not enabled, i must not be included in +[::flags."5vulkan%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.","-"."/"0"1"2"3"4"5"*"+"6"7"2"3"4"5"."/"0"1","-"+"7"*"6/None'"#%&'-./189;=>?FHIMSUVX_dghklmqP$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 AlsoD, ,  ,  vulkanVVkImageMemoryBarrier - Structure specifying the parameters of an image memory barrier Description The first  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopej is limited to access to memory through the specified image subresource range, via access types in the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-maskssource access mask specified by  srcAccessMask. If  srcAccessMask includes , memory writes performed by that access type are also made visible, as that access type is not performed through a resource. The second  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopej is limited to access to memory through the specified image subresource range, via access types in the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masksdestination access mask specified by  dstAccessMask. If  dstAccessMask includes  or , available memory writes are also made visible to accesses of those types, as those access types are not performed through a resource.If srcQueueFamilyIndex is not equal to dstQueueFamilyIndex, and srcQueueFamilyIndexK is equal to the current queue family, then the memory barrier defines a  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-releasequeue family release operationd for the specified image subresource range, and the second access scope includes no access, as if  dstAccessMask was 0.If dstQueueFamilyIndex is not equal to srcQueueFamilyIndex, and dstQueueFamilyIndexK is equal to the current queue family, then the memory barrier defines a  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquirequeue family acquire operationc for the specified image subresource range, and the first access scope includes no access, as if  srcAccessMask was 0.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 transition, for the specified image subresource range._Layout transitions that are performed via image memory barriers execute in their entirety in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission orderj, relative to other image layout transitions submitted to the same queue, including those performed by  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass render passes. In effect there is an implicit execution dependency from each such layout transition to all layout transitions previously submitted to the same queue.SThe image layout of each image subresource of a depth/stencil image created with   is dependent on the last sample locations used to render to the image subresource as a depth/stencil attachment, thus when the image member of a 5 is an image created with this flag the application can include a  structure in the pNext chain of L to specify the sample locations to use during the image layout transition.If the  structure included in the pNext chain of l does not match the sample location state last used to render to the image subresource range specified by subresourceRange or if no  structure is included in the pNext chain of S, then the contents of the given image subresource range becomes undefined as if  oldLayout would equal b.If image, has a multi-planar format and the image is disjoint, then including k in the  aspectMask member of subresourceRange is equivalent to including k, k', and (for three-plane formats only) k. Valid Usage oldLayout must be bM or the current layout of the image subresources affected by the barrier newLayout must not be b or cIf image) was created with a sharing mode of , at least one of srcQueueFamilyIndex and dstQueueFamilyIndex must be vIf image) was created with a sharing mode of , and one of srcQueueFamilyIndex and dstQueueFamilyIndex is v, the other must be vb or a special queue family reserved for external memory transfers, as described in mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersIf image) was created with a sharing mode of h and srcQueueFamilyIndex is v, dstQueueFamilyIndex must also be vIf image) was created with a sharing mode of h and srcQueueFamilyIndex is not v , it mustu be a valid queue family or a special queue family reserved for external memory transfers, as described in mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersIf image) was created with a sharing mode of h and dstQueueFamilyIndex is not v , it mustu be a valid queue family or a special queue family reserved for external memory transfers, as described in mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersIf image) was created with a sharing mode of h , and srcQueueFamilyIndex and dstQueueFamilyIndex are not v, at least one of them mustK be the same as the family of the queue that will execute this barriersubresourceRange.baseMipLevel must be less than the  mipLevels specified in * when image was createdIf subresourceRange.levelCount is not , subresourceRange.baseMipLevel + subresourceRange.levelCount must be less than or equal to the  mipLevels specified in * when image was createdsubresourceRange.baseArrayLayer must be less than the  arrayLayers specified in * when image was createdIf subresourceRange.layerCount is not , subresourceRange.baseArrayLayer + subresourceRange.layerCount must be less than or equal to the  arrayLayers specified in * when image was createdIf 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 kZ and k[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 kZ and k[If imagee has a color format and either the format is single-plane or the image is not disjoint then the  aspectMask member of subresourceRange must only include kIf image, has a multi-planar format and the image is disjoint, then the  aspectMask member of subresourceRange must* include either at least one of k, k, and k ; or must include kIf image? has a multi-planar format with only two planes, then the  aspectMask member of subresourceRange must not include k If either  oldLayout or  newLayout is  then image must have been created with  set If either  oldLayout or  newLayout is  then image must have been created with  set If either  oldLayout or  newLayout is | then image must have been created with  set If either  oldLayout or  newLayout is } then image must have been created with  set If either  oldLayout or  newLayout is ~ then image must have been created with  set If either  oldLayout or  newLayout is { then image must have been created with  or  set If either  oldLayout or  newLayout is  then image must have been created with  set If either  oldLayout or  newLayout is  then image must have been created with  setIf image is non-sparse then it must< be bound completely and contiguously to a single )v object If either  oldLayout or  newLayout is  then image must have been created with  setValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be unique oldLayout must be a valid J value newLayout must be a valid J valueimage must be a valid u handlesubresourceRange must be a valid  structureSee AlsoD, u, J, , ,  ,  vulkanDVkDrawIndirectCommand - Structure specifying a draw indirect command DescriptionThe members of > have the same meaning as the similarly named parameters of  . Valid Usage>For a given vertex buffer binding, any attribute data fetched mustf be entirely contained within the corresponding vertex buffer binding, as described in \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input If the  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectFirstInstancedrawIndirectFirstInstance feature is not enabled,  firstInstance must be 0See Also vulkanTVkDrawIndexedIndirectCommand - Structure specifying a draw indexed indirect command DescriptionThe members of > have the same meaning as the similarly named parameters of  . Valid Usage>For a given vertex buffer binding, any attribute data fetched mustf be entirely contained within the corresponding vertex buffer binding, as described in \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input( indexSize * ( firstIndex +  indexCount) + offset) mustM be less than or equal to the size of the bound index buffer, with  indexSize& being based on the type specified by  indexType, where the index buffer,  indexType, and offset are specified via   If the  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectFirstInstancedrawIndirectFirstInstance feature is not enabled,  firstInstance must be 0See Also vulkanMVkDispatchIndirectCommand - Structure specifying a dispatch indirect command DescriptionThe members of < have the same meaning as the corresponding parameters of  . Valid UsageSee Also vulkanDVkBufferMemoryBarrier - Structure specifying a buffer memory barrier Description The first  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope_ is limited to access to memory through the specified buffer range, via access types in the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-maskssource access mask specified by  srcAccessMask. If  srcAccessMask includes , memory writes performed by that access type are also made visible, as that access type is not performed through a resource. The second  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope_ is limited to access to memory through the specified buffer range, via access types in the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masksdestination access mask. specified by  dstAccessMask. If  dstAccessMask includes  or , available memory writes are also made visible to accesses of those types, as those access types are not performed through a resource.If srcQueueFamilyIndex is not equal to dstQueueFamilyIndex, and srcQueueFamilyIndexK is equal to the current queue family, then the memory barrier defines a  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-releasequeue family release operationY for the specified buffer range, and the second access scope includes no access, as if  dstAccessMask was 0.If dstQueueFamilyIndex is not equal to srcQueueFamilyIndex, and dstQueueFamilyIndexK is equal to the current queue family, then the memory barrier defines a  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquirequeue family acquire operationX for the specified buffer range, and the first access scope includes no access, as if  srcAccessMask was 0. Valid Usageoffset must be less than the size of buffer If size is not equal to $, size must be greater than 0If size is not equal to $, size must0 be less than or equal to than the size of buffer minus offsetIf buffer) was created with a sharing mode of , at least one of srcQueueFamilyIndex and dstQueueFamilyIndex must be vIf buffer) was created with a sharing mode of , and one of srcQueueFamilyIndex and dstQueueFamilyIndex is v, the other must be vl or 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-transfersIf buffer) was created with a sharing mode of h and srcQueueFamilyIndex is v, dstQueueFamilyIndex must also be vIf buffer) was created with a sharing mode of h and srcQueueFamilyIndex is not v , it mustu be a valid queue family or a special queue family reserved for external memory transfers, as described in mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersIf buffer) was created with a sharing mode of h and dstQueueFamilyIndex is not v , it mustu be a valid queue family or a special queue family reserved for external memory transfers, as described in mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersIf buffer) was created with a sharing mode of h , and srcQueueFamilyIndex and dstQueueFamilyIndex are not v, at least one of them mustK be the same as the family of the queue that will execute this barrierIf buffer is non-sparse then it must< be bound completely and contiguously to a single )v objectValid Usage (Implicit)sType must be pNext must be NULLbuffer must be a valid  handleSee AlsoD, , , ,  ,  "Fvulkanx must be less than or equal to  _::maxComputeWorkGroupCount[0]"Gvulkany must be less than or equal to  _::maxComputeWorkGroupCount[1]"Hvulkanz must be less than or equal to  _::maxComputeWorkGroupCount[2]"Jvulkan indexCount# is the number of vertices to draw."Kvulkan instanceCount$ is the number of instances to draw."Lvulkan firstIndex+ is the base index within the index buffer."Mvulkan vertexOffsetP is the value added to the vertex index before indexing into the vertex buffer."Nvulkan firstInstance2 is the instance ID of the first instance to draw."Pvulkan vertexCount# is the number of vertices to draw."Qvulkan instanceCount$ is the number of instances to draw."Rvulkan firstVertex* is the index of the first vertex to draw."Svulkan firstInstance2 is the instance ID of the first instance to draw."UvulkanpNext is NULL1 or a pointer to an extension-specific structure."Vvulkan srcAccessMask is a bitmask of y specifying a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-maskssource access mask."Wvulkan dstAccessMask is a bitmask of y specifying a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masksdestination access mask."Xvulkan 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."Yvulkan 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."ZvulkansrcQueueFamilyIndex# 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 srcAccessMask is a bitmask of y 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 y specifying a  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masksdestination access mask."avulkansrcQueueFamilyIndex# 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."bvulkandstQueueFamilyIndex( 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."cvulkanbufferL is a handle to the buffer whose backing memory is affected by the barrier."dvulkanoffset3 is an offset in bytes into the backing memory for bufferD; this is relative to the base offset as bound to the buffer (see .)."evulkansize@ 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."gvulkan srcAccessMask must be a valid combination of y values"hvulkan dstAccessMask must be a valid combination of y valuesa !!! ! !!"f"g"h"T"U"\"V"W"Z"["X"Y"]"O"P"Q"R"S"I"K"N"J"L"M"E"F"G"H"^"e"d"c"_"`"a"boptsrq"f"g"h"^"e"d"c"_"`"a"b"T"U"\"V"W"Z"["X"Y"]"O"P"Q"R"S"I"K"N"J"L"M"E"F"G"H !!! ! !!optsrqtsrq-None'"#%&'-./189;=>?FHIMSUVX_dghklmqR)vulkanNVkMemoryAllocateInfo - Structure containing parameters of a memory allocation DescriptionA 5 structure defines a memory import operation if its pNext0 chain includes one of the following structures:H with non-zero  handleType valueE with a non-zero  handleType value with a non-zero  handleType value with a non-NULL buffer valueImporting memory must8 not modify the content of the memory. Implementations must ensure that importing memory does not enable the importing Vulkan instance to access any memory or resources in other Vulkan instances other than that corresponding to the memory object imported. Implementations must also ensure accessing imported memory which has not been initialized does not allow the importing Vulkan instance to obtain data from the exporting Vulkan instance or vice-versa.NoteHow exported and imported memory is isolated is left to the implementation, but applications should be aware that such isolation may prevent implementations from placing multiple exportable memory objects in the same physical or virtual page. Hence, applications shouldF avoid creating many small external memory objects whenever possible.When performing a memory import operation, it is the responsibility of the application to ensure the external handles meet all valid usage requirements. However, implementations mustn perform sufficient validation of external handles to ensure that the operation results in a valid memory object which will not cause program termination, device loss, queue stalls, or corruption of other resources when used as allowed according to its allocation parameters. If the external handle provided does not meet these requirements, the implementation must8 fail the memory import operation with the error code ,. Valid UsageIf the pNext chain includes a ? structure, and any of the handle types specified in :: handleTypes: require a dedicated allocation, as reported by O in K4::/externalMemoryProperties.externalMemoryFeatures or K1::/externalMemoryProperties.externalMemoryFeatures , the pNext chain must include a  or  structure with either its image or buffer' member set to a value other than ..If the pNext chain includes a  structure, it must not include a  or  structureIf the pNext chain includes a H structure, it must not include a  structureIf the parameters define an import operation, the external handle specified was created by the Vulkan API, and the external handle type is , then the values of allocationSize and memoryTypeIndex mustR match those specified when the memory object being imported was createdIf the parameters define an import operation and the external handle specified was created by the Vulkan API, the device mask specified by  mustN match that specified when the memory object being imported was allocatedIf the parameters define an import operation and the external handle specified was created by the Vulkan API, the list of physical devices that comprise the logical device passed to " mustv match the list of physical devices that comprise the logical device on which the memory was originally allocatedIf the parameters define an import operation and the external handle is an NT handle or a global share handle created outside of the Vulkan API, the value of memoryTypeIndex must' be one of those returned by eIf the parameters define an import operation, the external handle was created by the Vulkan API, and the external handle type is  or , then the values of allocationSize and memoryTypeIndex mustR match those specified when the memory object being imported was createdWIf the parameters define an import operation and the external handle type is <, <, or <=, allocationSize must@ match the size reported in the memory requirements of the image or buffer member of the  structure included in the pNext chainWIf the parameters define an import operation and the external handle type is <<, allocationSize mustn match the size specified when creating the Direct3D 12 heap from which the external handle was extractedIf the parameters define an import operation and the external handle is a POSIX file descriptor created outside of the Vulkan API, the value of memoryTypeIndex must" be one of those returned by c9If the protected memory feature is not enabled, the ::memoryTypeIndex must3 not indicate a memory type that reports fNjIf 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 d]If the parameters define an import operation and the external handle is a host pointer, allocationSize must be an integer multiple of ::minImportedHostPointerAlignmentaIf the parameters define an import operation and the external handle is a host pointer, the pNext chain must not include a  structure with either its image or buffer& field set to a value other than .aIf the parameters define an import operation and the external handle is a host pointer, the pNext chain must not include a  structure with either its image or buffer& field set to a value other than .WIf the parameters define an import operation and the external handle type is <g, allocationSize must be the size returned by % for the Android hardware bufferWIf the parameters define an import operation and the external handle type is <g, and the pNext chain does not include a  structure or ::image is .#, the Android hardware buffer must have a AHardwareBuffer_Desc::format of AHARDWAREBUFFER_FORMAT_BLOB and a AHardwareBuffer_Desc::usage that includes %AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFERWIf the parameters define an import operation and the external handle type is <g, memoryTypeIndex must" be one of those returned by % for the Android hardware buffer=If the parameters do not define an import operation, and the pNext chain includes a  structure with <g included in its  handleTypes member, and the pNext chain includes a  structure with image not equal to . , then allocationSize must be 0 , otherwise allocationSize must be greater than 0nIf the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext chain includes a  with image that is not .*, the Android hardware buffer s f::usage must include at least one of &AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT or 'AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGEnIf the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext chain includes a  with image that is not ., the format of image must be E% or the format returned by  in ::format% for the Android hardware buffernIf the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext chain includes a  structure with image that is not .8, the width, height, and array layer dimensions of image( and the Android hardware buffer s AHardwareBuffer_Desc must be identicalnIf the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext chain includes a  structure with image that is not .., and the Android hardware buffer s f::usage includes )AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE, the image must have a complete mipmap chainnIf the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext chain includes a  structure with image that is not .., and the Android hardware buffer s f::usage does not include )AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE, the image must have exactly one mipmap levelnIf the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext chain includes a  structure with image that is not .$, each bit set in the usage of image must be listed in  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-usage!AHardwareBuffer Usage Equivalence', and if there is a corresponding AHARDWAREBUFFER_USAGE bit listed that bit must3 be included in the Android hardware buffer s AHardwareBuffer_Desc::usageIf ::opaqueCaptureAddress is not zero, ::flags must include EIf ::flags includes E, the  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressCaptureReplay bufferDeviceAddressCaptureReplay feature must be enabledIf ::flags includes EO, the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressbufferDeviceAddress feature must be enabledIf the pNext chain includes a  structure, ::opaqueCaptureAddress must be zero3If the parameters define an import operation, ::opaqueCaptureAddress must be zeroValid Usage (Implicit)sType must be ;Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , , , I, , , E, , H, , , , , or The sType value of each struct in the pNext chain must be uniqueSee Also, , "vulkan@VkMappedMemoryRange - Structure specifying a mapped memory range Valid Usagememory must be currently host mappedIf size is not equal to $, offset and size mustE specify a range contained within the currently mapped range of memoryIf size is equal to $, offset must. be within the currently mapped range of memoryIf size is equal to $), the end of the current mapping of memory must be a multiple of  _::nonCoherentAtomSize3 bytes from the beginning of the memory objectoffset must be a multiple of  _::nonCoherentAtomSizeIf 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)sType must be :pNext must be NULLmemory must be a valid { handleSee Also{, , , ", ""vulkanmemory2 is the memory object to which this range belongs."vulkanoffsetH is the zero-based byte offset from the beginning of the memory object."vulkansize" is either the size of range, or $ to affect the range from offset5 to the end of the current mapping of the allocation."vulkanpNext is NULL1 or a pointer to an extension-specific structure."vulkanallocationSize' is the size of the allocation in bytes"vulkanmemoryTypeIndex1 is an index identifying a memory type from the  memoryTypes array of the  ` structure"vulkan)vkAllocateMemory - Allocate device memory Parametersdevice, is the logical device that owns the memory. pAllocateInfo is a pointer to a _ structure describing parameters of the allocation. A successful returned allocation mustX use the requested parameters  no substitution is permitted by the implementation. pAllocator: 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.pMemory is a pointer to a {I handle in which information about the allocated memory is returned. DescriptionAllocations returned by "% are guaranteed to meet any alignment requirement of the implementation. For example, if an implementation requires 128 byte alignment for images and 64 byte alignment for buffers, the device memory returned through this mechanism would be 128-byte aligned. This ensures that applications can correctly suballocate objects of different types (with potentially different alignment requirements) in the same memory object.TWhen memory is allocated, its contents are undefined with the following constraint:#The contents of unprotected memory mustr not be a function of data protected memory objects, even if those memory objects were previously freed.Note4The contents of memory allocated by one application should not be a function of data from protected memory objects of another application, even if those memory objects were previously freed.4The maximum number of valid memory allocations that can exist simultaneously within a z mayO be restricted by implementation- or platform-dependent limits. If a call to "` would cause the total number of allocations to exceed these limits, such a call will fail and must return B. The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxMemoryAllocationCountmaxMemoryAllocationCount3 feature describes the number of allocations that canA exist simultaneously before encountering these internal limits.Some platforms mayX have a limit on the maximum size of a single allocation. For example, certain systems may fail to create allocations with a size greater than or equal to 4GB. Such a limit is implementation-dependent, and if such a failure occurs then the error J must, be returned. This limit is advertised in Q::maxMemoryAllocationSize./The cumulative memory size allocated to a heap can be limited by the size of the specified heap. In such cases, allocated memory is tracked on a per-device and per-heap basis. Some platforms allow overallocation into other heaps. The overallocation behavior can be specified through the %VK_AMD_memory_overallocation_behavior extension. Valid UsagepAllocateInfo->allocationSize must be less than or equal to  `:: memoryHeapsemindex].size where memindex =  `:: memoryTypesD[pAllocateInfo->memoryTypeIndex].heapIndex as returned by  ^ for the )q that device was created frompAllocateInfo->memoryTypeIndex must be less than  `::memoryTypeCount as returned by  ^ for the )q that device was created from If the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceCoherentMemorydeviceCoherentMemory feature is not enabled, pAllocateInfo->memoryTypeIndex must1 not identify a memory type supporting fValid Usage (Implicit)device must be a valid z handle pAllocateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepMemory must be a valid pointer to a { handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJB,PSee Also, z, {, "vulkan=A convenience wrapper to make a compatible pair of calls to " and "To ensure that " is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument."vulkan!vkFreeMemory - Free device memory Parametersdevice, is the logical device that owns the memory.memory is the { object to be freed. pAllocator: 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. Description/Before freeing a memory object, an application muste ensure the memory object is no longer in use by the device  for example by command buffers in the  pending state . Memory can@ be freed whilst still bound to resources, but those resources mustU not be used afterwards. If there are still any bound images or buffers, the memory may9 not be immediately released by the implementation, but must be released by the time all bound images and buffers have been destroyed. Once memory is released, it is returned to the heap from which it was allocated.SHow memory objects are bound to Images and Buffers is described in detail in the  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-associationResource Memory Association section.QIf a memory object is mapped at the time it is freed, it is implicitly unmapped.NoteAs described  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-unmap-does-not-flushbelowf, host writes are not implicitly flushed when the memory object is unmapped, but the implementation mustR guarantee that writes that have not been flushed do not affect any other memory. Valid Usage%All submitted commands that refer to memory (via images or buffers) must have completed executionValid Usage (Implicit)device must be a valid z handleIf memory is not ., memory must be a valid { handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf memory is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to memory must be externally synchronizedSee Also, z, {"vulkan@vkMapMemory - Map a memory object into application address space Parametersdevice, is the logical device that owns the memory.memory is the { object to be mapped.offsetJ is a zero-based byte offset from the beginning of the memory object.size1 is the size of the memory range to map, or $ to map from offset to the end of the allocation.flags is reserved for future use.ppData is a pointer to a void *| variable in which is returned a host-accessible pointer to the beginning of the mapped range. This pointer minus offset must be aligned to at least  _::minMemoryMapAlignment. 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 G. The application canv 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 f 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 Usagememory must not be currently host mappedoffset must be less than the size of memoryIf size is not equal to $, size must be greater than 0If size is not equal to $, size must/ be less than or equal to the size of the memory minus offsetmemory must8 have been created with a memory type that reports fmemory must0 not have been allocated with multiple instancesValid Usage (Implicit)device must be a valid z handlememory must be a valid { handleflags must be 0ppData must& be a valid pointer to a pointer valuememory must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to memory must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJGSee Alsoz, {, , P"vulkan<A convenience wrapper to make a compatible pair of calls to " and "To ensure that " is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument."vulkan7vkUnmapMemory - Unmap a previously mapped memory object Parametersdevice, is the logical device that owns the memory.memory% is the memory object to be unmapped. Valid Usagememory must be currently host mappedValid Usage (Implicit)device must be a valid z handlememory must be a valid { handlememory must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to memory must be externally synchronizedSee Alsoz, {"vulkan6vkFlushMappedMemoryRanges - Flush mapped memory ranges Parametersdevice3 is the logical device that owns the memory ranges.memoryRangeCount is the length of the  pMemoryRanges array. pMemoryRanges is a pointer to an array of 7 structures describing the memory ranges to flush. Description"@ guarantees that host writes to the memory ranges described by  pMemoryRanges? are made available to the host memory domain, such that they can5 be made available to the device memory domain via  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-available-and-visiblememory domain operations using the   jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type.Within each range described by  pMemoryRanges, each set of nonCoherentAtomSize bytes in that range is flushed if any byte in that set has been written by the host since it was first host mapped, or the last time it was flushed. If  pMemoryRanges includes sets of nonCoherentAtomSizeB bytes where no bytes have been written by the host, those bytes must not be flushed.|Unmapping non-coherent memory does not implicitly flush the host mapped memory, and host writes that have not been flushed may> not ever be visible to the device. However, implementations must[ ensure that writes that have not been flushed do not become visible to any other memory.NoteThe above guarantee avoids a potential memory corruption in scenarios where host writes to a mapped memory object have not been flushed before the memory is unmapped (or freed), and the virtual address range is subsequently reused for a different mapping (or memory allocation). Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Alsoz, "vulkanLvkInvalidateMappedMemoryRanges - Invalidate ranges of mapped memory objects Parametersdevice3 is the logical device that owns the memory ranges.memoryRangeCount is the length of the  pMemoryRanges array. pMemoryRanges is a pointer to an array of < structures describing the memory ranges to invalidate. Description"B guarantees that device writes to the memory ranges described by  pMemoryRangesG, which have been made available to the host memory domain using the  and   jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access types, are made visible to the host. If a range of non-coherent memory is written by the host and then invalidated without first being flushed, its contents are undefined.Within each range described by  pMemoryRanges, each set of nonCoherentAtomSize bytes in that range is invalidated if any byte in that set has been written by the device since it was first host mapped, or the last time it was invalidated.NoteGMapping non-coherent memory does not implicitly invalidate that memory. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Alsoz, "vulkanPvkGetDeviceMemoryCommitment - Query the current commitment for a VkDeviceMemory Parametersdevice, is the logical device that owns the memory.memory$ is the memory object being queried.pCommittedMemoryInBytes is a pointer to a U value in which the number of bytes currently committed is returned, on success. 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 Alsoz, {, """"""""""""""""""""""""""""""""""+None'"#%&'-./189;=>?FHIMSUVX_dghklmqTBvulkanVVkImageViewCreateInfo - 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 *^ at image creation time. If the image was has a depth-stencil format and was created with a [W structure included in the pNext chain of *(, the usage is calculated based on the subresource.aspectMask provided:If  aspectMask includes only k[, the implicit usage is equal to [W:: stencilUsage.If  aspectMask includes only kZ, the implicit usage is equal to *::usage. If both aspects are included in  aspectMask, the implicit usage+ is equal to the intersection of *::usage and [W:: stencilUsage. The implicit usage can be overriden by adding a  structure to the pNext chain.If image was created with the  flag, and if the format of the image is not  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar, format can. be different from the image s format, but if image was created without the # flag and they are not equal they must be  compatible1. Image format compatibility is defined in the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classesFormat Compatibility Classes section. Views of compatible formats will have the same mapping between texel coordinates and memory locations irrespective of the format<, with only the interpretation of the bit pattern changing.Note0Values intended to be used with one view format may not be exactly preserved when written or read through a different format. For example, an integer value that happens to have the bit pattern of a floating point denorm or NaN may be flushed or canonicalized when written or read through a view with a floating point format. Similarly, a value written through a signed normalized format that has a bit pattern exactly equal to -2b may( be changed to -2b + 1 as described in  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-fixedfpconv8Conversion from Normalized Fixed-Point to Floating-Point.If image was created with the  flag, format must be  compatible1 with the image s format as described above, or must- be an uncompressed format in which case it must be size-compatible* with the image s format, as defined for  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-images-format-size-compatibilitycopying data between images In this case the resulting image view s texel dimensions equal the dimensions of the selected mip level divided by the compressed texel block size and rounded up.?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 >% to that used to create the sampler must be passed to " in a  included in the pNext chain of . Conversely, if a > object is passed to ", an identically defined > 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 k, format must be identical to the image format2, and the sampler to be used with the image view must enable  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversion.If image was created with the  and the image has a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format , and if subresourceRange.aspectMask is k, k, or k, 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. imageType> width = ci. extent.width? height = ci. extent.height= depth = ci. extent.depth?  arrayLayers = ci. arrayLayers: samples = ci.samplesB flags = ci.flagsV where ci is the * used to create image.  baseArrayLayer,  layerCount, and  levelCount are members of the subresourceRange member. A __1D, 0, 0__   imageType =  widthS "e 1 heightR = 1 depthS = 1  arrayLayersM "e 1 samplesO = 1  viewType@ = (c baseArrayLayer: "e 0  layerCount = 1 A __1D, 1, 0__   imageType =  widthS "e 1 heightR = 1 depthS = 1  arrayLayersM "e 1 samplesO = 1  viewType@ = ( baseArrayLayer: "e 0  layerCount "e 1 A __2D, 0, 0__   imageType =  widthS "e 1 heightR "e 1 depthS = 1  arrayLayersM "e 1 samplesO = 1  viewType@ = ( baseArrayLayer: "e 0  layerCount = 1 A __2D, 1, 0__   imageType =  widthS "e 1 heightR "e 1 depthS = 1  arrayLayersM "e 1 samplesO = 1  viewType@ = ( baseArrayLayer: "e 0  layerCount "e 1 A __2D, 0, 1__   imageType =  widthS "e 1 heightR "e 1 depthS = 1  arrayLayersM "e 1 samplesO > 1  viewType@ = ( baseArrayLayer: "e 0  layerCount = 1 A __2D, 1, 1__   imageType =  widthS "e 1 heightR "e 1 depthS = 1  arrayLayersM "e 1 samplesO > 1  viewType@ = ( baseArrayLayer: "e 0  layerCount "e 1 W __CUBE, 0, 0__   imageType =  widthS "e 1 height = widthH depthS = 1  arrayLayersM "e 6 samplesQ = 1 flagsS includes   viewType@ = ( baseArrayLayer: "e 0  layerCountd = 6 b __CUBE, 1, 0__   imageType =  widthS "e 1 heightR = width depthS = 1 NW "e 1  arrayLayers "e 6 NC samplesQ = 1 flagsS includes   viewType@ = ( baseArrayLayer: "e 0  layerCount = 6 N, N "e 1 A __3D, 0, 0__   imageType =  widthS "e 1 heightR "e 1 depthS "e 1  arrayLayersM = 1 samplesO = 1  viewType@ = ( baseArrayLayer: = 0  layerCount = 1  __3D, 0, 0__   imageType =  widthS "e 1 heightR "e 1 depthS "e 1  arrayLayersM = 1 samplesQ = 1 flagsS includes  flagsS does not include  ,   , and    viewType@ = (  levelCount> = 1 baseArrayLayer: "e 0  layerCountB = 1  __3D, 0, 0__   imageType =  widthS "e 1 heightR "e 1 depthS "e 1  arrayLayersM = 1 samplesQ = 1 flagsS includes  flagsS does not include  ,   , and    viewType@ = (  levelCount> = 1 baseArrayLayer: "e 0  layerCountB "e 1 9Image and image view parameter compatibility requirements Valid UsageIf image was not created with  then viewType must not be ( or (' If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-imageCubeArrayimage cubemap arrays feature is not enabled, viewType must not be (If image was created with  but without  set then viewType must not be ( or (image must have been created with a usage, value containing at least one of , , , , , , or  The  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features" of the resultant image view must contain at least one bitIf usage contains , 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 nIf 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 nIf 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 noIf 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 npIf 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 no or npsubresourceRange.baseMipLevel must be less than the  mipLevels specified in * when image was createdIf subresourceRange.levelCount is not , subresourceRange.baseMipLevel + subresourceRange.levelCount must be less than or equal to the  mipLevels specified in * when image was createdIf image was created with usage containing , subresourceRange.levelCount must be 1If image% is not a 3D image created with  set, or viewType is not ( or (, subresourceRange.baseArrayLayer must be less than the  arrayLayers specified in * when image was createdIf subresourceRange.layerCount is not , image% is not a 3D image created with  set, or viewType is not ( or (, subresourceRange.layerCount must be non-zero and subresourceRange.baseArrayLayer + subresourceRange.layerCount must be less than or equal to the  arrayLayers specified in * when image was createdIf image! is a 3D image created with  set, and viewType is ( or (, subresourceRange.baseArrayLayer must+ be less than the depth computed from  baseMipLevel and  extent.depth specified in * when image< was created, according to the formula defined in mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-miplevel-sizingImage Miplevel SizingIf subresourceRange.layerCount is not , image! is a 3D image created with  set, and viewType is ( or (, subresourceRange.layerCount must be non-zero and subresourceRange.baseArrayLayer + subresourceRange.layerCount must7 be less than or equal to the depth computed from  baseMipLevel and  extent.depth specified in * when image< was created, according to the formula defined in mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-miplevel-sizingImage Miplevel SizingIf image was created with the ! flag, but without the  flag, and if the format of the image is not a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format, format must be compatible with the format used to create image, as defined in khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classesFormat Compatibility ClassesIf image was created with the  flag, format must be compatible with, or mustB be an uncompressed format that is size-compatible with, the format used to create imageIf image was created with the  flag, the  levelCount and  layerCount members of subresourceRange must both be 1 If a aP$ structure was included in the pNext chain of the *# structure used when creating image and the viewFormatCount field of aP is not zero then format must be one of the formats in aP:: pViewFormatsIf image was created with the  flag, if the format of the image is a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format, and if subresourceRange.aspectMask is one of k, k, or k , then format must be compatible with the G for the plane of the image format indicated by subresourceRange.aspectMask, as defined in ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planesIf image was not created with the  flag, or if the format of the image is a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format and if subresourceRange.aspectMask is k, format must be identical to the format used to create imageIf the pNext chain includes a  structure with a  conversion value other than ., all members of  components must have the value -If image is non-sparse then it must< be bound completely and contiguously to a single )v objectsubresourceRange and viewType must= be compatible with the image, as described in the qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-compatibilitycompatibility tableIf image has an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formatsexternal format, format must be EIf image has an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formatsexternal format , the pNext chain must include a  structure with a  conversion6 object created with the same external format as imageIf image has an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formatsexternal format, all members of  components must be -If image was created with usage containing , viewType must be ( or (If image was created with usage containing , format must be If  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentdensitymapdynamicdynamic fragment density map feature is not enabled, flags must not contain iIf  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentdensitymapdynamicdynamic fragment density map! feature is not enabled and image was created with usage containing , flags must not contain any of Q,  ,  , or  If the pNext chain includes a  structure, and image was not created with a [W structure included in the pNext chain of *, its usage member must/ not include any bits that were not set in the usage member of the * structure used to create imageIf the pNext chain includes a  structure, image was created with a [W structure included in the pNext chain of * , and subResourceRange.aspectMask includes k[ , the usage member of the  instance must4 not include any bits that were not set in the usage member of the [W structure used to create imageIf the pNext chain includes a  structure, image was created with a [W structure included in the pNext chain of * , and subResourceRange.aspectMask includes bits other than k[ , the usage member of the  structure must4 not include any bits that were not set in the usage member of the * structure used to create imageIf viewType is ( and subresourceRange.layerCount is not , subresourceRange.layerCount must be 6If viewType is ( and subresourceRange.layerCount is not , subresourceRange.layerCount must be a multiple of 6If viewType is ( and subresourceRange.layerCount is &, the remaining number of layers must be 6If viewType is ( and subresourceRange.layerCount is &, the remaining number of layers must be a multiple of 6Valid Usage (Implicit)sType must be 1Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , , or The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of i valuesimage must be a valid u handleviewType must be a valid   valueformat must be a valid G value components must be a valid  structuresubresourceRange must be a valid  structureSee Also, G, u, , ,  , , "vulkanCVkComponentMapping - Structure specifying a color component mappingValid Usage (Implicit)See Also,  , , S"vulkanpNext is NULL1 or a pointer to an extension-specific structure."vulkanflags is a bitmask of i5 describing additional parameters of the image view."vulkanimage is a u$ on which the view will be created."vulkanviewType is a  . value specifying the type of the image view."vulkanformat is a GM describing the format and type used to interpret texel blocks in the image."vulkan components is a  specifies a remapping of color components (or of depth or stencil components after they have been converted into color components)."vulkansubresourceRange is a S selecting the set of mipmap levels and array layers to be accessible to the view."vulkanr must be a valid   value"vulkang must be a valid   value"vulkanb must be a valid   value"vulkana must be a valid   value"vulkan?vkCreateImageView - Create an image view from an existing image Parametersdevice3 is the logical device that creates the image view. pCreateInfo is a pointer to a J structure containing parameters to be used to create the image view. pAllocator: 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.pView is a pointer to a tB handle in which the resulting image view object is returned.Valid Usage (Implicit)device must be a valid z handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepView must be a valid pointer to a t handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, z, t, "vulkan=A convenience wrapper to make a compatible pair of calls to " and "To ensure that " is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument."vulkan1vkDestroyImageView - Destroy an image view object Parametersdevice4 is the logical device that destroys the image view. imageView is the image view to destroy. pAllocator: 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. Valid Usage%All submitted commands that refer to  imageView must have completed executionIf  were provided when  imageView1 was created, a compatible set of callbacks must be provided here If no  were provided when  imageView was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid z handleIf  imageView is not .,  imageView must be a valid t handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf  imageView is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to  imageView must be externally synchronizedSee Also, z, t""""""""""""""""""""""""""""""""None'"#%&'-./189;=>?FHIMSUVX_dghklmqTvulkanvVkMemoryGetAndroidHardwareBufferInfoANDROID - Structure describing an Android hardware buffer memory export operation Valid Usage<g must have been included in J+:: handleTypes when memory was createdIf the pNext chain of the -n used to allocate memory included a Cp with non-NULL image member, then that image must already be bound to memoryValid Usage (Implicit)sType must be spNext must be NULLmemory must be a valid { handleSee Also{, , "vulkanYVkImportAndroidHardwareBufferInfoANDROID - Import memory from an Android hardware buffer DescriptionIf the -' command succeeds, the implementation must@ acquire a reference to the imported hardware buffer, which it must[ release when the device memory object is freed. If the command fails, the implementation must not retain a reference. Valid UsageIf buffer is not NULL, Android hardware buffers must3 be supported for import, as reported by K4 or K1If buffer is not NULL, it must5 be a valid Android hardware buffer object with AHardwareBuffer_Desc::format and AHardwareBuffer_Desc::usage2 compatible with Vulkan as described in uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-bufferAndroid Hardware BuffersValid Usage (Implicit)sType must be rbuffer must be a valid pointer to an 0 valueSee AlsovulkanZVkExternalFormatANDROID - Structure containing an Android hardware buffer external format DescriptionIf externalFormat# is zero, the effect is as if the , structure was not present. Otherwise, the image) will have the specified external format.Valid Usage (Implicit)See Alsovulkan\VkAndroidHardwareBufferUsageANDROID - Struct containing Android hardware buffer usage flags DescriptionThe androidHardwareBufferUsage field must= include Android hardware buffer usage flags listed in the  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-usage!AHardwareBuffer Usage Equivalence_ table when the corresponding Vulkan image usage or image creation flags are included in the usage or flags fields of O. 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 OQ are required.Valid Usage (Implicit)See AlsovulkanbVkAndroidHardwareBufferPropertiesANDROID - Properties of External Memory Android Hardware BuffersValid Usage (Implicit)sType must be ppNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueSee Also, , "vulkanVkAndroidHardwareBufferFormatPropertiesANDROID - Structure describing the image format properties of an Android hardware buffer DescriptionEIf the Android hardware buffer has one of the formats listed in the  }https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-formatsFormat Equivalence table, then format mustD have the equivalent Vulkan format listed in the table. Otherwise, format may be E*, indicating the Android hardware buffer can& only be used with an external format.The formatFeatures member must include n and at least one of n or n, and should include n and n.NoteThe formatFeatures> member only indicates the features available when using an  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formatsexternal-format imagel created from the Android hardware buffer. Images from Android hardware buffers with a format other than E8 are subject to the format capabilities obtained from O, and O& 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 n, n, n, n, n^, and n. in formatFeatures. Other format features mayy differ between Android hardware buffers that have the same external format. This allows applications to use the same >} object (and samplers and pipelines created from them) for any Android hardware buffers that have the same external format.If format is not E, then the value of  samplerYcbcrConversionComponents must be valid when used as the  components member of S with that format. If format is E, all members of  samplerYcbcrConversionComponents must be -.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[, , G, , :, 0, "vulkanexternalFormat must be 0 or a value returned in the externalFormat member of  by an earlier call to ""vulkanformatR is the Vulkan format corresponding to the Android hardware buffer s format, or E. 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 S."vulkansuggestedYcbcrModel+ is a suggested color model to use in the S."vulkansuggestedYcbcrRange1 is a suggested numerical value range to use in S."vulkansuggestedXChromaOffset+ is a suggested X chroma offset to use in S."vulkansuggestedYChromaOffset+ is a suggested Y chroma offset to use in S."vulkanmemoryO is the memory object from which the Android hardware buffer will be exported."vulkanpNext is NULL1 or a pointer to an extension-specific structure."vulkanallocationSize# is the size of the external memory"vulkanmemoryTypeBitsh is a bitmask containing one bit set for every memory type which the specified Android hardware buffer can be imported as."vulkanandroidHardwareBufferUsage2 returns the Android hardware buffer usage flags."vulkanbuffer* is the Android hardware buffer to import."vulkanivkGetAndroidHardwareBufferPropertiesANDROID - Get Properties of External Memory Android Hardware Buffers Parametersdevice. is the logical device that will be importing buffer.buffer7 is the Android hardware buffer which will be imported. pProperties is a pointer to a + structure in which the properties of buffer are returned. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure7See Also, z"vulkan]vkGetMemoryAndroidHardwareBufferANDROID - Get an Android hardware buffer for a memory object ParametersdeviceJ is the logical device that created the device memory being exported.pInfo is a pointer to a > structure containing parameters of the export operation.pBuffero will return an Android hardware buffer representing the underlying resources of the device memory object. Description Each call to " 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, " must} return the same Android hardware buffer object. If the device memory was created by importing an Android hardware buffer, " must2 return that same Android hardware buffer object. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureBKSee Alsoz, """"""""""""""""""""""0""""""""""""""""""""""""""""""""""0SNone'"#%&'-./189;=>?FHIMSUVX_dghklmqUPvulkanaVkSamplerYcbcrConversionInfo - Structure specifying Y 2CBCR conversion to a sampler or image viewValid Usage (Implicit)See Also, vulkanVkSamplerYcbcrConversionImageFormatProperties - Structure specifying combined image sampler descriptor count for multi-planar imagesValid Usage (Implicit)See Also vulkaniVkSamplerYcbcrConversionCreateInfo - 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  L. Such conversions must5 only be used to sample image views with a matching  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formatsexternal format=. When creating an external format conversion, the value of  components is ignored. Valid Usage3If an external format conversion is being created, format must be  L, otherwise it must not be  L  The  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-sampler-ycbcr-conversion-format-features$sampler Y 2CBCR conversion s features must support  or  If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-sampler-ycbcr-conversion-format-features$sampler Y 2CBCR conversion s features do not support ,  xChromaOffset and  yChromaOffset must not be ^ If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-sampler-ycbcr-conversion-format-features$sampler Y 2CBCR conversion s features do not support ,  xChromaOffset and  yChromaOffset must not be ]If the format has a _422 or _420 suffix, then  components.g must be -If the format has a _422 or _420 suffix, then  components.a must be -, -, or -If the format has a _422 or _420 suffix, then  components.r must be - or -If the format has a _422 or _420 suffix, then  components.b must be - or -If the format has a _422 or _420 suffix, and if either  components.r or  components.b is -, both values must be -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 - or - , and mustV not correspond to a channel which contains zero or one as a consequence of ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-conversion-to-rgbaconversion to RGBAIf  ycbcrRange is 2< then the R, G and B channels obtained by applying the  component swizzle to format must6 each have a bit-depth greater than or equal to 8 If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-sampler-ycbcr-conversion-format-features$sampler Y 2CBCR conversion s features do not support  forceExplicitReconstruction must be  If the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-sampler-ycbcr-conversion-format-features$sampler Y 2CBCR conversion s features do not support ,  chromaFilter must not be Valid Usage (Implicit)sType must be  pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueformat must be a valid G value ycbcrModel must be a valid : value ycbcrRange must be a valid 0 value components must be a valid  structure xChromaOffset must be a valid [ value yChromaOffset must be a valid [ value chromaFilter must be a valid F valueIf  chromaFilter is \, chroma samples are reconstructed to luma channel resolution using nearest-neighbour sampling. Otherwise, chroma samples are reconstructed using interpolation. More details can be found in  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion,the description of sampler Y 2CBCR conversion in the  Vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#texturesImage Operations chapter.See Also, [, , F, G, :, 0, , #,  vulkanVkPhysicalDeviceSamplerYcbcrConversionFeatures - Structure describing Y CbCr conversion features that can be supported by an implementationMembersThe members of the  + structure describe the following feature:Valid Usage (Implicit)See Also,  vulkan^VkImagePlaneMemoryRequirementsInfo - Structure specifying image plane for memory requirements Valid UsageIf the image s tiling is  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 )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 O::drmFormatModifier)Valid Usage (Implicit)sType must be  planeAspect must be a valid  valueSee Also,  vulkanWVkBindImagePlaneMemoryInfo - Structure specifying how to bind an image plane to memory Valid UsageIf the image s tiling is  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 )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 O::drmFormatModifier)Valid Usage (Implicit)sType must be  planeAspect must be a valid  valueSee Also, "vulkan#combinedImageSamplerDescriptorCounth is the number of combined image sampler descriptors that the implementation uses to access the format."vulkansamplerYcbcrConversion0 specifies whether the implementation supports  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversion. If samplerYcbcrConversion is ], sampler Y 2CBCR conversion is not supported, and samplers using sampler Y 2CBCR conversion must not be used."vulkan planeAspect9 is the aspect corresponding to the image plane to query."vulkan planeAspect3 is the aspect of the disjoint image plane to bind."vulkanpNext is NULL1 or a pointer to an extension-specific 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 -< enums prior to range expansion and color model conversion.#vulkan xChromaOffset describes the  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstructionsample locationC associated with downsampled chroma channels in the x dimension.  xChromaOffseta has no effect for formats in which chroma channels are the same resolution as the luma channel.#vulkan yChromaOffset describes the  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstructionsample locationC associated with downsampled chroma channels in the y dimension.  yChromaOffsetX has no effect for formats in which the chroma channels are not downsampled vertically.#vulkan chromaFilter) is the filter for chroma reconstruction.#vulkanforceExplicitReconstruction canI be used to ensure that reconstruction is done explicitly, if supported.#vulkan conversion must be a valid  handle#vulkan?vkCreateSamplerYcbcrConversion - Create a new Y 2CBCR conversion ParametersdeviceG is the logical device that creates the sampler Y 2CBCR conversion. pCreateInfo is a pointer to a  C structure specifying the requested sampler Y 2CBCR conversion. pAllocator: 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.pYcbcrConversion is a pointer to a J handle in which the resulting sampler Y 2CBCR conversion is returned. Description`The interpretation of the configured sampler Y 2CBCR conversion is described in more detail in  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion,the description of sampler Y 2CBCR conversion in the  Vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#texturesImage Operations chapter. Valid Usage The  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sampler-YCbCr-conversion!sampler Y 2CBCR conversion feature must be enabledValid Usage (Implicit)device must be a valid z handle pCreateInfo must$ be a valid pointer to a valid   structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepYcbcrConversion must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, z, ,  # vulkan=A convenience wrapper to make a compatible pair of calls to # and # To ensure that #  is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument.# vulkanEvkDestroySamplerYcbcrConversion - Destroy a created Y 2CBCR conversion Parametersdevice; is the logical device that destroys the Y 2CBCR conversion.ycbcrConversion is the conversion to destroy. pAllocator: 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.Valid Usage (Implicit)device must be a valid z handleIf ycbcrConversion is not ., ycbcrConversion must be a valid  handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf ycbcrConversion is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to ycbcrConversion must be externally synchronizedSee Also, z, 7G [ L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                            ~ } | { z 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 ` _ ^ ] \HI##"" """#"##### "" "" ""0132:;@?>=<[\^]43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ## # :## # ## """#"##### "" "" """"G [ L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                            ~ } | { z 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 ` _ ^ ] \ L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                            ~ } | { z 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 ` _ ^ ] \43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      IH:;@?>=<@?>=<013232[\^]^]None'"#%&'-./189;=>?FHIMSUVX_dghklmqUs                           #)#*#+#,#-#.#/#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#t#s#r#q#p#o#n#m#l#k#j#i#h#g#f#e#d#c#b#a#`#_#^#]#\#[#Z#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#u#v#4#3#2#1#0#/#.#-#,#+#*#6#)#5                                                      *None'"#%&'-./189;=>?FHIMSUVX_dghklmqWZvulkan=VkSubresourceLayout - Structure specifying subresource layout DescriptionIf the image is  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resourcelinear, then rowPitch,  arrayPitch and  depthPitch\ describe the layout of the image subresource in linear memory. For uncompressed formats, rowPitchs is the number of bytes between texels with the same x coordinate in adjacent rows (y coordinates differ by one).  arrayPitch is the number of bytes between texels with the same x and y coordinate in adjacent array layers of the image (array layer values differ by one).  depthPitch is the number of bytes between texels with the same x and y coordinate in adjacent slices of a 3D image (z coordinates differ by one). Expressed as an addressing formula, the starting byte of a texel in the image subresource has address: // (x,y,z,layer) are in texel coordinates address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*elementSize + offsetFor compressed formats, the rowPitchK is the number of bytes between compressed texel blocks in adjacent rows.  arrayPitchT is the number of bytes between compressed texel blocks in adjacent array layers.  depthPitchZ is the number of bytes between compressed texel blocks in adjacent slices of a 3D image. // (x,y,z,layer) are in compressed texel block coordinates address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*compressedTexelBlockByteSize + offset; The value of  arrayPitch; is undefined for images that were not created as arrays.  depthPitch is defined only for 3D images.If the image has a  single-plane! color format and its tiling is  , then the  aspectMask member of  must be k.;If the image has a depth/stencil format and its tiling is  , then  aspectMask must be either kZ or k[. On implementations that store depth and stencil aspects separately, querying each of these image subresource layouts will return a different offset and size representing the region of memory used for that aspect. On implementations that store depth and stencil aspects interleaved, the same offset and size? are returned and represent the interleaved memory allocation.If the image has a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format and its tiling is  , then the  aspectMask member of  must be k, k", or (for 3-plane formats only) kM. 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 Also, , #vulkan>VkImageSubresource - Structure specifying an image subresourceValid Usage (Implicit)See Also, :, #vulkanXVkImageCreateInfo - Structure specifying the parameters of a newly created image object DescriptionImages created with tiling equal to ^ have further restrictions on their limits and capabilities compared to images created with tiling equal to #. Creation of images with tiling  mayG not be supported unless other parameters meet all of the constraints: imageType is format is not a depth/stencil format mipLevels is 1 arrayLayers is 1samples is !nusage 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  mipLevels is 1 arrayLayers is 1samples is !nImplementations mayG support additional limits and capabilities beyond those listed above.To determine the set of valid usage bits for a given format, call  .0If the size of the resultant image would exceed maxResourceSize, then # must fail and return J. This failure mayW occur even when all image creation parameters satisfy their valid usage requirements.NoteFor images created without  a usageK bit is valid if it is supported for the format the image is created with.For images created with  a usageD bit is valid if it is supported for at least one of the formats a )| created from the image can have (see  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views Image Views for more detail).Valid values for some image creation parameters are limited by a numerical upper bound or by inclusion in a bitset. For example, :: arrayLayers is limited by imageCreateMaxArrayLayers, defined below; and ::samples is limited by imageCreateSampleCounts, also defined below.Several limiting values are defined below, as well as assisting values from which the limiting values are derived. The limiting values are referenced by the relevant valid usage statements of .Let (uint64_t imageCreateDrmFormatModifiers[] be the set of  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-drm-format-modifierLinux DRM format modifiers that the resultant image may have.If tiling is not  , then imageCreateDrmFormatModifiers is empty.If ::pNext contains  , then imageCreateDrmFormatModifiers( contains exactly one modifier, ::drmFormatModifier.If ::pNext contains  , then imageCreateDrmFormatModifiers contains the entire array ::pDrmFormatModifiers.Let VkBool32 imageCreateMaybeLinear2 indicate if the resultant image may be  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resourcelinear.If tiling is  , then imageCreateMaybeLinear is true.If tiling is  , 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  , then imageCreateFormatFeatures is the value of  ::linearTilingFeatures found by calling   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   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 O with  ::format equal to ::format and with ' chained into OQ:; by collecting all members of the returned array '::pDrmFormatModifierProperties whose drmFormatModifier belongs to imageCreateDrmFormatModifiersW; and by taking the bitwise intersection, over the collected array members, of drmFormatModifierTilingFeatures. (The resultant imageCreateFormatFeatures may be empty). Let ?VkImageFormatProperties2 imageCreateImageFormatPropertiesList[] be defined as follows.If ::pNext contains no  structure with non-zero externalFormat , then $imageCreateImageFormatPropertiesList7 is the list of structures obtained by calling O*, possibly multiple times, as follows:The parameters O::format,  imageType, tiling, usage, and flags must be equal to those in .If ::pNext contains a  structure whose  handleTypes is not 0 , then O::pNext must contain a K structure whose  handleType is not 0 ; and O must' be called for each handle type in :: handleTypes, successively setting K:: handleType on each call.If ::pNext contains no . structure, or contains a structure whose  handleTypes is 0 , then O::pNext must either contain no K- structure, or contain a structure whose  handleType is 0.If tiling is , then O::pNext must contain a  structure where  sharingMode is equal to :: sharingMode ; and, if  sharingMode is  , then queueFamilyIndexCount and pQueueFamilyIndices must be equal to those in ; and, if flags contains , then the . structure included in the pNext chain of O must* be equivalent to the one included in the pNext chain of  ; and O must$ be called for each modifier in imageCreateDrmFormatModifiers, successively setting ::drmFormatModifier on each call.If tiling is not , then O::pNext must contain no  structure.If any call to O 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 !n.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 Usage3Each of the following values (as described in  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits) must not be undefined imageCreateMaxMipLevels, imageCreateMaxArrayLayers, imageCreateMaxExtent , and imageCreateSampleCountsXIf  sharingMode is , pQueueFamilyIndices must( be a valid pointer to an array of queueFamilyIndexCount uint32_t valuesIf  sharingMode is , queueFamilyIndexCount must be greater than 1If  sharingMode is , each element of pQueueFamilyIndices must be unique and must be less than pQueueFamilyPropertyCount returned by either  e or Of for the physicalDevice that was used to create deviceIf the pNext chain includes a  structure, and its externalFormat member is non-zero the format must be EIf the pNext chain does not include a ! structure, or does and its externalFormat member is 0 , the format must not be E extent.width must be greater than 0 extent.height must be greater than 0 extent.depth must be greater than 0 mipLevels must be greater than 0 arrayLayers must be greater than 0If flags contains ,  imageType must be If flags contains ,  imageType must be If flags contains ,  imageType must be  extent.width must be less than or equal to imageCreateMaxExtent.width (as defined in  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits) extent.height must be less than or equal to imageCreateMaxExtent.height (as defined in  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits) extent.depth must be less than or equal to imageCreateMaxExtent.depth (as defined in  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits)If  imageType is  and flags contains ,  extent.width and  extent.height must be equal and  arrayLayers must be greater than or equal to 6If  imageType is  , both  extent.height and  extent.depth must be 1If  imageType is ,  extent.depth must be 1 mipLevels mustZ be less than or equal to the number of levels in the complete mipmap chain based on  extent.width,  extent.height , and  extent.depth mipLevels must be less than or equal to imageCreateMaxMipLevels (as defined in  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits) arrayLayers must be less than or equal to imageCreateMaxArrayLayers (as defined in  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits)If  imageType is ,  arrayLayers must be 1If samples is not !n , then  imageType must be , flags must not contain ,  mipLevels must be equal to 1, and imageCreateMaybeLinear (as defined in  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits) must be false,If samples is not !n, usage must not contain If usage includes !, then bits other than , , and  must not be setIf usage includes , , , or ,  extent.width must be less than or equal to  _::maxFramebufferWidthIf usage includes , , , or ,  extent.height must be less than or equal to  _::maxFramebufferHeightIf usage includes ,  extent.width must be less than or equal to M\lceil{\frac{maxFramebufferWidth}{minFragmentDensityTexelSize_{width}}}\rceilIf usage includes ,  extent.height must be less than or equal to O\lceil{\frac{maxFramebufferHeight}{minFragmentDensityTexelSize_{height}}}\rceilIf usage includes , usage must# also contain at least one of , , or 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) 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 !n If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseBindingsparse bindings feature is not enabled, flags must not contain   If the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyAliasedsparse aliased residency feature is not enabled, flags must not contain  If  imageType is , flags must not contain   If the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyImage2Dsparse residency for 2D images" feature is not enabled, and  imageType is , flags must not contain   If the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyImage3Dsparse residency for 3D images" feature is not enabled, and  imageType is , flags must not contain   If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidency2Samples*sparse residency for images with 2 samples feature is not enabled,  imageType is  , and samples is !, flags must not contain   If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidency4Samples*sparse residency for images with 4 samples feature is not enabled,  imageType is  , and samples is !, flags must not contain   If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidency8Samples*sparse residency for images with 8 samples feature is not enabled,  imageType is  , and samples is !, flags must not contain   If the  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidency16Samples+sparse residency for images with 16 samples feature is not enabled,  imageType is  , and samples is !, flags must not contain  If flags contains   or   , it must also contain  If any of the bits  ,  , or   are set,  must not also be set0If the protected memory feature is not enabled, flags must not contain QIf any of the bits  ,  , or   are set, Q must not also be setIf the pNext chain includes a  structure, it must not contain a  structureIf the pNext chain includes a  structure, its  handleTypes member must. only contain bits that are also in K4::.externalMemoryProperties.compatibleHandleTypes, as returned by O with format,  imageType, tiling, usage, and flags8 equal to those in this structure, and with a K structure included in the pNext chain, with a  handleType= equal to any one of the handle types specified in :: handleTypesIf the pNext chain includes a  structure, its  handleTypes member must. only contain bits that are also in ::.externalMemoryProperties.compatibleHandleTypes, as returned by  with format,  imageType, tiling, usage, and flags1 equal to those in this structure, and with externalHandleType= equal to any one of the handle types specified in :: handleTypes,If the logical device was created with G::physicalDeviceCount equal to 1, flags must not contain If flags contains  , then  mipLevels must be one,  arrayLayers must be one,  imageType must be  . and imageCreateMaybeLinear (as defined in  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits) must be falseIf flags contains  , then format must be a  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#appendix-compressedtex-bcblock-compressed image format, an  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#appendix-compressedtex-etc2ETC compressed image format, or an ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#appendix-compressedtex-astcASTC compressed image formatIf flags contains  , then flags must also contain  initialLayout must be b or cIf the pNext chain includes a  or  structure whose  handleTypes member is not 0,  initialLayout must be b If the image format is one of those listed in  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion , then  mipLevels must be 1 If the image format is one of those listed in  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion, samples must be !n If the image format is one of those listed in  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion,  imageType must be  If the image format is one of those listed in  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion, and the ycbcrImageArrays feature is not enabled,  arrayLayers must be 1If format is a  multi-planar format, and if imageCreateFormatFeatures (as defined in  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limitsImage Creation Limits) does not contain n , then flags must not contain If format is not a  multi-planar format, and flags does not include , flags must not contain If tiling is , then the pNext chain must include exactly one of  or  structuresIf the pNext chain includes a  or  structure, then tiling must be If tiling is  and flags contains , then the pNext chain must include a . structure with non-zero viewFormatCountIf flags contains   format must# be a depth or depth/stencil formatIf the pNext chain includes a  structure whose  handleTypes member includes <g,  imageType must be If the pNext chain includes a  structure whose  handleTypes member includes <g,  mipLevels must either be 1M or equal to the number of levels in the complete mipmap chain based on  extent.width,  extent.height , and  extent.depthIf the pNext chain includes a  structure whose externalFormat member is not 0, flags must not include If the pNext chain includes a  structure whose externalFormat member is not 0, usage must) not include any usages except If the pNext chain includes a  structure whose externalFormat member is not 0, tiling must be If format is a depth-stencil format, usage includes , and the pNext chain includes a  structure, then its :: stencilUsage member must also include 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 If format is a depth-stencil format, usage includes , and the pNext chain includes a  structure, then its :: stencilUsage member must also include 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 If G( 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  _::maxFramebufferWidthIf 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 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 !nIf flags contains ,  imageType must be  or If flags contains  , it must not contain  and the format must not be a depth/stencil formatIf flags contains  and  imageType is ,  extent.width and  extent.height must be greater than 1If flags contains  and  imageType is ,  extent.width,  extent.height, and  extent.depth must be greater than 1If usage includes ,  imageType must be If usage includes , samples must be !nIf usage includes , tiling must be If flags contains u, tiling must be If flags contains u,  imageType must be If flags contains u, flags must not contain If flags contains u,  mipLevels must be 1Valid Usage (Implicit)sType must be 2 Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , , , , , , ., , or The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of 2 values imageType must be a valid L valueformat must be a valid G valuesamples must be a valid [ valuetiling must be a valid K valueusage must be a valid combination of  valuesusage must not be 0 sharingMode must be a valid  value initialLayout must be a valid J value</section> = See Also, G, H, J, K, L, M, [, , , ##xvulkanoffseta is the byte offset from the start of the image or the plane where the image subresource begins.#yvulkansize0 is the size in bytes of the image subresource. size6 includes any extra memory that is required based on rowPitch.#zvulkanrowPitchG describes the number of bytes between each row of texels in an image.#{vulkan arrayPitchE describes the number of bytes between each array layer of an image.#|vulkan depthPitch? describes the number of bytes between each slice of 3D image.#~vulkanpNext is NULL1 or a pointer to an extension-specific structure.#vulkanflags is a bitmask of 20 describing additional parameters of the image.#vulkan imageType is a L 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.#vulkanformat is a GZ describing the format and type of the texel blocks that will be contained in the image.#vulkanextent is a M describing the number of data elements in each dimension of the base level.#vulkan mipLevelsX describes the number of levels of detail available for minified sampling of the image.#vulkan arrayLayers& is the number of layers in the image.#vulkansamples is a [ specifying the number of  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisamplingsamples per texel.#vulkantiling is a KH value specifying the tiling arrangement of the texel blocks in memory.#vulkanusage is a bitmask of - describing the intended usage of the image.#vulkan sharingMode is a f value specifying the sharing mode of the image when it will be accessed by multiple queue families.#vulkanpQueueFamilyIndicesF is a list of queue families that will access this image (ignored if  sharingMode is not ).#vulkan initialLayout is a J value specifying the initial J/ of all image subresources of the image. See  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-layouts Image Layouts.#vulkan aspectMask must not be 0#vulkanmipLevel selects the mipmap level.#vulkan arrayLayer selects the array layer.#vulkan)vkCreateImage - Create a new image object Parametersdevice. is the logical device that creates the image. pCreateInfo is a pointer to a E structure containing parameters to be used to create the image. pAllocator: 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.pImage is a pointer to a u= handle in which the resulting image object is returned. Valid UsageIf the flags member of  pCreateInfo includes  , creating this u must| not cause the total required sparse memory for all currently valid sparse resources on the device to exceed  _::sparseAddressSpaceSizeValid Usage (Implicit)device must be a valid z handle pCreateInfo must be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepImage must be a valid pointer to a u handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, z, u, #vulkan=A convenience wrapper to make a compatible pair of calls to # and #To ensure that # is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument.#vulkan(vkDestroyImage - Destroy an image object Parametersdevice/ is the logical device that destroys the image.image is the image to destroy. pAllocator: 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. Valid Usage%All submitted commands that refer to image , either directly or via a )|, must have completed executionIf  were provided when image1 was created, a compatible set of callbacks must be provided here If no  were provided when image was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid z handleIf image is not ., image must be a valid u handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf image is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to image must be externally synchronizedSee Also, z, u#vulkanNvkGetImageSubresourceLayout - Retrieve information about an image subresource Parametersdevice+ is the logical device that owns the image.image, is the image whose layout is being queried. pSubresource is a pointer to a E structure selecting a specific image for the image subresource.pLayout is a pointer to a 0 structure in which the layout is returned. DescriptionIf the image is  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resourcelinear*, then the returned layout is valid for  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-hostaccess host access.If the image s tiling is  and its format is a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format, then # describes one  format plane* of the image. If the image s tiling is , then # 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.# is invariant for the lifetime of a single image. However, the subresource layout of images in Android hardware buffer external memory is not known until the image has been bound to memory, so applications must not call #- for such an image before it has been bound. Valid Usageimage must have been created with tiling equal to  or The  aspectMask member of  pSubresource must only have a single bit setThe mipLevel member of  pSubresource must be less than the  mipLevels specified in  when image was createdThe  arrayLayer member of  pSubresource must be less than the  arrayLayers specified in  when image was createdIf the tiling of the image is  and its format is a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format with two planes, the  aspectMask member of  pSubresource must be k or kIf the tiling of the image is  and its format is a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format with three planes, the  aspectMask member of  pSubresource must be k, k or kIf image was created with the <g( external memory handle type, then image must be bound to memoryIf 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 O::drmFormatModifierValid Usage (Implicit)device must be a valid z handleimage must be a valid u handle pSubresource must$ be a valid pointer to a valid  structurepLayout must be a valid pointer to a  structureimage must6 have been created, allocated, or retrieved from deviceSee Alsoz, u, , #w#y#x#z#{#|#####}###~#######################}###~###########w#y#x#z#{#|None'"#%&'-./189;=>?FHIMSUVX_dghklmqXvulkanwVkPhysicalDeviceImageDrmFormatModifierInfoEXT - Structure specifying a DRM format modifier as image creation parameter DescriptionIf the drmFormatModifier4 is incompatible with the parameters specified in O and its pNext chain, then O returns A. The implementation must support the query of any drmFormatModifier1, including unknown and invalid modifier values. Valid UsageIf  sharingMode is  , then pQueueFamilyIndices must( be a valid pointer to an array of queueFamilyIndexCount uint32_t valuesIf  sharingMode is  , then queueFamilyIndexCount must be greater than 1If  sharingMode is , each element of pQueueFamilyIndices must be unique and must be less than the pQueueFamilyPropertyCount returned by Of for the physicalDevice that was used to create deviceValid Usage (Implicit)sType must be  sharingMode must be a valid  valueSee Also, vulkan[VkImageDrmFormatModifierPropertiesEXT - Properties of an image s Linux DRM format modifier DescriptionIf the image was created with , then the returned drmFormatModifier mustI belong to the list of modifiers provided at time of image creation in ::pDrmFormatModifiers . If the image was created with , then the returned drmFormatModifier must9 be the modifier provided at time of image creation in ::drmFormatModifier.Valid Usage (Implicit)See Also, #vulkanVkImageDrmFormatModifierListCreateInfoEXT - Specify that an image must be created with a DRM format modifier from the provided list Valid UsageEach modifier in pDrmFormatModifiers must+ be compatible with the parameters in * and its pNext' chain, as determined by querying O extended with Valid Usage (Implicit)sType must be pDrmFormatModifiers must( be a valid pointer to an array of drmFormatModifierCount uint64_t valuesdrmFormatModifierCount must be greater than 0See AlsovulkanVkImageDrmFormatModifierExplicitCreateInfoEXT - Specify that an image be created with the provided DRM format modifier and explicit memory layout DescriptionThe i th member of  pPlaneLayouts& describes the layout of the image s ith  memory plane (that is, &VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT). In each element of  pPlaneLayouts, the implementation must ignore sizeP. The implementation calculates the size of each plane, which the application can query with *.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 * 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 * returns 7. Valid UsagedrmFormatModifier must+ be compatible with the parameters in * and its pNext, chain, as determined by querying O extended with drmFormatModifierPlaneCount must be equal to the ::drmFormatModifierPlaneCount associated with *::format and drmFormatModifier, as found by querying For each element of  pPlaneLayouts, size must be 0For each element of  pPlaneLayouts,  arrayPitch must be 0 if *:: arrayLayers is 1For each element of  pPlaneLayouts,  depthPitch must be 0 if *:: extent.depth is 1Valid Usage (Implicit)sType must be If drmFormatModifierPlaneCount is not 0,  pPlaneLayouts must( be a valid pointer to an array of drmFormatModifierPlaneCount  structuresSee Also, vulkantVkDrmFormatModifierPropertiesListEXT - Structure specifying the list of DRM format modifiers supported for a format DescriptionIf pDrmFormatModifierProperties is NULL , then the function returns in drmFormatModifierCount6 the number of modifiers compatible with the queried format. Otherwise, the application must set drmFormatModifierCount to the length of the array pDrmFormatModifierProperties#; the function will write at most drmFormatModifierCount, elements to the array, and will return in drmFormatModifierCount the number of elements written.Among the elements in array pDrmFormatModifierProperties, each returned drmFormatModifier must be unique.Valid Usage (Implicit)See Also, vulkanxVkDrmFormatModifierPropertiesEXT - Structure specifying properties of a format when combined with a DRM format modifier Description The returned drmFormatModifierTilingFeatures must contain at least one bit.The implementation must not return DRM_FORMAT_MOD_INVALID in drmFormatModifier. An image s memory planecount (as returned by drmFormatModifierPlaneCount) is distinct from its format planecount (in the sense of  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar Y 2CBCR formats). In k, each VK_IMAGE_ASPECT_MEMORY_PLANE/i$_BIT_EXT represents a _memory plane and each VK_IMAGE_ASPECT_PLANEi_BIT a _format plane/.An image s set of  format planes) is an ordered partition of the image s contentb into separable groups of format channels. The ordered partition is encoded in the name of each . For example,  contains two  format planes; the first plane contains the green channel and the second plane contains the blue channel and red channel. If the format name does not contain PLANE:, 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 O=::linearTilingFeatures returned in the same pNext chain.If an image is  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resource non-linear%, then the partition of the image s memory into  memory planes! is implementation-specific and may/ be unrelated to the partition of the image s content into  format planes(. For example, consider an image whose format is , tiling is  , 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 plane/ 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 ).#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 n/ 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 Parametersdevice+ is the logical device that owns the image.image is the queried image. pPropertiesB will return properties of the image s /DRM format modifier/. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQSee Alsoz, u, ##############################################:None'"#%&'-./189;=>?FHIMSUVX_dghklmqZ)vulkanHVkSparseMemoryBind - Structure specifying a sparse memory bind operation DescriptionThe  binding range [resourceOffset, resourceOffset + size&) has different constraints based on flags. If flags contains P, 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 Q.If flags does not contain P, the binding range must be within the range [0,.::size). Valid UsageIf memory is not ., memory and  memoryOffset mustR match the memory requirements of the resource, as described in section chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-associationIf memory is not ., memory mustA not have been created with a memory type that reports f bit setsize must be greater than 0resourceOffset must& be less than the size of the resourcesize must> be less than or equal to the size of the resource minus resourceOffset memoryOffset must be less than the size of memorysize must& be less than or equal to the size of memory minus  memoryOffsetIf memory was created with J+:: handleTypes not equal to 0(, at least one handle type it contained must! also have been set in J5:: handleTypes or J6:: handleTypes# when the resource was createdIf memory` was created by a memory import operation, the external handle type of the imported memory must also have been set in J5:: handleTypes or J6:: handleTypes# when the resource was createdValid Usage (Implicit)If memory is not ., memory must be a valid { handleflags must be a valid combination of P valuesSee Also{, , , , vulkan^VkSparseImageOpaqueMemoryBindInfo - Structure specifying sparse image opaque memory bind info Valid UsageIf the flags member of any element of pBinds contains P!, the binding range defined must> be within the mip tail region of the metadata aspect of imageValid Usage (Implicit)image must be a valid u handlepBinds must# be a valid pointer to an array of  bindCount valid  structures bindCount must be greater than 0See Also, u, vulkanXVkSparseImageMemoryRequirements - Structure specifying sparse image memory requirementsSee Also, , N?, #vulkanQVkSparseImageMemoryBindInfo - Structure specifying sparse image memory bind info Valid UsageThe subresource.mipLevel member of each element of pBinds must be less than the  mipLevels specified in * when image was createdThe subresource.arrayLayer member of each element of pBinds must be less than the  arrayLayers specified in * when image was createdimage must have been created with   setValid Usage (Implicit)image must be a valid u handlepBinds must# be a valid pointer to an array of  bindCount valid  structures bindCount must be greater than 0See Also, u, vulkanGVkSparseImageMemoryBind - Structure specifying sparse image memory bind Valid Usage If the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyAliasedsparse aliased residencyU feature is not enabled, and if any other resources are bound to ranges of memory, the range of memory being bound must) not overlap with those bound ranges memory and  memoryOffset must= match the memory requirements of the calling command s image, as described in section chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-association subresource must" be a valid image subresource for image (see  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views)offset.x must5 be a multiple of the sparse image block width (::imageGranularity.width) of the image extent.width mustR either be a multiple of the sparse image block width of the image, or else ( extent.width + offset.x) must. equal the width of the image subresourceoffset.y must6 be a multiple of the sparse image block height (::imageGranularity.height) of the image extent.height mustS either be a multiple of the sparse image block height of the image, or else ( extent.height + offset.y) must* equal the height of the image subresourceoffset.z must5 be a multiple of the sparse image block depth (::imageGranularity.depth) of the image extent.depth mustR either be a multiple of the sparse image block depth of the image, or else ( extent.depth + offset.z) must. equal the depth of the image subresourceIf memory was created with J+:: handleTypes not equal to 0(, at least one handle type it contained must! also have been set in J6:: handleTypes when the image was createdIf memory` was created by a memory import operation, the external handle type of the imported memory must also have been set in J6:: handleTypes when image was createdValid Usage (Implicit) subresource must be a valid  structureIf memory is not ., memory must be a valid { handleflags must be a valid combination of P valuesSee Also{, , , , , , vulkanTVkSparseImageFormatProperties - Structure specifying sparse image format propertiesSee Also, , , O>, , #vulkanZVkSparseBufferMemoryBindInfo - Structure specifying a sparse buffer memory bind operationValid Usage (Implicit)See Also, , vulkanBVkBindSparseInfo - Structure specifying a sparse binding operation Valid UsageIf any element of pWaitSemaphores or pSignalSemaphores was created with a   of   then the pNext chain must include a : structureIf the pNext) chain of this structure includes a :# structure and any element of pWaitSemaphores was created with a   of   then its waitSemaphoreValueCount member must equal waitSemaphoreCountIf the pNext) chain of this structure includes a :# structure and any element of pSignalSemaphores was created with a   of   then its signalSemaphoreValueCount member must equal signalSemaphoreCountFor each element of pSignalSemaphores created with a   of  ( the corresponding element of :::pSignalSemaphoreValues mustQ have a value greater than the current value of the semaphore when the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operation is executedFor each element of pWaitSemaphores created with a   of  ( the corresponding element of :::pWaitSemaphoreValues must have a value which does not differ from the current value of the semaphore or from the value of any outstanding semaphore wait or signal operation on that semaphore by more than xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference#maxTimelineSemaphoreValueDifferenceFor each element of pSignalSemaphores created with a   of  ( the corresponding element of :::pSignalSemaphoreValues must have a value which does not differ from the current value of the semaphore or from the value of any outstanding semaphore wait or signal operation on that semaphore by more than xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference#maxTimelineSemaphoreValueDifferenceValid Usage (Implicit)sType must be 9Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of  or :The sType value of each struct in the pNext chain must be uniqueIf waitSemaphoreCount is not 0, pWaitSemaphores must( be a valid pointer to an array of waitSemaphoreCount valid g handlesIf bufferBindCount is not 0,  pBufferBinds must( be a valid pointer to an array of bufferBindCount valid  structuresIf imageOpaqueBindCount is not 0, pImageOpaqueBinds must( be a valid pointer to an array of imageOpaqueBindCount valid  structuresIf imageBindCount is not 0,  pImageBinds must( be a valid pointer to an array of imageBindCount valid  structuresIf signalSemaphoreCount is not 0, pSignalSemaphores must( be a valid pointer to an array of signalSemaphoreCount valid g handlesBoth of the elements of pSignalSemaphores, and the elements of pWaitSemaphores7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same zSee Alsog, , , , , ##vulkanpNext is NULL1 or a pointer to an extension-specific 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 u object to be bound#vulkanpBinds is a pointer to an array of  structures#vulkanimage is the u object to be bound.#vulkanpBinds is a pointer to an array of  structures.#vulkanbuffer must be a valid  handle#vulkanpBinds 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 .', the sparse image blocks are unbound.#vulkan memoryOffset is an offset into { object. If memory is ., this value is ignored.#vulkanflags! are sparse memory binding flags.#vulkanresourceOffset! is the offset into the resource.#vulkansize. is the size of the memory region to be bound.#vulkanmemory is the {8 object that the range of the resource is bound to. If memory is ., the range is unbound.#vulkan memoryOffset is the offset into the {+ object to bind the resource range to. If memory is ., this value is ignored.#vulkanflags is a bitmask of P, specifying usage of the binding operation.#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 Q, 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 Q% (otherwise the value is undefined).#vulkan aspectMask is a bitmask k@ 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 Q> specifying additional information about the sparse resource.#vulkanVvkGetImageSparseMemoryRequirements - Query the memory requirements for a sparse image Parametersdevice+ is the logical device that owns the image.image is the u0 object to get the memory requirements for.pSparseMemoryRequirementCount is a pointer to an integer related to the number of sparse memory requirements available or queried, as described below.pSparseMemoryRequirements is either NULL" or a pointer to an array of  structures. 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 .::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)device must be a valid z handleimage must be a valid u handlepSparseMemoryRequirementCount must be a valid pointer to a uint32_t valueIf the value referenced by pSparseMemoryRequirementCount is not 0, and pSparseMemoryRequirements is not NULL, pSparseMemoryRequirements must( be a valid pointer to an array of pSparseMemoryRequirementCount  structuresimage must6 have been created, allocated, or retrieved from deviceSee Alsoz, u, #vulkanqvkGetPhysicalDeviceSparseImageFormatProperties - Retrieve properties of an image format applied to sparse images ParametersphysicalDeviceO is the physical device from which to query the sparse image capabilities.format is the image format.type is the dimensionality of image.samples7 is the number of samples per texel as defined in [.usage9 is a bitmask describing the intended usage of the image.tiling9 is the tiling arrangement of the texel blocks in memory.pPropertyCount| is a pointer to an integer related to the number of sparse format properties available or queried, as described below. pProperties is either NULL" or a pointer to an array of  structures. 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 kZ | k[. Valid Usagesamples must$ be a bit value that is set in  :: sampleCounts returned by   with format, type, tiling, and usage) equal to those in this command and flags( equal to the value that is set in *::flags when the image is createdValid Usage (Implicit)physicalDevice must be a valid q handleformat must be a valid G valuetype must be a valid L valuesamples must be a valid [ valueusage must be a valid combination of N valuesusage must not be 0tiling must be a valid K valuepPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount  structuresSee AlsoG, K, L, M, q, [, #vulkanBvkQueueBindSparse - Bind device memory to a sparse resource object ParametersqueueK is the queue that the sparse binding operations will be submitted to. bindInfoCount" is the number of elements in the  pBindInfo array. pBindInfo is a pointer to an array of D structures, each specifying a sparse binding submission batch.fence is an optional+ handle to a fence to be signaled. If fence is not ., it defines a  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signalingfence signal operation. 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 UsageIf fence is not ., fence must be unsignaledIf fence is not ., fence mustg not be associated with any other queue command that has not yet completed execution on that queueEach element of the pSignalSemaphores member of each element of  pBindInfo must\ be unsignaled when the semaphore signal operation it defines is executed on the devicecWhen a semaphore wait operation referring to a binary semaphore defined by any element of the pWaitSemaphores member of any element of  pBindInfo executes on queue, there must6 be no other queues waiting on the same semaphoreAll elements of the pWaitSemaphores member of all elements of  pBindInfo( member referring to a binary semaphore must4 be semaphores that are signaled, or have  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operations( previously submitted for executionAll elements of the pWaitSemaphores member of all elements of  pBindInfo created with a   of   must reference a semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) must' have also been submitted for executionValid Usage (Implicit)queue must be a valid k handleIf  bindInfoCount is not 0,  pBindInfo must( be a valid pointer to an array of  bindInfoCount valid  structuresIf fence is not ., fence must be a valid w handleThe queue must" support sparse binding operationsBoth of fence, and queue7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same zHost 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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJHSee Also, w, k2##########################################2##########################################NNone'"#%&'-./189;=>?FHIMSUVX_dghklmqZUvulkan)VkSparseImageMemoryRequirements2 - (None)Valid Usage (Implicit)See Also, , $., vulkan@VkMemoryRequirements2 - Structure specifying memory requirementsValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueSee Also, , , $,, , , $-, vulkan-VkImageSparseMemoryRequirementsInfo2 - (None)Valid Usage (Implicit)See Alsou, , $., vulkan'VkImageMemoryRequirementsInfo2 - (None) Valid UsageIf image was created with a  multi-planar format and the  flag, there must be a   included in the pNext chain of the  structureIf image was created with  and with , then there must be a   included in the pNext chain of the  structureIf image was not created with the  flag, there must not be a   included in the pNext chain of the  structureIf image: was created with a single-plane format and with any tiling other than , then there must not be a   included in the pNext chain of the  structureIf image was created with the <g( external memory handle type, then image must be bound to memoryValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of  The sType value of each struct in the pNext chain must be uniqueimage must be a valid u handleSee Alsou, , $-, vulkan(VkBufferMemoryRequirementsInfo2 - (None) Valid UsageIf buffer was created with the <g( external memory handle type, then buffer must be bound to memory.Valid Usage (Implicit)sType must be pNext must be NULLbuffer must be a valid  handleSee Also, , $,, $!vulkanmemoryRequirements is a C structure describing the memory requirements of the sparse image.$#vulkanpNext is NULL1 or a pointer to an extension-specific structure.$$vulkanmemoryRequirements is a ? structure describing the memory requirements of the resource.$&vulkanimage must be a valid u handle$(vulkanpNext is NULL1 or a pointer to an extension-specific structure.$)vulkanimage is the image to query.$+vulkanbuffer is the buffer to query.$,vulkan]vkGetBufferMemoryRequirements2 - Returns the memory requirements for specified Vulkan object Parametersdevice, is the logical device that owns the buffer.pInfo is a pointer to a Q structure containing parameters required for the memory requirements query.pMemoryRequirements is a pointer to a X structure in which the memory requirements of the buffer object are returned.Valid Usage (Implicit)See Also, z, $-vulkan\vkGetImageMemoryRequirements2 - Returns the memory requirements for specified Vulkan object Parametersdevice+ is the logical device that owns the image.pInfo is a pointer to a Q structure containing parameters required for the memory requirements query.pMemoryRequirements is a pointer to a W structure in which the memory requirements of the image object are returned.Valid Usage (Implicit)See Alsoz, , $.vulkanWvkGetImageSparseMemoryRequirements2 - Query the memory requirements for a sparse image Parametersdevice+ is the logical device that owns the image.pInfo is a pointer to a V structure containing parameters required for the memory requirements query.pSparseMemoryRequirementCount is a pointer to an integer related to the number of sparse memory requirements available or queried, as described below.pSparseMemoryRequirements is either NULL" or a pointer to an array of  structures.Valid Usage (Implicit)device must be a valid z handlepInfo must$ be a valid pointer to a valid  structurepSparseMemoryRequirementCount must be a valid pointer to a uint32_t valueIf the value referenced by pSparseMemoryRequirementCount is not 0, and pSparseMemoryRequirements is not NULL, pSparseMemoryRequirements must( be a valid pointer to an array of pSparseMemoryRequirementCount  structuresSee Alsoz, , $ $!$"$#$$$%$&$'$($)$*$+43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      $,$-$.s$,$-$.$*$+$'$($)$%$&$"$#$$$ $!43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      None'"#%&'-./189;=>?FHIMSUVX_dghklmqZk$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$S$R$Q$P$O$T$U$V$L$K$J$I$H$N$G$M'None'"#%&'-./189;=>?FHIMSUVX_dghklmqZ cvulkanMVkFenceCreateInfo - Structure specifying parameters of a newly created fenceValid Usage (Implicit)sType must be 8Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of  or BThe sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of p valuesSee Also, , $Z$XvulkanpNext is NULL1 or a pointer to an extension-specific structure.$Yvulkanflags is a bitmask of p9 specifying the initial state and behavior of the fence.$Zvulkan)vkCreateFence - Create a new fence object Parametersdevice. is the logical device that creates the fence. pCreateInfo is a pointer to a cL structure containing information about how the fence is to be created. pAllocator: 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.pFenceO is a pointer to a handle in which the resulting fence object is returned.Valid Usage (Implicit)device must be a valid z handle pCreateInfo must be a valid pointer to a valid c structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepFence 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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, z, w, c$[vulkan=A convenience wrapper to make a compatible pair of calls to $Z and $\To ensure that $\ is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument.$\vulkan'vkDestroyFence - Destroy a fence object Parametersdevice/ is the logical device that destroys the fence.fence' is the handle of the fence to destroy. pAllocator: 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. Valid Usage All  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submissionqueue submission commands that refer to fence must have completed executionIf  were provided when fence1 was created, a compatible set of callbacks must be provided here If no  were provided when fence was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid z handleIf fence is not ., fence must be a valid w handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf fence is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to fence must be externally synchronizedSee Also, z, w$]vulkan0vkResetFences - Resets one or more fence objects Parametersdevice, is the logical device that owns the fences. fenceCount" is the number of fences to reset.pFences4 is a pointer to an array of fence handles to reset. DescriptionIf any member of pFences currently has its  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importingpayload imported with temporary permanence, that fence s prior permanent payload is first restored. The remaining operations described therefore operate on the restored payload.When $] is executed on the host, it defines a /fence unsignal operation/ for each fence, which resets the fence to the unsignaled state.If any member of pFences* is already in the unsignaled state when $] is executed, then $] has no effect on that fence. Valid UsageEach element of pFences mustk not be currently associated with any queue command that has not yet completed execution on that queueValid Usage (Implicit)device must be a valid z handlepFences must# be a valid pointer to an array of  fenceCount valid w handles fenceCount must be greater than 0Each element of pFences must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to each member of pFences must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Alsoz, w$^vulkan/vkGetFenceStatus - Return the status of a fence Parametersdevice+ is the logical device that owns the fence.fence% is the handle of the fence to query. DescriptionUpon success, $^J returns the status of the fence object, with the following return codes:9 Status x Meaning  Q  The fence specified by fenceY is signaled.  P  The fence specified by fenceY is unsignaled.  H; 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 Q or H. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQP  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJHSee Alsoz, w$_vulkan@vkWaitForFences - Wait for one or more fences to become signaled Parametersdevice, is the logical device that owns the fences. fenceCount$ is the number of fences to wait on.pFences is a pointer to an array of  fenceCount fence handles.waitAll is the condition that must8 be satisfied to successfully unblock the wait. If waitAll is  <0, then the condition is that all fences in pFencesK are signaled. Otherwise, the condition is that at least one fence in pFences is signaled.timeout0 is the timeout period in units of nanoseconds. timeoutl is adjusted to the closest value allowed by the implementation-dependent timeout accuracy, which may7 be substantially longer than one nanosecond, and may* be longer than the requested period. Description#If the condition is satisfied when $_ is called, then $_E returns immediately. If the condition is not satisfied at the time $_ is called, then $_ will block and wait up to timeout4 nanoseconds for the condition to become satisfied.If timeout is zero, then $_F does not wait, but simply returns the current state of the fences. Om will be returned in this case if the condition is not satisfied, even though no actual wait was performed.LIf the specified timeout period expires before the condition is satisfied, $_ returns O(. If the condition is satisfied before timeout nanoseconds has expired, $_ returns Q.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 Q or H.NoteWhile we guarantee that $_ must return in finite time, no guarantees are made that it returns immediately upon device loss. However, the client can reasonably expect that the delay will be on the order of seconds and that calling $_K will not result in a permanently (or seemingly permanently) dead process.Valid Usage (Implicit)device must be a valid z handlepFences must# be a valid pointer to an array of  fenceCount valid w handles fenceCount must be greater than 0Each element of pFences must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQO  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJHSee Also, z, w c$W$Y$X$Z$[$\$]$^$_ $Z$[$\$]$^$_c$W$Y$X None'"#%&'-./189;=>?FHIMSUVX_dghklmqa3vulkanOVkQueueFamilyProperties - 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 9 parameter must always be zero.The width, height, and depth members of a  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 9 parameter must: be integer multiples of Ax, Ay, and Az, respectively.width of a  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  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  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 Also, O#, u, %E4vulkanaVkPhysicalDeviceSparseProperties - Structure specifying physical device sparse memory propertiesSee Also, 55vulkanMVkPhysicalDeviceProperties - Structure specifying physical device properties DescriptionNote The value of  apiVersion may- be different than the version returned by  :; either higher or lower. In such cases, the application must` not use functionality that exceeds the version of Vulkan associated with a given object. The  pApiVersion parameter returned by  $ is the version associated with a s! and its children, except for a q and its children. 5:: apiVersion# is the version associated with a q 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 q being queried.Note@For example, in the case of a discrete GPU implementation, this shouldq be the GPU chipset vendor. In the case of a hardware accelerator integrated into a system-on-chip (SoC), this shouldC be the supplier of the silicon IP used to create the accelerator.If the vendor has a  .https://pcisig.com/membership/member-companies PCI vendor ID, the low 16 bits of vendorID must5 contain that PCI vendor ID, and the remaining bits must0 be set to zero. Otherwise, the value returned must= be a valid Khronos vendor ID, obtained as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vulkan-styleguide?Vulkan Documentation and Extensions: Procedures and Conventions document in the section Registering a Vendor ID with Khronos . Khronos vendor IDs are allocated starting at 0x10000, to distinguish them from the PCI vendor ID namespace. Khronos vendor IDs are symbolically defined in the  type.9The vendor is also responsible for the value returned in deviceID3. If the implementation is driven primarily by a  https://pcisig.com/ PCI device with a  https://pcisig.com/ PCI device ID, the low 16 bits of deviceID must4 contain that PCI device ID, and the remaining bits mustA be set to zero. Otherwise, the choice of what values to return may= be dictated by operating system or platform policies - but should uniquely identify both the device version and any major configuration options (for example, core count in the case of multicore devices).NoteThe same device ID should be used for all physical implementations of that device version and configuration. For example, all uses of a specific silicon IP GPU version and configuration shouldE use the same device ID, even if those uses occur in different SoCs.See Also7, O, 4, , %D6vulkanZVkPhysicalDeviceMemoryProperties - Structure specifying physical device memory properties DescriptionThe 6" structure describes a number of  memory heaps as well as a number of  memory types that can be used to access memory allocated in those heaps. Each heap describes a memory resource of a particular size, and each memory type describes a set of memory properties (e.g. host cached vs uncached) that can be used with a given memory heap. Allocations using a particular memory type will consume resources from the heap indicated by that memory type s heap index. More than one memory type may share each heap, and the heaps and memory types provide a mechanism to advertise an accurate size of the physical memory resources while allowing the memory to be used with a variety of different properties.'The number of memory heaps is given by memoryHeapCount and is less than or equal to /. Each heap is described by an element of the  memoryHeaps array as a :V structure. The number of memory types available across all memory heaps is given by memoryTypeCount and is less than or equal to 6. Each memory type is described by an element of the  memoryTypes array as a 9 structure.At least one heap must include g in :::flagsW. If there are multiple heaps that all have similar performance characteristics, they may all include g. In a unified memory architecture (UMA) system there is often only a single memory heap which is considered to be equally local  to the host and to the device, and such an implementation must% advertise the heap as device-local.Each memory type returned by %F must have its  propertyFlags$ set to one of the following values:0f | ff | ff | f | fff | f | ff | f | ff | f | f | ff | ffNfN | ff | f | ff | f | f | ff | ff | f | f | ff | f | f | f | ff | f | f | ff | f | f | f | ff | f | ff | f | f | f | ff | f | f | f | f | fThere must, be at least one memory type with both the f and f bits set in its  propertyFlags. There must( be at least one memory type with the f 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 f 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 f or f 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 f was before f | f,, the list would still be in a valid order.There may be a performance penalty for using device coherent or uncached device memory types, and using these accidentally is undesirable. In order to avoid this, memory types with these properties always appear at the end of the list; but are subject to the same rules otherwise.This ordering requirement enables applications to use a simple search loop to select the desired memory type along the lines of:  // Find a memory in `memoryTypeBitsRequirement` that includes all of `requiredProperties` int32_t findProperties(const VkPhysicalDeviceMemoryProperties* pMemoryProperties, uint32_t memoryTypeBitsRequirement, VkMemoryPropertyFlags requiredProperties) { const uint32_t memoryCount = pMemoryProperties->memoryTypeCount; for (uint32_t memoryIndex = 0; memoryIndex < memoryCount; ++memoryIndex) { const uint32_t memoryTypeBits = (1 << memoryIndex); const bool isRequiredMemoryType = memoryTypeBitsRequirement & memoryTypeBits; const VkMemoryPropertyFlags properties = pMemoryProperties->memoryTypes[memoryIndex].propertyFlags; const bool hasRequiredProperties = (properties & requiredProperties) == requiredProperties; if (isRequiredMemoryType && hasRequiredProperties) return static_cast<int32_t>(memoryIndex); } // failed to find memory type return -1; } // Try to find an optimal memory type, or if it does not exist try fallback memory type // `device` is the VkDevice // `image` is the VkImage that requires memory to be bound // `memoryProperties` properties as returned by vkGetPhysicalDeviceMemoryProperties // `requiredProperties` are the property flags that must be present // `optimalProperties` are the property flags that are preferred by the application VkMemoryRequirements memoryRequirements; vkGetImageMemoryRequirements(device, image, &memoryRequirements); int32_t memoryType = findProperties(&memoryProperties, memoryRequirements.memoryTypeBits, optimalProperties); if (memoryType == -1) // not found; try fallback properties memoryType = findProperties(&memoryProperties, memoryRequirements.memoryTypeBits, requiredProperties);See Also:, 9, O, %F7vulkan]VkPhysicalDeviceLimits - Structure reporting implementation-dependent physical device limitsMembersThe 7D are properties of the physical device. These are available in the limits member of the 5# structure which is returned from %D. Description 1For all bitmasks of !, 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 %I as described in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-supported-sample-countsSupported Sample Counts.See Also, , 5, Z8vulkanuVkPhysicalDeviceFeatures - Structure describing the fine-grained features that can be supported by an implementationMembersThe members of the 8, structure describe the following features:See Also,   , O, %G9vulkan/VkMemoryType - Structure specifying memory typeSee Alsof, 6:vulkan1VkMemoryHeap - Structure specifying a memory heapSee Also, , 6;vulkanSVkInstanceCreateInfo - Structure specifying parameters of a newly created instanceValid Usage (Implicit)sType must be ?Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , ,  , or  The sType value of each struct in the pNext chain must be uniqueflags must be 0If pApplicationInfo is not NULL, pApplicationInfo must$ be a valid pointer to a valid > structureIf enabledLayerCount is not 0, ppEnabledLayerNames must( be a valid pointer to an array of enabledLayerCount# null-terminated UTF-8 stringsIf enabledExtensionCount is not 0, ppEnabledExtensionNames must# be a valid pointer to an array of enabledExtensionCount# null-terminated UTF-8 stringsSee Also>, , , %><vulkanJVkImageFormatProperties - Structure specifying an image format propertiesMembers maxExtent0 are the maximum image dimensions. See the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extentperimagetypeAllowed Extent Values< section below for how these values are constrained by type. maxMipLevels. is the maximum number of mipmap levels.  maxMipLevels mustQ be equal to the number of levels in the complete mipmap chain based on the maxExtent.width, maxExtent.height, and maxExtent.depthM, except when one of the following conditions is true, in which case it may instead be 1:%I::tiling was  /O::tiling was  .the O::pNext chain included a K2 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 7::maxImageArrayLayersM, except when one of the following conditions is true, in which case it may instead be 1:tiling is  /tiling is  0 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 !W 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 * will return J. 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 %I4 is not supported by the implementation for use in *, 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 Also, , , OQ, Z, %I=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 n.See Also, O=, %H>vulkan9VkApplicationInfo - Structure specifying application info Description4Vulkan 1.0 implementations were required to return C if  apiVersionH was larger than 1.0. Implementations that support Vulkan 1.1 or later must not return C for any value of  apiVersion.Note#Because Vulkan 1.0 implementations may fail with C, applications should; determine the version of Vulkan available before calling %> . If the %C 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 (Implicit)sType must be @pNext must be NULLIf pApplicationName is not NULL, pApplicationName must' be a null-terminated UTF-8 stringIf  pEngineName is not NULL,  pEngineName must' be a null-terminated UTF-8 stringSee Also;, $fvulkanmaxImageDimension1D is the maximum dimension (width,) supported for all images created with an  imageType of  &.$gvulkanmaxImageDimension2D is the maximum dimension (width or height,) supported for all images created with an  imageType of  % and without  set in flags.$hvulkanmaxImageDimension3D is the maximum dimension (width, height, or depth+) supported for all images created with an  imageType of  $.$ivulkanmaxImageDimensionCube is the maximum dimension (width or height,) supported for all images created with an  imageType of  % and with  set in flags.$jvulkanmaxImageArrayLayers" is the maximum number of layers ( arrayLayers) for an image.$kvulkanmaxTexelBufferElementsp is the maximum number of addressable texels for a buffer view created on a buffer which was created with the }T or }U set in the usage member of the  structure.$lvulkanmaxUniformBufferRange is the maximum value that can be specified in the range member of any  " structures passed to a call to  ] for descriptors of type , or ,.$mvulkanmaxStorageBufferRange is the maximum value that can be specified in the range member of any  " structures passed to a call to  ] for descriptors of type , or ,.$nvulkanmaxPushConstantsSize} 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 3 structure, (offset + size) must& be less than or equal to this limit.$ovulkanmaxMemoryAllocationCountE is the maximum number of device memory allocations, as created by -, which can simultaneously exist.$pvulkanmaxSamplerAllocationCount: is the maximum number of sampler objects, as created by 7, which can# simultaneously exist on a device.$qvulkanbufferImageGranularityg 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 )v object without aliasing. See  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-bufferimagegranularityBuffer-Image Granularity for more details.$rvulkansparseAddressSpaceSize 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.$svulkanmaxBoundDescriptorSets0 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.$tvulkanmaxPerStageDescriptorSamplers) 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 t6[ 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.$uvulkan#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 t6[ 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.$vvulkan#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 t6d 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.$wvulkan"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 t6d 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.$xvulkan"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 t6d 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.$yvulkan%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 t6d 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.$zvulkanmaxPerStageResources) 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 t6 bit set count against this limit. For the fragment shader stage the framebuffer color attachments also count against this limit.${vulkanmaxDescriptorSetSamplers( is the maximum number of samplers that can@ be included in a pipeline layout. Descriptors with a type of , or ,] count against this limit. Only descriptors in descriptor set layouts created without the t6) bit set count against this limit. See  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampler and  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesampler.$|vulkanmaxDescriptorSetUniformBuffers0 is the maximum number of uniform buffers that can@ be included in a pipeline layout. Descriptors with a type of , or ,] count against this limit. Only descriptors in descriptor set layouts created without the t6) bit set count against this limit. See  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbuffer and  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic.$}vulkan%maxDescriptorSetUniformBuffersDynamic8 is the maximum number of dynamic uniform buffers that can@ be included in a pipeline layout. Descriptors with a type of ,] count against this limit. Only descriptors in descriptor set layouts created without the t6) bit set count against this limit. See  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic.$~vulkanmaxDescriptorSetStorageBuffers0 is the maximum number of storage buffers that can@ be included in a pipeline layout. Descriptors with a type of , or ,] count against this limit. Only descriptors in descriptor set layouts created without the t6) bit set count against this limit. See  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebuffer and  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic.$vulkan%maxDescriptorSetStorageBuffersDynamic8 is the maximum number of dynamic storage buffers that can@ be included in a pipeline layout. Descriptors with a type of ,] count against this limit. Only descriptors in descriptor set layouts created without the t6) bit set count against this limit. See  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic.$vulkanmaxDescriptorSetSampledImages/ is the maximum number of sampled images that can? be included in a pipeline layout. Descriptors with a type of ,, ,, or ,] count against this limit. Only descriptors in descriptor set layouts created without the t6) bit set count against this limit. See  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesampler,  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage, and  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer.$vulkanmaxDescriptorSetStorageImages/ is the maximum number of storage images that can? be included in a pipeline layout. Descriptors with a type of ,, or ,] count against this limit. Only descriptors in descriptor set layouts created without the t6) bit set count against this limit. See  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage, and  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer.$vulkan maxDescriptorSetInputAttachments2 is the maximum number of input attachments that can@ be included in a pipeline layout. Descriptors with a type of ,] count against this limit. Only descriptors in descriptor set layouts created without the t6) bit set count against this limit. See  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inputattachment.$vulkanmaxVertexInputAttributes8 is the maximum number of vertex input attributes that canM be specified for a graphics pipeline. These are described in the array of 1K structures that are provided at graphics pipeline creation time via the pVertexAttributeDescriptions member of the 1 structure. See  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-attrib and  \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input.$vulkanmaxVertexInputBindings/ is the maximum number of vertex buffers that canl be specified for providing vertex attributes to a graphics pipeline. These are described in the array of 1K structures that are provided at graphics pipeline creation time via the pVertexBindingDescriptions member of the 1 structure. The binding member of 1 must be less than this limit. See  \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input.$vulkanmaxVertexInputAttributeOffset4 is the maximum vertex input attribute offset that can3 be added to the vertex input binding stride. The offset member of the 1 structure must+ be less than or equal to this limit. See  \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input.$vulkanmaxVertexInputBindingStride2 is the maximum vertex input binding stride that can- be specified in a vertex input binding. The stride member of the 1 structure must+ be less than or equal to this limit. See  \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input.$vulkanmaxVertexOutputComponents@ is the maximum number of components of output variables which can$ be output by a vertex shader. See  \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-vertex.$vulkanmaxTessellationGenerationLevelw is the maximum tessellation generation level supported by the fixed-function tessellation primitive generator. See  Zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellation.$vulkanmaxTessellationPatchSize: is the maximum patch size, in vertices, of patches that can\ be processed by the tessellation control shader and tessellation primitive generator. The patchControlPoints member of the 1O structure specified at pipeline creation time and the value provided in the OutputVertices" execution mode of shader modules must, be less than or equal to this limit. See  Zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellation.$vulkan.maxTessellationControlPerVertexInputComponents? is the maximum number of components of input variables which canL be provided as per-vertex inputs to the tessellation control shader stage.$vulkan/maxTessellationControlPerVertexOutputComponentsK is the maximum number of components of per-vertex output variables which can7 be output from the tessellation control shader stage.$vulkan.maxTessellationControlPerPatchOutputComponentsJ is the maximum number of components of per-patch output variables which can7 be output from the tessellation control shader stage.$vulkan+maxTessellationControlTotalOutputComponents` is the maximum total number of components of per-vertex and per-patch output variables which can6 be output from the tessellation control shader stage.$vulkan(maxTessellationEvaluationInputComponents? is the maximum number of components of input variables which canO be provided as per-vertex inputs to the tessellation evaluation shader stage.$vulkan)maxTessellationEvaluationOutputComponentsK is the maximum number of components of per-vertex output variables which can: be output from the tessellation evaluation shader stage.$vulkanmaxGeometryShaderInvocationsf is the maximum invocation count supported for instanced geometry shaders. The value provided in the  Invocations# execution mode of shader modules must, be less than or equal to this limit. See  Vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometry.$vulkanmaxGeometryInputComponents? is the maximum number of components of input variables which can5 be provided as inputs to the geometry shader stage.$vulkanmaxGeometryOutputComponents@ is the maximum number of components of output variables which can* be output from the geometry shader stage.$vulkanmaxGeometryOutputVertices* is the maximum number of vertices which can# be emitted by any geometry shader.$vulkan maxGeometryTotalOutputComponentsZ is the maximum total number of components of output, across all emitted vertices, which can+ be output from the geometry shader stage.$vulkanmaxFragmentInputComponents? is the maximum number of components of input variables which can5 be provided as inputs to the fragment shader stage.$vulkanmaxFragmentOutputAttachments4 is the maximum number of output attachments which can, be written to by the fragment shader stage.$vulkanmaxFragmentDualSrcAttachments4 is the maximum number of output attachments which can~ be written to by the fragment shader stage when blending is enabled and one of the dual source blend modes is in use. See  ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb and  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dualSrcBlend dualSrcBlend.$vulkan"maxFragmentCombinedOutputResourcesS is the total number of storage buffers, storage images, and output buffers which can' be used in the fragment shader stage.$vulkanmaxComputeSharedMemorySizeY is the maximum total storage size, in bytes, available for variables declared with the  Workgroup/ storage class in shader modules (or with the shared} storage qualifier in GLSL) in the compute shader stage. The amount of storage consumed by the variables declared with the  Workgroup storage class is implementation-dependent. However, the amount of storage consumed may not exceed the largest block size that would be obtained if all active variables declared with  Workgroup storage class were assigned offsets in an arbitrary order by successively taking the smallest valid offset according to the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources-standard-layoutStandard Storage Buffer LayoutD rules. (This is equivalent to using the GLSL std430 layout rules.)$vulkanmaxComputeWorkGroupCount4[3] is the maximum number of local workgroups that can be dispatched by a single dispatch command. These three values represent the maximum number of local workgroups for the X, Y, and Z dimensions, respectively. The workgroup count parameters to the dispatch commands must9 be less than or equal to the corresponding limit. See  Vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dispatch.$vulkanmaxComputeWorkGroupInvocations is the maximum total number of compute shader invocations in a single local workgroup. The product of the X, Y, and Z sizes, as specified by the  LocalSizeE execution mode in shader modules or by the object decorated by the  WorkgroupSize decoration, must% be less than or equal to this limit.$vulkanmaxComputeWorkGroupSize[3] is the maximum size of a local compute workgroup, per dimension. These three values represent the maximum local workgroup size in the X, Y, and Z dimensions, respectively. The x, y, and z sizes, as specified by the  LocalSize3 execution mode or by the object decorated by the  WorkgroupSize decoration in shader modules, must2 be less than or equal to the corresponding limit.$vulkansubPixelPrecisionBitsY is the number of bits of subpixel precision in framebuffer coordinates xf and yf. See  Whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast.$vulkansubTexelPrecisionBits is the number of bits of precision in the division along an axis of an image used for minification and magnification filters. 2subTexelPrecisionBits is the actual number of divisions along each axis of the image represented. Sub-texel values calculated during image sampling will snap to these locations when generating the filtered results.$vulkanmipmapPrecisionBits is the number of bits of division that the LOD calculation for mipmap fetching get snapped to when determining the contribution from each mip level to the mip filtered results. 2mipmapPrecisionBits# is the actual number of divisions.$vulkanmaxDrawIndexedIndexValue! is the maximum index value that can be used for indexed draw calls when using 32-bit indices. This excludes the primitive restart index value of 0xFFFFFFFF. See  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fullDrawIndexUint32fullDrawIndexUint32.$vulkanmaxDrawIndirectCountL is the maximum draw count that is supported for indirect draw calls. See  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirectmultiDrawIndirect.$vulkanmaxSamplerLodBias; is the maximum absolute sampler LOD bias. The sum of the  mipLodBias member of the 73 structure and the BiasE 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.$vulkanmaxSamplerAnisotropy is the maximum degree of sampler anisotropy. The maximum degree of anisotropic filtering used for an image sampling operation is the minimum of the  maxAnisotropy member of the 73! structure and this limit. See  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-maxAnisotropy.$vulkan maxViewports1 is the maximum number of active viewports. The  viewportCount member of the 12 structure that is provided at pipeline creation must& be less than or equal to this limit.$vulkanmaxViewportDimensions[2] are the maximum viewport dimensions in the X (width) and Y (height) dimensions, respectively. The maximum viewport dimensions must6 be greater than or equal to the largest image which can7 be created and used as a framebuffer attachment. See  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-viewportControlling the Viewport.$vulkanviewportBoundsRangeD[2] is the [minimum, maximum] range that the corners of a viewport must be contained in. This range must be at least [-2 size, 2 size - 1], where size = max(maxViewportDimensions[0], maxViewportDimensions [1]). See  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-viewportControlling the Viewport.NoteThe intent of the viewportBoundsRange limit is to allow a maximum sized viewport to be arbitrarily shifted relative to the output target as long as at least some portion intersects. This would give a bounds limit of [-size + 1, 2 size - 1] which would allow all possible non-empty-set intersections of the output target and the viewport. Since these numbers are typically powers of two, picking the signed number range using the smallest possible number of bits ends up with the specified range.$vulkanviewportSubPixelBits is the number of bits of subpixel precision for viewport bounds. The subpixel precision that floating-point viewport bounds are interpreted at is given by this limit.$vulkanminMemoryMapAlignment is the minimum required alignment, in bytes, of host visible memory allocations within the host address space. When mapping a memory allocation with -, subtracting offset_ bytes from the returned pointer will always produce an integer multiple of this limit. See  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-hostaccess.$vulkanminTexelBufferOffsetAlignment is the minimum required alignment, in bytes, for the offset member of the # structure for texel buffers. If  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignmenttexelBufferAlignment> is enabled, this limit is equivalent to the maximum of the  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-uniformTexelBufferOffsetAlignmentBytes&uniformTexelBufferOffsetAlignmentBytes and  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-storageTexelBufferOffsetAlignmentBytes&storageTexelBufferOffsetAlignmentBytes members of 4, but smaller alignment is optionally: allowed by  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-storageTexelBufferOffsetSingleTexelAlignment,storageTexelBufferOffsetSingleTexelAlignment and  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-uniformTexelBufferOffsetSingleTexelAlignment,uniformTexelBufferOffsetSingleTexelAlignment. If  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignmenttexelBufferAlignment is not enabled, ::offset must be a multiple of this value.$vulkanminUniformBufferOffsetAlignment is the minimum required alignment, in bytes, for the offset member of the  < 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.$vulkanminStorageBufferOffsetAlignment 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.$vulkanminTexelOffset% is the minimum offset value for the  ConstOffset image operand of any of the  OpImageSample* or  OpImageFetch* image instructions.$vulkanmaxTexelOffset% is the maximum offset value for the  ConstOffset image operand of any of the  OpImageSample* or  OpImageFetch* image instructions.$vulkanminTexelGatherOffset% is the minimum offset value for the Offset,  ConstOffset, or  ConstOffsets image operands of any of the OpImage*Gather image instructions.$vulkanmaxTexelGatherOffset% is the maximum offset value for the Offset,  ConstOffset, or  ConstOffsets image operands of any of the OpImage*Gather image instructions.$vulkanminInterpolationOffset/ is the minimum negative offset value for the offset operand of the InterpolateAtOffset extended instruction.$vulkanmaxInterpolationOffset/ is the maximum positive offset value for the offset operand of the InterpolateAtOffset extended instruction.$vulkansubPixelInterpolationOffsetBits5 is the number of subpixel fractional bits that the x and y offsets to the InterpolateAtOffset extended instruction may% be rounded to as fixed-point values.$vulkanmaxFramebufferWidth. is the maximum width for a framebuffer. The width member of the 0@ structure must& be less than or equal to this limit.$vulkanmaxFramebufferHeight/ is the maximum height for a framebuffer. The height member of the 0@ structure must& be less than or equal to this limit.$vulkanmaxFramebufferLayers< is the maximum layer count for a layered framebuffer. The layers member of the 0@ structure must& be less than or equal to this limit.$vulkanframebufferColorSampleCounts is a bitmask1 of ! indicating the color sample counts that are supported for all framebuffer color attachments with floating- or fixed-point formats. There is no limit that specifies the color sample counts that are supported for all color attachments with integer formats.$vulkanframebufferDepthSampleCounts is a bitmask1 of ! indicating the supported depth sample counts for all framebuffer depth/stencil attachments, when the format includes a depth component.$vulkanframebufferStencilSampleCounts is a bitmask1 of ! indicating the supported stencil sample counts for all framebuffer depth/stencil attachments, when the format includes a stencil component.$vulkan$framebufferNoAttachmentsSampleCounts is a bitmask1 of !0 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.$vulkanmaxColorAttachments2 is the maximum number of color attachments that can, be used by a subpass in a render pass. The colorAttachmentCount member of the 0k structure must% be less than or equal to this limit.$vulkansampledImageColorSampleCounts is a bitmask1 of !I indicating the sample counts supported for all 2D images created with  0, usage containing ", and a non-integer color format.$vulkansampledImageIntegerSampleCounts is a bitmask1 of !I indicating the sample counts supported for all 2D images created with  0, usage containing , and an integer color format.$vulkansampledImageDepthSampleCounts is a bitmask1 of !I indicating the sample counts supported for all 2D images created with  0, usage containing , and a depth format.$vulkansampledImageStencilSampleCounts is a bitmask1 of !B indicating the sample supported for all 2D images created with  0, usage containing , and a stencil format.$vulkanstorageImageSampleCounts is a bitmask1 of !I indicating the sample counts supported for all 2D images created with  0, and usage containing .$vulkanmaxSampleMaskWordsK is the maximum number of array elements of a variable decorated with the : built-in decoration.$vulkantimestampComputeAndGraphics` specifies support for timestamps on all graphics and compute queues. If this limit is set to !, all queues that advertise the Vo or Vp in the 3:: queueFlags support 3::timestampValidBits of at least 36. See  `https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-timestampsTimestamp Queries.$vulkantimestampPeriod is the number of nanoseconds required5 for a timestamp query to be incremented by 1. See  `https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-timestampsTimestamp Queries.$vulkanmaxClipDistances. is the maximum number of clip distances that canM be used in a single shader stage. The size of any array declared with the  ClipDistance( built-in decoration in a shader module must& be less than or equal to this limit.$vulkanmaxCullDistances. is the maximum number of cull distances that canM be used in a single shader stage. The size of any array declared with the  CullDistance( built-in decoration in a shader module must& be less than or equal to this limit.$vulkanmaxCombinedClipAndCullDistancesA is the maximum combined number of clip and cull distances that cana be used in a single shader stage. The sum of the sizes of any pair of arrays declared with the  ClipDistance and  CullDistanceG built-in decoration used by a single shader stage in a shader module must% be less than or equal to this limit.$vulkandiscreteQueuePriorities, is the number of discrete priorities that can> be assigned to a queue based on the value of each member of  ::pQueuePriorities. This must be at least 2, and levels must\ be spread evenly over the range, with at least one level at 1.0, and another at 0.0. See  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-priority.$vulkanpointSizeRange[2] is the range [minimum,maximumR] of supported sizes for points. Values written to variables decorated with the  PointSize/ built-in decoration are clamped to this range.$vulkanlineWidthRange[2] is the range [minimum,maximum:] of supported widths for lines. Values specified by the  lineWidth member of the 1  or the  lineWidth parameter to   are clamped to this range.$vulkanpointSizeGranularity[ is the granularity of supported point sizes. Not all point sizes in the range defined by pointSizeRangeo are supported. This limit specifies the granularity (or increment) between successive supported point sizes.$vulkanlineWidthGranularity[ is the granularity of supported line widths. Not all line widths in the range defined by lineWidthRangeo are supported. This limit specifies the granularity (or increment) between successive supported line widths.$vulkan strictLinesh specifies whether lines are rasterized according to the preferred method of rasterization. If set to , lines may9 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.$vulkanstandardSampleLocationsW 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.$vulkan optimalBufferCopyOffsetAlignment7 is the optimal buffer offset alignment in bytes for   and  G. The per texel alignment requirements are enforced, but applications shouldB use the optimal alignment for optimal performance and power use.$vulkan"optimalBufferCopyRowPitchAlignment: is the optimal buffer row pitch alignment in bytes for   and  . Row pitch is the number of bytes between texels with the same X coordinate in adjacent rows (Y coordinates differ by one). The per texel alignment requirements are enforced, but applications shouldB use the optimal alignment for optimal performance and power use.$vulkannonCoherentAtomSizeG 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.$vulkanresidencyStandard2DBlockShape 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.$vulkan(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.$vulkanresidencyStandard3DBlockShape 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.$vulkanresidencyAlignedMipSize 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 Q 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.$vulkanresidencyNonResidentStrict' 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.$vulkanrobustBufferAccessv 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 must[ not cause application termination, and the effects of shader loads, stores, and atomics mustE conform to an implementation-dependent behavior as described below.XA buffer access is considered to be out of bounds if any of the following are true:The pointer was formed by OpImageTexelPointerz and the coordinate is less than zero or greater than or equal to the number of whole elements in the bound range.The pointer was not formed by OpImageTexelPointerx and the object pointed to is not wholly contained within the bound range. This includes accesses performed via variable pointers where the buffer descriptor being accessed cannot be statically determined. Uninitialized pointers and pointers equal to OpConstantNull are treated as pointing to a zero-sized object, so all accesses through such pointers are considered to be out of bounds. Buffer accesses through buffer device addresses are not bounds-checked. If the  zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cooperativeMatrixRobustBufferAccess#cooperativeMatrixRobustBufferAccess5 feature is not enabled, then accesses using OpCooperativeMatrixLoadNV and OpCooperativeMatrixStoreNV may not be bounds-checked.Note If a SPIR-V OpLoad instruction loads a structure and the tail end of the structure is out of bounds, then all members of the structure are considered out of bounds even if the members at the end are not statically used.If  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2 is not enabled and any buffer access is determined to be out of bounds, then any other access of the same type (load, store, or atomic) to the same buffer that accesses an address less than 16 bytes away from the out of bounds address may& also be considered out of bounds.If the access is a load that reads from the same memory locations as a prior store in the same shader invocation, with no other intervening accesses to the same memory locations in that shader invocation, then the result of the load mayk be the value stored by the store instruction, even if the access is out of bounds. If the load is Volatile!, then an out of bounds load must, return the appropriate out of bounds value.,Accesses to descriptors written with a . resource or view are not considered to be out of bounds. Instead, each type of descriptor access defines a specific behavior for accesses to a null descriptor.COut-of-bounds buffer loads will return any of the following values:-If the access is to a uniform buffer and  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2 is enabled, loads of offsets between the end of the descriptor range and the end of the descriptor range rounded up to a multiple of  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustUniformBufferAccessSizeAlignment&robustUniformBufferAccessSizeAlignment bytes must return either zero values or the contents of the memory at the offset being loaded. Loads of offsets past the descriptor range rounded up to a multiple of  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustUniformBufferAccessSizeAlignment&robustUniformBufferAccessSizeAlignment bytes must return zero values.-If the access is to a storage buffer and  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2 is enabled, loads of offsets between the end of the descriptor range and the end of the descriptor range rounded up to a multiple of  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment&robustStorageBufferAccessSizeAlignment bytes must return either zero values or the contents of the memory at the offset being loaded. Loads of offsets past the descriptor range rounded up to a multiple of  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment&robustStorageBufferAccessSizeAlignment bytes must return zero values. Similarly, stores to addresses between the end of the descriptor range and the end of the descriptor range rounded up to a multiple of  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment&robustStorageBufferAccessSizeAlignment bytes may be discarded.JNon-atomic accesses to storage buffers that are a multiple of 32 bits mayM be decomposed into 32-bit accesses that are individually bounds-checked.,If the access is to an index buffer and  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2 is enabled, zero values must be returned.OIf the access is to a uniform texel buffer or storage texel buffer and  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2 is enabled, zero values must be returned, and then  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-conversion-to-rgbaConversion to RGBA2 is applied based on the buffer view s format.Values from anywhere within the memory range(s) bound to the buffer (possibly including bytes of memory past the end of the buffer, up to the end of the bound range).Zero values, or (0,0,0,x) vectors for vector reads where x is a valid value represented in the type of the vector components and may be any of:h0, 1, or the maximum representable positive integer value, for signed or unsigned integer components)0.0 or 1.0, for floating-point componentsOut-of-bounds writes mayH modify values within the memory range(s) bound to the buffer, but must not modify any other memory.If  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2& is enabled, out of bounds writes must not modify any memory.Out-of-bounds atomics mayH modify values within the memory range(s) bound to the buffer, but mustA not modify any other memory, and return an undefined value.If  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2' is enabled, out of bounds atomics must: not modify any memory, and return an undefined value.If  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2 is disabled, vertex input attributes are considered out of bounds if the offset of the attribute in the bound vertex buffer range plus the size of the attribute is greater than either:vertexBufferRangeSize, if  bindingStride == 0; or(vertexBufferRangeSize - (vertexBufferRangeSize %  bindingStride))where vertexBufferRangeSizeM is the byte size of the memory range bound to the vertex buffer binding and  bindingStride is the byte stride of the corresponding vertex input binding. Further, if any vertex input attribute using a specific vertex input binding is out of bounds, then all vertex input attributes using that vertex input binding for that vertex shader invocation are considered out of bounds.bIf a vertex input attribute is out of bounds, it will be assigned one of the following values:|Values from anywhere within the memory range(s) bound to the buffer, converted according to the format of the attribute.KZero values, format converted according to the format of the attribute.6Zero values, or (0,0,0,x) vectors, as described above.If  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2robustBufferAccess2 is enabled, vertex input attributes are considered out of bounds if the offset of the attribute in the bound vertex buffer range plus the size of the attribute is greater than the byte size of the memory range bound to the vertex buffer binding.6If a vertex input attribute is out of bounds, the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extractionraw dataJ extracted are zero values, and missing G, B, or A components are  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extractionfilled with (0,0,1).If robustBufferAccess is not enabled, applications must) not perform out of bounds accesses.$vulkanfullDrawIndexUint32_ 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.$vulkanimageCubeArray' specifies whether image views with a ( of ( can( be created, and that the corresponding SampledCubeArray and ImageCubeArray SPIR-V capabilities can be used in shader code.$vulkanindependentBlend specifies whether the 1^ settings are controlled independently per-attachment. If this feature is not enabled, the 1% settings for all color attachments must( be identical. Otherwise, a different 1 can- be provided for each bound color attachment.$vulkangeometryShaderY specifies whether geometry shaders are supported. If this feature is not enabled, the " and  enum values must: not be used. This also specifies whether shader modules can declare the Geometry capability.$vulkantessellationShadert specifies whether tessellation control and evaluation shaders are supported. If this feature is not enabled, the ", ", , , and  enum values must: not be used. This also specifies whether shader modules can declare the  Tessellation capability.$vulkansampleRateShading 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 1 structure must be set to  and the minSampleShading@ member is ignored. This also specifies whether shader modules can declare the SampleRateShading capability.$vulkan dualSrcBlendp specifies whether blend operations which take two sources are supported. If this feature is not enabled, the 2, 2, 2, and 2 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.$vulkanlogicOpX specifies whether logic operations are supported. If this feature is not enabled, the  logicOpEnable member of the 1 structure must be set to  , and the logicOp member is ignored.$vulkanmultiDrawIndirect] specifies whether multiple draw indirect is supported. If this feature is not enabled, the  drawCount parameter to the   and   commands must be 0 or 1. The maxDrawIndirectCount member of the 7 structure must3 also be 1 if this feature is not supported. See  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxDrawIndirectCountmaxDrawIndirectCount.$vulkandrawIndirectFirstInstance4 specifies whether indirect draw calls support the  firstInstance1 parameter. If this feature is not enabled, the  firstInstance member of all /3 and /4' structures that are provided to the   and   commands must be 0.$vulkan depthClampU specifies whether depth clamping is supported. If this feature is not enabled, the depthClampEnable member of the 1  structure must be set to . Otherwise, setting depthClampEnable to  will enable depth clamping.$vulkandepthBiasClampZ specifies whether depth bias clamping is supported. If this feature is not enabled, the depthBiasClamp member of the 1  structure must be set to 0.0 unless the +$ dynamic state is enabled, and the depthBiasClamp parameter to   must be set to 0.0.$vulkanfillModeNonSolidg specifies whether point and wireframe fill modes are supported. If this feature is not enabled, the " and " enum values must not be used.$vulkan depthBoundsZ specifies whether depth bounds tests are supported. If this feature is not enabled, the depthBoundsTestEnable member of the 1 structure must be set to . When depthBoundsTestEnable is set to , the minDepthBounds and maxDepthBounds members of the 1 structure are ignored.$vulkan wideLinesg specifies whether lines with width other than 1.0 are supported. If this feature is not enabled, the  lineWidth member of the 1  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 7 structure, respectively.$vulkan largePoints specifies whether points with size greater than 1.0 are supported. If this feature is not enabled, only a point size of 1.0 written by a shader is supported. The range and granularity of supported point sizes are indicated by the pointSizeRange and pointSizeGranularity members of the 7 structure, respectively.$vulkan alphaToOne specifies whether the implementation is able to replace the alpha value of the color fragment output from the fragment shader with the maximum representable alpha value for fixed-point colors or 1.0 for floating-point colors. If this feature is not enabled, then the alphaToOneEnable member of the 1 structure must be set to . Otherwise setting alphaToOneEnable to $ will enable alpha-to-one behavior.$vulkan multiViewportX specifies whether more than one viewport is supported. If this feature is not enabled:The  viewportCount and  scissorCount members of the 1 structure must be set to 1.The  firstViewport and  viewportCount parameters to the   command must! be set to 0 and 1, respectively.The  firstScissor and  scissorCount parameters to the   command must! be set to 0 and 1, respectively.The exclusiveScissorCount member of the  structure must be set to 0 or 1.The firstExclusiveScissor and exclusiveScissorCount parameters to the  command must! be set to 0 and 1, respectively.$vulkansamplerAnisotropy\ specifies whether anisotropic filtering is supported. If this feature is not enabled, the anisotropyEnable member of the 73 structure must be .$vulkantextureCompressionETC2} specifies whether all of the ETC2 and EAC compressed texture formats are supported. If this feature is enabled, then the n, n and n features must be supported in optimalTilingFeatures for the following formats:           GTo query for additional properties, or if the feature is not enabled, %H and %I canL be used to check for supported properties of individual formats as normal.$vulkantextureCompressionASTC_LDRy specifies whether all of the ASTC LDR compressed texture formats are supported. If this feature is enabled, then the n, n and n features must be supported in optimalTilingFeatures for the following formats:                            GTo query for additional properties, or if the feature is not enabled, %H and %I canL be used to check for supported properties of individual formats as normal.$vulkantextureCompressionBCr specifies whether all of the BC compressed texture formats are supported. If this feature is enabled, then the n, n and n features must be supported in optimalTilingFeatures for the following formats:                GTo query for additional properties, or if the feature is not enabled, %H and %I canL be used to check for supported properties of individual formats as normal.$vulkanocclusionQueryPrecisex specifies whether occlusion queries returning actual sample counts are supported. Occlusion queries are created in a )z by specifying the  queryType of * in the 4 structure which is passed to 44. If this feature is enabled, queries of this type can enable  in the flags parameter to  7. If this feature is not supported, the implementation supports only boolean occlusion queries. When any samples are passed, boolean queries will return a non-zero result value, otherwise a result value of zero is returned. When this feature is enabled and M is set, occlusion queries will report the actual number of samples passed.$vulkanpipelineStatisticsQueryt specifies whether the pipeline statistics queries are supported. If this feature is not enabled, queries of type + cannot be created, and none of the Xi bits can be set in the pipelineStatistics member of the 4 structure.$vulkanvertexPipelineStoresAndAtomics 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).$vulkanfragmentStoresAndAtomics 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).$vulkan&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.$vulkanshaderImageGatherExtended 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.$vulkan!shaderStorageImageExtendedFormats{ specifies whether all the storage image extended formats  below are supported; if this feature is supported, then the n must be supported in optimalTilingFeatures for the following formats:       <  C   ;  B  7  >   8  ?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, %H and %I 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.$vulkanshaderStorageImageMultisample 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 !n.. This also specifies whether shader modules can declare the StorageImageMultisample capability.$vulkan#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$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.$vulkan'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&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.$vulkan'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&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.$vulkanshaderClipDistance 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.$vulkanshaderCullDistance 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.$vulkan 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.$vulkan shaderInt64 specifies whether 64-bit integers (signed and unsigned) are supported in shader code. If this feature is not enabled, 64-bit integer types mustI not be used in shader code. This also specifies whether shader modules can declare the Int64r capability. Declaring and using 64-bit integers is enabled for all storage classes that SPIR-V allows with the Int64 capability.%vulkan shaderInt16 specifies whether 16-bit integers (signed and unsigned) are supported in shader code. If this feature is not enabled, 16-bit integer types mustI not be used in shader code. This also specifies whether shader modules can declare the Int16e capability. However, this only enables a subset of the storage classes that SPIR-V allows for the Int16@ SPIR-V capability: Declaring and using 16-bit integers in the Private,  Workgroup, and Function\ storage classes is enabled, while declaring them in the interface storage classes (e.g., UniformConstant, Uniform,  StorageBuffer, Input, Output, and  PushConstant) is not enabled.%vulkanshaderResourceResidency specifies whether image operations that return resource residency information are supported in shader code. If this feature is not enabled, the  OpImageSparse* instructions mustI not be used in shader code. This also specifies whether shader modules can declare the SparseResidency7 capability. The feature requires at least one of the sparseResidency* features to be supported.%vulkanshaderResourceMinLod specifies whether image operations specifying the minimum resource LOD are supported in shader code. If this feature is not enabled, the MinLod image operand mustI not be used in shader code. This also specifies whether shader modules can declare the MinLod capability.%vulkan sparseBinding# specifies whether resource memory can{ be managed at opaque sparse block level instead of at the object level. If this feature is not enabled, resource memory must1 be bound only on a per-object basis using the . and .- commands. In this case, buffers and images must not be created with ~9 and  set in the flags member of the  and *6 structures, respectively. Otherwise resource memory can be managed as described in  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseresourcefeaturesSparse Resource Features.%vulkansparseResidencyBuffer specifies whether the device canN access partially resident buffers. If this feature is not enabled, buffers must not be created with ~ set in the flags member of the  structure.%vulkansparseResidencyImage2D specifies whether the device cano access partially resident 2D images with 1 sample per pixel. If this feature is not enabled, images with an  imageType of  % and samples set to !n must not be created with  set in the flags member of the * structure.%vulkansparseResidencyImage3D specifies whether the device canW access partially resident 3D images. If this feature is not enabled, images with an  imageType of  $ must not be created with  set in the flags member of the * structure.%vulkansparseResidency2Samples' specifies whether the physical device canp access partially resident 2D images with 2 samples per pixel. If this feature is not enabled, images with an  imageType of  % and samples set to ! must not be created with  set in the flags member of the * structure.%vulkansparseResidency4Samples' specifies whether the physical device canp access partially resident 2D images with 4 samples per pixel. If this feature is not enabled, images with an  imageType of  % and samples set to ! must not be created with  set in the flags member of the * structure.% vulkansparseResidency8Samples' specifies whether the physical device canp access partially resident 2D images with 8 samples per pixel. If this feature is not enabled, images with an  imageType of  % and samples set to ! must not be created with  set in the flags member of the * structure.% vulkansparseResidency16Samples' specifies whether the physical device canq access partially resident 2D images with 16 samples per pixel. If this feature is not enabled, images with an  imageType of  % and samples set to ! must not be created with  set in the flags member of the * structure.% vulkansparseResidencyAliased' 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 * structures, respectively.% vulkanvariableMultisampleRateS specifies whether all pipelines that will be bound to a command buffer during a  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments!subpass which uses no attachments must have the same value for 1::rasterizationSamples . If set to m, the implementation supports variable multisample rates in a subpass which uses no attachments. If set to ., then all pipelines bound in such a subpass musth have the same multisample rate. This has no effect in situations where a subpass uses any attachments.% vulkaninheritedQueries. specifies whether a secondary command buffer may& be executed while a query is active.%vulkanlinearTilingFeatures is a bitmask of n9 specifying features supported by images created with a tiling parameter of  /.%vulkanoptimalTilingFeatures is a bitmask of n9 specifying features supported by images created with a tiling parameter of  0.%vulkanbufferFeatures is a bitmask of n+ specifying features supported by buffers.%vulkansize/ is the total memory size in bytes in the heap.%vulkanflags is a bitmask of g* specifying attribute flags for the heap.%vulkan propertyFlags is a bitmask of f% of properties for this memory type.%vulkan heapIndexC describes which memory heap this memory type corresponds to, and must be less than memoryHeapCount from the 6 structure.%vulkanmemoryTypeCount( is the number of valid elements in the  memoryTypes array.% vulkan memoryTypes is an array of  9 structures describing the  memory types that canA be used to access memory allocated from the heaps specified by  memoryHeaps.%!vulkanmemoryHeapCount( is the number of valid elements in the  memoryHeaps array.%"vulkan memoryHeaps is an array of  : structures describing the  memory heaps from which memory can be allocated.%$vulkan queueFlags is a bitmask of V= 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  x. 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 NULL1 or a pointer to an extension-specific 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.%0vulkanapplicationVersionf is an unsigned integer variable containing the developer-supplied version number of the application.%1vulkan 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.%2vulkan engineVersion is an unsigned integer variable containing the developer-supplied version number of the engine used to create the application.%3vulkan 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.%5vulkan 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.%6vulkan driverVersion/ is the vendor-specified version of the driver.%7vulkanvendorID is a unique identifier for the vendor% (see below) of the physical device.%8vulkandeviceIDY is a unique identifier for the physical device among devices available from the vendor.%9vulkan deviceType is a  specifying the type of device.%:vulkan deviceName is an array of  charL containing a null-terminated UTF-8 string which is the name of the device.%;vulkanpipelineCacheUUID is an array of  uint8_tE values representing a universally unique identifier for the device.%<vulkanlimits is the 7K structure specifying device-specific limits of the physical device. See  Thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limitsLimits for details.%=vulkansparseProperties is the 4V structure specifying various sparse related properties of the physical device. See  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-physicalpropsSparse Properties for details.%>vulkan/vkCreateInstance - Create a new Vulkan instance Parameters pCreateInfo is a pointer to a ;5 structure controlling creation of the instance. pAllocator: 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. pInstance points a s9 handle in which the resulting instance is returned. Description%>4 verifies that the requested layers exist. If not, %> will return F. 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 EH. After verifying and enabling the instance layers and extensions the s object is created and returned to the application. If a requested extension is only supported by a layer, both the layer and the extension need to be specified at %>" time for the creation to succeed. Valid Usage All  ~https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-extensions-extensiondependenciesrequired extensions% for each extension in the ;::ppEnabledExtensionNames list must" also be present in that listValid Usage (Implicit) pCreateInfo must$ be a valid pointer to a valid ; structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pInstance must be a valid pointer to a s handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJIFECSee Also, s, ;%?vulkan=A convenience wrapper to make a compatible pair of calls to %> and %@To ensure that %@ is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument.%@vulkan1vkDestroyInstance - Destroy an instance of Vulkan Parametersinstance* is the handle of the instance to destroy. pAllocator: 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. Valid Usage All child objects created using instance must. have been destroyed prior to destroying instanceIf  were provided when instance1 was created, a compatible set of callbacks must be provided here If no  were provided when instance was created,  pAllocator must be NULLValid Usage (Implicit)If instance is not NULL, instance must be a valid s handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureHost SynchronizationHost access to instance must be externally synchronizedHost access to all q objects enumerated from instance must be externally synchronizedSee Also, s%Avulkan]vkEnumeratePhysicalDevices - Enumerates the physical devices accessible to a Vulkan instance Parametersinstance? is a handle to a Vulkan instance previously created with %>.pPhysicalDeviceCountt is a pointer to an integer related to the number of physical devices available or queried, as described below.pPhysicalDevices is either NULL" or a pointer to an array of q handles. 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, L will be returned instead of QI, to indicate that not all the available physical devices were returned.Valid Usage (Implicit)instance must be a valid s handlepPhysicalDeviceCount must be a valid pointer to a uint32_t valueIf the value referenced by pPhysicalDeviceCount is not 0 , and pPhysicalDevices is not NULL, pPhysicalDevices must( be a valid pointer to an array of pPhysicalDeviceCount q handles Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJISee Alsos, q%Bvulkan=vkGetDeviceProcAddr - Return a function pointer for a command Parameters2The table below defines the various use cases for %B* and expected return value for each case. Description*The returned function pointer is of type d, and mustU be cast to the type of the command being queried before use. The function pointer mustJ only be called with a dispatchable object (the first parameter) that is device or a child of device. device  pName  return value  NULL  *1  undefined  invalid device  *1  undefined  device  NULL  undefined - device - core device-level Vulkan command / fp2 D device D enabled extension device-level commands G fp2 - any other case, not covered above  NULL& / %B behavior 1f"*" means any representable value for the parameter (including valid values, invalid values, and NULL).2The returned function pointer mustN only be called with a dispatchable object (the first parameter) that is device or a child of device e.g. z, )r , or )t.Valid Usage (Implicit)See Alsod, z%Cvulkan?vkGetInstanceProcAddr - Return a function pointer for a command ParametersinstanceL is the instance that the function pointer will be compatible with, or NULL1 for commands not dependent on any instance.pName& is the name of the command to obtain. Description%C 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 %CG and expected return value ( fp  is function pointer ) for each case.*The returned function pointer is of type d, and must> be cast to the type of the command being queried before use. instance  pNameJ  return value  *1  NULLK  undefined  invalid non-NULL instance  *1 / undefined  NULL     fp  NULL  &  fp  NULL  ,  fp  NULL  %>A  fp  instance R core Vulkan command  fp2  instance ) enabled instance extension commands for instance  fp2  instance * available device extension3 commands for instance  fp2 - any other case, not covered above  NULL / %C 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. s, q, z, )r , or )t.3jAn available device extension  is a device extension supported by any physical device enumerated by instance.Valid Usage (Implicit)If instance is not NULL, instance must be a valid s handlepName must" be a null-terminated UTF-8 stringSee Alsod, s%DvulkanGvkGetPhysicalDeviceProperties - Returns properties of a physical device ParametersphysicalDeviceL is the handle to the physical device whose properties will be queried. pProperties is a pointer to a 51 structure in which properties are returned.Valid Usage (Implicit)See Alsoq, 5%EvulkanmvkGetPhysicalDeviceQueueFamilyProperties - Reports properties of the queues of the specified physical device ParametersphysicalDeviceL is the handle to the physical device whose properties will be queried.pQueueFamilyPropertyCountw is a pointer to an integer related to the number of queue families available or queried, as described below.pQueueFamilyProperties is either NULL" or a pointer to an array of 3 structures. DescriptionIf pQueueFamilyProperties is NULL>, then the number of queue families available is returned in pQueueFamilyPropertyCount. Implementations must0 support at least one queue family. Otherwise, pQueueFamilyPropertyCount mustG point to a variable set by the user to the number of elements in the pQueueFamilyPropertiesf array, and on return the variable is overwritten with the number of structures actually written to pQueueFamilyProperties. If pQueueFamilyPropertyCount? is less than the number of queue families available, at most pQueueFamilyPropertyCount structures will be written.Valid Usage (Implicit)physicalDevice must be a valid q handlepQueueFamilyPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pQueueFamilyPropertyCount is not 0 , and pQueueFamilyProperties is not NULL, pQueueFamilyProperties must# be a valid pointer to an array of pQueueFamilyPropertyCount 3 structuresSee Alsoq, 3%FvulkancvkGetPhysicalDeviceMemoryProperties - Reports memory information for the specified physical device ParametersphysicalDevice& is the handle to the device to query.pMemoryProperties is a pointer to a 65 structure in which the properties are returned.Valid Usage (Implicit)See Alsoq, 6%GvulkanGvkGetPhysicalDeviceFeatures - Reports capabilities of a physical device ParametersphysicalDeviceH is the physical device from which to query the supported features. pFeatures is a pointer to a 8f structure in which the physical device features are returned. For each feature, a value of P specifies that the feature is supported on this physical device, and 2 specifies that the feature is not supported.Valid Usage (Implicit)See Alsoq, 8%HvulkanRvkGetPhysicalDeviceFormatProperties - Lists physical device s format capabilities ParametersphysicalDeviceG is the physical device from which to query the format properties.format, is the format whose properties are queried.pFormatProperties is a pointer to a =8 structure in which physical device properties for format are returned.Valid Usage (Implicit)See AlsoG, =, q%Ivulkan]vkGetPhysicalDeviceImageFormatProperties - Lists physical device s image format capabilities ParametersphysicalDeviceH is the physical device from which to query the image capabilities.format is a G? value specifying the image format, corresponding to *::format.type is a L= value specifying the image type, corresponding to *:: imageType.tiling is a K? value specifying the image tiling, corresponding to *::tiling.usage is a bitmask of NH specifying the intended usage of the image, corresponding to *::usage.flags is a bitmask of IK specifying additional parameters of the image, corresponding to *::flags.pImageFormatProperties is a pointer to a <3 structure in which capabilities are returned. DescriptionThe format, type, tiling, usage, and flagsA parameters correspond to parameters that would be consumed by * (as members of *).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 %I returns A.9The limitations on an image format that are reported by %I" have the following property: if usage1 and usage2 of type M are such that the bits set in usage1" are a subset of the bits set in usage2, and flags1 and flags2 of type H 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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJASee AlsoG, H, <, K, L, M, q3%#%$%%%&%'4$$$$$$5%4%5%6%7%8%9%:%;%<%=6%%% %!%"7$e$j$f$g$h$i$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$8$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%% % % % % 9%%%:%%%;%(%*%)%+%,%-<%%%%%%=%%%%>%.%3%/%0%1%2%>%?%@%A%B%C%D%E%F%G%H%I%>%?%@%A%B%C%D%E%F%G%H%I5%4%5%6%7%8%9%:%;%<%=>%.%3%/%0%1%2;%(%*%)%+%,%-3%#%$%%%&%'6%%% %!%"9%%%:%%%=%%%%<%%%%%%8$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%% % % % % 4$$$$$$7$e$j$f$g$h$i$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$None'"#%&'-./189;=>?FHIMSUVX_dghklmqavulkanWVkExternalMemoryHandleTypeFlagBitsNV - Bitmask specifying external memory handle typesSee AlsovulkanZVkExternalImageFormatPropertiesNV - Structure specifying external image format propertiesSee Also%, , <, %%vulkanPVkExternalMemoryFeatureFlagBitsNV - Bitmask specifying external memory featuresSee Also, %, %%vulkanimageFormatProperties$ will be filled in as when calling  , but the values returned may7 vary depending on the external handle type requested.%vulkanexternalMemoryFeatures is a bitmask of %>, indicating properties of the external memory handle type (%::externalHandleType?) being queried, or 0 if the external memory handle type is 0.%vulkanexportFromImportedHandleTypes is a bitmask of ; containing a bit set for every external handle type that mayL be used to create memory from which the handles of the type specified in %::externalHandleType can; be exported, or 0 if the external memory handle type is 0.%vulkancompatibleHandleTypes is a bitmask of ; containing a bit set for every external handle type that mayA be specified simultaneously with the handle type specified by %::externalHandleType when calling -1, or 0 if the external memory handle type is 0. compatibleHandleTypes will always contain %::externalHandleType%vulkan%U specifies that the implementation supports importing handles of the specified type.%vulkan%U specifies that the implementation supports exporting handles of the specified type.%vulkan%7 specifies that external memory of the specified type mustI be created as a dedicated allocation when used in the manner specified.%vulkan%+ specifies a handle to memory returned by  IDXGIResource::GetSharedHandle().%vulkan%4 specifies a valid NT handle to memory returned by "IDXGIResource1::CreateSharedHandle3, or a handle duplicated from such a handle using DuplicateHandle().%vulkan%, specifies a handle to memory returned by .%vulkan%, specifies a handle to memory returned by ., or one duplicated from such a handle using DuplicateHandle().%vulkanvkGetPhysicalDeviceExternalImageFormatPropertiesNV - determine image capabilities compatible with external memory handle types ParametersphysicalDeviceG is the physical device from which to query the image capabilitiesformat, is the image format, corresponding to *::format.type* is the image type, corresponding to *:: imageType.tiling, is the image tiling, corresponding to *::tiling.usage; is the intended usage of the image, corresponding to *::usage.flagsX is a bitmask describing additional parameters of the image, corresponding to *::flags.externalHandleType% is either one of the bits from , or 0.pExternalImageFormatProperties is a pointer to a 3 structure in which capabilities are returned. DescriptionIf externalHandleType is 0, 5pExternalImageFormatProperties->imageFormatProperties, will return the same values as a call to  , and the other members of pExternalImageFormatPropertiesA will all be 0. Otherwise, they are filled in as described for . Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJASee Also, , G, H, K, L, M, q%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%None'"#%&'-./189;=>?FHIMSUVX_dghklmqavulkanZVkImportMemoryWin32HandleInfoNV - import Win32 memory created on the same physical device DescriptionIf  handleType is 01, this structure is ignored by consumers of the -n structure it is chained from.Valid Usage (Implicit)See Also, vulkaniVkExportMemoryWin32HandleInfoNV - specify security attributes and access rights for Win32 memory handles Description(If this structure is not present, or if  pAttributes is set to NULL(, default security descriptor values will be used, and child processes created by the application will not inherit the handle, as described in the MSDN documentation for Synchronization Object Security and Access Rights 1. Further, if the structure is not present, the access rights will beDXGI_SHARED_RESOURCE_READ | DXGI_SHARED_RESOURCE_WRITE 1 ehttps://docs.microsoft.com/en-us/windows/win32/sync/synchronization-object-security-and-access-rightsValid Usage (Implicit)sType must be #If  pAttributes is not NULL,  pAttributes must) be a valid pointer to a valid 4 valueSee Also%vulkan pAttributes is a pointer to a Windows 49 structure specifying security attributes of the handle.%vulkandwAccess is a ;) specifying access rights of the handle.%vulkan handleType must be a valid combination of  values%vulkanhandle must8 be a valid handle to memory, obtained as specified by  handleType%vulkanKvkGetMemoryWin32HandleNV - retrieve Win32 handle to a device memory object Parametersdevice, is the logical device that owns the memory.memory is the { object. handleType is a bitmask of F containing a single bit specifying the type of handle requested.handle is a pointer to a Windows .& in which the handle is returned. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureBKSee Alsoz, {, %%%%%%%%%%%.4;%%%%%%%%%%%%%%%%%%%%%%%%%.;4None'"#%&'-./189;=>?FHIMSUVX_dghklmqavulkan[VkExternalMemoryImageCreateInfoNV - Specify that an image may be backed by external memoryValid Usage (Implicit)See Also, vulkanPVkExportMemoryAllocateInfoNV - Specify memory handle types that may be exportedValid Usage (Implicit)See Also, %vulkan handleTypes must be a valid combination of  values%vulkan handleTypes must be a valid combination of  values%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%ONone'"#%&'-./189;=>?FHIMSUVX_dghklmqbq(vulkanUVkSparseImageFormatProperties2 - Structure specifying sparse image format propertiesValid Usage (Implicit)See Also, , %, ivulkanPVkQueueFamilyProperties2 - Structure providing information about a queue familyValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueSee Also3, , %, gvulkanYVkPhysicalDeviceSparseImageFormatInfo2 - Structure specifying sparse image format inputsValid Usage (Implicit)See AlsoG, K, L, M, [, , %, ivulkanNVkPhysicalDeviceProperties2 - Structure specifying physical device properties DescriptionThe pNext` chain of this structure is used to extend the structure with properties defined by extensions.Valid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , , , +, , , , ,, , 8, , , , , , , , , , \, , , i, |, , , , , l, k,  , , , , , >, ,  ,  , or The sType value of each struct in the pNext chain must be uniqueSee Also5, , %, cvulkan[VkPhysicalDeviceMemoryProperties2 - Structure specifying physical device memory propertiesValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueSee Also6, , %, `vulkanRVkPhysicalDeviceImageFormatInfo2 - Structure specifying image creation parameters DescriptionThe members of " correspond to the arguments to  , with sType and pNext added for extensibility. Valid Usagetiling must be  if and only if the pNext chain includes If tiling is  and flags contains , then the pNext chain must include a . structure with non-zero viewFormatCountValid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of ., , , , or The sType value of each struct in the pNext chain must be uniqueformat must be a valid G valuetype must be a valid L valuetiling must be a valid K valueusage must be a valid combination of  valuesusage must not be 0flags must be a valid combination of 2 valuesSee AlsoG, H, K, L, M, , %, ]vulkanvVkPhysicalDeviceFeatures2 - Structure describing the fine-grained features that can be supported by an implementationMembersThe  structure is defined as: DescriptionThe pNextn chain of this structure is used to extend the structure with features defined by extensions. This structure can be used in % or can be included in the pNext chain of a   \ structure, in which case it controls which features are enabled in the device in lieu of pEnabledFeatures.Valid Usage (Implicit)See Also8, , %, \vulkanKVkImageFormatProperties2 - Structure specifying an image format properties Description%If the combination of parameters to %4 is not supported by the implementation for use in *, then all members of imageFormatProperties will be filled with zero.NoteFilling imageFormatProperties with zero for unsupported formats is an exception to the usual rule that output structures have undefined contents on error. This exception was unintentional, but is preserved for backwards compatibility. This exeption only applies to imageFormatProperties, not sType, pNext", or any structures chained from pNext.Valid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , , , , or The sType value of each struct in the pNext chain must be uniqueSee Also<, , %, ]vulkanBVkFormatProperties2 - Structure specifying image format propertiesValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueSee Also=, , %, %vulkanformat must be a valid G value%vulkantype must be a valid L value%vulkansamples must be a valid [ value%vulkanusage must not be 0%vulkantiling must be a valid K value%vulkan properties is a ; structure which is populated with the same values as in :.%vulkanpNext is NULL1 or a pointer to an extension-specific structure.%vulkanmemoryProperties is a 6; structure which is populated with the same values as in  ^.%vulkanpNext is NULL1 or a pointer to an extension-specific structure.%vulkanqueueFamilyProperties is a 3; structure which is populated with the same values as in  e.%vulkanpNext is NULL7 or a pointer to an extension-specific structure. The pNext chain of 5 is used to provide additional image parameters to %.%vulkanformat is a G7 value indicating the image format, corresponding to *::format.%vulkantype is a L5 value indicating the image type, corresponding to *:: imageType.%vulkantiling is a K7 value indicating the image tiling, corresponding to *::tiling.%vulkanusage is a bitmask of @ indicating the intended usage of the image, corresponding to *::usage.%vulkanflags is a bitmask of 2C indicating additional parameters of the image, corresponding to *::flags.%vulkanpNext is NULL7 or a pointer to an extension-specific structure. The pNext chain of U is used to allow the specification of additional capabilities to be returned from %.%vulkanimageFormatProperties is a </ structure in which capabilities are returned.%vulkanpNext is NULL1 or a pointer to an extension-specific structure.%vulkanformatProperties is a =B structure describing features supported by the requested format.%vulkanpNext is NULL1 or a pointer to an extension-specific structure.%vulkan properties is a 5 structure describing properties of the physical device. This structure is written with the same values as if it were written by  .%vulkanpNext is NULL1 or a pointer to an extension-specific structure.%vulkanfeatures is a 8G structure describing the fine-grained features of the Vulkan 1.0 API.%vulkanHvkGetPhysicalDeviceFeatures2 - Reports capabilities of a physical device ParametersphysicalDeviceH is the physical device from which to query the supported features. pFeatures is a pointer to a C structure in which the physical device features are returned. DescriptionEach structure in  pFeatures and its pNextA chain contains members corresponding to fine-grained features. %V writes each member to a boolean value indicating whether that feature is supported.Valid Usage (Implicit)See Alsoq, %vulkanHvkGetPhysicalDeviceProperties2 - Returns properties of a physical device ParametersphysicalDeviceL is the handle to the physical device whose properties will be queried. pProperties is a pointer to a 1 structure in which properties are returned. DescriptionEach structure in  pProperties and its pNextY chain contain members corresponding to properties or implementation-dependent limits. %O writes each member to a value indicating the value of that property or limit.Valid Usage (Implicit)See Alsoq, %vulkanSvkGetPhysicalDeviceFormatProperties2 - Lists physical device s format capabilities ParametersphysicalDeviceG is the physical device from which to query the format properties.format, is the format whose properties are queried.pFormatProperties is a pointer to a 8 structure in which physical device properties for format are returned. Description% behaves similarly to  8, with the ability to return extended information in a pNext chain of output structures.Valid Usage (Implicit)See AlsoG, , q%vulkan^vkGetPhysicalDeviceImageFormatProperties2 - Lists physical device s image format capabilities ParametersphysicalDeviceH is the physical device from which to query the image capabilities.pImageFormatInfo is a pointer to a I structure describing the parameters that would be consumed by *.pImageFormatProperties is a pointer to a 3 structure in which capabilities are returned. Description% behaves similarly to  8, with the ability to return extended information in a pNext chain of output structures. Valid UsageIf the pNext chain of pImageFormatProperties includes a  structure, the pNext chain of pImageFormatInfo must include a  structure with  handleType set to <gValid Usage (Implicit)physicalDevice must be a valid q handlepImageFormatInfo must$ be a valid pointer to a valid  structurepImageFormatProperties must be a valid pointer to a  structure Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJASee Also, q, %vulkannvkGetPhysicalDeviceQueueFamilyProperties2 - Reports properties of the queues of the specified physical device ParametersphysicalDeviceL is the handle to the physical device whose properties will be queried.pQueueFamilyPropertyCountt is a pointer to an integer related to the number of queue families available or queried, as described in  e.pQueueFamilyProperties is either NULL" or a pointer to an array of  structures. Description% behaves similarly to  e8, with the ability to return extended information in a pNext chain of output structures.Valid Usage (Implicit)physicalDevice must be a valid q handlepQueueFamilyPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pQueueFamilyPropertyCount is not 0 , and pQueueFamilyProperties is not NULL, pQueueFamilyProperties must# be a valid pointer to an array of pQueueFamilyPropertyCount  structuresSee Alsoq, %vulkandvkGetPhysicalDeviceMemoryProperties2 - Reports memory information for the specified physical device ParametersphysicalDevice& is the handle to the device to query.pMemoryProperties is a pointer to a 5 structure in which the properties are returned. Description% behaves similarly to  ^8, with the ability to return extended information in a pNext chain of output structures.Valid Usage (Implicit)See Alsoq, %vulkanrvkGetPhysicalDeviceSparseImageFormatProperties2 - Retrieve properties of an image format applied to sparse images ParametersphysicalDeviceO is the physical device from which to query the sparse image capabilities. pFormatInfo is a pointer to a ; structure containing input parameters to the command.pPropertyCount| is a pointer to an integer related to the number of sparse format properties available or queried, as described below. pProperties is either NULL" or a pointer to an array of  structures. Description% behaves identically to :Z, with the ability to return extended information by adding extension structures to the pNext chain of its  pProperties parameter.Valid Usage (Implicit)physicalDevice must be a valid q handle pFormatInfo must$ be a valid pointer to a valid  structurepPropertyCount must be a valid pointer to a uint32_t valueIf the value referenced by pPropertyCount is not 0 , and  pProperties is not NULL,  pProperties must( be a valid pointer to an array of pPropertyCount  structuresSee Alsoq, , %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      None'"#%&'-./189;=>?FHIMSUVX_dghklmqbɧ&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&8&7&6&5&4&3&2&1&0&9&:&;&<&=&>&?&-&,&+&*&)&(&'&&&%&$&/&#&. None'"#%&'-./189;=>?FHIMSUVX_dghklmqcv1vulkanZVkDeviceQueueCreateInfo - Structure specifying parameters of a newly created device queue Valid UsagequeueFamilyIndex must be less than pQueueFamilyPropertyCount returned by  e queueCount must be less than or equal to the  queueCount member of the  % structure, as returned by  e in the pQueueFamilyProperties[queueFamilyIndex]Each element of pQueuePriorities must be between 0.0 and 1.0 inclusive If the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-protectedMemoryprotected memory' feature is not enabled, the rw bit of flags must not be setValid Usage (Implicit)sType must be >pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of r valuespQueuePriorities must( be a valid pointer to an array of  queueCount float values queueCount must be greater than 0See Also2, , 2vulkanOVkDeviceCreateInfo - Structure specifying parameters of a newly created device Valid UsageThe queueFamilyIndex member of each element of pQueueCreateInfos must be unique within pQueueCreateInfos2, except that two members can share the same queueFamilyIndexR if one is a protected-capable queue and one is not a protected-capable queue If the pNext chain includes a  structure, then pEnabledFeatures must be NULLppEnabledExtensionNames must not contain VK_AMD_negative_viewport_heightppEnabledExtensionNames must not contain both VK_KHR_buffer_device_address and VK_EXT_buffer_device_addressIf the pNext chain includes a  structure, then it must not include a , , , ,  , or   structureIf the pNext chain includes a  structure, then it must not include a , 6, 7, , , 0, @, 9, 3, , ?, , or A structureIf ppEnabledExtensions contains "VK_KHR_draw_indirect_count" and the pNext chain includes a  structure, then ::drawIndirectCount must be If ppEnabledExtensions contains %"VK_KHR_sampler_mirror_clamp_to_edge" and the pNext chain includes a  structure, then ::samplerMirrorClampToEdge must be If ppEnabledExtensions contains "VK_EXT_descriptor_indexing" and the pNext chain includes a  structure, then ::descriptorIndexing must be If ppEnabledExtensions contains "VK_EXT_sampler_filter_minmax" and the pNext chain includes a  structure, then ::samplerFilterMinmax must be If ppEnabledExtensions contains $"VK_EXT_shader_viewport_index_layer" and the pNext chain includes a  structure, then ::shaderOutputViewportIndex and ::shaderOutputLayer must both be Valid Usage (Implicit)sType must be =Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , , \, , , , , , , M, , , , , , , , , , , , , , , , , 0, , , , , , , ], , g, , }, , ,  , , 3, 6, , ,  , 7,  , 3,  , 9, , , , , ?, , @, , , , , A, or The sType value of each struct in the pNext chain must be uniqueflags must be 0pQueueCreateInfos must( be a valid pointer to an array of queueCreateInfoCount valid 1 structuresIf enabledLayerCount is not 0, ppEnabledLayerNames must( be a valid pointer to an array of enabledLayerCount# null-terminated UTF-8 stringsIf enabledExtensionCount is not 0, ppEnabledExtensionNames must# be a valid pointer to an array of enabledExtensionCount# null-terminated UTF-8 stringsIf pEnabledFeatures is not NULL, pEnabledFeatures must) be a valid pointer to a valid 8 structurequeueCreateInfoCount must be greater than 0See Also, 1, 8, , &L&AvulkanpNext is NULL1 or a pointer to an extension-specific structure.&Bvulkanflags is reserved for future use.&CvulkanpQueueCreateInfos is a pointer to an array of 1r structures describing the queues that are requested to be created along with the logical device. Refer to the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-queue-creationQueue Creation$ section below for further details.&DvulkanppEnabledLayerNames! is deprecated and ignored. See  {https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-layers-devicelayerdeprecation.&EvulkanppEnabledExtensionNames 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.&FvulkanpEnabledFeatures is NULL or a pointer to a 8\ structure containing boolean indicators of all the features to be enabled. Refer to the  Vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#featuresFeatures section for further details.&HvulkanpNext is NULL1 or a pointer to an extension-specific structure.&Ivulkanflags/ is a bitmask indicating behavior of the queue.&JvulkanqueueFamilyIndex is an unsigned integer indicating the index of the queue family to create on this device. This index corresponds to the index of an element of the pQueueFamilyProperties array that was returned by  e.&KvulkanpQueuePriorities 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.&Lvulkan-vkCreateDevice - Create a new device instance ParametersphysicalDevice must@ be one of the device handles returned from a call to  H (see  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-physical-device-enumerationPhysical Device Enumeration). pCreateInfo is a pointer to a 2F structure containing information about how to create the device. pAllocator: 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.pDevice4 is a pointer to a handle in which the created z is returned. Description&L9 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, &L must return E.. If any requested feature is not supported, &L must return D. Support for extensions can2 be checked before creating a device by querying &E. Support for features can# similarly be checked by querying  Z.1After verifying and enabling the extensions the z object is created and returned to the application. If a requested extension is only supported by a layer, both the layer and the extension need to be specified at  # time for the creation to succeed.Multiple logical devices canD be created from the same physical device. Logical device creation mayd fail due to lack of device-specific resources (in addition to the other errors). If that occurs, &L will return B. Valid Usage All  ~https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-extensions-extensiondependenciesrequired extensions% for each extension in the 2::ppEnabledExtensionNames list must" also be present in that listValid Usage (Implicit)physicalDevice must be a valid q handle pCreateInfo must$ be a valid pointer to a valid 2 structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepDevice must be a valid pointer to a z handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJIEDBHSee Also, z, 2, q&Mvulkan=A convenience wrapper to make a compatible pair of calls to &L and &NTo ensure that &N is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument.&Nvulkan*vkDestroyDevice - Destroy a logical device Parametersdevice" is the logical device to destroy. pAllocator: 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. Description1To ensure that no work is active on the device, 5 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 z object. Therefore, to avoid resource leaks, it is critical that an application explicitly free all of these resources prior to calling &N. Valid UsageAll child objects created on device must. have been destroyed prior to destroying deviceIf  were provided when device1 was created, a compatible set of callbacks must be provided here If no  were provided when device was created,  pAllocator must be NULLValid Usage (Implicit)If device is not NULL, device must be a valid z handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureHost SynchronizationHost access to device must be externally synchronizedSee Also, z1&G&J&I&H&K2&@&B&A&D&E&C&F&L&M&N&L&M&N1&G&J&I&H&K2&@&B&A&D&E&C&F None'"#%&'-./189;=>?FHIMSUVX_dghklmqf+4(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 ,7O, 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 ,IO, in which case the source data for the descriptor writes is taken from the u structure in the pNext chain of (, as specified below.If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor; feature is enabled, the buffer, imageView, or bufferView can be .n. Loads from a null descriptor return zero values and stores and atomics to a null descriptor are discarded.If the  dstBinding has fewer than descriptorCount) array elements remaining starting from dstArrayElementF, then the remainder will be used to update the subsequent binding -  dstBinding7+1 starting at array element zero. If a binding has a descriptorCount of zero, it is skipped. This behavior applies recursively, with the update affecting consecutive bindings as needed to update all descriptorCount descriptors.NoteAThe same behavior applies to bindings with a descriptor type of ,7 where descriptorCount0 specifies the number of bytes to update while dstArrayElement? specifies the starting byte offset, thus in this case if the  dstBinding* has a smaller byte size than the sum of dstArrayElement and descriptorCountF, then the remainder will be used to update the subsequent binding -  dstBindingP+1 starting at offset zero. This falls out as a special case of the above rule. Valid Usage dstBinding must4 be less than or equal to the maximum value of binding of all * structures specified when dstSet$ s descriptor set layout was created% dstBinding must be a binding with a non-zero descriptorCount.All consecutive bindings updated via a single (% structure, except those with a descriptorCount of zero, must have identical descriptorType and  stageFlags.All consecutive bindings updated via a single (% structure, except those with a descriptorCount of zero, must+ all either use immutable samplers or must$ all not use immutable samplersdescriptorType must match the type of  dstBinding within dstSetdstSet must be a valid } handle The sum of dstArrayElement and descriptorCount mustl be less than or equal to the number of array elements in the descriptor set binding specified by  dstBindingE, and all applicable consecutive bindings, as described by phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutiveIf descriptorType is ,7, dstArrayElement must be an integer multiple of 4If descriptorType is ,7, descriptorCount must be an integer multiple of 4If descriptorType is ,, ,, ,, ,, or ,,  pImageInfo must( be a valid pointer to an array of descriptorCount valid . structuresIf descriptorType is , or ,, each element of pTexelBufferView must be either a valid  handle or .If descriptorType is , or , and the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor. feature is not enabled, each element of pTexelBufferView must not be .If descriptorType is ,, ,, ,, or ,,  pBufferInfo must( be a valid pointer to an array of descriptorCount valid / structuresIf descriptorType is , or , , and dstSetK was not allocated with a layout that included immutable samplers for  dstBinding with descriptorType, the sampler member of each element of  pImageInfo must be a valid h objectIf descriptorType is ,, ,, ,, or , , the  imageView member of each element of  pImageInfo must be either a valid t handle or .If descriptorType is ,, ,, ,, or , and the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor" feature is not enabled, the  imageView member of each element of  pImageInfo must not be .If descriptorType is ,7 , the pNext chain must include a  structure whose dataSize member equals descriptorCountIf descriptorType is ,I , the pNext chain must include a u structure whose accelerationStructureCount member equals descriptorCountIf descriptorType is ,, then the  imageView member of each  pImageInfo element must' have been created without a S5 structure in its pNext chainIf descriptorType is ,, and if any element of  pImageInfo has a  imageView* member that was created with a S5 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 S5 objectIf descriptorType is , , and dstSetG was allocated with a layout that included immutable samplers for  dstBinding , then the  imageView member of each element of  pImageInfoB which corresponds to an immutable sampler that enables  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversion must have been created with a S5 structure in its pNext chain with an identically defined S5, to the corresponding immutable samplerIf descriptorType is ,W, for each descriptor that will be accessed via load or store operations the  imageLayout+ member for corresponding elements of  pImageInfo must be If descriptorType is , or , , the offset member of each element of  pBufferInfo must be a multiple of  _::minUniformBufferOffsetAlignmentIf descriptorType is , or , , the offset member of each element of  pBufferInfo must be a multiple of  _::minStorageBufferOffsetAlignmentIf descriptorType is ,, ,, ,, or ,, and the buffer member of any element of  pBufferInfo= is the handle of a non-sparse buffer, then that buffer must< be bound completely and contiguously to a single )v objectIf descriptorType is , or , , the buffer member of each element of  pBufferInfo must" have been created with } setIf descriptorType is , or , , the buffer member of each element of  pBufferInfo must" have been created with } setIf descriptorType is , or , , the range member of each element of  pBufferInfo!, or the effective range if range is $, must$ be less than or equal to  _::maxUniformBufferRangeIf descriptorType is , or , , the range member of each element of  pBufferInfo!, or the effective range if range is $, must$ be less than or equal to  _::maxStorageBufferRangeIf descriptorType is , , the  that each element of pTexelBufferView was created from must have been created with }T setIf descriptorType is , , the  that each element of pTexelBufferView was created from must have been created with }U setIf descriptorType is , or , , the  imageView member of each element of  pImageInfo must1 have been created with the identity swizzleIf descriptorType is , or , , the  imageView member of each element of  pImageInfo must" have been created with  setIf descriptorType is , or , , the  imageLayout member of each element of  pImageInfo must, be a member of the list given in  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage Sampled Image or  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesamplerCombined Image Sampler , corresponding to its typeIf descriptorType is , , the  imageView member of each element of  pImageInfo must" have been created with  setIf descriptorType is , , the  imageView member of each element of  pImageInfo must" have been created with  set.All consecutive bindings updated via a single (% structure, except those with a descriptorCount of zero, must have identical @If descriptorType is , , then dstSet mustQ not have been allocated with a layout that included immutable samplers for  dstBindingValid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of u or The sType value of each struct in the pNext chain must be uniquedescriptorType must be a valid   valuedescriptorCount must be greater than 0Both of dstSet, and the elements of pTexelBufferView7 that are valid handles of non-ignored parameters mustD have been created, allocated, or retrieved from the same zSee Also, /, ., },  , , o, &)vulkankVkDescriptorSetLayoutCreateInfo - Structure specifying parameters of a newly created descriptor set layout Valid UsageThe *::binding% members of the elements of the  pBindings array must each have different valuesIf flags contains tH, then all elements of  pBindings must not have a descriptorType of , or ,If flags contains tH, then all elements of  pBindings must not have a descriptorType of ,7If flags contains tH9, then the total number of elements of all bindings must$ be less than or equal to ::maxPushDescriptorsIf any binding has the @8 bit set, flags must include t6If any binding has the @8! bit set, then all bindings must not have descriptorType of , or ,Valid Usage (Implicit)sType must be  pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of t valuesIf  bindingCount is not 0,  pBindings must( be a valid pointer to an array of  bindingCount valid * structuresSee Also*, , , &, Q, *vulkanTVkDescriptorSetLayoutBinding - Structure specifying a descriptor set layout binding DescriptionpImmutableSamplers- affects initialization of samplers. If descriptorType specifies a , or , type descriptor, then pImmutableSamplers can% be used to initialize a set of immutable samplersH. Immutable samplers are permanently bound into the set layout and must& not be changed; updating a ,N descriptor with immutable samplers is not allowed and updates to a , descriptor with immutable samplers does not modify the samplers (the image views are updated, but the sampler updates are ignored). If pImmutableSamplers is not NULL, then it points to an array of sampler handles that will be copied into the set layout and used for the corresponding binding. Only the sampler handles are copied; the sampler objects mustz not be destroyed before the final use of the set layout and any descriptor pools and sets created using it. If pImmutableSamplers is NULL>, then the sampler slots are dynamic and sampler handles must: be bound into descriptor sets using this layout. If descriptorType1 is not one of these descriptor types, then pImmutableSamplers is ignored.The above layout definition allows the descriptor bindings to be specified sparsely such that not all binding numbers between 0 and the maximum binding number need to be specified in the  pBindings0 array. Bindings that are not specified have a descriptorCount and  stageFlags of zero, and the value of descriptorType^ is undefined. However, all binding numbers between 0 and the maximum binding number in the ):: pBindings array mayg consume memory in the descriptor set layout even if not all descriptor bindings are used, though it should9 not consume additional memory from the descriptor pool.Note%The maximum binding number specified should3 be as compact as possible to avoid wasted memory. Valid UsageIf descriptorType is , or , , and descriptorCount is not 0 and pImmutableSamplers is not NULL, pImmutableSamplers must( be a valid pointer to an array of descriptorCount valid h handlesIf descriptorType is ,7 then descriptorCount must be a multiple of 4If descriptorType is ,7 then descriptorCount must be less than or equal to ::maxInlineUniformBlockSizeIf descriptorCount is not 0,  stageFlags must% be a valid combination of "s valuesIf descriptorType is , and descriptorCount is not 0, then  stageFlags must be 0 or "Valid Usage (Implicit)descriptorType must be a valid   valueSee Also),  , h, \+vulkanaVkDescriptorSetAllocateInfo - Structure specifying the allocation parameters for descriptor sets Valid UsageEach element of  pSetLayouts must! not have been created with tH setIf any element of  pSetLayouts was created with the t6 bit set, descriptorPool must! have been created with the u flag setValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniquedescriptorPool must be a valid ~ handle pSetLayouts must( be a valid pointer to an array of descriptorSetCount valid | handlesdescriptorSetCount must be greater than 0Both of descriptorPool, and the elements of  pSetLayouts mustD have been created, allocated, or retrieved from the same zSee Also~, |, , &,vulkan@VkDescriptorPoolSize - Structure specifying descriptor pool size DescriptionNoteWhen creating a descriptor pool that will contain descriptors for combined image samplers of multi-planar formats, an application needs to account for non-trivial descriptor consumption when choosing the descriptorCount value, as indicated by S4::#combinedImageSamplerDescriptorCount. Valid UsagedescriptorCount must be greater than 0If type is ,7 then descriptorCount must be a multiple of 4Valid Usage (Implicit)type must be a valid   valueSee Also-,  -vulkan`VkDescriptorPoolCreateInfo - Structure specifying parameters of a newly created descriptor pool Description If multiple , structures appear in the  pPoolSizesl array then the pool will be created with enough storage for the total number of descriptors of each type.3Fragmentation of a descriptor pool is possible and may lead to descriptor set allocation failures. A failure due to fragmentation is defined as failing a descriptor set allocation despite the sum of all outstanding descriptor set allocations from the pool plus the requested allocation requiring no more than the total number of descriptors requested at pool creation. Implementations provide certain guarantees of when fragmentation must3 not cause allocation failure, as described below.{If a descriptor pool has not had any descriptor sets freed since it was created or most recently reset then fragmentation mustf not cause an allocation failure (note that this is always the case for a pool created without the u 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 u$ bit set, descriptor pool creation may fail with the error -n if the total number of descriptors across all pools (including this one) created with this bit set exceeds 'maxUpdateAfterBindDescriptorsInAllPoolsC, or if fragmentation of the underlying hardware resources occurs. Valid UsagemaxSets must be greater than 0Valid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of u values pPoolSizes must( be a valid pointer to an array of  poolSizeCount valid , structures poolSizeCount must be greater than 0See Also%, ,, , &.vulkanBVkDescriptorImageInfo - Structure specifying descriptor image info Description Members of .B that are not used in an update (as described above) are ignored. Valid Usage imageView must> not be 2D or 2D array image view created from a 3D imageIf  imageView1 is created from a depth/stencil image, the  aspectMask used to create the  imageView must include either kZ or k[ but not both imageLayout must match the actual J* of each subresource accessible from  imageViewE at the time this descriptor is accessed as defined by the shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-layouts-matching-ruleimage layout matching rulesIf sampler is used and the  of the image is a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format, the image must have been created with , and the  aspectMask of the  imageView must be k, k- or (for three-plane formats only) kValid Usage (Implicit)Both of  imageView, and sampler7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same zSee AlsoJ, t, h, (/vulkanDVkDescriptorBufferInfo - Structure specifying descriptor buffer info DescriptionNote When setting range to $, the effective range must@ not be larger than the maximum range for the descriptor type ( jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxUniformBufferRangemaxUniformBufferRange or  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxStorageBufferRangemaxStorageBufferRange). This means that $ is not typically useful in the common case where uniform buffer descriptors are suballocated from a buffer that is much larger than maxUniformBufferRange.For , and , descriptor types, offsetB is the base offset from which the dynamic offset is applied and range2 is the static size used for all dynamic offsets. Valid Usageoffset must be less than the size of bufferIf range is not equal to $, range must be greater than 0If range is not equal to $, range must+ be less than or equal to the size of buffer minus offset If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, buffer must not be .If buffer is ., offset must be zero and range must be $Valid Usage (Implicit)If buffer is not ., buffer must be a valid  handleSee Also, , (0vulkanKVkCopyDescriptorSet - Structure specifying a copy descriptor set operation Valid Usage srcBinding must be a valid binding within srcSet  The sum of srcArrayElement and descriptorCount mustl be less than or equal to the number of array elements in the descriptor set binding specified by  srcBindingE, and all applicable consecutive bindings, as described by phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutive dstBinding must be a valid binding within dstSet The sum of dstArrayElement and descriptorCount mustl be less than or equal to the number of array elements in the descriptor set binding specified by  dstBindingE, and all applicable consecutive bindings, as described by phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutive The type of  dstBinding within dstSet must be equal to the type of  srcBinding within srcSetIf srcSet is equal to dstSet=, then the source and destination ranges of descriptors must not overlap, where the ranges mayL include array elements from consecutive bindings as described by phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutiveGIf the descriptor type of the descriptor set binding specified by  srcBinding is ,7, srcArrayElement must be an integer multiple of 4GIf the descriptor type of the descriptor set binding specified by  dstBinding is ,7, dstArrayElement must be an integer multiple of 4NIf the descriptor type of the descriptor set binding specified by either  srcBinding or  dstBinding is ,7, descriptorCount must be an integer multiple of 4If srcSet$ s layout was created with the t6 flag set, then dstSet s layout must+ also have been created with the t6 flag setIf srcSet' s layout was created without the t6 flag set, then dstSet s layout must. also have been created without the t6 flag set"If the descriptor pool from which srcSet. was allocated was created with the u4 flag set, then the descriptor pool from which dstSet was allocated must& also have been created with the u flag set"If the descriptor pool from which srcSet1 was allocated was created without the u4 flag set, then the descriptor pool from which dstSet was allocated must) also have been created without the u flag setGIf the descriptor type of the descriptor set binding specified by  dstBinding is , , then dstSet mustQ not have been allocated with a layout that included immutable samplers for  dstBindingValid Usage (Implicit)sType must be pNext must be NULLsrcSet must be a valid } handledstSet must be a valid } handleBoth of dstSet, and srcSet must? have been created, allocated, or retrieved from the same zSee Also}, , &&ZvulkanpNext is NULL1 or a pointer to an extension-specific structure.&[vulkandescriptorPool3 is the pool which the sets will be allocated from.&\vulkan pSetLayouts is a pointer to an array of descriptor set layouts, with each member specifying how the corresponding descriptor set is allocated.&^vulkanpNext is NULL1 or a pointer to an extension-specific structure.&_vulkanflags is a bitmask of u6 specifying certain supported operations on the pool.&`vulkanmaxSets/ is the maximum number of descriptor sets that can be allocated from the pool.&avulkan 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.&cvulkantype is the type of descriptor.&dvulkandescriptorCount< is the number of descriptors of that type to allocate. If type is ,7 then descriptorCountB is the number of bytes to allocate for descriptors of this type.&fvulkanpNext is NULL1 or a pointer to an extension-specific structure.&gvulkanflags is a bitmask of t8 specifying options for descriptor set layout creation.&hvulkan pBindings is a pointer to an array of * structures.&jvulkanbindingt is the binding number of this entry and corresponds to a resource of the same binding number in the shader stages.&kvulkandescriptorType is a  J specifying which type of resource descriptors are used for this binding.&lvulkan stageFlags member is a bitmask of "s* 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.&ovulkansrcSet,  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 ,7 then srcArrayElementE specifies the starting byte offset within the binding to copy from.&rvulkandstSet,  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 ,7 then dstArrayElementC specifies the starting byte offset within the binding to copy to.&uvulkandescriptorCountJ 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 ,7 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.&wvulkanpNext is NULL1 or a pointer to an extension-specific structure.&xvulkandstSet- is the destination descriptor set to update.&yvulkan dstBinding+ is the descriptor binding within that set.&zvulkandstArrayElementQ is the starting element in that array. If the descriptor binding identified by dstSet and  dstBinding has a descriptor type of ,7 then dstArrayElement8 specifies the starting byte offset within the binding.&{vulkandescriptorType is a  , specifying the type of each descriptor in  pImageInfo,  pBufferInfo, or pTexelBufferView, as described below. It must( be the same type as that specified in * for dstSet at  dstBindingW. The type of the descriptor also controls which array the descriptors are taken from.&|vulkan pImageInfo is a pointer to an array of ./ structures or is ignored, as described below.&}vulkan pBufferInfo is a pointer to an array of // structures or is ignored, as described below.&~vulkanpTexelBufferView is a pointer to an array of  handles as described in the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-views Buffer Views, section or is ignored, as described below.&vulkansamplerD is a sampler handle, and is used in descriptor updates for types , and ,? if the binding being updated does not use immutable samplers.&vulkan imageView is .H or an image view handle, and is used in descriptor updates for types ,, ,, ,, and ,.&vulkan imageLayout< is the layout that the image subresources accessible from  imageView6 will be in at the time this descriptor is accessed.  imageLayout* is used in descriptor updates for types ,, ,, ,, and ,.&vulkanbuffer is . or the buffer resource.&vulkanoffset* is the offset in bytes from the start of bufferi. Access to buffer memory via this descriptor uses addressing that is relative to this starting offset.&vulkanrangeC is the size in bytes that is used for this descriptor update, or $ to use the range from offset to the end of the buffer.&vulkan@vkCreateDescriptorSetLayout - Create a new descriptor set layout ParametersdeviceC is the logical device that creates the descriptor set layout. pCreateInfo is a pointer to a )I structure specifying the state of the descriptor set layout object. pAllocator: 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. pSetLayout is a pointer to a |M handle in which the resulting descriptor set layout object is returned.Valid Usage (Implicit)device must be a valid z handle pCreateInfo must$ be a valid pointer to a valid ) structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pSetLayout must be a valid pointer to a | handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, |, ), z&vulkan=A convenience wrapper to make a compatible pair of calls to & and &To ensure that & is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument.&vulkanEvkDestroyDescriptorSetLayout - Destroy a descriptor set layout object ParametersdeviceD is the logical device that destroys the descriptor set layout.descriptorSetLayout) is the descriptor set layout to destroy. pAllocator: 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. Valid UsageIf  were provided when descriptorSetLayout1 was created, a compatible set of callbacks must be provided here If no  were provided when descriptorSetLayout was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid z handleIf descriptorSetLayout is not ., descriptorSetLayout must be a valid | handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf descriptorSetLayout is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to descriptorSetLayout must be externally synchronizedSee Also, |, z&vulkan9vkCreateDescriptorPool - Creates a descriptor pool object Parametersdevice8 is the logical device that creates the descriptor pool. pCreateInfo is a pointer to a -C structure specifying the state of the descriptor pool object. pAllocator: 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.pDescriptorPool is a pointer to a ~G handle in which the resulting descriptor pool object is returned. Description pAllocator6 controls host memory allocation as described in the  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocationMemory Allocation chapter.+The created descriptor pool is returned in pDescriptorPool.Valid Usage (Implicit)device must be a valid z handle pCreateInfo must$ be a valid pointer to a valid - structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepDescriptorPool must be a valid pointer to a ~ handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJvSee Also, ~, -, z&vulkan=A convenience wrapper to make a compatible pair of calls to & and &To ensure that & is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument.&vulkan:vkDestroyDescriptorPool - Destroy a descriptor pool object Parametersdevice9 is the logical device that destroys the descriptor pool.descriptorPool# is the descriptor pool to destroy. pAllocator: 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. DescriptionWhen a pool is destroyed, all descriptor sets allocated from the pool are implicitly freed and become invalid. Descriptor sets allocated from a given pool do not need to be freed before destroying that descriptor pool. Valid Usage%All submitted commands that refer to descriptorPool* (via any allocated descriptor sets) must have completed executionIf  were provided when descriptorPool1 was created, a compatible set of callbacks must be provided here If no  were provided when descriptorPool was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid z handleIf descriptorPool is not ., descriptorPool must be a valid ~ handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf descriptorPool is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to descriptorPool must be externally synchronizedSee Also, ~, z&vulkan7vkResetDescriptorPool - Resets a descriptor pool object Parametersdevice5 is the logical device that owns the descriptor pool.descriptorPool$ is the descriptor pool to be reset.flags is reserved for future use. DescriptionResetting a descriptor pool recycles all of the resources from all of the descriptor sets allocated from the descriptor pool back to the descriptor pool, and the descriptor sets are implicitly freed. Valid Usage All uses of descriptorPool* (via any allocated descriptor sets) must have completed executionValid Usage (Implicit)device must be a valid z handledescriptorPool must be a valid ~ handleflags must be 0descriptorPool must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to descriptorPool must be externally synchronizedHost access to any } objects allocated from descriptorPool must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQSee Also~, E, z&vulkan?vkAllocateDescriptorSets - Allocate one or more descriptor sets Parametersdevice5 is the logical device that owns the descriptor pool. pAllocateInfo is a pointer to a +8 structure describing parameters of the allocation.pDescriptorSets" is a pointer to an array of }I handles in which the resulting descriptor set objects are returned. 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 @N bit set, all descriptors in that binding that are dynamically used must7 have been populated before the descriptor set is  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-bindingconsumed.5For descriptor set bindings created without the @M bit set, all descriptors in that binding that are statically used must7 have been populated before the descriptor set is  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-bindingconsumed.1Descriptor bindings with descriptor type of ,7 can. be undefined when the descriptor set is  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-bindingconsumed5; though values in that block will be undefined.(Entries that are not used by a pipeline can! have undefined descriptors. If a call to &b would cause the total number of descriptor sets allocated from the pool to exceed the value of -::maxSets used to create pAllocateInfo->descriptorPool, then the allocation mayN fail due to lack of space in the descriptor pool. Similarly, the allocation may+ fail due to lack of space if the call to &T would cause the number of any given descriptor type to exceed the sum of all the descriptorCount members of each element of -:: pPoolSizes with a member equal to that type.Additionally, the allocation may also fail if a call to &p would cause the total number of inline uniform block bindings allocated from the pool to exceed the value of ::maxInlineUniformBlockBindings% used to create the descriptor pool.If the allocation fails due to no more space in the descriptor pool, and not because of system or device memory exhaustion, then + must be returned.& can~ be used to create multiple descriptor sets. If the creation of any of those descriptor sets fails, then the implementation mustd destroy all successfully created descriptor set objects from this command, set all entries of the pDescriptorSets array to . and return the error.Valid Usage (Implicit)device must be a valid z handle pAllocateInfo must$ be a valid pointer to a valid + structurepDescriptorSets must( be a valid pointer to an array of !pAllocateInfo->descriptorSetCount } handlesThe value referenced by !pAllocateInfo->descriptorSetCount must be greater than 0Host SynchronizationHost access to pAllocateInfo->descriptorPool must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJ@+See Also}, +, z&vulkan=A convenience wrapper to make a compatible pair of calls to & and &To ensure that & is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument.&vulkan7vkFreeDescriptorSets - Free one or more descriptor sets Parametersdevice5 is the logical device that owns the descriptor pool.descriptorPoolK is the descriptor pool from which the descriptor sets were allocated.descriptorSetCount' is the number of elements in the pDescriptorSets array.pDescriptorSets- is a pointer to an array of handles to } objects. DescriptionAfter calling &, all descriptor sets in pDescriptorSets are invalid. Valid Usage9All submitted commands that refer to any element of pDescriptorSets must have completed executionpDescriptorSets must( be a valid pointer to an array of descriptorSetCount }% handles, each element of which must" either be a valid handle or .Each valid handle in pDescriptorSets must have been allocated from descriptorPooldescriptorPool must! have been created with the u flagValid Usage (Implicit)device must be a valid z handledescriptorPool must be a valid ~ handledescriptorSetCount must be greater than 0descriptorPool must6 have been created, allocated, or retrieved from deviceEach element of pDescriptorSets that is a valid handle must6 have been created, allocated, or retrieved from descriptorPoolHost SynchronizationHost access to descriptorPool must be externally synchronizedHost access to each member of pDescriptorSets must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQSee Also~, }, z&vulkanGvkUpdateDescriptorSets - Update the contents of a descriptor set object Parametersdevice8 is the logical device that updates the descriptor sets.descriptorWriteCount' is the number of elements in the pDescriptorWrites array.pDescriptorWrites is a pointer to an array of (< structures describing the descriptor sets to write to.descriptorCopyCount' is the number of elements in the pDescriptorCopies array.pDescriptorCopies is a pointer to an array of 0@ structures describing the descriptor sets to copy between. DescriptionThe operations described by pDescriptorWrites? are performed first, followed by the operations described by pDescriptorCopiesZ. Within each array, the operations are performed in the order they appear in the array.Each element in the pDescriptorWritesw array describes an operation updating the descriptor set using descriptors for resources specified in the structure.Each element in the pDescriptorCopies array is a 0E structure describing an operation copying descriptors between sets.If the dstSet member of any element of pDescriptorWrites or pDescriptorCopiesr is bound, accessed, or modified by any command that was recorded to a command buffer which is currently in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording or executable stateS, and any of the descriptor bindings that are updated were not created with the @8 or @) bits set, that command buffer becomes  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleinvalid. Valid UsageUDescriptor bindings updated by this command which were created without the @8 or @ bits set must\ not be used by any command that was recorded to a command buffer which is in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending stateValid Usage (Implicit)device must be a valid z handleIf descriptorWriteCount is not 0, pDescriptorWrites must( be a valid pointer to an array of descriptorWriteCount valid ( structuresIf descriptorCopyCount is not 0, pDescriptorCopies must( be a valid pointer to an array of descriptorCopyCount valid 0 structuresHost SynchronizationHost access to pDescriptorWrites [].dstSet must be externally synchronizedHost access to pDescriptorCopies [].dstSet must be externally synchronizedSee Also0, z, (B(&v&w&{&y&z&x&|&}&~)&e&g&f&h*&i&j&k&l&m+&Y&Z&\&[,&b&c&d-&]&_&^&`&a.&&&&/&&&&0&n&s&t&u&r&o&p&q&&&&&&&&&&&B&&&&&&&&&&&/&&&&.&&&&(&v&w&{&y&z&x&|&}&~0&n&s&t&u&r&o&p&q*&i&j&k&l&m)&e&g&f&h,&b&c&d-&]&_&^&`&a+&Y&Z&\&[None'"#%&'-./189;=>?FHIMSUVX_dghklmqfivulkanVkPhysicalDevicePushDescriptorPropertiesKHR - Structure describing push descriptor limits that can be supported by an implementationMembersThe members of the iC structure describe the following implementation-dependent limits: DescriptionIf the i structure is included in the pNext chain of O9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Also&vulkanmaxPushDescriptors+ is the maximum number of descriptors that can, be used in a descriptor set created with tH set.&vulkanLvkCmdPushDescriptorSetKHR - Pushes descriptor updates into a command buffer Parameters commandBufferE is the command buffer that the descriptors will be recorded in.pipelineBindPoint is a Q indicating whether the descriptors will be used by graphics pipelines or compute pipelines. There is a separate set of push descriptor bindings for each of graphics and compute, so binding one does not disturb the other.layout is a m* object used to program the bindings.setZ is the set number of the descriptor set in the pipeline layout that will be updated.descriptorWriteCount' is the number of elements in the pDescriptorWrites array.pDescriptorWrites" is a pointer to an array of (: structures describing the descriptors to be updated. DescriptionPush descriptors# are a small bank of descriptors whose storage is internally managed by the command buffer rather than being written into a descriptor set and later bound to a command buffer. Push descriptors allow for incremental updates of descriptors without managing the lifetime of descriptor sets.^When a command buffer begins recording, all push descriptors are undefined. Push descriptors can be updated incrementally and cause shaders to use the updated descriptors for subsequent rendering commands (either compute or graphics, according to the pipelineBindPoint]) until the descriptor is overwritten, or else until the set is disturbed as described in  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibilityPipeline Layout Compatibility. When the set is disturbed or push descriptors with a different descriptor set layout are set, all push descriptors are undefined.Push descriptors that are  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticusestatically used by a pipeline must not be undefined at the time that a draw or dispatch command is recorded to execute using that pipeline. This includes immutable sampler descriptors, which mustt be pushed before they are accessed by a pipeline (the immutable samplers are pushed, rather than the samplers in pDescriptorWrites2). Push descriptors that are not statically used can remain undefined.fPush descriptors do not use dynamic offsets. Instead, the corresponding non-dynamic descriptor types can be used and the offset member of   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 UsagepipelineBindPoint must be supported by the  commandBuffer s parent ) s queue familyset must be less than 3::setLayoutCount provided when layout was createdset musts be the unique set number in the pipeline layout that uses a descriptor set layout that was created with tHValid Usage (Implicit) commandBuffer must be a valid  handlepipelineBindPoint must be a valid Q valuelayout must be a valid m handlepDescriptorWrites must( be a valid pointer to an array of descriptorWriteCount valid ( structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must- support graphics, or compute operationsdescriptorWriteCount must be greater than 0Both of  commandBuffer, 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  See Also, Q, m, (&vulkan{vkCmdPushDescriptorSetWithTemplateKHR - Pushes descriptor updates into a command buffer using a descriptor update template Parameters commandBufferE is the command buffer that the descriptors will be recorded in.descriptorUpdateTemplate^ is a descriptor update template defining how to interpret the descriptor information in pData.layout is a m. object used to program the bindings. It must7 be compatible with the layout used to create the descriptorUpdateTemplate handle.set` 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.pDataM is a pointer to memory containing descriptors for the templated update. Valid UsageThe pipelineBindPointF specified during the creation of the descriptor update template must be supported by the  commandBuffer s parent ) s queue familypData 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) commandBuffer must be a valid  handledescriptorUpdateTemplate must be a valid  handlelayout must be a valid m handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must- support graphics, or compute operationsEach of  commandBuffer, descriptorUpdateTemplate, and layout must? have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, , m i&&&&&&&& &&i&&&&&&None'"#%&'-./189;=>?FHIMSUVX_dghklmqf6                           &&&&&&&&&&&&&&&&&Y&&&&&&&&&&&&&&&&&                                                      QNone'"#%&'-./189;=>?FHIMSUVX_dghklmqg!avulkanXVkPhysicalDeviceMaintenance3Properties - 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 O9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Also, vulkanvVkDescriptorSetLayoutSupport - Structure returning information about whether a descriptor set layout can be supported Description supported is set to  if the descriptor set can be created, or else is set to .Valid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueSee Also, , &, &vulkanpNext is NULL1 or a pointer to an extension-specific structure.&vulkan supported- specifies whether the descriptor set layout can be created.&vulkanmaxPerSetDescriptors is a maximum number of descriptors (summed over all descriptor types) in a single descriptor set that is guaranteed to satisfy any implementation-dependent constraints on the size of a descriptor set itself. Applications canQ query whether a descriptor set that goes beyond this limit is supported using &.&vulkanmaxMemoryAllocationSize2 is the maximum size of a memory allocation that can@ be created, even if there is more space available in the heap.&vulkanWvkGetDescriptorSetLayoutSupport - Query whether a descriptor set layout can be created ParametersdeviceH is the logical device that would create the descriptor set layout. pCreateInfo is a pointer to a )I structure specifying the state of the descriptor set layout object.pSupport is a pointer to a j structure, in which information about support for the descriptor set layout object is returned. 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 z query rather than )q because the answer may depend on enabled features.Valid Usage (Implicit)See Also), , z&&&&&&43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      &g&&&&&&&43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      None'"#%&'-./189;=>?FHIMSUVX_dghklmqg7W &&&&&&&&& &&&&&&&&& None'"#%&'-./189;=>?FHIMSUVX_dghklmqzZvulkan,VkViewport - Structure specifying a viewport Description!The framebuffer depth coordinate zf mayx be represented using either a fixed-point or floating-point representation. However, a floating-point representation must be used if the depth/stencil attachment has a floating-point depth component. If an m-bit fixed-point representation is used, we assume that it represents each value \frac{k}{2^m - 1}b, where k " { 0, 1, & , 2m-1 }, as k (e.g. 1.0 is represented in binary as a string of all ones).TThe viewport parameters shown in the above equations are found from these values asox = x + width / 2oy = y + height / 2oz = minDepthpx = widthpy = heightpz = maxDepth - minDepth.If a render pass transform is enabled, the values (px,py) and (ox, oy) defining the viewport are transformed as described in  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transformrender pass transform1 before participating in the viewport transform.The application can specify a negative term for height{, which has the effect of negating the y coordinate in clip space before performing the transform. When using a negative height, the application should also adjust the yo value to point to the lower left corner of the viewport instead of the upper left corner. Using the negative heightK allows the application to avoid having to negate the y component of the Position_ output from the last vertex processing stage in shaders that also target other graphics APIs.The width and height of the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxViewportDimensions4implementation-dependent maximum viewport dimensions mustN be greater than or equal to the width and height of the largest image which can* be created and attached to a framebuffer.<The floating-point viewport bounds are represented with an  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-viewportSubPixelBits"implementation-dependent precision. Valid Usagewidth must be greater than 0.0 width must be less than or equal to  _::maxViewportDimensions[0]The absolute value of height must be less than or equal to  _::maxViewportDimensions[1]x must be greater than or equal to viewportBoundsRange[0](x + width) must be less than or equal to viewportBoundsRange[1]y must be greater than or equal to viewportBoundsRange[0]y must be less than or equal to viewportBoundsRange[1](y + height) must" be greater than or equal to viewportBoundsRange[0](y + height) must be less than or equal to viewportBoundsRange[1]Unless VK_EXT_depth_range_unrestricted extension is enabled minDepth must be between 0.0 and 1.0 , inclusiveUnless VK_EXT_depth_range_unrestricted extension is enabled maxDepth must be between 0.0 and 1.0 , inclusiveSee Also1, '*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 UsageclearValueCount must6 be greater than the largest attachment index in  renderPass that specifies a loadOp (or  stencilLoadOp=, if the attachment has a depth/stencil format) of 4G 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 0@( structure specified when creating  framebufferIf the pNext chain does not contain  or its deviceRenderAreaCount member is equal to 0, renderArea.offset.x must be greater than or equal to 0If the pNext chain does not contain  or its deviceRenderAreaCount member is equal to 0, renderArea.offset.y must be greater than or equal to 0If the pNext chain does not contain  or its deviceRenderAreaCount member is equal to 0, renderArea.offset.x + renderArea.offset.width must$ be less than or equal to 0@::width the  framebuffer was created withIf the pNext chain does not contain  or its deviceRenderAreaCount member is equal to 0, renderArea.offset.y + renderArea.offset.height must$ be less than or equal to 0@::height the  framebuffer was created withIf the pNext chain contains  , the offset.x member of each element of pDeviceRenderAreas must# be greater than or equal to 0If the pNext chain contains  , the offset.y member of each element of pDeviceRenderAreas must# be greater than or equal to 0If the pNext chain contains , offset.x +  offset.width of each element of pDeviceRenderAreas must be less than or equal to 0@::width the  framebuffer was created withIf the pNext chain contains , offset.y +  offset.height of each element of pDeviceRenderAreas must be less than or equal to 0@::height the  framebuffer was created withIf  framebuffer was created with a 0@::flags& value that did not include m, and the pNext chain includes a / structure, its attachmentCount must be zeroIf  framebuffer was created with a 0@::flags value that included m , the attachmentCount of a / structure included in the pNext chain must$ be equal to the value of b?::attachmentImageInfoCount used to create  framebufferIf  framebuffer was created with a 0@::flags value that included , each element of the  pAttachments member of a / structure included in the pNext chain must$ have been created on the same ) as  framebuffer and  renderPassIf  framebuffer was created with a 0@::flags value that included m, each element of the  pAttachments member of a / structure included in the pNext chain must be a )|* of an image created with a value of *::flags equal to the flags- member of the corresponding element of :: pAttachments used to create  framebufferIf  framebuffer was created with a 0@::flags value that included m, each element of the  pAttachments member of a / structure included in the pNext chain must be a )|* of an image created with a value of *::usage equal to the usage- member of the corresponding element of b?:: pAttachments used to create  framebufferIf  framebuffer was created with a 0@::flags value that included m, each element of the  pAttachments member of a / structure included in the pNext chain must be a )| with a width equal to the width- member of the corresponding element of b?:: pAttachments used to create  framebufferIf  framebuffer was created with a 0@::flags value that included m, each element of the  pAttachments member of a / structure included in the pNext chain must be a )|! with a height equal to the height- member of the corresponding element of b?:: pAttachments used to create  framebufferIf  framebuffer was created with a 0@::flags value that included m, each element of the  pAttachments member of a / structure included in the pNext chain must be a )|/ of an image created with a value of +[::subresourceRange.layerCount equal to the  layerCount- member of the corresponding element of b?:: pAttachments used to create  framebufferIf  framebuffer was created with a 0@::flags value that included m, each element of the  pAttachments member of a / structure included in the pNext chain must be a )|/ of an image created with a value of aP::viewFormatCount equal to the viewFormatCount2 member of the corresponding element of b?:: pAttachments used to create  framebufferIf  framebuffer was created with a 0@::flags value that included m, each element of the  pAttachments member of a / structure included in the pNext chain must be a )|9 of an image created with a set of elements in aP:: pViewFormats* equal to the set of elements in the  pViewFormats2 member of the corresponding element of b?:: pAttachments used to create  framebufferIf  framebuffer was created with a 0@::flags value that included m, each element of the  pAttachments member of a / structure included in the pNext chain must be a )|/ of an image created with a value of +[::format/ equal to the corresponding value of 0::format in  renderPassIf  framebuffer was created with a 0@::flags value that included m, each element of the  pAttachments member of a / structure included in the pNext chain must be a )|* of an image created with a value of *::samples/ equal to the corresponding value of 0::samples in  renderPassIf the pNext chain includes ',  renderArea::offset must equal (0,0)If the pNext chain includes ',  renderArea::extent transformed by ':: transform must equal the  framebuffer dimensionsValid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , /, , or 'The sType value of each struct in the pNext chain must be unique renderPass must be a valid i handle framebuffer must be a valid v handleIf clearValueCount is not 0,  pClearValues must( be a valid pointer to an array of clearValueCount & unionsBoth of  framebuffer, and  renderPass mustD have been created, allocated, or retrieved from the same )See Also&, v, , i, , 'R, ^, vulkan;VkRect2D - Structure specifying a two-dimensional subregionSee AlsoF, #, , , $, , , , , 1, , , , '+, a vulkan@VkImageResolve - Structure specifying an image resolve operation Valid UsageThe  aspectMask member of srcSubresource and dstSubresource must only contain k The  layerCount member of srcSubresource and dstSubresource must match#If either of the calling command s srcImage or dstImage parameters are of   , the baseArrayLayer and  layerCount members of both srcSubresource and dstSubresource must be 0 and 1, respectively srcOffset.x and ( extent.width +  srcOffset.x) must' both be greater than or equal to 0B and less than or equal to the source image subresource width srcOffset.y and ( extent.height +  srcOffset.y) must' both be greater than or equal to 0C and less than or equal to the source image subresource heightIf the calling command s srcImage is of type  , then  srcOffset.y must be 0 and  extent.height must be 1 srcOffset.z and ( extent.depth +  srcOffset.z) must' both be greater than or equal to 0B and less than or equal to the source image subresource depthIf the calling command s srcImage is of type  or  , then  srcOffset.z must be 0 and  extent.depth must be 1 dstOffset.x and ( extent.width +  dstOffset.x) must' both be greater than or equal to 0G and less than or equal to the destination image subresource width dstOffset.y and ( extent.height +  dstOffset.y) must' both be greater than or equal to 0H and less than or equal to the destination image subresource heightIf the calling command s dstImage is of type  , then  dstOffset.y must be 0 and  extent.height must be 1 dstOffset.z and ( extent.depth +  dstOffset.z) must' both be greater than or equal to 0G and less than or equal to the destination image subresource depthIf the calling command s dstImage is of type  or  , then  dstOffset.z must be 0 and  extent.depth must be 1Valid Usage (Implicit)srcSubresource must be a valid  structuredstSubresource must be a valid  structureSee Also, , , 'F!vulkan:VkImageCopy - Structure specifying an image copy operation DescriptionFor @ images, copies are performed slice by slice starting with the z member of the  srcOffset or  dstOffset, and copying depthb slices. For images with multiple layers, copies are performed layer by layer starting with the baseArrayLayer member of the srcSubresource or dstSubresource and copying  layerCount layers. Image data canH be copied between images with different image types. If one image is  and the other image is O with multiple layers, then each slice is copied to or from a different layer.Copies involving a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar image format2 specify the region to be copied in terms of the planet to be copied, not the coordinates of the multi-planar image. This means that copies accessing the R/B planes of _422  format images must( fit the copied region within half the widthD of the parent image, and that copies accessing the R/B planes of _420  format images must( fit the copied region within half the width and height of the parent image. Valid Usage!If neither the calling command s srcImage nor the calling command s dstImage has a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar image format then the  aspectMask member of srcSubresource and dstSubresource must match!If the calling command s srcImage has a  with  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion two planes then the srcSubresource  aspectMask must be k or kIf the calling command s srcImage has a  with  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion three planes then the srcSubresource  aspectMask must be k, k, or kIf the calling command s dstImage has a  with  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion two planes then the dstSubresource  aspectMask must be k or kIf the calling command s dstImage has a  with  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion three planes then the dstSubresource  aspectMask must be k, k, or kIf the calling command s srcImage has a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar image format and the dstImage5 does not have a multi-planar image format, the dstSubresource  aspectMask must be kIf the calling command s dstImage has a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar image format and the srcImage5 does not have a multi-planar image format, the srcSubresource  aspectMask must be kThe number of slices of the extent (for 3D) or layers of the srcSubresource (for non-3D) must( match the number of slices of the extent (for 3D) or layers of the dstSubresource (for non-3D)#If either of the calling command s srcImage or dstImage parameters are of   , the baseArrayLayer and  layerCount/ members of the corresponding subresource must be 0 and 1, respectivelyThe  aspectMask member of srcSubresource must7 specify aspects present in the calling command s srcImageThe  aspectMask member of dstSubresource must7 specify aspects present in the calling command s dstImage srcOffset.x and ( extent.width +  srcOffset.x) must' both be greater than or equal to 0B and less than or equal to the source image subresource width srcOffset.y and ( extent.height +  srcOffset.y) must' both be greater than or equal to 0C and less than or equal to the source image subresource heightIf the calling command s srcImage is of type  , then  srcOffset.y must be 0 and  extent.height must be 1 srcOffset.z and ( extent.depth +  srcOffset.z) must' both be greater than or equal to 0B and less than or equal to the source image subresource depthIf the calling command s srcImage is of type  , then  srcOffset.z must be 0 and  extent.depth must be 1If the calling command s dstImage is of type  , then  dstOffset.z must be 0 and  extent.depth must be 1If the calling command s srcImage is of type  , then  srcOffset.z must be 0If the calling command s dstImage is of type  , then  dstOffset.z must be 0If both srcImage and dstImage are of type  then  extent.depth must be 1If the calling command s srcImage is of type , and the dstImage is of type  , then  extent.depth must equal to the  layerCount member of srcSubresourceIf the calling command s dstImage is of type , and the srcImage is of type  , then  extent.depth must equal to the  layerCount member of dstSubresource dstOffset.x and ( extent.width +  dstOffset.x) must' both be greater than or equal to 0G and less than or equal to the destination image subresource width dstOffset.y and ( extent.height +  dstOffset.y) must' both be greater than or equal to 0H and less than or equal to the destination image subresource heightIf the calling command s dstImage is of type  , then  dstOffset.y must be 0 and  extent.height must be 1 dstOffset.z and ( extent.depth +  dstOffset.z) must' both be greater than or equal to 0G and less than or equal to the destination image subresource depthIf the calling command s srcImage" is a compressed image, or a  single-plane, _422  image format, all members of  srcOffset mustQ be a multiple of the corresponding dimensions of the compressed texel blockIf the calling command s srcImage" is a compressed image, or a  single-plane, _422  image format,  extent.width must< be a multiple of the compressed texel block width or ( extent.width +  srcOffset.x) must) equal the source image subresource widthIf the calling command s srcImage" is a compressed image, or a  single-plane, _422  image format,  extent.height must= be a multiple of the compressed texel block height or ( extent.height +  srcOffset.y) must* equal the source image subresource heightIf the calling command s srcImage" is a compressed image, or a  single-plane, _422  image format,  extent.depth must< be a multiple of the compressed texel block depth or ( extent.depth +  srcOffset.z) must) equal the source image subresource depthIf the calling command s dstImage) is a compressed format image, or a  single-plane, _422  image format, all members of  dstOffset mustQ be a multiple of the corresponding dimensions of the compressed texel blockIf the calling command s dstImage) is a compressed format image, or a  single-plane, _422  image format,  extent.width must< be a multiple of the compressed texel block width or ( extent.width +  dstOffset.x) must. equal the destination image subresource widthIf the calling command s dstImage) is a compressed format image, or a  single-plane, _422  image format,  extent.height must= be a multiple of the compressed texel block height or ( extent.height +  dstOffset.y) must/ equal the destination image subresource heightIf the calling command s dstImage) is a compressed format image, or a  single-plane, _422  image format,  extent.depth must< be a multiple of the compressed texel block depth or ( extent.depth +  dstOffset.z) must. equal the destination image subresource depthValid Usage (Implicit)srcSubresource must be a valid  structuredstSubresource must be a valid  structureSee Also, , , '="vulkan:VkImageBlit - Structure specifying an image blit operation DescriptionFor each element of the pRegionsT array, a blit operation is performed the specified source and destination regions. Valid UsageThe  aspectMask member of srcSubresource and dstSubresource must matchThe  layerCount member of srcSubresource and dstSubresource must match#If either of the calling command s srcImage or dstImage parameters are of   , the baseArrayLayer and  layerCount members of both srcSubresource and dstSubresource must be 0 and 1, respectivelyThe  aspectMask member of srcSubresource must7 specify aspects present in the calling command s srcImageThe  aspectMask member of dstSubresource must7 specify aspects present in the calling command s dstImage srcOffset [0].x and  srcOffset[1].x must' both be greater than or equal to 0B and less than or equal to the source image subresource width srcOffset [0].y and  srcOffset[1].y must' both be greater than or equal to 0C and less than or equal to the source image subresource heightIf the calling command s srcImage is of type  , then  srcOffset[0].y must be 0 and  srcOffset[1].y must be 1 srcOffset [0].z and  srcOffset[1].z must' both be greater than or equal to 0B and less than or equal to the source image subresource depthIf the calling command s srcImage is of type  or  , then  srcOffset[0].z must be 0 and  srcOffset[1].z must be 1 dstOffset [0].x and  dstOffset[1].x must' both be greater than or equal to 0G and less than or equal to the destination image subresource width dstOffset [0].y and  dstOffset[1].y must' both be greater than or equal to 0H and less than or equal to the destination image subresource heightIf the calling command s dstImage is of type  , then  dstOffset[0].y must be 0 and  dstOffset[1].y must be 1 dstOffset [0].z and  dstOffset[1].z must' both be greater than or equal to 0G and less than or equal to the destination image subresource depthIf the calling command s dstImage is of type  or  , then  dstOffset[0].z must be 0 and  dstOffset[1].z must be 1Valid Usage (Implicit)srcSubresource must be a valid  structuredstSubresource must be a valid  structureSee Also, , '>#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 Also, 'E$vulkan;VkClearAttachment - Structure specifying a clear attachment Description&No memory barriers are needed between 'EU and preceding or subsequent draw or attachment clear commands in the same subpass.The 'E6 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 0 to 4G, as described for 0. Valid UsageIf  aspectMask includes k , it must not include kZ or k[ aspectMask must not include k aspectMask must not include &VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT for any index i clearValue must be a valid & unionValid Usage (Implicit) aspectMask must be a valid combination of k values aspectMask must not be 0See Also&, , 'E%vulkanFVkBufferImageCopy - Structure specifying a buffer image copy operation DescriptionWhen copying to or from a depth or stencil aspect, the data in buffer memory uses a layout that is a (mostly) tightly packed representation of the depth or stencil data. Specifically:kdata copied to or from the stencil aspect of any depth/stencil format is tightly packed with one  value per texel.2data copied to or from the depth aspect of a  or - format is tightly packed with one  value per texel.2data copied to or from the depth aspect of a  or - format is tightly packed with one  value per texel.2data copied to or from the depth aspect of a  or  format is packed with one 32-bit word per texel with the D24 value in the LSBs of the word, and undefined values in the eight MSBs.NoteVTo copy both the depth and stencil aspects of a depth/stencil format, two entries in pRegions can3 be used, where one specifies the depth aspect in imageSubresource., and the other specifies the stencil aspect.7Because depth or stencil aspect buffer to image copies mayu require format conversions on some implementations, they are not supported on queues that do not support graphics.)When copying to a depth aspect, and the VK_EXT_depth_range_unrestricted6 extension is not enabled, the data in buffer memory must? be in the range [0,1], or the resulting values are undefined.:Copies are done layer by layer starting with image layer baseArrayLayer member of imageSubresource.  layerCountF layers are copied from the source image or to the destination image. Valid UsageIf the calling command s uA parameter s format is not a depth/stencil format or a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then  bufferOffset must4 be a multiple of the format s texel block sizeIf the calling command s u# parameter s format is a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , then  bufferOffset mustX be a multiple of the element size of the compatible format for the format and the  aspectMask of the imageSubresource as defined in ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes bufferOffset must be a multiple of 4bufferRowLength must be 0', or greater than or equal to the width member of  imageExtentbufferImageHeight must be 0', or greater than or equal to the height member of  imageExtent imageOffset.x and (imageExtent.width +  imageOffset.x) must' both be greater than or equal to 0g and less than or equal to the image subresource width where this refers to the width of the plane9 of the image involved in the copy in the case of a xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format imageOffset.y and (imageExtent.height +  imageOffset.y) must' both be greater than or equal to 0i and less than or equal to the image subresource height where this refers to the height of the plane9 of the image involved in the copy in the case of a xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar formatIf the calling command s srcImage ('@ ) or dstImage ('?) is of type  , then  imageOffset.y must be 0 and imageExtent.height must be 1 imageOffset.z and (imageExtent.depth +  imageOffset.z) must' both be greater than or equal to 0; and less than or equal to the image subresource depthIf the calling command s srcImage ('@ ) or dstImage ('?) is of type  or  , then  imageOffset.z must be 0 and imageExtent.depth must be 1If the calling command s u, parameter is a compressed image, or a  single-plane, _422  image format, bufferRowLength must7 be a multiple of the compressed texel block widthIf the calling command s u, parameter is a compressed image, or a  single-plane, _422  image format, bufferImageHeight must8 be a multiple of the compressed texel block heightIf the calling command s u, parameter is a compressed image, or a  single-plane, _422$  image format, all members of  imageOffset mustQ be a multiple of the corresponding dimensions of the compressed texel blockIf the calling command s u, parameter is a compressed image, or a  single-plane, _422  image format,  bufferOffset must? be a multiple of the compressed texel block size in bytesIf the calling command s u, parameter is a compressed image, or a  single-plane, _422  image format, imageExtent.width must< be a multiple of the compressed texel block width or (imageExtent.width +  imageOffset.x) must' equal the image subresource widthIf the calling command s u, parameter is a compressed image, or a  single-plane, _422  image format, imageExtent.height must= be a multiple of the compressed texel block height or (imageExtent.height +  imageOffset.y) must# equal the image subresource heightIf the calling command s u, parameter is a compressed image, or a  single-plane, _422  image format, imageExtent.depth must< be a multiple of the compressed texel block depth or (imageExtent.depth +  imageOffset.z) must' equal the image subresource depthThe  aspectMask member of imageSubresource must< specify aspects present in the calling command s u parameterIf the calling command s u# parameter s format is a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format, then the  aspectMask member of imageSubresource must be k, k, or k (with k5 valid only for image formats with three planes)The  aspectMask member of imageSubresource must only have a single bit setIf the calling command s u parameter is of   , the baseArrayLayer and  layerCount members of imageSubresource must be 0 and 1, respectivelyValid Usage (Implicit)imageSubresource must be a valid  structureSee Also, , , , '?, '@&vulkan;VkBufferCopy - Structure specifying a buffer copy operation Valid UsageThe size must be greater than 0See Also, '<&vulkan aspectMask^ is a mask selecting the color, depth and/or stencil aspects of the attachment to be cleared.&vulkancolorAttachment is only meaningful if k is set in  aspectMask', in which case it is an index to the pColorAttachments array in the 0kO structure of the current subpass which selects the color attachment to clear.&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.&vulkanpNext is NULL1 or a pointer to an extension-specific structure.&vulkan renderPass, is the render pass to begin an instance of.&vulkan framebufferS is the framebuffer containing the attachments that are used with the render pass.&vulkan renderAreai is the render area that is affected by the render pass instance, and is described in more detail below.&vulkan pClearValues is a pointer to an array of clearValueCount &V structures that contains clear values for each attachment, if the attachment uses a loadOp value of 4G> or if the attachment has a depth/stencil format and uses a  stencilLoadOp value of 4G~. The array is indexed by attachment number. Only elements corresponding to cleared attachments are used. Other elements of  pClearValues are ignored.'vulkansrcSubresource 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.'vulkan srcOffset and  dstOffset select the initial x, y, and zP offsets in texels of the sub-regions of the source and destination image data.'vulkanextent: is the size in texels of the source image to resolve in width, height and depth.'vulkan bufferOffsetg is the offset in bytes from the start of the buffer object where the image data is copied from or to.'vulkanbufferRowLength 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.' vulkanimageSubresource is a n used to specify the specific image subresources of the image used for the source or destination image data.' vulkan imageOffset selects the initial x, y, zN offsets in texels of the sub-region of the source or destination image data.' vulkan imageExtent/ is the size in texels of the image to copy in width, height and depth.' vulkansrcSubresource! is the subresource to blit from.'vulkan srcOffsets" is a pointer to an array of two ? structures specifying the bounds of the source region within srcSubresource.'vulkandstSubresource! is the subresource to blit into.'vulkan dstOffsets" is a pointer to an array of two D structures specifying the bounds of the destination region within dstSubresource.'vulkansrcSubresource and dstSubresource are { structures specifying the image subresources of the images used for the source and destination image data, respectively.'vulkan srcOffset and  dstOffset select the initial x, y, and zP offsets in texels of the sub-regions of the source and destination image data.'vulkanextent/ is the size in texels of the image to copy in width, height and depth.'vulkan srcOffset4 is the starting offset in bytes from the start of  srcBuffer.'vulkan dstOffset4 is the starting offset in bytes from the start of  dstBuffer.'vulkansize is the number of bytes to copy.'vulkanrect- is the two-dimensional region to be cleared.'vulkanbaseArrayLayer" is the first layer to be cleared.'vulkan layerCount" is the number of layers to clear.' vulkanoffset is a " specifying the rectangle offset.'!vulkanextent is a " specifying the rectangle extent.'#vulkanx and y, are the viewport s upper left corner (x,y).'%vulkanwidth and height3 are the viewport s width and height, respectively.''vulkanminDepth and maxDepth8 are the depth range for the viewport. It is valid for minDepth to be greater than or equal to maxDepth.')vulkan>vkCmdBindPipeline - Bind a pipeline object to a command buffer Parameters commandBuffer? is the command buffer that the pipeline will be bound to.pipelineBindPoint is a Qz value specifying whether to bind to the compute or graphics bind point. Binding one does not disturb the other.pipeline is the pipeline to be bound. DescriptionOnce bound, a pipeline binding affects subsequent graphics or compute commands in the command buffer until a different pipeline is bound to the bind point. The pipeline bound to  controls the behavior of ': and ';. The pipeline bound to  controls the behavior of all  Uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawingdrawing commands. The pipeline bound to  controls the behavior of 8. No other commands are affected by the pipeline state. Valid UsageIf pipelineBindPoint is  , the ) that  commandBuffer was allocated from must support compute operations If pipelineBindPoint is  , the ) that  commandBuffer was allocated from must! support graphics operationsIf pipelineBindPoint is , pipeline must be a compute pipelineIf pipelineBindPoint is , pipeline must be a graphics pipeline If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-variableMultisampleRatevariable multisample rate feature is not supported, pipeline7 is a graphics pipeline, the current subpass  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachmentsuses no attachments, and this is not the first call to this function with a graphics pipeline after transitioning to the current subpass, then the sample count specified by this pipeline must- match that set in the previous pipelineIf ::variableSampleLocations is , and pipeline1 is a graphics pipeline created with a  structure having its sampleLocationsEnable member set to  but without +4 enabled then the current render pass instance must+ have been begun by specifying a  structure whose pPostSubpassSampleLocations( member contains an element with a  subpassIndex1 matching the current subpass index and the sampleLocationsInfo member of that element must match the sampleLocationsInfo specified in # when the pipeline was created This command must7 not be recorded when transform feedback is activeIf pipelineBindPoint is  , the ) that  commandBuffer was allocated from must support compute operationsIf pipelineBindPoint is  , the pipeline must be a ray tracing pipelineThe pipeline must! not have been created with c setValid Usage (Implicit) commandBuffer must be a valid  handlepipelineBindPoint must be a valid Q valuepipeline must be a valid o handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must- support graphics, or compute operationsBoth of  commandBuffer, and pipeline 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, o, Q'*vulkan7vkCmdSetViewport - Set the viewport on a command buffer Parameters commandBufferD is the command buffer into which the command will be recorded. firstViewportU is the index of the first viewport whose parameters are updated by the command. viewportCountM is the number of viewports whose parameters are updated by the command. pViewports is a pointer to an array of 0 structures specifying viewport parameters. Description0The viewport parameters taken from element i of  pViewports3 replace the current state for the viewport index  firstViewport + i, for i in [0,  viewportCount). Valid Usage firstViewport must be less than  _:: maxViewports The sum of  firstViewport and  viewportCount must be between 1 and  _:: maxViewports, inclusive If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  firstViewport must be 0 If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  viewportCount must be 1Valid Usage (Implicit) commandBuffer must be a valid  handle pViewports must( be a valid pointer to an array of  viewportCount valid  structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations viewportCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, '+vulkanHvkCmdSetScissor - Set the dynamic scissor rectangles on a command buffer Parameters commandBufferD is the command buffer into which the command will be recorded. firstScissorN is the index of the first scissor whose state is updated by the command. scissorCountL is the number of scissors whose rectangles are updated by the command. pScissors is a pointer to an array of - structures defining scissor rectangles. 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).)Each scissor rectangle is described by a  structure, with the offset.x and offset.yM values determining the upper left corner of the scissor rectangle, and the  extent.width and  extent.height( values determining the size in pixels.,If a render pass transform is enabled, the (offset.x and offset.y) and ( extent.width and  extent.height+) values are transformed as described in  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transformrender pass transform+ before participating in the scissor test. Valid Usage firstScissor must be less than  _:: maxViewports The sum of  firstScissor and  scissorCount must be between 1 and  _:: maxViewports, inclusive If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  firstScissor must be 0 If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  scissorCount must be 1The x and y members of offset member of any element of  pScissors must be greater than or equal to 0Evaluation of (offset.x +  extent.width) mustF not cause a signed integer addition overflow for any element of  pScissorsEvaluation of (offset.y +  extent.height) mustF not cause a signed integer addition overflow for any element of  pScissorsValid Usage (Implicit) commandBuffer must be a valid  handle pScissors must# be a valid pointer to an array of  scissorCount  structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations scissorCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, ',vulkan4vkCmdSetLineWidth - Set the dynamic line width state Parameters commandBufferD is the command buffer into which the command will be recorded. lineWidth* is the width of rasterized line segments. Valid Usage If the  `https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-wideLines wide lines feature is not enabled,  lineWidth must be 1.0Valid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) 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'-vulkan4vkCmdSetDepthBias - Set the depth bias dynamic state Parameters commandBufferD is the command buffer into which the command will be recorded.depthBiasConstantFactorU is a scalar factor controlling the constant depth value added to each fragment.depthBiasClamp; is the maximum (or minimum) depth bias of a fragment.depthBiasSlopeFactorR is a scalar factor applied to a fragment s slope in depth bias calculations. DescriptionIf depthBiasEnable is J, no depth bias is applied and the fragment s depth values are unchanged.depthBiasSlopeFactor5 scales the maximum depth slope of the polygon, and depthBiasConstantFactor scales an implementation-dependent constant that relates to the usable resolution of the depth buffer. The resulting values are summed to produce the depth bias value which is then clamped to a minimum or maximum value specified by depthBiasClamp. depthBiasSlopeFactor, depthBiasConstantFactor, and depthBiasClamp can% each be positive, negative, or zero.*The maximum depth slope m of a triangle ism = \sqrt{ \left({{\partial z_f} \over {\partial x_f}}\right)^2 + \left({{\partial z_f} \over {\partial y_f}}\right)^2}1where (xf, yf, zf) is a point on the triangle. m may be approximated asm = \max\left( \left| { {\partial z_f} \over {\partial x_f} } \right|, \left| { {\partial z_f} \over {\partial y_f} } \right| \right).The minimum resolvable difference r is an implementation-dependent parameter that depends on the depth buffer representation. It is the smallest difference in framebuffer coordinate z values that is guaranteed to remain distinct throughout polygon rasterization and in the depth buffer. All pairs of fragments generated by the rasterization of two polygons with otherwise identical vertices, but z<f values that differ by r, will have distinct depth values.For fixed-point depth buffer representations, r is constant throughout the range of the entire depth buffer. For floating-point depth buffers, there is no single minimum resolvable difference. In this case, the minimum resolvable difference for a given polygon is dependent on the maximum exponent, e, in the range of z values spanned by the primitive. If n is the number of bits in the floating-point mantissa, the minimum resolvable difference, r, for the given primitive is defined asr = 2e-n'If a triangle is rasterized using the "8 polygon mode, then this minimum resolvable difference mayZ 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 Also'.vulkan:vkCmdSetBlendConstants - Set the values of blend constants Parameters commandBufferD is the command buffer into which the command will be recorded.blendConstants 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.Valid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) 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'/vulkanLvkCmdSetDepthBounds - Set the depth bounds test values for a command buffer Parameters commandBufferD is the command buffer into which the command will be recorded.minDepthBoundsT is the lower bound of the range of depth values used in the depth bounds test.maxDepthBounds! is the upper bound of the range. Valid Usage Unless the VK_EXT_depth_range_unrestricted extension is enabled minDepthBounds must be between 0.0 and 1.0 , inclusive Unless the VK_EXT_depth_range_unrestricted extension is enabled maxDepthBounds must be between 0.0 and 1.0 , inclusiveValid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) 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'0vulkanGvkCmdSetStencilCompareMask - Set the stencil compare mask dynamic state Parameters commandBufferD is the command buffer into which the command will be recorded.faceMask is a bitmask of _T specifying the set of stencil state for which to update the compare mask. compareMask5 is the new value to use as the stencil compare mask.Valid Usage (Implicit) commandBuffer must be a valid  handlefaceMask must be a valid combination of _ valuesfaceMask must not be 0 commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) 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, ^'1vulkanCvkCmdSetStencilWriteMask - Set the stencil write mask dynamic state Parameters commandBufferD is the command buffer into which the command will be recorded.faceMask is a bitmask of _j specifying the set of stencil state for which to update the write mask, as described above for '0. writeMask3 is the new value to use as the stencil write mask.Valid Usage (Implicit) commandBuffer must be a valid  handlefaceMask must be a valid combination of _ valuesfaceMask must not be 0 commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) 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, ^'2vulkanBvkCmdSetStencilReference - Set the stencil reference dynamic state Parameters commandBufferD is the command buffer into which the command will be recorded.faceMask is a bitmask of _o specifying the set of stencil state for which to update the reference value, as described above for '0. reference8 is the new value to use as the stencil reference value.Valid Usage (Implicit) commandBuffer must be a valid  handlefaceMask must be a valid combination of _ valuesfaceMask must not be 0 commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) 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, ^'3vulkanCvkCmdBindDescriptorSets - Binds descriptor sets to a command buffer Parameters commandBufferF is the command buffer that the descriptor sets will be bound to.pipelineBindPoint is a Q indicating whether the descriptors will be used by graphics pipelines or compute pipelines. There is a separate set of bind points for each of graphics and compute, so binding one does not disturb the other.layout is a m* object used to program the bindings.firstSet@ is the set number of the first descriptor set to be bound.descriptorSetCount' is the number of elements in the pDescriptorSets array.pDescriptorSets- is a pointer to an array of handles to }9 objects describing the descriptor sets to write to.dynamicOffsetCount. is the number of dynamic offsets in the pDynamicOffsets array.pDynamicOffsets is a pointer to an array of uint32_t( values specifying dynamic offsets. Description'3 causes the sets numbered [firstSet.. firstSet+descriptorSetCount#-1] to use the bindings stored in pDescriptorSetsl[0..descriptorSetCount-1] for subsequent rendering commands (either compute or graphics, according to the pipelineBindPointQ). Any bindings that were previously applied via these sets are no longer valid.Once bound, a descriptor set affects rendering of subsequent graphics or compute commands in the command buffer until a different set is bound to the same set number, or else until the set is disturbed as described in  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibilityPipeline Layout Compatibility.A compatible descriptor set must be bound for all set numbers that any shaders in a pipeline access, at the time that a draw or dispatch command is recorded to execute using that pipeline. However, if none of the shaders in a pipeline statically use any bindings with a particular set number, then no descriptor set need be bound for that set number, even if the pipeline layout includes a non-trivial descriptor set layout for that set number.QIf any of the sets being bound include dynamic uniform or storage buffers, then pDynamicOffsetsz includes one element for each array element in each dynamic descriptor type binding in each set. Values are taken from pDynamicOffsets in an order such that all entries for set N come before set N+1; within a set, entries are ordered by the binding numbers in the descriptor set layouts; and within a binding array, elements are in order. dynamicOffsetCount mustH equal the total number of dynamic descriptors in the sets being bound.xThe effective offset used for dynamic uniform and storage buffer bindings is the sum of the relative offset taken from pDynamicOffsets, and the base address of the buffer plus base offset in the descriptor set. The range of the dynamic uniform and storage buffer bindings is the buffer range as specified in the descriptor set. Each of the pDescriptorSets must6 be compatible with the pipeline layout specified by layout+. The layout used to program the bindings mustk also be compatible with the pipeline used in subsequent graphics or compute commands, as defined in the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibilityPipeline Layout Compatibility section./The descriptor set contents bound by a call to '3 may$ be consumed at the following times:.For descriptor bindings created with the @8 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 '3Z. Once all pending uses have completed, it is legal to update and reuse a descriptor set. Valid UsageEach element of pDescriptorSets must! have been allocated with a )H that matches (is the same as, or identically defined as) the ) at set n in layout, where n is the sum of firstSet and the index into pDescriptorSetsdynamicOffsetCount must= be equal to the total number of dynamic descriptors in pDescriptorSets The sum of firstSet and descriptorSetCount must$ be less than or equal to 3::setLayoutCount provided when layout was createdpipelineBindPoint must be supported by the  commandBuffer s parent ) s queue familyEach element of pDynamicOffsets? which corresponds to a descriptor binding with type , must be a multiple of  _::minUniformBufferOffsetAlignmentEach element of pDynamicOffsets? which corresponds to a descriptor binding with type , must be a multiple of  _::minStorageBufferOffsetAlignment;For each dynamic uniform or storage buffer binding in pDescriptorSetsW, the sum of the effective offset, as defined above, and the range of the binding must5 be less than or equal to the size of the bufferValid Usage (Implicit) commandBuffer must be a valid  handlepipelineBindPoint must be a valid Q valuelayout must be a valid m handlepDescriptorSets must( be a valid pointer to an array of descriptorSetCount valid } handlesIf dynamicOffsetCount is not 0, pDynamicOffsets must( be a valid pointer to an array of dynamicOffsetCount uint32_t values commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must- support graphics, or compute operationsdescriptorSetCount must be greater than 0Each of  commandBuffer, layout, and the elements of pDescriptorSets must? have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, }, Q, m'4vulkan?vkCmdBindIndexBuffer - Bind an index buffer to a command buffer Parameters commandBuffer? is the command buffer into which the command is recorded.buffer is the buffer being bound.offset( is the starting offset in bytes within buffer0 used in index buffer address calculations. indexType is a OI value specifying whether indices are treated as 16 bits or 32 bits. Valid Usageoffset must be less than the size of buffer The sum of offset& and the address of the range of )v object that is backing buffer, must( be a multiple of the type indicated by  indexTypebuffer must! have been created with the } flagIf buffer is non-sparse then it must< be bound completely and contiguously to a single )v object indexType must not be  If  indexType is   , the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-indexTypeUint8indexTypeUint8 feature must be enabledValid Usage (Implicit) commandBuffer must be a valid  handlebuffer must be a valid  handle indexType must be a valid O value commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operationsBoth of buffer, and  commandBuffer 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, , , O'5vulkan@vkCmdBindVertexBuffers - Bind vertex buffers to a command buffer Parameters commandBuffer? is the command buffer into which the command is recorded. firstBinding[ is the index of the first vertex input binding whose state is updated by the command. bindingCountS is the number of vertex input bindings whose state is updated by the command.pBuffers, is a pointer to an array of buffer handles.pOffsets, is a pointer to an array of buffer offsets. Description$The values taken from elements i of pBuffers and pOffsets9 replace the current state for the vertex input binding  firstBinding + i, for i in [0,  bindingCountL). The vertex input binding is updated to start at the offset indicated by pOffsets"[i] from the start of the buffer pBuffers[i]. All vertex input attributes that use each of these bindings will use these updated addresses in their address calculations for subsequent draw commands. If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor" feature is enabled, elements of pBuffers can be ., and canh be used by the vertex shader. If a vertex input attribute is bound to a vertex input binding that is .c, the values taken from memory are considered to be zero, and missing G, B, or A components are  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extractionfilled with (0,0,1). Valid Usage firstBinding must be less than  _::maxVertexInputBindings The sum of  firstBinding and  bindingCount must$ be less than or equal to  _::maxVertexInputBindingsAll elements of pOffsets must< be less than the size of the corresponding element in pBuffersAll elements of pBuffers must! have been created with the } flagEach element of pBuffers that is non-sparse must< be bound completely and contiguously to a single )v object If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor. feature is not enabled, all elements of pBuffers must not be .If an element of pBuffers is .), then the corresponding element of pOffsets must be zeroValid Usage (Implicit) commandBuffer must be a valid  handlepBuffers must# be a valid pointer to an array of  bindingCount valid or .  handlespOffsets must# be a valid pointer to an array of  bindingCount  values commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations bindingCount must be greater than 0Both of  commandBuffer, and the elements of pBuffers7 that are valid handles of non-ignored parameters 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, , '6vulkanvkCmdDraw - Draw primitives Parameters commandBuffer? is the command buffer into which the command is recorded. vertexCount# is the number of vertices to draw. instanceCount$ is the number of instances to draw. firstVertex* is the index of the first vertex to draw. firstInstance2 is the instance ID of the first instance to draw. DescriptionaWhen the command is executed, primitives are assembled using the current primitive topology and  vertexCount, consecutive vertex indices with the first  vertexIndex value equal to  firstVertex. The primitives are drawn  instanceCount times with  instanceIndex starting with  firstInstancen and increasing sequentially for each instance. The assembled primitives execute the bound graphics pipeline. Valid UsageIf a )| is sampled with  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 nIf 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 nIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any )| being sampled with " as a result of this command must have a (E and format that supports cubic filtering, as specified by <:: filterCubic returned by OAny )| being sampled with + with a reduction mode of either  or " as a result of this command must have a (i and format that supports cubic filtering together with minmax filtering, as specified by <::filterCubicMinmax returned by OAny u created with a *::flags containing * sampled as a result of this command must only be sampled using a  of  For each set n% that is statically used by the oN 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 m! that is compatible for set n, with the m! used to create the current o, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the oS 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 m; that is compatible for push constants, with the m! used to create the current o, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via '3, must2 be valid if they are statically used by the o; bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the oo object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the of object bound to the pipeline bind point used by this command, since that pipeline was boundIf the oS 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 u with a )| of the type (, (, (, ( or (, in any shader stageIf the oS 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 stageIf the oS 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 stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the of object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the of object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the oC object bound to the pipeline bind point used by this command must! not be a protected resourceThe 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 1G1 structure specified when creating the o bound to -The subpass index of the current render pass must be equal to the subpass member of the 1G1 structure specified when creating the o bound to 3Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor setGImage subresources used as attachments in the current render pass mustL not be accessed in any way other than as an attachment by this commandjIf the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to R::maxMultiviewInstanceIndex5If the bound graphics pipeline was created with ::sampleLocationsEnable set to S and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit setIf  commandBufferD is a protected command buffer, any resource written to by the oC object bound to the pipeline bind point used by this command must$ not be an unprotected resourceIf  commandBufferu is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the o. object bound to the pipeline bind point must not write to any resourceyAll vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must have either valid or . buffers bound If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must not be .>For a given vertex buffer binding, any attribute data fetched mustf be entirely contained within the corresponding vertex buffer binding, as described in \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input???Valid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations This command must0 only be called inside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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'7vulkan>vkCmdDrawIndexed - Issue an indexed draw into a command buffer Parameters commandBuffer? is the command buffer into which the command is recorded. indexCount# is the number of vertices to draw. instanceCount$ is the number of instances to draw. firstIndex+ is the base index within the index buffer. vertexOffsetT is the value added to the vertex index before indexing into the vertex buffer. firstInstance2 is the instance ID of the first instance to draw. 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 '4:: 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 '4 and  indexSize, is the byte size of the type specified by  indexType. Subsequent index values are retrieved from consecutive locations in the index buffer. Indices are first compared to the primitive restart value, then zero extended to 32 bits (if the  indexType is   or   ) and have  vertexOffset- added to them, before being supplied as the  vertexIndex value.The primitives are drawn  instanceCount times with  instanceIndex starting with  firstInstancen and increasing sequentially for each instance. The assembled primitives execute the bound graphics pipeline. Valid UsageIf a )| is sampled with  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 nIf 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 nIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any )| being sampled with " as a result of this command must have a (E and format that supports cubic filtering, as specified by <:: filterCubic returned by OAny )| being sampled with + with a reduction mode of either  or " as a result of this command must have a (i and format that supports cubic filtering together with minmax filtering, as specified by <::filterCubicMinmax returned by OAny u created with a *::flags containing * sampled as a result of this command must only be sampled using a  of  For each set n% that is statically used by the oN 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 m! that is compatible for set n, with the m! used to create the current o, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the oS 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 m; that is compatible for push constants, with the m! used to create the current o, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via '3, must2 be valid if they are statically used by the o; bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the oo object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the of object bound to the pipeline bind point used by this command, since that pipeline was boundIf the oS 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 u with a )| of the type (, (, (, ( or (, in any shader stageIf the oS 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 stageIf the oS 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 stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the of object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the of object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the oC object bound to the pipeline bind point used by this command must! not be a protected resourceThe 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 1G1 structure specified when creating the o bound to -The subpass index of the current render pass must be equal to the subpass member of the 1G1 structure specified when creating the o bound to 3Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor setGImage subresources used as attachments in the current render pass mustL not be accessed in any way other than as an attachment by this commandjIf the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to R::maxMultiviewInstanceIndex5If the bound graphics pipeline was created with ::sampleLocationsEnable set to S and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit setIf  commandBufferD is a protected command buffer, any resource written to by the oC object bound to the pipeline bind point used by this command must$ not be an unprotected resourceIf  commandBufferu is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the o. object bound to the pipeline bind point must not write to any resourceyAll vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must have either valid or . buffers bound If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must not be .>For a given vertex buffer binding, any attribute data fetched mustf be entirely contained within the corresponding vertex buffer binding, as described in \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input???( indexSize * ( firstIndex +  indexCount) + offset) mustM be less than or equal to the size of the bound index buffer, with  indexSize& being based on the type specified by  indexType, where the index buffer,  indexType, and offset are specified via '4Valid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations This command must0 only be called inside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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'8vulkan@vkCmdDrawIndirect - Issue an indirect draw into a command buffer Parameters commandBuffer? is the command buffer into which the command is recorded.buffer* is the buffer containing draw parameters.offset is the byte offset into buffer where parameters begin. drawCount( is the number of draws to execute, and can be zero.strideD is the byte stride between successive sets of draw parameters. Description'8 behaves similarly to '6U 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 /3 structures. If  drawCount is less than or equal to one, stride is ignored. Valid UsageIf a )| is sampled with  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 n$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 nIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any )| being sampled with " as a result of this command must have a (E and format that supports cubic filtering, as specified by <:: filterCubic returned by OAny )| being sampled with + with a reduction mode of either  or " as a result of this command must have a (i and format that supports cubic filtering together with minmax filtering, as specified by <::filterCubicMinmax returned by OAny u created with a *::flags containing * sampled as a result of this command must only be sampled using a  of  For each set n% that is statically used by the oN 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 m! that is compatible for set n, with the m! used to create the current o, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the oS 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 m; that is compatible for push constants, with the m! used to create the current o, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via '3, must2 be valid if they are statically used by the o; bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the oo object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the of object bound to the pipeline bind point used by this command, since that pipeline was boundIf the oS 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 u with a )| of the type (, (, (, ( or (, in any shader stageIf the oS 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 stageIf the oS 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 stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the of object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the of object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the oC object bound to the pipeline bind point used by this command must! not be a protected resourceThe 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 1G1 structure specified when creating the o bound to -The subpass index of the current render pass must be equal to the subpass member of the 1G1 structure specified when creating the o bound to 3Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor setGImage subresources used as attachments in the current render pass mustL not be accessed in any way other than as an attachment by this commandjIf the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to R::maxMultiviewInstanceIndex5If the bound graphics pipeline was created with ::sampleLocationsEnable set to S and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit setyAll vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must have either valid or . buffers bound If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must not be .>For a given vertex buffer binding, any attribute data fetched mustf be entirely contained within the corresponding vertex buffer binding, as described in \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input???If buffer is non-sparse then it must< be bound completely and contiguously to a single )v objectbuffer must! have been created with the }  bit setoffset must be a multiple of 4 commandBuffer must" not be a protected command buffer If the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirectmulti-draw indirect feature is not enabled,  drawCount must be 0 or 1 drawCount must be less than or equal to  _::maxDrawIndirectCount If the  phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectFirstInstancedrawIndirectFirstInstance& feature is not enabled, all the  firstInstance members of the /3* structures accessed by this command must be 0If  drawCount is greater than 1, stride must be a multiple of 4 and must" be greater than or equal to sizeof(/3)If  drawCount is equal to 1, (offset + sizeof(/3)) must& be less than or equal to the size of bufferIf  drawCount is greater than 1, (stride ( drawCount - 1) + offset + sizeof(/3)) must& be less than or equal to the size of bufferValid Usage (Implicit) commandBuffer must be a valid  handlebuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations This command must0 only be called inside of a render pass instanceBoth of buffer, and  commandBuffer 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, , '9vulkan;vkCmdDrawIndexedIndirect - Perform an indexed indirect draw Parameters commandBuffer? is the command buffer into which the command is recorded.buffer* is the buffer containing draw parameters.offset is the byte offset into buffer where parameters begin. drawCount( is the number of draws to execute, and can be zero.strideD is the byte stride between successive sets of draw parameters. Description'9 behaves similarly to '7U 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 /4 structures. If  drawCount is less than or equal to one, stride is ignored. Valid UsageIf a )| is sampled with  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 n%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 nIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any )| being sampled with " as a result of this command must have a (E and format that supports cubic filtering, as specified by <:: filterCubic returned by OAny )| being sampled with + with a reduction mode of either  or " as a result of this command must have a (i and format that supports cubic filtering together with minmax filtering, as specified by <::filterCubicMinmax returned by OAny u created with a *::flags containing * sampled as a result of this command must only be sampled using a  of  For each set n% that is statically used by the oN 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 m! that is compatible for set n, with the m! used to create the current o, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the oS 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 m; that is compatible for push constants, with the m! used to create the current o, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via '3, must2 be valid if they are statically used by the o; bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the oo object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the of object bound to the pipeline bind point used by this command, since that pipeline was boundIf the oS 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 u with a )| of the type (, (, (, ( or (, in any shader stageIf the oS 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 stageIf the oS 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 stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the of object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the of object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the oC object bound to the pipeline bind point used by this command must! not be a protected resourceThe 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 1G1 structure specified when creating the o bound to -The subpass index of the current render pass must be equal to the subpass member of the 1G1 structure specified when creating the o bound to 3Every input attachment used by the current subpass must3 be bound to the pipeline via a descriptor setGImage subresources used as attachments in the current render pass mustL not be accessed in any way other than as an attachment by this commandjIf the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to R::maxMultiviewInstanceIndex5If the bound graphics pipeline was created with ::sampleLocationsEnable set to S and the current subpass has a depth/stencil attachment, then that attachment must& have been created with the   bit setyAll vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must have either valid or . buffers bound If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptornullDescriptor feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point s interface must not be .>For a given vertex buffer binding, any attribute data fetched mustf be entirely contained within the corresponding vertex buffer binding, as described in \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input???If buffer is non-sparse then it must< be bound completely and contiguously to a single )v objectbuffer must! have been created with the }  bit setoffset must be a multiple of 4 commandBuffer must" not be a protected command buffer If the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirectmulti-draw indirect feature is not enabled,  drawCount must be 0 or 1 drawCount must be less than or equal to  _::maxDrawIndirectCountIf  drawCount is greater than 1, stride must be a multiple of 4 and must" be greater than or equal to sizeof(/4) 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 /4* structures accessed by this command must be 0If  drawCount is equal to 1, (offset + sizeof(/4)) must& be less than or equal to the size of bufferIf  drawCount is greater than 1, (stride ( drawCount - 1) + offset + sizeof(/4)) must& be less than or equal to the size of bufferIf  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectCountdrawIndirectCount# is not enabled this function must not be usedValid Usage (Implicit) commandBuffer must be a valid  handlebuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations This command must0 only be called inside of a render pass instanceBoth of buffer, and  commandBuffer 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, , ':vulkan+vkCmdDispatch - Dispatch compute work items Parameters commandBufferD is the command buffer into which the command will be recorded. groupCountXG is the number of local workgroups to dispatch in the X dimension. groupCountYG is the number of local workgroups to dispatch in the Y dimension. groupCountZG is the number of local workgroups to dispatch in the Z dimension. Description@When the command is executed, a global workgroup consisting of  groupCountX  groupCountY  groupCountZ local workgroups is assembled. Valid UsageIf a )| is sampled with  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 nIf 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 nIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any )| being sampled with " as a result of this command must have a (E and format that supports cubic filtering, as specified by <:: filterCubic returned by OAny )| being sampled with + with a reduction mode of either  or " as a result of this command must have a (i and format that supports cubic filtering together with minmax filtering, as specified by <::filterCubicMinmax returned by OAny u created with a *::flags containing * sampled as a result of this command must only be sampled using a  of  For each set n% that is statically used by the oN 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 m! that is compatible for set n, with the m! used to create the current o, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the oS 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 m; that is compatible for push constants, with the m! used to create the current o, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via '3, must2 be valid if they are statically used by the o; bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the oo object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the of object bound to the pipeline bind point used by this command, since that pipeline was boundIf the oS 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 u with a )| of the type (, (, (, ( or (, in any shader stageIf the oS 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 stageIf the oS 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 stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the of object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the of object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the oC object bound to the pipeline bind point used by this command must! not be a protected resourceIf  commandBufferD is a protected command buffer, any resource written to by the oC object bound to the pipeline bind point used by this command must$ not be an unprotected resourceIf  commandBufferu is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the o. object bound to the pipeline bind point must not write to any resource groupCountX must be less than or equal to  _::maxComputeWorkGroupCount[0] groupCountY must be less than or equal to  _::maxComputeWorkGroupCount[1] groupCountZ must be less than or equal to  _::maxComputeWorkGroupCount[2]Valid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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';vulkanNvkCmdDispatchIndirect - Dispatch compute work items using indirect parameters Parameters commandBufferD is the command buffer into which the command will be recorded.buffer. is the buffer containing dispatch parameters.offset is the byte offset into buffer where parameters begin. Description'; behaves similarly to ': except that the parameters are read by the device from a buffer during execution. The parameters of the dispatch are encoded in a / structure taken from buffer starting at offset. Valid UsageIf a )| is sampled with  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 nIf 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 nIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any )| being sampled with " as a result of this command must have a (E and format that supports cubic filtering, as specified by <:: filterCubic returned by OAny )| being sampled with + with a reduction mode of either  or " as a result of this command must have a (i and format that supports cubic filtering together with minmax filtering, as specified by <::filterCubicMinmax returned by OAny u created with a *::flags containing * sampled as a result of this command must only be sampled using a  of  For each set n% that is statically used by the oN 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 m! that is compatible for set n, with the m! used to create the current o, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the oS 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 m; that is compatible for push constants, with the m! used to create the current o, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via '3, must2 be valid if they are statically used by the o; bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the oo object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the of object bound to the pipeline bind point used by this command, since that pipeline was boundIf the oS 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 u with a )| of the type (, (, (, ( or (, in any shader stageIf the oS 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 stageIf the oS 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 stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the of object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the of object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the oC object bound to the pipeline bind point used by this command must! not be a protected resourceIf buffer is non-sparse then it must< be bound completely and contiguously to a single )v objectbuffer must! have been created with the }  bit setoffset must be a multiple of 4 commandBuffer must" not be a protected command buffer The sum of offset and the size of / must+ be less than or equal to the size of bufferValid Usage (Implicit) commandBuffer must be a valid  handlebuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceBoth of buffer, and  commandBuffer 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  Compute See Also, , '<vulkan2vkCmdCopyBuffer - Copy data between buffer regions Parameters commandBufferD is the command buffer into which the command will be recorded. srcBuffer is the source buffer. dstBuffer is the destination buffer. regionCount" is the number of regions to copy.pRegions is a pointer to an array of &0 structures specifying the regions to copy. 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 UsageThe  srcOffset member of each element of pRegions must be less than the size of  srcBuffer The  dstOffset member of each element of pRegions must be less than the size of  dstBufferThe size member of each element of pRegions must+ be less than or equal to the size of  srcBuffer minus  srcOffsetThe size member of each element of pRegions must+ be less than or equal to the size of  dstBuffer minus  dstOffsetmThe union of the source regions, and the union of the destination regions, specified by the elements of pRegions, must not overlap in memory srcBuffer must have been created with } usage flagIf  srcBuffer is non-sparse then it must< be bound completely and contiguously to a single )v object dstBuffer must have been created with }1 usage flagIf  dstBuffer is non-sparse then it must< be bound completely and contiguously to a single )v objectIf  commandBuffer- is an unprotected command buffer, then  srcBuffer must not be a protected bufferIf  commandBuffer- is an unprotected command buffer, then  dstBuffer must not be a protected bufferIf  commandBuffer% is a protected command buffer, then  dstBuffer must not be an unprotected bufferValid Usage (Implicit) commandBuffer must be a valid  handle srcBuffer must be a valid  handle dstBuffer must be a valid  handlepRegions must# be a valid pointer to an array of  regionCount valid & structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations This command must1 only be called outside of a render pass instance regionCount must be greater than 0Each of  commandBuffer,  dstBuffer, and  srcBuffer mustD have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, &, '=vulkan)vkCmdCopyImage - Copy data between images Parameters commandBufferD is the command buffer into which the command will be recorded.srcImage is the source image.srcImageLayout< is the current layout of the source image subresource.dstImage is the destination image.dstImageLayoutA is the current layout of the destination image subresource. regionCount" is the number of regions to copy.pRegions is a pointer to an array of !0 structures specifying the regions to copy. 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 k, k, or k. For the purposes of '=Q, 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  aspectMask: of the corresponding subresource. This applies both to I 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 k plane of a / image is compatible with an image of format  and (less usefully) with the k plane of an image of format $, as each texel is 2 bytes in size.'= 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.'= canI be used to copy image data between multisample images, but both images must! have the same number of samples. Valid UsagemThe union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain nsrcImage must have been created with  usage flagIf srcImage! is non-sparse then the image or disjoint plane to be copied must7 be bound completely and contiguously to a single )v objectsrcImageLayout must6 specify the layout of the image subresources of srcImage specified in pRegions0 at the time this command is executed on a )srcImageLayout must be  D,  I , or  ? The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of dstImage must contain ndstImage must have been created with  usage flagIf dstImage! is non-sparse then the image or disjoint0 plane that is the destination of the copy must< be bound completely and contiguously to a single )v objectdstImageLayout must6 specify the layout of the image subresources of dstImage specified in pRegions0 at the time this command is executed on a )dstImageLayout must be  C,  I , or  ?If the  of each of srcImage and dstImage is not a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , the  of each of srcImage and dstImage must be compatible, as defined phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-images-format-compatibilityabove'In a copy to or from a plane of a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar image , the  of the image and plane must! be compatible according to  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes$the description of compatible planes for the plane being copiedThe sample count of srcImage and dstImage must matchIf  commandBuffer( is an unprotected command buffer, then srcImage must not be a protected imageIf  commandBuffer( is an unprotected command buffer, then dstImage must not be a protected imageIf  commandBuffer% is a protected command buffer, then dstImage must not be an unprotected imageThe srcSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in * when srcImage was createdThe dstSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in * when dstImage was createdThe srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in * when srcImage was createdThe dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in * when dstImage was createdThe  srcOffset and extent members of each element of pRegions must= respect the image transfer granularity requirements of  commandBuffer5 s command pool s queue family, as described in  The  dstOffset and extent members of each element of pRegions must= respect the image transfer granularity requirements of  commandBuffer5 s command pool s queue family, as described in  dstImage and srcImage must not have been created with flags containing uValid Usage (Implicit) commandBuffer must be a valid  handle srcImage must be a valid u handlesrcImageLayout must be a valid J valuedstImage must be a valid u handledstImageLayout must be a valid J valuepRegions must# be a valid pointer to an array of  regionCount valid ! structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations This command must1 only be called outside of a render pass instance regionCount must be greater than 0Each of  commandBuffer, dstImage, and srcImage mustD have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, u, !, J'>vulkanUvkCmdBlitImage - Copy regions of an image, potentially performing format conversion, Parameters commandBufferD is the command buffer into which the command will be recorded.srcImage is the source image.srcImageLayoutB is the layout of the source image subresources for the blit.dstImage is the destination image.dstImageLayoutG is the layout of the destination image subresources for the blit. regionCount" is the number of regions to blit.pRegions is a pointer to an array of "0 structures specifying the regions to blit.filter is a FB specifying the filter to apply if the blits require scaling. Description'> mustA not be used for multisampled source or destination images. Use 'F 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:+scale_u = (xsrc1 - xsrc0) / (xdst1 - xdst0)+scale_v = (ysrc1 - ysrc0) / (ydst1 - ydst0)+scale_w = (zsrc1 - zsrc0) / (zdst1 - zdst0)uscaled = uoffset * scaleuvscaled = voffset * scalevwscaled = woffset * scalewFinally the source offset is added to the scaled coordinates, to determine the final unnormalized coordinates used to sample from srcImage:u = uscaled + xsrc0v = vscaled + ysrc0w = wscaled + zsrc0q = mipLevela = aoffset + baseArrayCountsrcNThese coordinates are used to sample from the source image, as described in  Vhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#texturesImage Operations chapter), with the filter mode equal to that of filter, a mipmap mode of ] and an address mode of . Implementations must, clamp at the edge of the source image, and may6 additionally clamp to the edge of the source region.Note<Due to allowable rounding errors in the generation of the source texture coordinates, it is not always possible to guarantee exactly which source texels will be sampled for a given blit. As rounding errors are implementation dependent, the exact results of a blitting operation are also implementation dependent.0Blits are done layer by layer starting with the baseArrayLayer member of srcSubresource for the source and dstSubresource for the destination.  layerCount- layers are blitted to the destination image.P3D textures are blitted slice by slice. Slices in the source region bounded by  srcOffsets [0].z and  srcOffsetsA[1].z are copied to slices in the destination region bounded by  dstOffsets [0].z and  dstOffsets,[1].z. For each destination slice, a source z. coordinate is linearly interpolated between  srcOffsets [0].z and  srcOffsets[1].z. If the filter parameter is  aj then the value sampled from the source image is taken by doing linear filtering using the interpolated z coordinate. If filter parameter is  b 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/The source region specified by each element of pRegions must+ be a region that is contained within srcImage4The destination region specified by each element of pRegions must& be a region that is contained within dstImageHThe union of all destination regions, specified by the elements of pRegions, must+ not overlap in memory with any texel that may* be sampled during the blit operation The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain nsrcImage must! not use a format listed in xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionsrcImage must have been created with  usage flagIf srcImage is non-sparse then it must< be bound completely and contiguously to a single )v objectsrcImageLayout must6 specify the layout of the image subresources of srcImage specified in pRegions0 at the time this command is executed on a )srcImageLayout must be  ?,  D or  I The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of dstImage must contain ndstImage must! not use a format listed in xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversiondstImage must have been created with  usage flagIf dstImage is non-sparse then it must< be bound completely and contiguously to a single )v objectdstImageLayout must6 specify the layout of the image subresources of dstImage specified in pRegions0 at the time this command is executed on a )dstImageLayout must be  ?,  C or  I If either of srcImage or dstImage( was created with a signed integer , the other must3 also have been created with a signed integer  If either of srcImage or dstImage+ was created with an unsigned integer , the other must6 also have been created with an unsigned integer  If either of srcImage or dstImage9 was created with a depth/stencil format, the other must have exactly the same formatIf srcImage* was created with a depth/stencil format, filter must be  bsrcImage must have been created with a samples value of !ndstImage must have been created with a samples value of !nIf filter is  a, then the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain nIf filter is , then the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain If filter is , srcImage must have a  of If  commandBuffer( is an unprotected command buffer, then srcImage must not be a protected imageIf  commandBuffer( is an unprotected command buffer, then dstImage must not be a protected imageIf  commandBuffer% is a protected command buffer, then dstImage must not be an unprotected imageThe srcSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in * when srcImage was createdThe dstSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in * when dstImage was createdThe srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in * when srcImage was createdThe dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in * when dstImage was createddstImage and srcImage must not have been created with flags containing uValid Usage (Implicit) commandBuffer must be a valid  handle srcImage must be a valid u handlesrcImageLayout must be a valid J valuedstImage must be a valid u handledstImageLayout must be a valid J valuepRegions must# be a valid pointer to an array of  regionCount valid " structuresfilter must be a valid F value commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations This command must1 only be called outside of a render pass instance regionCount must be greater than 0Each of  commandBuffer, dstImage, and srcImage mustD have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, F, u, ", J'?vulkan>vkCmdCopyBufferToImage - Copy data from a buffer into an image Parameters commandBufferD is the command buffer into which the command will be recorded. srcBuffer is the source buffer.dstImage is the destination image.dstImageLayoutG is the layout of the destination image subresources for the copy. regionCount" is the number of regions to copy.pRegions is a pointer to an array of %0 structures specifying the regions to copy. 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 format3), 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 k, k, or k. For the purposes of '?Q, 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  aspectMask: of the corresponding subresource. This applies both to I 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 srcBuffer mustZ be large enough to contain all buffer locations that are accessed according to  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-addressingBuffer and Image Addressing, for each element of pRegions.The image region specified by each element of pRegions must+ be a region that is contained within dstImage if the dstImage s  is not a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , and mustL be a region that is contained within the plane being copied to if the dstImage s  is a multi-planar formatmThe union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory srcBuffer must have been created with } usage flag The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of dstImage must contain nIf  srcBuffer is non-sparse then it must< be bound completely and contiguously to a single )v objectdstImage must have been created with  usage flagIf dstImage is non-sparse then it must< be bound completely and contiguously to a single )v objectdstImage must# have a sample count equal to !ndstImageLayout must6 specify the layout of the image subresources of dstImage specified in pRegions0 at the time this command is executed on a )dstImageLayout must be  C,  I , or  ?If  commandBuffer- is an unprotected command buffer, then  srcBuffer must not be a protected bufferIf  commandBuffer( is an unprotected command buffer, then dstImage must not be a protected imageIf  commandBuffer% is a protected command buffer, then dstImage must not be an unprotected imageThe imageSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in * when dstImage was createdThe imageSubresource.baseArrayLayer + imageSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in * when dstImage was createdThe  imageOffset and  imageExtent! members of each element of pRegions must= respect the image transfer granularity requirements of  commandBuffer: s command pool s queue family, as described in  dstImage must not have been created with flags containing uValid Usage (Implicit) commandBuffer must be a valid  handle  srcBuffer must be a valid  handledstImage must be a valid u handledstImageLayout must be a valid J valuepRegions must# be a valid pointer to an array of  regionCount valid % structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations This command must1 only be called outside of a render pass instance regionCount must be greater than 0Each of  commandBuffer, dstImage, and  srcBuffer mustD have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, %, , u, J'@vulkan6vkCmdCopyImageToBuffer - Copy image data into a buffer Parameters commandBufferD is the command buffer into which the command will be recorded.srcImage is the source image.srcImageLayoutB is the layout of the source image subresources for the copy. dstBuffer is the destination buffer. regionCount" is the number of regions to copy.pRegions is a pointer to an array of %0 structures specifying the regions to copy. 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 k, k, or k. For the purposes of '?Q, 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  aspectMask: of the corresponding subresource. This applies both to I 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.The image region specified by each element of pRegions must+ be a region that is contained within srcImage if the srcImage s  is not a  xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionmulti-planar format , and mustI be a region that is contained within the plane being copied if the srcImage s  is a multi-planar format dstBuffer mustZ be large enough to contain all buffer locations that are accessed according to  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-addressingBuffer and Image Addressing, for each element of pRegionsmThe union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of srcImage must contain nsrcImage must have been created with  usage flagIf srcImage is non-sparse then it must< be bound completely and contiguously to a single )v objectsrcImage must# have a sample count equal to !nsrcImageLayout must6 specify the layout of the image subresources of srcImage specified in pRegions0 at the time this command is executed on a )srcImageLayout must be  ?,  D or  I dstBuffer must have been created with }1 usage flagIf  dstBuffer is non-sparse then it must< be bound completely and contiguously to a single )v objectIf  commandBuffer( is an unprotected command buffer, then srcImage must not be a protected imageIf  commandBuffer- is an unprotected command buffer, then  dstBuffer must not be a protected bufferIf  commandBuffer% is a protected command buffer, then  dstBuffer must not be an unprotected bufferThe imageSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in * when srcImage was createdThe imageSubresource.baseArrayLayer + imageSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in * when srcImage was createdThe  imageOffset and  imageExtent! members of each element of pRegions must= respect the image transfer granularity requirements of  commandBuffer: s command pool s queue family, as described in  srcImage must not have been created with flags containing uValid Usage (Implicit) commandBuffer must be a valid  handle srcImage must be a valid u handlesrcImageLayout must be a valid J value dstBuffer must be a valid  handlepRegions must# be a valid pointer to an array of  regionCount valid % structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations This command must1 only be called outside of a render pass instance regionCount must be greater than 0Each of  commandBuffer,  dstBuffer, and srcImage mustD have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, %, , u, J'Avulkan?vkCmdUpdateBuffer - Update a buffer s contents from host memory Parameters commandBufferD is the command buffer into which the command will be recorded. dstBuffer) is a handle to the buffer to be updated. dstOffset@ is the byte offset into the buffer to start updating, and must be a multiple of 4.dataSize' is the number of bytes to update, and must be a multiple of 4.pDataA is a pointer to the source data for the buffer update, and must be at least dataSize bytes in size. 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 'A 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 'A\ 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.'A is only allowed outside of a render pass. This command is treated as transfer  operation, for the purposes of synchronization barriers. The }1 must be specified in usage of 0 in order for the buffer to be compatible with 'A. Valid Usage dstOffset must be less than the size of  dstBufferdataSize must& be less than or equal to the size of  dstBuffer minus  dstOffset dstBuffer must have been created with }1 usage flagIf  dstBuffer is non-sparse then it must< be bound completely and contiguously to a single )v object dstOffset must be a multiple of 4dataSize must be less than or equal to 65536dataSize must be a multiple of 4If  commandBuffer- is an unprotected command buffer, then  dstBuffer must not be a protected bufferIf  commandBuffer% is a protected command buffer, then  dstBuffer must not be an unprotected bufferValid Usage (Implicit) commandBuffer must be a valid  handle dstBuffer must be a valid  handlepData must# be a valid pointer to an array of dataSize bytes commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations This command must1 only be called outside of a render pass instancedataSize must be greater than 0Both of  commandBuffer, and  dstBuffer 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 v Primary Secondary j Outside g Transfer Graphics Compute  Transfer See Also, , 'Bvulkan>vkCmdFillBuffer - Fill a region of a buffer with a fixed value Parameters commandBufferD is the command buffer into which the command will be recorded. dstBuffer is the buffer to be filled. dstOffsetH is the byte offset into the buffer at which to start filling, and must be a multiple of 4.size% 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 $z is used and the remaining size of the buffer is not a multiple of 4, then the nearest smaller multiple is used.dataB is the 4-byte word written repeatedly to the buffer to fill sizeY bytes of data. The data word is written to memory according to the host endianness. Description'BX is treated as transfer  operation for the purposes of synchronization barriers. The }1 must be specified in usage of 0 in order for the buffer to be compatible with 'B. Valid Usage dstOffset must be less than the size of  dstBuffer dstOffset must be a multiple of 4If size is not equal to $, size must be greater than 0If size is not equal to $, size must+ be less than or equal to the size of  dstBuffer minus  dstOffsetIf size is not equal to $, size must be a multiple of 4 dstBuffer must have been created with }1 usage flagIf  dstBuffer is non-sparse then it must< be bound completely and contiguously to a single )v objectIf  commandBuffer- is an unprotected command buffer, then  dstBuffer must not be a protected bufferIf  commandBuffer% is a protected command buffer, then  dstBuffer must not be an unprotected bufferValid Usage (Implicit) commandBuffer must be a valid  handle dstBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must6 support transfer, graphics or compute operations This command must1 only be called outside of a render pass instanceBoth of  commandBuffer, and  dstBuffer 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 v Primary Secondary j Outside g Transfer Graphics Compute  Transfer See Also, , 'Cvulkan5vkCmdClearColorImage - Clear regions of a color image Parameters commandBufferD is the command buffer into which the command will be recorded.image is the image to be cleared. imageLayoutV specifies the current layout of the image subresource ranges to be cleared, and must be  ?,  I or  C.pColor is a pointer to a j 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). rangeCount= is the number of image subresource range structures in pRanges.pRanges" is a pointer to an array of y 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. DescriptionEach specified range in pRanges' is cleared to the value specified by pColor. Valid Usage The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of image must contain n image must have been created with  usage flagimage must! not use a format listed in xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversionIf image is non-sparse then it must< be bound completely and contiguously to a single )v object imageLayout must< specify the layout of the image subresource ranges of image specified in pRanges0 at the time this command is executed on a ) imageLayout must be  C,  I , or  ? The :: aspectMask% members of the elements of the pRanges array must each only include k The :: baseMipLevel% members of the elements of the pRanges array must each be less than the  mipLevels specified in * when image was created For each  element of pRanges , if the  levelCount member is not  , then  baseMipLevel +  levelCount must be less than the  mipLevels specified in * when image was created The ::baseArrayLayer% members of the elements of the pRanges array must each be less than the  arrayLayers specified in * when image was created For each  element of pRanges , if the  layerCount member is not  , then baseArrayLayer +  layerCount must be less than the  arrayLayers specified in * when image was createdimage must. not have a compressed or depth/stencil formatIf  commandBuffer( is an unprotected command buffer, then image must not be a protected imageIf  commandBuffer% is a protected command buffer, then image must not be an unprotected imageValid Usage (Implicit) commandBuffer must be a valid  handle image must be a valid u handle imageLayout must be a valid J valuepColor must$ be a valid pointer to a valid  unionpRanges must# be a valid pointer to an array of  rangeCount valid  structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must- support graphics, or compute operations This command must1 only be called outside of a render pass instance rangeCount must be greater than 0Both of  commandBuffer, and image 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, , u, J, 'DvulkanMvkCmdClearDepthStencilImage - Fill regions of a combined depth/stencil image Parameters commandBufferD is the command buffer into which the command will be recorded.image is the image to be cleared. imageLayoutV specifies the current layout of the image subresource ranges to be cleared, and must be  I or  C. pDepthStencil is a pointer to a | 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). rangeCount= is the number of image subresource range structures in pRanges.pRanges" is a pointer to an array of y 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. Valid Usage The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of image must contain nIf the aspect member of any element of pRanges includes k[ , and image was created with  "VkImageStencilUsageCreateInfo.htmlseparate stencil usage,  must have been included in the [W:: stencilUsage used to create imageIf the aspect member of any element of pRanges includes k[ , and image was not created with  "VkImageStencilUsageCreateInfo.htmlseparate stencil usage,  must have been included in the *::usage used to create imageIf the aspect member of any element of pRanges includes kZ,  must have been included in the *::usage used to create imageIf image is non-sparse then it must< be bound completely and contiguously to a single )v object imageLayout must< specify the layout of the image subresource ranges of image specified in pRanges0 at the time this command is executed on a ) imageLayout must be either of  C or  I The :: aspectMask$ member of each element of the pRanges array must' not include bits other than kZ or k[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 k[ bitIf the image9 s format does not have a depth component, then the :: aspectMask$ member of each element of the pRanges array must not include the kZ bit The :: baseMipLevel% members of the elements of the pRanges array must each be less than the  mipLevels specified in * when image was created For each  element of pRanges , if the  levelCount member is not  , then  baseMipLevel +  levelCount must be less than the  mipLevels specified in * when image was created The ::baseArrayLayer% members of the elements of the pRanges array must each be less than the  arrayLayers specified in * when image was created For each  element of pRanges , if the  layerCount member is not  , then baseArrayLayer +  layerCount must be less than the  arrayLayers specified in * when image was createdimage must have a depth/stencil formatIf  commandBuffer( is an unprotected command buffer, then image must not be a protected imageIf  commandBuffer% is a protected command buffer, then image must not be an unprotected imageValid Usage (Implicit) commandBuffer must be a valid  handle image must be a valid u handle imageLayout must be a valid J value pDepthStencil must$ be a valid pointer to a valid  structurepRanges must# be a valid pointer to an array of  rangeCount valid  structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations This command must1 only be called outside of a render pass instance rangeCount must be greater than 0Both of  commandBuffer, and image 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  Transfer See Also, , u, J, 'EvulkanKvkCmdClearAttachments - Clear regions within bound framebuffer attachments Parameters commandBufferD is the command buffer into which the command will be recorded.attachmentCount! is the number of entries in the  pAttachments array. 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 k7, then the clear has no effect on that attachment. rectCount! is the number of entries in the pRects array.pRects is a pointer to an array of #K structures defining regions within each selected attachment to clear. Description'E 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, 'Ek 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 UsageIf the  aspectMask member of any element of  pAttachments contains k, then the colorAttachment member of that element must7 either refer to a color attachment which is k, or must! be a valid color attachment If the  aspectMask member of any element of  pAttachments contains kZ:, then the current subpass' depth/stencil attachment must either be k , or must have a depth componentIf the  aspectMask member of any element of  pAttachments contains k[:, then the current subpass' depth/stencil attachment must either be k , or must have a stencil componentThe rect member of each element of pRects must have an  extent.width greater than 0The rect member of each element of pRects must have an  extent.height greater than 04The rectangular region specified by each element of pRects mustR be contained within the render area of the current render pass instance(The layers specified by each element of pRects must0 be contained within every attachment that  pAttachments refers toThe  layerCount member of each element of pRects must not be 0If  commandBufferK is an unprotected command buffer, then each attachment to be cleared must not be a protected imageIf  commandBufferH is a protected command buffer, then each attachment to be cleared must not be an unprotected imageJIf the render pass instance this is recorded in uses multiview, then baseArrayLayer must be zero and  layerCount must be oneValid Usage (Implicit) commandBuffer must be a valid  handle pAttachments must( be a valid pointer to an array of attachmentCount valid $ structurespRects must# be a valid pointer to an array of  rectCount # structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations This command must0 only be called inside of a render pass instanceattachmentCount must be greater than 0 rectCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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$, #, 'Fvulkan/vkCmdResolveImage - Resolve regions of an image Parameters commandBufferD is the command buffer into which the command will be recorded.srcImage is the source image.srcImageLayoutE is the layout of the source image subresources for the resolve.dstImage is the destination image.dstImageLayoutJ is the layout of the destination image subresources for the resolve. regionCount% is the number of regions to resolve.pRegions is a pointer to an array of  3 structures specifying the regions to resolve. 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./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/The source region specified by each element of pRegions must+ be a region that is contained within srcImage4The destination region specified by each element of pRegions must& be a region that is contained within dstImagemThe union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memoryIf srcImage is non-sparse then it must< be bound completely and contiguously to a single )v objectsrcImage mustP have a sample count equal to any valid sample count value other than !nIf dstImage is non-sparse then it must< be bound completely and contiguously to a single )v objectdstImage must# have a sample count equal to !nsrcImageLayout must6 specify the layout of the image subresources of srcImage specified in pRegions0 at the time this command is executed on a )srcImageLayout must be  ?,  D or  IdstImageLayout must6 specify the layout of the image subresources of dstImage specified in pRegions0 at the time this command is executed on a )dstImageLayout must be  ?,  C or  I The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features of dstImage must contain nosrcImage and dstImage must2 have been created with the same image formatIf  commandBuffer( is an unprotected command buffer, then srcImage must not be a protected imageIf  commandBuffer( is an unprotected command buffer, then dstImage must not be a protected imageIf  commandBuffer% is a protected command buffer, then dstImage must not be an unprotected imageThe srcSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in * when srcImage was createdThe dstSubresource.mipLevel member of each element of pRegions must be less than the  mipLevels specified in * when dstImage was createdThe srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in * when srcImage was createdThe dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must# be less than or equal to the  arrayLayers specified in * when dstImage was createddstImage and srcImage must not have been created with flags containing uValid Usage (Implicit) commandBuffer must be a valid  handle srcImage must be a valid u handlesrcImageLayout must be a valid J valuedstImage must be a valid u handledstImageLayout must be a valid J valuepRegions must# be a valid pointer to an array of  regionCount valid   structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations This command must1 only be called outside of a render pass instance regionCount must be greater than 0Each of  commandBuffer, dstImage, and srcImage mustD have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, u, J,  'Gvulkan5vkCmdSetEvent - Set an event object to signaled state Parameters commandBuffer? is the command buffer into which the command is recorded.event$ is the event that will be signaled. stageMask specifies 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 signaled. DescriptionWhen 'G is submitted to a queue, it defines an execution dependency on commands that were submitted before it, and defines an event signal operation which sets the event to the signaled state. The first  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope/ includes all commands that occur earlier in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission ordera. The synchronization scope is limited to operations on the pipeline stages determined by the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-maskssource stage mask specified by  stageMask. The second  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope+ includes only the event signal operation.If event' is already in the signaled state when 'G" is executed on the device, then 'G\ has no effect, no event signal operation occurs, and no execution dependency is generated. Valid Usage stageMask must not include  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  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  commandBuffer s current device mask must) include exactly one physical device 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  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 Valid Usage (Implicit) commandBuffer must be a valid  handleevent must be a valid x handle stageMask must be a valid combination of S values stageMask must not be 0 commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must- support graphics, or compute operations This command must1 only be called outside of a render pass instanceBoth of  commandBuffer, and event 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  See Also, x, R'Hvulkan=vkCmdResetEvent - Reset an event object to non-signaled state Parameters commandBuffer? is the command buffer into which the command is recorded.event& is the event that will be unsignaled. stageMask is a bitmask of S 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. DescriptionWhen 'H is submitted to a queue, it defines an execution dependency on commands that were submitted before it, and defines an event unsignal operation which resets the event to the unsignaled state. The first  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope/ includes all commands that occur earlier in  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-ordersubmission ordera. The synchronization scope is limited to operations on the pipeline stages determined by the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-maskssource stage mask specified by  stageMask. The second  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopessynchronization scope- includes only the event unsignal operation.If event) is already in the unsignaled state when 'H" is executed on the device, then 'H^ has no effect, no event unsignal operation occurs, and no execution dependency is generated. Valid Usage stageMask must not include  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  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 When this command executes, event must not be waited on by a 'I$ command that is currently executing commandBuffer s current device mask must) include exactly one physical device 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  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 Valid Usage (Implicit) commandBuffer must be a valid  handleevent must be a valid x handle stageMask must be a valid combination of S values stageMask must not be 0 commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must- support graphics, or compute operations This command must1 only be called outside of a render pass instanceBoth of  commandBuffer, and event 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  See Also, x, R'IvulkanHvkCmdWaitEvents - Wait for one or more events and insert a set of memory Parameters commandBuffer? is the command buffer into which the command is recorded.  eventCount is the length of the pEvents array.pEventsB is a pointer to an array of event object handles to wait on. srcStageMask is a bitmask of S specifying the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagessource stage mask. dstStageMask is a bitmask of S specifying the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stagesdestination stage mask.memoryBarrierCount is the length of the pMemoryBarriers array.pMemoryBarriers" is a pointer to an array of  structures.bufferMemoryBarrierCount is the length of the pBufferMemoryBarriers array.pBufferMemoryBarriers" is a pointer to an array of  structures.imageMemoryBarrierCount is the length of the pImageMemoryBarriers array.pImageMemoryBarriers" is a pointer to an array of  structures. DescriptionWhen 'I 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. 'I 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 'G 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  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.Note'I is used with 'G to define a memory dependency between two sets of action commands, roughly in the same way as pipeline barriers, but split into two commands such that work between the two may execute unhindered.Unlike 'J, a  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfersqueue family ownership transfer cannot be performed using 'I.Note Applications shouldi be careful to avoid race conditions when using events. There is no direct ordering guarantee between a 'H command and a 'IA command submitted after it, so some other execution dependency must8 be included between these commands (e.g. a semaphore). Valid Usage srcStageMask must be the bitwise OR of the  stageMask* parameter used in previous calls to 'G! with any of the members of pEvents and  if any of the members of pEvents was set using % If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  srcStageMask must not contain  If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  dstStageMask must not contain  If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  srcStageMask must not contain  or  If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  dstStageMask must not contain  or If pEvents; includes one or more events that will be signaled by % after  commandBuffer* has been submitted to a queue, then 'I must1 not be called inside a render pass instanceAny pipeline stage included in  srcStageMask or  dstStageMask mustL be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the  1 structure that was used to create the ) that  commandBuffer3 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 stagesEach element of pMemoryBarriers, pBufferMemoryBarriers or pImageMemoryBarriers must/ not have any access flag included in its  srcAccessMaskK member if that bit is not supported by any 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 typesEach element of pMemoryBarriers, pBufferMemoryBarriers or pImageMemoryBarriers must/ not have any access flag included in its  dstAccessMaskK member if that bit is not supported by any 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 typesThe srcQueueFamilyIndex and dstQueueFamilyIndex members of any element of pBufferMemoryBarriers or pImageMemoryBarriers must be equal commandBuffer s current device mask must) include exactly one physical device If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  srcStageMask must not contain  If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  srcStageMask must not contain  If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  dstStageMask must not contain  If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  dstStageMask must not contain The  srcAccessMask member of each element of pMemoryBarriers must\ only include access flags that are supported by one or more of the pipeline stages in  srcStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesThe  dstAccessMask member of each element of pMemoryBarriers must\ only include access flags that are supported by one or more of the pipeline stages in  dstStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesThe  srcAccessMask member of each element of pBufferMemoryBarriers must\ only include access flags that are supported by one or more of the pipeline stages in  srcStageMask , as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesThe  dstAccessMask member of each element of pBufferMemoryBarriers must\ only include access flags that are supported by one or more of the pipeline stages in  dstStageMask , as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesThe  srcAccessMask member of each element of pImageMemoryBarriers must\ only include access flags that are supported by one or more of the pipeline stages in  srcStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesThe  dstAccessMask member of any element of pImageMemoryBarriers must\ only include access flags that are supported by one or more of the pipeline stages in  dstStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesValid Usage (Implicit) commandBuffer must be a valid  handle pEvents must# be a valid pointer to an array of  eventCount valid x handles srcStageMask must be a valid combination of S values srcStageMask must not be 0 dstStageMask must be a valid combination of S values dstStageMask must not be 0If memoryBarrierCount is not 0, pMemoryBarriers must( be a valid pointer to an array of memoryBarrierCount valid  structuresIf bufferMemoryBarrierCount is not 0, pBufferMemoryBarriers must# be a valid pointer to an array of bufferMemoryBarrierCount valid  structuresIf imageMemoryBarrierCount is not 0, pImageMemoryBarriers must# be a valid pointer to an array of imageMemoryBarrierCount valid  structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must- support graphics, or compute operations eventCount must be greater than 0Both of  commandBuffer, and the elements of pEvents mustD have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, , x, , , R'Jvulkan1vkCmdPipelineBarrier - Insert a memory dependency Parameters commandBuffer? is the command buffer into which the command is recorded.  srcStageMask is a bitmask of S specifying the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-maskssource stage mask. dstStageMask is a bitmask of S specifying the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masksdestination stage mask.dependencyFlags is a bitmask of DB specifying how execution and memory dependencies are formed.memoryBarrierCount is the length of the pMemoryBarriers array.pMemoryBarriers" is a pointer to an array of  structures.bufferMemoryBarrierCount is the length of the pBufferMemoryBarriers array.pBufferMemoryBarriers" is a pointer to an array of  structures.imageMemoryBarrierCount is the length of the pImageMemoryBarriers array.pImageMemoryBarriers" is a pointer to an array of  structures. DescriptionWhen 'J is submitted to a queue, it defines a memory dependency between commands that were submitted before it, and those submitted after it.If 'J: 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 'J| 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 'J; 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 'J{ 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 If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  srcStageMask must not contain  If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  dstStageMask must not contain  If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  srcStageMask must not contain  or  If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  dstStageMask must not contain  or If 'J? is called within a render pass instance, the render pass must* have been created with at least one 0 instance in 0+:: pDependenciesY that expresses a dependency from the current subpass to itself, and for which  srcStageMask- contains a subset of the bit values in 0:: srcStageMask,  dstStageMask- contains a subset of the bit values in 0:: dstStageMask, dependencyFlags is equal to 0::dependencyFlags,  srcAccessMask member of each element of pMemoryBarriers and pImageMemoryBarriers- contains a subset of the bit values in 0:: srcAccessMask , and  dstAccessMask member of each element of pMemoryBarriers and pImageMemoryBarriers- contains a subset of the bit values in 0:: dstAccessMaskIf 'J/ is called within a render pass instance, bufferMemoryBarrierCount must be 0If 'J3 is called within a render pass instance, the image member of any element of pImageMemoryBarriers must) be equal to one of the elements of  pAttachments that the current  framebufferO was created with, that is also referred to by one of the elements of the pColorAttachments, pResolveAttachments or pDepthStencilAttachment members of the 0k instance or by the pDepthStencilResolveAttachment member of the _D9 structure that the current subpass was created withIf 'J3 is called within a render pass instance, the  oldLayout and  newLayout members of any element of pImageMemoryBarriers must be equal to the layout" member of an element of the pColorAttachments, pResolveAttachments or pDepthStencilAttachment members of the 0k instance or by the pDepthStencilResolveAttachment member of the _DX structure that the current subpass was created with, that refers to the same imageIf 'J3 is called within a render pass instance, the  oldLayout and  newLayout members of an element of pImageMemoryBarriers must be equalIf 'J3 is called within a render pass instance, the srcQueueFamilyIndex and dstQueueFamilyIndex members of any element of pImageMemoryBarriers must be vAny pipeline stage included in  srcStageMask or  dstStageMask mustL be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the  1 structure that was used to create the ) that  commandBuffer3 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 stagesIf 'J3 is called outside of a render pass instance, dependencyFlags must not include  If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  srcStageMask must not contain  If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  srcStageMask must not contain  If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  dstStageMask must not contain  If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  dstStageMask must not contain The  srcAccessMask member of each element of pMemoryBarriers must\ only include access flags that are supported by one or more of the pipeline stages in  srcStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesThe  dstAccessMask member of each element of pMemoryBarriers must\ only include access flags that are supported by one or more of the pipeline stages in  dstStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesFor any element of pBufferMemoryBarriers, if its srcQueueFamilyIndex and dstQueueFamilyIndex# members are equal, or if its srcQueueFamilyIndexN is the queue family index that was used to create the command pool that  commandBuffer# was allocated from, then its  srcAccessMask member musta only contain access flags that are supported by one or more of the pipeline stages in  srcStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesFor any element of pBufferMemoryBarriers, if its srcQueueFamilyIndex and dstQueueFamilyIndex# members are equal, or if its dstQueueFamilyIndexN is the queue family index that was used to create the command pool that  commandBuffer# was allocated from, then its  dstAccessMask member musta only contain access flags that are supported by one or more of the pipeline stages in  dstStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesFor any element of pImageMemoryBarriers, if its srcQueueFamilyIndex and dstQueueFamilyIndex# members are equal, or if its srcQueueFamilyIndexN is the queue family index that was used to create the command pool that  commandBuffer# was allocated from, then its  srcAccessMask member musta only contain access flags that are supported by one or more of the pipeline stages in  srcStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesFor any element of pImageMemoryBarriers, if its srcQueueFamilyIndex and dstQueueFamilyIndex# members are equal, or if its dstQueueFamilyIndexN is the queue family index that was used to create the command pool that  commandBuffer# was allocated from, then its  dstAccessMask member musta only contain access flags that are supported by one or more of the pipeline stages in  dstStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesValid Usage (Implicit) commandBuffer must be a valid  handle  srcStageMask must be a valid combination of S values srcStageMask must not be 0 dstStageMask must be a valid combination of S values dstStageMask must not be 0dependencyFlags must be a valid combination of D valuesIf memoryBarrierCount is not 0, pMemoryBarriers must( be a valid pointer to an array of memoryBarrierCount valid  structuresIf bufferMemoryBarrierCount is not 0, pBufferMemoryBarriers must# be a valid pointer to an array of bufferMemoryBarrierCount valid  structuresIf imageMemoryBarrierCount is not 0, pImageMemoryBarriers must# be a valid pointer to an array of imageMemoryBarrierCount valid  structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) 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, , C, , , R'KvulkanvkCmdBeginQuery - Begin a query Parameters commandBufferE is the command buffer into which this command will be recorded. queryPoolB is the query pool that will manage the results of the query.queryM is the query index within the query pool that will contain the results.flags is a bitmask of U: specifying constraints on the types of queries that can be performed. 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 'K is equivalent to calling 8 with the index parameter set to zero.2After beginning a query, that query is considered active within the command buffer it was called in until that same query is ended. Queries active in a primary command buffer when secondary command buffers are executed are considered active for those secondary command buffers. Valid Usage queryPool must have been created with a  queryType: that differs from that of any queries that are  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive within  commandBuffer All queries used by the command must be unavailableThe  queryType used to create  queryPool must not be ) If the  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-occlusionQueryPreciseprecise occlusion queries% feature is not enabled, or the  queryType used to create  queryPool was not *, flags must not contain query must' be less than the number of queries in  queryPoolIf the  queryType used to create  queryPool was * , the ) that  commandBuffer was allocated from must support graphics operationsIf the  queryType used to create  queryPool was + and any of the pipelineStatistics( indicate graphics operations, the ) that  commandBuffer was allocated from must! support graphics operationsIf the  queryType used to create  queryPool was + and any of the pipelineStatistics' indicate compute operations, the ) that  commandBuffer was allocated from must support compute operations commandBuffer must" not be a protected command buffer4If called within a render pass instance, the sum of queryD and the number of bits set in the current subpass s view mask must8 be less than or equal to the number of queries in  queryPoolIf the  queryType used to create  queryPool was # the ) that  commandBuffer was allocated from must! support graphics operationsIf the  queryType used to create  queryPool was # then ::transformFeedbackQueries must be supportedIf  queryPool was created with a  queryType of ,, the  \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#profiling-lockprofiling lock must have been held before  was called on  commandBufferIf  queryPool was created with a  queryType of ,- and one of the counters used to create  queryPool was -, the query begin must' be the first recorded command in  commandBufferIf  queryPool was created with a  queryType of ,- and one of the counters used to create  queryPool was ., the begin command must3 not be recorded within a render pass instanceIf  queryPool was created with a  queryType of ,$ and another query pool with a  queryType , has been used within  commandBuffer, its parent primary command buffer or secondary command buffer recorded within the same parent primary command buffer as  commandBuffer , the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-features-performanceCounterMultipleQueryPools$performanceCounterMultipleQueryPools feature must be enabledIf  queryPool was created with a  queryType of ,, this command must{ not be recorded in a command buffer that, either directly or through secondary command buffers, also contains a 'N! command affecting the same queryValid Usage (Implicit) commandBuffer must be a valid  handle queryPool must be a valid l handleflags must be a valid combination of U values commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must- support graphics, or compute operationsBoth of  commandBuffer, 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  Both  Graphics Compute  See Also, T, l'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 first argument. To just extract the pair pass '(,)' as the first argument.$Note that there is no inner resource'MvulkanvkCmdEndQuery - Ends a query Parameters commandBufferE is the command buffer into which this command will be recorded. queryPoolB is the query pool that is managing the results of the query.queryJ is the query index within the query pool where the result is stored. DescriptionCalling 'M 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 4 and 'P;, and this is when the query s status is set to available. Once a query is ended the query must~ finish in finite time, unless the state of the query is changed using other commands, e.g. by issuing a reset of the query. Valid Usage All queries used by the command must be fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactivequery must' be less than the number of queries in  queryPool commandBuffer must" not be a protected command bufferIf 'M: is called within a render pass instance, the sum of queryD and the number of bits set in the current subpass s view mask must8 be less than or equal to the number of queries in  queryPoolIf  queryPool was created with a  queryType of ,5 and one or more of the counters used to create  queryPool was - , the 'M must& be the last recorded command in  commandBufferIf  queryPool was created with a  queryType of ,5 and one or more of the counters used to create  queryPool was . , the 'M must3 not be recorded within a render pass instanceValid Usage (Implicit) commandBuffer must be a valid  handle queryPool must be a valid l handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must- support graphics, or compute operationsBoth of  commandBuffer, 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  Both  Graphics Compute  See Also, l'Nvulkan3vkCmdResetQueryPool - Reset queries in a query pool Parameters commandBufferE is the command buffer into which this command will be recorded. queryPoolG is the handle of the query pool managing the queries being reset. firstQuery% is the initial query index to reset. queryCount# is the number of queries to reset. DescriptionJWhen executed on a queue, this command sets the status of query indices [ firstQuery,  firstQuery +  queryCount - 1] to unavailable.If the  queryType used to create  queryPool was ,2, this command sets the status of query indices [ firstQuery,  firstQuery +  queryCount' - 1] to unavailable for each pass of  queryPool, as indicated by a call to d.NoteBecause 'NQ resets all the passes of the indicated queries, applications must not record a 'N command for a  queryPool created with ,\ in a command buffer that needs to be submitted multiple times as indicated by a call to dO. Otherwise applications will never be able to complete the recorded queries. Valid Usage firstQuery must, be less than the number of queries in  queryPool The sum of  firstQuery and  queryCount must8 be less than or equal to the number of queries in  queryPool All queries used by the command must not be activeIf  queryPool was created with ,, this command must not be recorded in a command buffer that, either directly or through secondary command buffers, also contains begin commands for a query from the set of queries [ firstQuery,  firstQuery +  queryCount - 1]Valid Usage (Implicit) commandBuffer must be a valid  handle queryPool must be a valid l handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must- support graphics, or compute operations This command must1 only be called outside of a render pass instanceBoth of  commandBuffer, and  queryPool 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  See Also, l'OvulkanBvkCmdWriteTimestamp - Write a device timestamp into a query object Parameters commandBufferD is the command buffer into which the command will be recorded. pipelineStage is one of the S*, specifying a stage of the pipeline. queryPool2 is the query pool that will manage the timestamp.queryI is the query within the query pool that will contain the timestamp. Description'O 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.'P can then be called to copy the timestamp value from the query pool into buffer memory, with ordering and synchronization behavior equivalent to how other queries operate. Timestamp values can. also be retrieved from the query pool using 4$. As with other queries, the query must be reset using 'N or X<9 before requesting the timestamp value be written to it.While 'O can9 be called inside or outside of a render pass instance, 'P must3 only be called outside of a render pass instance. 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 'O 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 queryPool must have been created with a  queryType of )The query identified by  queryPool and query must be  unavailable The command pool s queue family must support a non-zero timestampValidBits All queries used by the command must be unavailableIf '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  queryPoolValid Usage (Implicit) commandBuffer must be a valid  handle pipelineStage must be a valid S value queryPool must be a valid l handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must7 support transfer, graphics, or compute operationsBoth of  commandBuffer, 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 v Primary Secondary j Both g Transfer Graphics Compute  Transfer See Also, S, l'Pvulkan[vkCmdCopyQueryPoolResults - Copy the results of queries in a query pool to a buffer object Parameters commandBufferE is the command buffer into which this command will be recorded. queryPoolL is the query pool managing the queries containing the desired results. firstQuery is the initial query index. queryCount is the number of queries.  firstQuery and  queryCount) together define a range of queries. dstBuffer is a ? object that will receive the results of the copy command. dstOffset is an offset into  dstBuffer.strideK is the stride in bytes between results for individual queries within  dstBuffer3. The required size of the backing memory for  dstBuffer+ is determined as described above for 4.flags is a bitmask of W3 specifying how and when results are returned. Description'P6 is guaranteed to see the effect of previous uses of 'N 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 4\, but the different style of execution causes some subtle behavioral differences. Because 'P 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 4, implementations mustd 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 ).'PL is considered to be a transfer operation, and its writes to buffer memory must be synchronized using  and 0 before using the results. Valid Usage dstOffset must be less than the size of  dstBuffer  firstQuery must, be less than the number of queries in  queryPool The sum of  firstQuery and  queryCount must8 be less than or equal to the number of queries in  queryPoolIf  is not set in flags then  dstOffset and stride must be multiples of 4If  is set in flags then  dstOffset and stride must be multiples of 8 dstBuffer must have enough storage, from  dstOffset>, to contain the result of each query, as described lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-memorylayouthere dstBuffer must have been created with }1 usage flagIf  dstBuffer is non-sparse then it must< be bound completely and contiguously to a single )v objectIf the  queryType used to create  queryPool was ), flags must not contain If the  queryType used to create  queryPool was ,, ::allowCommandBufferQueryCopies must be If the  queryType used to create  queryPool was ,, flags must not contain ,  or If the  queryType used to create  queryPool was , , the  queryPool mustM have been submitted once for each pass as retrieved via a call to d'P must not be called if the  queryType used to create  queryPool was CValid Usage (Implicit) commandBuffer must be a valid  handle queryPool must be a valid l handle dstBuffer must be a valid  handleflags must be a valid combination of W values commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must- support graphics, or compute operations This command must1 only be called outside of a render pass instanceEach of  commandBuffer,  dstBuffer, and  queryPool mustD have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, , , l, V'Qvulkan8vkCmdPushConstants - Update the values of push constants Parameters commandBufferO is the command buffer in which the push constant update will be recorded.layoutG is the pipeline layout used to program the push constant updates. stageFlags is a bitmask of ]^ specifying the shader stages that will use the push constants in the updated range.offsetR is the start offset of the push constant range to update, in units of bytes.sizeJ is the size of the push constant range to update, in units of bytes.pValues is a pointer to an array of size4 bytes containing the new push constant values. DescriptionNoteAs  stageFlags needs to include all flags the relevant push constant ranges were created with, any flags that are not supported by the queue family that the ) used to allocate  commandBuffer was created on are ignored. Valid Usage(For each byte in the range specified by offset and size# and for each shader stage in  stageFlags, there must" be a push constant range in layout' that includes that byte and that stage(For each byte in the range specified by offset and size@ and for each push constant range that overlaps that byte,  stageFlags must7 include all stages in that push constant range s 3:: stageFlagsoffset must be a multiple of 4size must be a multiple of 4offset must be less than  _::maxPushConstantsSizesize must be less than or equal to  _::maxPushConstantsSize minus offsetValid Usage (Implicit) commandBuffer must be a valid  handlelayout must be a valid m handle stageFlags must be a valid combination of ] values stageFlags must not be 0pValues must# be a valid pointer to an array of size bytes commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must- support graphics, or compute operationssize must be greater than 0Both of  commandBuffer, 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  See Also, m, \'Rvulkan.vkCmdBeginRenderPass - Begin a new render pass Parameters commandBuffer; is the command buffer in which to record the command.pRenderPassBegin is a pointer to a o structure specifying the render pass to begin an instance of, and the framebuffer the instance uses.contents is a `N value specifying how the commands in the first subpass will be provided. DescriptionAfter beginning a render pass instance, the command buffer is ready to record the commands for the first subpass of that render pass. Valid UsageIf any of the  initialLayout or  finalLayout member of the 0 structures or the layout member of the 0O structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is  H\ 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  If any of the  initialLayout or  finalLayout member of the 0 structures or the layout member of the 0O structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is  8,  9,  G, or  F\ 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 If any of the  initialLayout or  finalLayout member of the 0 structures or the layout member of the 0O 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 If any of the stencilInitialLayout or stencilFinalLayout member of the c structures or the  stencilLayout member of the cO 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 If any of the  initialLayout or  finalLayout member of the 0 structures or the layout member of the 0O structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is  E\ 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 If any of the  initialLayout or  finalLayout member of the 0 structures or the layout member of the 0O 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 If any of the  initialLayout or  finalLayout member of the 0 structures or the layout member of the 0O structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is  C\ 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 If any of the  initialLayout members of the 0O structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is not  J, then each such  initialLayout must be equal to the current layout of the corresponding attachment image subresource of the framebuffer specified in the  framebuffer member of pRenderPassBeginThe  srcStageMask and  dstStageMask$ members of any element of the  pDependencies member of 0+ used to create  renderPass mustM be supported by the capabilities of the queue family identified by the queueFamilyIndex member of the  , used to create the command pool which  commandBuffer was allocated fromFor any attachment in  framebuffer that is used by  renderPass^ and is bound to memory locations that are also bound to another attachment used by  renderPasse, and if at least one of those uses causes either attachment to be written to, both attachments must have had the  setValid Usage (Implicit) commandBuffer must be a valid  handlepRenderPassBegin must$ be a valid pointer to a valid  structurecontents must be a valid ` value commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations This command must1 only be called outside of a render pass instance commandBuffer must be a primary Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, , `'Svulkan=A convenience wrapper to make a compatible pair of calls to 'R and 'UTo ensure that 'U is always called: pass '( (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument.$Note that there is no inner resource'TvulkanBvkCmdNextSubpass - Transition to the next subpass of a render pass Parameters commandBuffer; is the command buffer in which to record the command.contents specifies how the commands in the next subpass will be provided, in the same fashion as the corresponding parameter of 'R. Description9The subpass index for a render pass begins at zero when 'R( is recorded, and increments each time 'T 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 UsageThe current subpass index mustG be less than the number of subpasses in the render pass minus one This command must7 not be recorded when transform feedback is activeValid Usage (Implicit) commandBuffer must be a valid  handlecontents must be a valid ` value commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations This command must0 only be called inside of a render pass instance commandBuffer must be a primary Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, `'Uvulkan0vkCmdEndRenderPass - End the current render pass Parameters commandBufferM is the command buffer in which to end the current render pass instance. Description`Ending a render pass instance performs any multisample resolve operations on the final subpass. Valid UsageThe current subpass index mustF be equal to the number of subpasses in the render pass minus one This command must7 not be recorded when transform feedback is activeValid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations This command must0 only be called inside of a render pass instance commandBuffer must be a primary Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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'VvulkanXvkCmdExecuteCommands - Execute a secondary command buffer from a primary command buffer Parameters commandBuffera is a handle to a primary command buffer that the secondary command buffers are executed in.commandBufferCount is the length of the pCommandBuffers array.pCommandBuffers 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. DescriptionIf any element of pCommandBuffers was not recorded with the zg^ flag, and it was recorded into any other primary command buffer which is currently in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleexecutable or recording state(, that primary command buffer becomes  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleinvalid. Valid UsageEach element of pCommandBuffers must! have been allocated with a level of /dEach element of pCommandBuffers must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclepending or executable stateIf any element of pCommandBuffers was not recorded with the zg flag, it must not be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending stateIf any element of pCommandBuffers was not recorded with the zg flag, it must# not have already been recorded to  commandBufferIf any element of pCommandBuffers was not recorded with the zg flag, it must not appear more than once in pCommandBuffersEach element of pCommandBuffers must! have been allocated from a )= that was created for the same queue family as the ) from which  commandBuffer was allocatedIf 'VO is being called within a render pass instance, that render pass instance must have been begun with the contents parameter of 'R set to If 'VE is being called within a render pass instance, each element of pCommandBuffers must' have been recorded with the zIf 'VE is being called within a render pass instance, each element of pCommandBuffers must# have been recorded with ::subpass] set to the index of the subpass which the given command buffer will be executed inIf 'V] is being called within a render pass instance, the render passes specified in the (pBeginInfo->pInheritanceInfo->renderPass members of the 7 commands used to begin recording each element of pCommandBuffers must be  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible" with the current render passIf 'VH is being called within a render pass instance, and any element of pCommandBuffers was recorded with :: framebuffer not equal to . , that v must match the v. used in the current render pass instanceIf 'VG 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 If 'VG 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 ':: transformIf 'VG 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 :: renderAreaIf 'VI is not being called within a render pass instance, each element of pCommandBuffers must+ not have been recorded with the z If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedQueriesinherited queries feature is not enabled,  commandBuffer must not have any queries fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactiveIf  commandBuffer has a * query  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive, then each element of pCommandBuffers must# have been recorded with ::occlusionQueryEnable set to If  commandBuffer has a * query  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive, then each element of pCommandBuffers must# have been recorded with :: queryFlags4 having all bits set that are set for the queryIf  commandBuffer has a + query  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive, then each element of pCommandBuffers must# have been recorded with ::pipelineStatistics3 having all bits set that are set in the l the query usesEach element of pCommandBuffers must. not begin any query types that are  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive in  commandBufferIf  commandBuffer: is a protected command buffer, then each element of pCommandBuffers must be a protected command bufferIf  commandBuffer= is an unprotected command buffer, then each element of pCommandBuffers must! be an unprotected command buffer This command must7 not be recorded when transform feedback is activeValid Usage (Implicit) commandBuffer must be a valid  handlepCommandBuffers must( be a valid pointer to an array of commandBufferCount valid  handles commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must7 support transfer, graphics, or compute operations commandBuffer must be a primary commandBufferCount must be greater than 0Both of  commandBuffer, and the elements of pCommandBuffers must? have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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 Alsol'"'#'$'%'&'''(&&&&&&'' '! &'''''!''''''"' ' '''#''''$&&&&%'' '''' ' &''''')'*'+','-'.'/'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'Vl')'*'+','-'.'/'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'"'#'$'%'&'''('' '!#''''&''''!''''''"' ' '''%'' '''' ' &'''''&&&&&&$&&&&None'"#%&'-./189;=>?FHIMSUVX_dghklmqz?'vulkaniVkRenderPassTransformBeginInfoQCOM - Structure describing transform parameters of a render pass instance Valid Usage transform must be , , , or The  renderpass must have been created with 0+::flags containing UsValid Usage (Implicit)sType must be  See Also, (vulkanVkCommandBufferInheritanceRenderPassTransformInfoQCOM - Structure describing transformed render pass parameters command buffer DescriptionOWhen the secondary is recorded to execute within a render pass instance using  I, the render pass transform parameters of the secondary command buffer mustu 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 Also, , 'vulkan transform must be , , , 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.'''(''''''' '''('''''''None'"#%&'-./189;=>?FHIMSUVX_dghklmq{Ivulkan|VkPipelineViewportExclusiveScissorStateCreateInfoNV - Structure specifying parameters controlling exclusive scissor testing Description"If this structure is not present, exclusiveScissorCount is considered to be 0, and the exclusive scissor test is disabled. Valid Usage If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled, exclusiveScissorCount must be 0 or 1exclusiveScissorCount must be less than or equal to  _:: maxViewportsexclusiveScissorCount must be 0 or identical to the  viewportCount member of 1If no element of the pDynamicStates member of  pDynamicState is + and exclusiveScissorCount is not 0, pExclusiveScissors must( be a valid pointer to an array of exclusiveScissorCount  structuresValid Usage (Implicit)sType must be If exclusiveScissorCount is not 0, and pExclusiveScissors is not NULL, pExclusiveScissors must( be a valid pointer to an array of exclusiveScissorCount  structuresSee Also, 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 OJ, it is filled with values indicating whether the feature is supported.  can also be included in the pNext chain of    to enable the feature.Valid Usage (Implicit)See Also, 'vulkanpExclusiveScissors is a pointer to an array of w structures defining exclusive scissor rectangles. If the exclusive scissor state is dynamic, this member is ignored.'vulkanexclusiveScissorH indicates that the implementation supports the exclusive scissor test.'vulkan^vkCmdSetExclusiveScissorNV - Set the dynamic exclusive scissor rectangles on a command buffer Parameters commandBufferD is the command buffer into which the command will be recorded.firstExclusiveScissorb is the index of the first exclusive scissor rectangle whose state is updated by the command.exclusiveScissorCountK is the number of exclusive scissor rectangles updated by the command.pExclusiveScissors" is a pointer to an array of 7 structures defining exclusive scissor rectangles. 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).*Each scissor rectangle is described by a  structure, with the offset.x and offset.yM values determining the upper left corner of the scissor rectangle, and the  extent.width and  extent.height( values determining the size in pixels. Valid Usage The  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissorexclusive scissor feature must be enabledfirstExclusiveScissor must be less than  _:: maxViewports The sum of firstExclusiveScissor and exclusiveScissorCount must be between 1 and  _:: maxViewports, inclusive If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled, firstExclusiveScissor must be 0 If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled, exclusiveScissorCount must be 1The x and y members of offset in each member of pExclusiveScissors must be greater than or equal to 0Evaluation of (offset.x +  extent.width) for each member of pExclusiveScissors must2 not cause a signed integer addition overflowEvaluation of (offset.y +  extent.height) for each member of pExclusiveScissors must2 not cause a signed integer addition overflowValid Usage (Implicit) commandBuffer must be a valid  handlepExclusiveScissors must( be a valid pointer to an array of exclusiveScissorCount  structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operationsexclusiveScissorCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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,  ''''''''' '''''''''None'"#%&'-./189;=>?FHIMSUVX_dghklmq}Y4vulkan^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 .pQueueFamilyIndicesq is a pointer to an array of queue family indices having access to the images(s) of the swapchain when imageSharingMode is . preTransform is a  value describing the transform, relative to the presentation engine s natural orientation, applied to the image content prior to presentation. If it does not match the currentTransform value returned by mk, the presentation engine will transform the image content as part of the presentation operation.compositeAlpha is a  value indicating the alpha compositing mode to use when this surface is composited together with other surfaces on certain window systems. presentMode is the presentation mode the swapchain will use. A swapchain s present mode determines how incoming present requests will be processed and queued internally.clipped specifies whether the Vulkan implementation is allowed to discard rendering operations that affect regions of the surface that are not visible. If set to ;, the presentable images associated with the swapchain may not own all of their pixels. Pixels in the presentable images that correspond to regions of the target surface obscured by another window on the desktop, or subject to some other clipping mechanism will have undefined content when read back. Fragment shaders maye not execute for these pixels, and thus any side effects they would have had will not occur.  value does not guarantee any clipping will occur, but allows more optimal presentation methods to be used on some platforms. If set to c, presentable images associated with the swapchain will own all of the pixels they contain.Note Applications should set this value to  if they do not expect to read back the content of presentable images before presenting them or after reacquiring them, and if their fragment shaders do not have any side effects that require them to run for all pixels in the presentable image. oldSwapchain is .L, or the existing non-retired swapchain currently associated with surface. Providing a valid  oldSwapchain may aid in the resource reuse, and also allows the application to still present any images that are already acquired from it. Upon calling ' with an  oldSwapchain that is not .,  oldSwapchain is retired  even if creation of the new swapchain fails. The new swapchain is created in the non-retired state whether or not  oldSwapchain is .. Upon calling ' with an  oldSwapchain that is not ., any images from  oldSwapchain* that are not acquired by the application may( be freed by the implementation, which mayE occur even if creation of the new swapchain fails. The application can destroy  oldSwapchain% to free all memory associated with  oldSwapchain.NoteMultiple retired swapchains can be associated with the same D 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 2 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 2. Valid Usagesurface mustL be a surface that is supported by the device as determined using   minImageCount must9 be less than or equal to the value returned in the  maxImageCount member of the ! structure returned by m& for the surface if the returned  maxImageCount is not zeroIf  presentMode is not  nor  , then  minImageCount must< be greater than or equal to the value returned in the  minImageCount member of the ! structure returned by m for the surface minImageCount must be 1 if  presentMode is either  or  imageFormat and imageColorSpace must match the format and  colorSpace+ members, respectively, of one of the " structures returned by o for the surface imageExtent must be between minImageExtent and maxImageExtent, inclusive, where minImageExtent and maxImageExtent are members of the ! structure returned by m for the surface imageExtent members width and height must both be non-zeroimageArrayLayers must be greater than 0$ and less than or equal to the maxImageArrayLayers member of the ! structure returned by m for the surfaceIf  presentMode is , ,  or ,  imageUsage must> be a subset of the supported usage flags present in the supportedUsageFlags member of the ! structure returned by m for surfaceIf  presentMode is  or ,  imageUsage must> be a subset of the supported usage flags present in the  sharedPresentSupportedUsageFlags member of the =! structure returned by l for surfaceIf imageSharingMode is , pQueueFamilyIndices must( be a valid pointer to an array of queueFamilyIndexCount uint32_t valuesIf imageSharingMode is , queueFamilyIndexCount must be greater than 1If imageSharingMode is , each element of pQueueFamilyIndices must be unique and must be less than pQueueFamilyPropertyCount returned by either  e or Of for the physicalDevice that was used to create device preTransform must( be one of the bits present in the supportedTransforms member of the ! structure returned by m for the surfacecompositeAlpha must( be one of the bits present in the supportedCompositeAlpha member of the ! structure returned by m for the surface presentMode must be one of the  values returned by q for the surface,If the logical device was created with G::physicalDeviceCount equal to 1, flags must not contain 'If  oldSwapchain is not .,  oldSwapchain mustN be a non-retired swapchain associated with native window referred to by surface The  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#swapchain-wsi-image-create-info!implied image creation parameters of the swapchain must" be supported as reported by  If flags contains ' then the pNext chain must include a . structure with a viewFormatCount greater than zero and  pViewFormats must have an element equal to  imageFormatIf flags contains ' , then L::supportsProtected must be  in the L! structure returned by l for surfaceIf the pNext chain includes a  structure with its fullScreenExclusive member set to e , and surface was created using , a  structure must be included in the pNext chainValid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , ., , , , or NThe sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of ' valuessurface must be a valid D handle imageFormat must be a valid G valueimageColorSpace must be a valid Z value imageUsage must be a valid combination of  values imageUsage must not be 0imageSharingMode must be a valid  value preTransform must be a valid  valuecompositeAlpha must be a valid  value presentMode must be a valid  valueIf  oldSwapchain is not .,  oldSwapchain must be a valid C handleIf  oldSwapchain is a valid handle, it must6 have been created, allocated, or retrieved from surfaceBoth of  oldSwapchain, and surface7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same )See Also, Z, , , G, M, , , , D, , ', C, , '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 /R should be set to 0 , and the  dstStageMask parameter should be set to . Valid UsageEach element of  pImageIndices musty be the index of a presentable image acquired from the swapchain specified by the corresponding element of the  pSwapchains1 array, and the presented image subresource must be in the  or = layout at the time the operation is executed on a zAll elements of the pWaitSemaphores must have a   of  Valid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL* or a pointer to a valid instance of , =, , Y, or The sType value of each struct in the pNext chain must be uniqueIf waitSemaphoreCount is not 0, pWaitSemaphores must( be a valid pointer to an array of waitSemaphoreCount valid g handles pSwapchains must( be a valid pointer to an array of swapchainCount valid C handles pImageIndices must( be a valid pointer to an array of swapchainCount uint32_t valuesIf pResults is not NULL, pResults must( be a valid pointer to an array of swapchainCount Y valuesswapchainCount must be greater than 0Both of the elements of  pSwapchains, and the elements of pWaitSemaphores7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same )See AlsoY, g, , C, 'vulkanXVkImageSwapchainCreateInfoKHR - Specify that an image will be bound to swapchain memory Valid UsageIf  swapchain is not ., the fields of * must match the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#swapchain-wsi-image-create-info!implied image creation parameters of the swapchainValid Usage (Implicit)sType must be &If  swapchain is not .,  swapchain must be a valid C handleSee Also, CvulkanjVkDeviceGroupSwapchainCreateInfoKHR - Structure specifying parameters of a newly created swapchain object Description"If this structure is not present, modes is considered to be '.Valid Usage (Implicit)See Also, vulkaneVkDeviceGroupPresentInfoKHR - Mode and mask controlling which physical devices' images are presented DescriptionIf mode is ', then each element of  pDeviceMasksN selects which instance of the swapchain image is presented. Each element of  pDeviceMasks mustB have exactly one bit set, and the corresponding physical device must, have a presentation engine as reported by .If mode is ', then each element of  pDeviceMasksN selects which instance of the swapchain image is presented. Each element of  pDeviceMasks mustK have exactly one bit set, and some physical device in the logical device must include that bit in its :: presentMask.If mode is ', then each element of  pDeviceMasks selects which instances of the swapchain image are component-wise summed and the sum of those images is presented. If the sum in any component is outside the representable range, the value of that component is undefined. Each element of  pDeviceMasks mustI have a value for which all set bits are set in one of the elements of :: presentMask.If mode is ', then each element of  pDeviceMasksh selects which instance(s) of the swapchain images are presented. For each bit set in each element of  pDeviceMasks$, the corresponding physical device must, have a presentation engine as reported by .If  is not provided or swapchainCount. is zero then the masks are considered to be 1. If  is not provided, mode is considered to be '. Valid UsageswapchainCount must equal 0 or ::swapchainCountIf mode is ', then each element of  pDeviceMasks mustF have exactly one bit set, and the corresponding element of :: presentMask must be non-zeroIf mode is ', then each element of  pDeviceMasks mustO have exactly one bit set, and some physical device in the logical device must include that bit in its :: presentMaskIf mode is ', then each element of  pDeviceMasks mustQ have a value for which all set bits are set in one of the elements of :: presentMaskIf mode is '0, then for each bit set in each element of  pDeviceMasks), the corresponding element of :: presentMask must be non-zeroThe value of each element of  pDeviceMasks must, be equal to the device mask passed in :: deviceMask, when the image index was last acquiredmode must( have exactly one bit set, and that bit must have been included in ::modesValid Usage (Implicit)sType must be )If swapchainCount is not 0,  pDeviceMasks must( be a valid pointer to an array of swapchainCount uint32_t valuesmode must be a valid  valueSee Also, vulkanWVkDeviceGroupPresentCapabilitiesKHR - Present capabilities from other physical devices Descriptionmodes always has ' set.CThe present mode flags are also used when presenting an image, in ::mode.?If a device group only includes a single physical device, then modes must equal '.Valid Usage (Implicit)See Also, , 'vulkan[VkBindImageMemorySwapchainInfoKHR - Structure specifying swapchain image memory to bind to DescriptionIf  swapchain is not NULL, the  swapchain and  imageIndexJ are used to determine the memory that the image is bound to, instead of memory and  memoryOffset.Memory can% be bound to a swapchain and use the pDeviceIndices or pSplitInstanceBindRegions members of F. Valid Usage imageIndex must& be less than the number of images in  swapchainValid Usage (Implicit)sType must be ' swapchain must be a valid C handleHost SynchronizationHost access to  swapchain must be externally synchronizedSee Also, CvulkanKVkAcquireNextImageInfoKHR - Structure specifying parameters of the acquire DescriptionIf '_ is used, the device mask is considered to include all physical devices in the logical device.Note'} signals at most one semaphore, even if the application requests waiting for multiple physical devices to be ready via the  deviceMask). However, only a single physical device cand wait on that semaphore, since the semaphore becomes unsignaled when the wait succeeds. For other physical devices to wait for the image to be ready, it is necessary for the application to submit semaphore signal operation(s) to that first physical device to signal additional semaphore(s) after the wait succeeds, which the other physical device(s) can wait upon. Valid Usage swapchain must not be in the retired stateIf  semaphore is not . it must be unsignaledIf  semaphore is not . it must@ not have any uncompleted signal or wait operations pendingIf fence is not . it must be unsignaled and mustg not be associated with any other queue command that has not yet completed execution on that queue semaphore and fence must not both be equal to . deviceMask must be a valid device mask deviceMask must not be zero semaphore must have a   of  Valid Usage (Implicit)sType must be (pNext must be NULL swapchain must be a valid C handleIf  semaphore is not .,  semaphore must be a valid g handleIf fence is not ., fence must be a valid w handleEach of fence,  semaphore, and  swapchain7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  swapchain must be externally synchronizedHost access to  semaphore must be externally synchronizedHost access to fence must be externally synchronizedSee Alsow, g, , C, ''vulkanEVkSwapchainCreateFlagBitsKHR - Bitmask controlling swapchain creationSee Also''vulkanmodes 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 . or a semaphore to signal.'vulkanfence is . 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 . or a swapchain handle.'vulkan imageIndex is an image index within  swapchain.'vulkan swapchain is .= or a handle of a swapchain that the image will be bound to.'vulkan presentMask is an array of z 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 NULL1 or a pointer to an extension-specific structure.'vulkanpWaitSemaphores is NULL or a pointer to an array of g objects with waitSemaphoreCountW entries, and specifies the semaphores to wait for before issuing the present request.'vulkan pSwapchains is a pointer to an array of C 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 Y 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 YB for presenting the swapchain corresponding to the same index in  pSwapchains.'vulkanpNext is NULL1 or a pointer to an extension-specific 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 GJ value specifying the format the swapchain image(s) will be created with.'vulkanimageColorSpace is a Z? value specifying the way the swapchain interprets image data.'vulkan imageExtent is the size (in pixels) of the swapchain image(s). The behavior is platform-dependent if the image extent does not match the surface s  currentExtent as returned by m.'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 . 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 Parametersdevice+ is the device to create the swapchain for. pCreateInfo is a pointer to a C structure specifying the parameters of the created swapchain. 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). pSwapchain is a pointer to a CD handle in which the created swapchain object will be returned. 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, I will be returned.Note#In particular, it will fail if the  imageExtent member of  pCreateInfo does not match the extents of the monitor. Other reasons for failure may include the app not being set as high-dpi aware, or if the physical device and monitor are not compatible in this mode.Valid Usage (Implicit)device must be a valid z handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pSwapchain must be a valid pointer to a C 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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJH/0ISee Also, z, , C'vulkan=A convenience wrapper to make a compatible pair of calls to ' and 'To ensure that ' is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument.'vulkan2vkDestroySwapchainKHR - Destroy a swapchain object Parametersdevice is the z associated with  swapchain. swapchain is the swapchain to destroy. 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). 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 u handles are destroyed, and mustK not be acquired or used any more by the application. The memory of each u 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 D, and a new swapchain can be created with it.When a swapchain associated with a display surface is destroyed, if the image most recently presented to the display surface is from the swapchain being destroyed, then either any display resources modified by presenting images from any swapchain associated with the display surface must be reverted by the implementation to their state prior to the first present performed on one of these swapchains, or such resources must be left in their current state.If  swapchainU has exclusive full-screen access, it is released before the swapchain is destroyed. Valid Usage-All uses of presentable images acquired from  swapchain must have completed executionIf  were provided when  swapchain1 was created, a compatible set of callbacks must be provided here If no  were provided when  swapchain was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid z handleIf  swapchain is not .,  swapchain must be a valid C handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureBoth of device, and  swapchain7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  swapchain must be externally synchronizedSee Also, z, C'vulkan]vkGetSwapchainImagesKHR - Obtain the array of presentable images associated with a swapchain Parametersdevice is the device associated with  swapchain. swapchain is the swapchain to query.pSwapchainImageCount{ is a pointer to an integer related to the number of presentable images available or queried, as described below.pSwapchainImages is either NULL" or a pointer to an array of u handles. 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, L will be returned instead of Q> to indicate that not all the available values were returned.Valid Usage (Implicit)device must be a valid z handle swapchain must be a valid C handlepSwapchainImageCount must be a valid pointer to a uint32_t valueIf the value referenced by pSwapchainImageCount is not 0 , and pSwapchainImages is not NULL, pSwapchainImages must( be a valid pointer to an array of pSwapchainImageCount u handlesBoth of device, and  swapchain mustD have been created, allocated, or retrieved from the same ) Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Alsoz, u, C'vulkanSvkAcquireNextImageKHR - Retrieve the index of the next available presentable image Parametersdevice is the device associated with  swapchain. swapchainI is the non-retired swapchain from which an image is being acquired.timeoutV specifies how long the function waits, in nanoseconds, if no image is available. semaphore is . or a semaphore to signal.fence is . or a fence to signal. pImageIndex is a pointer to a uint32_tk in which the index of the next image to use (i.e. an index into the array of images returned by ') is returned. Valid Usage swapchain must not be in the retired stateIf  semaphore is not . it must be unsignaledIf  semaphore is not . it must@ not have any uncompleted signal or wait operations pendingIf fence is not . it must be unsignaled and mustg not be associated with any other queue command that has not yet completed execution on that queue semaphore and fence must not both be equal to .oIf the number of currently acquired images is greater than the difference between the number of images in  swapchain and the value of :: minImageCount$ as returned by a call to l with the surface used to create  swapchain, timeout must not be  UINT64_MAX semaphore must have a   of  Valid Usage (Implicit)device must be a valid z handle swapchain must be a valid C handleIf  semaphore is not .,  semaphore must be a valid g handleIf fence is not ., fence must be a valid w handle pImageIndex must be a valid pointer to a uint32_t valueIf  semaphore is a valid handle, it must6 have been created, allocated, or retrieved from deviceIf fence is a valid handle, it must6 have been created, allocated, or retrieved from deviceBoth of device, and  swapchain7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same )Host SynchronizationHost access to  swapchain must be externally synchronizedHost access to  semaphore must be externally synchronizedHost access to fence must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQOP1  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJH2/9See Alsoz, w, g, C'vulkan3vkQueuePresentKHR - Queue an image for presentation Parametersqueue~ is a queue that is capable of presentation to the target surface s platform on the same device as the image s swapchain. pPresentInfo is a pointer to a : structure specifying parameters of the presentation. DescriptionNoteThere is no requirement for an application to present images in the same order that they were acquired - applications can arbitrarily present any image that is currently acquired. Valid UsageEach element of  pSwapchains member of  pPresentInfo musta be a swapchain that is created for a surface for which presentation is supported from queue$ as determined using a call to  If more than one member of  pSwapchainsn was created from a display surface, all display surfaces referenced that refer to the same display must use the same display modedWhen a semaphore wait operation referring to a binary semaphore defined by the elements of the pWaitSemaphores member of  pPresentInfo executes on queue, there must6 be no other queues waiting on the same semaphoreAll elements of the pWaitSemaphores member of  pPresentInfo must/ be semaphores that are signaled, or have  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signalingsemaphore signal operations( previously submitted for executionAll elements of the pWaitSemaphores member of  pPresentInfo must be created with a   of  All elements of the pWaitSemaphores member of  pPresentInfo must reference a semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) must' have also been submitted for execution;Any writes to memory backing the images referenced by the  pImageIndices and  pSwapchains members of  pPresentInfo, that are available before ' is executed, are automatically made visible to the read access performed by the presentation engine. This automatic visibility operation for an image happens-after the semaphore signal operation, and happens-before the presentation engine accesses the image.4Queueing an image for presentation defines a set of queue operations, including waiting on the semaphores and submitting a presentation request to the presentation engine. However, the scope of this set of queue operations does not include the actual processing of the image by the presentation engine.NoteThe origin of the native orientation of the surface coordinate system is not specified in the Vulkan specification; it depends on the platform. For most platforms the origin is by default upper-left, meaning the pixel of the presented u` at coordinates (0,0) would appear at the upper left pixel of the platform surface (assuming ., and the display standing the right way up).If 'A fails to enqueue the corresponding set of queue operations, it may return K or J". 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 H.\However, if the presentation request is rejected by the presentation engine with an error 2, 9, 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 e, 9 will be returned if that swapchain does not have exclusive full-screen access, possibly for implementation-specific reasons outside of the application s control.Valid Usage (Implicit)queue must be a valid k handle pPresentInfo must be a valid pointer to a valid  structureHost SynchronizationHost access to queue must be externally synchronizedHost access to pPresentInfo->pWaitSemaphores[] must be externally synchronizedHost access to pPresentInfo->pSwapchains[] must be externally synchronizedCommand Properties'  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevelCommand Buffer Levels   bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPassRender Pass Scope   ]https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBitsSupported Queue Types   shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type | - x - w Any  -  Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ1  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJH2/9See Also, k'vulkan`vkGetDeviceGroupPresentCapabilitiesKHR - Query present capabilities from other physical devices Parametersdevice is the logical device.pDeviceGroupPresentCapabilities is a pointer to a @ structure in which the device s capabilities are returned. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Alsoz, 'vulkanRvkGetDeviceGroupSurfacePresentModesKHR - Query present capabilities for a surface Parametersdevice is the logical device.surface is the surface.pModes is a pointer to a Z in which the supported device group present modes for the surface are returned. Description:The modes returned by this command are not invariant, and mayT change in response to the surface being moved, resized, or occluded. These modes must' be a subset of the modes returned by '.Valid Usage (Implicit)device must be a valid z handlesurface must be a valid D handlepModes must be a valid pointer to a  valueBoth of device, and surface must? have been created, allocated, or retrieved from the same )Host SynchronizationHost access to surface must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJ/See Alsoz, , D'vulkanTvkAcquireNextImage2KHR - Retrieve the index of the next available presentable image Parametersdevice is the device associated with  swapchain. pAcquireInfo is a pointer to a 5 structure containing parameters of the acquire. pImageIndex is a pointer to a uint32_t8 that is set to the index of the next image to use. Valid UsagesIf the number of currently acquired images is greater than the difference between the number of images in the  swapchain member of  pAcquireInfo and the value of :: minImageCount$ as returned by a call to l with the surface used to create  swapchain, the timeout member of  pAcquireInfo must not be  UINT64_MAXValid Usage (Implicit)device must be a valid z handle pAcquireInfo must$ be a valid pointer to a valid  structure pImageIndex must be a valid pointer to a uint32_t value Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQOP1  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJH2/9See Also, z'vulkanfvkGetPhysicalDevicePresentRectanglesKHR - Query present rectangles for a surface on a physical device ParametersphysicalDevice is the physical device.surface is the surface. pRectCountn is a pointer to an integer related to the number of rectangles available or queried, as described below.pRects is either NULL" or a pointer to an array of  structures. 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, L will be returned instead of Q> to indicate that not all the available values were returned.;The values returned by this command are not invariant, and mayF change in response to the surface being moved, resized, or occluded.(The rectangles returned by this command must not overlap.Valid Usage (Implicit)physicalDevice must be a valid q handlesurface must be a valid D handle pRectCount must be a valid pointer to a uint32_t valueIf the value referenced by  pRectCount is not 0, and pRects is not NULL, pRects must( be a valid pointer to an array of  pRectCount  structuresBoth of physicalDevice, and surface mustD have been created, allocated, or retrieved from the same )Host SynchronizationHost access to surface must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Alsoq, , D~CD'''''''''''''''''''''''''''''''''''''''''''''''Z[mlkjihgfedcba`_^  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''DCZ[mlkjihgfedcba`_^mlkjihgfedcba`_^    None'"#%&'-./189;=>?FHIMSUVX_dghklmq}_ ''''''(((( (((('''''''''None'"#%&'-./189;=>?FHIMSUVX_dghklmq~Z{vulkanVkSurfaceFullScreenExclusiveWin32InfoEXT - Structure specifying additional creation parameters specific to Win32 fullscreen exclusive mode DescriptionNoteIf hmonitor is invalidated (e.g. the monitor is unplugged) during the lifetime of a swapchain created with this structure, operations on that swapchain will return 2.NoteIt is the responsibility of the application to change the display settings of the targeted Win32 display using the appropriate platform APIs. Such changes mayB alter the surface capabilities reported for the created surface.Valid Usage (Implicit)See AlsovulkaniVkSurfaceFullScreenExclusiveInfoEXT - Structure specifying the preferred full-screen transition behavior Description"If this structure is not present, fullScreenExclusive is considered to be (/.Valid Usage (Implicit)See Also(", vulkansVkSurfaceCapabilitiesFullScreenExclusiveEXT - Structure describing full screen exclusive capabilities of a surface DescriptionThis structure can be included in the pNext chain of G= 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 Also, ("vulkanlVkFullScreenExclusiveEXT - Hint values an application can specify affecting full-screen transition behaviorSee Also('vulkanhmonitor must be a valid <()vulkanfullScreenExclusive must be a valid (" value(,vulkan(,Q indicates the application will manage full-screen exclusive mode by using the (2 and (3 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.(0vulkanPvkGetPhysicalDeviceSurfacePresentModes2EXT - Query supported presentation modes ParametersphysicalDevicem is the physical device that will be associated with the swapchain to be created, as described for . pSurfaceInfo is a pointer to a Wf structure describing the surface and other fixed parameters that would be consumed by .pPresentModeCountv is a pointer to an integer related to the number of presentation modes available or queried, as described below. pPresentModes is either NULL" or a pointer to an array of : values, indicating the supported presentation modes. Description(0 behaves similarly to qM, with the ability to specify extended inputs via chained input structures.Valid Usage (Implicit)physicalDevice must be a valid q handle pSurfaceInfo must$ be a valid pointer to a valid W structurepPresentModeCount must be a valid pointer to a uint32_t valueIf the value referenced by pPresentModeCount is not 0 , and  pPresentModes is not NULL,  pPresentModes must( be a valid pointer to an array of pPresentModeCount  values Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQL  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJ/See Alsoq, W, (1vulkan`vkGetDeviceGroupSurfacePresentModes2EXT - Query device group present capabilities for a surface Parametersdevice is the logical device. pSurfaceInfo is a pointer to a Wf structure describing the surface and other fixed parameters that would be consumed by .pModes is a pointer to a Z in which the supported device group present modes for the surface are returned. Description(1 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-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJ/See Alsoz, , W(2vulkanYvkAcquireFullScreenExclusiveModeEXT - Acquire full-screen exclusive mode for a swapchain Parametersdevice is the device associated with  swapchain. swapchainC is the swapchain to acquire exclusive full-screen access for. Valid Usage swapchain must not be in the retired state swapchain must$ be a swapchain created with a  structure, with fullScreenExclusive set to (, swapchain must0 not currently have exclusive full-screen accessA return value of Q 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 (3G, destroys the swapchain, or if any of the swapchain commands return 9I 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 I is returned. An application canr attempt to acquire exclusive full-screen access again for the same swapchain even if this command fails, or if 9+ has been returned by a swapchain command.Valid Usage (Implicit)device must be a valid z handle swapchain must be a valid C handleBoth of device, and  swapchain mustD have been created, allocated, or retrieved from the same ) Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJI/See Alsoz, C(3vulkanZvkReleaseFullScreenExclusiveModeEXT - Release full-screen exclusive mode from a swapchain Parametersdevice is the device associated with  swapchain. swapchainD is the swapchain to release exclusive full-screen access from. 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 Alsoz, C/CD(&('((()($(%W!0!1!2'''''<( (!("(/(.(-(,(#(*(+(0(1(2(3=(0(1(2(3((()(&('($(%("(/(.(-(,(#(/(.(-(,(!(+( (*DCW!0!1!2'''''''''<None'"#%&'-./189;=>?FHIMSUVX_dghklmq~=vulkanaVkDisplayPresentInfoKHR - Structure describing parameters of a queue presentation to a swapchain DescriptionIf the extent of the srcRect and dstRectA are not equal, the presented pixels will be scaled accordingly. Valid UsagesrcRect mustP specify a rectangular region that is a subset of the image being presenteddstRect must; specify a rectangular region that is a subset of the  visibleRegionF parameter of the display mode the swapchain being presented usesIf the persistentContent member of the ! structure returned by S9 for the display the present operation targets then  persistent must be Valid Usage (Implicit)sType must be  See Also, , (LvulkansrcRect2 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.(MvulkandstRectX 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.(Nvulkan 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.(QvulkanWvkCreateSharedSwapchainsKHR - Create multiple swapchains that share presentable images Parametersdevice, is the device to create the swapchains for.swapchainCount' is the number of swapchains to create. pCreateInfos" is a pointer to an array of E structures specifying the parameters of the created swapchains. 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). pSwapchains" is a pointer to an array of CF handles in which the created swapchain objects will be returned. Description(Q 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 3`. 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)device must be a valid z handle pCreateInfos must( be a valid pointer to an array of swapchainCount valid  structuresIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pSwapchains must( be a valid pointer to an array of swapchainCount C handlesswapchainCount must be greater than 0Host SynchronizationHost access to  pCreateInfos [].surface must be externally synchronizedHost access to  pCreateInfos[].oldSwapchain must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJ3H/See Also, z, , CSCD=(K(L(M(N'''''''''''''''''Z[mlkjihgfedcba`_^  ''''''(I(J(O(P(Qy(Q=(K(L(M(N(J(P(I(ODC'''''''''''''''''Z[mlkjihgfedcba`_^mlkjihgfedcba`_^    '''''''''None'"#%&'-./189;=>?FHIMSUVX_dghklmq~ vulkanVVkPipelineDiscardRectangleStateCreateInfoEXT - Structure specifying discard rectangleValid Usage (Implicit)See Also(X, (Z, , vulkanVkPhysicalDeviceDiscardRectanglePropertiesEXT - Structure describing discard rectangle limits that can be supported by an implementationMembersThe members of the C structure describe the following implementation-dependent limits: DescriptionIf the  structure is included in the pNext chain of O9, it is filled with the implementation-dependent limits.Valid Usage (Implicit)See Also(Xvulkan>VkDiscardRectangleModeEXT - Specify the discard rectangle modeSee Also(ZvulkanGVkPipelineDiscardRectangleStateCreateFlagsEXT - Reserved for future use Description(ZQ is a bitmask type for setting a mask, but is currently reserved for future use.See Also(]vulkanflags must be 0(^vulkandiscardRectangleMode must be a valid (X value(_vulkanpDiscardRectangles is a pointer to an array of r structures, defining the discard rectangles. If the discard rectangle state is dynamic, this member is ignored.(avulkanmaxDiscardRectangles: is the maximum number of active discard rectangles that can be specified.(dvulkan(dX specifies that a fragment not within any of the discard rectangles satisfies the test.(evulkan(eL specifies that a fragment within any discard rectangle satisfies the test.(fvulkan@vkCmdSetDiscardRectangleEXT - Set discard rectangles dynamically Parameters commandBufferD is the command buffer into which the command will be recorded.firstDiscardRectangleX is the index of the first discard rectangle whose state is updated by the command.discardRectangleCountQ is the number of discard rectangles whose state are updated by the command.pDiscardRectangles" is a pointer to an array of / structures specifying discard rectangles. Description.The discard rectangle taken from element i of pDiscardRectangles= replace the current state for the discard rectangle index firstDiscardRectangle + i, for i in [0, discardRectangleCount). Valid Usage The sum of firstDiscardRectangle and discardRectangleCount must be less than or equal to ::maxDiscardRectanglesThe x and y member of offset in each  element of pDiscardRectangles must be greater than or equal to 0Evaluation of (offset.x +  extent.width) in each  element of pDiscardRectangles must2 not cause a signed integer addition overflowEvaluation of (offset.y +  extent.height) in each  element of pDiscardRectangles must2 not cause a signed integer addition overflowValid Usage (Implicit) commandBuffer must be a valid  handlepDiscardRectangles must( be a valid pointer to an array of discardRectangleCount  structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operationsdiscardRectangleCount must be greater than 0Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, (\(](_(^(`(a(V(W(X(e(d(Y(Z([(b(c(f(f(`(a(\(](_(^(Z([(X(e(d(Y(e(d(W(c(V(b^None'"#%&'-./189;=>?FHIMSUVX_dghklmq[2#vulkan8VkSubpassEndInfo - Structure specifying subpass end infoValid Usage (Implicit)See Also, (, , (, $vulkanBVkSubpassDescription2 - Structure specifying a subpass description DescriptionEParameters defined by this structure with the same name as those in 0k0 have the identical effect to those parameters.viewMask3 has the same effect for the described subpass as R/:: pViewMasks$ has on each corresponding subpass. Valid UsagepipelineBindPoint must be colorAttachmentCount must be less than or equal to  _::maxColorAttachmentsIf the first use of an attachment in this render pass is as an input attachment, and the attachment is not also used as a color or depth/stencil attachment in the same subpass, then loadOp must not be 4GIf pResolveAttachments is not NULLE, for each resolve attachment that does not have the value k*, the corresponding color attachment must not have the value kIf pResolveAttachments is not NULL/, for each resolve attachment that is not k*, the corresponding color attachment must! not have a sample count of !nIf pResolveAttachments is not NULL+, each resolve attachment that is not k must have a sample count of !nAny given element of pResolveAttachments must have the same G+ as its corresponding color attachmentAll attachments in pColorAttachments that are not k must have the same sample countAll attachments in pInputAttachments that are not k must? have formats whose features contain at least one of no or npAll attachments in pColorAttachments that are not k must/ have formats whose features contain noAll attachments in pResolveAttachments that are not k must/ have formats whose features contain noIf pDepthStencilAttachment is not NULL and the attachment is not k then it must+ have a format whose features contain npIf the VK_AMD_mixed_attachment_samples/ extension is enabled, all attachments in pColorAttachments that are not k mustT have a sample count that is smaller than or equal to the sample count of pDepthStencilAttachment if it is not kIf neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples% extensions are enabled, and if pDepthStencilAttachment is not k and any attachments in pColorAttachments are not k, they must have the same sample countThe  attachment member of any element of pPreserveAttachments must not be kAny given element of pPreserveAttachments mustK not also be an element of any other member of the subpass description0If any attachment is used by more than one 0 member, then each use must use the same layoutIf flags includes Oq , it must also include OIf the  attachment member of any element of pInputAttachments is not k, then the  aspectMask member must be a valid combination of kIf the  attachment member of any element of pInputAttachments is not k, then the  aspectMask member must not be 0If the  attachment member of any element of pInputAttachments is not k, then the  aspectMask member must not include kValid Usage (Implicit)sType must be flags must be a valid combination of Ot valuespipelineBindPoint must be a valid Q valueIf inputAttachmentCount is not 0, pInputAttachments must( be a valid pointer to an array of inputAttachmentCount valid ( structuresIf colorAttachmentCount is not 0, pColorAttachments must( be a valid pointer to an array of colorAttachmentCount valid ( structuresIf colorAttachmentCount is not 0, and pResolveAttachments is not NULL, pResolveAttachments must( be a valid pointer to an array of colorAttachmentCount valid ( structuresIf pDepthStencilAttachment is not NULL, pDepthStencilAttachment must$ be a valid pointer to a valid ( structureIf preserveAttachmentCount is not 0, pPreserveAttachments must# be a valid pointer to an array of preserveAttachmentCount uint32_t valuesSee Also(, Q, ', , %vulkan@VkSubpassDependency2 - Structure specifying a subpass dependency DescriptionEParameters defined by this structure with the same name as those in 00 have the identical effect to those parameters. viewOffset> has the same effect for the described subpass dependency as R/:: pViewOffsets/ has on each corresponding subpass dependency. Valid Usage If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  srcStageMask must not contain  If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled,  dstStageMask must not contain  If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  srcStageMask must not contain  or  If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled,  dstStageMask must not contain  or  srcSubpass must be less than or equal to  dstSubpass", unless one of them is uF, to avoid cyclic dependencies and ensure a valid execution order srcSubpass and  dstSubpass must not both be equal to uIf  srcSubpass is equal to  dstSubpass# and not all of the stages in  srcStageMask and  dstStageMask are  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regionsframebuffer-space stages, the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically latest pipeline stage in  srcStageMask must be  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically earlier than or equal to the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-orderlogically earliest pipeline stage in  dstStageMaskAny access flag included in  srcAccessMask must4 be supported by one of the pipeline stages in  srcStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesAny access flag included in  dstAccessMask must4 be supported by one of the pipeline stages in  dstStageMask, as specified in the thttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supportedtable of supported access typesIf dependencyFlags includes x,  srcSubpass must not be equal to uIf dependencyFlags includes x,  dstSubpass must not be equal to uIf  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 wIf  viewOffset is not equal to 0,  srcSubpass must not be equal to  dstSubpassIf dependencyFlags does not include x,  viewOffset must be 0If  viewOffset is not 0,  srcSubpass must not be equal to  dstSubpass If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  srcStageMask must not contain  If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  srcStageMask must not contain  If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders feature is not enabled,  dstStageMask must not contain  If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders feature is not enabled,  dstStageMask must not contain Valid Usage (Implicit)sType must be  srcStageMask must be a valid combination of e values srcStageMask must not be 0 dstStageMask must be a valid combination of e values dstStageMask must not be 0 srcAccessMask must be a valid combination of y values dstAccessMask must be a valid combination of y valuesdependencyFlags must be a valid combination of z valuesSee AlsoD, C, R, ', &vulkan<VkSubpassBeginInfo - Structure specifying subpass begin infoValid Usage (Implicit)See Also, `, (, , (, 'vulkanYVkRenderPassCreateInfo2 - Structure specifying parameters of a newly created render pass DescriptionEParameters defined by this structure with the same name as those in 0+e have the identical effect to those parameters; the child structures are variants of those used in 0+ 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 R/::correlationMaskCount and R/::pCorrelationMasks, respectively. Valid UsageUIf any two subpasses operate on attachments with overlapping ranges of the same )vC object, and at least one subpass writes to that area of )v, a subpass dependency mustS be included (either directly or via some intermediate subpasses) between themIf the  attachment member of any element of pInputAttachments, pColorAttachments, pResolveAttachments or pDepthStencilAttachment3, or the attachment indexed by any element of pPreserveAttachments in any given element of  pSubpasses is bound to a range of a )vk object that overlaps with any other attachment in any subpass (including the same subpass), the )! structures describing them must include  in flagsIf the  attachment member of any element of pInputAttachments, pColorAttachments, pResolveAttachments or pDepthStencilAttachment, or any element of pPreserveAttachments in any given element of  pSubpasses is not k, it must be less than attachmentCountFor any member of  pAttachments with a loadOp equal to 4G(, the first use of that attachment must not specify a layout equal to {, |, or }For any member of  pAttachments with a  stencilLoadOp equal to 4G(, the first use of that attachment must not specify a layout equal to {, |, or ~For any element of  pDependencies , if the  srcSubpass is not u', all stage flags included in the  srcStageMask member of that dependency must+ be a pipeline stage supported by the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-typespipeline identified by the pipelineBindPoint member of the source subpassFor any element of  pDependencies , if the  dstSubpass is not u', all stage flags included in the  dstStageMask member of that dependency must+ be a pipeline stage supported by the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-typespipeline identified by the pipelineBindPoint' member of the destination subpass+The set of bits included in any element of pCorrelatedViewMasks mustH not overlap with the set of bits included in any other element of pCorrelatedViewMasksIf the $::viewMask member of all elements of  pSubpasses is 0, correlatedViewMaskCount must be 0The $::viewMask member of all elements of  pSubpasses must either all be 0, or all not be 0If the $::viewMask member of all elements of  pSubpasses is 0, the dependencyFlags member of any element of  pDependencies must not include xFor 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 xThe viewMask member mustC not have a bit set at an index greater than or equal to  _::maxFramebufferLayersIf the  attachment member of any element of the pInputAttachments member of any element of  pSubpasses is not k , the  aspectMask member of that element of pInputAttachments muste only include aspects that are present in images of the format specified by the element of  pAttachments specified by  attachmentThe  srcSubpass member of each element of  pDependencies must be less than  subpassCountThe  dstSubpass member of each element of  pDependencies must be less than  subpassCountValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of U valuesIf attachmentCount is not 0,  pAttachments must( be a valid pointer to an array of attachmentCount valid ) structures pSubpasses must# be a valid pointer to an array of  subpassCount valid $ structuresIf dependencyCount is not 0,  pDependencies must( be a valid pointer to an array of dependencyCount valid % structuresIf correlatedViewMaskCount is not 0, pCorrelatedViewMasks must# be a valid pointer to an array of correlatedViewMaskCount uint32_t values subpassCount must be greater than 0See Also), j, , %, $, (, (vulkanEVkAttachmentReference2 - Structure specifying an attachment reference DescriptionEParameters defined by this structure with the same name as those in 00 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 4 structure included in the pNext chain. Otherwise, layout6 describes the layout for all relevant image aspects. Valid UsageIf  attachment is not k, layout must not be b, c, or If  attachment is not k , and  aspectMask does not include k[ or kZ, layout must not be , |, ~, or }If  attachment is not k , and  aspectMask does not include k, layout must not be  If the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts" feature is not enabled, and  attachment is not k, layout must not be , , , or ,If  attachment is not k , and  aspectMask includes k, layout must not be , , , or ,If  attachment is not k , and  aspectMask includes both kZ and k[ , and layout is  or  , the pNext chain must include a 4 structureIf  attachment is not k , and  aspectMask includes only kZ then layout must not be , or If  attachment is not k , and  aspectMask includes only k[ then layout must not be , or Valid Usage (Implicit)sType must be layout must be a valid J valueSee Also, J, , $, *)vulkanJVkAttachmentDescription2 - Structure specifying an attachment description DescriptionEParameters defined by this structure with the same name as those in 00 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 5 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 5 structure included in the pNext chain. Otherwise,  finalLayout< describes the final layout for all relevant image aspects. Valid Usage finalLayout must not be b or cIf format is a color format,  initialLayout must not be , |, ~, or }If format is a depth/stencil format,  initialLayout must not be If format is a color format,  finalLayout must not be , |, ~, or }If format is a depth/stencil format,  finalLayout must not be  If the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts feature is not enabled,  initialLayout must not be , ,  or  If the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayoutsseparateDepthStencilLayouts feature is not enabled,  finalLayout must not be , ,  or If format is a color format,  initialLayout must not be , ,  or If format is a color format,  finalLayout must not be , ,  or If formatS is a depth/stencil format which includes both depth and stencil aspects, and  initialLayout is  or  , the pNext chain must include a 5 structureIf formatS is a depth/stencil format which includes both depth and stencil aspects, and  finalLayout is  or  , the pNext chain must include a 5 structureIf formatF is a depth/stencil format which includes only the depth aspect,  initialLayout must not be  or If formatF is a depth/stencil format which includes only the depth aspect,  finalLayout must not be  or If formatH is a depth/stencil format which includes only the stencil aspect,  initialLayout must not be  or If formatH is a depth/stencil format which includes only the stencil aspect,  finalLayout must not be  or Valid Usage (Implicit)sType must be  flags must be a valid combination of  valuesformat must be a valid G valuesamples must be a valid [ valueloadOp must be a valid  . valuestoreOp must be a valid  # value stencilLoadOp must be a valid  . valuestencilStoreOp must be a valid  # value initialLayout must be a valid J value finalLayout must be a valid J valueSee Also9,  .,  #, G, J, ', [, (vulkancontents must be a valid ` value(vulkanpNext is NULL1 or a pointer to an extension-specific structure.(vulkanflags is reserved for future use.(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 0@ structures describing dependencies between pairs of subpasses.(vulkanpCorrelatedViewMasksG is a pointer to an array of view masks indicating sets of views that may* be more efficient to render concurrently.(vulkan srcSubpassB is the subpass index of the first subpass in the dependency, or u.(vulkan dstSubpassC is the subpass index of the second subpass in the dependency, or u.(vulkan srcStageMask is a bitmask of e 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 e 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 y 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 y 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 z.(vulkan viewOffset\ controls which views in the source subpass the views in the destination subpass depend on.(vulkanpNext is NULL1 or a pointer to an extension-specific structure.(vulkanflags is a bitmask of Ot" specifying usage of the subpass.(vulkanpipelineBindPoint is a Q@ value specifying the pipeline type supported for this subpass.(vulkanviewMask| is a bitfield of view indices describing which views rendering is broadcast to in this subpass, when multiview is enabled.(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.(vulkanpNext is NULL1 or a pointer to an extension-specific structure.(vulkan attachmentV is either an integer value identifying an attachment at the corresponding index in 0+:: pAttachments, or k. to signify that this attachment is not used.(vulkanlayout is a JE value specifying the layout the attachment uses during the subpass.(vulkan aspectMask is a mask of which aspect(s) canB be accessed within the specified subpass as an input attachment.(vulkanpNext is NULL1 or a pointer to an extension-specific structure.(vulkanflags is a bitmask of 5 specifying additional properties of the attachment.(vulkanformat is a GP value specifying the format of the image that will be used for the attachment.(vulkansamples6 is the number of samples of the image as defined in [.(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.(vulkan5vkCreateRenderPass2 - Create a new render pass object Parametersdevice4 is the logical device that creates the render pass. pCreateInfo is a pointer to a '= structure describing the parameters of the render pass. pAllocator: 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. pRenderPass is a pointer to a iC handle in which the resulting render pass object is returned. Description+This command is functionally identical to 07, but includes extensible sub-structures that include sType and pNext7 parameters, allowing them to be more easily extended.Valid Usage (Implicit)device must be a valid z handle pCreateInfo must$ be a valid pointer to a valid ' structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pRenderPass must be a valid pointer to a i handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, z, i, '(vulkan/vkCmdBeginRenderPass2 - Begin a new render pass Parameters commandBuffer; is the command buffer in which to record the command.pRenderPassBegin is a pointer to a o structure specifying the render pass to begin an instance of, and the framebuffer the instance uses.pSubpassBeginInfo is a pointer to a &` structure containing information about the subpass which is about to begin rendering. DescriptionAfter beginning a render pass instance, the command buffer is ready to record the commands for the first subpass of that render pass. Valid Usage Both the  framebuffer and  renderPass members of pRenderPassBegin must$ have been created on the same z that  commandBuffer was allocated on If any of the  initialLayout or  finalLayout member of the 0 structures or the layout member of the 0O 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 If any of the  initialLayout or  finalLayout member of the 0 structures or the layout member of the 0O 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 If any of the  initialLayout or  finalLayout member of the 0 structures or the layout member of the 0O 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 If any of the stencilInitialLayout or stencilFinalLayout member of the 5 structures or the  stencilLayout member of the 4O 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 If any of the  initialLayout or  finalLayout member of the 0 structures or the layout member of the 0O 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 If any of the  initialLayout or  finalLayout member of the 0 structures or the layout member of the 0O 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 If any of the  initialLayout or  finalLayout member of the 0 structures or the layout member of the 0O 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 If any of the  initialLayout members of the 0O structures specified when creating the render pass specified in the  renderPass member of pRenderPassBegin is not b, then each such  initialLayout must be equal to the current layout of the corresponding attachment image subresource of the framebuffer specified in the  framebuffer member of pRenderPassBeginThe  srcStageMask and  dstStageMask$ members of any element of the  pDependencies member of 0+ used to create  renderPass mustM be supported by the capabilities of the queue family identified by the queueFamilyIndex member of the  , used to create the command pool which  commandBuffer was allocated fromFor any attachment in  framebuffer that is used by  renderPass^ and is bound to memory locations that are also bound to another attachment used by  renderPasse, and if at least one of those uses causes either attachment to be written to, both attachments must have had the  setValid Usage (Implicit) commandBuffer must be a valid  handlepRenderPassBegin must$ be a valid pointer to a valid  structurepSubpassBeginInfo must$ be a valid pointer to a valid & structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations This command must1 only be called outside of a render pass instance commandBuffer must be a primary Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, , &(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 first argument. To just extract the pair pass '(,)' as the first argument.$Note that there is no inner resource(vulkanCvkCmdNextSubpass2 - Transition to the next subpass of a render pass Parameters commandBuffer; is the command buffer in which to record the command.pSubpassBeginInfo is a pointer to a &` structure containing information about the subpass which is about to begin rendering.pSubpassEndInfo is a pointer to a #T structure containing information about how the previous subpass will be ended. Description( is semantically identical to  *, except that it is extensible, and that contentsP is provided as part of an extensible structure instead of as a flat parameter. Valid UsageThe current subpass index mustG be less than the number of subpasses in the render pass minus one This command must7 not be recorded when transform feedback is activeValid Usage (Implicit) commandBuffer must be a valid  handlepSubpassBeginInfo must$ be a valid pointer to a valid & structurepSubpassEndInfo must$ be a valid pointer to a valid # structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations This command must0 only be called inside of a render pass instance commandBuffer must be a primary Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, &, #(vulkan1vkCmdEndRenderPass2 - End the current render pass Parameters commandBufferM is the command buffer in which to end the current render pass instance.pSubpassEndInfo is a pointer to a #T structure containing information about how the previous subpass will be ended. Description( is semantically identical to   , except that it is extensible. Valid UsageThe current subpass index mustF be equal to the number of subpasses in the render pass minus one This command must7 not be recorded when transform feedback is activeValid Usage (Implicit) commandBuffer must be a valid  handlepSubpassEndInfo must$ be a valid pointer to a valid # structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must! support graphics operations This command must0 only be called inside of a render pass instance commandBuffer must be a primary Host SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, ##(}$((((((((((%(((((((((&(~('((((((((((((()(((((((((((43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      (((((((((()((((((((((((((((($((((((((((%((((((((('(((((((&(~(#(}43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      None'"#%&'-./189;=>?FHIMSUVX_dghklmqr|((((((((((((((((((((((((((((((((((((((((((((_None'"#%&'-./189;=>?FHIMSUVX_dghklmq$ *vulkannVkSubpassDescriptionDepthStencilResolve - Structure specifying depth/stencil resolve operations for a subpass Valid UsageIf pDepthStencilResolveAttachment is not NULL" and does not have the value k, pDepthStencilAttachment must not have the value k If pDepthStencilResolveAttachment is not NULL" and does not have the value k, depthResolveMode and stencilResolveMode must not both be If pDepthStencilResolveAttachment is not NULL" and does not have the value k, pDepthStencilAttachment must! not have a sample count of !nIf pDepthStencilResolveAttachment is not NULL" and does not have the value k, pDepthStencilResolveAttachment must have a sample count of !nIf pDepthStencilResolveAttachment is not NULL" and does not have the value k then it must+ have a format whose features contain npIf the  of pDepthStencilResolveAttachment& has a depth component, then the  of pDepthStencilAttachment mustL have a depth component with the same number of bits and numerical typeIf the  of pDepthStencilResolveAttachment( has a stencil component, then the  of pDepthStencilAttachment mustN have a stencil component with the same number of bits and numerical type The value of depthResolveMode must be one of the bits set in +::supportedDepthResolveModes or  The value of stencilResolveMode must be one of the bits set in +::supportedStencilResolveModes or If the  of pDepthStencilResolveAttachment2 has both depth and stencil components, +::independentResolve is  , and +::independentResolveNone is , then the values of depthResolveMode and stencilResolveMode must be identicalIf the  of pDepthStencilResolveAttachment2 has both depth and stencil components, +::independentResolve is  and +::independentResolveNone is , then the values of depthResolveMode and stencilResolveMode must" be identical or one of them must be Valid Usage (Implicit)sType must be depthResolveMode must be a valid  valuestencilResolveMode must be a valid  valueIf pDepthStencilResolveAttachment is not NULL, pDepthStencilResolveAttachment must) be a valid pointer to a valid ( structureSee Also(, , +vulkanVkPhysicalDeviceDepthStencilResolveProperties - Structure describing depth/stencil resolve properties that can be supported by an implementationMembersThe members of the +C structure describe the following implementation-dependent limits:Valid Usage (Implicit)See Also, , (vulkandepthResolveMode is a bitmask of $ describing the depth resolve mode.(vulkanstencilResolveMode is a bitmask of & describing the stencil resolve mode.(vulkanpDepthStencilResolveAttachment is an optional 0Z structure defining the depth/stencil resolve attachment for this subpass and its layout.(vulkansupportedDepthResolveModes 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.(vulkansupportedStencilResolveModes 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.(vulkanindependentResolveNone is ~ if the implementation supports setting the depth and stencil resolve modes to different values when one of those modes is T. Otherwise the implementation only supports setting both modes to the same value.(vulkanindependentResolve 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.*((((+(((((43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      v+(((((*((((43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      None'"#%&'-./189;=>?FHIMSUVX_dghklmq~(((((())))))))))))))))((((()()VNone'"#%&'-./189;=>?FHIMSUVX_dghklmq8Svulkan~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 ,, 8, , +, , and >.Valid Usage (Implicit)See Also, -, , , Z, , vulkan{VkPhysicalDeviceVulkan12Features - Structure describing the Vulkan 1.2 features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionsamplerMirrorClampToEdge= indicates whether the implementation supports the aE sampler address mode. If this feature is not enabled, the a sampler address mode must not be used..drawIndirectCount= indicates whether the implementation supports the h and iA functions. If this feature is not enabled, these functions must not be used.storageBuffer8BitAccess' indicates whether objects in the  StorageBuffer or PhysicalStorageBuffer storage class with the Block decoration canX have 8-bit integer members. If this feature is not enabled, 8-bit integer members mustN not be used in such objects. This also indicates whether shader modules can declare the StorageBuffer8BitAccess capability.!uniformAndStorageBuffer8BitAccess' indicates whether objects in the Uniform storage class with the Block decoration and in the  StorageBuffer or PhysicalStorageBuffer- storage class with the same decoration canX have 8-bit integer members. If this feature is not enabled, 8-bit integer members mustN not be used in such objects. This also indicates whether shader modules can declare the !UniformAndStorageBuffer8BitAccess capability.storagePushConstant8' indicates whether objects in the  PushConstant storage class canX have 8-bit integer members. If this feature is not enabled, 8-bit integer members mustS not be used in such objects. This also indicates whether shader modules can declare the StoragePushConstant8 capability.shaderBufferInt64Atomics indicates whether shaders canN support 64-bit unsigned and signed integer atomic operations on buffers.shaderSharedInt64Atomics indicates whether shaders canY support 64-bit unsigned and signed integer atomic operations on shared memory. shaderFloat16| indicates whether 16-bit floats (halfs) are supported in shader code. This also indicates whether shader modules can declare the Float16h capability. However, this only enables a subset of the storage classes that SPIR-V allows for the Float16G SPIR-V capability: Declaring and using 16-bit floats in the Private,  Workgroup, and Functiond storage classes is enabled, while declaring them in the interface storage classes (e.g., UniformConstant, Uniform,  StorageBuffer, Input, Output , and  PushConstant) is not enabled. shaderInt8 indicates whether 8-bit integers (signed and unsigned) are supported in shader code. This also indicates whether shader modules can declare the Int8m capability. However, this only enables a subset of the storage classes that SPIR-V allows for the Int8C SPIR-V capability: Declaring and using 8-bit integers in the Private,  Workgroup, and Functiond storage classes is enabled, while declaring them in the interface storage classes (e.g., UniformConstant, Uniform,  StorageBuffer, Input, Output , and  PushConstant) is not enabled.descriptorIndexing} indicates whether the implementation supports the minimum set of descriptor indexing features as described in the  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-requirementsFeature Requirements section. Enabling the descriptorIndexing member when   is called does not imply the other minimum descriptor indexing features are also enabled. Those other descriptor indexing features must; be enabled individually as needed by the application.)shaderInputAttachmentArrayDynamicIndexing4 indicates whether arrays of input attachments can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of , must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the #InputAttachmentArrayDynamicIndexing capability.,shaderUniformTexelBufferArrayDynamicIndexing8 indicates whether arrays of uniform texel buffers can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of , must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the &UniformTexelBufferArrayDynamicIndexing capability.,shaderStorageTexelBufferArrayDynamicIndexing8 indicates whether arrays of storage texel buffers can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of , must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the &StorageTexelBufferArrayDynamicIndexing capability.*shaderUniformBufferArrayNonUniformIndexing2 indicates whether arrays of uniform buffers can be indexed by non-uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of , 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.)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.*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.)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.,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./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./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.-descriptorBindingUniformBufferUpdateAfterBind indicates whether the implementation supports updating uniform buffer descriptors after a set is bound. If this feature is not enabled, @8 must not be used with ,.,descriptorBindingSampledImageUpdateAfterBind indicates whether the implementation supports updating sampled image descriptors after a set is bound. If this feature is not enabled, @8 must not be used with ,, ,, or ,.,descriptorBindingStorageImageUpdateAfterBind indicates whether the implementation supports updating storage image descriptors after a set is bound. If this feature is not enabled, @8 must not be used with ,.-descriptorBindingStorageBufferUpdateAfterBind indicates whether the implementation supports updating storage buffer descriptors after a set is bound. If this feature is not enabled, @8 must not be used with ,.2descriptorBindingUniformTexelBufferUpdateAfterBind indicates whether the implementation supports updating uniform texel buffer descriptors after a set is bound. If this feature is not enabled, @8 must not be used with ,.2descriptorBindingStorageTexelBufferUpdateAfterBind indicates whether the implementation supports updating storage texel buffer descriptors after a set is bound. If this feature is not enabled, @8 must not be used with ,.)descriptorBindingUpdateUnusedWhilePending indicates whether the implementation supports updating descriptors while the set is in use. If this feature is not enabled, @ must not be used.descriptorBindingPartiallyBound indicates whether the implementation supports statically using a descriptor set binding in which some descriptors are not valid. If this feature is not enabled, @ must not be used.(descriptorBindingVariableDescriptorCount indicates whether the implementation supports descriptor sets with a variable-sized last binding. If this feature is not enabled, @  must not be used.runtimeDescriptorArray? indicates whether the implementation supports the SPIR-V RuntimeDescriptorArray> capability. If this feature is not enabled, descriptors must( not be declared in runtime arrays.samplerFilterMinmax indicates whether the implementation supports a minimum set of required formats supporting min/max filtering as defined by the  https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-filterMinmaxSingleComponentFormats-minimum-requirements"filterMinmaxSingleComponentFormatsR property minimum requirements. If this feature is not enabled, then no 73 pNext chain can include a  structure.scalarBlockLayoute indicates that the implementation supports the layout of resource blocks in shaders using  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-alignment-requirementsscalar alignment.imagelessFramebuffer indicates that the implementation supports specifying the image view for attachments at render pass begin time via /.uniformBufferStandardLayout indicates that the implementation supports the same layouts for uniform buffers as for storage and other kinds of buffers. See  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources-standard-layoutStandard Buffer Layout.shaderSubgroupExtendedTypes is a boolean that specifies whether subgroup operations can use 8-bit integer, 16-bit integer, 64-bit integer, 16-bit floating-point, and vectors of these types in  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operationsgroup operations with  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroupsubgroup scope.if the implementation supports the types.separateDepthStencilLayouts6 indicates whether the implementation supports a /R6 for a depth/stencil image with only one of kZ or k[ set, and whether , , , or  can be used.hostQueryReset[ indicates that the implementation supports resetting queries from the host with .timelineSemaphore2 indicates whether semaphores created with a   of   are supported.bufferDeviceAddress indicates that the implementation supports accessing buffer memory in shaders as storage buffers via an address queried from . bufferDeviceAddressCaptureReplay indicates that the implementation supports saving and reusing buffer and device addresses, e.g. for trace capture and replay.bufferDeviceAddressMultiDevice5 indicates that the implementation supports the bufferDeviceAddress and  rayTracing features for logical devices created with multiple physical devices. If this feature is not supported, buffer and acceleration structure addresses mustT not be queried on a logical device created with more than one physical device.vulkanMemoryModelQ indicates whether the Vulkan Memory Model is supported, as defined in  Zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-modelVulkan Memory Model2. This also indicates whether shader modules can declare the VulkanMemoryModel capability.vulkanMemoryModelDeviceScope8 indicates whether the Vulkan Memory Model can use )H scope synchronization. This also indicates whether shader modules can declare the VulkanMemoryModelDeviceScope capability.-vulkanMemoryModelAvailabilityVisibilityChains= indicates whether the Vulkan Memory Model can use  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-model-availability-visibility"availability and visibility chains! with more than one element.shaderOutputViewportIndex8 indicates whether the implementation supports the ShaderViewportIndex> SPIR-V capability enabling variables decorated with the  ViewportIndexw built-in to be exported from vertex or tessellation evaluation shaders. If this feature is not enabled, the  ViewportIndex built-in decoration mustJ not be used on outputs in vertex or tessellation evaluation shaders.shaderOutputLayer8 indicates whether the implementation supports the  ShaderLayer> SPIR-V capability enabling variables decorated with the Layerr built-in to be exported from vertex or tessellation evaluation shaders. If this feature is not enabled, the Layer built-in decoration mustJ not be used on outputs in vertex or tessellation evaluation shaders.If subgroupBroadcastDynamicId is , the Id  operand of OpGroupNonUniformBroadcast canP be dynamically uniform within a subgroup, and the Index  operand of OpGroupNonUniformQuadBroadcast canH be dynamically uniform within the derivative group. If it is , these operands must be constants.If the  structure is included in the pNext chain of OK, it is filled with values indicating whether each feature is supported.  can also be used in the pNext chain of    to enable the features.Valid Usage (Implicit)sType must be See Also, vulkan~VkPhysicalDeviceVulkan11Properties - Structure specifying physical device properties for functionality promoted to Vulkan 1.1 DescriptionThe members of  must8 have the same values as the corresponding members of K, @, P, R, ?, and Q.Valid Usage (Implicit)See Also, , G, \, , 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 OK, it is filled with values indicating whether each feature is supported.  can also be used in the pNext chain of    to enable the features.Valid Usage (Implicit)See Also, ) vulkandriverID> is a unique identifier for the driver of the physical device.) vulkan driverName is an array of y charM containing a null-terminated UTF-8 string which is the name of the driver.) vulkan driverInfo is an array of x charZ containing a null-terminated UTF-8 string with additional information about the driver.) vulkanconformanceVersionX is the version of the Vulkan conformance test this driver is conformant against (see -).)vulkandenormBehaviorIndependence is a h value indicating whether, and how, denorm behavior can be set independently for different bit widths.)vulkanroundingModeIndependence is a g value indicating whether, and how, rounding modes can be set independently for different bit widths.)vulkan%shaderSignedZeroInfNanPreserveFloat16A is a boolean value indicating whether sign of a zero, Nans and  \pm\infty canU be preserved in 16-bit floating-point computations. It also indicates whether the SignedZeroInfNanPreserve execution mode can* be used for 16-bit floating-point types.)vulkan%shaderSignedZeroInfNanPreserveFloat32A is a boolean value indicating whether sign of a zero, Nans and  \pm\infty canU be preserved in 32-bit floating-point computations. It also indicates whether the SignedZeroInfNanPreserve execution mode can* be used for 32-bit floating-point types.)vulkan%shaderSignedZeroInfNanPreserveFloat64A is a boolean value indicating whether sign of a zero, Nans and  \pm\infty canU be preserved in 64-bit floating-point computations. It also indicates whether the SignedZeroInfNanPreserve execution mode can* be used for 64-bit floating-point types.)vulkanshaderDenormPreserveFloat162 is a boolean value indicating whether denormals canT be preserved in 16-bit floating-point computations. It also indicates whether the DenormPreserve execution mode can* be used for 16-bit floating-point types.)vulkanshaderDenormPreserveFloat322 is a boolean value indicating whether denormals canT be preserved in 32-bit floating-point computations. It also indicates whether the DenormPreserve execution mode can* be used for 32-bit floating-point types.)vulkanshaderDenormPreserveFloat642 is a boolean value indicating whether denormals canT be preserved in 64-bit floating-point computations. It also indicates whether the DenormPreserve execution mode can* be used for 64-bit floating-point types.)vulkanshaderDenormFlushToZeroFloat162 is a boolean value indicating whether denormals canZ be flushed to zero in 16-bit floating-point computations. It also indicates whether the DenormFlushToZero execution mode can) be used for 16-bit floating-point types.)vulkanshaderDenormFlushToZeroFloat322 is a boolean value indicating whether denormals canZ be flushed to zero in 32-bit floating-point computations. It also indicates whether the DenormFlushToZero execution mode can) be used for 32-bit floating-point types.)vulkanshaderDenormFlushToZeroFloat642 is a boolean value indicating whether denormals canZ be flushed to zero in 64-bit floating-point computations. It also indicates whether the DenormFlushToZero execution mode can) be used for 64-bit floating-point types.)vulkanshaderRoundingModeRTEFloat16 is a boolean value indicating whether an implementation supports the round-to-nearest-even rounding mode for 16-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTE execution mode can* be used for 16-bit floating-point types.)vulkanshaderRoundingModeRTEFloat32 is a boolean value indicating whether an implementation supports the round-to-nearest-even rounding mode for 32-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTE execution mode can* be used for 32-bit floating-point types.)vulkanshaderRoundingModeRTEFloat64 is a boolean value indicating whether an implementation supports the round-to-nearest-even rounding mode for 64-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTE execution mode can* be used for 64-bit floating-point types.)vulkanshaderRoundingModeRTZFloat16 is a boolean value indicating whether an implementation supports the round-towards-zero rounding mode for 16-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTZ execution mode can* be used for 16-bit floating-point types.)vulkanshaderRoundingModeRTZFloat32 is a boolean value indicating whether an implementation supports the round-towards-zero rounding mode for 32-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTZ execution mode can* be used for 32-bit floating-point types.)vulkanshaderRoundingModeRTZFloat64 is a boolean value indicating whether an implementation supports the round-towards-zero rounding mode for 64-bit floating-point arithmetic and conversion instructions. It also indicates whether the RoundingModeRTZ execution mode can* be used for 64-bit floating-point types.)vulkan'maxUpdateAfterBindDescriptorsInAllPoolsO is the maximum number of descriptors (summed over all descriptor types) that can9 be created across all pools that are created with the u bit set. Pool creation may fail when this limit is exceeded, or when the space this limit represents is unable to satisfy a pool creation due to fragmentation.) vulkan0shaderUniformBufferArrayNonUniformIndexingNativeu is a boolean value indicating whether uniform buffer descriptors natively support nonuniform indexing. If this is k, then a single dynamic instance of an instruction that nonuniformly indexes an array of uniform buffers may@ execute multiple times in order to access all the descriptors.)!vulkan/shaderSampledImageArrayNonUniformIndexingNativex is a boolean value indicating whether sampler and image descriptors natively support nonuniform indexing. If this is n, then a single dynamic instance of an instruction that nonuniformly indexes an array of samplers or images may@ execute multiple times in order to access all the descriptors.)"vulkan0shaderStorageBufferArrayNonUniformIndexingNativeu is a boolean value indicating whether storage buffer descriptors natively support nonuniform indexing. If this is k, then a single dynamic instance of an instruction that nonuniformly indexes an array of storage buffers may@ execute multiple times in order to access all the descriptors.)#vulkan/shaderStorageImageArrayNonUniformIndexingNativet is a boolean value indicating whether storage image descriptors natively support nonuniform indexing. If this is j, then a single dynamic instance of an instruction that nonuniformly indexes an array of storage images may@ execute multiple times in order to access all the descriptors.)$vulkan2shaderInputAttachmentArrayNonUniformIndexingNativew is a boolean value indicating whether input attachment descriptors natively support nonuniform indexing. If this is m, then a single dynamic instance of an instruction that nonuniformly indexes an array of input attachments may@ execute multiple times in order to access all the descriptors.)%vulkan!robustBufferAccessUpdateAfterBind) is a boolean value indicating whether  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobustBufferAccess can- be enabled in a device simultaneously with -descriptorBindingUniformBufferUpdateAfterBind, -descriptorBindingStorageBufferUpdateAfterBind, 2descriptorBindingUniformTexelBufferUpdateAfterBind , and/or 2descriptorBindingStorageTexelBufferUpdateAfterBind. If this is , then either robustBufferAccess must9 be disabled or all of these update-after-bind features must be disabled.)&vulkanquadDivergentImplicitLod is a boolean value indicating whether implicit level of detail calculations for image operations have well-defined results when the image and/or sampler objects used for the instruction are not uniform within a quad. See  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-derivative-image-operationsDerivative Image Operations.)'vulkan,maxPerStageDescriptorUpdateAfterBindSamplers is similar to maxPerStageDescriptorSamplersK but counts descriptors from descriptor sets created with or without the t6 bit set.)(vulkan2maxPerStageDescriptorUpdateAfterBindUniformBuffers is similar to #maxPerStageDescriptorUniformBuffersK but counts descriptors from descriptor sets created with or without the t6 bit set.))vulkan2maxPerStageDescriptorUpdateAfterBindStorageBuffers is similar to #maxPerStageDescriptorStorageBuffersK but counts descriptors from descriptor sets created with or without the t6 bit set.)*vulkan1maxPerStageDescriptorUpdateAfterBindSampledImages is similar to "maxPerStageDescriptorSampledImagesK but counts descriptors from descriptor sets created with or without the t6 bit set.)+vulkan1maxPerStageDescriptorUpdateAfterBindStorageImages is similar to "maxPerStageDescriptorStorageImagesK but counts descriptors from descriptor sets created with or without the t6 bit set.),vulkan4maxPerStageDescriptorUpdateAfterBindInputAttachments is similar to %maxPerStageDescriptorInputAttachmentsK but counts descriptors from descriptor sets created with or without the t6 bit set.)-vulkan#maxPerStageUpdateAfterBindResources is similar to maxPerStageResourcesK but counts descriptors from descriptor sets created with or without the t6 bit set.).vulkan'maxDescriptorSetUpdateAfterBindSamplers is similar to maxDescriptorSetSamplersK but counts descriptors from descriptor sets created with or without the t6 bit set.)/vulkan-maxDescriptorSetUpdateAfterBindUniformBuffers is similar to maxDescriptorSetUniformBuffersK but counts descriptors from descriptor sets created with or without the t6 bit set.)0vulkan4maxDescriptorSetUpdateAfterBindUniformBuffersDynamic is similar to %maxDescriptorSetUniformBuffersDynamicK but counts descriptors from descriptor sets created with or without the t6 bit set.)1vulkan-maxDescriptorSetUpdateAfterBindStorageBuffers is similar to maxDescriptorSetStorageBuffersK but counts descriptors from descriptor sets created with or without the t6 bit set.)2vulkan4maxDescriptorSetUpdateAfterBindStorageBuffersDynamic is similar to %maxDescriptorSetStorageBuffersDynamicK but counts descriptors from descriptor sets created with or without the t6 bit set.)3vulkan,maxDescriptorSetUpdateAfterBindSampledImages is similar to maxDescriptorSetSampledImagesK but counts descriptors from descriptor sets created with or without the t6 bit set.)4vulkan,maxDescriptorSetUpdateAfterBindStorageImages is similar to maxDescriptorSetStorageImagesK but counts descriptors from descriptor sets created with or without the t6 bit set.)5vulkan/maxDescriptorSetUpdateAfterBindInputAttachments is similar to  maxDescriptorSetInputAttachmentsK but counts descriptors from descriptor sets created with or without the t6 bit set.)6vulkansupportedDepthResolveModes 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.)7vulkansupportedStencilResolveModes 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.)8vulkanindependentResolveNone is ~ if the implementation supports setting the depth and stencil resolve modes to different values when one of those modes is ?mT. Otherwise the implementation only supports setting both modes to the same value.)9vulkanindependentResolve is  if the implementation supports all combinations of the supported depth and stencil resolve modes, including setting either depth or stencil resolve mode to ?m#. An implementation that supports independentResolve must also support independentResolveNone.):vulkan"filterMinmaxSingleComponentFormatsd is a boolean value indicating whether a minimum set of required formats support min/max filtering.);vulkan!filterMinmaxImageComponentMapping is a boolean value indicating whether the implementation supports non-identity component mapping of the image when doing min/max filtering.)<vulkan#maxTimelineSemaphoreValueDifference indicates the maximum difference allowed by the implementation between the current value of a timeline semaphore and any pending signal or wait operations.)=vulkan#framebufferIntegerColorSampleCounts is a bitmask of !t indicating the color sample counts that are supported for all framebuffer color attachments with integer formats.)ovulkan deviceUUID is an array of  uint8_tE values representing a universally unique identifier for the device.)pvulkan driverUUID is an array of  uint8_ta values representing a universally unique identifier for the driver build in use by the device.)qvulkan deviceLUID is an array of  uint8_tA values representing a locally unique identifier for the device.)rvulkandeviceNodeMask is a uint32_t[ bitfield identifying the node within a linked device adapter corresponding to the device.)svulkandeviceLUIDValid" 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.)tvulkan subgroupSize9 is the default number of invocations in each subgroup.  subgroupSize? is at least 1 if any of the physical device s queues support Vo or Vp.  subgroupSize is a power-of-two.)uvulkansubgroupSupportedStages is a bitfield of "sK describing the shader stages that subgroup operations are supported in. subgroupSupportedStages will have the "t: bit set if any of the physical device s queues support Vp.)vvulkansubgroupSupportedOperations is a bitmask of C H specifying the sets of subgroup operations supported on this device. subgroupSupportedOperations will have the C: bit set if any of the physical device s queues support Vo or Vp.)wvulkan!subgroupQuadOperationsInAllStages" is a boolean specifying whether  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroup-quadquad subgroup operationsQ are available in all stages, or are restricted to fragment and compute stages.)xvulkanpointClippingBehavior is a GP value specifying the point clipping behavior supported by the implementation.)yvulkanmaxMultiviewViewCount2 is one greater than the maximum view index that can be used in a subpass.)zvulkanmaxMultiviewInstanceIndex 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.){vulkanprotectedNoFault4 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.)|vulkanmaxPerSetDescriptors is a maximum number of descriptors (summed over all descriptor types) in a single descriptor set that is guaranteed to satisfy any implementation-dependent constraints on the size of a descriptor set itself. Applications canQ query whether a descriptor set that goes beyond this limit is supported using Q.)}vulkanmaxMemoryAllocationSize2 is the maximum size of a memory allocation that can@ be created, even if there is more space available in the heap.)vulkanstorageBuffer16BitAccess# specifies whether objects in the  StorageBuffer or PhysicalStorageBuffer storage class with the Block decoration can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members mustJ not be used in such objects. This also specifies whether shader modules can declare the StorageBuffer16BitAccess capability.)vulkan"uniformAndStorageBuffer16BitAccess# specifies whether objects in the Uniform storage class with the Block decoration and in the  StorageBuffer or PhysicalStorageBuffer) storage class with the same decoration can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members mustJ not be used in such objects. This also specifies whether shader modules can declare the "UniformAndStorageBuffer16BitAccess capability.)vulkanstoragePushConstant16" specifies whether objects in the  PushConstant storage class can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or floating-point members mustJ not be used in such objects. This also specifies whether shader modules can declare the StoragePushConstant16 capability.)vulkanstorageInputOutput16" specifies whether objects in the Input and Output storage classes can have 16-bit integer and 16-bit floating-point members. If this feature is not enabled, 16-bit integer or 16-bit floating-point members mustJ not be used in such objects. This also specifies whether shader modules can declare the StorageInputOutput16 capability.)vulkan multiview specifies whether the implementation supports multiview rendering within a render pass. If this feature is not enabled, the view mask of each subpass must always be zero.)vulkanmultiviewGeometryShader` 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.)vulkanmultiviewTessellationShader` 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.)vulkanvariablePointersStorageBuffer; 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.)vulkanvariablePointers; specifies whether the implementation supports the SPIR-V VariablePointers? capability. When this feature is not enabled, shader modules must not declare the VariablePointers capability.)vulkanprotectedMemory1 specifies whether protected memory is supported.)vulkansamplerYcbcrConversion0 specifies whether the implementation supports  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversionsampler Y 2CBCR conversion. If samplerYcbcrConversion is ], sampler Y 2CBCR conversion is not supported, and samplers using sampler Y 2CBCR conversion must not be used.)vulkanshaderDrawParameters9 specifies whether shader draw parameters are supported.J 7 J I H G F E D C B A @ ? > = < ; : 9 8Y*QPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+) )))))))))))))))))):);)) )!)")#)$)%)&)')()))*)+),)-).)/)0)1)2)3)4)5) ) ) ) )<)6)7)8)9)=)>)h)i)j)`)a)F)G)D)E)b)A)B)C)^)I)J)K)L)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)d)_)e)f)g)c)?)@)H)])k)l)m)n)t)x)y)z)o)p)q)r)s){)|)})u)v)w)~))))))))))))789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc123456~xy vw!z{"|}#(}$((((((((((%(((((((((&(~('((((((((((((()(((((((((((*((((+(((((,-. S T/=>0HI1FG2?BCE@AD3vw4tu5qrs6cde7STU823456789:;<=>?@ABC9%&:;<=>?@A       43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ./0321%&')("! *+,10/.-xyhi((((()m))~)))))))))))))n)t)x)y)z)o)p)q)r)s){)|)})u)v)w)>)h)i)j)`)a)F)G)D)E)b)A)B)C)^)I)J)K)L)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)d)_)e)f)g)c)?)@)H)])k)l)m) )))))))))))))))))):);)) )!)")#)$)%)&)')()))*)+),)-).)/)0)1)2)3)4)5) ) ) ) )<)6)7)8)9)=43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ,-43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      xyFNone'"#%&'-./189;=>?FHIMSUVX_dghklmqvulkanYVkBindImageMemoryDeviceGroupInfo - Structure specifying device within a group to bind toMembersIf the pNext list of B 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 NULL1 or a pointer to an extension-specific 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 d 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 g 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 g bit set, then it is as if pDeviceIndicesi contains an array of zeros. In other words, by default each physical device attaches to instance zero. Valid UsageAt least one of deviceIndexCount and splitInstanceBindRegionCount must be zerodeviceIndexCount mustU either be zero or equal to the number of physical devices in the logical deviceAll elements of pDeviceIndices must be valid device indicessplitInstanceBindRegionCount must] either be zero or equal to the number of physical devices in the logical device squared Elements of pSplitInstanceBindRegions7 that correspond to the same instance of an image must not overlapThe offset.x member of any element of pSplitInstanceBindRegions must5 be a multiple of the sparse image block width (:::imageGranularity.width/) of all non-metadata aspects of the imageThe offset.y member of any element of pSplitInstanceBindRegions must6 be a multiple of the sparse image block height (:::imageGranularity.height/) of all non-metadata aspects of the imageThe  extent.width member of any element of pSplitInstanceBindRegions mustr either be a multiple of the sparse image block width of all non-metadata aspects of the image, or else  extent.width + offset.x must. equal the width of the image subresourceThe  extent.height member of any element of pSplitInstanceBindRegions musts either be a multiple of the sparse image block height of all non-metadata aspects of the image, or else  extent.height + offset.y must. equal the width of the image subresourceValid Usage (Implicit)sType must be If deviceIndexCount is not 0, pDeviceIndices must( be a valid pointer to an array of deviceIndexCount uint32_t valuesIf splitInstanceBindRegionCount is not 0, pSplitInstanceBindRegions must( be a valid pointer to an array of splitInstanceBindRegionCount  structuresSee Also, vulkanZVkBindBufferMemoryDeviceGroupInfo - Structure specifying device within a group to bind toMembersIf the pNext list of B 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 NULL1 or a pointer to an extension-specific 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 g 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 g bit set, then it is as if pDeviceIndicesi contains an array of zeros. In other words, by default each physical device attaches to instance zero. Valid UsagedeviceIndexCount mustU either be zero or equal to the number of physical devices in the logical deviceAll elements of pDeviceIndices must be valid device indicesValid Usage (Implicit)sType must be If deviceIndexCount is not 0, pDeviceIndices must( be a valid pointer to an array of deviceIndexCount uint32_t valuesSee AlsoHI)))))43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      )))))43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      IHENone'"#%&'-./189;=>?FHIMSUVX_dghklmqvulkanaVkMemoryAllocateFlagsInfo - Structure controlling how many instances of memory will be allocated DescriptionIf 3D is not set, the number of instances allocated depends on whether g! is set in the memory heap. If g[ 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 gD 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 G::subsetAllocation is C, then memory is only consumed for the devices in the device mask.NoteIn practice, most allocations on a multi-instance heap will be allocated across all physical devices. Unicast allocation support is an optional optimization for a minority of allocations. Valid UsageIf 3 is set,  deviceMask must be a valid device maskIf 3 is set,  deviceMask must not be zeroValid Usage (Implicit)sType must be flags must be a valid combination of / valuesSee Also., vulkanwVkDeviceGroupSubmitInfo - Structure indicating which physical devices execute semaphore operations and command buffers DescriptioniIf this structure is not present, semaphore operations and command buffers execute on device index zero. Valid UsagewaitSemaphoreCount must equal 5A::waitSemaphoreCountcommandBufferCount must equal 5A::commandBufferCountsignalSemaphoreCount must equal 5A::signalSemaphoreCountAll elements of pWaitSemaphoreDeviceIndices and pSignalSemaphoreDeviceIndices must be valid device indicesAll elements of pCommandBufferDeviceMasks must be valid device masksValid Usage (Implicit)sType must be If waitSemaphoreCount is not 0, pWaitSemaphoreDeviceIndices must# be a valid pointer to an array of waitSemaphoreCount uint32_t valuesIf commandBufferCount is not 0, pCommandBufferDeviceMasks must# be a valid pointer to an array of commandBufferCount uint32_t valuesIf signalSemaphoreCount is not 0, pSignalSemaphoreDeviceIndices must( be a valid pointer to an array of signalSemaphoreCount uint32_t valuesSee AlsovulkankVkDeviceGroupRenderPassBeginInfo - Set the initial device mask and render areas for a render pass instance DescriptionThe  deviceMaskT serves several purposes. It is an upper bound on the set of physical devices that can be used during the render pass instance, and the initial device mask when the render pass instance begins. In addition, commands transitioning to the next subpass in the render pass instance and commands ending the render pass instance, and, accordingly render pass attachment load, store, and resolve operations and subpass dependencies corresponding to the render pass instance, are executed on the physical devices included in the device mask provided here.If deviceRenderAreaCount$ is not zero, then the elements of pDeviceRenderAreas override the value of  *:: 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 4G1 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 Usage deviceMask must be a valid device mask value deviceMask must not be zero deviceMask must= be a subset of the command buffer s initial device maskdeviceRenderAreaCount mustU either be zero or equal to the number of physical devices in the logical deviceValid Usage (Implicit)sType must be If deviceRenderAreaCount is not 0, pDeviceRenderAreas must( be a valid pointer to an array of deviceRenderAreaCount  structuresSee Also, vulkanWVkDeviceGroupCommandBufferBeginInfo - Set the initial device mask for a command buffer DescriptionPThe initial device mask also acts as an upper bound on the set of devices that can2 ever be in the device mask in the command buffer.If this structure is not present, the initial value of a command buffer s device mask is set to include all physical devices in the logical device when the command buffer begins recording.Valid Usage (Implicit)See AlsovulkanMVkDeviceGroupBindSparseInfo - Structure indicating which instances are bound DescriptionThese device indices apply to all buffer and image memory binds included in the batch pointing to this structure. The semaphore waits and signals for the batch are executed only by the physical device specified by the resourceDeviceIndex."If this structure is not present, resourceDeviceIndex and memoryDeviceIndex are assumed to be zero. Valid UsageresourceDeviceIndex and memoryDeviceIndex must" both be valid device indices+Each memory allocation bound in this batch must% have allocated an instance for memoryDeviceIndexValid Usage (Implicit)sType must be See Also)vulkanresourceDeviceIndexG 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 5A::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 5A::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 5A::pSignalSemaphores.)vulkan deviceMask must not be zero)vulkan deviceMask1 is the device mask for the render pass instance.)vulkanpDeviceRenderAreas is a pointer to an array of ? structures defining the render area for each physical device.)vulkanflags is a bitmask of / controlling the allocation.)vulkan deviceMaskN is a mask of physical devices in the logical device, indicating that memory must/ be allocated on each device in the mask, if 3 is set in flags.)vulkanVvkGetDeviceGroupPeerMemoryFeatures - Query supported peer memory features of a device Parametersdevice, is the logical device that owns the memory. heapIndexI is the index of the memory heap from which the memory is allocated.localDeviceIndexQ is the device index of the physical device that performs the memory access.remoteDeviceIndexR is the device index of the physical device that the memory is allocated for.pPeerMemoryFeatures is a pointer to a  bitmask indicating which types of memory accesses are supported for the combination of heap, local, and remote devices.Valid Usage (Implicit)See Alsoz, )vulkan;vkCmdSetDeviceMask - Modify device mask of a command buffer Parameters commandBuffer> is command buffer whose current device mask is modified. deviceMask- is the new value of the current device mask. Description deviceMask is used to filter out subsequent commands from executing on all physical devices whose bit indices are not set in the mask, except commands beginning a render pass instance, commands transitioning to the next subpass in the render pass instance, and commands ending a render pass instance, which always execute on the set of physical devices whose bit indices are included in the  deviceMask member of the S structure passed to the command beginning the corresponding render pass instance. Valid Usage deviceMask must be a valid device mask value deviceMask must not be zero deviceMask must4 not include any set bits that were not in the :: deviceMask3 value when the command buffer began recordingIf )/ is called inside a render pass instance,  deviceMask must4 not include any set bits that were not in the :: deviceMask9 value when the render pass instance began recordingValid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) 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/vkCmdDispatchBase - Dispatch compute work items Parameters commandBufferD is the command buffer into which the command will be recorded. baseGroupX0 is the start value for the X component of  WorkgroupId. baseGroupY0 is the start value for the Y component of  WorkgroupId. baseGroupZ0 is the start value for the Z component of  WorkgroupId. groupCountXG is the number of local workgroups to dispatch in the X dimension. groupCountYG is the number of local workgroups to dispatch in the Y dimension. groupCountZG is the number of local workgroups to dispatch in the Z dimension. Description@When the command is executed, a global workgroup consisting of  groupCountX  groupCountY  groupCountZ& local workgroups is assembled, with  WorkgroupId values ranging from [ baseGroup*,  baseGroup* +  groupCount*) in each component.   is equivalent to <vkCmdDispatchBase(0,0,0,groupCountX,groupCountY,groupCountZ). Valid UsageIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain nIf 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 nIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any )| being sampled with " as a result of this command must have a (E and format that supports cubic filtering, as specified by <:: filterCubic returned by OAny )| being sampled with + with a reduction mode of either  or " as a result of this command must have a (i and format that supports cubic filtering together with minmax filtering, as specified by <::filterCubicMinmax returned by OAny )x created with a *::flags containing * sampled as a result of this command must only be sampled using a  of  For each set n% that is statically used by the )N bound to the pipeline bind point used by this command, a descriptor set must have been bound to 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???;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 )~; that is compatible for push constants, with the )~! used to create the current ), as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via  l, must2 be valid if they are statically used by the ); bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the )o object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the )f object bound to the pipeline bind point used by this command, since that pipeline was boundIf the )S object bound to the pipeline bind point used by this command accesses a )> object that uses unnormalized coordinates, that sampler must% not be used to sample from any )x with a )| of the type (, (, (, ( or (, in any shader stageIf the )S object bound to the pipeline bind point used by this command accesses a )> object that uses unnormalized coordinates, that sampler must) not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with  ImplicitLod, Dref or Proj( in their name, in any shader stageIf the )S object bound to the pipeline bind point used by this command accesses a )> 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 stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the )f object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the )f object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the )C object bound to the pipeline bind point used by this command must! not be a protected resource baseGroupX must be less than  _::maxComputeWorkGroupCount[0] baseGroupX must be less than  _::maxComputeWorkGroupCount[1] baseGroupZ must be less than  _::maxComputeWorkGroupCount[2] groupCountX must be less than or equal to  _::maxComputeWorkGroupCount[0] minus  baseGroupX groupCountY must be less than or equal to  _::maxComputeWorkGroupCount[1] minus  baseGroupY groupCountZ must be less than or equal to  _::maxComputeWorkGroupCount[2] minus  baseGroupZ If any of  baseGroupX,  baseGroupY, or  baseGroupZ4 are not zero, then the bound compute pipeline must! have been created with the ) flagValid Usage (Implicit) commandBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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 AlsoCD"&%$#)))))))))))))))43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ./0321678JIHGFEDCBA@?>=<;:9)))))))))))))))))))))))43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      78JIHGFEDCBA@?>=<;:9JIHGFEDCBA@?>=<;:96DC"&%$#&%$#/0321321.None'"#%&'-./189;=>?FHIMSUVX_dghklmqPCD''''''''''''''''''''''''''''''''''))))))))))))))))))))))))))))))))))W))))))))))))))))))))))))))))))))))DC'''''''''''''''''''''''''''''''''''''''''None'"#%&'-./189;=>?FHIMSUVX_dghklmq kCDG [ L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                            ~ } | { z 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 ` _ ^ ] \HIJ 7 J I H G F E D C B A @ ? > = < ; : 9 8Y*QPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+h km qs! uz{|}q|{zyxwvutsr"&%$#23456!k!o!l!m!n!p!t!q!r!s y z { | } ~ )))))))))))))))))))){|}~yzYZUVWXUV!I!J!K!E!F!G!H$ $!$"$#$$$%$&$'$($)$*$+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&##"" """#"##### "" "" "" &')(0132:;@?>=<GHJIQRTS[\^]43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      `     ./0321;<=>FGHMLKJIefgihuvw|{zyx678JIHGFEDCBA@?>=<;:9fghponmlkji*+,10/.-z}[ !L!u!v## # $,$-$.%%%%%%%&))))))1None'"#%&'-./189;=>?FHIMSUVX_dghklmq:vulkanXVkVertexInputBindingDescription - Structure specifying vertex input binding descriptionValid Usage (Implicit)See Also, evulkan\VkVertexInputAttributeDescription - Structure specifying vertex input attribute descriptionValid Usage (Implicit)See AlsoG, vulkan?VkStencilOpState - Structure specifying stencil operation stateValid Usage (Implicit)See Also , , vulkanKVkSpecializationMapEntry - Structure specifying a specialization map entry DescriptionIf a  constantID| value is not a specialization constant ID used in the shader, that map entry does not affect the behavior of the pipeline. Valid UsageFor a  constantID4 specialization constant declared in a shader, size must match the byte size of the  constantID1. If the specialization constant is of type boolean, size must be the byte size of See Alsovulkan?VkSpecializationInfo - Structure specifying specialization info Description pMapEntries is a pointer to a  structure. Valid UsageThe offset member of each element of  pMapEntries must be less than dataSizeThe size member of each element of  pMapEntries must be less than or equal to dataSize minus offsetValid Usage (Implicit)If  mapEntryCount is not 0,  pMapEntries must( be a valid pointer to an array of  mapEntryCount valid  structuresIf dataSize is not 0, pData must( be a valid pointer to an array of dataSize bytesSee Also, vulkanoVkPipelineViewportStateCreateInfo - Structure specifying parameters of a newly created pipeline viewport state Valid Usage If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  viewportCount must be 1 If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewportmultiple viewports feature is not enabled,  scissorCount must be 1 viewportCount must be between 1 and  _:: maxViewports, inclusive scissorCount must be between 1 and  _:: maxViewports, inclusive scissorCount and  viewportCount must be identicalThe x and y members of offset member of any element of  pScissors must be greater than or equal to 0Evaluation of (offset.x +  extent.width) mustF not cause a signed integer addition overflow for any element of  pScissorsEvaluation of (offset.y +  extent.height) mustF not cause a signed integer addition overflow for any element of  pScissorsIf the viewportWScalingEnable member of a  structure included in the pNext chain is , the  viewportCount member of the  structure must be equal to  viewportCountValid Usage (Implicit)sType must be *Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , , , , or The sType value of each struct in the pNext chain must be uniqueflags must be 0 viewportCount must be greater than 0 scissorCount must be greater than 0See Also, , , , vulkanvVkPipelineVertexInputStateCreateInfo - Structure specifying parameters of a newly created pipeline vertex input state Valid UsagevertexBindingDescriptionCount must be less than or equal to  _::maxVertexInputBindingsvertexAttributeDescriptionCount must be less than or equal to  _::maxVertexInputAttributes For every binding# specified by each element of pVertexAttributeDescriptions, a  must exist in pVertexBindingDescriptions with the same value of bindingAll elements of pVertexBindingDescriptions must' describe distinct binding numbersAll elements of pVertexAttributeDescriptions must+ describe distinct attribute locationsValid Usage (Implicit)sType must be -pNext must be NULL* or a pointer to a valid instance of  The sType value of each struct in the pNext chain must be uniqueflags must be 0If vertexBindingDescriptionCount is not 0, pVertexBindingDescriptions must( be a valid pointer to an array of vertexBindingDescriptionCount valid  structuresIf vertexAttributeDescriptionCount is not 0, pVertexAttributeDescriptions must( be a valid pointer to an array of vertexAttributeDescriptionCount valid  structuresSee Also, I, , , , vulkanwVkPipelineTessellationStateCreateInfo - Structure specifying parameters of a newly created pipeline tessellation state Valid UsagepatchControlPoints must: be greater than zero and less than or equal to  _::maxTessellationPatchSizeValid Usage (Implicit)sType must be +pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueflags must be 0See Also, I, , vulkankVkPipelineShaderStageCreateInfo - Structure specifying parameters of a newly created pipeline shader stage Valid Usage If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled, stage must not be " 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 " or " 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 " 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 "stage must not be ", or "pName must be the name of an  OpEntryPoint in module+ with an execution model that matches stagedIf the identified entry point includes any variable in its interface that is declared with the  ClipDistance BuiltIn decoration, that variable must* not have an array size greater than  _::maxClipDistancesdIf the identified entry point includes any variable in its interface that is declared with the  CullDistance BuiltIn decoration, that variable must* not have an array size greater than  _::maxCullDistancesfIf the identified entry point includes any variables in its interface that are declared with the  ClipDistance or  CullDistance BuiltIn decoration, those variables must7 not have array sizes which sum to more than  _::maxCombinedClipAndCullDistancesiIf the identified entry point includes any variable in its interface that is declared with the  : BuiltIn decoration, that variable must* not have an array size greater than  _::maxSampleMaskWordsIf stage is "", the identified entry point mustM not include any input variable in its interface that is decorated with  CullDistanceIf stage is " or "-, 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  _::maxTessellationPatchSizeIf stage is "", 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  _::maxGeometryOutputVerticesIf stage is "", 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  _::maxGeometryShaderInvocationsIf stageM is a vertex processing stage, and the identified entry point writes to Layer for any primitive, it must write the same value to Layer& for all vertices of a given primitiveIf stageM is a vertex processing stage, and the identified entry point writes to  ViewportIndex for any primitive, it must write the same value to  ViewportIndex+ for all vertices of a given primitiveIf stage is "", the identified entry point mustG not include any output variables in its interface decorated with  CullDistanceIf stage is "0, and the identified entry point writes to  FragDepth in any execution path, it must write to  FragDepth in all execution pathsIf stage is "0, and the identified entry point writes to FragStencilRefEXT in any execution path, it must write to FragStencilRefEXT in all execution pathsIf 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 ::maxMeshOutputVerticesIf 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 ::maxMeshOutputPrimitivesIf 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 enabledIf 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 enabled If a # structure is included in the pNext chain, flags must not have the \q flag set If a # structure is included in the pNext chain, the  jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroupSizeControlsubgroupSizeControl feature must be enabled, and stage must' be a valid bit specified in rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-required-subgroup-size-stagesrequiredSubgroupSizeStages If a # structure is included in the pNext chain and stage is "t., the local workgroup size of the shader must3 be less than or equal to the product of ::requiredSubgroupSize and phttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroups-per-workgroupmaxComputeWorkgroupSubgroups If a # structure is included in the pNext chain, and flags has the \rQ flag set, the local workgroup size in the X dimension of the pipeline must be a multiple of ::requiredSubgroupSizeIf 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-sizemaxSubgroupSizeIf 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 subgroupSizeValid Usage (Implicit)sType must be .pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of \ valuesstage must be a valid ] valuemodule must be a valid f handlepName must" be a null-terminated UTF-8 stringIf pSpecializationInfo is not NULL, pSpecializationInfo must$ be a valid pointer to a valid  structureSee Also, , I, , $, %, f, ], , vulkanyVkPipelineRasterizationStateCreateInfo - Structure specifying parameters of a newly created pipeline rasterization state DescriptionThe application can also add a f structure to the pNext chain of a  structure. This structure enables selecting the rasterization order to use when rendering with the corresponding graphics pipeline as described in  \https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primrast-orderRasterization Order. Valid Usage If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClampdepth clamping feature is not enabled, depthClampEnable must be  If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fillModeNonSolidnon-solid fill modes feature is not enabled,  polygonMode must be " or "If the VK_NV_fill_rectangle extension is not enabled,  polygonMode must not be "Valid Usage (Implicit)sType must be )Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , , , f, or The sType value of each struct in the pNext chain must be uniqueflags must be 0 polygonMode must be a valid  valuecullMode must be a valid combination of x values frontFace must be a valid  Q valueSee Also, ,  Q, , , , vulkanuVkPipelineMultisampleStateCreateInfo - Structure specifying parameters of a newly created pipeline multisample state Valid Usage If the  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sampleRateShadingsample rate shading feature is not enabled, sampleShadingEnable must be  If the  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alpha to one feature is not enabled, alphaToOneEnable must be minSampleShading must be in the range [0,1]If the VK_NV_framebuffer_mixed_samplesM extension is enabled, and if the subpass has any color attachments and rasterizationSamples= is greater than the number of color samples, then sampleShadingEnable must be Valid Usage (Implicit)sType must be (Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , , , or The sType value of each struct in the pNext chain must be uniqueflags must be 0rasterizationSamples must be a valid [ valueIf  pSampleMask is not NULL,  pSampleMask must- be a valid pointer to an array of 4\lceil{\mathit{rasterizationSamples} \over 32}\rceil  : valuesSee Also, ,  , [,  :, vulkanzVkPipelineInputAssemblyStateCreateInfo - Structure specifying parameters of a newly created pipeline input assembly state Description}Restarting the assembly of primitives discards the most recent index values if those elements formed an incomplete primitive, and restarts the primitive assembly using the subsequent indices, but only assembling the immediately following element through the end of the originally specified elements. The primitive restart index value comparison is performed before adding the  vertexOffset value to the index value. Valid UsageIf topology is !, !, !, !, ! or !, primitiveRestartEnable must be  If the  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShadergeometry shaders feature is not enabled, topology must not be any of !, !, ! or ! If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShadertessellation shaders feature is not enabled, topology must not be !Valid Usage (Implicit)sType must be ,pNext must be NULLflags must be 0topology must be a valid p valueSee Also, , , p, vulkanmVkPipelineDynamicStateCreateInfo - Structure specifying parameters of a newly created pipeline dynamic state Valid UsageEach element of pDynamicStates must be uniqueValid Usage (Implicit)sType must be %pNext must be NULLflags must be 0If dynamicStateCount is not 0, pDynamicStates must( be a valid pointer to an array of dynamicStateCount valid  i valuesSee Also i, , $, vulkanxVkPipelineDepthStencilStateCreateInfo - Structure specifying parameters of a newly created pipeline depth stencil state Valid Usage If the  bhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBoundsdepth bounds testing feature is not enabled, depthBoundsTestEnable must be Valid Usage (Implicit)sType must be 'pNext must be NULLflags must be 0depthCompareOp must be a valid   valuefront must be a valid  structureback must be a valid  structureSee Also,  , , -, , vulkantVkPipelineColorBlendStateCreateInfo - Structure specifying parameters of a newly created pipeline color blend state DescriptionEach element of the  pAttachments array is a _ structure specifying per-target blending state for each individual color attachment. If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-independentBlendindependent blending- feature is not enabled on the device, all  elements in the  pAttachments array must be identical. Valid Usage If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-independentBlendindependent blending. feature is not enabled, all elements of  pAttachments must be identical If the  ^https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOplogic operations feature is not enabled,  logicOpEnable must be If  logicOpEnable is , logicOp must be a valid  valueValid Usage (Implicit)sType must be &pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueflags must be 0If attachmentCount is not 0,  pAttachments must( be a valid pointer to an array of attachmentCount valid  structuresSee Also, , , , R, vulkancVkPipelineColorBlendAttachmentState - Structure specifying a pipeline color blend attachment state Valid Usage If the  chttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dualSrcBlenddual source blending feature is not enabled, srcColorBlendFactor must not be 2, 2, 2, or 2 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 2, 2, 2, or 2 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 2, 2, 2, or 2 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 2, 2, 2, or 2 If either of  colorBlendOp or  alphaBlendOp is an  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advancedadvanced blend operation , then  colorBlendOp must equal  alphaBlendOpIf ::advancedBlendIndependentBlend is  and  colorBlendOp is an  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advancedadvanced blend operation , then  colorBlendOp must be the same for all attachmentsIf ::advancedBlendIndependentBlend is  and  alphaBlendOp is an  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advancedadvanced blend operation , then  alphaBlendOp must be the same for all attachmentsIf ::advancedBlendAllOperations is , then  colorBlendOp must not be 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< , or 1=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 0k::colorAttachmentCount7 of the subpass this pipeline is compiled against must$ be less than or equal to "::advancedBlendMaxColorAttachmentsValid Usage (Implicit)srcColorBlendFactor must be a valid   valuedstColorBlendFactor must be a valid   value colorBlendOp must be a valid   valuesrcAlphaBlendFactor must be a valid   valuedstAlphaBlendFactor must be a valid   value alphaBlendOp must be a valid   valuecolorWriteMask must be a valid combination of { valuesSee Also ,  , , , 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 5 will be generated. Valid UsageIf flags contains the c> flag, and basePipelineIndex is -1, basePipelineHandle must+ be a valid handle to a graphics oJIf flags contains the c> flag, and basePipelineHandle is ., basePipelineIndex must2 be a valid index into the calling command s  pCreateInfos parameterIf flags contains the c> flag, and basePipelineIndex is not -1, basePipelineHandle must be .If flags contains the c> flag, and basePipelineHandle is not ., basePipelineIndex must be -1The stage member of each element of pStages must be unique(The geometric shader stages provided in pStages must0 be either from the mesh shading pipeline (stage is " or "/) or from the primitive shading pipeline (stage is ", ", ", or ")The stage member of one element of pStages must be either " or "The stage member of each element of pStages must not be "tIf pStages2 includes a tessellation control shader stage, it must4 include a tessellation evaluation shader stageIf pStages: includes a tessellation evaluation shader stage, it must, include a tessellation control shader stageIf pStages_ includes a tessellation control shader stage and a tessellation evaluation shader stage, pTessellationState must$ be a valid pointer to a valid  structureIf pStagesQ includes tessellation shader stages, the shader code of at least one stage must contain an OpExecutionModeH instruction that specifies the type of subdivision in the pipelineIf pStagesY includes tessellation shader stages, and the shader code of both stages contain an OpExecutionModeO instruction that specifies the type of subdivision in the pipeline, they must, both specify the same subdivision modeIf pStagesQ includes tessellation shader stages, the shader code of at least one stage must contain an OpExecutionModeF instruction that specifies the output patch size in the pipelineIf pStagesR includes tessellation shader stages, and the shader code of both contain an OpExecutionModeJ instruction that specifies the out patch size in the pipeline, they must& both specify the same patch sizeIf pStages* includes tessellation shader stages, the topology member of pInputAssembly must be !If the topology member of pInputAssembly is !, pStages must# include tessellation shader stagesIf pStagesm includes a geometry shader stage, and does not include any tessellation shader stages, its shader code must contain an OpExecutionModeF instruction that specifies an input primitive type that is  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-geometry-execution compatible/ with the primitive topology specified in pInputAssemblyIf pStagesf includes a geometry shader stage, and also includes tessellation shader stages, its shader code must contain an OpExecutionModeF instruction that specifies an input primitive type that is  hhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-geometry-execution compatibleP with the primitive topology that is output by the tessellation stagesIf pStages includes a fragment shader stage and a geometry shader stage, and the fragment shader code reads from an input variable that is decorated with  PrimitiveID%, then the geometry shader code must: write to a matching output variable, decorated with  PrimitiveID, in all execution pathsIf pStages8 includes a fragment shader stage, its shader code must< not read from any input attachment that is defined as k in subpass3The shader code for the entry points identified by pStages>, and the rest of the state identified by this structure mustA adhere to the pipeline linking rules described in the  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfacesShader Interfaces chapter%If rasterization is not disabled and subpass) uses a depth/stencil attachment in  renderPass that has a layout of | or } in the 0 defined by subpass, the depthWriteEnable member of pDepthStencilState must be %If rasterization is not disabled and subpass) uses a depth/stencil attachment in  renderPass that has a layout of | or ~ in the 0 defined by subpass, the failOp, passOp and  depthFailOp members of each of the front and back members of pDepthStencilState must be ?If rasterization is not disabled and the subpass uses color attachments, then for each color attachment in the subpass the  blendEnable1 member of the corresponding element of the  pAttachment member of pColorBlendState must be  if the attached image s  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-featuresformat features does not contain n@RIf rasterization is not disabled and the subpass uses color attachments, the attachmentCount member of pColorBlendState must be equal to the colorAttachmentCount used to create subpassIf no element of the pDynamicStates member of  pDynamicState is +A , the  pViewports member of pViewportState must( be a valid pointer to an array of pViewportState->viewportCount valid  structuresIf no element of the pDynamicStates member of  pDynamicState is +B , the  pScissors member of pViewportState must( be a valid pointer to an array of pViewportState->scissorCount  structuresEIf the wide lines feature is not enabled, and no element of the pDynamicStates member of  pDynamicState is + , the  lineWidth member of pRasterizationState must be 1.0If the rasterizerDiscardEnable member of pRasterizationState is , pViewportState must$ be a valid pointer to a valid  structureIf the rasterizerDiscardEnable member of pRasterizationState is , pMultisampleState must$ be a valid pointer to a valid  structureIf the rasterizerDiscardEnable member of pRasterizationState is , and subpass' uses a depth/stencil attachment, pDepthStencilState must$ be a valid pointer to a valid  structureIf the rasterizerDiscardEnable member of pRasterizationState is , and subpass uses color attachments, pColorBlendState must$ be a valid pointer to a valid  structureJIf the depth bias clamping feature is not enabled, no element of the pDynamicStates member of  pDynamicState is +, and the depthBiasEnable member of pRasterizationState is , the depthBiasClamp member of pRasterizationState must be 0.0If the VK_EXT_depth_range_unrestricted5 extension is not enabled and no element of the pDynamicStates member of  pDynamicState is +C, and the depthBoundsTestEnable member of pDepthStencilState is , the minDepthBounds and maxDepthBounds members of pDepthStencilState must be between 0.0 and 1.0 , inclusiveIf no element of the pDynamicStates member of  pDynamicState is +, 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 v with a samples parameter equaling rasterizationSamplesIf 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 v with a samples parameter equaling rasterizationSamplesIf 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 rasterizationSamplesIf the sampleLocationsEnable member of a  structure included in the pNext chain of pMultisampleState is  , the fragment shader code must2 not statically use the extended instruction InterpolateAtSamplelayout must be  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent$ with all shaders specified in pStagesIf neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples% extensions are enabled, and if subpass< uses color and/or depth/stencil attachments, then the rasterizationSamples member of pMultisampleState mustC be the same as the sample count for those subpass attachmentsIf the VK_AMD_mixed_attachment_samples# extension is enabled, and if subpass< uses color and/or depth/stencil attachments, then the rasterizationSamples member of pMultisampleState mustI equal the maximum of the sample counts of those subpass attachmentsIf the VK_NV_framebuffer_mixed_samples# extension is enabled, and if subpasss has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled, then the rasterizationSamples member of pMultisampleState mustE be the same as the sample count of the depth/stencil attachmentIf the VK_NV_framebuffer_mixed_samples# extension is enabled, and if subpass* has any color attachments, then the rasterizationSamples member of pMultisampleState mustU be greater than or equal to the sample count for those subpass attachmentsIf the VK_NV_coverage_reduction_modeJ extension is enabled, the coverage reduction mode specified by ::coverageReductionMode , the rasterizationSamples member of pMultisampleStateg and the sample counts for the color and depth/stencil attachments (if the subpass has them) must) be a valid combination returned by jIf subpassH does not use any color and/or depth/stencil attachments, then the rasterizationSamples member of pMultisampleState must follow the rules for a fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachmentszero-attachment subpasssubpass must be a valid subpass within  renderPassIf the  renderPass has multiview enabled and subpass5 has more than one bit set in the view mask and multiviewTessellationShader is not enabled, then pStages must& not include tessellation shadersIf the  renderPass has multiview enabled and subpass5 has more than one bit set in the view mask and multiviewGeometryShader is not enabled, then pStages must not include a geometry shaderIf the  renderPass has multiview enabled and subpassJ has more than one bit set in the view mask, shaders in the pipeline must not write to the Layer built-in outputIf the  renderPass) has multiview enabled, then all shaders must/ not include variables decorated with the Layer- built-in decoration in their interfacesflags must not contain the E} flagIf pStagesT includes a fragment shader stage and an input attachment was referenced by an  aspectMask at  renderPass% creation time, its shader code mustN only read from the aspects that were specified for that input attachmentThe number of resources in layoutC accessible to each shader stage that is used by the pipeline must be less than or equal to  _::maxPerStageResourcesIf no element of the pDynamicStates member of  pDynamicState is +D, 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 E structuresIf pStages! includes a vertex shader stage, pVertexInputState must$ be a valid pointer to a valid  structureIf pStages! includes a vertex shader stage, pInputAssemblyState must$ be a valid pointer to a valid  structureThe Xfb execution mode can/ be specified by only one shader stage in pStagesIf any shader stage in pStages specifies Xfb execution mode it must$ be the last vertex processing stage If a ::rasterizationStream value other than zero is specified, all variables in the output interface of the entry point being compiled decorated with Position,  PointSize,  ClipDistance, or  CullDistance must& all be decorated with identical Stream values that match the rasterizationStreamIf ::rasterizationStream} is zero, or not specified, all variables in the output interface of the entry point being compiled decorated with Position,  PointSize,  ClipDistance, or  CullDistance must all be decorated with a Stream value of zero, or must not specify the Stream decorationaIf the last vertex processing stage is a geometry shader, and that geometry shader uses the GeometryStreams capability, then ::geometryStreams feature must be enabled:If there are any mesh shader stages in the pipeline there must5 not be any shader stage in the pipeline with a Xfb execution modeIf the lineRasterizationMode member of a  structure included in the pNext chain of pRasterizationState is F or G0 and if rasterization is enabled, then the alphaToCoverageEnable, alphaToOneEnable, and sampleShadingEnable members of pMultisampleState must all be If the stippledLineEnable member of  is  and no element of the pDynamicStates member of  pDynamicState is +H, then the lineStippleFactor member of  must be in the range [1,256]flags must not include cflags must not include cIflags must not include cJflags must not include cKflags must not include cLflags must not include cMflags must not include cNIf flags includes cO, then the  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-device-generated-commands::deviceGeneratedCommands feature must be enabledIf flags includes cO, then all stages must not specify Xfb execution mode If the  shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControlpipelineCreationCacheControl feature is not enabled, flags must not include c3 or c4Valid Usage (Implicit)sType must be $ Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , e, , , or The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of cP valuespStages must# be a valid pointer to an array of  stageCount valid  structurespRasterizationState must$ be a valid pointer to a valid  structureIf  pDynamicState is not NULL,  pDynamicState must$ be a valid pointer to a valid  structurelayout must be a valid m handle renderPass must be a valid i handle stageCount must be greater than 0Each of basePipelineHandle, layout, and  renderPass7 that are valid handles of non-ignored parameters mustD have been created, allocated, or retrieved from the same zSee Alsoo, , 6, , , , m, , , , , , , i, , *xvulkanbVkComputePipelineCreateInfo - Structure specifying parameters of a newly created compute pipeline DescriptionThe parameters basePipelineHandle and basePipelineIndex# are described in more detail in  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivativesPipeline Derivatives. Valid UsageIf flags contains the c> flag, and basePipelineIndex is -1, basePipelineHandle must* be a valid handle to a compute oIf flags contains the c> flag, and basePipelineHandle is ., basePipelineIndex must2 be a valid index into the calling command s  pCreateInfos parameterIf flags contains the c> flag, and basePipelineIndex is not -1, basePipelineHandle must be .If flags contains the c> flag, and basePipelineHandle is not ., basePipelineIndex must be -1The stage member of stage must be "t2The shader code for the entry point identified by stage= and the rest of the state identified by this structure mustA adhere to the pipeline linking rules described in the  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfacesShader Interfaces chapterlayout must be  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent9 with the layout of the compute shader specified in stageThe number of resources in layout- accessible to the compute shader stage must be less than or equal to  _::maxPerStageResourcesflags must not include cflags must not include cIflags must not include cJflags must not include cKflags must not include cLflags must not include cMflags must not include cNflags must not include cO 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 c3 or c4Valid Usage (Implicit)sType must be #Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of e or The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of cP valuesstage must be a valid  structurelayout must be a valid m handleBoth of basePipelineHandle, and layout7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same zSee Alsoo, 6, m, , , *z)vulkanpNext is NULL1 or a pointer to an extension-specific structure.)vulkanflags is a bitmask of cP0 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 and maxDepthBounds* define the range of values used in the  Yhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-dbtdepth bounds test.*vulkanfailOp must be a valid  value*vulkanpassOp must be a valid  value*vulkan depthFailOp must be a valid  value*vulkan compareOp must be a valid   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  i values specifying which pieces of pipeline state will use the values from dynamic state commands rather than from pipeline state creation info.*"vulkanpNext is NULL1 or a pointer to an extension-specific 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.*0vulkancolorWriteMask 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.*2vulkanpNext is NULL1 or a pointer to an extension-specific structure.*3vulkanflags is reserved for future use.*4vulkanrasterizationSamples is a [9 specifying the number of samples used in rasterization.*5vulkansampleShadingEnable can be used to enable  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshadingSample Shading.*6vulkanminSampleShading4 specifies a minimum fraction of sample shading if sampleShadingEnable is set to .*7vulkan pSampleMask is a bitmask of static coverage information that is ANDed with the coverage information generated during rasterization, as described in  `https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-samplemask Sample Mask.*8vulkanalphaToCoverageEnable 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.*9vulkanalphaToOneEnabler 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 NULL1 or a pointer to an extension-specific 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 x.*Avulkan frontFace is a  QQ value specifying the front-facing triangle orientation to be used for culling.*BvulkandepthBiasEnable0 controls whether to bias fragment depth values.*CvulkandepthBiasConstantFactorQ is a scalar factor controlling the constant depth value added to each fragment.*DvulkandepthBiasClamp6 is the maximum (or minimum) depth bias of a fragment.*EvulkandepthBiasSlopeFactorN is a scalar factor applied to a fragment s slope in depth bias calculations.*Fvulkan lineWidth* is the width of rasterized line segments.*HvulkanpNext is NULL1 or a pointer to an extension-specific structure.*Ivulkanflags is reserved for future use.*Jvulkan pViewports is a pointer to an array of j structures, defining the viewport transforms. If the viewport state is dynamic, this member is ignored.*Kvulkan pScissors is a pointer to an array of  structures defining the rectangular bounds of the scissor for the corresponding viewport. If the scissor state is dynamic, this member is ignored.*MvulkanpNext is NULL1 or a pointer to an extension-specific structure.*Nvulkanflags is reserved for future use.*OvulkanpatchControlPoints$ number of control points per patch.*Qvulkanflags is reserved for future use.*Rvulkantopology is a p6 defining the primitive topology, as described below.*SvulkanprimitiveRestartEnable controls whether a special vertex index value is treated as restarting the assembly of primitives. This enable only applies to indexed draws (  and  >), and the special index value is either 0xFFFFFFFF when the  indexType parameter of   is equal to  , 0xFF when  indexType is equal to 9, or 0xFFFF when  indexType is equal to Q:. Primitive restart is not allowed for list  topologies.*UvulkanpNext is NULL1 or a pointer to an extension-specific structure.*Vvulkanflags is reserved for future use.*WvulkanpVertexBindingDescriptions is a pointer to an array of  structures.*XvulkanpVertexAttributeDescriptions is a pointer to an array of  structures.*Zvulkanlocation must be less than  _::maxVertexInputAttributes*[vulkanbinding must be less than  _::maxVertexInputBindings*\vulkanformat must be a valid G value*]vulkanoffset must be less than or equal to  _::maxVertexInputAttributeOffset*_vulkanbinding must be less than  _::maxVertexInputBindings*`vulkanstride must be less than or equal to  _::maxVertexInputBindingStride*avulkan inputRate must be a valid e value*cvulkanpNext is NULL1 or a pointer to an extension-specific structure.*dvulkanflags is a bitmask of cP0 specifying how the pipeline will be generated.*evulkanstage is a * structure describing the compute shader.*fvulkanlayouto is the description of binding locations used by both the pipeline and descriptor sets used with the pipeline.*gvulkanbasePipelineHandle is a pipeline to derive from*hvulkanbasePipelineIndex is an index into the  pCreateInfos/ parameter to use as a pipeline to derive from*jvulkanpNext is NULL1 or a pointer to an extension-specific structure.*kvulkanflags is a bitmask of \= specifying how the pipeline shader stage will be generated.*lvulkanstage is a ]+ value specifying a single pipeline stage.*mvulkanmodule is a f. object containing the shader for this stage.*nvulkanpNamen is a pointer to a null-terminated UTF-8 string specifying the entry point name of the shader for this stage.*ovulkanpSpecializationInfo 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.*qvulkan pMapEntries is a pointer to an array of 2 structures which map constant IDs to offsets in pData.*rvulkandataSize is the byte size of the pData buffer.*svulkanpData8 contains the actual constant values to specialize with.*uvulkan constantID4 is the ID of the specialization constant in SPIR-V.*vvulkanoffsetZ is the byte offset of the specialization constant value within the supplied data buffer.*wvulkansizeX is the byte size of the specialization constant value within the supplied data buffer.*xvulkan5vkCreateGraphicsPipelines - Create graphics pipelines Parametersdevice; is the logical device that creates the graphics pipelines. pipelineCache is either .S, 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 cache^ object, in which case use of that cache is enabled for the duration of the command.createInfoCount is the length of the  pCreateInfos and  pPipelines arrays. pCreateInfos" is a pointer to an array of  structures. pAllocator: 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. pPipelines" is a pointer to an array of oL handles in which the resulting graphics pipeline objects are returned. DescriptionThe  structure includes an array of shader create info structures containing all the desired active shader stages, as well as creation info to define all relevant fixed-function stages, and a pipeline layout. Valid UsageIf the flags member of any element of  pCreateInfos contains the c> flag, and the basePipelineIndex) member of that same element is not -1, basePipelineIndex must" be less than the index into  pCreateInfos! that corresponds to that elementIf the flags member of any element of  pCreateInfos contains the c> flag, the base pipeline must! have been created with the cR flag setIf  pipelineCache was created with e5, 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 c3 on flags for any element of  pCreateInfos while passing . for  pipelineCache.Valid Usage (Implicit)device must be a valid z handleIf  pipelineCache is not .,  pipelineCache must be a valid n handle pCreateInfos must( be a valid pointer to an array of createInfoCount valid  structuresIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pPipelines must( be a valid pointer to an array of createInfoCount o handlescreateInfoCount must be greater than 0If  pipelineCache is a valid handle, it must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ>  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJ5See Also, z, , o, n*yvulkan=A convenience wrapper to make a compatible pair of calls to *x and *|To ensure that *| is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument.*zvulkan@vkCreateComputePipelines - Creates a new compute pipeline object Parametersdevice: is the logical device that creates the compute pipelines. pipelineCache is either .S, 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 cache^ object, in which case use of that cache is enabled for the duration of the command.createInfoCount is the length of the  pCreateInfos and  pPipelines arrays. pCreateInfos" is a pointer to an array of  structures. pAllocator: 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. pPipelines" is a pointer to an array of oK handles in which the resulting compute pipeline objects are returned. Valid UsageIf the flags member of any element of  pCreateInfos contains the c> flag, and the basePipelineIndex) member of that same element is not -1, basePipelineIndex must" be less than the index into  pCreateInfos! that corresponds to that elementIf the flags member of any element of  pCreateInfos contains the c> flag, the base pipeline must! have been created with the cR flag setIf  pipelineCache was created with e5, host access to  pipelineCache must be lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehaviorexternally synchronizedValid Usage (Implicit)device must be a valid z handleIf  pipelineCache is not .,  pipelineCache must be a valid n handle pCreateInfos must( be a valid pointer to an array of createInfoCount valid  structuresIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pPipelines must( be a valid pointer to an array of createInfoCount o handlescreateInfoCount must be greater than 0If  pipelineCache is a valid handle, it must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ>  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJ5See Also, , z, o, n*{vulkan=A convenience wrapper to make a compatible pair of calls to *z and *|To ensure that *| is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument.*|vulkan-vkDestroyPipeline - Destroy a pipeline object Parametersdevice2 is the logical device that destroys the pipeline.pipeline* is the handle of the pipeline to destroy. pAllocator: 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. Valid Usage%All submitted commands that refer to pipeline must have completed executionIf  were provided when pipeline1 was created, a compatible set of callbacks must be provided here If no  were provided when pipeline was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid z handleIf pipeline is not ., pipeline must be a valid o handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf pipeline is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to pipeline must be externally synchronizedSee Also, z, o*^*`*_*a*Y*Z*]*[*\*********t*w*v*u*p*r*s*q*G*I*H*J*K*T*V*U*W*X*L*N*M*O*i*n*k*j*l*m*o*:*C*D*E*F*<*;*=*>*?*@*A*B*1*3*2*4*5*6*7*8*9*P*Q*R*S*** * *** * *******!*'*#*"*&*%*$*(*)***+*,*-*.*/*0)))*)*** * )))*******b*d*c*e*f*g*h*x*y*z*{*|*x*y*z*{*|*t*w*v*u*p*r*s*q*i*n*k*j*l*m*o*b*d*c*e*f*g*h*^*`*_*a*Y*Z*]*[*\*T*V*U*W*X*P*Q*R*S*L*N*M*O*G*I*H*J*K*:*C*D*E*F*<*;*=*>*?*@*A*B*1*3*2*4*5*6*7*8*9*(*)***+*,*-*.*/*0*!*'*#*"*&*%*$*** ********* *** * ******)))*)*** * )))******None'"#%&'-./189;=>?FHIMSUVX_dghklmqTOvulkaniVkSetStateFlagsIndirectCommandNV - Structure specifying input data for a single state flag command tokenSee Also!No cross-references are availablevulkanVkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV - Structure describing push descriptor limits that can be supported by an implementationValid Usage (Implicit)See AlsovulkanVkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV - Structure describing the device-generated commands features that can be supported by an implementationMembersThe members of the , structure describe the following features: DescriptionIf the  structure is included in the pNext chain of OJ, it is filled with values indicating whether the feature is supported.  can also be used in the pNext chain of    to enable the features.Valid Usage (Implicit)See Also, vulkan]VkIndirectCommandsStreamNV - Structure specifying input streams for generated command tokens Valid UsageThe buffer s usage flag must have the }  bit setThe offset must be aligned to ::(minIndirectCommandsBufferOffsetAlignmentIf buffer is non-sparse then it must< be bound completely and contiguously to a single )v objectValid Usage (Implicit)buffer must be a valid  handleSee Also, , vulkandVkIndirectCommandsLayoutTokenNV - Struct specifying the details of an indirect command layout token Valid Usagestream must be smaller than :: streamCount offset must be less than or equal to ::maxIndirectCommandsTokenOffsetIf  tokenType is +*, vertexBindingUnit mustF stay within device supported limits for the appropriate commandsIf  tokenType is +), pushconstantPipelineLayout must be validIf  tokenType is +), pushconstantOffset must be a multiple of 4If  tokenType is +), pushconstantSize must be a multiple of 4If  tokenType is +), pushconstantOffset must be less than  _::maxPushConstantsSizeIf  tokenType is +), pushconstantSize must be less than or equal to  _::maxPushConstantsSize minus pushconstantOffsetIf  tokenType is +)/, for each byte in the range specified by pushconstantOffset and pushconstantSize# and for each shader stage in pushconstantShaderStageFlags, there must" be a push constant range in pushconstantPipelineLayout, that includes that byte and that stageIf  tokenType is +)/, for each byte in the range specified by pushconstantOffset and pushconstantSize@ and for each push constant range that overlaps that byte, pushconstantShaderStageFlags must< include all stages in that push constant range s 3::pushconstantShaderStageFlagsIf  tokenType is +,, indirectStateFlags must not be 0Valid Usage (Implicit)sType must be pNext must be NULL tokenType must be a valid * valueIf pushconstantPipelineLayout is not ., pushconstantPipelineLayout must be a valid m handlepushconstantShaderStageFlags must be a valid combination of "s valuesindirectStateFlags must be a valid combination of * valuesIf indexTypeCount is not 0,  pIndexTypes must( be a valid pointer to an array of indexTypeCount valid O valuesIf indexTypeCount is not 0, pIndexTypeValues must( be a valid pointer to an array of indexTypeCount uint32_t valuesSee Also, O, , *, *, m, \, vulkan~VkIndirectCommandsLayoutCreateInfoNV - Structure specifying the parameters of a newly created indirect commands layout object Description1The following code illustrates some of the flags: void cmdProcessAllSequences(cmd, pipeline, indirectCommandsLayout, pIndirectCommandsTokens, sequencesCount, indexbuffer, indexbufferOffset) { for (s = 0; s < sequencesCount; s++) { sUsed = s; if (indirectCommandsLayout.flags & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV) { sUsed = indexbuffer.load_uint32( sUsed * sizeof(uint32_t) + indexbufferOffset); } if (indirectCommandsLayout.flags & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV) { sUsed = incoherent_implementation_dependent_permutation[ sUsed ]; } cmdProcessSequence( cmd, pipeline, indirectCommandsLayout, pIndirectCommandsTokens, sUsed ); } } Valid UsageThe pipelineBindPoint must be  tokenCount must be greater than 0 and less than or equal to ::maxIndirectCommandsTokenCountIf pTokens contains an entry of +- it must2 be the first element of the array and there must1 be only a single element of such token typeIf pTokens contains an entry of +, there must1 be only a single element of such token typeAll state tokens in pTokens must) occur prior work provoking tokens (+', +(, +&)The content of pTokens mustJ include one single work provoking token that is compatible with the pipelineBindPoint streamCount must be greater than 0 and less or equal to ::maxIndirectCommandsStreamCounteach element of pStreamStrides must8 be greater than `0`and less than or equal to ::maxIndirectCommandsStreamStride5. Furthermore the alignment of each token input must be ensuredValid Usage (Implicit)sType must be pNext must be NULLflags must be a valid combination of * valuesflags must not be 0pipelineBindPoint must be a valid Q valuepTokens must# be a valid pointer to an array of  tokenCount valid  structurespStreamStrides must( be a valid pointer to an array of  streamCount uint32_t values tokenCount must be greater than 0 streamCount must be greater than 0See Also, *, Q, , +6vulkancVkGraphicsShaderGroupCreateInfoNV - Structure specifying override parameters for each shader group Valid UsageFor  stageCount#, the same restrictions as in 1G:: stageCount applyFor pStages#, the same restrictions as in 1G::pStages applyFor pVertexInputState#, the same restrictions as in 1G::pVertexInputState applyFor pTessellationState#, the same restrictions as in 1G::pTessellationState applyValid Usage (Implicit)sType must be pNext must be NULLpStages must# be a valid pointer to an array of  stageCount valid  structures stageCount must be greater than 0See Also, , , , vulkan|VkGraphicsPipelineShaderGroupsCreateInfoNV - Structure specifying parameters of a newly created multi shader group pipeline DescriptionWhen referencing shader groups by index, groups defined in the referenced pipelines are treated as if they were defined as additional entries in pGroups5. They are appended in the order they appear in the  pPipelines array and in the pGroups* array when those pipelines were defined.The application mustf maintain the lifetime of all such referenced pipelines based on the pipelines that make use of them. Valid Usage groupCount must be at least 1 and as maximum ::maxGraphicsShaderGroupCount The sum of  groupCount3 including those groups added from referenced  pPipelines must also be as maximum ::maxGraphicsShaderGroupCount"The state of the first element of pGroups must4 match its equivalent within the parent s 1GEach element of pGroups mustZ in combination with the rest of the pipeline state yield a valid state configurationAll elements of pGroups must use the same shader stage combinations unless any mesh shader stage is used, then either combination of task and mesh or just mesh shader is validFMesh and regular primitive shading stages cannot be mixed across pGroupsEach element of the  pPipelines member of  libraries must have been created with identical state to the pipeline currently created except the state that can be overriden by  The  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-device-generated-commands::deviceGeneratedCommands feature must be enabledValid Usage (Implicit)sType must be pGroups must# be a valid pointer to an array of  groupCount valid  structuresIf  pipelineCount is not 0,  pPipelines must( be a valid pointer to an array of  pipelineCount valid o handles groupCount must be greater than 0See Also, o, vulkan}VkGeneratedCommandsMemoryRequirementsInfoNV - Structure specifying parameters for the reservation of preprocess buffer space Valid UsagemaxSequencesCount must be less or equal to ::maxIndirectSequenceCountValid Usage (Implicit)sType must be pNext must be NULLpipelineBindPoint must be a valid Q valuepipeline must be a valid o handleindirectCommandsLayout must be a valid F handleBoth of indirectCommandsLayout, and pipeline mustD have been created, allocated, or retrieved from the same zSee AlsoF, o, Q, , +5vulkan[VkGeneratedCommandsInfoNV - Structure specifying parameters for the generation of commands Valid Usage The provided pipeline must0 match the pipeline bound at execution timeIf the indirectCommandsLayout uses a token of +- , then the pipeline must. have been created with multiple shader groupsIf the indirectCommandsLayout uses a token of +- , then the pipeline must have been created with cO set in 1G::flagsIf the indirectCommandsLayout uses a token of +), then the pipeline`s m must match the ::pushconstantPipelineLayout streamCount must match the indirectCommandsLayout s  streamCountsequencesCount must be less or equal to ::maxIndirectSequenceCount and ::maxSequencesCount% that was used to determine the preprocessSizepreprocessBuffer must have the }  bit set in its usage flagpreprocessOffset must be aligned to ::(minIndirectCommandsBufferOffsetAlignmentIf preprocessBuffer is non-sparse then it must< be bound completely and contiguously to a single )v objectpreprocessSize mustJ be at least equal to the memory requirement`s size returned by +5! using the matching inputs (indirectCommandsLayout, & ) as within this structuresequencesCountBuffer cann be set if the actual used count of sequences is sourced from the provided buffer. In that case the sequencesCount serves as upper boundIf sequencesCountBuffer is not ., its usage flag must have the }  bit setIf sequencesCountBuffer is not ., sequencesCountOffset must be aligned to ::&minSequencesCountBufferOffsetAlignmentIf sequencesCountBuffer is not . and is non-sparse then it must7 be bound completely and contiguously to a single )v objectIf indirectCommandsLayout s +0 is set, sequencesIndexBuffer must be set otherwise it must be .If sequencesIndexBuffer is not ., its usage flag must have the }  bit setIf sequencesIndexBuffer is not ., sequencesIndexOffset must be aligned to ::&minSequencesIndexBufferOffsetAlignmentIf sequencesIndexBuffer is not . and is non-sparse then it must7 be bound completely and contiguously to a single )v objectValid Usage (Implicit)sType must be  pNext must be NULLpipelineBindPoint must be a valid Q valuepipeline must be a valid o handleindirectCommandsLayout must be a valid F handlepStreams must# be a valid pointer to an array of  streamCount valid  structurespreprocessBuffer must be a valid  handleIf sequencesCountBuffer is not ., sequencesCountBuffer must be a valid  handleIf sequencesIndexBuffer is not ., sequencesIndexBuffer must be a valid  handle streamCount must be greater than 0Each of indirectCommandsLayout, pipeline, preprocessBuffer, sequencesCountBuffer, and sequencesIndexBuffer7 that are valid handles of non-ignored parameters mustD have been created, allocated, or retrieved from the same zSee Also, , F, , o, Q, , +2, +3vulkanoVkBindVertexBufferIndirectCommandNV - Structure specifying input data for a single vertex buffer command token Valid Usage<The buffer s usage flag from which the address was acquired must have the } bit set[Each element of the buffer from which the address was acquired and that is non-sparse must7 be bound completely and contiguously to a single )v objectSee AlsovulkanmVkBindShaderGroupIndirectCommandNV - Structure specifying input data for a single shader group command token Valid UsageUThe current bound graphics pipeline, as well as the pipelines it may reference, must have been created with cOThe index mustg be within range of the accessible shader groups of the current bound graphics pipeline. See +4 for further detailsSee Also!No cross-references are availablevulkanmVkBindIndexBufferIndirectCommandNV - Structure specifying input data for a single index buffer command token Valid Usage<The buffer s usage flag from which the address was acquired must have the } bit setThe  bufferAddress must be aligned to the  indexType used[Each element of the buffer from which the address was acquired and that is non-sparse must7 be bound completely and contiguously to a single )v objectValid Usage (Implicit) indexType must be a valid O valueSee Also, O*vulkan>VkIndirectCommandsTokenTypeNV - Enum specifying token commands Description'1 Token type K Equivalent command  +-  +4,  +, K -  ++     +*     +)   >  +(     +'     +&   !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 Q of the pipelineK that this buffer memory is intended to be used with during the execution.*vulkanpipeline is the oK that this buffer memory is intended to be used with during the execution.*vulkanindirectCommandsLayout is the F6 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 Q used for the pipeline.*vulkanpipeline is the o/ used in the generation and execution process.*vulkanindirectCommandsLayout is the F1 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 .9, 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 +2 with its isPreprocessed set to  <Q, 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 Q 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 m% 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 O 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 )S, otherwise )T+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 1::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 OY value specifying how indices are treated. Instead of the Vulkan enum values, a custom uint32_t value can be mapped to an O by specifying the :: pIndexTypes and ::pIndexTypeValues arrays.+vulkanpGroups is an array of 1 values specifying which state of the original 1G each shader group overrides.+vulkan pPipelines is an array of graphics oW, which are referenced within the created pipeline, including all their shader groups.+vulkanpStages is an array of size  stageCount structures of type O describing the set of the shader stages to be included in this shader group.+vulkanpVertexInputState% is a pointer to an instance of the  structure.+vulkanpTessellationState% is a pointer to an instance of the  structure, and is ignored if the shader group does not include a tessellation control shader stage and tessellation evaluation shader stage.+vulkanmaxGraphicsShaderGroupCount, is the maximum number of shader groups in .+vulkanmaxIndirectSequenceCount( is the maximum number of sequences in  and in .+vulkanmaxIndirectCommandsStreamCount& is the maximum number of streams in .+vulkanmaxIndirectCommandsTokenOffset is the maximum offset in .+vulkanmaxIndirectCommandsStreamStride" is the maximum stream stride in .+!vulkan(minIndirectCommandsBufferOffsetAlignment8 is the minimum alignment for memory addresses used in  and as preprocess buffer in .+#vulkandeviceGeneratedCommandsg indicates whether the implementation supports functionality to generate commands on the device. See  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#device-generated-commandsDevice-Generated Commands.+.vulkan+. allows to toggle the )U5 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.+0vulkan+0x specifies that the input data for the sequences is not implicitly indexed from 0..sequencesUsed but a user provided  encoding the index is provided.+1vulkan+1_ specifies that the layout is always used with the manual preprocessing step through calling +3 and executed by +2 with isPreprocessed set to  <.+2vulkanbvkCmdExecuteGeneratedCommandsNV - Performs the generation and execution of commands on the device Parameters commandBuffer? is the command buffer into which the command is recorded.isPreprocessedc represents whether the input data has already been preprocessed on the device. If it is  =Q this command will implicitly trigger the preprocessing step, otherwise not.pGeneratedCommandsInfo) is a pointer to an instance of the K structure containing parameters affecting the generation of commands. Valid Usage([[VUID-{refpage}-None-02690]] 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 n([[VUID-{refpage}-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 n([[VUID-{refpage}-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-{refpage}-filterCubic-02694]] Any )| being sampled with " as a result of this command must have a (E and format that supports cubic filtering, as specified by <:: filterCubic returned by O4[[VUID-{refpage}-filterCubicMinmax-02695]] Any )| being sampled with + with a reduction mode of either  or " as a result of this command must have a (i and format that supports cubic filtering together with minmax filtering, as specified by <::filterCubicMinmax returned by O([[VUID-{refpage}-flags-02696]] Any )x created with a *::flags containing * sampled as a result of this command must only be sampled using a  of +[[VUID-{refpage}-None-02697]] For each set n% that is statically used by the oN 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 m! that is compatible for set n, with the m! used to create the current o, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???Y[[VUID-{refpage}-None-02698]] For each push constant that is statically used by the oX 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 m; that is compatible for push constants, with the m! used to create the current o, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???`[[VUID-{refpage}-None-02699]] Descriptors in each bound descriptor set, specified via  l, must2 be valid if they are statically used by the o; bound to the pipeline bind point used by this command/[[VUID-{refpage}-None-02700]] A valid pipeline must> be bound to the pipeline bind point used by this command3[[VUID-{refpage}-commandBuffer-02701]] If the oo 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-{refpage}-None-02859]] There musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the of object bound to the pipeline bind point used by this command, since that pipeline was bound*[[VUID-{refpage}-None-02702]] If the oS 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 )x with a )| of the type (, (, (, ( or (, in any shader stage*[[VUID-{refpage}-None-02703]] If the oS 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-{refpage}-None-02704]] If the oS 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 stage*[[VUID-{refpage}-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 of 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-{refpage}-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 of 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-{refpage}-commandBuffer-02707]] If  commandBufferJ is an unprotected command buffer, any resource accessed by the oC object bound to the pipeline bind point used by this command must! not be a protected resource<[[VUID-{refpage}-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 1G1 structure specified when creating the o bound to S[[VUID-{refpage}-subpass-02685]] The subpass index of the current render pass must be equal to the subpass member of the 1G1 structure specified when creating the o bound to V[[VUID-{refpage}-None-02686]] Every input attachment used by the current subpass must. be bound to the pipeline via a descriptor sete[[VUID-{refpage}-None-02687]] Image subresources used as attachments in the current render pass mustL not be accessed in any way other than as an attachment by this command[[VUID-{refpage}-maxMultiviewInstanceIndex-02688]] If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to R::maxMultiviewInstanceIndexi[[VUID-{refpage}-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-{refpage}-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 . buffers bound*[[VUID-{refpage}-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 .a[[VUID-{refpage}-None-02721]] 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??? commandBuffer must" not be a protected command bufferIf isPreprocessed is  < then +3 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 +1 bit set::pipeline must* match the current bound pipeline at ::pipelineBindPointTransform feedback must not be active The  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-device-generated-commands::deviceGeneratedCommands feature must be enabledValid Usage (Implicit) commandBuffer must be a valid  handlepGeneratedCommandsInfo must$ be a valid pointer to a valid  structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must- support graphics, or compute operations This command must0 only be called inside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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 Also, , +3vulkanSvkCmdPreprocessGeneratedCommandsNV - Performs preprocessing for generated commands Parameters commandBuffer4 is the command buffer which does the preprocessing.pGeneratedCommandsInfo) is a pointer to an instance of the G structure containing parameters affecting the preprocessing step. Valid Usage commandBuffer must" not be a protected command bufferpGeneratedCommandsInfo`s indirectCommandsLayout must& have been created with the +1 bit set The  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-device-generated-commands::deviceGeneratedCommands feature must be enabledValid Usage (Implicit) commandBuffer must be a valid  handlepGeneratedCommandsInfo must$ be a valid pointer to a valid  structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must- support graphics, or compute operations This command must1 only be called outside of a render pass instanceHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the ) 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, +4vulkan7vkCmdBindPipelineShaderGroupNV - Bind a pipeline object Parameters commandBuffer? is the command buffer that the pipeline will be bound to.pipelineBindPoint is a QA value specifying to which bind point the pipeline is bound.pipeline is the pipeline to be bound. groupIndex! is the shader group to be bound. Valid Usage groupIndex must be 0! or less than the effective :: groupCount( including the referenced pipelinesThe pipelineBindPoint must be The same restrictions as  mZ apply as if the bound pipeline was created only with the Shader Group from the  groupIndex information The  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-device-generated-commands::deviceGeneratedCommands feature must be enabledValid Usage (Implicit) commandBuffer must be a valid  handlepipelineBindPoint must be a valid Q valuepipeline must be a valid o handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must- support graphics, or compute operationsBoth of  commandBuffer, and pipeline mustD have been created, allocated, or retrieved from the same zHost 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, o, Q+5vulkanpvkGetGeneratedCommandsMemoryRequirementsNV - Retrieve the buffer allocation requirements for generated commands Parametersdevice, is the logical device that owns the buffer.pInfo) is a pointer to an instance of the Q structure containing parameters required for the memory requirements query.pMemoryRequirements# points to an instance of the X structure in which the memory requirements of the buffer object are returned. Valid Usage The  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-device-generated-commands::deviceGeneratedCommands feature must be enabledValid Usage (Implicit)device must be a valid z handlepInfo must$ be a valid pointer to a valid  structurepMemoryRequirements must be a valid pointer to a  structureSee Alsoz, , +6vulkanLvkCreateIndirectCommandsLayoutNV - Create an indirect command layout object ParametersdeviceE is the logical device that creates the indirect command layout. pCreateInfo) is a pointer to an instance of the X structure containing parameters affecting creation of the indirect command layout. pAllocator: 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.pIndirectCommandsLayout points to a FH handle in which the resulting indirect command layout is returned. Valid Usage The  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-device-generated-commands::deviceGeneratedCommands feature must be enabledValid Usage (Implicit)device must be a valid z handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepIndirectCommandsLayout must be a valid pointer to a F handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, z, , F+7vulkan=A convenience wrapper to make a compatible pair of calls to +6 and +8To ensure that +8 is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument.+8vulkanGvkDestroyIndirectCommandsLayoutNV - Destroy an indirect commands layout Parametersdevice0 is the logical device that destroys the layout.indirectCommandsLayout is the layout to destroy. pAllocator: 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. Valid Usage%All submitted commands that refer to indirectCommandsLayout must have completed executionIf  were provided when indirectCommandsLayout1 was created, a compatible set of callbacks must be provided here If no  were provided when indirectCommandsLayout was created,  pAllocator must be NULL The  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-device-generated-commands::deviceGeneratedCommands feature must be enabledValid Usage (Implicit)device must be a valid z handleindirectCommandsLayout must be a valid F handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureindirectCommandsLayout must6 have been created, allocated, or retrieved from deviceSee Also, z, FtF+++++++++++ +!+"+#+++***********++*****+++++++******************++ + ++++ + ++ ***+-+,+++*+)+(+'+&***+.***+1+0+/*+$+%+2+3+4+5+6+7+8+2+3+4+5+6+7+8+"+#+++++++++ +!++++++++++ + ++ ++ + ++++++***********++************************+1+0+/*+1+0+/**+.*+.**+-+,+++*+)+(+'+&*+-+,+++*+)+(+'+&*+%*+$FNone'"#%&'-./189;=>?FHIMSUVX_dghklmqjvulkanbVkAccelerationStructureMemoryRequirementsTypeKHR - Acceleration structure memory requirement typeSee Alsokvulkan3VkRayTracingShaderGroupTypeKHR - 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 Alsoy, (lvulkanFVkGeometryTypeKHR - Enum specifying which type of geometry is providedSee Also, , Emvulkan?VkAccelerationStructureTypeKHR - Type of acceleration structureSee Also, ovulkanuVkBuildAccelerationStructureFlagBitsKHR - Bitmask specifying additional parameters for acceleration structure builds DescriptionNote,D and ,C may8 take more time and memory than a normal build, and so should. only be used when those features are needed.See Alsonqvulkan2VkGeometryInstanceFlagBitsKHR - Instance flag bits Description,G and ,H must not be used in the same flag.See AlsopsvulkanPVkGeometryFlagBitsKHR - Bitmask specifying additional parameters for a geometrySee AlsortvulkanEVkCopyAccelerationStructureModeKHR - Acceleration structure copy modeSee Also, , ~, uvulkankVkWriteDescriptorSetAccelerationStructureKHR - Structure specifying acceleration structure descriptor info Valid UsageaccelerationStructureCount must be equal to descriptorCount in the extended structureEach acceleration structure in pAccelerationStructures must have been created with ,;Valid Usage (Implicit)sType must be pAccelerationStructures must( be a valid pointer to an array of accelerationStructureCount valid L handlesaccelerationStructureCount must be greater than 0See AlsoL, vvulkanOVkTransformMatrixKHR - Structure specifying a 3x4 affine transformation matrixSee AlsowvulkaneVkTraceRaysIndirectCommandKHR - Structure specifying the parameters of an indirect trace ray command DescriptionThe members of w= have the same meaning as the similarly named parameters of ,V. Valid UsageSee Also!No cross-references are availablexvulkanUVkStridedBufferRegionKHR - Structure specifying a region of a VkBuffer with a stride Valid UsageIf buffer is not ., size plus offset must& be less than or equal to the size of bufferIf buffer is not ., stride must be less than the size of bufferValid Usage (Implicit)If buffer is not ., buffer must be a valid  handleSee Also, , ,Z, ,VyvulkanVVkRayTracingShaderGroupCreateInfoKHR - Structure specifying shaders in a shader group Valid UsageIf type is ,0 then  generalShader must be a valid index into {::pStages$ referring to a shader of "V, "W, or "XIf type is ,0 then closestHitShader,  anyHitShader, and intersectionShader must be wIf type is ,. then intersectionShader must be a valid index into {::pStages$ referring to a shader of "YIf type is ,/ then intersectionShader must be wclosestHitShader must be either w or a valid index into {::pStages$ referring to a shader of "Z anyHitShader must be either w or a valid index into {::pStages$ referring to a shader of "[If }::-rayTracingShaderGroupHandleCaptureReplayMixed is  = then pShaderGroupCaptureReplayHandle mustj not be provided if it has not been provided on a previous call to ray tracing pipeline creationIf }::-rayTracingShaderGroupHandleCaptureReplayMixed is  = then the caller mustI guarantee that no ray tracing pipeline creation commands with pShaderGroupCaptureReplayHandle_ provided execute simultaneously with ray tracing pipeline creation commands without pShaderGroupCaptureReplayHandle providedValid Usage (Implicit)sType must be pNext must be NULLtype must be a valid k valueSee Also{, k, zvulkanxVkRayTracingPipelineInterfaceCreateInfoKHR - Structure specifying additional interface information when using libraries DescriptionmaxPayloadSizeQ is calculated as the maximum number of bytes used by any block declared in the  RayPayloadKHR or IncomingRayPayloadKHR storage classes. maxAttributeSizeQ is calculated as the maximum number of bytes used by any block declared in the HitAttributeKHR storage class. maxCallableSizeP is calculated as the maximum number of bytes used by any block declred in the CallableDataKHR or IncomingCallableDataKHR. As variables in these storage classes do not have explicit offsets, the size should be calculated as if each variable has a  ohttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-alignment-requirementsscalar alignmentF equal to the largest scalar alignment of any of the block s members.Valid Usage (Implicit)See Also{, {vulkanlVkRayTracingPipelineCreateInfoKHR - Structure specifying parameters of a newly created ray tracing pipeline DescriptionThe parameters basePipelineHandle and basePipelineIndex# are described in more detail in  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivativesPipeline Derivatives.When c( is specified, this pipeline defines a pipeline library which cannotz be bound as a ray tracing pipeline directly. Instead, pipeline libraries define common shaders and shader groups which can* be included in future pipeline creation.&If pipeline libraries are included in  librariesd, shaders defined in those libraries are treated as if they were defined as additional entries in pStages,, appended in the order they appear in the  pLibraries array and in the pStages* array when those libraries were defined.When referencing shader groups in order to obtain a shader group handle, groups defined in those libraries are treated as if they were defined as additional entries in pGroups,, appended in the order they appear in the  pLibraries array and in the pGroups array when those libraries were defined. The shaders these groups reference are set when the pipeline library is created, referencing those specified in the pipeline library, not in the pipeline that includes it.If the 5 structure is included in the pNext chain of {., the operation of this pipeline creation is deferred, as defined in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operationsDeferred Host Operations chapter. Valid UsageIf flags contains the c> flag, and basePipelineIndex is -1, basePipelineHandle must. be a valid handle to a ray tracing oIf flags contains the c> flag, and basePipelineHandle is ., basePipelineIndex must2 be a valid index into the calling command s  pCreateInfos parameterIf flags contains the c> flag, and basePipelineIndex is not -1, basePipelineHandle must be .If flags contains the c> flag, and basePipelineHandle is not ., basePipelineIndex must be -1The stage# member of at least one element of pStages must be "V3The shader code for the entry points identified by pStages>, and the rest of the state identified by this structure mustA adhere to the pipeline linking rules described in the  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfacesShader Interfaces chapterlayout must be  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent$ with all shaders specified in pStagesThe number of resources in layoutC accessible to each shader stage that is used by the pipeline must be less than or equal to  _::maxPerStageResourcesflags must not include cO 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 c3 or c4maxRecursionDepth must be less than or equal to |::maxRecursionDepthIf flags includes c, pLibraryInterface must not be NULLIf the  libraryCount member of  libraries is greater than 0, pLibraryInterface must not be NULLEach element of the  pLibraries member of  libraries must* have been created with the value of maxRecursionDepth$ equal to that in this pipelineEach element of the  pLibraries member of  libraries must have been created with a layout that is compatible with the layout in this pipelineEach element of the  pLibraries member of  libraries must+ have been created with values of the maxPayloadSize, maxAttributeSize, and maxCallableSize members of pLibraryInterface equal to those in this pipelineIf flags includes cI, for any element of pGroups with a type of ,/ or ,. , the  anyHitShader of that element must not be wIf flags includes cJ, for any element of pGroups with a type of ,/ or ,. , the closestHitShader of that element must not be w If the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPrimitiveCullingrayTracingPrimitiveCulling feature is not enabled, flags must not include cN If the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPrimitiveCullingrayTracingPrimitiveCulling feature is not enabled, flags must not include cMIf libraries.libraryCount is zero, then  stageCount must not be zeroIf libraries.libraryCount is zero, then  groupCount must not be zeroValid Usage (Implicit)sType must be  Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of 5 or The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of cP valuesIf  stageCount is not 0, pStages must( be a valid pointer to an array of  stageCount valid  structuresIf  groupCount is not 0, pGroups must( be a valid pointer to an array of  groupCount valid y structures libraries must be a valid h structureIf pLibraryInterface is not NULL, pLibraryInterface must) be a valid pointer to a valid z structurelayout must be a valid m handleBoth of basePipelineHandle, and layout7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same zSee Alsoo, 6, m, h, , z, y, , ,Y|vulkan\VkPhysicalDeviceRayTracingPropertiesKHR - Properties of the physical device for ray tracing DescriptionIf the | structure is included in the pNext chain of O9, 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 Also}vulkanVkPhysicalDeviceRayTracingFeaturesKHR - Structure describing the ray tracing features that can be supported by an implementationMembersThe members of the }, structure describe the following features: Description rayTracingX indicates whether the implementation supports ray tracing functionality. See  Yhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing Ray Tracing.(rayTracingShaderGroupHandleCaptureReplay indicates whether the implementation supports saving and reusing shader group handles, e.g. for trace capture and replay.-rayTracingShaderGroupHandleCaptureReplayMixed indicates whether the implementation supports reuse of shader group handles being arbitrarily mixed with creation of non-reused shader group handles. If this is  =', all reused shader group handles must1 be specified before any non-reused handles may be created.,rayTracingAccelerationStructureCaptureReplay indicates whether the implementation supports saving and reusing acceleration structure device addresses, e.g. for trace capture and replay.rayTracingIndirectTraceRays[ indicates whether the implementation supports indirect trace ray commands, e.g. ,Z.,rayTracingIndirectAccelerationStructureBuildn indicates whether the implementation supports indirect acceleration structure build commands, e.g. ,_.+rayTracingHostAccelerationStructureCommandsi indicates whether the implementation supports host side acceleration structure commands, e.g. ,`, ,O, ,Q, ,S, ,U.rayQuery? indicates whether the implementation supports ray query (OpRayQueryProceedKHR) functionality.rayTracingPrimitiveCulling9 indicates whether the implementation supports  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-traversal-culling-primitive&primitive culling during ray traversal.If the } structure is included in the pNext chain of OJ, it is filled with values indicating whether the feature is supported. } can also be used in the pNext chain of    to enable the features. Valid UsageIf -rayTracingShaderGroupHandleCaptureReplayMixed is , (rayTracingShaderGroupHandleCaptureReplay must also be Valid Usage (Implicit)sType must be See Also, ~vulkandVkCopyMemoryToAccelerationStructureInfoKHR - Parameters for deserializing an acceleration structure Valid Usage[[VUID-{refpage}-mode-03413]] mode must be ,<+[[VUID-{refpage}-pInfo-03414]] The data in  pInfo->src mustX have a format compatible with the destination physical device as returned by ,[Valid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of 5The sType value of each struct in the pNext chain must be uniquesrc must be a valid + uniondst must be a valid L handlemode must be a valid t valueSee AlsoL, t, +, , ,R, ,SvulkanbVkCopyAccelerationStructureToMemoryInfoKHR - Parameters for serializing an acceleration structure Valid UsageThe memory pointed to by dst must8 be at least as large as the serialization size of src, as reported by e[[VUID-{refpage}-mode-03412]] mode must be ,=Valid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of 5The sType value of each struct in the pNext chain must be uniquesrc must be a valid L handledst must be a valid + unionmode must be a valid t valueSee AlsoL, t, +, , ,P, ,QvulkanVVkCopyAccelerationStructureInfoKHR - Parameters for copying an acceleration structure Valid Usage[[VUID-{refpage}-mode-03410]] mode must be ,> or ,?[[VUID-{refpage}-src-03411]] src must have been built with ,C if mode is ,>Valid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of 5The sType value of each struct in the pNext chain must be uniquesrc must be a valid L handledst must be a valid L handlemode must be a valid t valueBoth of dst, and src must? have been created, allocated, or retrieved from the same zSee AlsoL, t, , ,N, ,OvulkanfVkBindAccelerationStructureMemoryInfoKHR - Structure specifying acceleration structure memory binding Valid UsageaccelerationStructure must. not already be backed by a memory object memoryOffset must be less than the size of memorymemory mustG have been allocated using one of the memory types allowed in the memoryTypeBits member of the .- structure returned from a call to ,L with accelerationStructure and type of ,6 memoryOffset must be an integer multiple of the  alignment member of the .- structure returned from a call to ,L with accelerationStructure and type of ,6The size member of the .- structure returned from a call to ,L with accelerationStructure and type of ,6 must+ be less than or equal to the size of memory minus  memoryOffsetValid Usage (Implicit)sType must be pNext must be NULLaccelerationStructure must be a valid L handlememory must be a valid { handleIf deviceIndexCount is not 0, pDeviceIndices must( be a valid pointer to an array of deviceIndexCount uint32_t valuesBoth of accelerationStructure, and memory mustD have been created, allocated, or retrieved from the same zSee AlsoL, {, , , ,M, vulkanOVkAccelerationStructureVersionKHR - Acceleration structure version informationValid Usage (Implicit)See Also, ,[vulkanvVkAccelerationStructureMemoryRequirementsInfoKHR - Structure specifying acceleration to query for memory requirementsValid Usage (Implicit)See Also+, L, j, , ,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 Alsop, vvulkanVkAccelerationStructureGeometryTrianglesDataKHR - Structure specifying a triangle geometry in a bottom-level acceleration structureValid Usage (Implicit)sType must be pNext must be NULL vertexFormat must be a valid G value vertexData must be a valid + union indexType must be a valid O valueIf  indexData is not 0,  indexData must be a valid + unionIf  transformData is not 0,  transformData must be a valid + unionSee Also+, +, , G, O, vulkanpVkAccelerationStructureGeometryKHR - Structure specifying geometries to be built into an acceleration structure Valid UsageIf  geometryType is ,8, the aabbs member of geometry must be a valid  structureIf  geometryType is ,9, the  triangles member of geometry must be a valid  structureIf  geometryType is ,7, the  instances member of geometry must be a valid  structureValid Usage (Implicit)sType must be pNext must be NULL geometryType must be a valid l valuegeometry must be a valid + unionflags must be a valid combination of s valuesSee Also, +, r, l, vulkanVkAccelerationStructureGeometryInstancesDataKHR - Structure specifying a geometry consisting of instances of other acceleration structures Valid Usagedata must be aligned to 16 bytesIf arrayOfPointers is true, each pointer must be aligned to 16 bytesValid Usage (Implicit)sType must be pNext must be NULLdata must be a valid + unionSee Also+, , +, vulkanVkAccelerationStructureGeometryAabbsDataKHR - Structure specifying axis-aligned bounding box geometry in a bottom-level acceleration structureValid Usage (Implicit)See Also+, +, , vulkanvVkAccelerationStructureDeviceAddressInfoKHR - Structure specifying the acceleration structure to query an address forValid Usage (Implicit)See AlsoL, , ,avulkan|VkAccelerationStructureCreateInfoKHR - Structure specifying the parameters of a newly created acceleration structure object DescriptionIf  deviceAddress+ is zero, no specific address is requested.If  deviceAddress is not zero,  deviceAddress must be an address retrieved from an identically created acceleration structure on the same implementation. The acceleration structure must* also be bound to an identically created { object.Apps should avoid creating acceleration structures with app-provided addresses and implementation-provided addresses in the same process, to reduce the likelihood of P errors. Valid UsageIf  compactedSize is not 0 then maxGeometryCount must be 0 If  compactedSize is 0 then maxGeometryCount must not be 0If type is ,: then maxGeometryCount must be less than or equal to |::maxGeometryCountIf type is ,; then the maxPrimitiveCount member of each element of the pGeometryInfos array must be less than or equal to |::maxInstanceCount0The total number of triangles in all geometries must$ be less than or equal to |::maxPrimitiveCount,The total number of AABBs in all geometries must$ be less than or equal to |::maxPrimitiveCountIf type is ,; and  compactedSize is 0, maxGeometryCount must be 1If type is ,; and  compactedSize is 0, the  geometryType member of elements of pGeometryInfos must be ,7If type is ,: and  compactedSize is 0, the  geometryType member of elements of pGeometryInfos must not be ,7If type is ,: then the  geometryType member of each geometry in pGeometryInfos must be the sameIf flags has the ,B bit set, then it must not have the ,A bit setIf  deviceAddress is not 0, }::,rayTracingAccelerationStructureCaptureReplay must be Valid Usage (Implicit)sType must be pNext must be NULLtype must be a valid m valueflags must be a valid combination of o valuesIf maxGeometryCount is not 0, pGeometryInfos must( be a valid pointer to an array of maxGeometryCount valid  structuresSee Also, m, n, , , , ,\vulkanVkAccelerationStructureCreateGeometryTypeInfoKHR - Structure specifying the shape of geometries that will be built into an acceleration structure DescriptionWhen  geometryType is ,9:if  indexType is \8, then this structure describes a set of triangles.if  indexType is not \@, then this structure describes a set of indexed triangles. Valid UsageIf  geometryType is ,9,  vertexFormat must support the n] in  W::bufferFeatures as returned by OIf  geometryType is ,9,  indexType must be Q,  , or \Valid Usage (Implicit)sType must be pNext must be NULL geometryType must be a valid l value indexType must be a valid O valueIf  vertexFormat is not 0,  vertexFormat must be a valid G valueSee Also, , G, l, O, vulkan|VkAccelerationStructureBuildOffsetInfoKHR - Structure specifying build offsets and counts for acceleration structure builds DescriptionWThe primitive count and primitive offset are interpreted differently depending on the l used:For geometries of type ,9, primitiveCount[ is the number of triangles to be built, where each triangle is treated as 3 vertices.If the geometry uses indices, primitiveCount' 3 indices are consumed from :: indexData, starting at an offset of primitiveOffset. The value of  firstVertex; is added to the index values before fetching vertices.&If the geometry does not use indices, primitiveCount( 3 vertices are consumed from :: vertexData, starting at an offset of primitiveOffset + :: vertexStride  firstVertex. A single v structure is consumed from :: transformData, at an offset of transformOffset:. This transformation matrix is used by all triangles.For geometries of type ,8, primitiveCount4 is the number of axis-aligned bounding boxes. primitiveCount # structures are consumed from ::data , starting at an offset of primitiveOffset.For geometries of type ,7, primitiveCount0 is the number of acceleration structures. primitiveCount ( structures are consumed from ::data , starting at an offset of primitiveOffset. Valid UsageFor geometries of type ,90, if the geometry uses indices, the offset primitiveOffset from :: indexData must0 be a multiple of the element size of :: indexTypeFor geometries of type ,97, if the geometry doesn t use indices, the offset primitiveOffset from :: vertexData must2 be a multiple of the component size of :: vertexTypeFor geometries of type ,9, the offset transformOffset from :: transformData must be a multiple of 16For geometries of type ,8, the offset primitiveOffset from ::data must be a multiple of 8For geometries of type ,7, the offset primitiveOffset from ::data mustH be a multiple of 16 // TODO - Almost certainly should be more hereSee Also,`, ,^vulkan}VkAccelerationStructureBuildGeometryInfoKHR - Structure specifying the geometry data used to build an acceleration structure DescriptionNote Elements of  ppGeometries$ are accessed as follows, based on geometryArrayOfPointers: aif (geometryArrayOfPointers) { use *(ppGeometries[i]); } else { use (*ppGeometries)[i]; } Valid UsageIf update is , srcAccelerationStructure must not be .If update is , srcAccelerationStructure must" have been built before with ,D set in ::flags scratchData must have been created with }^ usage flagIf update is  , the srcAccelerationStructure and dstAccelerationStructure objects must0 either be the same object or not have any ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasingmemory aliasingValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of 5The sType value of each struct in the pNext chain must be uniquetype must be a valid m valueflags must be a valid combination of o valuesIf srcAccelerationStructure is not ., srcAccelerationStructure must be a valid L handledstAccelerationStructure must be a valid L handle scratchData must be a valid + unionBoth of dstAccelerationStructure, and srcAccelerationStructure7 that are valid handles of non-ignored parameters mustD have been created, allocated, or retrieved from the same zSee Also, L, m, , n, +, , ,`, ,_, ,^vulkan_VkAabbPositionsKHR - Structure specifying two opposing corners of an axis-aligned bounding box Valid UsageSee Also!No cross-references are available+vulkanGVkAccelerationStructureBuildTypeKHR - Acceleration structure build typeSee Also+vulkanmaxPayloadSizeJ is the maximum payload size in bytes used by any shader in the pipeline.+vulkanmaxAttributeSizeV is the maximum attribute structure size in bytes used by any shader in the pipeline.+vulkanmaxCallableSizeP is the maximum callable data size in bytes used by any shader in the pipeline.+vulkansrcR is the device or host address to memory containing the source data for the copy.+vulkandst3 is the target acceleration structure for the copy.+vulkanmode is a tH 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 tH 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 tH value that specifies additional operations to perform during the copy.+vulkan versionData must# be a valid pointer to an array of 2*VK_UUID_SIZE uint8_t values+vulkanaccelerationStructure must be a valid L handle+vulkan transform is a vT structure describing a transformation to be applied to the acceleration structure.+vulkaninstanceCustomIndex 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&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 must be a valid combination of q values+vulkanaccelerationStructureReference is either:9a device address containing the value obtained from ,a or R (used by device operations which reference acceleration structures) or,a LT object (used by host operations which reference acceleration structures).+vulkanmatrix1 is a 3x4 row-major affine transformation matrix.+vulkanminX must be less than or equal to maxX+vulkanminY must be less than or equal to maxY+vulkanminZ 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 compactedSize! is the size from the result of ,TP if this acceleration structure is going to be the target of a compacting copy.+vulkantype is a mK value specifying the type of acceleration structure that will be created.+vulkanflags is a bitmask of oA specifying additional parameters of the acceleration structure.+vulkanpGeometryInfos is an array of maxGeometryCount y structures, which describe the maximum size and format of the data that will be built into the acceleration structure.+vulkan deviceAddressI is the device address requested for the acceleration structure if the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing-ascapturereplay,rayTracingAccelerationStructureCaptureReplay feature is being used.+vulkan geometryType is a l@ that describes the type of an acceleration structure geometry.+vulkanmaxPrimitiveCount2 describes the maximum number of primitives that can2 be built into an acceleration structure geometry.+vulkan indexType is a OA that describes the index type used to build this geometry when  geometryType is ,9.+vulkanmaxVertexCount) describes the maximum vertex count that can; be used to build an acceleration structure geometry when  geometryType is ,9.+vulkan vertexFormat is a GE that describes the vertex format used to build this geometry when  geometryType is ,9.+vulkanallowsTransforms" indicates whether transform data can6 be used by this acceleration structure or not, when  geometryType is ,9.+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.+vulkanpNext is NULL1 or a pointer to an extension-specific structure.+vulkantype is a mB value specifying the type of acceleration structure being built.+vulkanflags is a bitmask of oA specifying additional parameters of the acceleration structure.+vulkanupdate specifies whether to update dstAccelerationStructure with the data in srcAccelerationStructure or not.+vulkansrcAccelerationStructureP points to an existing acceleration structure that is to be used to update the dst acceleration structure when update is .+vulkandstAccelerationStructure< points to the target acceleration structure for the build.+vulkan ppGeometries1 is either a pointer to an array of pointers to  structures if geometryArrayOfPointers is ,, or a pointer to a pointer to an array of  structures if it is  =d. Each element of the array describes the data used to build each acceleration structure geometry.+vulkan scratchData\ is the device or host address to memory that will be used as scratch memory for the build.+vulkan geometryType( describes which type of geometry this  refers to.+vulkangeometry is a +D union describing the geometry data for the relevant geometry type.+vulkanflags is a bitmask of sN 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  structures if arrayOfPointers is !, or the address of an array of  structures.+vulkandata must be a valid + union+vulkanstride must be a multiple of 8+vulkan vertexFormat is the G of each vertex element.+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.+vulkan indexType is the O of each index element.+vulkan indexDataR is the 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 vZ structure defining a transformation that should be applied to vertices in this geometry.+vulkanwidth must be less than or equal to  _::maxComputeWorkGroupCount[0]+vulkanheight must be less than or equal to  _::maxComputeWorkGroupCount[1]+vulkandepth must be less than or equal to  _::maxComputeWorkGroupCount[2]+vulkanbuffer& is the buffer containing this region.+vulkanoffset is the byte offset in buffer at which the region starts.+vulkanstride1 is the byte stride between consecutive elements.+vulkansize0 is the size in bytes of the region starting at offset.+vulkanshaderGroupHandleSize$ size in bytes of the shader header.+vulkanmaxRecursionDepthJ is the maximum number of levels of recursion allowed in a trace command.+vulkanmaxShaderGroupStrideJ is the maximum stride in bytes allowed between shader groups in the SBT.+vulkanshaderGroupBaseAlignment> is the required alignment in bytes for the base of the SBTs.,vulkanmaxGeometryCountQ is the maximum number of geometries in the bottom level acceleration structure.,vulkanmaxInstanceCountM is the maximum number of instances in the top level acceleration structure.,vulkanmaxPrimitiveCountk is the maximum number of triangles or AABBs in all geometries in the bottom level acceleration structure.,vulkan&maxDescriptorSetAccelerationStructuresc is the maximum number of acceleration structure descriptors that are allowed in a descriptor set.,vulkan"shaderGroupHandleCaptureReplaySizeh is the number of bytes for the information required to do capture and replay for shader group handles.,vulkantype must be a valid j value,vulkan buildType must be a valid + value,vulkanaccelerationStructure must be a valid L 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 .::size member in memory, starting from  memoryOffset? bytes, will be bound to the specified acceleration structure.,vulkanpDeviceIndices, is a pointer to an array of device indices.,vulkanpNext is NULL1 or a pointer to an extension-specific structure.,vulkanflags is a bitmask of cP0 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 yv structures describing the set of the shader stages to be included in each shader group in the ray tracing pipeline.,vulkanmaxRecursionDepth is the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depthmaximum recursion depth' of shaders executed by this pipeline., vulkan libraries is a h3 structure defining pipeline libraries to include.,!vulkanpLibraryInterface is a pointer to a zJ structure defining additional information when using pipeline libraries.,"vulkanlayouto is the description of binding locations used by both the pipeline and descriptor sets used with the pipeline.,#vulkanbasePipelineHandle is a pipeline to derive from.,$vulkanbasePipelineIndex is an index into the  pCreateInfos0 parameter to use as a pipeline to derive from.,&vulkantype6 is the type of hit group specified in this structure.,'vulkan generalShaderD is the index of the ray generation, miss, or callable shader from {::pStages' in the group if the shader group has type of ,0, and w 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 w 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 w otherwise.,*vulkanintersectionShader/ is the index of the intersection shader from {::pStages' in the group if the shader group has type of ,., and w otherwise.,+vulkanpShaderGroupCaptureReplayHandleR is an optional pointer to replay information for this shader group. Ignored if }::(rayTracingShaderGroupHandleCaptureReplay is  =.,.vulkan,.I specifies a shader group that only intersects with custom geometry and must% contain an intersection shader and may* contain closest hit and any-hit shaders.,/vulkan,/8 specifies a shader group that only hits triangles and mustK not contain an intersection shader, only closest hit and any-hit shaders.,0vulkan,0* indicates a shader group with a single "V, "W, or "X shader in it.,1vulkan,1^ requests the memory requirement for operations performed by either the host, or the device.,2vulkan,2I requests the memory requirement for operations performed by the device.,3vulkan,3G requests the memory requirement for operations performed by the host.,4vulkan,4E requests the memory requirement for scratch space during an update.,5vulkan,5N requests the memory requirement for scratch space during the initial build.,6vulkan,6+ requests the memory requirement for the L backing store.,7vulkan,7K specifies a geometry type consisting of acceleration structure instances.,8vulkan,8F specifies a geometry type consisting of axis-aligned bounding boxes.,9vulkan,94 specifies a geometry type consisting of triangles.,:vulkan,:_ is a bottom-level acceleration structure containing the AABBs or geometry to be intersected.,;vulkan,;t is a top-level acceleration structure containing instance data referring to bottom-level acceleration structures.,<vulkan,<a deserializes the semi-opaque serialization format in the buffer to the acceleration structure.,=vulkan,=v serializes the acceleration structure to a semi-opaque format which can be reloaded on a compatible implementation.,>vulkan,>> creates a more compact version of an acceleration structure src into dst. The acceleration structure dst must have been created with a  compactedSize( corresponding to the one returned by ,T= after the build of the acceleration structure specified by src.,?vulkan,?C creates a direct copy of the acceleration structure specified in src into the one specified by dst. The dst acceleration structure must0 have been created with the same parameters as src.,@vulkan,@- indicates that this acceleration structure should minimize the size of the scratch memory and the final result build, potentially at the expense of build time or trace performance.,Avulkan,A8 indicates that the given acceleration structure build should/ prioritize build time over trace performance.,Bvulkan,B8 indicates that the given acceleration structure build should/ prioritize trace performance over build time.,Cvulkan,C6 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.,Dvulkan,D6 indicates that the specified acceleration structure can be updated with update of  in ,^ or  .,Evulkan,E$ 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.,Fvulkan,Fb indicates that this geometry does not invoke the any-hit shaders even if present in a hit group.,Gvulkan,G( causes this instance to act as though ,FR were not specified on all geometries referenced by this instance. This behavior can be overridden by the SPIR-V  OpaqueKHR ray flag.,Hvulkan,H( causes this instance to act as though ,FN were specified on all geometries referenced by this instance. This behavior can be overridden by the SPIR-V  NoOpaqueKHR ray flag.,Ivulkan,I$ 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.,Jvulkan,J* disables face culling for this instance.,KvulkanMvkDestroyAccelerationStructureKHR - Destroy an acceleration structure object Parametersdevice0 is the logical device that destroys the buffer.accelerationStructure* is the acceleration structure to destroy. pAllocator: 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. Valid Usage%All submitted commands that refer to accelerationStructure must have completed executionIf  were provided when accelerationStructure1 was created, a compatible set of callbacks must be provided here If no  were provided when accelerationStructure was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid z handleaccelerationStructure must be a valid L handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureaccelerationStructure must6 have been created, allocated, or retrieved from deviceSee AlsoL, , z,LvulkanavkGetAccelerationStructureMemoryRequirementsKHR - Get acceleration structure memory requirements ParametersdeviceL is the logical device on which the acceleration structure was created.pInfoJ specifies the acceleration structure to get memory requirements for.pMemoryRequirementsG returns the requested acceleration structure memory requirements.Valid Usage (Implicit)See Also, z, ,MvulkanJvkBindAccelerationStructureMemoryKHR - Bind acceleration structure memory ParametersdeviceM is the logical device that owns the acceleration structures and memory. bindInfoCount is the number of elements in  pBindInfos. pBindInfos" is a pointer to an array of G structures describing acceleration structures and memory to bind. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, z,NvulkanBvkCmdCopyAccelerationStructureKHR - Copy an acceleration structure Parameters commandBufferD is the command buffer into which the command will be recorded.pInfo is a pointer to a , structure defining the copy operation. Valid UsageAll L) objects referenced by this command must be bound to device memory The 5 structure must not be included in the pNext chain of the  structureValid Usage (Implicit) commandBuffer must be a valid  handlepInfo must$ be a valid pointer to a valid  structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceHost SynchronizationHost 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, ,OvulkanLvkCopyAccelerationStructureKHR - Copy an acceleration structure on the host Parameters'This command fulfills the same task as ,N but executed by the host. Descriptiondevice6 is the device which owns the acceleration structures.pInfo is a pointer to a , structure defining the copy operation.If the 5 structure is included in the pNext chain of the . structure, the operation of this command is deferred, as defined in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operationsDeferred Host Operations chapter. Valid UsageAll L) objects referenced by this command must% be bound to host-visible memory the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-raytracing-hostascmds-::rayTracingHostAccelerationStructureCommands feature must be enabledValid Usage (Implicit)device must be a valid z handlepInfo must$ be a valid pointer to a valid  structure Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ<=  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, z,Pvulkan\vkCmdCopyAccelerationStructureToMemoryKHR - Copy an acceleration structure to device memory Parameters+This command produces the same results as ,Qn, 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 ,R or ,S. Description commandBufferD is the command buffer into which the command will be recorded.pInfo is an a pointer to a , structure defining the copy operation.AThe defined header structure for the serialized data consists of:" bytes of data matching K:: driverUUIDL bytes of data identifying the compatibility for comparison using ,[IA 64-bit integer of the total size matching the value queried using eBA 64-bit integer of the deserialized size to be passed in to :: compactedSizeA 64-bit integer of the count of the number of acceleration structure handles following. This will be zero for a bottom-level acceleration structure.;The corresponding handles matching the values returned by ,a or  are tightly packed in the buffer following the count. The application is expected to store a mapping between those handles and the original application-generated bottom-level acceleration structures to provide when deserializing. Valid UsageAll + referenced by this command must$ contain valid device addressesAll L) objects referenced by this command must be bound to device memory The 5 structure must not be included in the pNext chain of the  structure[[VUID-{refpage}-mode-03412]] mode must be ,=Valid Usage (Implicit) commandBuffer must be a valid  handlepInfo must$ be a valid pointer to a valid  structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceHost SynchronizationHost 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, ,QvulkanYvkCopyAccelerationStructureToMemoryKHR - Serialize an acceleration structure on the host Parameters(This command fulfills the same task as ,P but executed by the host. Description+This command produces the same results as ,Pu, 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 ,R or ,S.device is the device which owns  pInfo->src.pInfo is a pointer to a , structure defining the copy operation.If the 5 structure is included in the pNext chain of the . structure, the operation of this command is deferred, as defined in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations chapter. Valid UsageAll L) objects referenced by this command must% be bound to host-visible memoryAll + referenced by this command must! contain valid host pointers the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-raytracing-hostascmds-::rayTracingHostAccelerationStructureCommands feature must be enabledValid Usage (Implicit)device must be a valid z handlepInfo must$ be a valid pointer to a valid  structure Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ<=  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, z,Rvulkan\vkCmdCopyMemoryToAccelerationStructureKHR - Copy device memory to an acceleration structure ParametersDThis command can accept acceleration structures produced by either ,P or ,Q. Description commandBufferD is the command buffer into which the command will be recorded.pInfo is a pointer to a ~, structure defining the copy operation.CThe structure provided as input to deserialize is as described in ,P, with any acceleration structure handles filled in with the newly-queried handles to bottom level acceleration structures created before deserialization. These do not need to be built at deserialize time, but must be created. Valid UsageAll + referenced by this command must$ contain valid device addressesAll L) objects referenced by this command must be bound to device memory The 5 structure must not be included in the pNext chain of the ~ structure[[VUID-{refpage}-mode-03413]] mode must be ,<+[[VUID-{refpage}-pInfo-03414]] The data in  pInfo->src mustX have a format compatible with the destination physical device as returned by ,[Valid Usage (Implicit) commandBuffer must be a valid  handlepInfo must$ be a valid pointer to a valid ~ structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceHost SynchronizationHost 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, ~,Svulkan[vkCopyMemoryToAccelerationStructureKHR - Deserialize an acceleration structure on the host Parameters(This command fulfills the same task as ,R but is executed by the host. DescriptionDThis command can accept acceleration structures produced by either ,P or ,Q.device is the device which owns  pInfo->dst.pInfo is a pointer to a ~, structure defining the copy operation.If the 5 structure is included in the pNext chain of the ~. structure, the operation of this command is deferred, as defined in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operationsDeferred Host Operations chapter. Valid UsageAll L) objects referenced by this command must% be bound to host-visible memoryAll + referenced by this command must! contain valid host pointers the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-raytracing-hostascmds-::rayTracingHostAccelerationStructureCommands feature must be enabledValid Usage (Implicit)device must be a valid z handlepInfo must$ be a valid pointer to a valid ~ structure Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ<=  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also~, z,TvulkanqvkCmdWriteAccelerationStructuresPropertiesKHR - Write acceleration structure result parameters to query results. Parameters commandBufferD is the command buffer into which the command will be recorded.accelerationStructureCountN is the count of acceleration structures for which to query the property.pAccelerationStructuresT is a pointer to an array of existing previously built acceleration structures. queryType is a X? value specifying the type of queries managed by the pool. queryPoolB is the query pool that will manage the results of the query. firstQueryK is the first query index within the query pool that will contain the accelerationStructureCount number of results. Valid Usage queryPool must have been created with a  queryType matching  queryTypeThe queries identified by  queryPool and  firstQuery must be  unavailableT[[VUID-{refpage}-accelerationStructures-03431]] All acceleration structures in accelerationStructures must have been built with ,C if  queryType is d#[[VUID-{refpage}-queryType-03432]]  queryType must be d or eValid Usage (Implicit) commandBuffer must be a valid  handlepAccelerationStructures must( be a valid pointer to an array of accelerationStructureCount valid L handles queryType must be a valid X value queryPool must be a valid l handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceaccelerationStructureCount must be greater than 0Each of  commandBuffer,  queryPool, and the elements of pAccelerationStructures must? have been created, allocated, or retrieved from the same zHost SynchronizationHost 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 AlsoL, , l, X,Uvulkan`vkWriteAccelerationStructuresPropertiesKHR - Query acceleration structure meta-data on the host Parameters(This command fulfills the same task as ,T but executed by the host. Descriptiondevice> is the device which owns the acceleration structures in pAccelerationStructures.accelerationStructureCountN is the count of acceleration structures for which to query the property.pAccelerationStructuresN points to an array of existing previously built acceleration structures. queryType is a X2 value specifying the property to be queried.dataSize2 is the size in bytes of the buffer pointed to by pData.pDataP is a pointer to a user-allocated buffer where the results will be written.strideK is the stride in bytes between results for individual queries within pData. Valid UsageIf  queryType is d , then stride must# be a multiple of the size of If  queryType is d , then data must point to a If  queryType is e , then stride must# be a multiple of the size of If  queryType is e , then data must point to a dataSize must" be greater than or equal to accelerationStructureCount*stride*The acceleration structures referenced by pAccelerationStructures must be bound to host-visible memoryT[[VUID-{refpage}-accelerationStructures-03431]] All acceleration structures in accelerationStructures must have been built with ,C if  queryType is d#[[VUID-{refpage}-queryType-03432]]  queryType must be d or e the  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-raytracing-hostascmds-::rayTracingHostAccelerationStructureCommands feature must be enabledValid Usage (Implicit)device must be a valid z handlepAccelerationStructures must( be a valid pointer to an array of accelerationStructureCount valid L handles queryType must be a valid X valuepData must# be a valid pointer to an array of dataSize bytesaccelerationStructureCount must be greater than 0dataSize must be greater than 0Each element of pAccelerationStructures must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee AlsoL, z, X,Vvulkan5vkCmdTraceRaysKHR - Initialize a ray tracing dispatch Parameters commandBufferD is the command buffer into which the command will be recorded.pRaygenShaderBindingTableo is the strided buffer range that holds the shader binding table data for the ray generation shader stage.pMissShaderBindingTablee is the strided buffer range that holds the shader binding table data for the miss shader stage.pHitShaderBindingTabled is the strided buffer range that holds the shader binding table data for the hit shader stage.pCallableShaderBindingTablei is the strided buffer range that holds the shader binding table data for the callable shader stage.width0 is the width of the ray trace query dimensions.height- is height of the ray trace query dimensions.depth, is depth of the ray trace query dimensions. Description8When the command is executed, a ray generation group of width height depth rays is assembled. Valid UsageIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain n-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 nIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any )| being sampled with " as a result of this command must have a (E and format that supports cubic filtering, as specified by <:: filterCubic returned by OAny )| being sampled with + with a reduction mode of either  or " as a result of this command must have a (i and format that supports cubic filtering together with minmax filtering, as specified by <::filterCubicMinmax returned by OAny )x created with a *::flags containing * sampled as a result of this command must only be sampled using a  of  For each set n% that is statically used by the oN 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 m! that is compatible for set n, with the m! used to create the current o, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the oS 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 m; that is compatible for push constants, with the m! used to create the current o, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via  l, must2 be valid if they are statically used by the o; bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the oo object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the of object bound to the pipeline bind point used by this command, since that pipeline was boundIf the oS 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 )x with a )| of the type (, (, (, ( or (, in any shader stageIf the oS 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 stageIf the oS 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 stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the of object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the of object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the oC object bound to the pipeline bind point used by this command must! not be a protected resourceraygenShaderBindingOffset must be less than the size of raygenShaderBindingTableBufferraygenShaderBindingOffset must be a multiple of |::shaderGroupBaseAlignmentmissShaderBindingOffset must be less than the size of missShaderBindingTableBuffermissShaderBindingOffset must be a multiple of |::shaderGroupBaseAlignmenthitShaderBindingOffset must be less than the size of hitShaderBindingTableBufferhitShaderBindingOffset must be a multiple of |::shaderGroupBaseAlignmentcallableShaderBindingOffset must be less than the size of  callableShaderBindingTableBuffercallableShaderBindingOffset must be a multiple of |::shaderGroupBaseAlignmentmissShaderBindingStride must be a multiple of |::shaderGroupHandleSizehitShaderBindingStride must be a multiple of |::shaderGroupHandleSizecallableShaderBindingStride must be a multiple of |::shaderGroupHandleSizemissShaderBindingStride must be less than or equal to |::maxShaderGroupStridehitShaderBindingStride must be less than or equal to |::maxShaderGroupStridecallableShaderBindingStride must be less than or equal to |::maxShaderGroupStride0Any shader group handle referenced by this call mustL have been queried from the currently bound ray tracing shader pipeline This command must^ not cause a shader call instruction to be executed from a shader invocation with a  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depthrecursion depth greater than the value of maxRecursionDepth3 used to create the bound ray tracing pipelineIf  commandBufferD is a protected command buffer, any resource written to by the oC object bound to the pipeline bind point used by this command must$ not be an unprotected resourceIf  commandBufferu is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the o. object bound to the pipeline bind point must not write to any resourcewidth must be less than or equal to  _::maxComputeWorkGroupCount[0]height must be less than or equal to  _::maxComputeWorkGroupCount[1]depth must be less than or equal to  _::maxComputeWorkGroupCount[2]=If the currently bound ray tracing pipeline was created with flags that included cI , the buffer member of hitShaderBindingTable must not be .=If the currently bound ray tracing pipeline was created with flags that included cJ , the buffer member of hitShaderBindingTable must not be .=If the currently bound ray tracing pipeline was created with flags that included cL , the buffer member of hitShaderBindingTable must not be .=If the currently bound ray tracing pipeline was created with flags that included cK-, the shader group handle identified by missShaderBindingTable must contain a valid miss shader=If the currently bound ray tracing pipeline was created with flags that included cI, entries in hitShaderBindingTableQ accessed as a result of this command in order to execute an any hit shader must not be set to zero=If the currently bound ray tracing pipeline was created with flags that included cJ, entries in hitShaderBindingTableT accessed as a result of this command in order to execute a closest hit shader must not be set to zero=If the currently bound ray tracing pipeline was created with flags that included cL, entries in hitShaderBindingTableV accessed as a result of this command in order to execute an intersection shader must not be set to zeroValid Usage (Implicit) commandBuffer must be a valid  handlepRaygenShaderBindingTable must$ be a valid pointer to a valid x structurepMissShaderBindingTable must$ be a valid pointer to a valid x structurepHitShaderBindingTable must$ be a valid pointer to a valid x structurepCallableShaderBindingTable must$ be a valid pointer to a valid x structure commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceHost SynchronizationHost 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, x,WvulkanWvkGetRayTracingShaderGroupHandlesKHR - Query ray tracing pipeline shader group handles Parametersdevice; is the logical device containing the ray tracing pipeline.pipeline@ is the ray tracing pipeline object containing the shaders. firstGroupH is the index of the first group to retrieve a handle for from the {::pGroups or %::pGroups array. groupCount- is the number of shader handles to retrieve.dataSize2 is the size in bytes of the buffer pointed to by pData.pDataP is a pointer to a user-allocated buffer where the results will be written. Valid Usage The sum of  firstGroup and  groupCount must2 be less than the number of shader groups in pipelinedataSize must be at least |::shaderGroupHandleSize  groupCountpipeline must! have not been created with cValid Usage (Implicit)device must be a valid z handlepipeline must be a valid o handlepData must# be a valid pointer to an array of dataSize bytesdataSize must be greater than 0pipeline must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Alsoz, o,XvulkansvkGetRayTracingCaptureReplayShaderGroupHandlesKHR - Query ray tracing capture replay pipeline shader group handles Parametersdevice; is the logical device containing the ray tracing pipeline.pipeline@ is the ray tracing pipeline object containing the shaders. firstGroupH is the index of the first group to retrieve a handle for from the {::pGroups array. groupCount- is the number of shader handles to retrieve.dataSize2 is the size in bytes of the buffer pointed to by pData.pDataP is a pointer to a user-allocated buffer where the results will be written. Valid Usage The sum of  firstGroup and  groupCount must2 be less than the number of shader groups in pipelinedataSize must be at least |::"shaderGroupHandleCaptureReplaySize  groupCount}::(rayTracingShaderGroupHandleCaptureReplay must! be enabled to call this functionValid Usage (Implicit)device must be a valid z handlepipeline must be a valid o handlepData must# be a valid pointer to an array of dataSize bytesdataSize must be greater than 0pipeline must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Alsoz, o,YvulkanKvkCreateRayTracingPipelinesKHR - Creates a new ray tracing pipeline object ParametersdeviceC is the logical device that creates the ray tracing pipelines. pipelineCache is either .S, 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 cache^ object, in which case use of that cache is enabled for the duration of the command.createInfoCount is the length of the  pCreateInfos and  pPipelines arrays. pCreateInfos" is a pointer to an array of { structures. pAllocator: 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. pPipelines` is a pointer to an array in which the resulting ray tracing pipeline objects are returned. DescriptionThe .e error is returned if the implementation is unable to re-use the shader group handles provided in y::pShaderGroupCaptureReplayHandle when }::(rayTracingShaderGroupHandleCaptureReplay is enabled. Valid UsageIf the flags member of any element of  pCreateInfos contains the c> flag, and the basePipelineIndex) member of that same element is not -1, basePipelineIndex must" be less than the index into  pCreateInfos! that corresponds to that elementIf the flags member of any element of  pCreateInfos contains the c> flag, the base pipeline must! have been created with the cR flag setIf  pipelineCache was created with e5, host access to  pipelineCache must be lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehaviorexternally synchronized The  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing rayTracing feature must be enabledValid Usage (Implicit)device must be a valid z handleIf  pipelineCache is not .,  pipelineCache must be a valid n handle pCreateInfos must( be a valid pointer to an array of createInfoCount valid { structuresIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pPipelines must( be a valid pointer to an array of createInfoCount o handlescreateInfoCount must be greater than 0If  pipelineCache is a valid handle, it must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ<=>  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJ.See Also, z, o, n, {,ZvulkanGvkCmdTraceRaysIndirectKHR - Initialize an indirect ray tracing dispatch Parameters commandBufferD is the command buffer into which the command will be recorded.pRaygenShaderBindingTableo is the strided buffer range that holds the shader binding table data for the ray generation shader stage.pMissShaderBindingTablee is the strided buffer range that holds the shader binding table data for the miss shader stage.pHitShaderBindingTabled is the strided buffer range that holds the shader binding table data for the hit shader stage.pCallableShaderBindingTablei is the strided buffer range that holds the shader binding table data for the callable shader stage.buffer3 is the buffer containing the trace ray parameters.offset is the byte offset into buffer where parameters begin. Description,Z behaves similarly to ,V except that the ray trace query dimensions are read by the device from a buffer during execution. The parameters of trace ray are encoded in the w structure. Valid UsageIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain n'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 nIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any )| being sampled with " as a result of this command must have a (E and format that supports cubic filtering, as specified by <:: filterCubic returned by OAny )| being sampled with + with a reduction mode of either  or " as a result of this command must have a (i and format that supports cubic filtering together with minmax filtering, as specified by <::filterCubicMinmax returned by OAny )x created with a *::flags containing * sampled as a result of this command must only be sampled using a  of  For each set n% that is statically used by the oN 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 m! that is compatible for set n, with the m! used to create the current o, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the oS 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 m; that is compatible for push constants, with the m! used to create the current o, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via  l, must2 be valid if they are statically used by the o; bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the oo object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the of object bound to the pipeline bind point used by this command, since that pipeline was boundIf the oS 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 )x with a )| of the type (, (, (, ( or (, in any shader stageIf the oS 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 stageIf the oS 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 stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the of object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the of object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the oC object bound to the pipeline bind point used by this command must! not be a protected resourceraygenShaderBindingOffset must be less than the size of raygenShaderBindingTableBufferraygenShaderBindingOffset must be a multiple of |::shaderGroupBaseAlignmentmissShaderBindingOffset must be less than the size of missShaderBindingTableBuffermissShaderBindingOffset must be a multiple of |::shaderGroupBaseAlignmenthitShaderBindingOffset must be less than the size of hitShaderBindingTableBufferhitShaderBindingOffset must be a multiple of |::shaderGroupBaseAlignmentcallableShaderBindingOffset must be less than the size of  callableShaderBindingTableBuffercallableShaderBindingOffset must be a multiple of |::shaderGroupBaseAlignmentmissShaderBindingStride must be a multiple of |::shaderGroupHandleSizehitShaderBindingStride must be a multiple of |::shaderGroupHandleSizecallableShaderBindingStride must be a multiple of |::shaderGroupHandleSizemissShaderBindingStride must be less than or equal to |::maxShaderGroupStridehitShaderBindingStride must be less than or equal to |::maxShaderGroupStridecallableShaderBindingStride must be less than or equal to |::maxShaderGroupStride0Any shader group handle referenced by this call mustL have been queried from the currently bound ray tracing shader pipeline This command must^ not cause a shader call instruction to be executed from a shader invocation with a  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depthrecursion depth greater than the value of maxRecursionDepth3 used to create the bound ray tracing pipelineIf buffer is non-sparse then it must< be bound completely and contiguously to a single { objectbuffer must! have been created with the }  bit setoffset must be a multiple of 4 commandBuffer must" not be a protected command buffer(offset + sizeof(w)) must+ be less than or equal to the size of buffer the  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing-indirecttraceray::rayTracingIndirectTraceRays feature must be enabledValid Usage (Implicit) commandBuffer must be a valid  handle pRaygenShaderBindingTable must$ be a valid pointer to a valid x structurepMissShaderBindingTable must$ be a valid pointer to a valid x structurepHitShaderBindingTable must$ be a valid pointer to a valid x structurepCallableShaderBindingTable must$ be a valid pointer to a valid x structurebuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceBoth of buffer, and  commandBuffer mustD have been created, allocated, or retrieved from the same zHost SynchronizationHost 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, , , x,[vulkanvkGetDeviceAccelerationStructureCompatibilityKHR - Check if a serialized acceleration structure is compatible with the current device Parametersdevice, is the device to check the version against.version points to the 6 version information to check against the device. Description!This possible return values for ,[ are:Q? is returned if an acceleration structure serialized with version4 as the version information is compatible with device.6? is returned if an acceleration structure serialized with version8 as the version information is not compatible with device. Valid Usage The  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing rayTracing or  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQueryrayQuery feature must be enabledValid Usage (Implicit)device must be a valid z handleversion must$ be a valid pointer to a valid  structure Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailure6See Also, z,\vulkanNvkCreateAccelerationStructureKHR - Create a new acceleration structure object Parametersdevice6 is the logical device that creates the buffer object. pCreateInfo is a pointer to a \ structure containing parameters affecting creation of the acceleration structure. pAllocator: 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.pAccelerationStructure is a pointer to a LN handle in which the resulting acceleration structure object is returned. DescriptionSimilar to other objects in Vulkan, the acceleration structure creation merely creates an object with a specific shape . The type and quantity of geometry that can be built into an acceleration structure is determined by the parameters of .ePopulating the data in the object after allocating and binding memory is done with commands such as ,^, ,`, ,N, and ,O. Valid Usage The  ahttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing rayTracing or  _https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQueryrayQuery feature must be enabledIf :: deviceAddress is not zero, the  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing-ascapturereplay,rayTracingAccelerationStructureCaptureReplay feature must be enabledIf device; was created with multiple physical devices, then the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevicebufferDeviceAddressMultiDevice feature must be enabledValid Usage (Implicit)device must be a valid z handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepAccelerationStructure must be a valid pointer to a L handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKPSee Also, L, , z,]vulkan=A convenience wrapper to make a compatible pair of calls to ,\ and ,KTo ensure that ,K is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument.,^vulkanDvkCmdBuildAccelerationStructureKHR - Build an acceleration structure Parameters commandBufferD is the command buffer into which the command will be recorded. infoCountX is the number of acceleration structures to build. It specifies the number of the pInfos structures and  ppOffsetInfos pointers that must be provided.pInfos is an array of  infoCount Q structures defining the geometry used to build each acceleration structure. ppOffsetInfos is an array of  infoCount pointers to arrays of  structures. Each  ppOffsetInfos[i] is an array of pInfos[i]. geometryCount m structures defining dynamic offsets to the addresses where geometry data is stored, as defined by pInfos[i]. DescriptionThe ,^ command provides the ability to initiate multiple acceleration structures builds, however there is no ordering or synchronization implied between any of the individual acceleration structure builds.NoteThis means that an application cannot7 build a top-level acceleration structure in the same ,^g call as the associated bottom-level or instance acceleration structures are being built. There also cannotz be any memory aliasing between any acceleration structure memories or scratch memories being used by any of the builds. Valid Usage;[[VUID-{refpage}-pOffsetInfos-03402]] Each element of  ppOffsetInfos[i] must( be a valid pointer to an array of pInfos[i]. geometryCount  structures*[[VUID-{refpage}-pInfos-03403]] Each pInfos[i].srcAccelerationStructure must: not refer to the same acceleration structure as any pInfos[i].dstAccelerationStructureZ that is provided to the same build command unless it is identical for an update)[[VUID-{refpage}-pInfos-03404]] For each pInfos [i], dstAccelerationStructure must( have been created with compatible  where ::type and ::flags are identical to ::type and ::flags respectively, :: geometryCount for dstAccelerationStructureM are greater than or equal to the build size, and each geometry in :: ppGeometries for dstAccelerationStructureT has greater than or equal to the number of vertices, indices, and AABBs, :: transformDataG is both 0 or both non-zero, and all other parameters are the same)[[VUID-{refpage}-pInfos-03405]] For each pInfos[i], if update is P, then objects that were previously active for that acceleration structure must' not be made inactive as per shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims???)[[VUID-{refpage}-pInfos-03406]] For each pInfos[i], if update is R, then objects that were previously inactive for that acceleration structure must% not be made active as per shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims???n[[VUID-{refpage}-None-03407]] Any acceleration structure instance in any top level build in this command mustQ not reference any bottom level acceleration structure built by this command&[[VUID-{refpage}-pInfos-03408]] There must not be any  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasingmemory aliasingE between the scratch memories that are provided in all the pInfos[i]. scratchData4 memories for the acceleration structure builds$[[VUID-{refpage}-None-03409]] There must not be any  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasingmemory aliasing{ between memory bound to any top level, bottom level, or instance acceleration structure accessed by this commandIf update is  =, all addresses between pInfos[i]. scratchData and pInfos[i]. scratchData + N - 1 mustX be in the buffer device address range of the same buffer, where N is given by the size member of the .- structure returned from a call to ,L with ::accelerationStructure set to pInfos[i].dstAccelerationStructure and ::type set to ,5If update is , all addresses between pInfos[i]. scratchData and pInfos[i]. scratchData + N1 mustX be in the buffer device address range of the same buffer, where N is given by the size member of the .- structure returned from a call to ,L with ::accelerationStructure set to pInfos[i].dstAccelerationStructure and ::type set to ,45The buffer from which the buffer device address pInfos[i]. scratchData is queried must have been created with }^ usage flagAll + or +! referenced by this command must contain valid device addressesAll L) objects referenced by this command must be bound to device memory The 5 structure must not be included in the pNext# chain of any of the provided  structuresValid Usage (Implicit) commandBuffer must be a valid  handlepInfos must# be a valid pointer to an array of  infoCount valid  structures ppOffsetInfos must# be a valid pointer to an array of  infoCount  structures commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instance infoCount must be greater than 0Host SynchronizationHost access to 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, , ,_vulkanyvkCmdBuildAccelerationStructureIndirectKHR - Build an acceleration structure with some parameters provided on the device Parameters commandBufferD is the command buffer into which the command will be recorded.pInfo is a pointer to a O structure defining the geometry used to build the acceleration structure.indirectBuffer is the  containing pInfo->geometryCount m structures defining dynamic offsets to the addresses where geometry data is stored, as defined by pInfo.indirectOffset is the byte offset into indirectBuffer$ where offset parameters begin.strideF is the byte stride between successive sets of offset parameters. Valid UsageAll + or +! referenced by this command must contain valid device addressesAll L) objects referenced by this command must be bound to device memory The  qhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing-indirectasbuild.::rayTracingIndirectAccelerationStructureBuild feature must be enabled The 5 structure must not be included in the pNext# chain of any of the provided  structuresValid Usage (Implicit) commandBuffer must be a valid  handlepInfo must$ be a valid pointer to a valid  structureindirectBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceBoth of  commandBuffer, and indirectBuffer mustD have been created, allocated, or retrieved from the same zHost SynchronizationHost 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, , , ,`vulkanNvkBuildAccelerationStructureKHR - Build an acceleration structure on the host Parameters(This command fulfills the same task as ,^ but executed by the host. Descriptiondevice is the z< for which the acceleration structures are being built. infoCountX is the number of acceleration structures to build. It specifies the number of the pInfos structures and  ppOffsetInfos pointers that must be provided.pInfos is a pointer to an array of  infoCount Q structures defining the geometry used to build each acceleration structure. ppOffsetInfos is an array of  infoCount pointers to arrays of  structures. Each  ppOffsetInfos[i] is an array of pInfos[i]. geometryCount m structures defining dynamic offsets to the addresses where geometry data is stored, as defined by pInfos[i].The ,` command provides the ability to initiate multiple acceleration structures builds, however there is no ordering or synchronization implied between any of the individual acceleration structure builds.NoteThis means that an application cannot7 build a top-level acceleration structure in the same ,`g call as the associated bottom-level or instance acceleration structures are being built. There also cannotz be any memory aliasing between any acceleration structure memories or scratch memories being used by any of the builds.If the 5 structure is included in the pNext chain of any . structure, the operation of this command is deferred, as defined in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operationsDeferred Host Operations chapter. Valid Usage;[[VUID-{refpage}-pOffsetInfos-03402]] Each element of  ppOffsetInfos[i] must( be a valid pointer to an array of pInfos[i]. geometryCount  structures *[[VUID-{refpage}-pInfos-03403]] Each pInfos[i].srcAccelerationStructure must: not refer to the same acceleration structure as any pInfos[i].dstAccelerationStructureZ that is provided to the same build command unless it is identical for an update)[[VUID-{refpage}-pInfos-03404]] For each pInfos [i], dstAccelerationStructure must( have been created with compatible  where ::type and ::flags are identical to ::type and ::flags respectively, :: geometryCount for dstAccelerationStructureM are greater than or equal to the build size, and each geometry in :: ppGeometries for dstAccelerationStructureT has greater than or equal to the number of vertices, indices, and AABBs, :: transformDataG is both 0 or both non-zero, and all other parameters are the same)[[VUID-{refpage}-pInfos-03405]] For each pInfos[i], if update is P, then objects that were previously active for that acceleration structure must' not be made inactive as per shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims???)[[VUID-{refpage}-pInfos-03406]] For each pInfos[i], if update is R, then objects that were previously inactive for that acceleration structure must% not be made active as per shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims???n[[VUID-{refpage}-None-03407]] Any acceleration structure instance in any top level build in this command mustQ not reference any bottom level acceleration structure built by this command&[[VUID-{refpage}-pInfos-03408]] There must not be any  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasingmemory aliasingE between the scratch memories that are provided in all the pInfos[i]. scratchData4 memories for the acceleration structure builds$[[VUID-{refpage}-None-03409]] There must not be any  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasingmemory aliasing{ between memory bound to any top level, bottom level, or instance acceleration structure accessed by this commandAll + or +! referenced by this command must contain valid host addressesAll L) objects referenced by this command must% be bound to host-visible memory The  khttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-raytracing-hostascmds-::rayTracingHostAccelerationStructureCommands feature must be enabledValid Usage (Implicit)device must be a valid z handlepInfos must# be a valid pointer to an array of  infoCount valid  structures ppOffsetInfos must# be a valid pointer to an array of  infoCount  structures infoCount must be greater than 0 Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ<=  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, , z,avulkanZvkGetAccelerationStructureDeviceAddressKHR - Query an address of a acceleration structure ParametersdeviceJ is the logical device that the accelerationStructure was created on.pInfo is a pointer to a Q structure specifying the acceleration structure to retrieve an address for. DescriptionThe 64-bit return value is an address of the acceleration structure, which can be used for device and shader operations that involve acceleration structures, such as ray traversal and acceleration structure building.DIf the acceleration structure was created with a non-zero value of :: deviceAddress, the return value will be the same address. Valid UsageIf device; was created with multiple physical devices, then the  uhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevicebufferDeviceAddressMultiDevice feature must be enabledValid Usage (Implicit)device must be a valid z handlepInfo must$ be a valid pointer to a valid  structureSee Also, z*L                           hj,6,5,4+k,0,/,.+l,9,8,7+m,;,:+no,D,C,B,A,@+pq,J,I,H,G+rs,F,E+t,?,>,=,<+u,,v++w++++x+++++y,%,&,',(,),*,+z++++{,,,, ,,",#,$,,,!|+++++,,,,,},,,,, , , , , ,~+++++++++++++++,,,,,++,,,,++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++w+++,3,2,1+++++++++++,,,-,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,[,\,],^,_,`,aj,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,[,\,],^,_,`,ay,%,&,',(,),*,+{,,,, ,,",#,$,,,!,,,,,u,,,,,,},,,,, , , , , ,|+++++,,,,,x+++++w+++++++++++++++++++++++++++++++++++++++++++++++++++++++v+++++++++++++++++++++++~+++++z++++++++++++++q,J,I,H,G+,J,I,H,Gps,F,E+,F,Ero,D,C,B,A,@+,D,C,B,A,@nt,?,>,=,<+,?,>,=,<m,;,:+,;,:l,9,8,7+,9,8,7j,6,5,4+,6,5,4+,3,2,1+,3,2,1k,0,/,.+,0,/,.+,-+,,Lh                                                      wNone'"#%&'-./189;=>?FHIMSUVX_dghklmqCvulkanUVkRayTracingShaderGroupCreateInfoNV - Structure specifying shaders in a shader group Valid UsageIf type is -| then  generalShader must be a valid index into ::pStages referring to a shader of -, - , or -If type is -| then closestHitShader,  anyHitShader, and intersectionShader must be _If type is -z then intersectionShader must be a valid index into ::pStages referring to a shader of -If type is -{ then intersectionShader must be _closestHitShader must be either _ or a valid index into ::pStages referring to a shader of - anyHitShader must be either _ or a valid index into ::pStages referring to a shader of -Valid Usage (Implicit)sType must be pNext must be NULLtype must be a valid k valueSee Also, k, vulkankVkRayTracingPipelineCreateInfoNV - Structure specifying parameters of a newly created ray tracing pipeline DescriptionThe parameters basePipelineHandle and basePipelineIndex# are described in more detail in  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivativesPipeline Derivatives. Valid UsageIf flags contains the c> flag, and basePipelineIndex is -1, basePipelineHandle must. be a valid handle to a ray tracing oIf flags contains the c> flag, and basePipelineHandle is ., basePipelineIndex must2 be a valid index into the calling command s  pCreateInfos parameterIf flags contains the c> flag, and basePipelineIndex is not -1, basePipelineHandle must be .If flags contains the c> flag, and basePipelineHandle is not ., basePipelineIndex must be -1The stage# member of at least one element of pStages must be 3The shader code for the entry points identified by pStages>, and the rest of the state identified by this structure mustA adhere to the pipeline linking rules described in the  Xhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfacesShader Interfaces chapterlayout must be  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent$ with all shaders specified in pStagesThe number of resources in layoutC accessible to each shader stage that is used by the pipeline must be less than or equal to  _::maxPerStageResourcesflags must not include cO 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 c3 or c4flags must not include cmaxRecursionDepth must be less than or equal to ::maxRecursionDepthflags must not include cIflags must not include cJflags must not include cKflags must not include cLflags must not include cNflags must not include cMflags must not include both c` and c3 at the same timeValid Usage (Implicit)sType must be  pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of cP valuespStages must# be a valid pointer to an array of  stageCount valid  structurespGroups must# be a valid pointer to an array of  groupCount valid  structureslayout must be a valid m handle stageCount must be greater than 0 groupCount must be greater than 0Both of basePipelineHandle, and layout7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same zSee Alsoo, 6, m, , , , -vulkan[VkPhysicalDeviceRayTracingPropertiesNV - Properties of the physical device for ray tracing DescriptionIf the  structure is included in the pNext chain of O9, it is filled with the implementation-dependent limits.#Limits specified by this structure must/ match those specified with the same name in .Valid Usage (Implicit)See AlsovulkanjVkGeometryTrianglesNV - Structure specifying a triangle geometry in a bottom-level acceleration structure DescriptionIf  indexType is -}B, then this structure describes a set of triangles determined by  vertexCountP. Otherwise, this structure describes a set of indexed triangles determined by  indexCount. Valid Usage vertexOffset must be less than the size of  vertexData  vertexOffset must- be a multiple of the component size of  vertexFormat vertexFormat must be one of a, b, c, d, e , or f indexOffset must be less than the size of  indexData indexOffset must+ be a multiple of the element size of  indexType indexType must be Q,  , or -} indexData must be . if  indexType is -} indexData must be a valid  handle if  indexType is not -} indexCount must be 0 if  indexType is -}transformOffset must be less than the size of  transformDatatransformOffset must be a multiple of 16Valid Usage (Implicit)sType must be pNext must be NULLIf  vertexData is not .,  vertexData must be a valid  handle vertexFormat must be a valid G valueIf  indexData is not .,  indexData must be a valid  handle indexType must be a valid O valueIf  transformData is not .,  transformData must be a valid  handleEach of  indexData,  transformData, and  vertexData7 that are valid handles of non-ignored parameters mustD have been created, allocated, or retrieved from the same zSee Also, , G, , O, vulkanXVkGeometryNV - Structure specifying a geometry in a bottom-level acceleration structureValid Usage (Implicit)See Also, , r, l, vulkanZVkGeometryDataNV - Structure specifying geometry in a bottom-level acceleration structureValid Usage (Implicit)See Also, , vulkantVkGeometryAABBNV - Structure specifying axis-aligned bounding box geometry in a bottom-level acceleration structure DescriptionThe AABB data in memory is six 32-bit floats consisting of the minimum x, y, and z values followed by the maximum x, y, and z values. Valid Usageoffset must be less than the size of aabbDataoffset must be a multiple of 8stride must be a multiple of 8Valid Usage (Implicit)sType must be pNext must be NULLIf aabbData is not ., aabbData must be a valid  handleSee Also, , , vulkanuVkAccelerationStructureMemoryRequirementsInfoNV - Structure specifying acceleration to query for memory requirementsValid Usage (Implicit)See Also-, , , -vulkaneVkAccelerationStructureInfoNV - Structure specifying the parameters of acceleration structure object DescriptionR contains information that is used both for acceleration structure creation with -^ and in combination with the actual geometric data to build the acceleration structure with -. Valid Usage geometryCount must be less than or equal to ::maxGeometryCount  instanceCount must be less than or equal to ::maxInstanceCount0The total number of triangles in all geometries must$ be less than or equal to ::maxTriangleCountIf type is -w then  geometryCount must be 0If type is -v then  instanceCount must be 0If type is -v then the  geometryType member of each geometry in  pGeometries must be the sameflags must be a valid combination of -" valuesIf flags has the -m bit set, then it must not have the -l bit setscratch must have been created with - usage flagIf  instanceData is not .,  instanceData must have been created with - usage flagValid Usage (Implicit)sType must be pNext must be NULLtype must be a valid -  valueflags must be 0If  geometryCount is not 0,  pGeometries must( be a valid pointer to an array of  geometryCount valid  structuresSee Also, - , -%, , , -vulkan{VkAccelerationStructureCreateInfoNV - Structure specifying the parameters of a newly created acceleration structure object Valid UsageIf  compactedSize is not 0 then both info.geometryCount and info.instanceCount must be 0Valid Usage (Implicit)sType must be pNext must be NULLinfo must be a valid  structureSee Also, , , --)vulkanshaderGroupHandleSize$ size in bytes of the shader header.-*vulkanmaxRecursionDepthJ is the maximum number of levels of recursion allowed in a trace command.-+vulkanmaxShaderGroupStrideJ is the maximum stride in bytes allowed between shader groups in the SBT.-,vulkanshaderGroupBaseAlignment> is the required alignment in bytes for the base of the SBTs.--vulkanmaxGeometryCountQ is the maximum number of geometries in the bottom level acceleration structure.-.vulkanmaxInstanceCountM is the maximum number of instances in the top level acceleration structure.-/vulkanmaxTriangleCountb is the maximum number of triangles in all geometries in the bottom level acceleration structure.-0vulkan&maxDescriptorSetAccelerationStructuresc is the maximum number of acceleration structure descriptors that are allowed in a descriptor set.-2vulkantype must be a valid - value-3vulkanaccelerationStructure must be a valid  handle-5vulkan compactedSize! is the size from the result of -P if this acceleration structure is going to be the target of a compacting copy.-6vulkaninfo is the P structure specifying further parameters of the created acceleration structure.-8vulkantype is a - K value specifying the type of acceleration structure that will be created.-9vulkanflags is a bitmask of -"A specifying additional parameters of the acceleration structure.-:vulkan instanceCountS specifies the number of instances that will be in the new acceleration structure.-;vulkan pGeometries is a pointer to an array of  geometryCount U structures containing the scene data being passed into the acceleration structure.-=vulkan geometryType must be a valid l value->vulkangeometry must be a valid  structure-?vulkanflags must be a valid combination of s values-Avulkan triangles must be a valid  structure-Bvulkanaabbs must be a valid  structure-DvulkanaabbData9 is the buffer containing axis-aligned bounding box data.-EvulkannumAABBs) is the number of AABBs in this geometry.-Fvulkanstride) is the stride in bytes between AABBs in aabbData.-Gvulkanoffset- is the offset in bytes of the first AABB in aabbData.-Ivulkan vertexData8 is the buffer containing vertex data for this geometry.-Jvulkan vertexOffset is the offset in bytes within  vertexData+ containing vertex data for this geometry.-Kvulkan vertexCount! is the number of valid vertices.-Lvulkan vertexStride, is the stride in bytes between each vertex.-Mvulkan vertexFormat is a G/ describing the format of each vertex element.-Nvulkan indexData7 is the buffer containing index data for this geometry.-Ovulkan indexOffset is the offset in bytes within  indexData* containing index data for this geometry.-Pvulkan indexCount6 is the number of indices to include in this geometry.-Qvulkan indexType is a O& describing the format of each index.-Rvulkan transformData% is an optional buffer containing an -E structure defining a transformation to be applied to this geometry.-SvulkantransformOffset is the offset in bytes in  transformData/ of the transform information described above.-UvulkanpNext is NULL1 or a pointer to an extension-specific structure.-Vvulkanflags is a bitmask of cP0 specifying how the pipeline will be generated.-WvulkanpStages is an array of size  stageCount structures of type V describing the set of the shader stages to be included in the ray tracing pipeline.-XvulkanpGroups is an array of size  groupCount structures of type j describing the set of the shader stages to be included in each shader group in the ray tracing pipeline.-YvulkanmaxRecursionDepth 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.-Zvulkanlayouto 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 -z, and _ otherwise.-avulkan anyHitShader3 is the optional index of the any-hit shader from ::pStages' in the group if the shader group has type of -{ or -z, and _ otherwise.-bvulkanintersectionShader/ is the index of the intersection shader from ::pStages' in the group if the shader group has type of -z, and _ otherwise.-vulkan5vkCompileDeferredNV - Deferred compilation of shaders Parametersdevice; is the logical device containing the ray tracing pipeline.pipeline@ is the ray tracing pipeline object containing the shaders.shader' is the index of the shader to compile. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Alsoz, o-vulkanMvkCreateAccelerationStructureNV - Create a new acceleration structure object Parametersdevice6 is the logical device that creates the buffer object. pCreateInfo is a pointer to a \ structure containing parameters affecting creation of the acceleration structure. pAllocator: 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.pAccelerationStructure is a pointer to a S handle in which the resulting acceleration structure object is returned. DescriptionSimilar to other objects in Vulkan, the acceleration structure creation merely creates an object with a specific shape  as specified by the information in  and  compactedSize in  pCreateInfoV. Populating the data in the object after allocating and binding memory is done with - 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)device must be a valid z handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepAccelerationStructure must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKSee Also, , , z-vulkan`vkGetAccelerationStructureMemoryRequirementsNV - Get acceleration structure memory requirements ParametersdeviceL is the logical device on which the acceleration structure was created.pInfoJ specifies the acceleration structure to get memory requirements for.pMemoryRequirementsG returns the requested acceleration structure memory requirements.Valid Usage (Implicit)See Also, z, -vulkanAvkCmdCopyAccelerationStructureNV - Copy an acceleration structure Parameters commandBufferD is the command buffer into which the command will be recorded.dstE is a pointer to the target acceleration structure for the copy.srcE is a pointer to the source acceleration structure for the copy.mode is a tH value specifying additional operations to perform during the copy. Valid Usage[[VUID-{refpage}-mode-03410]] mode must be ,> or ,?[[VUID-{refpage}-src-03411]] src must have been built with ,C if mode is ,>Valid Usage (Implicit) commandBuffer must be a valid  handledst must be a valid L handlesrc must be a valid L handlemode must be a valid t value commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceEach of  commandBuffer, dst, and src mustD have been created, allocated, or retrieved from the same zHost SynchronizationHost 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 AlsoL, , t-vulkanCvkCmdBuildAccelerationStructureNV - Build an acceleration structure Parameters commandBufferD is the command buffer into which the command will be recorded.pInfoQ contains the shared information for the acceleration structure s structure. instanceData+ is the buffer containing an array of B structures defining acceleration structures. This parameter must be NULL* for bottom level acceleration structures.instanceOffset7 is the offset in bytes (relative to the start of  instanceData() at which the instance data is located.update! specifies whether to update the dst. acceleration structure with the data in src.dstF is a pointer to the target acceleration structure for the build.srcZ is a pointer to an existing acceleration structure that is to be used to update the dst acceleration structure.scratch is the 8 that will be used as scratch memory for the build. scratchOffset6 is the offset in bytes relative to the start of scratch' that will be used as a scratch memory. Valid Usage geometryCount must be less than or equal to ::maxGeometryCount dst must( have been created with compatible  where ::type and ::flags are identical, :: instanceCount and :: geometryCount for dstL are greater than or equal to the build size and each geometry in :: pGeometries for dstM has greater than or equal to the number of vertices, indices, and AABBsIf update is  <, src must not be .If update is  <, src must' have been built before with -o set in ::flagsIf update is  =, the size member of the .- structure returned from a call to - with ::accelerationStructure set to dst and ::type set to -g must& be less than or equal to the size of scratch minus  scratchOffsetIf update is  <, the size member of the .- structure returned from a call to - with ::accelerationStructure set to dst and ::type set to -f must& be less than or equal to the size of scratch minus  scratchOffsetscratch must have been created with - usage flagIf  instanceData is not .,  instanceData must have been created with - usage flagIf update is  <0, then objects that were previously active must" not be made inactive as per shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-primsIf update is  <2, then objects that were previously inactive must not be made active as per shttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-primsIf update is  <, the src and dst objects must0 either be the same object or not have any ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasingmemory aliasingValid Usage (Implicit) commandBuffer must be a valid  handle pInfo must$ be a valid pointer to a valid  structureIf  instanceData is not .,  instanceData must be a valid  handledst must be a valid L handleIf src is not ., src must be a valid L handlescratch must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceEach of  commandBuffer, dst,  instanceData, scratch, and src7 that are valid handles of non-ignored parameters mustD have been created, allocated, or retrieved from the same zHost SynchronizationHost 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, L, , , , -vulkan4vkCmdTraceRaysNV - Initialize a ray tracing dispatch Parameters commandBufferD is the command buffer into which the command will be recorded.raygenShaderBindingTableBufferh is the buffer object that holds the shader binding table data for the ray generation shader stage.raygenShaderBindingOffset* is the offset in bytes (relative to raygenShaderBindingTableBuffer=) of the ray generation shader being used for the trace.missShaderBindingTableBuffer^ is the buffer object that holds the shader binding table data for the miss shader stage.missShaderBindingOffset* is the offset in bytes (relative to missShaderBindingTableBuffer3) of the miss shader being used for the trace.missShaderBindingStrideB is the size in bytes of each shader binding table record in missShaderBindingTableBuffer.hitShaderBindingTableBuffer^ is the buffer object that holds the shader binding table data for the hit shader stages.hitShaderBindingOffset* is the offset in bytes (relative to hitShaderBindingTableBuffer8) of the hit shader group being used for the trace.hitShaderBindingStrideB is the size in bytes of each shader binding table record in hitShaderBindingTableBuffer. callableShaderBindingTableBufferb is the buffer object that holds the shader binding table data for the callable shader stage.callableShaderBindingOffset* is the offset in bytes (relative to  callableShaderBindingTableBuffer7) of the callable shader being used for the trace.callableShaderBindingStrideB is the size in bytes of each shader binding table record in  callableShaderBindingTableBuffer.width0 is the width of the ray trace query dimensions.height- is height of the ray trace query dimensions.depth, is depth of the ray trace query dimensions. Description8When the command is executed, a ray generation group of width height depth rays is assembled. Valid UsageIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain n&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 nIf a )| is sampled with > as a result of this command, then the image view s  rhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-featuresformat features must contain Any )| being sampled with " as a result of this command must have a (E and format that supports cubic filtering, as specified by <:: filterCubic returned by OAny )| being sampled with + with a reduction mode of either  or " as a result of this command must have a (i and format that supports cubic filtering together with minmax filtering, as specified by <::filterCubicMinmax returned by OAny )x created with a *::flags containing * sampled as a result of this command must only be sampled using a  of  For each set n% that is statically used by the oN 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 m! that is compatible for set n, with the m! used to create the current o, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???;For each push constant that is statically used by the oS 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 m; that is compatible for push constants, with the m! used to create the current o, as described in jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility???=Descriptors in each bound descriptor set, specified via  l, must2 be valid if they are statically used by the o; bound to the pipeline bind point used by this commandA valid pipeline must> be bound to the pipeline bind point used by this commandIf the oo object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for  commandBufferq, and done so after any previously bound pipeline with the corresponding state not specified as dynamicThere musts not have been any calls to dynamic state setting commands for any state not specified as dynamic in the of object bound to the pipeline bind point used by this command, since that pipeline was boundIf the oS 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 )x with a )| of the type (, (, (, ( or (, in any shader stageIf the oS 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 stageIf the oS 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 stage If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the of object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point If the  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccessrobust buffer access. feature is not enabled, and if the of object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind pointIf  commandBufferE is an unprotected command buffer, any resource accessed by the oC object bound to the pipeline bind point used by this command must! not be a protected resourceraygenShaderBindingOffset must be less than the size of raygenShaderBindingTableBufferraygenShaderBindingOffset must be a multiple of ::shaderGroupBaseAlignmentmissShaderBindingOffset must be less than the size of missShaderBindingTableBuffermissShaderBindingOffset must be a multiple of ::shaderGroupBaseAlignmenthitShaderBindingOffset must be less than the size of hitShaderBindingTableBufferhitShaderBindingOffset must be a multiple of ::shaderGroupBaseAlignmentcallableShaderBindingOffset must be less than the size of  callableShaderBindingTableBuffercallableShaderBindingOffset must be a multiple of ::shaderGroupBaseAlignmentmissShaderBindingStride must be a multiple of ::shaderGroupHandleSizehitShaderBindingStride must be a multiple of ::shaderGroupHandleSizecallableShaderBindingStride must be a multiple of ::shaderGroupHandleSizemissShaderBindingStride must be less than or equal to ::maxShaderGroupStridehitShaderBindingStride must be less than or equal to ::maxShaderGroupStridecallableShaderBindingStride must be less than or equal to ::maxShaderGroupStride0Any shader group handle referenced by this call mustL have been queried from the currently bound ray tracing shader pipeline This command must^ not cause a shader call instruction to be executed from a shader invocation with a  ihttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depthrecursion depth greater than the value of maxRecursionDepth3 used to create the bound ray tracing pipelineIf  commandBufferD is a protected command buffer, any resource written to by the oC object bound to the pipeline bind point used by this command must$ not be an unprotected resourceIf  commandBufferu is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the o. object bound to the pipeline bind point must not write to any resourcewidth must be less than or equal to  _::maxComputeWorkGroupCount[0]height must be less than or equal to  _::maxComputeWorkGroupCount[1]depth must be less than or equal to  _::maxComputeWorkGroupCount[2]Valid Usage (Implicit) commandBuffer must be a valid  handleraygenShaderBindingTableBuffer must be a valid  handleIf missShaderBindingTableBuffer is not ., missShaderBindingTableBuffer must be a valid  handleIf hitShaderBindingTableBuffer is not ., hitShaderBindingTableBuffer must be a valid  handleIf  callableShaderBindingTableBuffer is not .,  callableShaderBindingTableBuffer must be a valid  handle commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateThe ) that  commandBuffer was allocated from must support compute operations This command must1 only be called outside of a render pass instanceEach of  callableShaderBindingTableBuffer,  commandBuffer, hitShaderBindingTableBuffer, missShaderBindingTableBuffer , and raygenShaderBindingTableBuffer7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same zHost SynchronizationHost 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, , -vulkanNvkGetAccelerationStructureHandleNV - Get opaque acceleration structure handle ParametersdeviceB is the logical device that owns the acceleration structures.accelerationStructure is the acceleration structure.dataSize2 is the size in bytes of the buffer pointed to by pData.pDataP is a pointer to a user-allocated buffer where the results will be written. Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee AlsoL, z-vulkanJvkCreateRayTracingPipelinesNV - Creates a new ray tracing pipeline object ParametersdeviceC is the logical device that creates the ray tracing pipelines. pipelineCache is either .S, 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 cache^ object, in which case use of that cache is enabled for the duration of the command.createInfoCount is the length of the  pCreateInfos and  pPipelines arrays. pCreateInfos" is a pointer to an array of  structures. pAllocator: 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. pPipelines` is a pointer to an array in which the resulting ray tracing pipeline objects are returned. Valid UsageIf the flags member of any element of  pCreateInfos contains the c> flag, and the basePipelineIndex) member of that same element is not -1, basePipelineIndex must" be less than the index into  pCreateInfos! that corresponds to that elementIf the flags member of any element of  pCreateInfos contains the c> flag, the base pipeline must! have been created with the cR flag setIf  pipelineCache was created with e5, host access to  pipelineCache must be lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehaviorexternally synchronizedValid Usage (Implicit)device must be a valid z handleIf  pipelineCache is not .,  pipelineCache must be a valid n handle pCreateInfos must( be a valid pointer to an array of createInfoCount valid  structuresIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structure pPipelines must( be a valid pointer to an array of createInfoCount o handlescreateInfoCount must be greater than 0If  pipelineCache is a valid handle, it must6 have been created, allocated, or retrieved from device Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ>  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJ5See Also, z, o, n, L                           j+,6,5,4k+,0,/,.l+,9,8,7m+,;,:no+,D,C,B,A,@pq+,J,I,H,Grs+,F,Et+,?,>,=,<u,,v++,,,,,++++++++++++++-]-^-_-`-a-b-T-V-U-W-Z-[-\-X-Y-(-*-)-+-,---.-0-/-H-K-P-J-L-Q-M-I-N-R-S-O-<-?-=->-@-A-B-C-G-F-D-E-1-2-3-7-:-9-8-;-4-6-5w,K,M,T,W----------- -!-"-#-$-%-&-'-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-{-|-}-~-----------------------------D--------------------------~-}-|-{-z-y-x-w-v-u-t-s-r-q-p-o-n-m-l-k-j-i-h-g-f-----e-]-^-_-`-a-b-T-V-U-W-Z-[-\-X-Y-H-K-P-J-L-Q-M-I-N-R-S-O-C-G-F-D-E-@-A-B-<-?-=->-7-:-9-8-;-4-6-5-1-2-3-(-*-)-+-,---.-0-/-'-&-%-$-#-"-!- ----------d--cL,,,,,u,,+++++++v+++++++++,K,M,T,W                                                      q+,J,I,H,G,J,I,H,Gps+,F,E,F,Ero+,D,C,B,A,@,D,C,B,A,@nt+,?,>,=,<,?,>,=,<m+,;,:,;,:l+,9,8,7,9,8,7j+,6,5,4,6,5,4k+,0,/,.,0,/,.wgNone'"#%&'-./189;=>?FHIMSUVX_dghklmq%*Tf gh iklm no qs! t uvwz{|}BCDEFGHIJKLMN h iO j kPQRSTUVWXYZ[\]^_`abcde fghijkl mnopqrstuvwxyz{|}~ """""""""""""""""""""      a b c d e f g h i j k l m n B D G C E F H K J I ? A @                            % $ # " ! C D E F G(\(](_(^(`(aGHMNIJKL<=>?@AB","-"."/"0"1"2"3"4"5 4 5 6 7(&('((()($(%################## ) *          ]`a^_bcdefghij       ')(-0./123$%&!#" *,+      lmn VW i j k g h e f b c d W XpqrIJZ[\=>56234789:;< !"#$%&'()*+,-./0123 L M4567  8   9:;<=(K(L(M(N>?@ABClnmDopEqsrFHIGEGFHNPQOIJMKLJ-./K04213LMN    O PnoQlmRgihSefTjkU!+!,V!-!.!/W!0!1!2XstuvYyzZwx[\]^_`abABc48567d<>@=?e./2301f9:;gCDhi&&j+,6,5,4k+,0,/,.l+,9,8,7m+,;,:no+,D,C,B,A,@pq+,J,I,H,Grs+,F,Et+,?,>,=,<u,,v++w++++x+++++y,%,&,',(,),*,+z++++{,,,, ,,",#,$,,,!|+++++,,,,,},,,,, , , , , ,~+++++++++++++++,,,,,++,,,,++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ @ A B!"#$+%&'()*,-. 5 6'''''''''''''''''''''''''''''''''''''''''''''''lnmoVWX@AB*+, * +     {|}~vwxyzXZY]^[\  FGCED  +++++++++++ +!+"+#+++***********++*****+++++++******************++ + ++++ + ++ %%%%%%%%%%%%%%%%%%%%    !"#$%&'()*+,-]-^-_-`-a-b-T-V-U-W-Z-[-\-X-Y-(-*-)-+-,---.-0-/-H-K-P-J-L-Q-M-I-N-R-S-O-<-?-=->-@-A-B-C-G-F-D-E-1-2-3-7-:-9-8-;-4-6-5  ''''  x y z v w   O P S Q R L M N !"#$%&'''(''')*+,-./0123456789:;<=>XYZ[mlkjihgfedcba`_^\]nGHKLRSTU[ZXYfghiwvutsrqjk{zyxop%&'() Y Z [ \ ] ^ F G H I ] \ [ Z Y X W V J K T U t u { |         ! " ( ) , - 3 4 7 8 > ? C D J K N O U V Y Z ` a l m     ' ( + , 2 3 8 9 ? @ A B H I [ \ ] ^ s r q _ ` o p  !"#$,-./01IJKLMNOPQR[\]^_`abklmnop\]^_`abcd!" !"#$%qr{|{|}~w|-./01ABHIJKVW_`pqrstu  %&'(JIHG)*+,-EFKLMNuvwxyz{|}~+,5678CDRSTUjktuvw  4567YZ[\ponmklq$%&'()*+,-./0123456789:;<[\]^_`abcdefgjklmnopqrstu !"#$%&'()*+,-./0123456789:;CDEfghijklmnopqrstuvwx&'()-./<=>?CDERSTUYZ[hijkpqrs"! #$%&'()cdpqrstu01?@ABVWXY]^_lmnostu     /012345?@ABQCDREFUTSOPVWXY & ' ( ) * = > L M N O P Q R ` a b c d e f g l m n!)!*!3!4!5!6!W!X!Y!Z![!\!]!^!_!`!a!b!c!d!e!f!g!h!i!j!!!!!!!!!!!"*"+"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#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#####$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V%%%%%%%%%%%%%%%%%%%%&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''''''''''''''''''''((((( (!("(#(/(.(-(,(*(+(0(1(2(3(I(J(O(P(Q(V(W(X(Y(e(d(Z([(b(c(f(((((((((((((((((((((((((((()))))))))))))))))))))))))))))))))))))))))))****+-+,+++*+)+(+'+&***+.***+1+0+/+$+%+2+3+4+5+6+7+8++++,3,2,1++++++++++,,,-,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,[,\,],^,_,`,a----------- -!-"-#-$-%-&-'-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-{-|-}-~-----------------------------None'"#%&'-./189;=>?FHIMSUVX_dghklmqOvulkanVVkCommandBufferInheritanceInfo - Structure specifying command buffer inheritance info Valid Usage If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedQueriesinherited queries feature is not enabled, occlusionQueryEnable must be  If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedQueriesinherited queries feature is enabled,  queryFlags must be a valid combination of h values If the  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedQueriesinherited queries feature is not enabled,  queryFlags must be 0 If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineStatisticsQuerypipeline statistics queries feature is enabled, pipelineStatistics must% be a valid combination of Xi values If the  nhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineStatisticsQuerypipeline statistics queries feature is not enabled, pipelineStatistics must be 0Valid Usage (Implicit)sType must be Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of  or (The sType value of each struct in the pNext chain must be uniqueBoth of  framebuffer, and  renderPass7 that are valid handles of non-ignored parameters must? have been created, allocated, or retrieved from the same zSee Also, , v, T, , i, vulkanQVkCommandBufferBeginInfo - Structure specifying a command buffer begin operation Valid UsageIf flags contains z , the  renderPass member of pInheritanceInfo must be a valid iIf flags contains z , the subpass member of pInheritanceInfo must* be a valid subpass index within the  renderPass member of pInheritanceInfoIf flags contains z , the  framebuffer member of pInheritanceInfo must be either ., or a valid v" that is compatible with the  renderPass member of pInheritanceInfoValid Usage (Implicit)sType must be pNext must be NULL* or a pointer to a valid instance of The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of zi valuesSee Also, , , -vulkangVkCommandBufferAllocateInfo - Structure specifying the allocation parameters for command buffer objectValid Usage (Implicit)See Also , , , --vulkanpNext is NULL1 or a pointer to an extension-specific structure.-vulkanflags is a bitmask of zi3 specifying usage behavior for the command buffer.-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.-vulkanpNext is NULL1 or a pointer to an extension-specific structure.-vulkan renderPass is a i+ 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.-vulkansubpassG 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.-vulkan framebuffer optionally refers to the v object that the K will be rendering to if it is executed within a render pass instance. It can be .- if the framebuffer is not known, or if the 5 will not be executed within a render pass instance.NoteZSpecifying the exact framebuffer that the secondary command buffer will be executed with may@ result in better performance at command buffer execution time.-vulkanocclusionQueryEnable& 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.-vulkan 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.-vulkanpipelineStatistics is a bitmask of Xi1 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.-vulkan commandPool must be a valid  handle-vulkanlevel must be a valid   value-vulkancommandBufferCount must be greater than 0-vulkanRvkAllocateCommandBuffers - Allocate command buffers from an existing command pool Parametersdevice2 is the logical device that owns the command pool. pAllocateInfo is a pointer to a 8 structure describing parameters of the allocation.pCommandBuffers" is a pointer to an array of T handles in which the resulting command buffer objects are returned. The array must. be at least the length specified by the commandBufferCount member of  pAllocateInfoA. Each allocated command buffer begins in the initial state. Description- cany be used to create multiple command buffers. If the creation of any of those command buffers fails, the implementation mustd destroy all successfully created command buffer objects from this command, set all entries of the pCommandBuffers array to NULL and return the error.;When command buffers are first allocated, they are in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state.Valid Usage (Implicit)device must be a valid z handle pAllocateInfo must$ be a valid pointer to a valid  structurepCommandBuffers must( be a valid pointer to an array of !pAllocateInfo->commandBufferCount  handlesThe value referenced by !pAllocateInfo->commandBufferCount must be greater than 0Host SynchronizationHost access to pAllocateInfo->commandPool must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, , z-vulkan=A convenience wrapper to make a compatible pair of calls to - and -To ensure that - is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument.-vulkan+vkFreeCommandBuffers - Free command buffers Parametersdevice2 is the logical device that owns the command pool. commandPoolH is the command pool from which the command buffers were allocated.commandBufferCount is the length of the pCommandBuffers array.pCommandBuffersE is a pointer to an array of handles of command buffers to free. Description+Any primary command buffer that is in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording or executable state and has any element of pCommandBuffers recorded into it, becomes  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleinvalid. Valid UsageAll elements of pCommandBuffers must not be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending statepCommandBuffers must( be a valid pointer to an array of commandBufferCount % handles, each element of which must" either be a valid handle or NULLValid Usage (Implicit)device must be a valid z handle commandPool must be a valid  handlecommandBufferCount must be greater than 0 commandPool must6 have been created, allocated, or retrieved from deviceEach element of pCommandBuffers that is a valid handle must6 have been created, allocated, or retrieved from  commandPoolHost SynchronizationHost access to  commandPool must be externally synchronizedHost access to each member of pCommandBuffers must be externally synchronizedSee Also, , z-vulkan7vkBeginCommandBuffer - Start recording a command buffer Parameters commandBufferT is the handle of the command buffer which is to be put in the recording state. pBeginInfo points to a c structure defining additional information about how the command buffer begins recording. Valid Usage commandBuffer must not be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording or pending stateIf  commandBuffer was allocated from a  which did not have the yj flag set,  commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial stateIf  commandBuffer) is a secondary command buffer, the pInheritanceInfo member of  pBeginInfo must be a valid  structureIf  commandBuffer3 is a secondary command buffer and either the occlusionQueryEnable member of the pInheritanceInfo member of  pBeginInfo is D, or the precise occlusion queries feature is not enabled, the  queryFlags member of the pInheritanceInfo member  pBeginInfo must not contain If  commandBuffer( is a primary command buffer, then pBeginInfo->flags must not set both the zf and the zg flagsValid Usage (Implicit) commandBuffer must be a valid  handle pBeginInfo must$ be a valid pointer to a valid  structureHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the  that  commandBuffer was allocated from must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee 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 first argument. To just extract the pair pass '(,)' as the first argument.$Note that there is no inner resource-vulkan6vkEndCommandBuffer - Finish recording a command buffer Parameters commandBuffer- is the command buffer to complete recording. DescriptionuIf there was an error during recording, the application will be notified by an unsuccessful return code returned by -T. If the application wishes to further use the command buffer, the command buffer must be reset. The command buffer must have been in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording state, and is moved to the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleexecutable state. Valid Usage commandBuffer must be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording stateIf  commandBuffer$ is a primary command buffer, there must+ not be an active render pass instanceAll queries made  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-activeactive during the recording of  commandBuffer must have been made inactiveConditional rendering must not be jhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-renderingactiveIf  commandBuffer& is a secondary command buffer, there must! not be an outstanding  command recorded to  commandBuffer; that has not previously been ended by a call to If  commandBuffer& is a secondary command buffer, there must! not be an outstanding  command recorded to  commandBuffer; that has not previously been ended by a call to Valid Usage (Implicit) commandBuffer must be a valid  handleHost SynchronizationHost access to  commandBuffer must be externally synchronizedHost access to the  that  commandBuffer was allocated from must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also-vulkanBvkResetCommandBuffer - Reset a command buffer to the initial state Parameters commandBuffer9 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.flags is a bitmask of @& controlling the reset operation. Description+Any primary command buffer that is in the  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecyclerecording or executable state and has  commandBuffer recorded into it, becomes  fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycleinvalid. Valid Usage commandBuffer must not be in the fhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state commandBuffer mustE have been allocated from a pool that was created with the yjValid Usage (Implicit) commandBuffer must be a valid  handleflags must be a valid combination of @ valuesHost SynchronizationHost access to  commandBuffer must be externally synchronized Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJSee Also, ?----------------------------------------------None'"#%&'-./189;=>?FHIMSUVX_dghklmq vulkanZVkBufferCreateInfo - Structure specifying the parameters of a newly created buffer object Valid Usagesize must be greater than 0If  sharingMode is , pQueueFamilyIndices must( be a valid pointer to an array of queueFamilyIndexCount uint32_t valuesIf  sharingMode is , queueFamilyIndexCount must be greater than 1If  sharingMode is , each element of pQueueFamilyIndices must be unique and must be less than pQueueFamilyPropertyCount returned by either  e or Of for the physicalDevice that was used to create device If the  dhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseBindingsparse bindings feature is not enabled, flags must not contain ~9 If the  lhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyBuffersparse buffer residency feature is not enabled, flags must not contain ~ If the  mhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyAliasedsparse aliased residency feature is not enabled, flags must not contain ~If flags contains ~ or ~ , it must also contain ~9If the pNext chain includes a  structure, its  handleTypes member must. only contain bits that are also in K1::.externalMemoryProperties.compatibleHandleTypes, as returned by KT with pExternalBufferInfo->handleType= equal to any one of the handle types specified in :: handleTypes0If the protected memory feature is not enabled, flags must not contain ~MIf any of the bits ~9, ~, or ~ are set, ~M must not also be setIf the pNext chain includes a  structure, and the dedicatedAllocation) member of the chained structure is , then flags must not include ~9, ~, or ~If :: deviceAddress is not zero, flags must include ~kIf !::opaqueCaptureAddress is not zero, flags must include ~kIf flags includes ~k, the  whttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressCaptureReplay bufferDeviceAddressCaptureReplay or  zhttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressCaptureReplayEXT"::bufferDeviceAddressCaptureReplay feature must be enabledValid Usage (Implicit)sType must be 4Each pNext: member of any structure (including this one) in the pNext chain must be either NULL/ or a pointer to a valid instance of , !, , or The sType value of each struct in the pNext chain must be uniqueflags must be a valid combination of ~6 valuesusage must be a valid combination of }l valuesusage must not be 0 sharingMode must be a valid  valueSee Also*, , , , , --vulkanpNext is NULL1 or a pointer to an extension-specific structure.-vulkanflags is a bitmask of ~61 specifying additional parameters of the buffer.-vulkansize2 is the size in bytes of the buffer to be created.-vulkanusage is a bitmask of }l* specifying allowed usages of the buffer.-vulkan sharingMode is a g value specifying the sharing mode of the buffer when it will be accessed by multiple queue families.-vulkanpQueueFamilyIndicesG is a list of queue families that will access this buffer (ignored if  sharingMode is not ).-vulkan+vkCreateBuffer - Create a new buffer object Parametersdevice6 is the logical device that creates the buffer object. pCreateInfo is a pointer to a G structure containing parameters affecting creation of the buffer. pAllocator: 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.pBuffer is a pointer to a > handle in which the resulting buffer object is returned. Valid UsageIf the flags member of  pCreateInfo includes ~9, creating this  must| not cause the total required sparse memory for all currently valid sparse resources on the device to exceed  _::sparseAddressSpaceSizeValid Usage (Implicit)device must be a valid z handle pCreateInfo must$ be a valid pointer to a valid  structureIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structurepBuffer must be a valid pointer to a  handle Return Codes  ghttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodesSuccessQ  ehttps://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodesFailureKJPSee Also, , , z-vulkan=A convenience wrapper to make a compatible pair of calls to - and -To ensure that - is always called: pass 'B (or the allocate function from your favourite resource management library) as the first argument. To just extract the pair pass '(,)' as the first argument.-vulkan)vkDestroyBuffer - Destroy a buffer object Parametersdevice0 is the logical device that destroys the buffer.buffer is the buffer to destroy. pAllocator: 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. Valid Usage%All submitted commands that refer to buffer , either directly or via a ){, must have completed executionIf  were provided when buffer1 was created, a compatible set of callbacks must be provided here If no  were provided when buffer was created,  pAllocator must be NULLValid Usage (Implicit)device must be a valid z handleIf buffer is not ., buffer must be a valid  handleIf  pAllocator is not NULL,  pAllocator must) be a valid pointer to a valid  structureIf buffer is a valid handle, it must6 have been created, allocated, or retrieved from deviceHost SynchronizationHost access to buffer must be externally synchronizedSee Also, , z ---------- ----------None'"#%&'-./189;=>?FHIMSUVX_dghklmqi Y !!! ! !!jklmnop ; = <------- ----------------'"'#'$'%'&'''(&&&&&&'' '! &'''''!''''''"' ' '''#''''$&&&&%'' '''' ' &''''' (&v&w&{&y&z&x&|&}&~)&e&g&f&h*&i&j&k&l&m+&Y&Z&\&[,&b&c&d-&]&_&^&`&a.&&&&/&&&&0&n&s&t&u&r&o&p&q1&G&J&I&H&K2&@&B&A&D&E&C&F3%#%$%%%&%'4$$$$$$5%4%5%6%7%8%9%:%;%<%=6%%% %!%"7$e$j$f$g$h$i$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$8$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%% % % % % 9%%%:%%%;%(%*%)%+%,%-<%%%%%%=%%%%>%.%3%/%0%1%2?@ABCDEF _ b a `G [ L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                            ~ } | { z 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 ` _ ^ ] \HIJ 7 J I H G F E D C B A @ ? > = < ; : 9 8K - 0 / .L # & % $MNO PxQRSTUVWXaihgfedcbY*QPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+Z[[ba`_^]\\]     ^_`a b c$W$Y$Xdef gh ijklm no pqrs! t uvwxyz{|}~#w#y#x#z#{#|#####}###~##########""""""""""""" """""""" "f"g"h"T"U"\"V"W"Z"["X"Y"]"O"P"Q"R"S"I"K"N"J"L"M"E"F"G"H"^"e"d"c"_"`"a"b!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""*^*`*_*a*Y*Z*]*[*\*********t*w*v*u*p*r*s*q*G*I*H*J*K*T*V*U*W*X*L*N*M*O*i*n*k*j*l*m*o*:*C*D*E*F*<*;*=*>*?*@*A*B*1*3*2*4*5*6*7*8*9*P*Q*R*S*** * *** * *******!*'*#*"*&*%*$*(*)***+*,*-*.*/*0)))*)*** * )))*******b*d*c*e*f*g*h !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)+ABCDEFG/0341256789:;<=>?@,-.#######################################efhgoptsrq{|~}43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      pq|{zyxwvutsr                  Q R T S i j z y x w v u t s r q p o n m l k                  # $ ' & % . / 2 1 0 9 : > ?<=>FGOPQSRjklmuvw|{zyx  $%-.678JIHGFEDCBA@?>=<;:9RS[\]^fghponmlkji&'( %&')(  "! *+,10/.-9:;<DEFba`_^]\[ZYXWVUTSRQPONMLKJIHGvwxyz{|}~ !!!!!!!!!!!!!!!!!"""" " " " """"""""""""#######$Z$[$\$]$^$_%>%?%@%A%B%C%D%E%F%G%H%I&L&M&N&&&&&&&&&&&')'*'+','-'.'/'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*x*y*z*{*|------------mNone'"#%&'-./189;=>?FHIMSUVX_dghklmqC !!! ! !!jklmnop ; = <------- ----------------'"'#'$'%'&'''(&&&&&&'' '! &'''''!''''''"' ' '''#''''$&&&&%'' '''' ' &''''' (&v&w&{&y&z&x&|&}&~)&e&g&f&h*&i&j&k&l&m+&Y&Z&\&[,&b&c&d-&]&_&^&`&a.&&&&/&&&&0&n&s&t&u&r&o&p&q1&G&J&I&H&K2&@&B&A&D&E&C&F3%#%$%%%&%'4$$$$$$5%4%5%6%7%8%9%:%;%<%=6%%% %!%"7$e$j$f$g$h$i$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$8$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%% % % % % 9%%%:%%%;%(%*%)%+%,%-<%%%%%%=%%%%>%.%3%/%0%1%2?@ABCDEF _ b a `G [ L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                            ~ } | { z 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 ` _ ^ ] \HIJ 7 J I H G F E D C B A @ ? > = < ; : 9 8K - 0 / .L # & % $MNO PxQRSTUVWXaihgfedcbY*QPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+Z[[ba`_^]\\]     ^_`a b c$W$Y$Xdef gh ijklm no pqrs! t uvwxyz{|}~#w#y#x#z#{#|#####}###~##########""""""""""""" """""""" "f"g"h"T"U"\"V"W"Z"["X"Y"]"O"P"Q"R"S"I"K"N"J"L"M"E"F"G"H"^"e"d"c"_"`"a"b!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""*^*`*_*a*Y*Z*]*[*\*********t*w*v*u*p*r*s*q*G*I*H*J*K*T*V*U*W*X*L*N*M*O*i*n*k*j*l*m*o*:*C*D*E*F*<*;*=*>*?*@*A*B*1*3*2*4*5*6*7*8*9*P*Q*R*S*** * *** * *******!*'*#*"*&*%*$*(*)***+*,*-*.*/*0)))*)*** * )))*******b*d*c*e*f*g*h !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)+ABCDEFG/0341256789:;<=>?@,-.#######################################q|{zyxwvutsr"&%$#23456!k!o!l!m!n!p!t!q!r!s y z { | } ~ )))))))))))))))))))){|}~yzYZUVWXUV!I!J!K!E!F!G!H$ $!$"$#$$$%$&$'$($)$*$+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&##"" """#"##### "" "" "" ) )))))))))))))))))):);)) )!)")#)$)%)&)')()))*)+),)-).)/)0)1)2)3)4)5) ) ) ) )<)6)7)8)9)=)>)h)i)j)`)a)F)G)D)E)b)A)B)C)^)I)J)K)L)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)d)_)e)f)g)c)?)@)H)])k)l)m)n)t)x)y)z)o)p)q)r)s){)|)})u)v)w)~))))))))))))789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc123456~xy vw!z{"|}#(}$((((((((((%(((((((((&(~('((((((((((((()(((((((((((*((((+(((((,-. S T/=>0HI1FG2?BCE@AD3vw4tu5qrs6cde7STU823456789:;<=>?@ABC9%&:;<=>?@A    BCDEFGHIJKLMN h iO j kPQRSTUVWXYZ[\]^_`abcde fghijkl mnopqrstuvwxyz{|}~ """""""""""""""""""""      a b c d e f g h i j k l m n B D G C E F H K J I ? A @                            % $ # " ! C D E F G(\(](_(^(`(aGHMNIJKL<=>?@AB","-"."/"0"1"2"3"4"5 4 5 6 7(&('((()($(%################## ) *          ]`a^_bcdefghij       ')(-0./123$%&!#" *,+      lmn VW i j k g h e f b c d W XpqrIJZ[\=>56234789:;< !"#$%&'()*+,-./0123 L M4567  8   9:;<=(K(L(M(N>?@ABClnmDopEqsrFHIGEGFHNPQOIJMKLJ-./K04213LMN    O PnoQlmRgihSefTjkU!+!,V!-!.!/W!0!1!2XstuvYyzZwx[\]^_`abABc48567d<>@=?e./2301f9:;gCDhi&&j+,6,5,4k+,0,/,.l+,9,8,7m+,;,:no+,D,C,B,A,@pq+,J,I,H,Grs+,F,Et+,?,>,=,<u,,v++w++++x+++++y,%,&,',(,),*,+z++++{,,,, ,,",#,$,,,!|+++++,,,,,},,,,, , , , , ,~+++++++++++++++,,,,,++,,,,++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ @ A B!"#$+%&'()*,-. 5 6'''''''''''''''''''''''''''''''''''''''''''''''lnmoVWX@AB*+, * +     {|}~vwxyzXZY]^[\  FGCED  +++++++++++ +!+"+#+++***********++*****+++++++******************++ + ++++ + ++ %%%%%%%%%%%%%%%%%%%%    !"#$%&'()*+,-]-^-_-`-a-b-T-V-U-W-Z-[-\-X-Y-(-*-)-+-,---.-0-/-H-K-P-J-L-Q-M-I-N-R-S-O-<-?-=->-@-A-B-C-G-F-D-E-1-2-3-7-:-9-8-;-4-6-5  ''''  x y z v w   O P S Q R L M N !"#$%&'''(''')*+,-./0123456789:;<=>?@ABCDEFGXYZ[mlkjihgfedcba`_^\]n   &')(0132:;@?>=<GHJIQRTS[\^]efhgoptsrq{|~}43 =>@?<;:98765210/.-,+*)('&%$#"!     ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      GHKLRSTU[ZXYfghiwvutsrqjk{zyxop%&'()`pq|{zyxwvutsr                  Q R T S Y Z [ \ ] ^ i j z y x w v u t s r q p o n m l k                  # $ ' & % . / 2 1 0 9 : > ? F G H I ] \ [ Z Y X W V J K T U t u { |         ! " ( ) , - 3 4 7 8 > ? C D J K N O U V Y Z ` a l m     ' ( + , 2 3 8 9 ? @ A B H I [ \ ] ^ s r q _ ` o p  !"#$,-./01IJKLMNOPQR[\]^_`abklmnop     ./0321;<=>FGHMLKJI\]^_`abcdefgih!"<=>FGOPQSRjklmuvw|{zyx  $%-.678JIHGFEDCBA@?>=<;:9RS[\]^fghponmlkji !"#$%&'(qr{| %&')({|}~  "! *+,10/.-9:;<DEFba`_^]\[ZYXWVUTSRQPONMLKJIHGvwxyz{|}~-./01ABHIJKVW_`pqrstu  %&'(JIHG)*+,-EFKLMNuvwxyz{|}~+,5678CDRSTUjktuvw  4567YZ[\ponmklq$%&'()*+,-./0123456789:;<[\]^_`abcdefghijklmnopqrstu !"#$%&'()*+,-./0123456789:;CDE[fghijklmnopqrstuvwx&'()-./<=>?CDERSTUYZ[hijkpqrs"! #$%&'()cdpqrstu01?@ABVWXY]^_lmnostu     /012345?@ABQCDREFUTSOPVWXY & ' ( ) * = > L M N O P Q R ` a b c d e f g l m n !)!*!3!4!5!6!L!W!X!Y!Z![!\!]!^!_!`!a!b!c!d!e!f!g!h!i!j!u!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#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v############$,$-$.$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$Z$[$\$]$^$_%>%?%@%A%B%C%D%E%F%G%H%I%%%%%%%%%%%%%%%%%%%%%%%%%%%&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&L&M&N&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&')'*'+','-'.'/'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'''''''''''''''''''''''''''''((((( (!("(#(/(.(-(,(*(+(0(1(2(3(I(J(O(P(Q(V(W(X(Y(e(d(Z([(b(c(f((((((((((((((((((((((((((((((((()))))))))))))))))))))))))))))))))))))))))))))))))*x*y*z*{*|****+-+,+++*+)+(+'+&***+.***+1+0+/+$+%+2+3+4+5+6+7+8++++,3,2,1++++++++++,,,-,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,[,\,],^,_,`,a----------- -!-"-#-$-%-&-'-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-{-|-}-~----------------------------------------nNone'"#%&'-./189;=>?FHIMSUVX_dghklmqU...... . . . opqrstuvwxyz{|}~  *          Z             p ` _    j  W z2eh !!""s##$%(&'9(()})s))))r)z)~))))q)))|)x))u)y)))v))))))t){)w***+[+,-n-l./o/R/3/4//0k00+0@00111a1111111 1111111G123345A66738;99999999::::~::::;<<+==>>????@ABBCqCpDDEmEEEEFFGGH)II2J6J5J+KKKK8K4K1L/MM8NN?NyNVNSNO>O#OOOOOOQO=P.PPPP]QQ R/RRS5S4SSSUSTUVVVVWWW W WXYYZ[W\]]w]]]^E^C^B^^,^^_D_``aPb)bb?b>cccdefghQh:hh9hhijkkkkkkkkkkklmOmnnnnooooppppqrrrrsssstu vvvvwxyyyyzzzz{{{{|||}}}}~Ps^3YM#Fvb<-KJHJKONM'\ x{20| R<STT@!}i&@?$_:`;*trazuc-7e8f0%"! IG ~ [  '&$  =LNXVWY]^LkU\ZEA" hgIHCB7,d. ! !"#"#$%$%&'(%FE(D )*)*+,+,-./012123X45456767189:;<=>f?A@ABCDEFGHIJKLMNOPQR S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g g e f 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 5 6 7 8 9 : ; < = > ? @ @ A B C D E F G H I I J K L M N O P Q R R S T U V W X Y Y Z [ \ ] ^ _ ` a b c d e f g h i j k 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 3 4 6 7 8 9 : ; < = =T > ; < ? @ A B C D E F G H I J K L M M N NS O P K L 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 l m r s t u v w x y y z w x { | } ~  w w ww w w w w w w w w w w w w w w w w w w w w u u u u u u u u u u u u u u u u u u u u u q q q q qq q q q q q q q q q q q q q q q q          ?        h        ]      a_                                    5                                     #,  C)+*      ! !! !!!!!!! "! #!! $!!! %! &! '! (! )! *" +" +""""" ," -" ." /" 0" 1#K#K#L# 2# 3# 4# 5# 6# 7 8 9 : ; < = > ?$ @$ @$ A$ B$ C$ D$ E$ F$ G$ H$ I$ J$ K% L% 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%F% s% t% u% v% w% x& y& y& z& {& |& }& ~& & & & & & & & & & & & & & & & & ' ' ' ' ' ' ' ' ' ( ( ( ( ( ( (( (( \9Q      (((((((((c( ( ( ( ( (             }~c{|b      )U)U)S)T) ) ) ) ) )                                         !"#$%&'()*+,-YXWVUTSRQPONMLKJIHGFEDCBA@?>                     =     ab<c !"#f$d%&'(e)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoEpqrstuaPavawaxayaz*{*|*}*{*|*~\+++D++++++H++++C++++B+A++++++,,,7,I,,,,,,,,,,,,,,,,,---------------................///d///////000000000000001111 1!1"1#1$1%1&1'1(1)1*111111111111+1,1-1.1/1011121111131415161718191:1;1<1=11111111111222222222222222222222222222333333333334444G4444444:     3 !"#$%&'()*+,-./0123456789:67;<=>?@ABCDEFGEFHIJKLMN OPMNQRSTUVWXYZ[\]]^^_`ab[\cdefghijklmnopqrstuvwxyzxy{|}~ L        !"#$"#%&'()*+,-./0*+123456789:;<=>>?@ABC;<DEFGHIJKLMNOPQRSTUVWXYZXY[\]^_`abxcdabefghijklmnopq\rstuvwxyzop{|}~ Y    ~~~P~~~~~~~~xxxx x xx!x"xxx#x$x%x&x'x(x)x*x+x,x-x.t/t0t1t2t2tt3t/t0t4t5t6t7t8t9t:t;t<t=t>t?l@lAllBl@lAlClDlElFlGjjHjIjJjKjLjMjNjO5P5Q5R5P5Q5SiiTiUiViWiXiY6Z6[6\6Z6[6]gg^g_g`gagbgc7d7e7f7d7e7gffhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzf{f|f}8~8888~88888eeeeeeee99999999dddddddd::::::cccccccccccccccccccccc;;;;;;;;;;;;;;\\\\\\\\\<<<<<<ZZZZZZZ======>>>>>>>>>>>?? ? ??? ? ?m???????@@@@ @@@8@@@@@@@UUUUUUUUUUAAAAAAAATTTTTTTTTAAAAAAAAA A B B B B B BCC C CCCCCCCCCCCCCCCCDDDDD D!D"D#D$D%D&=='=(=)=*=+=,=-=.=/=0=1E2E3E3EOEE4E5E6E7E8E9E:E;F<F F F=F>F?F@FAFBFCFDGEGbGbGGGGGGFGGGHGIGJGKGLL/LMLNLOLPLQLRHSHTHUHVHWHSHTHXHYIZI[I[I\I]I^I_I`IaIbIcId<+<e<g<h<i<=<<<<<;<:<><f<g<h<i<j<k<lJmJnJnJoJpJqJrJsJtJuJvJwJxKyKjKjK"KKK!KzK{K|K}K~KKH)HHHHHHLLLLLLLLLMMMMMMMMMMMMNNNNNNNNN;;;;;;;;OOtOtOOqOrOlOOOOOOO###########PPPPPPPPPPPQQQQQQQQQQQQQ"s"V"["Z"W"Y"X"""""t""""""""""""@@@@@@@@@@RRRRRRRRRRSSSSSSSSSTTbTbTTTTTT T T T !! !!!!!!n!!!!!!!UUUUsUUUUUUUVVVVV V!VpVoV"V#V$V%V&V'V()*+,-./0123W4W4W5W6W7W8W9W:W;X<XiXiX=X>X?X@XAXBXCXDXEXFXGXHXIXJXKXLXMXNhOPQRSTUYVYVYWYXYYYZY[Y\Y]Z^Z^Z_Z`ZaZbZcZdZe[f[f[g[h[i[j[k[l[menopqrstuvw\x\\\q\r\y\z\{\|\}\~\]]]]]]]]]^^^^^^^^^_________`````````aaaaaaaaabbbbbbbbbccPcPcccIcJcKcLcMcNc`cccOcc3c4c>cRccccccccdddddddddeeJeJe5eeeeeeeffffNffffffffffffffgggggggggggghhhhhhhhhiiiiiiiiiii[W[[[[[[jjjjjj2Q u    kkkkkkk k k k kk[kZkkkkkkkkPPP]PPPP.PPPPPPPPPP P!P"P#P$P%P&P'P(P)P*P+P,P-P.P/P0P1P2P3l4l5l6l7l8l9l:l;l<l4l5l=l>l?l@lAlBlClDlElFlGlH9I9J9K9L9M9N99O9P99Q9R9S9T9U99V9W9X9Y99Z9[9\99]9^99_9`9a99b9c9d9e9f9g9h9i9j9k9l9m9n9o9p9q9r9s9t9u9v9w9x9y9z9{9|9}9~99999999999999mmmmmmmmmmmnnnnnnnn^nnnnnnn]nnnnnpn@nonnnXnVnnnnnnnnnn<YYYYYYYYYYYYYYYooooooooooooopppppppppppqqqqqqqqqrrrrwrrrrrrrssssssssstttt6tHttttttt    u uuuuuuuuuuuW WW WWWWWWWWWWWWW W!W"W#W$W%W&W'W(W)W*W+W,W-W.WW/W0W1W2W3W4W5W6W7W8W9W:W;W<W=W>W?W@WAWBWCWDWEWFWGWHWIWJWKWLWMWNWOWPWQWRWSWTWUWVWWWXWYvZv[v\v]v^v_v`vavbvZv[vvcvdvevfvgvhvivjvkvlvmznxwopqrstuR/RvRwRxRRyRzRR{R|R}R~RRRRRRRRRRRRRwwwwwwwwwwwxxxxxxxxxxxxxxyySySyRyjyyyyyyyyzzizizgzzfzzzzzzz{{{{{{{{{{{{{{|||||||||}}l}l}`}%}&}/}^} }}}}}U}T}1}}}}}}}}~~6~6~M~k~~~9~~~~~~~yy;0     uvk$D _!"#$%.uvk$D &'('()*+,)*-./01``2`3`4`5``6`7`8`9`:`;`<`=`>`?`@`A`BCDEFGCD!"HIJKLMNOPQRSTJ+JUJ5JVJ6JWJXJYJZJ[J\J]J^J_J`JaJbJcJdJeJfghijkgh$7lmn))))z)y)s)u)))))~))})|)x){)w))v)t)o)p)r)q)r))s)t)q)u)v))w)x)y)z){)|)})~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))X     -/0 !."#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^&_`abcdefghijklmno]^pqrstuvwxyz{|}~"0AjOE     Z\} !"#$%W&'()*$%+,-./01/023456788 9:;<=>?@ABCDEFGHIJKLM67NOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{||}~~j ~yz.-Gd80f     7e !"#$%u&'z(-)*+c,-.$%e/0123456789:;<=>?@ABCDtEFrGaHICDcJKLMNOPQRSTUVWXYZ;[\*]^_``abcdYZefghijklmnopqrstu:vw_xyz{tu|}~ 8:r|02v      GF !"#$%&'())*+,-./&'0123456789:;<=>?@ABCDEFGHIJHIKLMNNOPQRSTUVWXY|Z|[|||\|]|^|_|`|a|b||c|d|e|f|g|Z|[|h|i|j|n|k|l|m|n|o|p|q|r|s|t|u|v|w|x|yz{z{h9h|h}h:h~hhhQhhhhhhhhhh,hhhhhhhhhhhhhhhhhhhhhhhhhhhhhh-b)bb>bbbbbbb?bbbbbbbbbbbbbbbbbbbb]]]w]]]]]]]]]]]]a]]]]]]]]]]]]]]]]]]]]]]]]]YP[Z        !XX"X<X#X$X%X&X'()*()+=k,-.,-/012lKK3K4K5K6K7K1K8KK9K:K;K4K<KK=K8K>K?K@KTKAKBKCKDKEKFKGKHKIKJKKKLKMKNKOKPKQKRKSKTKUKVKWKXKYKZK\]^_`abcdefgh]^%ijklmnopqrstUuvwvxbyzuvd{|}~I2IIIIIIVIIIIIIIIIIWGGGGGGGzGGGGGGGGG#{CpCCCqCCCCCCCCCCCC???????????/????????????????????>>>>>>>>>>>>>>kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk k k k k kkkkkkkkkkkkkkkkkkk k!k"k#k$k%k&k'k(k)k*k+k,k-k.k/k0k1k2k3k4k5k6k789::U;<89=>?@ABCDEFGHIJKKkLMIJNOPQRSTUVWXYZ[\\L]^Z[_`abcdefghijklmm^nopklvqrstuvwxyz{|}~]}~uYtVs=&?@SQMJL      !"#$%&'()*+,-./0123456 7!89:";%<56RPIK=>?@ABCDEFGHIJKLMNOPQRSTRSUVWXYZ[\]]^_[\`abcdefghijklmnooppqqrrstuvw}xyz{|}!~ilm5@T     <R' !"#$%&'()*+,-./0123455{673489:;<=>?@ABCDEFFKGDEHIJKLMNOPQRSTUJVWXYZ[\]^_TU`abcdefghijkllFmnopqrstuvwijxyz{|}k~% moqM#)*x134|      !"#$%&'()*+,-./0123456789:45;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd yefghijklmnopqrstuvwxyz{|}~wxDwmmmOmmmmmm mmmmmmmmmmDDDDDDDDDDDDDDDDDDDDDDDDDDDD3333333333333333333322222i222j2@22222.............,,,,,,,F,,,,,%(%%%%%%%%%%%%             &&&&&E&&&& &                                  ! " # $ % & ' (I )G * + , - ' (ln . / 0 1 2 3 4 5 6 7 8 9 : ;M8M <M =M >MM ?M @MXM AM BM CM DM EM FM GM HM IM J K L M N O P Q R K L S T U V W X Y Z [YBB \B ]B ^B _BB `B aB bB cBBB dB eB fB gB hB iB jB kB lB m n o p q n o r s t8;8 u8 v8 w88 x8$8 y8 z8 {8 |8 }737 ~7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 77 7 7 7 7 7 7 666 6 66 6#6 6 6 6 6 5A5 5 5 5 5 5.55655 5 5 5 5 44 4 4 4 4 44 444 4 4 4 4 0@0 0 0 0 0 0 0 0+0 0 0 0 0 00 0 0 0 0 0 0 0k0 0 0 0 0 0 0 00 0 00 0 0 0 0 0 0 0 0 00 000 000 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   -     !!!!!!!!!! ! ! //! /! /!/4/!/!/!/!/!/3/!/!/!/!/R/!/!/!/!/!/!/!/!/! //!!/!"/!#/!$/!%/!&/!'/o/!(/!)/!*/!+/!,/!-/!./!//!0/!1/!2/!3/!4/!5/!6/!7/!8/!9/!:/!;/!</!=/!>/!?/!@/!A/!B/!C/!D/!E/!F/!G-l-!H-!I-!J-n-!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!q3!r!s!t!u!v!w!x!y!zs!{!|!}!~!^!!p!q!!!!!!!!!!!!!!!!!!!!!!!!!!!!!S4S!SS!SUS!SS!SS!S!S!S!S!S!S!S!S!S5S!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!S!S!S!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""""""""" " " " " """"""""**"*"*"*"*"**"*"*"*"*"*"*" *"!*""*"#*"$*"%*"&**"'*"(*")**"****"+*",*"-*".*"/*"0*"1*"2*"3*"4*"5*"6*"7*"8*"9":";O"<M"=">N"?"@"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:"{:"|:"}:"~::":":":::2:":":":":":":":":":":":":":":":":":":":":":":":":":":":":":":":":":"N?N"NyN"N"NVN"NSN"N"NN"NNNN"N"N"N"N"N"N"N"N"N"N"N"N"N"N"N"N"N"N"N"N"N"N"N""""""""""""""'9'"'"''"'''''"'"'"'"'" _ " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #! #" ## #$ #% #& #' #( #) #* #+ #, #- #. #/ #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 #{  #| #} #~ # # W # # #  # #  # # ` # # # #  # # # # j # # # # #  # # # # # p # # # # # # # # #  #  H    e ^ Z   # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #######################################.##d$$##$$$$$$$$ $ $ $ $ ,$7$$ $ $$$$$$$$$$OO$O$O$O$O$O>O$OO$ O$!O#O$"O$#OO$$O$%O$&O$'O$(O$)OQO$*O$+O=O$,O$-OO$.O$/OO$0O$1O[ObOOOfO_OhO$2O$3O$4O$5O$6O$7O$8O$9O$:O$;O$<O$=O$>O$?O$@O$AO$BO$CO$DO$EO$FO$GO$HO$IO$JO$KO$LO$MO$NO$OO$PO$QO$RO$SO$TO$UO$VO$WO$XO$YO$ZO$[O$\O$]$^$_$`$a$b$c$d$e$f$g$h$^$_$i$j$k$l$m$n$o$p$q\c]g`i  $r $s $t $u $v $w  $x $y $z ${  $|  $} $~ $ $ $ $ $ $ $ $  $ $ $  $ $ $ $  $ $  $ $ $  $ $ $ $  $ $ $ $ $ $ $ Z $ $ $ $ $ $ $ $  $ $ $  $ $ $  $   $    $  ] $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $$$$$$o?$$$$$$$$$$$$$$$$$$\Q Q$Q$QQ$Q$QQ$Q$Q$Q$Q$Q$Q$Q$Q$Q$$$$$$$%%  % % % * % % % % %  % % % % %  % % % % % %  % % % %  % % % % %  % % %  %! %" %#  %$ %%  %& %' %( %) %* %+ m          l         _         |      7 %, 9 ; x  >  %-    %. %/ %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%Z1%[%W%X%\%]%^%_%`%a%b%c%d%e%f%g%h%e%f%i%j%k%l%m%n%o%p%q%r%s%t%u%u%v%w%x%y%z%{%|%}%~%X%%%%%%%%N%%%%%%%%%%%%%%%%%r%s%%%%%%%&a%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%H%K%J%%%e%%%p%%%%%%%%%%%%%%%%%%%%%%%$%%%%%%%%%%%%%&&&&%%&&&&&& & & & & &&&&&&&&&&&&&&^E^^&^,^&^&^&^& ^&!^&"^B^&#^&$^&%^&&^&'^&(^&)^&*^C^&+^&,^&-^&.^&/^&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&f&g&o&p&q&r&s&t&u_D_&v_&w_&x__&y_&z_&{_&|_&}_&~_&_&_&_&_&_&_&&&&&&&&&&&&&&&&VV&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&VV&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&VV&V&V&V&V&V&V&V&V&V&V'V'V'V'V'VV'V'V'V'V' V' V' V' V' V'V'V'V'V'V'V'V'V'V'V'V'V'V'V'V'V'V'V' V'!V'"V'#V'$FF'%F'&FF''F'(F')F'*F'+F',F'-F'.F'/EE'0E'1EE'2E'3E'4EE'5EE'6E'7EmE'8E'9E}EEE~E':E';E'<E'=E'>E'?E'@E'AE'BE'CE'DE'EE'FE'GE'HE'IE'JE'KE'LE'ME'NE'OE'P'Q'R'S'T'U'V'W'X'Y'Z'['\']'Q'R'^'_'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n1G1'o1'p1'q1'r1's1't1'u1'v1'w1'x1'y1'z1'{1'|1'}1'~1'11'1'1'1'1'1'1'1'1'1'1a1'1'1'1'1'1'1'11'1'11'1'1'1'1'1'11'1'1'1'1'1'1'1'11'1'1'1'1'1'1'1'1 1'1'1'1'1'1'1'1'1'1'1'1'11'1'1'1'11'1'1'11'1'1'11'1'1'1'11'1'1'1'11'1'1'11'1'1'1'1'1'11'1'1'1'1'1'11'1'1'11'1'1'1/1'121'11'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(01(11(21(31(4(5(6(7(7(8(9(9(:(;(;C(<(=(>(?B(@(A(B(C(D(E(F(G(H(I(J(Kg(L(M(N(Oh(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(eH(f(gI(h(i(j(k(l(m(n(o(p(q(r(s(t(5(6(u(v(w(x(y(z({(|(}(~(( {n((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( (((((((&((((((((((((((((( (((((( ((((((((((((())))) ))))) ) ) ) ) )))))))))))))))) ))) )!)")#)$)%)&)')()))*)+),)-).)/)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)kzfhBA0)ly)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*BE*C*D*E(*F*GD*H*I*J*KF*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*{*|*}*~***************1 gC*************************************************************d********************** ****************n*n*n*n*n*n*n*n**vulkan-3.2.0.0-inplaceGraphics.Vulkan.CStructGraphics.Vulkan.CStruct.ExtendsGraphics.Vulkan.CStruct.Utils*Graphics.Vulkan.Core10.AllocationCallbacksGraphics.Vulkan.Core10.BaseTypeGraphics.Vulkan.Core10.Buffer!Graphics.Vulkan.Core10.BufferView$Graphics.Vulkan.Core10.CommandBuffer,Graphics.Vulkan.Core10.CommandBufferBuilding"Graphics.Vulkan.Core10.CommandPool$Graphics.Vulkan.Core10.DescriptorSetGraphics.Vulkan.Core10.Device+Graphics.Vulkan.Core10.DeviceInitialization7Graphics.Vulkan.Core10.Enums.CommandBufferResetFlagBits5Graphics.Vulkan.Core10.Enums.CommandPoolResetFlagBits/Graphics.Vulkan.Core10.Enums.DependencyFlagBits5Graphics.Vulkan.Core10.Enums.DescriptorPoolResetFlags#Graphics.Vulkan.Core10.Enums.Filter#Graphics.Vulkan.Core10.Enums.Format0Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits(Graphics.Vulkan.Core10.Enums.ImageLayout(Graphics.Vulkan.Core10.Enums.ImageTiling&Graphics.Vulkan.Core10.Enums.ImageType/Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits&Graphics.Vulkan.Core10.Enums.IndexType+Graphics.Vulkan.Core10.Enums.MemoryMapFlags.Graphics.Vulkan.Core10.Enums.PipelineBindPoint2Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits1Graphics.Vulkan.Core10.Enums.QueryControlFlagBits0Graphics.Vulkan.Core10.Enums.QueryResultFlagBits&Graphics.Vulkan.Core10.Enums.QueryType#Graphics.Vulkan.Core10.Enums.Result0Graphics.Vulkan.Core10.Enums.SampleCountFlagBits0Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits0Graphics.Vulkan.Core10.Enums.StencilFaceFlagBits,Graphics.Vulkan.Core10.Enums.SubpassContentsGraphics.Vulkan.Core10.Event)Graphics.Vulkan.Core10.ExtensionDiscoveryGraphics.Vulkan.Core10.Fence#Graphics.Vulkan.Core10.FuncPointersGraphics.Vulkan.Core10.HandlesGraphics.Vulkan.Core10.Image Graphics.Vulkan.Core10.ImageView%Graphics.Vulkan.Core10.LayerDiscoveryGraphics.Vulkan.Core10.Memory'Graphics.Vulkan.Core10.MemoryManagement!Graphics.Vulkan.Core10.OtherTypesGraphics.Vulkan.Core10.PassGraphics.Vulkan.Core10.Pipeline$Graphics.Vulkan.Core10.PipelineCache%Graphics.Vulkan.Core10.PipelineLayoutGraphics.Vulkan.Core10.QueryGraphics.Vulkan.Core10.Queue%Graphics.Vulkan.Core10.QueueSemaphoreGraphics.Vulkan.Core10.SamplerGraphics.Vulkan.Core10.Shader"Graphics.Vulkan.Core10.SharedTypes5Graphics.Vulkan.Core10.SparseResourceMemoryManagement1Graphics.Vulkan.Core11.Enums.CommandPoolTrimFlags=Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits6Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBitsGraphics.Vulkan.Core11.HandlesBGraphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory:Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup9Graphics.Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage8Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2@Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocationFGraphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template8Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupNGraphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2AGraphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation:Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fenceGGraphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities;Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memoryHGraphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities>Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphoreKGraphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilitiesDGraphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2KGraphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties28Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance28Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance35Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiviewDGraphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversionBGraphics.Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters=Graphics.Vulkan.Core11.Promoted_From_VK_KHR_variable_pointersGraphics.Vulkan.Core12?Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexingGraphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2AGraphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve=Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties=Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_listAGraphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebufferJGraphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts?Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64?Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8AGraphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controlsJGraphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types>Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphoreJGraphics.Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout?Graphics.Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model"Graphics.Vulkan.Extensions.Handles8Graphics.Vulkan.Extensions.VK_AMD_device_coherent_memory4Graphics.Vulkan.Extensions.VK_AMD_display_native_hdr,Graphics.Vulkan.Extensions.VK_AMD_gcn_shader7Graphics.Vulkan.Extensions.VK_AMD_gpu_shader_half_float2Graphics.Vulkan.Extensions.VK_AMD_gpu_shader_int16@Graphics.Vulkan.Extensions.VK_AMD_memory_overallocation_behavior:Graphics.Vulkan.Extensions.VK_AMD_mixed_attachment_samples:Graphics.Vulkan.Extensions.VK_AMD_negative_viewport_height;Graphics.Vulkan.Extensions.VK_AMD_pipeline_compiler_control5Graphics.Vulkan.Extensions.VK_AMD_rasterization_order/Graphics.Vulkan.Extensions.VK_AMD_shader_ballot8Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties9Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties2BGraphics.Vulkan.Extensions.VK_AMD_shader_explicit_vertex_parameter6Graphics.Vulkan.Extensions.VK_AMD_shader_fragment_mask=Graphics.Vulkan.Extensions.VK_AMD_shader_image_load_store_lod-Graphics.Vulkan.Extensions.VK_AMD_shader_info7Graphics.Vulkan.Extensions.VK_AMD_shader_trinary_minmax9Graphics.Vulkan.Extensions.VK_AMD_texture_gather_bias_lodMGraphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer2Graphics.Vulkan.Extensions.VK_EXT_astc_decode_mode:Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced7Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address7Graphics.Vulkan.Extensions.VK_EXT_calibrated_timestamps7Graphics.Vulkan.Extensions.VK_EXT_conditional_renderingGraphics.Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr.Graphics.Vulkan.Extensions.VK_EXT_tooling_info4Graphics.Vulkan.Extensions.VK_EXT_transform_feedback2Graphics.Vulkan.Extensions.VK_EXT_validation_cache5Graphics.Vulkan.Extensions.VK_EXT_validation_features2Graphics.Vulkan.Extensions.VK_EXT_validation_flags:Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor4Graphics.Vulkan.Extensions.VK_EXT_ycbcr_image_arrays7Graphics.Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface-Graphics.Vulkan.Extensions.VK_GGP_frame_token;Graphics.Vulkan.Extensions.VK_GGP_stream_descriptor_surface4Graphics.Vulkan.Extensions.VK_GOOGLE_decorate_string3Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing8Graphics.Vulkan.Extensions.VK_GOOGLE_hlsl_functionality1.Graphics.Vulkan.Extensions.VK_GOOGLE_user_type.Graphics.Vulkan.Extensions.VK_IMG_filter_cubic.Graphics.Vulkan.Extensions.VK_IMG_format_pvrtc5Graphics.Vulkan.Extensions.VK_INTEL_performance_query=Graphics.Vulkan.Extensions.VK_INTEL_shader_integer_functions21Graphics.Vulkan.Extensions.VK_KHR_android_surface:Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations)Graphics.Vulkan.Extensions.VK_KHR_display3Graphics.Vulkan.Extensions.VK_KHR_display_swapchain3Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd6Graphics.Vulkan.Extensions.VK_KHR_external_fence_win324Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd7Graphics.Vulkan.Extensions.VK_KHR_external_memory_win327Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd:Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win329Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2;Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities25Graphics.Vulkan.Extensions.VK_KHR_incremental_present3Graphics.Vulkan.Extensions.VK_KHR_performance_query@Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties2Graphics.Vulkan.Extensions.VK_KHR_pipeline_library1Graphics.Vulkan.Extensions.VK_KHR_push_descriptor-Graphics.Vulkan.Extensions.VK_KHR_ray_tracing6Graphics.Vulkan.Extensions.VK_KHR_relaxed_block_layout.Graphics.Vulkan.Extensions.VK_KHR_shader_clock8Graphics.Vulkan.Extensions.VK_KHR_shader_draw_parameters:Graphics.Vulkan.Extensions.VK_KHR_shader_non_semantic_info:Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image+Graphics.Vulkan.Extensions.VK_KHR_spirv_1_4>Graphics.Vulkan.Extensions.VK_KHR_storage_buffer_storage_class)Graphics.Vulkan.Extensions.VK_KHR_surface@Graphics.Vulkan.Extensions.VK_KHR_surface_protected_capabilities+Graphics.Vulkan.Extensions.VK_KHR_swapchain1Graphics.Vulkan.Extensions.VK_KHR_wayland_surface3Graphics.Vulkan.Extensions.VK_KHR_win32_keyed_mutex/Graphics.Vulkan.Extensions.VK_KHR_win32_surface-Graphics.Vulkan.Extensions.VK_KHR_xcb_surface.Graphics.Vulkan.Extensions.VK_KHR_xlib_surface-Graphics.Vulkan.Extensions.VK_MVK_ios_surface/Graphics.Vulkan.Extensions.VK_MVK_macos_surface+Graphics.Vulkan.Extensions.VK_NN_vi_surface3Graphics.Vulkan.Extensions.VK_NVX_image_view_handle?Graphics.Vulkan.Extensions.VK_NVX_multiview_per_view_attributes5Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling;Graphics.Vulkan.Extensions.VK_NV_compute_shader_derivatives3Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix5Graphics.Vulkan.Extensions.VK_NV_corner_sampled_image8Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode5Graphics.Vulkan.Extensions.VK_NV_dedicated_allocationDGraphics.Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing>Graphics.Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints:Graphics.Vulkan.Extensions.VK_NV_device_diagnostics_config:Graphics.Vulkan.Extensions.VK_NV_device_generated_commands0Graphics.Vulkan.Extensions.VK_NV_external_memory=Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities6Graphics.Vulkan.Extensions.VK_NV_external_memory_win32/Graphics.Vulkan.Extensions.VK_NV_fill_rectangle;Graphics.Vulkan.Extensions.VK_NV_fragment_coverage_to_colorGraphics.Vulkan.Extensions.VK_NV_sample_mask_override_coverage2Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive7Graphics.Vulkan.Extensions.VK_NV_shader_image_footprint3Graphics.Vulkan.Extensions.VK_NV_shader_sm_builtinsGraphics.Vulkan.Extensions.VK_KHR_sampler_mirror_clamp_to_edgeGraphics.Vulkan.Exception+Graphics.Vulkan.Core11.DeviceInitialization.Graphics.Vulkan.Core10.Enums.PrimitiveTopology(Graphics.Vulkan.Core10.Enums.PolygonMode7Graphics.Vulkan.Core10.Enums.PipelineCacheHeaderVersion/Graphics.Vulkan.Core10.Enums.PhysicalDeviceType'Graphics.Vulkan.Core10.Enums.ObjectType$Graphics.Vulkan.Core10.Enums.LogicOp3Graphics.Vulkan.Core10.Enums.InternalAllocationType*Graphics.Vulkan.Core10.Enums.ImageViewType&Graphics.Vulkan.Core10.Enums.FrontFace3Graphics.Vulkan.Extensions.VK_KHR_image_format_list)Graphics.Vulkan.Core10.Enums.DynamicState+Graphics.Vulkan.Core10.Enums.DescriptorType-Graphics.Vulkan.Core10.Enums.ComponentSwizzle&Graphics.Vulkan.Core10.Enums.CompareOp/Graphics.Vulkan.Core10.Enums.CommandBufferLevel(Graphics.Vulkan.Core10.Enums.BorderColor$Graphics.Vulkan.Core10.Enums.BlendOp(Graphics.Vulkan.Core10.Enums.BlendFactor.Graphics.Vulkan.Core10.Enums.AttachmentStoreOp-Graphics.Vulkan.Core10.Enums.AttachmentLoadOp5Graphics.Vulkan.Extensions.VK_KHR_vulkan_memory_model@Graphics.Vulkan.Extensions.VK_KHR_uniform_buffer_standard_layout@Graphics.Vulkan.Extensions.VK_KHR_shader_subgroup_extended_types7Graphics.Vulkan.Extensions.VK_KHR_shader_float_controls5Graphics.Vulkan.Extensions.VK_KHR_shader_float16_int85Graphics.Vulkan.Extensions.VK_KHR_shader_atomic_int64@Graphics.Vulkan.Extensions.VK_KHR_separate_depth_stencil_layouts.Graphics.Vulkan.Extensions.VK_KHR_8bit_storage5Graphics.Vulkan.Extensions.VK_EXT_scalar_block_layout2Graphics.Vulkan.Core12.Enums.SemaphoreWaitFlagBits0Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits6Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits3Graphics.Vulkan.Extensions.VK_KHR_variable_pointers/Graphics.Vulkan.Extensions.VK_KHR_16bit_storage4Graphics.Vulkan.Core11.Enums.SubgroupFeatureFlagBits4Graphics.Vulkan.Core11.Enums.SemaphoreImportFlagBits3Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits0Graphics.Vulkan.Core11.Enums.FenceImportFlagBits@Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits4Graphics.Vulkan.Extensions.VK_KHR_external_semaphore=Graphics.Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits:Graphics.Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBitsGraphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBitsBGraphics.Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags@Graphics.Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags6Graphics.Vulkan.Core10.Enums.PipelineLayoutCreateFlagsBGraphics.Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlagsGraphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits9Graphics.Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits5Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing+Graphics.Vulkan.Extensions.VK_KHR_multiview-Graphics.Vulkan.Core10.Enums.CullModeFlagBits6Graphics.Vulkan.Core10.Enums.CommandPoolCreateFlagBits7Graphics.Vulkan.Core10.Enums.CommandBufferUsageFlagBits3Graphics.Vulkan.Core10.Enums.ColorComponentFlagBits2Graphics.Vulkan.Core10.Enums.BufferViewCreateFlags0Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits1Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits:Graphics.Vulkan.Core10.Enums.AttachmentDescriptionFlagBits+Graphics.Vulkan.Core10.Enums.AccessFlagBits#Graphics.Vulkan.Core10.APIConstants6Graphics.Vulkan.Extensions.VK_EXT_queue_family_foreign3Graphics.Vulkan.Extensions.VK_KHR_driver_properties1Graphics.Vulkan.Extensions.VK_KHR_external_memory/Graphics.Vulkan.Extensions.VK_AMD_buffer_marker4Graphics.Vulkan.Extensions.VK_KHR_timeline_semaphore7Graphics.Vulkan.Extensions.VK_KHR_imageless_framebuffer?Graphics.Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count5Graphics.Vulkan.Extensions.VK_KHR_draw_indirect_count5Graphics.Vulkan.Extensions.VK_AMD_draw_indirect_count7Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address2Graphics.Vulkan.Extensions.VK_EXT_host_query_reset8Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance1.Graphics.Vulkan.Extensions.VK_KHR_maintenance1>Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities=Graphics.Vulkan.Extensions.VK_KHR_external_fence_capabilities7Graphics.Vulkan.Extensions.VK_KHR_device_group_creation6Graphics.Vulkan.Extensions.VK_KHR_dedicated_allocation5Graphics.Vulkan.Extensions.VK_EXT_direct_mode_display6Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_displayAGraphics.Vulkan.Extensions.VK_KHR_external_semaphore_capabilities.Graphics.Vulkan.Extensions.VK_KHR_bind_memory2:Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion:Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2AGraphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXTExternalFenceHandleTypeFlagBitstrimCommandPooltrimCommandPoolKHRGraphics.Vulkan.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!DEVICE_QUEUE_CREATE_PROTECTED_BITcmdWriteTimestamp cmdBuildAccelerationStructureKHRcmdCopyAccelerationStructureKHR cmdPreprocessGeneratedCommandsNVcmdClearAttachmentsPIPELINE_CREATE_DISPATCH_BASEcmdDispatchBasecompileDeferredNV"getPipelineExecutableStatisticsKHR/getPipelineExecutableInternalRepresentationsKHRPIPELINE_COMPILE_REQUIRED_EXTflushMappedMemoryRangesinvalidateMappedMemoryRangesMEMORY_HEAP_DEVICE_LOCAL_BIT 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_BITImageUsageFlagBitsbindImageMemory2IMAGE_VIEW_TYPE_2DIMAGE_VIEW_TYPE_2D_ARRAY!SAMPLER_CREATE_SUBSAMPLED_BIT_EXTIMAGE_VIEW_TYPE_CUBEIMAGE_VIEW_TYPE_CUBE_ARRAY ImageBlit ImageCopy ImageResolveDisplayPlaneCapabilitiesKHRRect2D RectLayerKHRREMAINING_MIP_LEVELSREMAINING_ARRAY_LAYERSIMAGE_ASPECT_COLOR_BIT$IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BITImageAspectFlagBitsIMAGE_ASPECT_METADATA_BITQueueFamilyPropertiesSparseImageFormatPropertiesDisplayModeParametersKHRSurfaceCapabilitiesKHRgetRenderAreaGranularitycreateSwapchainKHRDrmFormatModifierPropertiesEXT 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_BUFFER,DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BITresetDescriptorPoolallocateDescriptorSetsfreeDescriptorSetsDESCRIPTOR_TYPE_UNIFORM_BUFFERDESCRIPTOR_TYPE_SAMPLERDESCRIPTOR_TYPE_STORAGE_BUFFER&DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC&DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC/SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVXresetCommandBufferbeginCommandBuffergetBufferDeviceAddresscmdBeginConditionalRenderingEXTcmdTraceRaysKHR PIPELINE_STAGE_DRAW_INDIRECT_BITPIPELINE_STAGE_VERTEX_INPUT_BIT!PIPELINE_STAGE_TASK_SHADER_BIT_NV!PIPELINE_STAGE_MESH_SHADER_BIT_NV)PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR PIPELINE_STAGE_VERTEX_SHADER_BIT.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT1PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"PIPELINE_STAGE_GEOMETRY_SHADER_BIT"PIPELINE_STAGE_FRAGMENT_SHADER_BIT!PIPELINE_STAGE_COMPUTE_SHADER_BIT*PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT&PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BITPIPELINE_STAGE_TRANSFER_BITPIPELINE_STAGE_HOST_BIT(PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV,PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT(PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV)PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT3PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR/PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT!MEMORY_PROPERTY_HOST_COHERENT_BIT queueSubmitGraphics.Vulkan.Core10.EnumsallocateMemorycreateAccelerationStructureKHRcreateAccelerationStructureNVcreateAndroidSurfaceKHR createBuffercreateBufferViewcreateCommandPoolcreateDebugReportCallbackEXTcreateDebugUtilsMessengerEXTcreateDeferredOperationKHRcreateDescriptorPoolcreateDescriptorSetLayoutcreateDescriptorUpdateTemplate!createDescriptorUpdateTemplateKHRcreateDisplayModeKHRcreateDisplayPlaneSurfaceKHR createEvent createFencecreateFramebuffercreateHeadlessSurfaceEXTcreateIOSSurfaceMVK createImagecreateImagePipeSurfaceFUCHSIAcreateIndirectCommandsLayoutNVcreateInstancecreateMacOSSurfaceMVKcreateMetalSurfaceEXTcreatePipelineLayoutcreateQueryPoolcreateRenderPasscreateRenderPass2createRenderPass2KHR createSamplercreateSamplerYcbcrConversioncreateSamplerYcbcrConversionKHRcreateSemaphorecreateShaderModulecreateSharedSwapchainsKHR createStreamDescriptorSurfaceGGPcreateValidationCacheEXTcreateViSurfaceNNcreateWaylandSurfaceKHRcreateWin32SurfaceKHRcreateXcbSurfaceKHRcreateXlibSurfaceKHRdestroyAccelerationStructureKHRdestroyAccelerationStructureNV destroyBufferdestroyBufferViewdestroyCommandPooldestroyDebugReportCallbackEXTdestroyDebugUtilsMessengerEXTdestroyDeferredOperationKHRdestroyDescriptorPooldestroyDescriptorSetLayoutdestroyDescriptorUpdateTemplate"destroyDescriptorUpdateTemplateKHR destroyDevice destroyEvent destroyFencedestroyFramebuffer destroyImagedestroyImageViewdestroyIndirectCommandsLayoutNVdestroyPipelinedestroyPipelineCachedestroyPipelineLayoutdestroyQueryPooldestroyRenderPassdestroySamplerdestroySamplerYcbcrConversion destroySamplerYcbcrConversionKHRdestroySemaphoredestroyShaderModuledestroySurfaceKHRdestroySwapchainKHRdestroyValidationCacheEXT freeMemoryregisterDeviceEventEXTregisterDisplayEventEXT ExternalMemoryHandleTypeFlagBitsgetSemaphoreCounterValuegetSemaphoreCounterValueKHRgetDeviceQueuegetDeviceQueue2getQueueCheckpointDataNVqueueBeginDebugUtilsLabelEXTqueueBindSparsequeueEndDebugUtilsLabelEXTqueueInsertDebugUtilsLabelEXT%queueSetPerformanceConfigurationINTEL queueWaitIdle cmdBeginQuerycmdBeginQueryIndexedEXT cmdEndQuerycmdEndQueryIndexedEXTcmdResetQueryPoolresetQueryPoolresetQueryPoolEXTcmdPushConstants#cmdPushDescriptorSetWithTemplateKHRmergePipelineCaches/getRayTracingCaptureReplayShaderGroupHandlesKHR"getRayTracingShaderGroupHandlesKHR!getRayTracingShaderGroupHandlesNVacquireXlibDisplayEXT"enumerateDeviceExtensionPropertiesenumerateDeviceLayerProperties=enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHRenumeratePhysicalDevicesgetDisplayModeProperties2KHRgetDisplayModePropertiesKHRgetDisplayPlaneCapabilities2KHRgetDisplayPlaneCapabilitiesKHR#getDisplayPlaneSupportedDisplaysKHR,getPhysicalDeviceCalibrateableTimeDomainsEXT.getPhysicalDeviceCooperativeMatrixPropertiesNV+getPhysicalDeviceDisplayPlaneProperties2KHR*getPhysicalDeviceDisplayPlanePropertiesKHR&getPhysicalDeviceDisplayProperties2KHR%getPhysicalDeviceDisplayPropertiesKHR)getPhysicalDeviceExternalBufferProperties,getPhysicalDeviceExternalBufferPropertiesKHR(getPhysicalDeviceExternalFenceProperties+getPhysicalDeviceExternalFencePropertiesKHR,getPhysicalDeviceExternalSemaphoreProperties/getPhysicalDeviceExternalSemaphorePropertiesKHRgetPhysicalDeviceFeaturesgetPhysicalDeviceFeatures2getPhysicalDeviceFeatures2KHR*getPhysicalDeviceImageFormatProperties2KHR!getPhysicalDeviceMemoryProperties"getPhysicalDeviceMemoryProperties2%getPhysicalDeviceMemoryProperties2KHR%getPhysicalDevicePresentRectanglesKHRgetPhysicalDeviceProperties2getPhysicalDeviceProperties2KHR5getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR&getPhysicalDeviceQueueFamilyProperties'getPhysicalDeviceQueueFamilyProperties2*getPhysicalDeviceQueueFamilyProperties2KHR-getPhysicalDeviceSparseImageFormatProperties20getPhysicalDeviceSparseImageFormatProperties2KHR?getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(getPhysicalDeviceSurfaceCapabilities2EXT(getPhysicalDeviceSurfaceCapabilities2KHR'getPhysicalDeviceSurfaceCapabilitiesKHR#getPhysicalDeviceSurfaceFormats2KHR"getPhysicalDeviceSurfaceFormatsKHR(getPhysicalDeviceSurfacePresentModes2EXT'getPhysicalDeviceSurfacePresentModesKHR"getPhysicalDeviceToolPropertiesEXT.getPhysicalDeviceWaylandPresentationSupportKHR,getPhysicalDeviceWin32PresentationSupportKHR*getPhysicalDeviceXcbPresentationSupportKHR+getPhysicalDeviceXlibPresentationSupportKHRgetRandROutputDisplayEXTreleaseDisplayEXTdebugReportMessageEXTenumeratePhysicalDeviceGroups enumeratePhysicalDeviceGroupsKHRsubmitDebugUtilsMessageEXTgetImageViewAddressNVXSparseImageMemoryBindInfoSparseImageOpaqueMemoryBindInfogetImageMemoryRequirements getImageSparseMemoryRequirementsgetSwapchainImagesKHRgetFenceStatus resetFences cmdResetEvent cmdSetEvent cmdWaitEventsgetEventStatus resetEventsetEvent!acquireFullScreenExclusiveModeEXTacquireNextImage2KHR$acquirePerformanceConfigurationINTELacquireProfilingLockKHRallocateCommandBuffers"bindAccelerationStructureMemoryKHR!bindAccelerationStructureMemoryNVbindBufferMemory2bindBufferMemory2KHRbindImageMemory2KHRbuildAccelerationStructureKHRcopyAccelerationStructureKHR$copyAccelerationStructureToMemoryKHR$copyMemoryToAccelerationStructureKHRdebugMarkerSetObjectNameEXTdebugMarkerSetObjectTagEXTdeferredOperationJoinKHRdeviceWaitIdledisplayPowerControlEXTfreeCommandBuffers(getAccelerationStructureDeviceAddressKHR getAccelerationStructureHandleNV-getAccelerationStructureMemoryRequirementsKHR,getAccelerationStructureMemoryRequirementsNV)getAndroidHardwareBufferPropertiesANDROIDgetBufferDeviceAddressEXTgetBufferDeviceAddressKHRgetBufferMemoryRequirementsgetBufferMemoryRequirements2getBufferMemoryRequirements2KHRgetBufferOpaqueCaptureAddress getBufferOpaqueCaptureAddressKHRgetCalibratedTimestampsEXT%getDeferredOperationMaxConcurrencyKHRgetDeferredOperationResultKHRgetDescriptorSetLayoutSupport getDescriptorSetLayoutSupportKHR.getDeviceAccelerationStructureCompatibilityKHR getDeviceGroupPeerMemoryFeatures#getDeviceGroupPeerMemoryFeaturesKHR$getDeviceGroupPresentCapabilitiesKHR%getDeviceGroupSurfacePresentModes2EXT$getDeviceGroupSurfacePresentModesKHR&getDeviceMemoryOpaqueCaptureAddressKHR getFenceFdKHRgetFenceWin32HandleKHR(getGeneratedCommandsMemoryRequirementsNVgetImageMemoryRequirements2getImageMemoryRequirements2KHR!getImageSparseMemoryRequirements2$getImageSparseMemoryRequirements2KHRgetImageViewHandleNVX%getMemoryAndroidHardwareBufferANDROIDgetMemoryFdKHRgetMemoryWin32HandleKHRgetMemoryWin32HandleNVgetPastPresentationTimingGOOGLEgetPerformanceParameterINTEL"getPipelineExecutablePropertiesKHRgetRefreshCycleDurationGOOGLEgetSemaphoreFdKHRgetSemaphoreWin32HandleKHRgetSwapchainCounterEXTgetSwapchainStatusKHRgetValidationCacheDataEXTimportFenceFdKHRimportFenceWin32HandleKHRimportSemaphoreFdKHRimportSemaphoreWin32HandleKHRinitializePerformanceApiINTELmergeValidationCachesEXT!releaseFullScreenExclusiveModeEXT$releasePerformanceConfigurationINTELreleaseProfilingLockKHRresetCommandPoolsetDebugUtilsObjectNameEXTsetDebugUtilsObjectTagEXTsetHdrMetadataEXTsignalSemaphoresignalSemaphoreKHRuninitializePerformanceApiINTEL unmapMemoryupdateDescriptorSetWithTemplatewaitSemaphoreswaitSemaphoresKHRcmdBeginDebugUtilsLabelEXTcmdBeginRenderPass2cmdBeginRenderPass2KHRcmdCopyAccelerationStructureNV'cmdCopyAccelerationStructureToMemoryKHR'cmdCopyMemoryToAccelerationStructureKHRcmdDebugMarkerBeginEXTcmdDebugMarkerEndEXTcmdDebugMarkerInsertEXT cmdDispatchcmdDispatchBaseKHRcmdDrawcmdDrawIndexedcmdDrawMeshTasksNVcmdEndConditionalRenderingEXTcmdEndDebugUtilsLabelEXTcmdEndRenderPass2cmdEndRenderPass2KHRcmdInsertDebugUtilsLabelEXTcmdNextSubpass2cmdNextSubpass2KHRcmdPipelineBarriercmdSetCheckpointNVcmdSetDeviceMaskcmdSetDeviceMaskKHRcmdSetPerformanceMarkerINTELcmdSetPerformanceOverrideINTEL"cmdSetPerformanceStreamMarkerINTELSparseBufferMemoryBindInfo.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV-DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NVSampleCountFlags'FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT ImageViewTypeSAMPLER_REDUCTION_MODE_MINSAMPLER_REDUCTION_MODE_MAXSamplerAddressMode"SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGEIMAGE_VIEW_TYPE_3DIMAGE_VIEW_TYPE_1D_ARRAYPIPELINE_BIND_POINT_GRAPHICS6IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT BUFFER_USAGE_INDIRECT_BUFFER_BITIMAGE_CREATE_SPARSE_BINDING_BIT!IMAGE_CREATE_SPARSE_RESIDENCY_BITIMAGE_CREATE_SPARSE_ALIASED_BITIMAGE_USAGE_STORAGE_BIT-EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT1EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BITPIPELINE_CREATE_LIBRARY_BIT_KHR*PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR8PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR/EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT3EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT.EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BITSEMAPHORE_IMPORT_TEMPORARY_BITSEMAPHORE_TYPE_TIMELINESemaphoreImportFlagBits SemaphoreTypeSEMAPHORE_TYPE_BINARY,EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT*EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT+EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT/EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BITFenceImportFlagBits(EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT&EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT(QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT WHOLE_SIZE.BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT6BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXTControl.Exceptionbracket_QUERY_TYPE_TIMESTAMPQUERY_TYPE_OCCLUSIONQUERY_TYPE_PIPELINE_STATISTICS QUERY_TYPE_PERFORMANCE_QUERY_KHR,PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR)PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR*BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXTACCESS_TRANSFER_WRITE_BITBUFFER_USAGE_TRANSFER_DST_BITImageCreateFlagBitsDrawIndirectCommandDrawIndexedIndirectCommandERROR_FORMAT_NOT_SUPPORTEDBufferCreateFlagBits!ERROR_INVALID_EXTERNAL_HANDLE_KHRExternalMemoryProperties BUFFER_CREATE_SPARSE_BINDING_BIT,EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT0EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT*EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT)EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BITDisplayModePropertiesKHRDisplayPlanePropertiesKHR CAMetalLayerbracket"QUERY_TYPE_PERFORMANCE_QUERY_INTEL UUID_SIZEFORMAT_UNDEFINEDOBJECT_TYPE_UNKNOWNATTACHMENT_LOAD_OP_CLEAR4DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR*DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHRPipelineCacheCreateFlagBitsPipelineCacheHeaderVersion!PIPELINE_CACHE_HEADER_VERSION_ONEBUFFER_CREATE_PROTECTED_BITMEMORY_PROPERTY_PROTECTED_BIT"MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT(ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHRIMAGE_CREATE_PROTECTED_BIT!COMMAND_POOL_CREATE_PROTECTED_BITCommandPoolCreateFlagBits%BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT%BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT'FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BITFormatProperties'FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,PhysicalDeviceBufferDeviceAddressFeaturesKHR*BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR&MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHRFILTER_NEARESTSAMPLER_MIPMAP_MODE_NEARESTPFORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT$SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER'SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE)SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGESamplerCreateFlagBitsIMAGE_VIEW_TYPE_1DCOMMAND_BUFFER_LEVEL_SECONDARYPipelineStageFlagBits(COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT)COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BITSHARING_MODE_EXCLUSIVEQueryPipelineStatisticFlagBitsPerformanceCounterResultKHRATTACHMENT_UNUSED+SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOMRESOLVE_MODE_NONESAMPLE_COUNT_1_BIT#FORMAT_FEATURE_COLOR_ATTACHMENT_BIT+FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT4SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX,SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM%RENDER_PASS_CREATE_TRANSFORM_BIT_QCOMSubpassDescriptionFlagBitsSUBPASS_EXTERNALQUEUE_FAMILY_IGNOREDDEPENDENCY_BY_REGION_BITDEPENDENCY_VIEW_LOCAL_BITAccessFlagBitsDependencyFlagBits%IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL7IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL7IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMALRenderPassCreateFlagBits FRAMEBUFFER_CREATE_IMAGELESS_BITFramebufferCreateFlagBitsIMAGE_LAYOUT_PRESENT_SRC_KHR)IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR(IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR+IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR*IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR$ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT-IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL%IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL%IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL$IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL'IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL&IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMALAttachmentDescriptionFlagBits6IMAGE_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_CAREACCESS_HOST_WRITE_BITACCESS_HOST_READ_BITSHARING_MODE_CONCURRENT!IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL!IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL$IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV-EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR0EXTERNAL_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_VISIBLE_BIT,IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT IMAGE_TYPE_1D IMAGE_TYPE_2D IMAGE_CREATE_CUBE_COMPATIBLE_BIT IMAGE_TYPE_3D FORMAT_FEATURE_STORAGE_IMAGE_BITImageViewCreateFlagBits*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_ZEROIMAGE_TILING_LINEAR$IMAGE_TILING_DRM_FORMAT_MODIFIER_EXTComponentSwizzleIMAGE_CREATE_EXTENDED_USAGE_BITSAMPLE_COUNT_2_BITSAMPLE_COUNT_4_BITSAMPLE_COUNT_8_BITSAMPLE_COUNT_16_BITExternalImageFormatPropertiesNV,IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BITFORMAT_FEATURE_DISJOINT_BITIMAGE_CREATE_ALIAS_BITImageAspectFlagsFORMAT_G8_B8R8_2PLANE_420_UNORM FORMAT_G8_B8_R8_3PLANE_420_UNORMFormatFeatureFlagBitsSPARSE_MEMORY_BIND_METADATA_BIT&SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BITSparseMemoryBindFlagBitsSparseImageFormatFlagBitsFenceCreateFlagBitsOffset3DenumerateInstanceVersionVendorIdMEMORY_PROPERTY_HOST_CACHED_BIT MEMORY_PROPERTY_DEVICE_LOCAL_BIT'MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMDSampleCountFlagBits(SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT IndexTypeINDEX_TYPE_UINT32SHADER_STAGE_GEOMETRY_BIT%SHADER_STAGE_TESSELLATION_CONTROL_BIT(SHADER_STAGE_TESSELLATION_EVALUATION_BIT6STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFOBLEND_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_BIT"BUFFER_CREATE_SPARSE_RESIDENCY_BIT BUFFER_CREATE_SPARSE_ALIASED_BITMemoryHeapFlagBitsMemoryPropertyFlagBits QueueFlagBits$enumerateInstanceExtensionProperties enumerateInstanceLayerPropertiesDeviceQueueCreateFlagBitsBUFFER_USAGE_UNIFORM_BUFFER_BITBUFFER_USAGE_STORAGE_BUFFER_BITDescriptorBindingFlagBits!DescriptorSetLayoutCreateFlagBitsSHADER_STAGE_FRAGMENT_BIT.DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BITDescriptorPoolCreateFlagBitsSHADER_STAGE_ALLERROR_FRAGMENTATION_EXT&DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT2DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT$FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR#FramebufferAttachmentsCreateInfoKHR ImageTypeFORMAT_S8_UINTFORMAT_D16_UNORMFORMAT_D16_UNORM_S8_UINTFORMAT_D32_SFLOATFORMAT_D32_SFLOAT_S8_UINTFORMAT_X8_D24_UNORM_PACK32FORMAT_D24_UNORM_S8_UINT"DYNAMIC_STATE_SAMPLE_LOCATIONS_EXTPOLYGON_MODE_FILL_RECTANGLE_NVBUFFER_USAGE_INDEX_BUFFER_BITBUFFER_USAGE_VERTEX_BUFFER_BITDispatchIndirectCommandBUFFER_USAGE_TRANSFER_SRC_BITFORMAT_R8G8_UNORM1FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16FORMAT_FEATURE_TRANSFER_SRC_BITFORMAT_FEATURE_TRANSFER_DST_BITFORMAT_FEATURE_BLIT_DST_BITSubpassDependencyERROR_DEVICE_LOSTPushConstantRange-COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NVIMAGE_LAYOUT_SHARED_PRESENT_KHR!PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT0DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BITResolveModeFlagBitsRESOLVE_MODE_SAMPLE_ZERO_BITRESOLVE_MODE_AVERAGE_BITSubgroupFeatureFlagBitsSUBGROUP_FEATURE_BASIC_BITMEMORY_HEAP_MULTI_INSTANCE_BITSHADER_STAGE_MESH_BIT_NVSHADER_STAGE_TASK_BIT_NVSHADER_STAGE_ALL_GRAPHICSSHADER_STAGE_VERTEX_BIT!PipelineShaderStageCreateFlagBitsPOLYGON_MODE_FILLCullModeFlagBitsPRIMITIVE_TOPOLOGY_POINT_LISTPRIMITIVE_TOPOLOGY_LINE_LIST PRIMITIVE_TOPOLOGY_TRIANGLE_LIST+PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY/PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCYPRIMITIVE_TOPOLOGY_PATCH_LIST,PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY0PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCYBLEND_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_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_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_EXTPIPELINE_CREATE_DERIVATIVE_BITSTENCIL_OP_KEEP)FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BITDYNAMIC_STATE_VIEWPORTDYNAMIC_STATE_SCISSORDYNAMIC_STATE_DEPTH_BOUNDS#DYNAMIC_STATE_VIEWPORT_W_SCALING_NVViewportWScalingNV%LINE_RASTERIZATION_MODE_BRESENHAM_EXT.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXTDYNAMIC_STATE_LINE_STIPPLE_EXT;PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR?PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR8PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR@PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR2PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR(PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NVPipelineCreateFlagBitsINDEX_TYPE_UINT16%PIPELINE_CREATE_ALLOW_DERIVATIVES_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_KHRINDEX_TYPE_NONE_KHR;FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR BUFFER_USAGE_RAY_TRACING_BIT_KHRSHADER_UNUSED_NV$PIPELINE_CREATE_DEFER_COMPILE_BIT_NVFORMAT_R32G32B32_SFLOATFORMAT_R32G32_SFLOATFORMAT_R16G16B16_SFLOATFORMAT_R16G16_SFLOATFORMAT_R16G16_SNORMFORMAT_R16G16B16_SNORMGraphics.Vulkan.ExtensionsQueryControlFlagBitsCommandBufferUsageFlagBits,COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT/BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BITBufferUsageFlagBitsGraphics.Vulkan Paths_vulkan FromCStruct peekCStruct ToCStruct withCStruct pokeCStructwithZeroCStructpokeZeroCStruct cStructSizecStructAlignmentChain PokeChain PeekChain FixedArray'pokeFixedLengthNullTerminatedByteStringpokeFixedLengthByteString peekByteStringFromSizedVectorPtr lowerArrayPtradvancePtrBytes DeviceSize DeviceAddressBool32Viewport ClearRectClearAttachment MemoryTypeCommandBufferResetFlagsCommandBufferResetFlagBitsCommandPoolResetFlagsCommandPoolResetFlagBitsDependencyFlagsDescriptorPoolResetFlagsFilterImageCreateFlags ImageLayout ImageTilingImageUsageFlagsMemoryMapFlagsPipelineBindPointPipelineStageFlagsQueryControlFlagsQueryResultFlagsQueryResultFlagBits QueryTypeResultShaderStageFlagsStencilFaceFlagsStencilFaceFlagBitsSubpassContentsExtensionPropertiesPFN_vkVoidFunctionFN_vkVoidFunctionQueue_TPhysicalDevice_T Instance_TDevice_TCommandBuffer_TImageSubresourceLayerPropertiesSpecializationMapEntrySpecializationInfoClearColorValueOffset2DImageSubresourceRangeImageSubresourceLayersExtent3DExtent2DClearDepthStencilValueCommandPoolTrimFlagsExternalMemoryHandleTypeFlagsPeerMemoryFeatureFlagsPeerMemoryFeatureFlagBitsMemoryRequirements2KHRInputAttachmentAspectReferenceConformanceVersionDeferredOperationKHRAMD_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_VERSION TimeDomainEXTDebugReportObjectTypeEXTDebugReportFlagsEXTDebugReportFlagBitsEXTDebugUtilsMessageTypeFlagsEXT DebugUtilsMessageTypeFlagBitsEXT!DebugUtilsMessageSeverityFlagsEXT$DebugUtilsMessageSeverityFlagBitsEXT+EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME)EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSIONSurfaceCounterFlagsEXTSurfaceCounterFlagBitsEXT*EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME(EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION XYColorEXTPipelineCreationFeedbackEXT&EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME$EXT_POST_DEPTH_COVERAGE_SPEC_VERSIONSubpassSampleLocationsEXTSampleLocationEXTAttachmentSampleLocationsEXT(EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME&EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION)EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME'EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION'EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME%EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION.EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME,EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION'VertexInputBindingDivisorDescriptionEXT%GOOGLE_DECORATE_STRING_EXTENSION_NAME#GOOGLE_DECORATE_STRING_SPEC_VERSIONRefreshCycleDurationGOOGLEPresentTimeGOOGLEPastPresentationTimingGOOGLE)GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME'GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSIONGOOGLE_USER_TYPE_EXTENSION_NAMEGOOGLE_USER_TYPE_SPEC_VERSIONIMG_FILTER_CUBIC_EXTENSION_NAMEIMG_FILTER_CUBIC_SPEC_VERSIONIMG_FORMAT_PVRTC_EXTENSION_NAMEIMG_FORMAT_PVRTC_SPEC_VERSIONPerformanceParameterTypeINTELPerformanceValueINTELPresentRegionKHR.AccelerationStructureMemoryRequirementsTypeKHRRayTracingShaderGroupTypeKHRGeometryTypeKHRAccelerationStructureTypeKHR"BuildAccelerationStructureFlagsKHR%BuildAccelerationStructureFlagBitsKHRGeometryInstanceFlagsKHRGeometryInstanceFlagBitsKHRGeometryFlagsKHRGeometryFlagBitsKHR CopyAccelerationStructureModeKHRTransformMatrixKHRTraceRaysIndirectCommandKHR AccelerationStructureInstanceKHR'AccelerationStructureBuildOffsetInfoKHRAabbPositionsKHR'KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME%KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION)KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME'KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION+KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME)KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSIONPresentModeKHRKHR_SPIRV_1_4_EXTENSION_NAMEKHR_SPIRV_1_4_SPEC_VERSION/KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME-KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSIONDeviceGroupPresentModeFlagsKHR!DeviceGroupPresentModeFlagBitsKHRSetStateFlagsIndirectCommandNV BindShaderGroupIndirectCommandNVExternalMemoryHandleTypeFlagsNV"ExternalMemoryHandleTypeFlagBitsNV NV_FILL_RECTANGLE_EXTENSION_NAMENV_FILL_RECTANGLE_SPEC_VERSION-NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME+NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSIONNV_GLSL_SHADER_EXTENSION_NAMENV_GLSL_SHADER_SPEC_VERSIONDrawMeshTasksIndirectCommandNVAccelerationStructureNVGeometryDataNV/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_VERSIONCoarseSampleOrderTypeNVShadingRatePaletteNVCoarseSampleOrderCustomNVCoarseSampleLocationNV!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_VERSIONXcb_visualid_tXcb_connection_t Wl_displayVisualIDRROutputHANDLEDisplay ANativeWindow Wl_surfaceSECURITY_ATTRIBUTES GgpFrameTokenGgpStreamDescriptor Zx_handle_t Xcb_window_tWindowLPCWSTRDWORDHMONITORHWND HINSTANCE::: 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 $fZeroBool(EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME&EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION ColorSpaceKHR$COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT$COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT!COLOR_SPACE_DISPLAY_P3_LINEAR_EXT COLOR_SPACE_DCI_P3_NONLINEAR_EXTCOLOR_SPACE_BT709_LINEAR_EXTCOLOR_SPACE_BT709_NONLINEAR_EXTCOLOR_SPACE_BT2020_LINEAR_EXTCOLOR_SPACE_HDR10_ST2084_EXTCOLOR_SPACE_DOLBYVISION_EXTCOLOR_SPACE_HDR10_HLG_EXTCOLOR_SPACE_ADOBERGB_LINEAR_EXT"COLOR_SPACE_ADOBERGB_NONLINEAR_EXTCOLOR_SPACE_PASS_THROUGH_EXT'COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXTCOLOR_SPACE_DISPLAY_NATIVE_AMDCOLOR_SPACE_SRGB_NONLINEAR_KHRCOLOR_SPACE_DCI_P3_LINEAR_EXT$fReadColorSpaceKHR$fShowColorSpaceKHR$fEqColorSpaceKHR$fOrdColorSpaceKHR$fStorableColorSpaceKHR$fZeroColorSpaceKHR DeviceCmds $sel:deviceCmdsHandle:DeviceCmds$$sel:pVkGetDeviceProcAddr:DeviceCmds $sel:pVkDestroyDevice:DeviceCmds!$sel:pVkGetDeviceQueue:DeviceCmds$sel:pVkQueueSubmit:DeviceCmds $sel:pVkQueueWaitIdle:DeviceCmds!$sel:pVkDeviceWaitIdle:DeviceCmds!$sel:pVkAllocateMemory:DeviceCmds$sel:pVkFreeMemory:DeviceCmds$sel:pVkMapMemory:DeviceCmds$sel:pVkUnmapMemory:DeviceCmds*$sel:pVkFlushMappedMemoryRanges:DeviceCmds/$sel:pVkInvalidateMappedMemoryRanges:DeviceCmds,$sel:pVkGetDeviceMemoryCommitment:DeviceCmds.$sel:pVkGetBufferMemoryRequirements:DeviceCmds#$sel:pVkBindBufferMemory:DeviceCmds-$sel:pVkGetImageMemoryRequirements:DeviceCmds"$sel:pVkBindImageMemory:DeviceCmds3$sel:pVkGetImageSparseMemoryRequirements:DeviceCmds"$sel:pVkQueueBindSparse:DeviceCmds$sel:pVkCreateFence:DeviceCmds$sel:pVkDestroyFence:DeviceCmds$sel:pVkResetFences:DeviceCmds!$sel:pVkGetFenceStatus:DeviceCmds $sel:pVkWaitForFences:DeviceCmds"$sel:pVkCreateSemaphore:DeviceCmds#$sel:pVkDestroySemaphore:DeviceCmds$sel:pVkCreateEvent:DeviceCmds$sel:pVkDestroyEvent:DeviceCmds!$sel:pVkGetEventStatus:DeviceCmds$sel:pVkSetEvent:DeviceCmds$sel:pVkResetEvent:DeviceCmds"$sel:pVkCreateQueryPool:DeviceCmds#$sel:pVkDestroyQueryPool:DeviceCmds&$sel:pVkGetQueryPoolResults:DeviceCmds!$sel:pVkResetQueryPool:DeviceCmds$sel:pVkCreateBuffer:DeviceCmds $sel:pVkDestroyBuffer:DeviceCmds#$sel:pVkCreateBufferView:DeviceCmds$$sel:pVkDestroyBufferView:DeviceCmds$sel:pVkCreateImage:DeviceCmds$sel:pVkDestroyImage:DeviceCmds,$sel:pVkGetImageSubresourceLayout:DeviceCmds"$sel:pVkCreateImageView:DeviceCmds#$sel:pVkDestroyImageView:DeviceCmds%$sel:pVkCreateShaderModule:DeviceCmds&$sel:pVkDestroyShaderModule:DeviceCmds&$sel:pVkCreatePipelineCache:DeviceCmds'$sel:pVkDestroyPipelineCache:DeviceCmds'$sel:pVkGetPipelineCacheData:DeviceCmds&$sel:pVkMergePipelineCaches:DeviceCmds*$sel:pVkCreateGraphicsPipelines:DeviceCmds)$sel:pVkCreateComputePipelines:DeviceCmds"$sel:pVkDestroyPipeline:DeviceCmds'$sel:pVkCreatePipelineLayout:DeviceCmds($sel:pVkDestroyPipelineLayout:DeviceCmds $sel:pVkCreateSampler:DeviceCmds!$sel:pVkDestroySampler:DeviceCmds,$sel:pVkCreateDescriptorSetLayout:DeviceCmds-$sel:pVkDestroyDescriptorSetLayout:DeviceCmds'$sel:pVkCreateDescriptorPool:DeviceCmds($sel:pVkDestroyDescriptorPool:DeviceCmds&$sel:pVkResetDescriptorPool:DeviceCmds)$sel:pVkAllocateDescriptorSets:DeviceCmds%$sel:pVkFreeDescriptorSets:DeviceCmds'$sel:pVkUpdateDescriptorSets:DeviceCmds$$sel:pVkCreateFramebuffer:DeviceCmds%$sel:pVkDestroyFramebuffer:DeviceCmds#$sel:pVkCreateRenderPass:DeviceCmds$$sel:pVkDestroyRenderPass:DeviceCmds+$sel:pVkGetRenderAreaGranularity:DeviceCmds$$sel:pVkCreateCommandPool:DeviceCmds%$sel:pVkDestroyCommandPool:DeviceCmds#$sel:pVkResetCommandPool:DeviceCmds)$sel:pVkAllocateCommandBuffers:DeviceCmds%$sel:pVkFreeCommandBuffers:DeviceCmds%$sel:pVkBeginCommandBuffer:DeviceCmds#$sel:pVkEndCommandBuffer:DeviceCmds%$sel:pVkResetCommandBuffer:DeviceCmds"$sel:pVkCmdBindPipeline:DeviceCmds!$sel:pVkCmdSetViewport:DeviceCmds $sel:pVkCmdSetScissor:DeviceCmds"$sel:pVkCmdSetLineWidth:DeviceCmds"$sel:pVkCmdSetDepthBias:DeviceCmds'$sel:pVkCmdSetBlendConstants:DeviceCmds$$sel:pVkCmdSetDepthBounds:DeviceCmds+$sel:pVkCmdSetStencilCompareMask:DeviceCmds)$sel:pVkCmdSetStencilWriteMask:DeviceCmds)$sel:pVkCmdSetStencilReference:DeviceCmds($sel:pVkCmdBindDescriptorSets:DeviceCmds%$sel:pVkCmdBindIndexBuffer:DeviceCmds'$sel:pVkCmdBindVertexBuffers:DeviceCmds$sel:pVkCmdDraw:DeviceCmds!$sel:pVkCmdDrawIndexed:DeviceCmds"$sel:pVkCmdDrawIndirect:DeviceCmds)$sel:pVkCmdDrawIndexedIndirect:DeviceCmds$sel:pVkCmdDispatch:DeviceCmds&$sel:pVkCmdDispatchIndirect:DeviceCmds $sel:pVkCmdCopyBuffer:DeviceCmds$sel:pVkCmdCopyImage:DeviceCmds$sel:pVkCmdBlitImage:DeviceCmds'$sel:pVkCmdCopyBufferToImage:DeviceCmds'$sel:pVkCmdCopyImageToBuffer:DeviceCmds"$sel:pVkCmdUpdateBuffer:DeviceCmds $sel:pVkCmdFillBuffer:DeviceCmds%$sel:pVkCmdClearColorImage:DeviceCmds,$sel:pVkCmdClearDepthStencilImage:DeviceCmds&$sel:pVkCmdClearAttachments:DeviceCmds"$sel:pVkCmdResolveImage:DeviceCmds$sel:pVkCmdSetEvent:DeviceCmds $sel:pVkCmdResetEvent:DeviceCmds $sel:pVkCmdWaitEvents:DeviceCmds%$sel:pVkCmdPipelineBarrier:DeviceCmds $sel:pVkCmdBeginQuery:DeviceCmds$sel:pVkCmdEndQuery:DeviceCmds2$sel:pVkCmdBeginConditionalRenderingEXT:DeviceCmds0$sel:pVkCmdEndConditionalRenderingEXT:DeviceCmds$$sel:pVkCmdResetQueryPool:DeviceCmds$$sel:pVkCmdWriteTimestamp:DeviceCmds*$sel:pVkCmdCopyQueryPoolResults:DeviceCmds#$sel:pVkCmdPushConstants:DeviceCmds%$sel:pVkCmdBeginRenderPass:DeviceCmds!$sel:pVkCmdNextSubpass:DeviceCmds#$sel:pVkCmdEndRenderPass:DeviceCmds%$sel:pVkCmdExecuteCommands:DeviceCmds,$sel:pVkCreateSharedSwapchainsKHR:DeviceCmds%$sel:pVkCreateSwapchainKHR:DeviceCmds&$sel:pVkDestroySwapchainKHR:DeviceCmds($sel:pVkGetSwapchainImagesKHR:DeviceCmds&$sel:pVkAcquireNextImageKHR:DeviceCmds"$sel:pVkQueuePresentKHR:DeviceCmds.$sel:pVkDebugMarkerSetObjectNameEXT:DeviceCmds-$sel:pVkDebugMarkerSetObjectTagEXT:DeviceCmds)$sel:pVkCmdDebugMarkerBeginEXT:DeviceCmds'$sel:pVkCmdDebugMarkerEndEXT:DeviceCmds*$sel:pVkCmdDebugMarkerInsertEXT:DeviceCmds)$sel:pVkGetMemoryWin32HandleNV:DeviceCmds0$sel:pVkCmdExecuteGeneratedCommandsNV:DeviceCmds3$sel:pVkCmdPreprocessGeneratedCommandsNV:DeviceCmds/$sel:pVkCmdBindPipelineShaderGroupNV:DeviceCmds;$sel:pVkGetGeneratedCommandsMemoryRequirementsNV:DeviceCmds1$sel:pVkCreateIndirectCommandsLayoutNV:DeviceCmds2$sel:pVkDestroyIndirectCommandsLayoutNV:DeviceCmds*$sel:pVkCmdPushDescriptorSetKHR:DeviceCmds"$sel:pVkTrimCommandPool:DeviceCmds*$sel:pVkGetMemoryWin32HandleKHR:DeviceCmds4$sel:pVkGetMemoryWin32HandlePropertiesKHR:DeviceCmds!$sel:pVkGetMemoryFdKHR:DeviceCmds+$sel:pVkGetMemoryFdPropertiesKHR:DeviceCmds-$sel:pVkGetSemaphoreWin32HandleKHR:DeviceCmds0$sel:pVkImportSemaphoreWin32HandleKHR:DeviceCmds$$sel:pVkGetSemaphoreFdKHR:DeviceCmds'$sel:pVkImportSemaphoreFdKHR:DeviceCmds)$sel:pVkGetFenceWin32HandleKHR:DeviceCmds,$sel:pVkImportFenceWin32HandleKHR:DeviceCmds $sel:pVkGetFenceFdKHR:DeviceCmds#$sel:pVkImportFenceFdKHR:DeviceCmds)$sel:pVkDisplayPowerControlEXT:DeviceCmds)$sel:pVkRegisterDeviceEventEXT:DeviceCmds*$sel:pVkRegisterDisplayEventEXT:DeviceCmds)$sel:pVkGetSwapchainCounterEXT:DeviceCmds3$sel:pVkGetDeviceGroupPeerMemoryFeatures:DeviceCmds$$sel:pVkBindBufferMemory2:DeviceCmds#$sel:pVkBindImageMemory2:DeviceCmds#$sel:pVkCmdSetDeviceMask:DeviceCmds7$sel:pVkGetDeviceGroupPresentCapabilitiesKHR:DeviceCmds7$sel:pVkGetDeviceGroupSurfacePresentModesKHR:DeviceCmds'$sel:pVkAcquireNextImage2KHR:DeviceCmds"$sel:pVkCmdDispatchBase:DeviceCmds1$sel:pVkCreateDescriptorUpdateTemplate:DeviceCmds2$sel:pVkDestroyDescriptorUpdateTemplate:DeviceCmds2$sel:pVkUpdateDescriptorSetWithTemplate:DeviceCmds6$sel:pVkCmdPushDescriptorSetWithTemplateKHR:DeviceCmds$$sel:pVkSetHdrMetadataEXT:DeviceCmds($sel:pVkGetSwapchainStatusKHR:DeviceCmds0$sel:pVkGetRefreshCycleDurationGOOGLE:DeviceCmds2$sel:pVkGetPastPresentationTimingGOOGLE:DeviceCmds+$sel:pVkCmdSetViewportWScalingNV:DeviceCmds,$sel:pVkCmdSetDiscardRectangleEXT:DeviceCmds+$sel:pVkCmdSetSampleLocationsEXT:DeviceCmds/$sel:pVkGetBufferMemoryRequirements2:DeviceCmds.$sel:pVkGetImageMemoryRequirements2:DeviceCmds4$sel:pVkGetImageSparseMemoryRequirements2:DeviceCmds/$sel:pVkCreateSamplerYcbcrConversion:DeviceCmds0$sel:pVkDestroySamplerYcbcrConversion:DeviceCmds"$sel:pVkGetDeviceQueue2:DeviceCmds+$sel:pVkCreateValidationCacheEXT:DeviceCmds,$sel:pVkDestroyValidationCacheEXT:DeviceCmds,$sel:pVkGetValidationCacheDataEXT:DeviceCmds+$sel:pVkMergeValidationCachesEXT:DeviceCmds0$sel:pVkGetDescriptorSetLayoutSupport:DeviceCmds#$sel:pVkGetShaderInfoAMD:DeviceCmds%$sel:pVkSetLocalDimmingAMD:DeviceCmds-$sel:pVkGetCalibratedTimestampsEXT:DeviceCmds-$sel:pVkSetDebugUtilsObjectNameEXT:DeviceCmds,$sel:pVkSetDebugUtilsObjectTagEXT:DeviceCmds/$sel:pVkQueueBeginDebugUtilsLabelEXT:DeviceCmds-$sel:pVkQueueEndDebugUtilsLabelEXT:DeviceCmds0$sel:pVkQueueInsertDebugUtilsLabelEXT:DeviceCmds-$sel:pVkCmdBeginDebugUtilsLabelEXT:DeviceCmds+$sel:pVkCmdEndDebugUtilsLabelEXT:DeviceCmds.$sel:pVkCmdInsertDebugUtilsLabelEXT:DeviceCmds4$sel:pVkGetMemoryHostPointerPropertiesEXT:DeviceCmds*$sel:pVkCmdWriteBufferMarkerAMD:DeviceCmds$$sel:pVkCreateRenderPass2:DeviceCmds&$sel:pVkCmdBeginRenderPass2:DeviceCmds"$sel:pVkCmdNextSubpass2:DeviceCmds$$sel:pVkCmdEndRenderPass2:DeviceCmds+$sel:pVkGetSemaphoreCounterValue:DeviceCmds!$sel:pVkWaitSemaphores:DeviceCmds"$sel:pVkSignalSemaphore:DeviceCmds<$sel:pVkGetAndroidHardwareBufferPropertiesANDROID:DeviceCmds8$sel:pVkGetMemoryAndroidHardwareBufferANDROID:DeviceCmds'$sel:pVkCmdDrawIndirectCount:DeviceCmds.$sel:pVkCmdDrawIndexedIndirectCount:DeviceCmds%$sel:pVkCmdSetCheckpointNV:DeviceCmds+$sel:pVkGetQueueCheckpointDataNV:DeviceCmds5$sel:pVkCmdBindTransformFeedbackBuffersEXT:DeviceCmds/$sel:pVkCmdBeginTransformFeedbackEXT:DeviceCmds-$sel:pVkCmdEndTransformFeedbackEXT:DeviceCmds*$sel:pVkCmdBeginQueryIndexedEXT:DeviceCmds($sel:pVkCmdEndQueryIndexedEXT:DeviceCmds.$sel:pVkCmdDrawIndirectByteCountEXT:DeviceCmds+$sel:pVkCmdSetExclusiveScissorNV:DeviceCmds,$sel:pVkCmdBindShadingRateImageNV:DeviceCmds5$sel:pVkCmdSetViewportShadingRatePaletteNV:DeviceCmds,$sel:pVkCmdSetCoarseSampleOrderNV:DeviceCmds%$sel:pVkCmdDrawMeshTasksNV:DeviceCmds-$sel:pVkCmdDrawMeshTasksIndirectNV:DeviceCmds2$sel:pVkCmdDrawMeshTasksIndirectCountNV:DeviceCmds$$sel:pVkCompileDeferredNV:DeviceCmds0$sel:pVkCreateAccelerationStructureNV:DeviceCmds2$sel:pVkDestroyAccelerationStructureKHR:DeviceCmds@$sel:pVkGetAccelerationStructureMemoryRequirementsKHR:DeviceCmds?$sel:pVkGetAccelerationStructureMemoryRequirementsNV:DeviceCmds5$sel:pVkBindAccelerationStructureMemoryKHR:DeviceCmds1$sel:pVkCmdCopyAccelerationStructureNV:DeviceCmds2$sel:pVkCmdCopyAccelerationStructureKHR:DeviceCmds/$sel:pVkCopyAccelerationStructureKHR:DeviceCmds:$sel:pVkCmdCopyAccelerationStructureToMemoryKHR:DeviceCmds7$sel:pVkCopyAccelerationStructureToMemoryKHR:DeviceCmds:$sel:pVkCmdCopyMemoryToAccelerationStructureKHR:DeviceCmds7$sel:pVkCopyMemoryToAccelerationStructureKHR:DeviceCmds>$sel:pVkCmdWriteAccelerationStructuresPropertiesKHR:DeviceCmds2$sel:pVkCmdBuildAccelerationStructureNV:DeviceCmds;$sel:pVkWriteAccelerationStructuresPropertiesKHR:DeviceCmds"$sel:pVkCmdTraceRaysKHR:DeviceCmds!$sel:pVkCmdTraceRaysNV:DeviceCmds5$sel:pVkGetRayTracingShaderGroupHandlesKHR:DeviceCmdsB$sel:pVkGetRayTracingCaptureReplayShaderGroupHandlesKHR:DeviceCmds3$sel:pVkGetAccelerationStructureHandleNV:DeviceCmds.$sel:pVkCreateRayTracingPipelinesNV:DeviceCmds/$sel:pVkCreateRayTracingPipelinesKHR:DeviceCmds*$sel:pVkCmdTraceRaysIndirectKHR:DeviceCmdsA$sel:pVkGetDeviceAccelerationStructureCompatibilityKHR:DeviceCmds($sel:pVkGetImageViewHandleNVX:DeviceCmds)$sel:pVkGetImageViewAddressNVX:DeviceCmds8$sel:pVkGetDeviceGroupSurfacePresentModes2EXT:DeviceCmds4$sel:pVkAcquireFullScreenExclusiveModeEXT:DeviceCmds4$sel:pVkReleaseFullScreenExclusiveModeEXT:DeviceCmds*$sel:pVkAcquireProfilingLockKHR:DeviceCmds*$sel:pVkReleaseProfilingLockKHR:DeviceCmds9$sel:pVkGetImageDrmFormatModifierPropertiesEXT:DeviceCmds0$sel:pVkGetBufferOpaqueCaptureAddress:DeviceCmds)$sel:pVkGetBufferDeviceAddress:DeviceCmds0$sel:pVkInitializePerformanceApiINTEL:DeviceCmds2$sel:pVkUninitializePerformanceApiINTEL:DeviceCmds/$sel:pVkCmdSetPerformanceMarkerINTEL:DeviceCmds5$sel:pVkCmdSetPerformanceStreamMarkerINTEL:DeviceCmds1$sel:pVkCmdSetPerformanceOverrideINTEL:DeviceCmds7$sel:pVkAcquirePerformanceConfigurationINTEL:DeviceCmds7$sel:pVkReleasePerformanceConfigurationINTEL:DeviceCmds8$sel:pVkQueueSetPerformanceConfigurationINTEL:DeviceCmds/$sel:pVkGetPerformanceParameterINTEL:DeviceCmds6$sel:pVkGetDeviceMemoryOpaqueCaptureAddress:DeviceCmds5$sel:pVkGetPipelineExecutablePropertiesKHR:DeviceCmds5$sel:pVkGetPipelineExecutableStatisticsKHR:DeviceCmdsB$sel:pVkGetPipelineExecutableInternalRepresentationsKHR:DeviceCmds'$sel:pVkCmdSetLineStippleEXT:DeviceCmds1$sel:pVkCreateAccelerationStructureKHR:DeviceCmds3$sel:pVkCmdBuildAccelerationStructureKHR:DeviceCmds;$sel:pVkCmdBuildAccelerationStructureIndirectKHR:DeviceCmds0$sel:pVkBuildAccelerationStructureKHR:DeviceCmds;$sel:pVkGetAccelerationStructureDeviceAddressKHR:DeviceCmds-$sel:pVkCreateDeferredOperationKHR:DeviceCmds.$sel:pVkDestroyDeferredOperationKHR:DeviceCmds8$sel:pVkGetDeferredOperationMaxConcurrencyKHR:DeviceCmds0$sel:pVkGetDeferredOperationResultKHR:DeviceCmds+$sel:pVkDeferredOperationJoinKHR:DeviceCmds InstanceCmds$$sel:instanceCmdsHandle:InstanceCmds$$sel:pVkDestroyInstance:InstanceCmds-$sel:pVkEnumeratePhysicalDevices:InstanceCmds($sel:pVkGetInstanceProcAddr:InstanceCmds0$sel:pVkGetPhysicalDeviceProperties:InstanceCmds;$sel:pVkGetPhysicalDeviceQueueFamilyProperties:InstanceCmds6$sel:pVkGetPhysicalDeviceMemoryProperties:InstanceCmds.$sel:pVkGetPhysicalDeviceFeatures:InstanceCmds6$sel:pVkGetPhysicalDeviceFormatProperties:InstanceCmds;$sel:pVkGetPhysicalDeviceImageFormatProperties:InstanceCmds!$sel:pVkCreateDevice:InstanceCmds3$sel:pVkEnumerateDeviceLayerProperties:InstanceCmds7$sel:pVkEnumerateDeviceExtensionProperties:InstanceCmdsA$sel:pVkGetPhysicalDeviceSparseImageFormatProperties:InstanceCmds,$sel:pVkCreateAndroidSurfaceKHR:InstanceCmds:$sel:pVkGetPhysicalDeviceDisplayPropertiesKHR:InstanceCmds?$sel:pVkGetPhysicalDeviceDisplayPlanePropertiesKHR:InstanceCmds8$sel:pVkGetDisplayPlaneSupportedDisplaysKHR:InstanceCmds0$sel:pVkGetDisplayModePropertiesKHR:InstanceCmds)$sel:pVkCreateDisplayModeKHR:InstanceCmds3$sel:pVkGetDisplayPlaneCapabilitiesKHR:InstanceCmds1$sel:pVkCreateDisplayPlaneSurfaceKHR:InstanceCmds&$sel:pVkDestroySurfaceKHR:InstanceCmds7$sel:pVkGetPhysicalDeviceSurfaceSupportKHR:InstanceCmds<$sel:pVkGetPhysicalDeviceSurfaceCapabilitiesKHR:InstanceCmds7$sel:pVkGetPhysicalDeviceSurfaceFormatsKHR:InstanceCmds<$sel:pVkGetPhysicalDeviceSurfacePresentModesKHR:InstanceCmds&$sel:pVkCreateViSurfaceNN:InstanceCmds,$sel:pVkCreateWaylandSurfaceKHR:InstanceCmdsC$sel:pVkGetPhysicalDeviceWaylandPresentationSupportKHR:InstanceCmds*$sel:pVkCreateWin32SurfaceKHR:InstanceCmdsA$sel:pVkGetPhysicalDeviceWin32PresentationSupportKHR:InstanceCmds)$sel:pVkCreateXlibSurfaceKHR:InstanceCmds@$sel:pVkGetPhysicalDeviceXlibPresentationSupportKHR:InstanceCmds($sel:pVkCreateXcbSurfaceKHR:InstanceCmds?$sel:pVkGetPhysicalDeviceXcbPresentationSupportKHR:InstanceCmds2$sel:pVkCreateImagePipeSurfaceFUCHSIA:InstanceCmds5$sel:pVkCreateStreamDescriptorSurfaceGGP:InstanceCmds1$sel:pVkCreateDebugReportCallbackEXT:InstanceCmds2$sel:pVkDestroyDebugReportCallbackEXT:InstanceCmds*$sel:pVkDebugReportMessageEXT:InstanceCmdsE$sel:pVkGetPhysicalDeviceExternalImageFormatPropertiesNV:InstanceCmds/$sel:pVkGetPhysicalDeviceFeatures2:InstanceCmds1$sel:pVkGetPhysicalDeviceProperties2:InstanceCmds7$sel:pVkGetPhysicalDeviceFormatProperties2:InstanceCmds<$sel:pVkGetPhysicalDeviceImageFormatProperties2:InstanceCmds<$sel:pVkGetPhysicalDeviceQueueFamilyProperties2:InstanceCmds7$sel:pVkGetPhysicalDeviceMemoryProperties2:InstanceCmdsB$sel:pVkGetPhysicalDeviceSparseImageFormatProperties2:InstanceCmds>$sel:pVkGetPhysicalDeviceExternalBufferProperties:InstanceCmdsA$sel:pVkGetPhysicalDeviceExternalSemaphoreProperties:InstanceCmds=$sel:pVkGetPhysicalDeviceExternalFenceProperties:InstanceCmds&$sel:pVkReleaseDisplayEXT:InstanceCmds*$sel:pVkAcquireXlibDisplayEXT:InstanceCmds-$sel:pVkGetRandROutputDisplayEXT:InstanceCmds=$sel:pVkGetPhysicalDeviceSurfaceCapabilities2EXT:InstanceCmds2$sel:pVkEnumeratePhysicalDeviceGroups:InstanceCmds:$sel:pVkGetPhysicalDevicePresentRectanglesKHR:InstanceCmds($sel:pVkCreateIOSSurfaceMVK:InstanceCmds*$sel:pVkCreateMacOSSurfaceMVK:InstanceCmds*$sel:pVkCreateMetalSurfaceEXT:InstanceCmds>$sel:pVkGetPhysicalDeviceMultisamplePropertiesEXT:InstanceCmds=$sel:pVkGetPhysicalDeviceSurfaceCapabilities2KHR:InstanceCmds8$sel:pVkGetPhysicalDeviceSurfaceFormats2KHR:InstanceCmds;$sel:pVkGetPhysicalDeviceDisplayProperties2KHR:InstanceCmds@$sel:pVkGetPhysicalDeviceDisplayPlaneProperties2KHR:InstanceCmds1$sel:pVkGetDisplayModeProperties2KHR:InstanceCmds4$sel:pVkGetDisplayPlaneCapabilities2KHR:InstanceCmdsA$sel:pVkGetPhysicalDeviceCalibrateableTimeDomainsEXT:InstanceCmds1$sel:pVkCreateDebugUtilsMessengerEXT:InstanceCmds2$sel:pVkDestroyDebugUtilsMessengerEXT:InstanceCmds/$sel:pVkSubmitDebugUtilsMessageEXT:InstanceCmdsC$sel:pVkGetPhysicalDeviceCooperativeMatrixPropertiesNV:InstanceCmds=$sel:pVkGetPhysicalDeviceSurfacePresentModes2EXT:InstanceCmdsR$sel:pVkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR:InstanceCmdsJ$sel:pVkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR:InstanceCmds-$sel:pVkCreateHeadlessSurfaceEXT:InstanceCmdsT$sel:pVkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV:InstanceCmds7$sel:pVkGetPhysicalDeviceToolPropertiesEXT:InstanceCmdsgetInstanceProcAddr'initInstanceCmdsinitDeviceCmds$fZeroInstanceCmds$fZeroDeviceCmds$fShowDeviceCmds$fEqDeviceCmds$fShowInstanceCmds$fEqInstanceCmdsShaderFloatControlsIndependence'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_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_CODEPLAYVENDOR_ID_KAZAN VENDOR_ID_VSI VENDOR_ID_VIV$fReadVendorId$fShowVendorId $fEqVendorId $fOrdVendorId$fStorableVendorId$fZeroVendorIdSystemAllocationScope SYSTEM_ALLOCATION_SCOPE_INSTANCESYSTEM_ALLOCATION_SCOPE_DEVICESYSTEM_ALLOCATION_SCOPE_CACHESYSTEM_ALLOCATION_SCOPE_OBJECTSYSTEM_ALLOCATION_SCOPE_COMMAND$fReadSystemAllocationScope$fShowSystemAllocationScope$fEqSystemAllocationScope$fOrdSystemAllocationScope$fStorableSystemAllocationScope$fZeroSystemAllocationScope*SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERSSUBPASS_CONTENTS_INLINE$fReadSubpassContents$fShowSubpassContents$fEqSubpassContents$fOrdSubpassContents$fStorableSubpassContents$fZeroSubpassContents StructureType2STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES&STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO%STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO5STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS-STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO)STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO2STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO5STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO'STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO3STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO2STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO/STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES.STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO0STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2/STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_26STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2$STRUCTURE_TYPE_MEMORY_REQUIREMENTS_21STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2)STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2+STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2"STRUCTURE_TYPE_FORMAT_PROPERTIES_2(STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_22STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2(STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_22STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2/STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_29STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_28STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES>STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO+STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFODSTRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO0STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO1STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES3STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES9STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES$STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO8STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES:STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"STRUCTURE_TYPE_DEVICE_QUEUE_INFO_23STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO+STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO3STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO@STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES?STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES5STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO9STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO/STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES3STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO)STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES,STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES1STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO0STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO*STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO2STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO(STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES'STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO+STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO6STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES7STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT>STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES2STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES4STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES2STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES4STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES,STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO'STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2%STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2$STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2#STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2(STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2!STRUCTURE_TYPE_SUBPASS_BEGIN_INFOSTRUCTURE_TYPE_SUBPASS_END_INFO4STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES0STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES;STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES;STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES8STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES>STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO;STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES=STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIESESTRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFOFSTRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT?STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES8STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE;STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES.STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO?STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES1STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO;STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES=STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES2STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO0STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO0STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFOFSTRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURESFSTRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURESFSTRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES2STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT4STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT8STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES:STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURESSTRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT@STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXTBSTRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT)STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX0STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX7STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD8STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP?STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV3STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV-STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV1STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV1STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV8STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV4STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR.STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR3STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR*STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR,STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR5STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR#STRUCTURE_TYPE_VALIDATION_FLAGS_EXT(STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NNHSTRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT.STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT7STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT2STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR2STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR1STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR/STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR(STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR'STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR%STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR9STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR5STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR5STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR*STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR2STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR+STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR(STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR=STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHRHSTRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXTASTRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT3STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT"STRUCTURE_TYPE_PRESENT_REGIONS_KHR?STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV)STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT%STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT$STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT%STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT0STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT(STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLEKSTRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX=STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV?STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT?STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXTHSTRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXTHSTRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT=STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXTFSTRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXTSTRUCTURE_TYPE_HDR_METADATA_EXT6STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR1STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR1STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR.STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR'STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR$STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR=STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR?STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR5STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR0STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR.STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR&STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR2STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR1STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR)STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR#STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR'STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR-STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR,STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR'STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR/STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR*STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK,STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK/STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT.STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT$STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT6STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT4STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT4STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID9STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID@STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID:STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID>STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID&STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID@STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXTBSTRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXTSTRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT>STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT)STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXTDSTRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXTFSTRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXTBSTRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT>STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV:STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR>STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR=STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHRCSTRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR=STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR=STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHRASTRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHRASTRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR2STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHRBSTRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR1STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR3STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR=STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR=STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR7STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR9STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR3STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR7STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR5STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR=STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR@STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV=STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV?STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV6STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT1STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXTASTRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT=STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXTASTRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT7STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT/STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT=STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXTHSTRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV=STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV?STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NVISTRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV2STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV4STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NVSTRUCTURE_TYPE_GEOMETRY_NV$STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NVSTRUCTURE_TYPE_GEOMETRY_AABB_NVASTRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV8STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV6STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV-STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NVGSTRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NVISTRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV?STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXTBSTRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT;STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT2STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT1STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXTBSTRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT8STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR8STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD,STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT9STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD;STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMDFSTRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXTBSTRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXTDSTRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT&STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP9STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXTESTRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV6STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV8STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NVFSTRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NVASTRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NVGSTRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NVSTRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT5STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT=STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT;STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT/STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT>STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT@STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT@STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXTSTRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHRNSTRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXTFSTRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV3STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV=STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV0STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV6STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV)STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV=STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NVDSTRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NVBSTRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXTDSTRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXTISTRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM4STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM8STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT:STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT/STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHRKSTRUCTURE_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_LOADER_DEVICE_CREATE_INFO*STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFOSTRUCTURE_TYPE_MEMORY_BARRIER#STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER$STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER%STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO(STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO+STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO'STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO&STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO&STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO"STRUCTURE_TYPE_COPY_DESCRIPTOR_SET#STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET+STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO*STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO0STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO"STRUCTURE_TYPE_SAMPLER_CREATE_INFO*STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO+STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO,STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO1STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO5STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO7STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO5STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO7STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO2STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO8STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO6STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO0STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO)STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO(STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO%STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO STRUCTURE_TYPE_IMAGE_CREATE_INFO&STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO!STRUCTURE_TYPE_BUFFER_CREATE_INFO%STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO STRUCTURE_TYPE_EVENT_CREATE_INFO$STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO STRUCTURE_TYPE_FENCE_CREATE_INFOSTRUCTURE_TYPE_BIND_SPARSE_INFO"STRUCTURE_TYPE_MAPPED_MEMORY_RANGE#STRUCTURE_TYPE_MEMORY_ALLOCATE_INFOSTRUCTURE_TYPE_SUBMIT_INFO!STRUCTURE_TYPE_DEVICE_CREATE_INFO'STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO#STRUCTURE_TYPE_INSTANCE_CREATE_INFOSTRUCTURE_TYPE_APPLICATION_INFO$fReadStructureType$fShowStructureType$fEqStructureType$fOrdStructureType$fStorableStructureType$fZeroStructureTypeGGP_FRAME_TOKEN_EXTENSION_NAMEGGP_FRAME_TOKEN_SPEC_VERSION$$sel:frameToken:PresentFrameTokenGGP$fZeroPresentFrameTokenGGP$fStorablePresentFrameTokenGGP!$fFromCStructPresentFrameTokenGGP$fToCStructPresentFrameTokenGGP$fShowPresentFrameTokenGGP#EXT_VALIDATION_FLAGS_EXTENSION_NAME!EXT_VALIDATION_FLAGS_SPEC_VERSIONValidationCheckEXT0$sel:disabledValidationChecks:ValidationFlagsEXTVALIDATION_CHECK_SHADERS_EXTVALIDATION_CHECK_ALL_EXT$fReadValidationCheckEXT$fShowValidationCheckEXT$fZeroValidationFlagsEXT$fFromCStructValidationFlagsEXT$fToCStructValidationFlagsEXT$fEqValidationCheckEXT$fOrdValidationCheckEXT$fStorableValidationCheckEXT$fZeroValidationCheckEXT$fShowValidationFlagsEXT&EXT_VALIDATION_FEATURES_EXTENSION_NAME$EXT_VALIDATION_FEATURES_SPEC_VERSIONValidationFeatureDisableEXTValidationFeatureEnableEXT4$sel:enabledValidationFeatures:ValidationFeaturesEXT5$sel:disabledValidationFeatures:ValidationFeaturesEXT-VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT*VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT/VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT-VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT,VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT&VALIDATION_FEATURE_DISABLE_SHADERS_EXT"VALIDATION_FEATURE_DISABLE_ALL_EXT*VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT,VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT?VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT*VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT $fReadValidationFeatureEnableEXT $fShowValidationFeatureEnableEXT!$fReadValidationFeatureDisableEXT!$fShowValidationFeatureDisableEXT$fZeroValidationFeaturesEXT"$fFromCStructValidationFeaturesEXT $fToCStructValidationFeaturesEXT$fEqValidationFeatureEnableEXT$fOrdValidationFeatureEnableEXT$$fStorableValidationFeatureEnableEXT $fZeroValidationFeatureEnableEXT$fEqValidationFeatureDisableEXT $fOrdValidationFeatureDisableEXT%$fStorableValidationFeatureDisableEXT!$fZeroValidationFeatureDisableEXT$fShowValidationFeaturesEXTEXT_PCI_BUS_INFO_EXTENSION_NAMEEXT_PCI_BUS_INFO_SPEC_VERSION4$sel:pciDomain:PhysicalDevicePCIBusInfoPropertiesEXT1$sel:pciBus:PhysicalDevicePCIBusInfoPropertiesEXT4$sel:pciDevice:PhysicalDevicePCIBusInfoPropertiesEXT6$sel:pciFunction:PhysicalDevicePCIBusInfoPropertiesEXT+$fZeroPhysicalDevicePCIBusInfoPropertiesEXT/$fStorablePhysicalDevicePCIBusInfoPropertiesEXT2$fFromCStructPhysicalDevicePCIBusInfoPropertiesEXT0$fToCStructPhysicalDevicePCIBusInfoPropertiesEXT+$fShowPhysicalDevicePCIBusInfoPropertiesEXT"EXT_GLOBAL_PRIORITY_EXTENSION_NAME EXT_GLOBAL_PRIORITY_SPEC_VERSIONQueueGlobalPriorityEXT:$sel:globalPriority:DeviceQueueGlobalPriorityCreateInfoEXT"QUEUE_GLOBAL_PRIORITY_REALTIME_EXTQUEUE_GLOBAL_PRIORITY_HIGH_EXT QUEUE_GLOBAL_PRIORITY_MEDIUM_EXTQUEUE_GLOBAL_PRIORITY_LOW_EXT$fReadQueueGlobalPriorityEXT$fShowQueueGlobalPriorityEXT,$fZeroDeviceQueueGlobalPriorityCreateInfoEXT0$fStorableDeviceQueueGlobalPriorityCreateInfoEXT3$fFromCStructDeviceQueueGlobalPriorityCreateInfoEXT1$fToCStructDeviceQueueGlobalPriorityCreateInfoEXT$fEqQueueGlobalPriorityEXT$fOrdQueueGlobalPriorityEXT $fStorableQueueGlobalPriorityEXT$fZeroQueueGlobalPriorityEXT,$fShowDeviceQueueGlobalPriorityCreateInfoEXT)AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME'AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION<$sel:shaderEngineCount:PhysicalDeviceShaderCorePropertiesAMDE$sel:shaderArraysPerEngineCount:PhysicalDeviceShaderCorePropertiesAMDE$sel:computeUnitsPerShaderArray:PhysicalDeviceShaderCorePropertiesAMD=$sel:simdPerComputeUnit:PhysicalDeviceShaderCorePropertiesAMD<$sel:wavefrontsPerSimd:PhysicalDeviceShaderCorePropertiesAMD8$sel:wavefrontSize:PhysicalDeviceShaderCorePropertiesAMD7$sel:sgprsPerSimd:PhysicalDeviceShaderCorePropertiesAMD<$sel:minSgprAllocation:PhysicalDeviceShaderCorePropertiesAMD<$sel:maxSgprAllocation:PhysicalDeviceShaderCorePropertiesAMDD$sel:sgprAllocationGranularity:PhysicalDeviceShaderCorePropertiesAMD7$sel:vgprsPerSimd:PhysicalDeviceShaderCorePropertiesAMD<$sel:minVgprAllocation:PhysicalDeviceShaderCorePropertiesAMD<$sel:maxVgprAllocation:PhysicalDeviceShaderCorePropertiesAMDD$sel:vgprAllocationGranularity:PhysicalDeviceShaderCorePropertiesAMD+$fZeroPhysicalDeviceShaderCorePropertiesAMD/$fStorablePhysicalDeviceShaderCorePropertiesAMD2$fFromCStructPhysicalDeviceShaderCorePropertiesAMD0$fToCStructPhysicalDeviceShaderCorePropertiesAMD+$fShowPhysicalDeviceShaderCorePropertiesAMD&AMD_RASTERIZATION_ORDER_EXTENSION_NAME$AMD_RASTERIZATION_ORDER_SPEC_VERSIONRasterizationOrderAMDG$sel:rasterizationOrder:PipelineRasterizationStateRasterizationOrderAMDRASTERIZATION_ORDER_RELAXED_AMDRASTERIZATION_ORDER_STRICT_AMD$fReadRasterizationOrderAMD$fShowRasterizationOrderAMD5$fZeroPipelineRasterizationStateRasterizationOrderAMD9$fStorablePipelineRasterizationStateRasterizationOrderAMD<$fFromCStructPipelineRasterizationStateRasterizationOrderAMD:$fToCStructPipelineRasterizationStateRasterizationOrderAMD$fEqRasterizationOrderAMD$fOrdRasterizationOrderAMD$fStorableRasterizationOrderAMD$fZeroRasterizationOrderAMD5$fShowPipelineRasterizationStateRasterizationOrderAMD1AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME/AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSIONMemoryOverallocationBehaviorAMDC$sel:overallocationBehavior:DeviceMemoryOverallocationCreateInfoAMD-MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD*MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD*MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD%$fReadMemoryOverallocationBehaviorAMD%$fShowMemoryOverallocationBehaviorAMD-$fZeroDeviceMemoryOverallocationCreateInfoAMD1$fStorableDeviceMemoryOverallocationCreateInfoAMD4$fFromCStructDeviceMemoryOverallocationCreateInfoAMD2$fToCStructDeviceMemoryOverallocationCreateInfoAMD#$fEqMemoryOverallocationBehaviorAMD$$fOrdMemoryOverallocationBehaviorAMD)$fStorableMemoryOverallocationBehaviorAMD%$fZeroMemoryOverallocationBehaviorAMD-$fShowDeviceMemoryOverallocationCreateInfoAMD StencilOpSTENCIL_OP_DECREMENT_AND_WRAPSTENCIL_OP_INCREMENT_AND_WRAPSTENCIL_OP_INVERTSTENCIL_OP_DECREMENT_AND_CLAMPSTENCIL_OP_INCREMENT_AND_CLAMPSTENCIL_OP_REPLACESTENCIL_OP_ZERO$fReadStencilOp$fShowStencilOp $fEqStencilOp$fOrdStencilOp$fStorableStencilOp$fZeroStencilOp SharingMode$fReadSharingMode$fShowSharingMode$fEqSharingMode$fOrdSharingMode$fStorableSharingMode$fZeroSharingModeSamplerMipmapMode$fReadSamplerMipmapMode$fShowSamplerMipmapMode$fEqSamplerMipmapMode$fOrdSamplerMipmapMode$fStorableSamplerMipmapMode$fZeroSamplerMipmapMode$SAMPLER_ADDRESS_MODE_MIRRORED_REPEATSAMPLER_ADDRESS_MODE_REPEAT$fReadSamplerAddressMode$fShowSamplerAddressMode$fEqSamplerAddressMode$fOrdSamplerAddressMode$fStorableSamplerAddressMode$fZeroSamplerAddressMode/KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME-KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION-SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHRERROR_OUT_OF_POOL_MEMORYERROR_INVALID_EXTERNAL_HANDLEERROR_FRAGMENTATION$ERROR_INVALID_OPAQUE_CAPTURE_ADDRESSERROR_SURFACE_LOST_KHRERROR_NATIVE_WINDOW_IN_USE_KHRSUBOPTIMAL_KHRERROR_OUT_OF_DATE_KHRERROR_INCOMPATIBLE_DISPLAY_KHRERROR_VALIDATION_FAILED_EXTERROR_INVALID_SHADER_NVERROR_INCOMPATIBLE_VERSION_KHR2ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXTERROR_NOT_PERMITTED_EXT)ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXTTHREAD_IDLE_KHRTHREAD_DONE_KHROPERATION_DEFERRED_KHROPERATION_NOT_DEFERRED_KHR ERROR_UNKNOWNERROR_FRAGMENTED_POOLERROR_TOO_MANY_OBJECTSERROR_INCOMPATIBLE_DRIVERERROR_FEATURE_NOT_PRESENTERROR_EXTENSION_NOT_PRESENTERROR_LAYER_NOT_PRESENTERROR_MEMORY_MAP_FAILEDERROR_INITIALIZATION_FAILEDERROR_OUT_OF_DEVICE_MEMORY INCOMPLETE EVENT_RESET EVENT_SETTIMEOUT NOT_READYSUCCESS $fReadResult $fShowResult $fEqResult $fOrdResult$fStorableResult $fZeroResultVulkanException*$sel:vulkanExceptionResult:VulkanException$fExceptionVulkanException$fEqVulkanException$fOrdVulkanException$fReadVulkanException$fShowVulkanException4QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR8QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR$fReadQueryType$fShowQueryType $fEqQueryType$fOrdQueryType$fStorableQueryType$fZeroQueryTypePrimitiveTopologyPRIMITIVE_TOPOLOGY_TRIANGLE_FAN!PRIMITIVE_TOPOLOGY_TRIANGLE_STRIPPRIMITIVE_TOPOLOGY_LINE_STRIP$fReadPrimitiveTopology$fShowPrimitiveTopology$fEqPrimitiveTopology$fOrdPrimitiveTopology$fStorablePrimitiveTopology$fZeroPrimitiveTopology PolygonMode$fReadPolygonMode$fShowPolygonMode$fEqPolygonMode$fOrdPolygonMode$fStorablePolygonMode$fZeroPolygonMode $fReadPipelineCacheHeaderVersion $fShowPipelineCacheHeaderVersion$fEqPipelineCacheHeaderVersion$fOrdPipelineCacheHeaderVersion$$fStorablePipelineCacheHeaderVersion $fZeroPipelineCacheHeaderVersion#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 ObjectType$OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION&OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATEOBJECT_TYPE_SURFACE_KHROBJECT_TYPE_SWAPCHAIN_KHROBJECT_TYPE_DISPLAY_KHROBJECT_TYPE_DISPLAY_MODE_KHR%OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT%OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT&OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR OBJECT_TYPE_VALIDATION_CACHE_EXT+OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL"OBJECT_TYPE_DEFERRED_OPERATION_KHR'OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVOBJECT_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$fZeroObjectTypeLogicOp 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_vkInternalAllocationNotification$fReadIndexType$fShowIndexType $fEqIndexType$fOrdIndexType$fStorableIndexType$fZeroIndexType$fReadImageViewType$fShowImageViewType$fEqImageViewType$fOrdImageViewType$fStorableImageViewType$fZeroImageViewType$fReadImageType$fShowImageType $fEqImageType$fOrdImageType$fStorableImageType$fZeroImageType$fReadImageTiling$fShowImageTiling$fEqImageTiling$fOrdImageTiling$fStorableImageTiling$fZeroImageTiling$fReadImageLayout$fShowImageLayout$fEqImageLayout$fOrdImageLayout$fStorableImageLayout$fZeroImageLayout$fReadFrontFace$fShowFrontFace $fEqFrontFace$fOrdFrontFace$fStorableFrontFace$fZeroFrontFaceFORMAT_G8B8G8R8_422_UNORMFORMAT_B8G8R8G8_422_UNORM FORMAT_G8_B8_R8_3PLANE_422_UNORMFORMAT_G8_B8R8_2PLANE_422_UNORM FORMAT_G8_B8_R8_3PLANE_444_UNORMFORMAT_R10X6_UNORM_PACK16FORMAT_R10X6G10X6_UNORM_2PACK16)FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16-FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16-FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK160FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK161FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK160FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK161FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16FORMAT_R12X4_UNORM_PACK16FORMAT_R12X4G12X4_UNORM_2PACK16)FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16-FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16-FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK161FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK160FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK161FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK160FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK161FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16FORMAT_G16B16G16R16_422_UNORMFORMAT_B16G16R16G16_422_UNORM#FORMAT_G16_B16_R16_3PLANE_420_UNORM"FORMAT_G16_B16R16_2PLANE_420_UNORM#FORMAT_G16_B16_R16_3PLANE_422_UNORM"FORMAT_G16_B16R16_2PLANE_422_UNORM#FORMAT_G16_B16_R16_3PLANE_444_UNORM"FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG"FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG"FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG"FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG!FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG!FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG!FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG!FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMGFORMAT_EAC_R11G11_SNORM_BLOCKFORMAT_EAC_R11G11_UNORM_BLOCKFORMAT_EAC_R11_SNORM_BLOCKFORMAT_EAC_R11_UNORM_BLOCKFORMAT_ETC2_R8G8B8A8_SRGB_BLOCK FORMAT_ETC2_R8G8B8A8_UNORM_BLOCKFORMAT_ETC2_R8G8B8A1_SRGB_BLOCK FORMAT_ETC2_R8G8B8A1_UNORM_BLOCKFORMAT_ETC2_R8G8B8_SRGB_BLOCKFORMAT_ETC2_R8G8B8_UNORM_BLOCKFORMAT_BC7_SRGB_BLOCKFORMAT_BC7_UNORM_BLOCKFORMAT_BC6H_SFLOAT_BLOCKFORMAT_BC6H_UFLOAT_BLOCKFORMAT_BC5_SNORM_BLOCKFORMAT_BC5_UNORM_BLOCKFORMAT_BC4_SNORM_BLOCKFORMAT_BC4_UNORM_BLOCKFORMAT_BC3_SRGB_BLOCKFORMAT_BC3_UNORM_BLOCKFORMAT_BC2_SRGB_BLOCKFORMAT_BC2_UNORM_BLOCKFORMAT_BC1_RGBA_SRGB_BLOCKFORMAT_BC1_RGBA_UNORM_BLOCKFORMAT_BC1_RGB_SRGB_BLOCKFORMAT_BC1_RGB_UNORM_BLOCKFORMAT_B10G11R11_UFLOAT_PACK32FORMAT_R64G64B64A64_SFLOATFORMAT_R64G64B64A64_SINTFORMAT_R64G64B64A64_UINTFORMAT_R64G64B64_SFLOATFORMAT_R64G64B64_SINTFORMAT_R64G64B64_UINTFORMAT_R64G64_SFLOATFORMAT_R64G64_SINTFORMAT_R64G64_UINTFORMAT_R64_SFLOATFORMAT_R64_SINTFORMAT_R64_UINTFORMAT_R32G32B32A32_SFLOATFORMAT_R32G32B32A32_SINTFORMAT_R32G32B32A32_UINTFORMAT_R32G32B32_SINTFORMAT_R32G32B32_UINTFORMAT_R32G32_SINTFORMAT_R32G32_UINTFORMAT_R32_SFLOATFORMAT_R16G16B16A16_SINTFORMAT_R16G16B16A16_UINTFORMAT_R16G16B16A16_SSCALEDFORMAT_R16G16B16A16_USCALEDFORMAT_R16G16B16A16_SNORMFORMAT_R16G16B16A16_UNORMFORMAT_R16G16B16_SINTFORMAT_R16G16B16_UINTFORMAT_R16G16B16_SSCALEDFORMAT_R16G16B16_USCALEDFORMAT_R16G16B16_UNORMFORMAT_R16G16_SINTFORMAT_R16G16_UINTFORMAT_R16G16_SSCALEDFORMAT_R16G16_USCALEDFORMAT_R16G16_UNORMFORMAT_R16_SFLOATFORMAT_R16_SSCALEDFORMAT_R16_USCALEDFORMAT_R16_SNORMFORMAT_R16_UNORMFORMAT_A2B10G10R10_SINT_PACK32FORMAT_A2B10G10R10_UINT_PACK32!FORMAT_A2B10G10R10_SSCALED_PACK32!FORMAT_A2B10G10R10_USCALED_PACK32FORMAT_A2B10G10R10_SNORM_PACK32FORMAT_A2B10G10R10_UNORM_PACK32FORMAT_A2R10G10B10_SINT_PACK32FORMAT_A2R10G10B10_UINT_PACK32!FORMAT_A2R10G10B10_SSCALED_PACK32!FORMAT_A2R10G10B10_USCALED_PACK32FORMAT_A2R10G10B10_SNORM_PACK32FORMAT_A2R10G10B10_UNORM_PACK32FORMAT_A8B8G8R8_SRGB_PACK32FORMAT_A8B8G8R8_SINT_PACK32FORMAT_A8B8G8R8_UINT_PACK32FORMAT_A8B8G8R8_SSCALED_PACK32FORMAT_A8B8G8R8_USCALED_PACK32FORMAT_A8B8G8R8_SNORM_PACK32FORMAT_A8B8G8R8_UNORM_PACK32FORMAT_B8G8R8A8_SRGBFORMAT_B8G8R8A8_SINTFORMAT_B8G8R8A8_UINTFORMAT_B8G8R8A8_SSCALEDFORMAT_B8G8R8A8_USCALEDFORMAT_B8G8R8A8_SNORMFORMAT_B8G8R8A8_UNORMFORMAT_R8G8B8A8_SRGBFORMAT_R8G8B8A8_SINTFORMAT_R8G8B8A8_UINTFORMAT_R8G8B8A8_SSCALEDFORMAT_R8G8B8A8_USCALEDFORMAT_R8G8B8A8_SNORMFORMAT_B8G8R8_SRGBFORMAT_B8G8R8_SINTFORMAT_B8G8R8_UINTFORMAT_B8G8R8_SSCALEDFORMAT_B8G8R8_USCALEDFORMAT_B8G8R8_SNORMFORMAT_B8G8R8_UNORMFORMAT_R8G8B8_SRGBFORMAT_R8G8B8_SINTFORMAT_R8G8B8_UINTFORMAT_R8G8B8_SSCALEDFORMAT_R8G8B8_USCALEDFORMAT_R8G8B8_SNORMFORMAT_R8G8B8_UNORMFORMAT_R8G8_SRGBFORMAT_R8G8_SINTFORMAT_R8G8_UINTFORMAT_R8G8_SSCALEDFORMAT_R8G8_USCALEDFORMAT_R8G8_SNORMFORMAT_R8_SRGBFORMAT_R8_SSCALEDFORMAT_R8_USCALEDFORMAT_R8_SNORMFORMAT_R8_UNORMFORMAT_A1R5G5B5_UNORM_PACK16FORMAT_B5G5R5A1_UNORM_PACK16FORMAT_R5G5B5A1_UNORM_PACK16FORMAT_B5G6R5_UNORM_PACK16FORMAT_R5G6B5_UNORM_PACK16FORMAT_B4G4R4A4_UNORM_PACK16FORMAT_R4G4B4A4_UNORM_PACK16FORMAT_R4G4_UNORM_PACK8 $fReadFormat $fShowFormat $fEqFormat $fOrdFormat$fStorableFormat $fZeroFormat*$sel:viewFormats:ImageFormatListCreateInfo$fZeroImageFormatListCreateInfo&$fFromCStructImageFormatListCreateInfo$$fToCStructImageFormatListCreateInfo$fShowImageFormatListCreateInfo$KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME"KHR_IMAGE_FORMAT_LIST_SPEC_VERSIONImageFormatListCreateInfoKHR0STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHRFILTER_CUBIC_IMG $fReadFilter $fShowFilter $fEqFilter $fOrdFilter$fStorableFilter $fZeroFilter DynamicState#DYNAMIC_STATE_DISCARD_RECTANGLE_EXTDYNAMIC_STATE_STENCIL_REFERENCE DYNAMIC_STATE_STENCIL_WRITE_MASK"DYNAMIC_STATE_STENCIL_COMPARE_MASKDYNAMIC_STATE_BLEND_CONSTANTS$fReadDynamicState$fShowDynamicState$fEqDynamicState$fOrdDynamicState$fStorableDynamicState$fZeroDynamicStateDescriptorType$fReadDescriptorType$fShowDescriptorType$fEqDescriptorType$fOrdDescriptorType$fStorableDescriptorType$fZeroDescriptorTypeCOMPONENT_SWIZZLE_A$fReadComponentSwizzle$fShowComponentSwizzle$fEqComponentSwizzle$fOrdComponentSwizzle$fStorableComponentSwizzle$fZeroComponentSwizzle CompareOpCOMPARE_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$fZeroCompareOpCommandBufferLevelCOMMAND_BUFFER_LEVEL_PRIMARY$fReadCommandBufferLevel$fShowCommandBufferLevel$fEqCommandBufferLevel$fOrdCommandBufferLevel$fStorableCommandBufferLevel$fZeroCommandBufferLevel 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_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_HSL_HUE_EXTBLEND_OP_HSL_SATURATION_EXTBLEND_OP_HSL_COLOR_EXTBLEND_OP_HSL_LUMINOSITY_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$fZeroAttachmentLoadOpFlags boolToBool32 bool32ToBool $fReadBool32 $fShowBool32 $fEqBool32 $fOrdBool32$fStorableBool32 $fZeroBool32"NV_VIEWPORT_SWIZZLE_EXTENSION_NAME NV_VIEWPORT_SWIZZLE_SPEC_VERSIONViewportCoordinateSwizzleNV)PipelineViewportSwizzleStateCreateFlagsNV3$sel:flags:PipelineViewportSwizzleStateCreateInfoNV>$sel:viewportSwizzles:PipelineViewportSwizzleStateCreateInfoNV$sel:x:ViewportSwizzleNV$sel:y:ViewportSwizzleNV$sel:z:ViewportSwizzleNV$sel:w:ViewportSwizzleNV)VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV)VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV)VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV)VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV)VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV)VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV)VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV)VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV/$fReadPipelineViewportSwizzleStateCreateFlagsNV/$fShowPipelineViewportSwizzleStateCreateFlagsNV!$fReadViewportCoordinateSwizzleNV!$fShowViewportCoordinateSwizzleNV$fZeroViewportSwizzleNV$fStorableViewportSwizzleNV$fFromCStructViewportSwizzleNV$fToCStructViewportSwizzleNV.$fZeroPipelineViewportSwizzleStateCreateInfoNV5$fFromCStructPipelineViewportSwizzleStateCreateInfoNV3$fToCStructPipelineViewportSwizzleStateCreateInfoNV-$fEqPipelineViewportSwizzleStateCreateFlagsNV.$fOrdPipelineViewportSwizzleStateCreateFlagsNV3$fStorablePipelineViewportSwizzleStateCreateFlagsNV/$fZeroPipelineViewportSwizzleStateCreateFlagsNV/$fBitsPipelineViewportSwizzleStateCreateFlagsNV$fEqViewportCoordinateSwizzleNV $fOrdViewportCoordinateSwizzleNV%$fStorableViewportCoordinateSwizzleNV!$fZeroViewportCoordinateSwizzleNV.$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.$fShowPhysicalDeviceShaderSMBuiltinsFeaturesNV0$fShowPhysicalDeviceShaderSMBuiltinsPropertiesNV(NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME&NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION@$sel:imageFootprint:PhysicalDeviceShaderImageFootprintFeaturesNV2$fZeroPhysicalDeviceShaderImageFootprintFeaturesNV6$fStorablePhysicalDeviceShaderImageFootprintFeaturesNV9$fFromCStructPhysicalDeviceShaderImageFootprintFeaturesNV7$fToCStructPhysicalDeviceShaderImageFootprintFeaturesNV2$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>$fToCStructPipelineRepresentativeFragmentTestStateCreateInfoNV9$fShowPipelineRepresentativeFragmentTestStateCreateInfoNV8$fShowPhysicalDeviceRepresentativeFragmentTestFeaturesNV+NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME)NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSIONCoverageModulationModeNV,PipelineCoverageModulationStateCreateFlagsNV6$sel:flags:PipelineCoverageModulationStateCreateInfoNVG$sel:coverageModulationMode:PipelineCoverageModulationStateCreateInfoNVN$sel:coverageModulationTableEnable:PipelineCoverageModulationStateCreateInfoNVH$sel:coverageModulationTable:PipelineCoverageModulationStateCreateInfoNV COVERAGE_MODULATION_MODE_RGBA_NV!COVERAGE_MODULATION_MODE_ALPHA_NVCOVERAGE_MODULATION_MODE_RGB_NV COVERAGE_MODULATION_MODE_NONE_NV2$fReadPipelineCoverageModulationStateCreateFlagsNV2$fShowPipelineCoverageModulationStateCreateFlagsNV$fReadCoverageModulationModeNV$fShowCoverageModulationModeNV1$fZeroPipelineCoverageModulationStateCreateInfoNV8$fFromCStructPipelineCoverageModulationStateCreateInfoNV6$fToCStructPipelineCoverageModulationStateCreateInfoNV0$fEqPipelineCoverageModulationStateCreateFlagsNV1$fOrdPipelineCoverageModulationStateCreateFlagsNV6$fStorablePipelineCoverageModulationStateCreateFlagsNV2$fZeroPipelineCoverageModulationStateCreateFlagsNV2$fBitsPipelineCoverageModulationStateCreateFlagsNV$fEqCoverageModulationModeNV$fOrdCoverageModulationModeNV"$fStorableCoverageModulationModeNV$fZeroCoverageModulationModeNV1$fShowPipelineCoverageModulationStateCreateInfoNV-NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME+NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSIONP$sel:fragmentShaderBarycentric:PhysicalDeviceFragmentShaderBarycentricFeaturesNV7$fZeroPhysicalDeviceFragmentShaderBarycentricFeaturesNV;$fStorablePhysicalDeviceFragmentShaderBarycentricFeaturesNV>$fFromCStructPhysicalDeviceFragmentShaderBarycentricFeaturesNV<$fToCStructPhysicalDeviceFragmentShaderBarycentricFeaturesNV7$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/$fBitsPipelineCoverageToColorStateCreateFlagsNV.$fShowPipelineCoverageToColorStateCreateInfoNV+NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME)NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSIONDeviceDiagnosticsConfigFlagsNV!DeviceDiagnosticsConfigFlagBitsNV.$sel:flags:DeviceDiagnosticsConfigCreateInfoNV@$sel:diagnosticsConfig:PhysicalDeviceDiagnosticsConfigFeaturesNV=DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV9DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV9DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV/$fZeroPhysicalDeviceDiagnosticsConfigFeaturesNV3$fStorablePhysicalDeviceDiagnosticsConfigFeaturesNV6$fFromCStructPhysicalDeviceDiagnosticsConfigFeaturesNV4$fToCStructPhysicalDeviceDiagnosticsConfigFeaturesNV'$fReadDeviceDiagnosticsConfigFlagBitsNV'$fShowDeviceDiagnosticsConfigFlagBitsNV)$fZeroDeviceDiagnosticsConfigCreateInfoNV-$fStorableDeviceDiagnosticsConfigCreateInfoNV0$fFromCStructDeviceDiagnosticsConfigCreateInfoNV.$fToCStructDeviceDiagnosticsConfigCreateInfoNV%$fEqDeviceDiagnosticsConfigFlagBitsNV&$fOrdDeviceDiagnosticsConfigFlagBitsNV+$fStorableDeviceDiagnosticsConfigFlagBitsNV'$fZeroDeviceDiagnosticsConfigFlagBitsNV'$fBitsDeviceDiagnosticsConfigFlagBitsNV)$fShowDeviceDiagnosticsConfigCreateInfoNV/$fShowPhysicalDeviceDiagnosticsConfigFeaturesNV5NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME3NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION^$sel:dedicatedAllocationImageAliasing:PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>$fZeroPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVB$fStorablePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVE$fFromCStructPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVC$fToCStructPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>$fShowPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV&NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME$NV_CORNER_SAMPLED_IMAGE_SPEC_VERSIONB$sel:cornerSampledImage:PhysicalDeviceCornerSampledImageFeaturesNV0$fZeroPhysicalDeviceCornerSampledImageFeaturesNV4$fStorablePhysicalDeviceCornerSampledImageFeaturesNV7$fFromCStructPhysicalDeviceCornerSampledImageFeaturesNV5$fToCStructPhysicalDeviceCornerSampledImageFeaturesNV0$fShowPhysicalDeviceCornerSampledImageFeaturesNV,NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME*NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSIONQ$sel:computeDerivativeGroupQuads:PhysicalDeviceComputeShaderDerivativesFeaturesNVR$sel:computeDerivativeGroupLinear:PhysicalDeviceComputeShaderDerivativesFeaturesNV6$fZeroPhysicalDeviceComputeShaderDerivativesFeaturesNV:$fStorablePhysicalDeviceComputeShaderDerivativesFeaturesNV=$fFromCStructPhysicalDeviceComputeShaderDerivativesFeaturesNV;$fToCStructPhysicalDeviceComputeShaderDerivativesFeaturesNV6$fShowPhysicalDeviceComputeShaderDerivativesFeaturesNV0NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME.NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSIONW$sel:perViewPositionAllComponents:PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;$fZeroPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX?$fStorablePhysicalDeviceMultiviewPerViewAttributesPropertiesNVXB$fFromCStructPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX@$fToCStructPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;$fShowPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX1KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME/KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION6$sel:supportsProtected:SurfaceProtectedCapabilitiesKHR%$fZeroSurfaceProtectedCapabilitiesKHR)$fStorableSurfaceProtectedCapabilitiesKHR,$fFromCStructSurfaceProtectedCapabilitiesKHR*$fToCStructSurfaceProtectedCapabilitiesKHR%$fShowSurfaceProtectedCapabilitiesKHRKHR_SHADER_CLOCK_EXTENSION_NAMEKHR_SHADER_CLOCK_SPEC_VERSION=$sel:shaderSubgroupClock:PhysicalDeviceShaderClockFeaturesKHR;$sel:shaderDeviceClock:PhysicalDeviceShaderClockFeaturesKHR*$fZeroPhysicalDeviceShaderClockFeaturesKHR.$fStorablePhysicalDeviceShaderClockFeaturesKHR1$fFromCStructPhysicalDeviceShaderClockFeaturesKHR/$fToCStructPhysicalDeviceShaderClockFeaturesKHR*$fShowPhysicalDeviceShaderClockFeaturesKHR/INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME-INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSIONO$sel:shaderIntegerFunctions2:PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL8$fZeroPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL<$fStorablePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL?$fFromCStructPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL=$fToCStructPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL8$fShowPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL%EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME#EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION?$sel:ycbcrImageArrays:PhysicalDeviceYcbcrImageArraysFeaturesEXT/$fZeroPhysicalDeviceYcbcrImageArraysFeaturesEXT3$fStorablePhysicalDeviceYcbcrImageArraysFeaturesEXT6$fFromCStructPhysicalDeviceYcbcrImageArraysFeaturesEXT4$fToCStructPhysicalDeviceYcbcrImageArraysFeaturesEXT/$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:$fToCStructPhysicalDeviceVertexAttributeDivisorFeaturesEXT5$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=$fToCStructPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT8$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:$fToCStructPhysicalDeviceTexelBufferAlignmentPropertiesEXT5$fShowPhysicalDeviceTexelBufferAlignmentPropertiesEXT3$fShowPhysicalDeviceTexelBufferAlignmentFeaturesEXT5EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME3EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION[$sel:shaderDemoteToHelperInvocation:PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT=$fZeroPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTA$fStorablePhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTD$fFromCStructPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTB$fToCStructPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT=$fShowPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXTEXT_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,$fShowPhysicalDeviceRobustness2PropertiesEXT*$fShowPhysicalDeviceRobustness2FeaturesEXT-EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME+EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION PipelineCreationFeedbackFlagsEXT#PipelineCreationFeedbackFlagBitsEXTC$sel:pipelineCreationFeedback:PipelineCreationFeedbackCreateInfoEXTM$sel:pipelineStageCreationFeedbackCount:PipelineCreationFeedbackCreateInfoEXTI$sel:pipelineStageCreationFeedbacks:PipelineCreationFeedbackCreateInfoEXT&$sel:flags:PipelineCreationFeedbackEXT)$sel:duration:PipelineCreationFeedbackEXT=PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXTAPIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT(PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT)$fReadPipelineCreationFeedbackFlagBitsEXT)$fShowPipelineCreationFeedbackFlagBitsEXT!$fZeroPipelineCreationFeedbackEXT%$fStorablePipelineCreationFeedbackEXT($fFromCStructPipelineCreationFeedbackEXT&$fToCStructPipelineCreationFeedbackEXT+$fZeroPipelineCreationFeedbackCreateInfoEXT/$fStorablePipelineCreationFeedbackCreateInfoEXT2$fFromCStructPipelineCreationFeedbackCreateInfoEXT0$fToCStructPipelineCreationFeedbackCreateInfoEXT'$fEqPipelineCreationFeedbackFlagBitsEXT($fOrdPipelineCreationFeedbackFlagBitsEXT-$fStorablePipelineCreationFeedbackFlagBitsEXT)$fZeroPipelineCreationFeedbackFlagBitsEXT)$fBitsPipelineCreationFeedbackFlagBitsEXT+$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@$fToCStructPhysicalDevicePipelineCreationCacheControlFeaturesEXT;$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#$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$fToCStructDescriptorPoolInlineUniformBlockCreateInfoEXT3$fShowDescriptorPoolInlineUniformBlockCreateInfoEXT-$fShowWriteDescriptorSetInlineUniformBlockEXT3$fShowPhysicalDeviceInlineUniformBlockPropertiesEXT1$fShowPhysicalDeviceInlineUniformBlockFeaturesEXT#EXT_INDEX_TYPE_UINT8_EXTENSION_NAME!EXT_INDEX_TYPE_UINT8_SPEC_VERSION;$sel:indexTypeUint8:PhysicalDeviceIndexTypeUint8FeaturesEXT-$fZeroPhysicalDeviceIndexTypeUint8FeaturesEXT1$fStorablePhysicalDeviceIndexTypeUint8FeaturesEXT4$fFromCStructPhysicalDeviceIndexTypeUint8FeaturesEXT2$fToCStructPhysicalDeviceIndexTypeUint8FeaturesEXT-$fShowPhysicalDeviceIndexTypeUint8FeaturesEXT,EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME*EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSIONS$sel:fragmentShaderSampleInterlock:PhysicalDeviceFragmentShaderInterlockFeaturesEXTR$sel:fragmentShaderPixelInterlock:PhysicalDeviceFragmentShaderInterlockFeaturesEXTX$sel:fragmentShaderShadingRateInterlock:PhysicalDeviceFragmentShaderInterlockFeaturesEXT6$fZeroPhysicalDeviceFragmentShaderInterlockFeaturesEXT:$fStorablePhysicalDeviceFragmentShaderInterlockFeaturesEXT=$fFromCStructPhysicalDeviceFragmentShaderInterlockFeaturesEXT;$fToCStructPhysicalDeviceFragmentShaderInterlockFeaturesEXT6$fShowPhysicalDeviceFragmentShaderInterlockFeaturesEXT$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;$fToCStructPipelineRasterizationDepthClipStateCreateInfoEXT5$fEqPipelineRasterizationDepthClipStateCreateFlagsEXT6$fOrdPipelineRasterizationDepthClipStateCreateFlagsEXT;$fStorablePipelineRasterizationDepthClipStateCreateFlagsEXT7$fZeroPipelineRasterizationDepthClipStateCreateFlagsEXT7$fBitsPipelineRasterizationDepthClipStateCreateFlagsEXT6$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$fEqPipelineRasterizationConservativeStateCreateFlagsEXT9$fOrdPipelineRasterizationConservativeStateCreateFlagsEXT>$fStorablePipelineRasterizationConservativeStateCreateFlagsEXT:$fZeroPipelineRasterizationConservativeStateCreateFlagsEXT:$fBitsPipelineRasterizationConservativeStateCreateFlagsEXT$$fEqConservativeRasterizationModeEXT%$fOrdConservativeRasterizationModeEXT*$fStorableConservativeRasterizationModeEXT&$fZeroConservativeRasterizationModeEXT9$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$fToCStructPipelineColorBlendAdvancedStateCreateInfoEXT$fEqBlendOverlapEXT$fOrdBlendOverlapEXT$fStorableBlendOverlapEXT$fZeroBlendOverlapEXT2$fShowPipelineColorBlendAdvancedStateCreateInfoEXT7$fShowPhysicalDeviceBlendOperationAdvancedPropertiesEXT5$fShowPhysicalDeviceBlendOperationAdvancedFeaturesEXT#EXT_ASTC_DECODE_MODE_EXTENSION_NAME!EXT_ASTC_DECODE_MODE_SPEC_VERSIONA$sel:decodeModeSharedExponent:PhysicalDeviceASTCDecodeFeaturesEXT*$sel:decodeMode:ImageViewASTCDecodeModeEXT $fZeroImageViewASTCDecodeModeEXT$$fStorableImageViewASTCDecodeModeEXT'$fFromCStructImageViewASTCDecodeModeEXT%$fToCStructImageViewASTCDecodeModeEXT)$fZeroPhysicalDeviceASTCDecodeFeaturesEXT-$fStorablePhysicalDeviceASTCDecodeFeaturesEXT0$fFromCStructPhysicalDeviceASTCDecodeFeaturesEXT.$fToCStructPhysicalDeviceASTCDecodeFeaturesEXT)$fShowPhysicalDeviceASTCDecodeFeaturesEXT $fShowImageViewASTCDecodeModeEXT*AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME(AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSIONH$sel:supportsTextureGatherLODBiasAMD:TextureLODGatherFormatPropertiesAMD)$fZeroTextureLODGatherFormatPropertiesAMD-$fStorableTextureLODGatherFormatPropertiesAMD0$fFromCStructTextureLODGatherFormatPropertiesAMD.$fToCStructTextureLODGatherFormatPropertiesAMD)$fShowTextureLODGatherFormatPropertiesAMD+AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME)AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSIONShaderCorePropertiesFlagsAMDShaderCorePropertiesFlagBitsAMD>$sel:shaderCoreFeatures:PhysicalDeviceShaderCoreProperties2AMDB$sel:activeComputeUnitCount:PhysicalDeviceShaderCoreProperties2AMD%$fReadShaderCorePropertiesFlagBitsAMD%$fShowShaderCorePropertiesFlagBitsAMD,$fZeroPhysicalDeviceShaderCoreProperties2AMD0$fStorablePhysicalDeviceShaderCoreProperties2AMD3$fFromCStructPhysicalDeviceShaderCoreProperties2AMD1$fToCStructPhysicalDeviceShaderCoreProperties2AMD#$fEqShaderCorePropertiesFlagBitsAMD$$fOrdShaderCorePropertiesFlagBitsAMD)$fStorableShaderCorePropertiesFlagBitsAMD%$fZeroShaderCorePropertiesFlagBitsAMD%$fBitsShaderCorePropertiesFlagBitsAMD,$fShowPhysicalDeviceShaderCoreProperties2AMD,AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME*AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSIONPipelineCompilerControlFlagsAMD"PipelineCompilerControlFlagBitsAMD>$sel:compilerControlFlags:PipelineCompilerControlCreateInfoAMD($fReadPipelineCompilerControlFlagBitsAMD($fShowPipelineCompilerControlFlagBitsAMD*$fZeroPipelineCompilerControlCreateInfoAMD.$fStorablePipelineCompilerControlCreateInfoAMD1$fFromCStructPipelineCompilerControlCreateInfoAMD/$fToCStructPipelineCompilerControlCreateInfoAMD&$fEqPipelineCompilerControlFlagBitsAMD'$fOrdPipelineCompilerControlFlagBitsAMD,$fStorablePipelineCompilerControlFlagBitsAMD($fZeroPipelineCompilerControlFlagBitsAMD($fBitsPipelineCompilerControlFlagBitsAMD*$fShowPipelineCompilerControlCreateInfoAMD)AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME'AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSIONA$sel:deviceCoherentMemory:PhysicalDeviceCoherentMemoryFeaturesAMD-$fZeroPhysicalDeviceCoherentMemoryFeaturesAMD1$fStorablePhysicalDeviceCoherentMemoryFeaturesAMD4$fFromCStructPhysicalDeviceCoherentMemoryFeaturesAMD2$fToCStructPhysicalDeviceCoherentMemoryFeaturesAMD-$fShowPhysicalDeviceCoherentMemoryFeaturesAMD>$sel:vulkanMemoryModel:PhysicalDeviceVulkanMemoryModelFeaturesI$sel:vulkanMemoryModelDeviceScope:PhysicalDeviceVulkanMemoryModelFeaturesZ$sel:vulkanMemoryModelAvailabilityVisibilityChains:PhysicalDeviceVulkanMemoryModelFeatures-$fZeroPhysicalDeviceVulkanMemoryModelFeatures1$fStorablePhysicalDeviceVulkanMemoryModelFeatures4$fFromCStructPhysicalDeviceVulkanMemoryModelFeatures2$fToCStructPhysicalDeviceVulkanMemoryModelFeatures-$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<$fToCStructPhysicalDeviceUniformBufferStandardLayoutFeatures7$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<$fToCStructPhysicalDeviceShaderSubgroupExtendedTypesFeatures7$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+$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$fFromCStructPhysicalDeviceSeparateDepthStencilLayoutsFeatures<$fToCStructPhysicalDeviceSeparateDepthStencilLayoutsFeatures&$fZeroAttachmentReferenceStencilLayout*$fStorableAttachmentReferenceStencilLayout-$fFromCStructAttachmentReferenceStencilLayout+$fToCStructAttachmentReferenceStencilLayout($fZeroAttachmentDescriptionStencilLayout,$fStorableAttachmentDescriptionStencilLayout/$fFromCStructAttachmentDescriptionStencilLayout-$fToCStructAttachmentDescriptionStencilLayout($fShowAttachmentDescriptionStencilLayout&$fShowAttachmentReferenceStencilLayout7$fShowPhysicalDeviceSeparateDepthStencilLayoutsFeatures1KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME/KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION%AttachmentDescriptionStencilLayoutKHR#AttachmentReferenceStencilLayoutKHR4PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR8STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR6STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHRJSTRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR>$sel:storageBuffer8BitAccess:PhysicalDevice8BitStorageFeaturesH$sel:uniformAndStorageBuffer8BitAccess:PhysicalDevice8BitStorageFeatures;$sel:storagePushConstant8:PhysicalDevice8BitStorageFeatures'$fZeroPhysicalDevice8BitStorageFeatures+$fStorablePhysicalDevice8BitStorageFeatures.$fFromCStructPhysicalDevice8BitStorageFeatures,$fToCStructPhysicalDevice8BitStorageFeatures'$fShowPhysicalDevice8BitStorageFeaturesKHR_8BIT_STORAGE_EXTENSION_NAMEKHR_8BIT_STORAGE_SPEC_VERSION$PhysicalDevice8BitStorageFeaturesKHR8STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR>$sel:scalarBlockLayout:PhysicalDeviceScalarBlockLayoutFeatures-$fZeroPhysicalDeviceScalarBlockLayoutFeatures1$fStorablePhysicalDeviceScalarBlockLayoutFeatures4$fFromCStructPhysicalDeviceScalarBlockLayoutFeatures2$fToCStructPhysicalDeviceScalarBlockLayoutFeatures-$fShowPhysicalDeviceScalarBlockLayoutFeatures&EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME$EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION*PhysicalDeviceScalarBlockLayoutFeaturesEXT?STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXTSemaphoreWaitFlagsSemaphoreWaitFlagBitsSEMAPHORE_WAIT_ANY_BIT$fReadSemaphoreWaitFlagBits$fShowSemaphoreWaitFlagBits$fEqSemaphoreWaitFlagBits$fOrdSemaphoreWaitFlagBits$fStorableSemaphoreWaitFlagBits$fZeroSemaphoreWaitFlagBits$fBitsSemaphoreWaitFlagBitsResolveModeFlagsRESOLVE_MODE_MAX_BITRESOLVE_MODE_MIN_BIT$fReadResolveModeFlagBits$fShowResolveModeFlagBits$fEqResolveModeFlagBits$fOrdResolveModeFlagBits$fStorableResolveModeFlagBits$fZeroResolveModeFlagBits$fBitsResolveModeFlagBitsDescriptorBindingFlags$fReadDescriptorBindingFlagBits$fShowDescriptorBindingFlagBits$fEqDescriptorBindingFlagBits$fOrdDescriptorBindingFlagBits#$fStorableDescriptorBindingFlagBits$fZeroDescriptorBindingFlagBits$fBitsDescriptorBindingFlagBits%PhysicalDeviceVariablePointerFeaturesI$sel:variablePointersStorageBuffer:PhysicalDeviceVariablePointersFeatures<$sel:variablePointers:PhysicalDeviceVariablePointersFeatures8STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES,$fZeroPhysicalDeviceVariablePointersFeatures0$fStorablePhysicalDeviceVariablePointersFeatures3$fFromCStructPhysicalDeviceVariablePointersFeatures1$fToCStructPhysicalDeviceVariablePointersFeatures,$fShowPhysicalDeviceVariablePointersFeatures$KHR_VARIABLE_POINTERS_EXTENSION_NAME"KHR_VARIABLE_POINTERS_SPEC_VERSION(PhysicalDeviceVariablePointerFeaturesKHR)PhysicalDeviceVariablePointersFeaturesKHR=STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR$fStorablePipelineShaderStageRequiredSubgroupSizeCreateInfoEXTA$fFromCStructPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT?$fToCStructPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT:$fShowPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT4$fShowPhysicalDeviceSubgroupSizeControlPropertiesEXT2$fShowPhysicalDeviceSubgroupSizeControlFeaturesEXT2$sel:subgroupSize:PhysicalDeviceSubgroupProperties5$sel:supportedStages:PhysicalDeviceSubgroupProperties9$sel:supportedOperations:PhysicalDeviceSubgroupProperties?$sel:quadOperationsInAllStages:PhysicalDeviceSubgroupProperties&$fZeroPhysicalDeviceSubgroupProperties*$fStorablePhysicalDeviceSubgroupProperties-$fFromCStructPhysicalDeviceSubgroupProperties+$fToCStructPhysicalDeviceSubgroupProperties&$fShowPhysicalDeviceSubgroupPropertiesShaderModuleCreateFlagsShaderModuleCreateFlagBits $fReadShaderModuleCreateFlagBits $fShowShaderModuleCreateFlagBits$fEqShaderModuleCreateFlagBits$fOrdShaderModuleCreateFlagBits$$fStorableShaderModuleCreateFlagBits $fZeroShaderModuleCreateFlagBits $fBitsShaderModuleCreateFlagBitsSemaphoreCreateFlags$fReadSemaphoreCreateFlags$fShowSemaphoreCreateFlags$fEqSemaphoreCreateFlags$fOrdSemaphoreCreateFlags$fStorableSemaphoreCreateFlags$fZeroSemaphoreCreateFlags$fBitsSemaphoreCreateFlagsSamplerCreateFlags7SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT$fReadSamplerCreateFlagBits$fShowSamplerCreateFlagBits$fEqSamplerCreateFlagBits$fOrdSamplerCreateFlagBits$fStorableSamplerCreateFlagBits$fZeroSamplerCreateFlagBits$fBitsSamplerCreateFlagBitsSAMPLE_COUNT_64_BITSAMPLE_COUNT_32_BIT$fReadSampleCountFlagBits$fShowSampleCountFlagBits$fEqSampleCountFlagBits$fOrdSampleCountFlagBits$fStorableSampleCountFlagBits$fZeroSampleCountFlagBits$fBitsSampleCountFlagBitsRenderPassCreateFlags$fReadRenderPassCreateFlagBits$fShowRenderPassCreateFlagBits$fEqRenderPassCreateFlagBits$fOrdRenderPassCreateFlagBits"$fStorableRenderPassCreateFlagBits$fZeroRenderPassCreateFlagBits$fBitsRenderPassCreateFlagBits QueueFlagsQUEUE_PROTECTED_BITQUEUE_SPARSE_BINDING_BITQUEUE_TRANSFER_BIT$fReadQueueFlagBits$fShowQueueFlagBits$fEqQueueFlagBits$fOrdQueueFlagBits$fStorableQueueFlagBits$fZeroQueueFlagBits$fBitsQueueFlagBitsQUERY_RESULT_PARTIAL_BIT"QUERY_RESULT_WITH_AVAILABILITY_BITQUERY_RESULT_WAIT_BITQUERY_RESULT_64_BIT$fReadQueryResultFlagBits$fShowQueryResultFlagBits$fEqQueryResultFlagBits$fOrdQueryResultFlagBits$fStorableQueryResultFlagBits$fZeroQueryResultFlagBits$fBitsQueryResultFlagBitsQueryPoolCreateFlags$fReadQueryPoolCreateFlags$fShowQueryPoolCreateFlags$fEqQueryPoolCreateFlags$fOrdQueryPoolCreateFlags$fStorableQueryPoolCreateFlags$fZeroQueryPoolCreateFlags$fBitsQueryPoolCreateFlagsQueryPipelineStatisticFlags7QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BITGQUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT@QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT8QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT0QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT1QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT7QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT8QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT6QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT6QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT4QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT$$fReadQueryPipelineStatisticFlagBits$$fShowQueryPipelineStatisticFlagBits"$fEqQueryPipelineStatisticFlagBits#$fOrdQueryPipelineStatisticFlagBits($fStorableQueryPipelineStatisticFlagBits$$fZeroQueryPipelineStatisticFlagBits$$fBitsQueryPipelineStatisticFlagBits$fReadQueryControlFlagBits$fShowQueryControlFlagBits$fEqQueryControlFlagBits$fOrdQueryControlFlagBits$fStorableQueryControlFlagBits$fZeroQueryControlFlagBits$fBitsQueryControlFlagBits PipelineViewportStateCreateFlags&$fReadPipelineViewportStateCreateFlags&$fShowPipelineViewportStateCreateFlags$$fEqPipelineViewportStateCreateFlags%$fOrdPipelineViewportStateCreateFlags*$fStorablePipelineViewportStateCreateFlags&$fZeroPipelineViewportStateCreateFlags&$fBitsPipelineViewportStateCreateFlags#PipelineVertexInputStateCreateFlags)$fReadPipelineVertexInputStateCreateFlags)$fShowPipelineVertexInputStateCreateFlags'$fEqPipelineVertexInputStateCreateFlags($fOrdPipelineVertexInputStateCreateFlags-$fStorablePipelineVertexInputStateCreateFlags)$fZeroPipelineVertexInputStateCreateFlags)$fBitsPipelineVertexInputStateCreateFlags$PipelineTessellationStateCreateFlags*$fReadPipelineTessellationStateCreateFlags*$fShowPipelineTessellationStateCreateFlags($fEqPipelineTessellationStateCreateFlags)$fOrdPipelineTessellationStateCreateFlags.$fStorablePipelineTessellationStateCreateFlags*$fZeroPipelineTessellationStateCreateFlags*$fBitsPipelineTessellationStateCreateFlagsPIPELINE_STAGE_ALL_COMMANDS_BITPIPELINE_STAGE_ALL_GRAPHICS_BITPIPELINE_STAGE_TOP_OF_PIPE_BIT$fReadPipelineStageFlagBits$fShowPipelineStageFlagBits$fEqPipelineStageFlagBits$fOrdPipelineStageFlagBits$fStorablePipelineStageFlagBits$fZeroPipelineStageFlagBits$fBitsPipelineStageFlagBitsPipelineShaderStageCreateFlags'$fReadPipelineShaderStageCreateFlagBits'$fShowPipelineShaderStageCreateFlagBits%$fEqPipelineShaderStageCreateFlagBits&$fOrdPipelineShaderStageCreateFlagBits+$fStorablePipelineShaderStageCreateFlagBits'$fZeroPipelineShaderStageCreateFlagBits'$fBitsPipelineShaderStageCreateFlagBits%PipelineRasterizationStateCreateFlags+$fReadPipelineRasterizationStateCreateFlags+$fShowPipelineRasterizationStateCreateFlags)$fEqPipelineRasterizationStateCreateFlags*$fOrdPipelineRasterizationStateCreateFlags/$fStorablePipelineRasterizationStateCreateFlags+$fZeroPipelineRasterizationStateCreateFlags+$fBitsPipelineRasterizationStateCreateFlags#PipelineMultisampleStateCreateFlags)$fReadPipelineMultisampleStateCreateFlags)$fShowPipelineMultisampleStateCreateFlags'$fEqPipelineMultisampleStateCreateFlags($fOrdPipelineMultisampleStateCreateFlags-$fStorablePipelineMultisampleStateCreateFlags)$fZeroPipelineMultisampleStateCreateFlags)$fBitsPipelineMultisampleStateCreateFlagsPipelineLayoutCreateFlags$fReadPipelineLayoutCreateFlags$fShowPipelineLayoutCreateFlags$fEqPipelineLayoutCreateFlags$fOrdPipelineLayoutCreateFlags#$fStorablePipelineLayoutCreateFlags$fZeroPipelineLayoutCreateFlags$fBitsPipelineLayoutCreateFlags%PipelineInputAssemblyStateCreateFlags+$fReadPipelineInputAssemblyStateCreateFlags+$fShowPipelineInputAssemblyStateCreateFlags)$fEqPipelineInputAssemblyStateCreateFlags*$fOrdPipelineInputAssemblyStateCreateFlags/$fStorablePipelineInputAssemblyStateCreateFlags+$fZeroPipelineInputAssemblyStateCreateFlags+$fBitsPipelineInputAssemblyStateCreateFlagsPipelineDynamicStateCreateFlags%$fReadPipelineDynamicStateCreateFlags%$fShowPipelineDynamicStateCreateFlags#$fEqPipelineDynamicStateCreateFlags$$fOrdPipelineDynamicStateCreateFlags)$fStorablePipelineDynamicStateCreateFlags%$fZeroPipelineDynamicStateCreateFlags%$fBitsPipelineDynamicStateCreateFlags$PipelineDepthStencilStateCreateFlags*$fReadPipelineDepthStencilStateCreateFlags*$fShowPipelineDepthStencilStateCreateFlags($fEqPipelineDepthStencilStateCreateFlags)$fOrdPipelineDepthStencilStateCreateFlags.$fStorablePipelineDepthStencilStateCreateFlags*$fZeroPipelineDepthStencilStateCreateFlags*$fBitsPipelineDepthStencilStateCreateFlagsPipelineCreateFlags0PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT!PIPELINE_CREATE_DISPATCH_BASE_BIT(PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT$fReadPipelineCreateFlagBits$fShowPipelineCreateFlagBits$fEqPipelineCreateFlagBits$fOrdPipelineCreateFlagBits $fStorablePipelineCreateFlagBits$fZeroPipelineCreateFlagBits$fBitsPipelineCreateFlagBits"PipelineColorBlendStateCreateFlags($fReadPipelineColorBlendStateCreateFlags($fShowPipelineColorBlendStateCreateFlags&$fEqPipelineColorBlendStateCreateFlags'$fOrdPipelineColorBlendStateCreateFlags,$fStorablePipelineColorBlendStateCreateFlags($fZeroPipelineColorBlendStateCreateFlags($fBitsPipelineColorBlendStateCreateFlagsPipelineCacheCreateFlags!$fReadPipelineCacheCreateFlagBits!$fShowPipelineCacheCreateFlagBits$fEqPipelineCacheCreateFlagBits $fOrdPipelineCacheCreateFlagBits%$fStorablePipelineCacheCreateFlagBits!$fZeroPipelineCacheCreateFlagBits!$fBitsPipelineCacheCreateFlagBitsMemoryPropertyFlags$fReadMemoryPropertyFlagBits$fShowMemoryPropertyFlagBits$fEqMemoryPropertyFlagBits$fOrdMemoryPropertyFlagBits $fStorableMemoryPropertyFlagBits$fZeroMemoryPropertyFlagBits$fBitsMemoryPropertyFlagBits$fReadMemoryMapFlags$fShowMemoryMapFlags$fEqMemoryMapFlags$fOrdMemoryMapFlags$fStorableMemoryMapFlags$fZeroMemoryMapFlags$fBitsMemoryMapFlagsMemoryHeapFlags$fReadMemoryHeapFlagBits$fShowMemoryHeapFlagBits$fEqMemoryHeapFlagBits$fOrdMemoryHeapFlagBits$fStorableMemoryHeapFlagBits$fZeroMemoryHeapFlagBits$fBitsMemoryHeapFlagBitsInstanceCreateFlags$fReadInstanceCreateFlags$fShowInstanceCreateFlags$fEqInstanceCreateFlags$fOrdInstanceCreateFlags$fStorableInstanceCreateFlags$fZeroInstanceCreateFlags$fBitsInstanceCreateFlagsImageViewCreateFlags$fReadImageViewCreateFlagBits$fShowImageViewCreateFlagBits$fEqImageViewCreateFlagBits$fOrdImageViewCreateFlagBits!$fStorableImageViewCreateFlagBits$fZeroImageViewCreateFlagBits$fBitsImageViewCreateFlagBits$fReadImageUsageFlagBits$fShowImageUsageFlagBits$fEqImageUsageFlagBits$fOrdImageUsageFlagBits$fStorableImageUsageFlagBits$fZeroImageUsageFlagBits$fBitsImageUsageFlagBits-$sel:stencilUsage:ImageStencilUsageCreateInfo!$fZeroImageStencilUsageCreateInfo%$fStorableImageStencilUsageCreateInfo($fFromCStructImageStencilUsageCreateInfo&$fToCStructImageStencilUsageCreateInfo!$fShowImageStencilUsageCreateInfo)EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME'EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSIONImageStencilUsageCreateInfoEXT2STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT$fReadImageCreateFlagBits$fShowImageCreateFlagBits$fEqImageCreateFlagBits$fOrdImageCreateFlagBits$fStorableImageCreateFlagBits$fZeroImageCreateFlagBits$fBitsImageCreateFlagBits#IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT#IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT#IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT#IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT$fReadImageAspectFlagBits$fShowImageAspectFlagBits$fEqImageAspectFlagBits$fOrdImageAspectFlagBits$fStorableImageAspectFlagBits$fZeroImageAspectFlagBits$fBitsImageAspectFlagBitsA$sel:domainOrigin:PipelineTessellationDomainOriginStateCreateInfo#$sel:usage:ImageViewUsageCreateInfo@$sel:pointClippingBehavior:PhysicalDevicePointClippingProperties?$sel:aspectReferences:RenderPassInputAttachmentAspectCreateInfo+$sel:subpass:InputAttachmentAspectReference8$sel:inputAttachmentIndex:InputAttachmentAspectReference.$sel:aspectMask:InputAttachmentAspectReference$$fZeroInputAttachmentAspectReference($fStorableInputAttachmentAspectReference+$fFromCStructInputAttachmentAspectReference)$fToCStructInputAttachmentAspectReference/$fZeroRenderPassInputAttachmentAspectCreateInfo6$fFromCStructRenderPassInputAttachmentAspectCreateInfo4$fToCStructRenderPassInputAttachmentAspectCreateInfo+$fZeroPhysicalDevicePointClippingProperties/$fStorablePhysicalDevicePointClippingProperties2$fFromCStructPhysicalDevicePointClippingProperties0$fToCStructPhysicalDevicePointClippingProperties$fZeroImageViewUsageCreateInfo"$fStorableImageViewUsageCreateInfo%$fFromCStructImageViewUsageCreateInfo#$fToCStructImageViewUsageCreateInfo5$fZeroPipelineTessellationDomainOriginStateCreateInfo9$fStorablePipelineTessellationDomainOriginStateCreateInfo<$fFromCStructPipelineTessellationDomainOriginStateCreateInfo:$fToCStructPipelineTessellationDomainOriginStateCreateInfo5$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<$fToCStructDescriptorSetVariableDescriptorCountLayoutSupport7$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,$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#$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_KHR CullModeFlagsCULL_MODE_FRONT_AND_BACKCULL_MODE_BACK_BITCULL_MODE_FRONT_BITCULL_MODE_NONE$fReadCullModeFlagBits$fShowCullModeFlagBits$fEqCullModeFlagBits$fOrdCullModeFlagBits$fStorableCullModeFlagBits$fZeroCullModeFlagBits$fBitsCullModeFlagBits(COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT$fReadCommandPoolResetFlagBits$fShowCommandPoolResetFlagBits$fEqCommandPoolResetFlagBits$fOrdCommandPoolResetFlagBits"$fStorableCommandPoolResetFlagBits$fZeroCommandPoolResetFlagBits$fBitsCommandPoolResetFlagBitsCommandPoolCreateFlags!COMMAND_POOL_CREATE_TRANSIENT_BIT$fReadCommandPoolCreateFlagBits$fShowCommandPoolCreateFlagBits$fEqCommandPoolCreateFlagBits$fOrdCommandPoolCreateFlagBits#$fStorableCommandPoolCreateFlagBits$fZeroCommandPoolCreateFlagBits$fBitsCommandPoolCreateFlagBitsCommandBufferUsageFlags $fReadCommandBufferUsageFlagBits $fShowCommandBufferUsageFlagBits$fEqCommandBufferUsageFlagBits$fOrdCommandBufferUsageFlagBits$$fStorableCommandBufferUsageFlagBits $fZeroCommandBufferUsageFlagBits $fBitsCommandBufferUsageFlagBits*COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT $fReadCommandBufferResetFlagBits $fShowCommandBufferResetFlagBits$fEqCommandBufferResetFlagBits$fOrdCommandBufferResetFlagBits$$fStorableCommandBufferResetFlagBits $fZeroCommandBufferResetFlagBits $fBitsCommandBufferResetFlagBitsCOLOR_COMPONENT_A_BITCOLOR_COMPONENT_B_BITCOLOR_COMPONENT_G_BITCOLOR_COMPONENT_R_BIT$fReadColorComponentFlagBits$fShowColorComponentFlagBits$fEqColorComponentFlagBits$fOrdColorComponentFlagBits $fStorableColorComponentFlagBits$fZeroColorComponentFlagBits$fBitsColorComponentFlagBitsBufferViewCreateFlags$fReadBufferViewCreateFlags$fShowBufferViewCreateFlags$fEqBufferViewCreateFlags$fOrdBufferViewCreateFlags$fStorableBufferViewCreateFlags$fZeroBufferViewCreateFlags$fBitsBufferViewCreateFlagsBufferUsageFlags$fReadBufferUsageFlagBits$fShowBufferUsageFlagBits$fEqBufferUsageFlagBits$fOrdBufferUsageFlagBits$fStorableBufferUsageFlagBits$fZeroBufferUsageFlagBits$fBitsBufferUsageFlagBitsBufferCreateFlags$fReadBufferCreateFlagBits$fShowBufferCreateFlagBits$fEqBufferCreateFlagBits$fOrdBufferCreateFlagBits$fStorableBufferCreateFlagBits$fZeroBufferCreateFlagBits$fBitsBufferCreateFlagBitsAttachmentDescriptionFlags#$fReadAttachmentDescriptionFlagBits#$fShowAttachmentDescriptionFlagBits!$fEqAttachmentDescriptionFlagBits"$fOrdAttachmentDescriptionFlagBits'$fStorableAttachmentDescriptionFlagBits#$fZeroAttachmentDescriptionFlagBits#$fBitsAttachmentDescriptionFlagBits AccessFlags'ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT.ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT/ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT)ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT*ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR+ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR%ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV(ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT%ACCESS_COMMAND_PREPROCESS_READ_BIT_NV&ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NVACCESS_MEMORY_WRITE_BITACCESS_MEMORY_READ_BITACCESS_TRANSFER_READ_BITACCESS_SHADER_WRITE_BITACCESS_SHADER_READ_BIT ACCESS_INPUT_ATTACHMENT_READ_BITACCESS_UNIFORM_READ_BIT ACCESS_VERTEX_ATTRIBUTE_READ_BITACCESS_INDEX_READ_BIT ACCESS_INDIRECT_COMMAND_READ_BIT$fReadAccessFlagBits$fShowAccessFlagBits$fEqAccessFlagBits$fOrdAccessFlagBits$fStorableAccessFlagBits$fZeroAccessFlagBits$fBitsAccessFlagBits!$sel:userData:AllocationCallbacks&$sel:pfnAllocation:AllocationCallbacks($sel:pfnReallocation:AllocationCallbacks $sel:pfnFree:AllocationCallbacks.$sel:pfnInternalAllocation:AllocationCallbacks($sel:pfnInternalFree:AllocationCallbacks$fZeroAllocationCallbacks$fStorableAllocationCallbacks $fFromCStructAllocationCallbacks$fToCStructAllocationCallbacks$fShowAllocationCallbacksIsHandleSHADER_UNUSED_KHRMAX_DRIVER_INFO_SIZEMAX_DRIVER_NAME_SIZEMAX_DEVICE_GROUP_SIZEQUEUE_FAMILY_FOREIGN_EXTQUEUE_FAMILY_EXTERNALMAX_MEMORY_HEAPSMAX_MEMORY_TYPESMAX_DESCRIPTION_SIZEMAX_EXTENSION_NAME_SIZE LUID_SIZEMAX_PHYSICAL_DEVICE_NAME_SIZEMAX_DRIVER_INFO_SIZE_KHRMAX_DRIVER_NAME_SIZE_KHRMAX_DEVICE_GROUP_SIZE_KHRQUEUE_FAMILY_EXTERNAL_KHR LUID_SIZE_KHRLOD_CLAMP_NONE'EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME%EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION EXT_MEMORY_BUDGET_EXTENSION_NAMEEXT_MEMORY_BUDGET_SPEC_VERSION7$sel:heapBudget:PhysicalDeviceMemoryBudgetPropertiesEXT6$sel:heapUsage:PhysicalDeviceMemoryBudgetPropertiesEXT-$fZeroPhysicalDeviceMemoryBudgetPropertiesEXT1$fStorablePhysicalDeviceMemoryBudgetPropertiesEXT4$fFromCStructPhysicalDeviceMemoryBudgetPropertiesEXT2$fToCStructPhysicalDeviceMemoryBudgetPropertiesEXT-$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+$fFromCStructPhysicalDeviceDriverProperties)$fToCStructPhysicalDeviceDriverProperties$$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$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&$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$fZeroInstance$fZeroPhysicalDevice $fZeroDevice $fZeroQueue$fZeroCommandBuffer$fShowDeviceMemory$fShowCommandPool $fShowBuffer$fShowBufferView $fShowImage$fShowImageView$fShowShaderModule$fShowPipeline$fShowPipelineLayout $fShowSampler$fShowDescriptorSet$fShowDescriptorSetLayout$fShowDescriptorPool $fShowFence$fShowSemaphore $fShowEvent$fShowQueryPool$fShowFramebuffer$fShowRenderPass$fShowPipelineCache $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$fZeroPhysicalDeviceShadingRateImagePropertiesNV7$fFromCStructPhysicalDeviceShadingRateImagePropertiesNV5$fToCStructPhysicalDeviceShadingRateImagePropertiesNV$fZeroCoarseSampleLocationNV $fStorableCoarseSampleLocationNV#$fFromCStructCoarseSampleLocationNV!$fToCStructCoarseSampleLocationNV$fReadShadingRatePaletteEntryNV$fShowShadingRatePaletteEntryNV$fZeroCoarseSampleOrderCustomNV&$fFromCStructCoarseSampleOrderCustomNV$$fToCStructCoarseSampleOrderCustomNV$fZeroShadingRatePaletteNV!$fFromCStructShadingRatePaletteNV$fToCStructShadingRatePaletteNV7$fZeroPipelineViewportShadingRateImageStateCreateInfoNV>$fFromCStructPipelineViewportShadingRateImageStateCreateInfoNV<$fToCStructPipelineViewportShadingRateImageStateCreateInfoNV$fReadCoarseSampleOrderTypeNV$fShowCoarseSampleOrderTypeNV8$fZeroPipelineViewportCoarseSampleOrderStateCreateInfoNV?$fFromCStructPipelineViewportCoarseSampleOrderStateCreateInfoNV=$fToCStructPipelineViewportCoarseSampleOrderStateCreateInfoNV$fEqShadingRatePaletteEntryNV$fOrdShadingRatePaletteEntryNV#$fStorableShadingRatePaletteEntryNV$fZeroShadingRatePaletteEntryNV$fEqCoarseSampleOrderTypeNV$fOrdCoarseSampleOrderTypeNV!$fStorableCoarseSampleOrderTypeNV$fZeroCoarseSampleOrderTypeNV8$fShowPipelineViewportCoarseSampleOrderStateCreateInfoNV$fShowCoarseSampleOrderCustomNV$fShowCoarseSampleLocationNV0$fShowPhysicalDeviceShadingRateImagePropertiesNV.$fShowPhysicalDeviceShadingRateImageFeaturesNV7$fShowPipelineViewportShadingRateImageStateCreateInfoNV$fShowShadingRatePaletteNVNV_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$$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$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-$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$fToCStructPipelineCoverageReductionStateCreateInfoNV/$fEqPipelineCoverageReductionStateCreateFlagsNV0$fOrdPipelineCoverageReductionStateCreateFlagsNV5$fStorablePipelineCoverageReductionStateCreateFlagsNV1$fZeroPipelineCoverageReductionStateCreateFlagsNV1$fBitsPipelineCoverageReductionStateCreateFlagsNV$fEqCoverageReductionModeNV$fOrdCoverageReductionModeNV!$fStorableCoverageReductionModeNV$fZeroCoverageReductionModeNV*$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 $fEqScopeNV $fOrdScopeNV$fStorableScopeNV $fZeroScopeNV$fEqComponentTypeNV$fOrdComponentTypeNV$fStorableComponentTypeNV$fZeroComponentTypeNV#$fShowCooperativeMatrixPropertiesNV1$fShowPhysicalDeviceCooperativeMatrixPropertiesNV/$fShowPhysicalDeviceCooperativeMatrixFeaturesNV&NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME$NV_CLIP_SPACE_W_SCALING_SPEC_VERSIONE$sel:viewportWScalingEnable:PipelineViewportWScalingStateCreateInfoNV@$sel:viewportWScalings:PipelineViewportWScalingStateCreateInfoNV$sel:xcoeff:ViewportWScalingNV$sel:ycoeff:ViewportWScalingNV$fZeroViewportWScalingNV$fStorableViewportWScalingNV$fFromCStructViewportWScalingNV$fToCStructViewportWScalingNV/$fZeroPipelineViewportWScalingStateCreateInfoNV6$fFromCStructPipelineViewportWScalingStateCreateInfoNV4$fToCStructPipelineViewportWScalingStateCreateInfoNV/$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#$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)$fToCStructPipelineExecutableStatisticKHR)$fShowPipelineExecutableStatisticValueKHR($fEqPipelineExecutableStatisticFormatKHR)$fOrdPipelineExecutableStatisticFormatKHR.$fStorablePipelineExecutableStatisticFormatKHR*$fZeroPipelineExecutableStatisticFormatKHR1$fShowPipelineExecutableInternalRepresentationKHR$$fShowPipelineExecutableStatisticKHR$fShowPipelineExecutableInfoKHR%$fShowPipelineExecutablePropertiesKHR$fShowPipelineInfoKHR;$fShowPhysicalDevicePipelineExecutablePropertiesFeaturesKHR$KHR_PERFORMANCE_QUERY_EXTENSION_NAME"KHR_PERFORMANCE_QUERY_SPEC_VERSIONAcquireProfilingLockFlagsKHRAcquireProfilingLockFlagBitsKHR%PerformanceCounterDescriptionFlagsKHR(PerformanceCounterDescriptionFlagBitsKHRPerformanceCounterStorageKHRPerformanceCounterUnitKHRPerformanceCounterScopeKHR Int32Counter Int64Counter Uint32Counter Uint64CounterFloat32CounterFloat64Counter3$sel:counterPassIndex:PerformanceQuerySubmitInfoKHR&$sel:flags:AcquireProfilingLockInfoKHR($sel:timeout:AcquireProfilingLockInfoKHR7$sel:queueFamilyIndex:QueryPoolPerformanceCreateInfoKHR5$sel:counterIndices:QueryPoolPerformanceCreateInfoKHR+$sel:flags:PerformanceCounterDescriptionKHR*$sel:name:PerformanceCounterDescriptionKHR.$sel:category:PerformanceCounterDescriptionKHR1$sel:description:PerformanceCounterDescriptionKHR$sel:unit:PerformanceCounterKHR $sel:scope:PerformanceCounterKHR"$sel:storage:PerformanceCounterKHR$sel:uuid:PerformanceCounterKHRN$sel:allowCommandBufferQueryCopies:PhysicalDevicePerformanceQueryPropertiesKHRK$sel:performanceCounterQueryPools:PhysicalDevicePerformanceQueryFeaturesKHRS$sel:performanceCounterMultipleQueryPools:PhysicalDevicePerformanceQueryFeaturesKHR9PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR9PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR'PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR'PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR&PERFORMANCE_COUNTER_STORAGE_UINT64_KHR&PERFORMANCE_COUNTER_STORAGE_UINT32_KHR%PERFORMANCE_COUNTER_STORAGE_INT64_KHR%PERFORMANCE_COUNTER_STORAGE_INT32_KHR#PERFORMANCE_COUNTER_UNIT_CYCLES_KHR"PERFORMANCE_COUNTER_UNIT_HERTZ_KHR!PERFORMANCE_COUNTER_UNIT_AMPS_KHR"PERFORMANCE_COUNTER_UNIT_VOLTS_KHR"PERFORMANCE_COUNTER_UNIT_WATTS_KHR#PERFORMANCE_COUNTER_UNIT_KELVIN_KHR-PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR"PERFORMANCE_COUNTER_UNIT_BYTES_KHR(PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR'PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR$PERFORMANCE_COUNTER_UNIT_GENERIC_KHR%PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR/$fZeroPhysicalDevicePerformanceQueryFeaturesKHR3$fStorablePhysicalDevicePerformanceQueryFeaturesKHR6$fFromCStructPhysicalDevicePerformanceQueryFeaturesKHR4$fToCStructPhysicalDevicePerformanceQueryFeaturesKHR1$fZeroPhysicalDevicePerformanceQueryPropertiesKHR5$fStorablePhysicalDevicePerformanceQueryPropertiesKHR8$fFromCStructPhysicalDevicePerformanceQueryPropertiesKHR6$fToCStructPhysicalDevicePerformanceQueryPropertiesKHR'$fZeroQueryPoolPerformanceCreateInfoKHR.$fFromCStructQueryPoolPerformanceCreateInfoKHR,$fToCStructQueryPoolPerformanceCreateInfoKHR#$fZeroPerformanceQuerySubmitInfoKHR'$fStorablePerformanceQuerySubmitInfoKHR*$fFromCStructPerformanceQuerySubmitInfoKHR($fToCStructPerformanceQuerySubmitInfoKHR!$fZeroPerformanceCounterResultKHR&$fToCStructPerformanceCounterResultKHR $fReadPerformanceCounterScopeKHR $fShowPerformanceCounterScopeKHR$fReadPerformanceCounterUnitKHR$fShowPerformanceCounterUnitKHR"$fReadPerformanceCounterStorageKHR"$fShowPerformanceCounterStorageKHR$fZeroPerformanceCounterKHR$fStorablePerformanceCounterKHR"$fFromCStructPerformanceCounterKHR $fToCStructPerformanceCounterKHR.$fReadPerformanceCounterDescriptionFlagBitsKHR.$fShowPerformanceCounterDescriptionFlagBitsKHR&$fZeroPerformanceCounterDescriptionKHR*$fStorablePerformanceCounterDescriptionKHR-$fFromCStructPerformanceCounterDescriptionKHR+$fToCStructPerformanceCounterDescriptionKHR%$fReadAcquireProfilingLockFlagBitsKHR%$fShowAcquireProfilingLockFlagBitsKHR!$fZeroAcquireProfilingLockInfoKHR%$fStorableAcquireProfilingLockInfoKHR($fFromCStructAcquireProfilingLockInfoKHR&$fToCStructAcquireProfilingLockInfoKHR!$fShowPerformanceCounterResultKHR$fEqPerformanceCounterScopeKHR$fOrdPerformanceCounterScopeKHR$$fStorablePerformanceCounterScopeKHR $fZeroPerformanceCounterScopeKHR$fEqPerformanceCounterUnitKHR$fOrdPerformanceCounterUnitKHR#$fStorablePerformanceCounterUnitKHR$fZeroPerformanceCounterUnitKHR $fEqPerformanceCounterStorageKHR!$fOrdPerformanceCounterStorageKHR&$fStorablePerformanceCounterStorageKHR"$fZeroPerformanceCounterStorageKHR,$fEqPerformanceCounterDescriptionFlagBitsKHR-$fOrdPerformanceCounterDescriptionFlagBitsKHR2$fStorablePerformanceCounterDescriptionFlagBitsKHR.$fZeroPerformanceCounterDescriptionFlagBitsKHR.$fBitsPerformanceCounterDescriptionFlagBitsKHR#$fEqAcquireProfilingLockFlagBitsKHR$$fOrdAcquireProfilingLockFlagBitsKHR)$fStorableAcquireProfilingLockFlagBitsKHR%$fZeroAcquireProfilingLockFlagBitsKHR%$fBitsAcquireProfilingLockFlagBitsKHR#$fShowPerformanceQuerySubmitInfoKHR!$fShowAcquireProfilingLockInfoKHR'$fShowQueryPoolPerformanceCreateInfoKHR&$fShowPerformanceCounterDescriptionKHR$fShowPerformanceCounterKHR1$fShowPhysicalDevicePerformanceQueryPropertiesKHR/$fShowPhysicalDevicePerformanceQueryFeaturesKHR+KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME)KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION-$sel:semaphore:SemaphoreGetWin32HandleInfoKHR.$sel:handleType:SemaphoreGetWin32HandleInfoKHR0$sel:waitSemaphoreValues: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$$fShowSemaphoreGetWin32HandleInfoKHR$fShowD3D12FenceSubmitInfoKHR'$fShowExportSemaphoreWin32HandleInfoKHR'$fShowImportSemaphoreWin32HandleInfoKHR(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$fShowSemaphoreGetFdInfoKHR$fShowImportSemaphoreFdInfoKHR(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$$fZeroImportMemoryWin32HandleInfoKHR($fStorableImportMemoryWin32HandleInfoKHR+$fFromCStructImportMemoryWin32HandleInfoKHR)$fToCStructImportMemoryWin32HandleInfoKHR$$fZeroExportMemoryWin32HandleInfoKHR($fStorableExportMemoryWin32HandleInfoKHR+$fFromCStructExportMemoryWin32HandleInfoKHR)$fToCStructExportMemoryWin32HandleInfoKHR$$fZeroMemoryWin32HandlePropertiesKHR($fStorableMemoryWin32HandlePropertiesKHR+$fFromCStructMemoryWin32HandlePropertiesKHR)$fToCStructMemoryWin32HandlePropertiesKHR!$fZeroMemoryGetWin32HandleInfoKHR%$fStorableMemoryGetWin32HandleInfoKHR($fFromCStructMemoryGetWin32HandleInfoKHR&$fToCStructMemoryGetWin32HandleInfoKHR!$fShowMemoryGetWin32HandleInfoKHR$$fShowMemoryWin32HandlePropertiesKHR$$fShowExportMemoryWin32HandleInfoKHR$$fShowImportMemoryWin32HandleInfoKHR%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$fShowMemoryGetFdInfoKHR$fShowMemoryFdPropertiesKHR$fShowImportMemoryFdInfoKHR'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 $fShowFenceGetWin32HandleInfoKHR#$fShowExportFenceWin32HandleInfoKHR#$fShowImportFenceWin32HandleInfoKHR$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$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:PhysicalDeviceTransformFeedbackFeaturesEXTcmdWithTransformFeedbackEXTcmdWithQueryIndexedEXT0$fZeroPhysicalDeviceTransformFeedbackFeaturesEXT4$fStorablePhysicalDeviceTransformFeedbackFeaturesEXT7$fFromCStructPhysicalDeviceTransformFeedbackFeaturesEXT5$fToCStructPhysicalDeviceTransformFeedbackFeaturesEXT2$fZeroPhysicalDeviceTransformFeedbackPropertiesEXT6$fStorablePhysicalDeviceTransformFeedbackPropertiesEXT9$fFromCStructPhysicalDeviceTransformFeedbackPropertiesEXT7$fToCStructPhysicalDeviceTransformFeedbackPropertiesEXT4$fReadPipelineRasterizationStateStreamCreateFlagsEXT4$fShowPipelineRasterizationStateStreamCreateFlagsEXT3$fZeroPipelineRasterizationStateStreamCreateInfoEXT7$fStorablePipelineRasterizationStateStreamCreateInfoEXT:$fFromCStructPipelineRasterizationStateStreamCreateInfoEXT8$fToCStructPipelineRasterizationStateStreamCreateInfoEXT2$fEqPipelineRasterizationStateStreamCreateFlagsEXT3$fOrdPipelineRasterizationStateStreamCreateFlagsEXT8$fStorablePipelineRasterizationStateStreamCreateFlagsEXT4$fZeroPipelineRasterizationStateStreamCreateFlagsEXT4$fBitsPipelineRasterizationStateStreamCreateFlagsEXT3$fShowPipelineRasterizationStateStreamCreateInfoEXT2$fShowPhysicalDeviceTransformFeedbackPropertiesEXT0$fShowPhysicalDeviceTransformFeedbackFeaturesEXTEXT_TOOLING_INFO_EXTENSION_NAMEEXT_TOOLING_INFO_SPEC_VERSIONToolPurposeFlagsEXTToolPurposeFlagBitsEXT)$sel:name:PhysicalDeviceToolPropertiesEXT,$sel:version:PhysicalDeviceToolPropertiesEXT-$sel:purposes:PhysicalDeviceToolPropertiesEXT0$sel:description:PhysicalDeviceToolPropertiesEXT*$sel:layer:PhysicalDeviceToolPropertiesEXT$TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT"TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT'TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT(TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXTTOOL_PURPOSE_TRACING_BIT_EXTTOOL_PURPOSE_PROFILING_BIT_EXTTOOL_PURPOSE_VALIDATION_BIT_EXT$fReadToolPurposeFlagBitsEXT$fShowToolPurposeFlagBitsEXT%$fZeroPhysicalDeviceToolPropertiesEXT)$fStorablePhysicalDeviceToolPropertiesEXT,$fFromCStructPhysicalDeviceToolPropertiesEXT*$fToCStructPhysicalDeviceToolPropertiesEXT$fEqToolPurposeFlagBitsEXT$fOrdToolPurposeFlagBitsEXT $fStorableToolPurposeFlagBitsEXT$fZeroToolPurposeFlagBitsEXT$fBitsToolPurposeFlagBitsEXT%$fShowPhysicalDeviceToolPropertiesEXT#EXT_SAMPLE_LOCATIONS_EXTENSION_NAME!EXT_SAMPLE_LOCATIONS_SPEC_VERSION7$sel:maxSampleLocationGridSize:MultisamplePropertiesEXTJ$sel:sampleLocationSampleCounts:PhysicalDeviceSampleLocationsPropertiesEXTI$sel:maxSampleLocationGridSize:PhysicalDeviceSampleLocationsPropertiesEXTM$sel:sampleLocationCoordinateRange:PhysicalDeviceSampleLocationsPropertiesEXTJ$sel:sampleLocationSubPixelBits:PhysicalDeviceSampleLocationsPropertiesEXTG$sel:variableSampleLocations:PhysicalDeviceSampleLocationsPropertiesEXTD$sel:sampleLocationsEnable:PipelineSampleLocationsStateCreateInfoEXTB$sel:sampleLocationsInfo:PipelineSampleLocationsStateCreateInfoEXTK$sel:attachmentInitialSampleLocations:RenderPassSampleLocationsBeginInfoEXTE$sel:postSubpassSampleLocations:RenderPassSampleLocationsBeginInfoEXT+$sel:subpassIndex:SubpassSampleLocationsEXT2$sel:sampleLocationsInfo:SubpassSampleLocationsEXT1$sel:attachmentIndex:AttachmentSampleLocationsEXT5$sel:sampleLocationsInfo:AttachmentSampleLocationsEXT3$sel:sampleLocationsPerPixel:SampleLocationsInfoEXT2$sel:sampleLocationGridSize:SampleLocationsInfoEXT+$sel:sampleLocations:SampleLocationsInfoEXT$sel:x:SampleLocationEXT$sel:y:SampleLocationEXT$fZeroSampleLocationEXT$fStorableSampleLocationEXT$fFromCStructSampleLocationEXT$fToCStructSampleLocationEXT$fZeroSampleLocationsInfoEXT#$fFromCStructSampleLocationsInfoEXT!$fToCStructSampleLocationsInfoEXT"$fZeroAttachmentSampleLocationsEXT)$fFromCStructAttachmentSampleLocationsEXT'$fToCStructAttachmentSampleLocationsEXT$fZeroSubpassSampleLocationsEXT&$fFromCStructSubpassSampleLocationsEXT$$fToCStructSubpassSampleLocationsEXT+$fZeroRenderPassSampleLocationsBeginInfoEXT2$fFromCStructRenderPassSampleLocationsBeginInfoEXT0$fToCStructRenderPassSampleLocationsBeginInfoEXT/$fZeroPipelineSampleLocationsStateCreateInfoEXT6$fFromCStructPipelineSampleLocationsStateCreateInfoEXT4$fToCStructPipelineSampleLocationsStateCreateInfoEXT0$fZeroPhysicalDeviceSampleLocationsPropertiesEXT7$fFromCStructPhysicalDeviceSampleLocationsPropertiesEXT5$fToCStructPhysicalDeviceSampleLocationsPropertiesEXT$fZeroMultisamplePropertiesEXT%$fFromCStructMultisamplePropertiesEXT#$fToCStructMultisamplePropertiesEXT$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$fEqLineRasterizationModeEXT$fOrdLineRasterizationModeEXT"$fStorableLineRasterizationModeEXT$fZeroLineRasterizationModeEXT1$fShowPipelineRasterizationLineStateCreateInfoEXT2$fShowPhysicalDeviceLineRasterizationPropertiesEXT0$fShowPhysicalDeviceLineRasterizationFeaturesEXT(EXT_CONDITIONAL_RENDERING_EXTENSION_NAME&EXT_CONDITIONAL_RENDERING_SPEC_VERSIONConditionalRenderingFlagsEXTConditionalRenderingFlagBitsEXTG$sel:conditionalRendering:PhysicalDeviceConditionalRenderingFeaturesEXTP$sel:inheritedConditionalRendering:PhysicalDeviceConditionalRenderingFeaturesEXTS$sel:conditionalRenderingEnable:CommandBufferInheritanceConditionalRenderingInfoEXT,$sel:buffer:ConditionalRenderingBeginInfoEXT,$sel:offset:ConditionalRenderingBeginInfoEXT+$sel:flags:ConditionalRenderingBeginInfoEXT&CONDITIONAL_RENDERING_INVERTED_BIT_EXTcmdWithConditionalRenderingEXT9$fZeroCommandBufferInheritanceConditionalRenderingInfoEXT=$fStorableCommandBufferInheritanceConditionalRenderingInfoEXT@$fFromCStructCommandBufferInheritanceConditionalRenderingInfoEXT>$fToCStructCommandBufferInheritanceConditionalRenderingInfoEXT3$fZeroPhysicalDeviceConditionalRenderingFeaturesEXT7$fStorablePhysicalDeviceConditionalRenderingFeaturesEXT:$fFromCStructPhysicalDeviceConditionalRenderingFeaturesEXT8$fToCStructPhysicalDeviceConditionalRenderingFeaturesEXT%$fReadConditionalRenderingFlagBitsEXT%$fShowConditionalRenderingFlagBitsEXT&$fZeroConditionalRenderingBeginInfoEXT*$fStorableConditionalRenderingBeginInfoEXT-$fFromCStructConditionalRenderingBeginInfoEXT+$fToCStructConditionalRenderingBeginInfoEXT#$fEqConditionalRenderingFlagBitsEXT$$fOrdConditionalRenderingFlagBitsEXT)$fStorableConditionalRenderingFlagBitsEXT%$fZeroConditionalRenderingFlagBitsEXT%$fBitsConditionalRenderingFlagBitsEXT3$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 $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$$fFromCStructShaderStatisticsInfoAMD"$fToCStructShaderStatisticsInfoAMD$fReadShaderInfoTypeAMD$fShowShaderInfoTypeAMD$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:SemaphoreWaitInfo4$sel:waitSemaphoreValues:TimelineSemaphoreSubmitInfo6$sel:signalSemaphoreValues:TimelineSemaphoreSubmitInfo*$sel:semaphoreType:SemaphoreTypeCreateInfo)$sel:initialValue:SemaphoreTypeCreateInfoR$sel:maxTimelineSemaphoreValueDifference:PhysicalDeviceTimelineSemaphoreProperties>$sel:timelineSemaphore:PhysicalDeviceTimelineSemaphoreFeatures-$fZeroPhysicalDeviceTimelineSemaphoreFeatures1$fStorablePhysicalDeviceTimelineSemaphoreFeatures4$fFromCStructPhysicalDeviceTimelineSemaphoreFeatures2$fToCStructPhysicalDeviceTimelineSemaphoreFeatures/$fZeroPhysicalDeviceTimelineSemaphoreProperties3$fStorablePhysicalDeviceTimelineSemaphoreProperties6$fFromCStructPhysicalDeviceTimelineSemaphoreProperties4$fToCStructPhysicalDeviceTimelineSemaphoreProperties$fZeroSemaphoreTypeCreateInfo!$fStorableSemaphoreTypeCreateInfo$$fFromCStructSemaphoreTypeCreateInfo"$fToCStructSemaphoreTypeCreateInfo!$fZeroTimelineSemaphoreSubmitInfo($fFromCStructTimelineSemaphoreSubmitInfo&$fToCStructTimelineSemaphoreSubmitInfo$fZeroSemaphoreWaitInfo$fFromCStructSemaphoreWaitInfo$fToCStructSemaphoreWaitInfo$fZeroSemaphoreSignalInfo$fStorableSemaphoreSignalInfo $fFromCStructSemaphoreSignalInfo$fToCStructSemaphoreSignalInfo$fShowSemaphoreSignalInfo$fShowSemaphoreWaitInfo!$fShowTimelineSemaphoreSubmitInfo$fShowSemaphoreTypeCreateInfo/$fShowPhysicalDeviceTimelineSemaphoreProperties-$fShowPhysicalDeviceTimelineSemaphoreFeatures%KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME#KHR_TIMELINE_SEMAPHORE_SPEC_VERSIONSemaphoreSignalInfoKHRSemaphoreWaitInfoKHRTimelineSemaphoreSubmitInfoKHRSemaphoreTypeCreateInfoKHR,PhysicalDeviceTimelineSemaphorePropertiesKHR*PhysicalDeviceTimelineSemaphoreFeaturesKHRSemaphoreWaitFlagBitsKHRSemaphoreTypeKHRSemaphoreWaitFlagsKHRSEMAPHORE_WAIT_ANY_BIT_KHRSEMAPHORE_TYPE_TIMELINE_KHRSEMAPHORE_TYPE_BINARY_KHR(STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR&STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR1STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR-STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR@STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR>STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR.$sel:attachments:RenderPassAttachmentBeginInfo)$sel:flags:FramebufferAttachmentImageInfo)$sel:usage:FramebufferAttachmentImageInfo)$sel:width:FramebufferAttachmentImageInfo*$sel:height:FramebufferAttachmentImageInfo.$sel:layerCount:FramebufferAttachmentImageInfo/$sel:viewFormats:FramebufferAttachmentImageInfo:$sel:attachmentImageInfos:FramebufferAttachmentsCreateInfoD$sel:imagelessFramebuffer:PhysicalDeviceImagelessFramebufferFeatures0$fZeroPhysicalDeviceImagelessFramebufferFeatures4$fStorablePhysicalDeviceImagelessFramebufferFeatures7$fFromCStructPhysicalDeviceImagelessFramebufferFeatures5$fToCStructPhysicalDeviceImagelessFramebufferFeatures$$fZeroFramebufferAttachmentImageInfo+$fFromCStructFramebufferAttachmentImageInfo)$fToCStructFramebufferAttachmentImageInfo&$fZeroFramebufferAttachmentsCreateInfo-$fFromCStructFramebufferAttachmentsCreateInfo+$fToCStructFramebufferAttachmentsCreateInfo#$fZeroRenderPassAttachmentBeginInfo*$fFromCStructRenderPassAttachmentBeginInfo($fToCStructRenderPassAttachmentBeginInfo#$fShowRenderPassAttachmentBeginInfo$$fShowFramebufferAttachmentImageInfo&$fShowFramebufferAttachmentsCreateInfo0$fShowPhysicalDeviceImagelessFramebufferFeatures(KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME&KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION RenderPassAttachmentBeginInfoKHR!FramebufferAttachmentImageInfoKHR-PhysicalDeviceImagelessFramebufferFeaturesKHR4STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR4STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR6STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHRASTRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR&KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME$KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION&AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME$AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION0$sel:memory:DeviceMemoryOpaqueCaptureAddressInfo@$sel:opaqueCaptureAddress:MemoryOpaqueCaptureAddressAllocateInfo>$sel:opaqueCaptureAddress:BufferOpaqueCaptureAddressCreateInfo#$sel:buffer:BufferDeviceAddressInfoB$sel:bufferDeviceAddress:PhysicalDeviceBufferDeviceAddressFeaturesO$sel:bufferDeviceAddressCaptureReplay:PhysicalDeviceBufferDeviceAddressFeaturesM$sel:bufferDeviceAddressMultiDevice:PhysicalDeviceBufferDeviceAddressFeatures/$fZeroPhysicalDeviceBufferDeviceAddressFeatures3$fStorablePhysicalDeviceBufferDeviceAddressFeatures6$fFromCStructPhysicalDeviceBufferDeviceAddressFeatures4$fToCStructPhysicalDeviceBufferDeviceAddressFeatures$fZeroBufferDeviceAddressInfo!$fStorableBufferDeviceAddressInfo$$fFromCStructBufferDeviceAddressInfo"$fToCStructBufferDeviceAddressInfo*$fZeroBufferOpaqueCaptureAddressCreateInfo.$fStorableBufferOpaqueCaptureAddressCreateInfo1$fFromCStructBufferOpaqueCaptureAddressCreateInfo/$fToCStructBufferOpaqueCaptureAddressCreateInfo,$fZeroMemoryOpaqueCaptureAddressAllocateInfo0$fStorableMemoryOpaqueCaptureAddressAllocateInfo3$fFromCStructMemoryOpaqueCaptureAddressAllocateInfo1$fToCStructMemoryOpaqueCaptureAddressAllocateInfo*$fZeroDeviceMemoryOpaqueCaptureAddressInfo.$fStorableDeviceMemoryOpaqueCaptureAddressInfo1$fFromCStructDeviceMemoryOpaqueCaptureAddressInfo/$fToCStructDeviceMemoryOpaqueCaptureAddressInfo*$fShowDeviceMemoryOpaqueCaptureAddressInfo,$fShowMemoryOpaqueCaptureAddressAllocateInfo*$fShowBufferOpaqueCaptureAddressCreateInfo$fShowBufferDeviceAddressInfo/$fShowPhysicalDeviceBufferDeviceAddressFeatures(KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME&KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION'DeviceMemoryOpaqueCaptureAddressInfoKHR)MemoryOpaqueCaptureAddressAllocateInfoKHR'BufferOpaqueCaptureAddressCreateInfoKHRBufferDeviceAddressInfoKHR5MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR3BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHRSTRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR$sel:localDimmingEnable:SwapchainDisplayNativeHdrCreateInfoAMD?$sel:localDimmingSupport:DisplayNativeHdrSurfaceCapabilitiesAMD,$fZeroDisplayNativeHdrSurfaceCapabilitiesAMD0$fStorableDisplayNativeHdrSurfaceCapabilitiesAMD3$fFromCStructDisplayNativeHdrSurfaceCapabilitiesAMD1$fToCStructDisplayNativeHdrSurfaceCapabilitiesAMD,$fZeroSwapchainDisplayNativeHdrCreateInfoAMD0$fStorableSwapchainDisplayNativeHdrCreateInfoAMD3$fFromCStructSwapchainDisplayNativeHdrCreateInfoAMD1$fToCStructSwapchainDisplayNativeHdrCreateInfoAMD,$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($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$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$fShowMemoryRequirements$sel:layerName:LayerProperties $sel:specVersion:LayerProperties*$sel:implementationVersion:LayerProperties $sel:description:LayerProperties$fZeroLayerProperties$fStorableLayerProperties$fFromCStructLayerProperties$fToCStructLayerProperties$fShowLayerProperties$sel:flags:EventCreateInfo withEvent$fZeroEventCreateInfo$fStorableEventCreateInfo$fFromCStructEventCreateInfo$fToCStructEventCreateInfo$fShowEventCreateInfo $sel:flags:CommandPoolCreateInfo+$sel:queueFamilyIndex:CommandPoolCreateInfowithCommandPool$fZeroCommandPoolCreateInfo$fStorableCommandPoolCreateInfo"$fFromCStructCommandPoolCreateInfo $fToCStructCommandPoolCreateInfo$fShowCommandPoolCreateInfo$sel:flags:BufferViewCreateInfo $sel:buffer:BufferViewCreateInfo $sel:format:BufferViewCreateInfo $sel:offset:BufferViewCreateInfo$sel:range:BufferViewCreateInfowithBufferView$fZeroBufferViewCreateInfo$fStorableBufferViewCreateInfo!$fFromCStructBufferViewCreateInfo$fToCStructBufferViewCreateInfo$fShowBufferViewCreateInfo&$sel:extensionName:ExtensionProperties$$sel:specVersion:ExtensionProperties$fZeroExtensionProperties$fStorableExtensionProperties $fFromCStructExtensionProperties$fToCStructExtensionProperties$fShowExtensionProperties peekChain withChain withZeroChainExtendss ExtensibleextensibleTypegetNextsetNextextends SomeStructExtends$sel:sType:BaseInStructure$sel:next:BaseInStructure$sel:sType:BaseOutStructure$sel:next:BaseOutStructure:&::&forgetExtensionswithSomeCStructpokeSomeCStructpeekSomeCStruct$fZeroBaseOutStructure$fStorableBaseOutStructure$fFromCStructBaseOutStructure$fToCStructBaseOutStructure$fZeroBaseInStructure$fStorableBaseInStructure$fFromCStructBaseInStructure$fToCStructBaseInStructure $fPokeChain: $fPokeChain[]$fZeroSomeStruct $fPeekChain: $fPeekChain[]$fShowSomeStruct$fShowBaseInStructure$fShowBaseOutStructure-KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME+KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION$$sel:surfaceFormat:SurfaceFormat2KHR!$sel:next:SurfaceCapabilities2KHR0$sel:surfaceCapabilities:SurfaceCapabilities2KHR'$sel:next:PhysicalDeviceSurfaceInfo2KHR*$sel:surface:PhysicalDeviceSurfaceInfo2KHR#$fZeroPhysicalDeviceSurfaceInfo2KHR*$fFromCStructPhysicalDeviceSurfaceInfo2KHR($fToCStructPhysicalDeviceSurfaceInfo2KHR)$fExtensiblePhysicalDeviceSurfaceInfo2KHR$fZeroSurfaceCapabilities2KHR$$fFromCStructSurfaceCapabilities2KHR"$fToCStructSurfaceCapabilities2KHR#$fExtensibleSurfaceCapabilities2KHR$fZeroSurfaceFormat2KHR$fFromCStructSurfaceFormat2KHR$fToCStructSurfaceFormat2KHR$fShowSurfaceFormat2KHR$fShowSurfaceCapabilities2KHR#$fShowPhysicalDeviceSurfaceInfo2KHR>$sel:exportFromImportedHandleTypes:ExternalSemaphoreProperties6$sel:compatibleHandleTypes:ExternalSemaphoreProperties:$sel:externalSemaphoreFeatures:ExternalSemaphoreProperties-$sel:next:PhysicalDeviceExternalSemaphoreInfo3$sel:handleType:PhysicalDeviceExternalSemaphoreInfo)$fZeroPhysicalDeviceExternalSemaphoreInfo0$fFromCStructPhysicalDeviceExternalSemaphoreInfo.$fToCStructPhysicalDeviceExternalSemaphoreInfo/$fExtensiblePhysicalDeviceExternalSemaphoreInfo!$fZeroExternalSemaphoreProperties%$fStorableExternalSemaphoreProperties($fFromCStructExternalSemaphoreProperties&$fToCStructExternalSemaphoreProperties!$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: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:SubmitInfo$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: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$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$fZeroPhysicalDeviceFragmentDensityMapPropertiesEXT:$fFromCStructPhysicalDeviceFragmentDensityMapPropertiesEXT8$fToCStructPhysicalDeviceFragmentDensityMapPropertiesEXT/$fZeroRenderPassFragmentDensityMapCreateInfoEXT6$fFromCStructRenderPassFragmentDensityMapCreateInfoEXT4$fToCStructRenderPassFragmentDensityMapCreateInfoEXT/$fShowRenderPassFragmentDensityMapCreateInfoEXT3$fShowPhysicalDeviceFragmentDensityMapPropertiesEXT1$fShowPhysicalDeviceFragmentDensityMapFeaturesEXT$sel:x:DispatchIndirectCommand$sel:y:DispatchIndirectCommand$sel:z:DispatchIndirectCommand*$sel:indexCount:DrawIndexedIndirectCommand-$sel:instanceCount:DrawIndexedIndirectCommand*$sel:firstIndex:DrawIndexedIndirectCommand,$sel:vertexOffset:DrawIndexedIndirectCommand-$sel:firstInstance:DrawIndexedIndirectCommand$$sel:vertexCount:DrawIndirectCommand&$sel:instanceCount:DrawIndirectCommand$$sel:firstVertex:DrawIndirectCommand&$sel:firstInstance:DrawIndirectCommand$sel:next:ImageMemoryBarrier%$sel:srcAccessMask:ImageMemoryBarrier%$sel:dstAccessMask:ImageMemoryBarrier!$sel:oldLayout:ImageMemoryBarrier!$sel:newLayout:ImageMemoryBarrier+$sel:srcQueueFamilyIndex:ImageMemoryBarrier+$sel:dstQueueFamilyIndex:ImageMemoryBarrier$sel:image:ImageMemoryBarrier($sel:subresourceRange:ImageMemoryBarrier&$sel:srcAccessMask:BufferMemoryBarrier&$sel:dstAccessMask:BufferMemoryBarrier,$sel:srcQueueFamilyIndex:BufferMemoryBarrier,$sel:dstQueueFamilyIndex:BufferMemoryBarrier$sel:buffer:BufferMemoryBarrier$sel:offset:BufferMemoryBarrier$sel:size:BufferMemoryBarrier $sel:srcAccessMask:MemoryBarrier $sel:dstAccessMask:MemoryBarrier$fZeroMemoryBarrier$fStorableMemoryBarrier$fFromCStructMemoryBarrier$fToCStructMemoryBarrier$fZeroBufferMemoryBarrier$fStorableBufferMemoryBarrier $fFromCStructBufferMemoryBarrier$fToCStructBufferMemoryBarrier$fZeroImageMemoryBarrier$fFromCStructImageMemoryBarrier$fToCStructImageMemoryBarrier$fExtensibleImageMemoryBarrier$fZeroDrawIndirectCommand$fStorableDrawIndirectCommand $fFromCStructDrawIndirectCommand$fToCStructDrawIndirectCommand $fZeroDrawIndexedIndirectCommand$$fStorableDrawIndexedIndirectCommand'$fFromCStructDrawIndexedIndirectCommand%$fToCStructDrawIndexedIndirectCommand$fZeroDispatchIndirectCommand!$fStorableDispatchIndirectCommand$$fFromCStructDispatchIndirectCommand"$fToCStructDispatchIndirectCommand$fShowDispatchIndirectCommand $fShowDrawIndexedIndirectCommand$fShowDrawIndirectCommand$fShowImageMemoryBarrier$fShowBufferMemoryBarrier$fShowMemoryBarrier$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$fShowMappedMemoryRange$fShowMemoryAllocateInfo$sel:next:ImageViewCreateInfo$sel:flags:ImageViewCreateInfo$sel:image:ImageViewCreateInfo!$sel:viewType:ImageViewCreateInfo$sel:format:ImageViewCreateInfo#$sel:components:ImageViewCreateInfo)$sel:subresourceRange:ImageViewCreateInfo$sel:r:ComponentMapping$sel:g:ComponentMapping$sel:b:ComponentMapping$sel:a:ComponentMapping withImageView$fZeroComponentMapping$fStorableComponentMapping$fFromCStructComponentMapping$fToCStructComponentMapping$fZeroImageViewCreateInfo $fFromCStructImageViewCreateInfo$fToCStructImageViewCreateInfo$fExtensibleImageViewCreateInfo$fShowImageViewCreateInfo$fShowComponentMapping>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)$fShowImageDrmFormatModifierPropertiesEXT1$fShowImageDrmFormatModifierExplicitCreateInfoEXT-$fShowImageDrmFormatModifierListCreateInfoEXT1$fShowPhysicalDeviceImageDrmFormatModifierInfoEXT$$fShowDrmFormatModifierPropertiesEXT($fShowDrmFormatModifierPropertiesListEXT$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:SparseMemoryBind3$sel:formatProperties:SparseImageMemoryRequirements7$sel:imageMipTailFirstLod:SparseImageMemoryRequirements3$sel:imageMipTailSize:SparseImageMemoryRequirements5$sel:imageMipTailOffset:SparseImageMemoryRequirements5$sel:imageMipTailStride:SparseImageMemoryRequirements+$sel:aspectMask:SparseImageFormatProperties1$sel:imageGranularity:SparseImageFormatProperties&$sel:flags:SparseImageFormatProperties!$fZeroSparseImageFormatProperties($fFromCStructSparseImageFormatProperties&$fToCStructSparseImageFormatProperties#$fZeroSparseImageMemoryRequirements*$fFromCStructSparseImageMemoryRequirements($fToCStructSparseImageMemoryRequirements$fZeroSparseMemoryBind$fStorableSparseMemoryBind$fFromCStructSparseMemoryBind$fToCStructSparseMemoryBind$fZeroSparseImageMemoryBind"$fFromCStructSparseImageMemoryBind $fToCStructSparseImageMemoryBind $fZeroSparseBufferMemoryBindInfo'$fFromCStructSparseBufferMemoryBindInfo%$fToCStructSparseBufferMemoryBindInfo%$fZeroSparseImageOpaqueMemoryBindInfo,$fFromCStructSparseImageOpaqueMemoryBindInfo*$fToCStructSparseImageOpaqueMemoryBindInfo$fZeroSparseImageMemoryBindInfo&$fFromCStructSparseImageMemoryBindInfo$$fToCStructSparseImageMemoryBindInfo$fZeroBindSparseInfo$fFromCStructBindSparseInfo$fToCStructBindSparseInfo$fExtensibleBindSparseInfo$fShowBindSparseInfo$fShowSparseImageMemoryBindInfo%$fShowSparseImageOpaqueMemoryBindInfo $fShowSparseBufferMemoryBindInfo$fShowSparseImageMemoryBind$fShowSparseMemoryBind#$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+$fFromCStructSparseImageMemoryRequirements2)$fToCStructSparseImageMemoryRequirements2$$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:FenceCreateInfo$sel:flags:FenceCreateInfo withFence$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"$fFromCStructQueueFamilyProperties $fToCStructQueueFamilyProperties$fZeroMemoryType$fStorableMemoryType$fFromCStructMemoryType$fToCStructMemoryType$fZeroMemoryHeap$fStorableMemoryHeap$fFromCStructMemoryHeap$fToCStructMemoryHeap$$fZeroPhysicalDeviceMemoryProperties+$fFromCStructPhysicalDeviceMemoryProperties)$fToCStructPhysicalDeviceMemoryProperties$fZeroFormatProperties$fStorableFormatProperties$fFromCStructFormatProperties$fToCStructFormatProperties$fZeroImageFormatProperties"$fFromCStructImageFormatProperties $fToCStructImageFormatProperties$fZeroPhysicalDeviceFeatures $fStorablePhysicalDeviceFeatures#$fFromCStructPhysicalDeviceFeatures!$fToCStructPhysicalDeviceFeatures$$fZeroPhysicalDeviceSparseProperties($fStorablePhysicalDeviceSparseProperties+$fFromCStructPhysicalDeviceSparseProperties)$fToCStructPhysicalDeviceSparseProperties$fZeroPhysicalDeviceLimits$fStorablePhysicalDeviceLimits!$fFromCStructPhysicalDeviceLimits$fToCStructPhysicalDeviceLimits$fZeroPhysicalDeviceProperties%$fFromCStructPhysicalDeviceProperties#$fToCStructPhysicalDeviceProperties$fShowPhysicalDeviceLimits$$fShowPhysicalDeviceSparseProperties$fShowPhysicalDeviceFeatures$fShowImageFormatProperties$fShowFormatProperties$fShowMemoryHeap$fShowMemoryType$$fShowPhysicalDeviceMemoryProperties$fShowQueueFamilyProperties$fShowInstanceCreateInfo$fShowApplicationInfo$fShowPhysicalDeviceProperties.NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME,NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSIONExternalMemoryFeatureFlagsNVExternalMemoryFeatureFlagBitsNV:$sel:imageFormatProperties:ExternalImageFormatPropertiesNV;$sel:externalMemoryFeatures:ExternalImageFormatPropertiesNVB$sel:exportFromImportedHandleTypes:ExternalImageFormatPropertiesNV:$sel:compatibleHandleTypes:ExternalImageFormatPropertiesNV)EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV)EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV-EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV2EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV3EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV/EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV($fReadExternalMemoryHandleTypeFlagBitsNV($fShowExternalMemoryHandleTypeFlagBitsNV%$fReadExternalMemoryFeatureFlagBitsNV%$fShowExternalMemoryFeatureFlagBitsNV%$fZeroExternalImageFormatPropertiesNV,$fFromCStructExternalImageFormatPropertiesNV*$fToCStructExternalImageFormatPropertiesNV&$fEqExternalMemoryHandleTypeFlagBitsNV'$fOrdExternalMemoryHandleTypeFlagBitsNV,$fStorableExternalMemoryHandleTypeFlagBitsNV($fZeroExternalMemoryHandleTypeFlagBitsNV($fBitsExternalMemoryHandleTypeFlagBitsNV#$fEqExternalMemoryFeatureFlagBitsNV$$fOrdExternalMemoryFeatureFlagBitsNV)$fStorableExternalMemoryFeatureFlagBitsNV%$fZeroExternalMemoryFeatureFlagBitsNV%$fBitsExternalMemoryFeatureFlagBitsNV%$fShowExternalImageFormatPropertiesNV'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#$fShowExportMemoryWin32HandleInfoNV#$fShowImportMemoryWin32HandleInfoNV!NV_EXTERNAL_MEMORY_EXTENSION_NAMENV_EXTERNAL_MEMORY_SPEC_VERSION+$sel:handleTypes:ExportMemoryAllocateInfoNV0$sel:handleTypes:ExternalMemoryImageCreateInfoNV%$fZeroExternalMemoryImageCreateInfoNV)$fStorableExternalMemoryImageCreateInfoNV,$fFromCStructExternalMemoryImageCreateInfoNV*$fToCStructExternalMemoryImageCreateInfoNV $fZeroExportMemoryAllocateInfoNV$$fStorableExportMemoryAllocateInfoNV'$fFromCStructExportMemoryAllocateInfoNV%$fToCStructExportMemoryAllocateInfoNV $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)$fFromCStructSparseImageFormatProperties2'$fToCStructSparseImageFormatProperties2*$fZeroPhysicalDeviceSparseImageFormatInfo2.$fStorablePhysicalDeviceSparseImageFormatInfo21$fFromCStructPhysicalDeviceSparseImageFormatInfo2/$fToCStructPhysicalDeviceSparseImageFormatInfo2*$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$fShowDeviceQueueCreateInfo#$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: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: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$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/$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 $fShowDescriptorSetLayoutSupport*$fShowPhysicalDeviceMaintenance3PropertiesKHR_MAINTENANCE3_EXTENSION_NAMEKHR_MAINTENANCE3_SPEC_VERSIONDescriptorSetLayoutSupportKHR'PhysicalDeviceMaintenance3PropertiesKHR0STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR;STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR$sel:aspectMask:ClearAttachment$$sel:colorAttachment:ClearAttachment$sel:clearValue:ClearAttachment$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:rect:ClearRect$sel:baseArrayLayer:ClearRect$sel:layerCount:ClearRect$sel:offset:Rect2D$sel:extent:Rect2D$sel:x:Viewport$sel:y:Viewport$sel:width:Viewport$sel:height:Viewport$sel:minDepth:Viewport$sel:maxDepth:Viewport cmdWithQuerycmdWithRenderPass$fZeroViewport$fStorableViewport$fFromCStructViewport$fToCStructViewport $fZeroRect2D$fFromCStructRect2D$fToCStructRect2D$fZeroClearRect$fFromCStructClearRect$fToCStructClearRect$fZeroBufferCopy$fStorableBufferCopy$fFromCStructBufferCopy$fToCStructBufferCopy$fZeroImageCopy$fFromCStructImageCopy$fToCStructImageCopy$fZeroImageBlit$fFromCStructImageBlit$fToCStructImageBlit$fZeroBufferImageCopy$fFromCStructBufferImageCopy$fToCStructBufferImageCopy$fZeroImageResolve$fFromCStructImageResolve$fToCStructImageResolve$fZeroRenderPassBeginInfo$fToCStructRenderPassBeginInfo$fExtensibleRenderPassBeginInfo$fZeroClearAttachment$fToCStructClearAttachment$fShowClearAttachment$fShowRenderPassBeginInfo$fShowImageResolve$fShowBufferImageCopy$fShowImageBlit$fShowImageCopy$fShowBufferCopy$fShowClearRect $fShowRect2D$fShowViewport)QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME'QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSIONB$sel:transform:CommandBufferInheritanceRenderPassTransformInfoQCOMC$sel:renderArea:CommandBufferInheritanceRenderPassTransformInfoQCOM/$sel:transform:RenderPassTransformBeginInfoQCOM&$fZeroRenderPassTransformBeginInfoQCOM*$fStorableRenderPassTransformBeginInfoQCOM-$fFromCStructRenderPassTransformBeginInfoQCOM+$fToCStructRenderPassTransformBeginInfoQCOM9$fZeroCommandBufferInheritanceRenderPassTransformInfoQCOM@$fFromCStructCommandBufferInheritanceRenderPassTransformInfoQCOM>$fToCStructCommandBufferInheritanceRenderPassTransformInfoQCOM9$fShowCommandBufferInheritanceRenderPassTransformInfoQCOM&$fShowRenderPassTransformBeginInfoQCOM#NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME!NV_SCISSOR_EXCLUSIVE_SPEC_VERSIONH$sel:exclusiveScissors:PipelineViewportExclusiveScissorStateCreateInfoNV>$sel:exclusiveScissor:PhysicalDeviceExclusiveScissorFeaturesNV.$fZeroPhysicalDeviceExclusiveScissorFeaturesNV2$fStorablePhysicalDeviceExclusiveScissorFeaturesNV5$fFromCStructPhysicalDeviceExclusiveScissorFeaturesNV3$fToCStructPhysicalDeviceExclusiveScissorFeaturesNV7$fZeroPipelineViewportExclusiveScissorStateCreateInfoNV>$fFromCStructPipelineViewportExclusiveScissorStateCreateInfoNV<$fToCStructPipelineViewportExclusiveScissorStateCreateInfoNV7$fShowPipelineViewportExclusiveScissorStateCreateInfoNV.$fShowPhysicalDeviceExclusiveScissorFeaturesNVKHR_SWAPCHAIN_EXTENSION_NAMEKHR_SWAPCHAIN_SPEC_VERSIONSwapchainCreateFlagsKHRSwapchainCreateFlagBitsKHR,$sel:modes:DeviceGroupSwapchainCreateInfoKHR*$sel:deviceMasks:DeviceGroupPresentInfoKHR#$sel:mode:DeviceGroupPresentInfoKHR&$sel:swapchain:AcquireNextImageInfoKHR$$sel:timeout:AcquireNextImageInfoKHR&$sel:semaphore:AcquireNextImageInfoKHR"$sel:fence:AcquireNextImageInfoKHR'$sel:deviceMask:AcquireNextImageInfoKHR.$sel:swapchain:BindImageMemorySwapchainInfoKHR/$sel:imageIndex:BindImageMemorySwapchainInfoKHR*$sel:swapchain:ImageSwapchainCreateInfoKHR2$sel:presentMask:DeviceGroupPresentCapabilitiesKHR,$sel:modes:DeviceGroupPresentCapabilitiesKHR$sel:next:PresentInfoKHR"$sel:waitSemaphores:PresentInfoKHR$sel:swapchains:PresentInfoKHR $sel:imageIndices:PresentInfoKHR$sel:results:PresentInfoKHR $sel:next:SwapchainCreateInfoKHR!$sel:flags:SwapchainCreateInfoKHR#$sel:surface:SwapchainCreateInfoKHR)$sel:minImageCount:SwapchainCreateInfoKHR'$sel:imageFormat:SwapchainCreateInfoKHR+$sel:imageColorSpace:SwapchainCreateInfoKHR'$sel:imageExtent:SwapchainCreateInfoKHR,$sel:imageArrayLayers:SwapchainCreateInfoKHR&$sel:imageUsage:SwapchainCreateInfoKHR,$sel:imageSharingMode:SwapchainCreateInfoKHR.$sel:queueFamilyIndices:SwapchainCreateInfoKHR($sel:preTransform:SwapchainCreateInfoKHR*$sel:compositeAlpha:SwapchainCreateInfoKHR'$sel:presentMode:SwapchainCreateInfoKHR#$sel:clipped:SwapchainCreateInfoKHR($sel:oldSwapchain:SwapchainCreateInfoKHR4SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR'SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR4DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR%DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR(DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHRwithSwapchainKHR$fZeroPresentInfoKHR$fFromCStructPresentInfoKHR$fToCStructPresentInfoKHR!$fZeroImageSwapchainCreateInfoKHR%$fStorableImageSwapchainCreateInfoKHR($fFromCStructImageSwapchainCreateInfoKHR&$fToCStructImageSwapchainCreateInfoKHR%$fZeroBindImageMemorySwapchainInfoKHR)$fStorableBindImageMemorySwapchainInfoKHR,$fFromCStructBindImageMemorySwapchainInfoKHR*$fToCStructBindImageMemorySwapchainInfoKHR$fZeroAcquireNextImageInfoKHR!$fStorableAcquireNextImageInfoKHR$$fFromCStructAcquireNextImageInfoKHR"$fToCStructAcquireNextImageInfoKHR'$fReadDeviceGroupPresentModeFlagBitsKHR'$fShowDeviceGroupPresentModeFlagBitsKHR$fZeroDeviceGroupPresentInfoKHR&$fFromCStructDeviceGroupPresentInfoKHR$$fToCStructDeviceGroupPresentInfoKHR$fExtensiblePresentInfoKHR'$fZeroDeviceGroupSwapchainCreateInfoKHR+$fStorableDeviceGroupSwapchainCreateInfoKHR.$fFromCStructDeviceGroupSwapchainCreateInfoKHR,$fToCStructDeviceGroupSwapchainCreateInfoKHR'$fZeroDeviceGroupPresentCapabilitiesKHR+$fStorableDeviceGroupPresentCapabilitiesKHR.$fFromCStructDeviceGroupPresentCapabilitiesKHR,$fToCStructDeviceGroupPresentCapabilitiesKHR $fReadSwapchainCreateFlagBitsKHR $fShowSwapchainCreateFlagBitsKHR$fZeroSwapchainCreateInfoKHR#$fFromCStructSwapchainCreateInfoKHR!$fToCStructSwapchainCreateInfoKHR"$fExtensibleSwapchainCreateInfoKHR%$fEqDeviceGroupPresentModeFlagBitsKHR&$fOrdDeviceGroupPresentModeFlagBitsKHR+$fStorableDeviceGroupPresentModeFlagBitsKHR'$fZeroDeviceGroupPresentModeFlagBitsKHR'$fBitsDeviceGroupPresentModeFlagBitsKHR$fEqSwapchainCreateFlagBitsKHR$fOrdSwapchainCreateFlagBitsKHR$$fStorableSwapchainCreateFlagBitsKHR $fZeroSwapchainCreateFlagBitsKHR $fBitsSwapchainCreateFlagBitsKHR'$fShowDeviceGroupSwapchainCreateInfoKHR$fShowDeviceGroupPresentInfoKHR$fShowAcquireNextImageInfoKHR%$fShowBindImageMemorySwapchainInfoKHR!$fShowImageSwapchainCreateInfoKHR'$fShowDeviceGroupPresentCapabilitiesKHR$fShowPresentInfoKHR$fShowSwapchainCreateInfoKHR+KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME)KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION(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,$fZeroSurfaceFullScreenExclusiveWin32InfoEXT0$fStorableSurfaceFullScreenExclusiveWin32InfoEXT3$fFromCStructSurfaceFullScreenExclusiveWin32InfoEXT1$fToCStructSurfaceFullScreenExclusiveWin32InfoEXT/$fZeroSurfaceCapabilitiesFullScreenExclusiveEXT3$fStorableSurfaceCapabilitiesFullScreenExclusiveEXT6$fFromCStructSurfaceCapabilitiesFullScreenExclusiveEXT4$fToCStructSurfaceCapabilitiesFullScreenExclusiveEXT$fReadFullScreenExclusiveEXT$fShowFullScreenExclusiveEXT'$fZeroSurfaceFullScreenExclusiveInfoEXT+$fStorableSurfaceFullScreenExclusiveInfoEXT.$fFromCStructSurfaceFullScreenExclusiveInfoEXT,$fToCStructSurfaceFullScreenExclusiveInfoEXT$fEqFullScreenExclusiveEXT$fOrdFullScreenExclusiveEXT $fStorableFullScreenExclusiveEXT$fZeroFullScreenExclusiveEXT/$fShowSurfaceCapabilitiesFullScreenExclusiveEXT,$fShowSurfaceFullScreenExclusiveWin32InfoEXT'$fShowSurfaceFullScreenExclusiveInfoEXT$KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME"KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION"$sel:srcRect:DisplayPresentInfoKHR"$sel:dstRect:DisplayPresentInfoKHR%$sel:persistent:DisplayPresentInfoKHR$fZeroDisplayPresentInfoKHR"$fFromCStructDisplayPresentInfoKHR $fToCStructDisplayPresentInfoKHR$fShowDisplayPresentInfoKHR%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/$fEqPipelineDiscardRectangleStateCreateFlagsEXT0$fOrdPipelineDiscardRectangleStateCreateFlagsEXT5$fStorablePipelineDiscardRectangleStateCreateFlagsEXT1$fZeroPipelineDiscardRectangleStateCreateFlagsEXT1$fBitsPipelineDiscardRectangleStateCreateFlagsEXT$fEqDiscardRectangleModeEXT$fOrdDiscardRectangleModeEXT!$fStorableDiscardRectangleModeEXT$fZeroDiscardRectangleModeEXT0$fShowPipelineDiscardRectangleStateCreateInfoEXT1$fShowPhysicalDeviceDiscardRectanglePropertiesEXT$sel:contents:SubpassBeginInfo$sel:next:RenderPassCreateInfo2 $sel:flags:RenderPassCreateInfo2&$sel:attachments:RenderPassCreateInfo2$$sel:subpasses:RenderPassCreateInfo2'$sel:dependencies:RenderPassCreateInfo2.$sel:correlatedViewMasks:RenderPassCreateInfo2"$sel:srcSubpass:SubpassDependency2"$sel:dstSubpass:SubpassDependency2$$sel:srcStageMask:SubpassDependency2$$sel:dstStageMask:SubpassDependency2%$sel:srcAccessMask:SubpassDependency2%$sel:dstAccessMask:SubpassDependency2'$sel:dependencyFlags:SubpassDependency2"$sel:viewOffset:SubpassDependency2$sel:next:SubpassDescription2$sel:flags:SubpassDescription2*$sel:pipelineBindPoint:SubpassDescription2!$sel:viewMask:SubpassDescription2)$sel:inputAttachments:SubpassDescription2)$sel:colorAttachments:SubpassDescription2+$sel:resolveAttachments:SubpassDescription2/$sel:depthStencilAttachment:SubpassDescription2,$sel:preserveAttachments:SubpassDescription2$sel:next:AttachmentReference2$$sel:attachment:AttachmentReference2 $sel:layout:AttachmentReference2$$sel:aspectMask:AttachmentReference2 $sel:next:AttachmentDescription2!$sel:flags:AttachmentDescription2"$sel:format:AttachmentDescription2#$sel:samples:AttachmentDescription2"$sel:loadOp:AttachmentDescription2#$sel:storeOp:AttachmentDescription2)$sel:stencilLoadOp:AttachmentDescription2*$sel:stencilStoreOp:AttachmentDescription2)$sel:initialLayout:AttachmentDescription2'$sel:finalLayout:AttachmentDescription2cmdWithRenderPass2$fZeroAttachmentDescription2#$fFromCStructAttachmentDescription2!$fToCStructAttachmentDescription2"$fExtensibleAttachmentDescription2$fZeroAttachmentReference2!$fFromCStructAttachmentReference2$fToCStructAttachmentReference2 $fExtensibleAttachmentReference2$fZeroSubpassDescription2 $fFromCStructSubpassDescription2$fToCStructSubpassDescription2$fExtensibleSubpassDescription2$fZeroSubpassDependency2$fStorableSubpassDependency2$fFromCStructSubpassDependency2$fToCStructSubpassDependency2$fZeroRenderPassCreateInfo2"$fFromCStructRenderPassCreateInfo2 $fToCStructRenderPassCreateInfo2!$fExtensibleRenderPassCreateInfo2$fZeroSubpassBeginInfo$fStorableSubpassBeginInfo$fFromCStructSubpassBeginInfo$fToCStructSubpassBeginInfo$fZeroSubpassEndInfo$fStorableSubpassEndInfo$fFromCStructSubpassEndInfo$fToCStructSubpassEndInfo$fShowSubpassEndInfo$fShowSubpassBeginInfo$fShowRenderPassCreateInfo2$fShowSubpassDependency2$fShowSubpassDescription2$fShowAttachmentReference2$fShowAttachmentDescription2&KHR_CREATE_RENDERPASS_2_EXTENSION_NAME$KHR_CREATE_RENDERPASS_2_SPEC_VERSIONSubpassEndInfoKHRSubpassBeginInfoKHRRenderPassCreateInfo2KHRSubpassDependency2KHRSubpassDescription2KHRAttachmentReference2KHRAttachmentDescription2KHR#STRUCTURE_TYPE_SUBPASS_END_INFO_KHR%STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR,STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR'STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR(STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR)STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR+STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR;$sel:depthResolveMode:SubpassDescriptionDepthStencilResolve=$sel:stencilResolveMode:SubpassDescriptionDepthStencilResolveH$sel:depthStencilResolveAttachment:SubpassDescriptionDepthStencilResolveK$sel:supportedDepthResolveModes:PhysicalDeviceDepthStencilResolvePropertiesM$sel:supportedStencilResolveModes:PhysicalDeviceDepthStencilResolvePropertiesG$sel:independentResolveNone:PhysicalDeviceDepthStencilResolvePropertiesC$sel:independentResolve:PhysicalDeviceDepthStencilResolveProperties1$fZeroPhysicalDeviceDepthStencilResolveProperties5$fStorablePhysicalDeviceDepthStencilResolveProperties8$fFromCStructPhysicalDeviceDepthStencilResolveProperties6$fToCStructPhysicalDeviceDepthStencilResolveProperties+$fZeroSubpassDescriptionDepthStencilResolve2$fFromCStructSubpassDescriptionDepthStencilResolve0$fToCStructSubpassDescriptionDepthStencilResolve+$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-$fFromCStructPhysicalDeviceVulkan12Properties+$fToCStructPhysicalDeviceVulkan12Properties&$fShowPhysicalDeviceVulkan12Properties$$fShowPhysicalDeviceVulkan12Features&$fShowPhysicalDeviceVulkan11Properties$$fShowPhysicalDeviceVulkan11Features1$sel:deviceIndices:BindImageMemoryDeviceGroupInfo<$sel:splitInstanceBindRegions:BindImageMemoryDeviceGroupInfo2$sel:deviceIndices:BindBufferMemoryDeviceGroupInfo%$fZeroBindBufferMemoryDeviceGroupInfo,$fFromCStructBindBufferMemoryDeviceGroupInfo*$fToCStructBindBufferMemoryDeviceGroupInfo$$fZeroBindImageMemoryDeviceGroupInfo+$fFromCStructBindImageMemoryDeviceGroupInfo)$fToCStructBindImageMemoryDeviceGroupInfo$$fShowBindImageMemoryDeviceGroupInfo%$fShowBindBufferMemoryDeviceGroupInfo2$sel:resourceDeviceIndex:DeviceGroupBindSparseInfo0$sel:memoryDeviceIndex:DeviceGroupBindSparseInfo5$sel:waitSemaphoreDeviceIndices:DeviceGroupSubmitInfo3$sel:commandBufferDeviceMasks:DeviceGroupSubmitInfo7$sel:signalSemaphoreDeviceIndices:DeviceGroupSubmitInfo1$sel:deviceMask:DeviceGroupCommandBufferBeginInfo.$sel:deviceMask:DeviceGroupRenderPassBeginInfo5$sel:deviceRenderAreas:DeviceGroupRenderPassBeginInfo"$sel:flags:MemoryAllocateFlagsInfo'$sel:deviceMask:MemoryAllocateFlagsInfo$fZeroMemoryAllocateFlagsInfo!$fStorableMemoryAllocateFlagsInfo$$fFromCStructMemoryAllocateFlagsInfo"$fToCStructMemoryAllocateFlagsInfo$$fZeroDeviceGroupRenderPassBeginInfo+$fFromCStructDeviceGroupRenderPassBeginInfo)$fToCStructDeviceGroupRenderPassBeginInfo'$fZeroDeviceGroupCommandBufferBeginInfo+$fStorableDeviceGroupCommandBufferBeginInfo.$fFromCStructDeviceGroupCommandBufferBeginInfo,$fToCStructDeviceGroupCommandBufferBeginInfo$fZeroDeviceGroupSubmitInfo"$fFromCStructDeviceGroupSubmitInfo $fToCStructDeviceGroupSubmitInfo$fZeroDeviceGroupBindSparseInfo#$fStorableDeviceGroupBindSparseInfo&$fFromCStructDeviceGroupBindSparseInfo$$fToCStructDeviceGroupBindSparseInfo$fShowDeviceGroupBindSparseInfo$fShowDeviceGroupSubmitInfo'$fShowDeviceGroupCommandBufferBeginInfo$$fShowDeviceGroupRenderPassBeginInfo$fShowMemoryAllocateFlagsInfoKHR_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_KHRAPI_VERSION_1_1$$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:PipelineViewportStateCreateInfo.$sel:viewports: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:SpecializationMapEntrywithGraphicsPipelineswithComputePipelines$fZeroSpecializationMapEntry $fStorableSpecializationMapEntry#$fFromCStructSpecializationMapEntry!$fToCStructSpecializationMapEntry$fZeroSpecializationInfo$fFromCStructSpecializationInfo$fToCStructSpecializationInfo#$fZeroPipelineShaderStageCreateInfo*$fFromCStructPipelineShaderStageCreateInfo($fToCStructPipelineShaderStageCreateInfo)$fExtensiblePipelineShaderStageCreateInfo$fZeroComputePipelineCreateInfo&$fFromCStructComputePipelineCreateInfo$$fToCStructComputePipelineCreateInfo%$fExtensibleComputePipelineCreateInfo#$fZeroVertexInputBindingDescription'$fStorableVertexInputBindingDescription*$fFromCStructVertexInputBindingDescription($fToCStructVertexInputBindingDescription%$fZeroVertexInputAttributeDescription)$fStorableVertexInputAttributeDescription,$fFromCStructVertexInputAttributeDescription*$fToCStructVertexInputAttributeDescription($fZeroPipelineVertexInputStateCreateInfo/$fFromCStructPipelineVertexInputStateCreateInfo-$fToCStructPipelineVertexInputStateCreateInfo.$fExtensiblePipelineVertexInputStateCreateInfo*$fZeroPipelineInputAssemblyStateCreateInfo.$fStorablePipelineInputAssemblyStateCreateInfo1$fFromCStructPipelineInputAssemblyStateCreateInfo/$fToCStructPipelineInputAssemblyStateCreateInfo)$fZeroPipelineTessellationStateCreateInfo0$fFromCStructPipelineTessellationStateCreateInfo.$fToCStructPipelineTessellationStateCreateInfo/$fExtensiblePipelineTessellationStateCreateInfo%$fZeroPipelineViewportStateCreateInfo,$fFromCStructPipelineViewportStateCreateInfo*$fToCStructPipelineViewportStateCreateInfo+$fExtensiblePipelineViewportStateCreateInfo*$fZeroPipelineRasterizationStateCreateInfo1$fFromCStructPipelineRasterizationStateCreateInfo/$fToCStructPipelineRasterizationStateCreateInfo0$fExtensiblePipelineRasterizationStateCreateInfo($fZeroPipelineMultisampleStateCreateInfo/$fFromCStructPipelineMultisampleStateCreateInfo-$fToCStructPipelineMultisampleStateCreateInfo.$fExtensiblePipelineMultisampleStateCreateInfo'$fZeroPipelineColorBlendAttachmentState+$fStorablePipelineColorBlendAttachmentState.$fFromCStructPipelineColorBlendAttachmentState,$fToCStructPipelineColorBlendAttachmentState'$fZeroPipelineColorBlendStateCreateInfo.$fFromCStructPipelineColorBlendStateCreateInfo,$fToCStructPipelineColorBlendStateCreateInfo-$fExtensiblePipelineColorBlendStateCreateInfo$$fZeroPipelineDynamicStateCreateInfo+$fFromCStructPipelineDynamicStateCreateInfo)$fToCStructPipelineDynamicStateCreateInfo$fZeroStencilOpState$fStorableStencilOpState$fFromCStructStencilOpState$fToCStructStencilOpState)$fZeroPipelineDepthStencilStateCreateInfo0$fFromCStructPipelineDepthStencilStateCreateInfo.$fToCStructPipelineDepthStencilStateCreateInfo $fZeroGraphicsPipelineCreateInfo'$fFromCStructGraphicsPipelineCreateInfo%$fToCStructGraphicsPipelineCreateInfo&$fExtensibleGraphicsPipelineCreateInfo $fShowGraphicsPipelineCreateInfo)$fShowPipelineDepthStencilStateCreateInfo$fShowStencilOpState$$fShowPipelineDynamicStateCreateInfo'$fShowPipelineColorBlendStateCreateInfo'$fShowPipelineColorBlendAttachmentState($fShowPipelineMultisampleStateCreateInfo*$fShowPipelineRasterizationStateCreateInfo%$fShowPipelineViewportStateCreateInfo)$fShowPipelineTessellationStateCreateInfo*$fShowPipelineInputAssemblyStateCreateInfo($fShowPipelineVertexInputStateCreateInfo%$fShowVertexInputAttributeDescription#$fShowVertexInputBindingDescription$fShowComputePipelineCreateInfo#$fShowPipelineShaderStageCreateInfo$fShowSpecializationInfo$fShowSpecializationMapEntry+NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME)NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSIONIndirectCommandsTokenTypeNVIndirectStateFlagsNVIndirectStateFlagBitsNV"IndirectCommandsLayoutUsageFlagsNV%IndirectCommandsLayoutUsageFlagBitsNV@$sel:pipelineBindPoint:GeneratedCommandsMemoryRequirementsInfoNV7$sel:pipeline:GeneratedCommandsMemoryRequirementsInfoNVE$sel:indirectCommandsLayout:GeneratedCommandsMemoryRequirementsInfoNV@$sel:maxSequencesCount:GeneratedCommandsMemoryRequirementsInfoNV.$sel:pipelineBindPoint:GeneratedCommandsInfoNV%$sel:pipeline:GeneratedCommandsInfoNV3$sel:indirectCommandsLayout:GeneratedCommandsInfoNV$$sel:streams:GeneratedCommandsInfoNV+$sel:sequencesCount:GeneratedCommandsInfoNV-$sel:preprocessBuffer:GeneratedCommandsInfoNV-$sel:preprocessOffset:GeneratedCommandsInfoNV+$sel:preprocessSize:GeneratedCommandsInfoNV1$sel:sequencesCountBuffer:GeneratedCommandsInfoNV1$sel:sequencesCountOffset:GeneratedCommandsInfoNV1$sel:sequencesIndexBuffer:GeneratedCommandsInfoNV1$sel:sequencesIndexOffset:GeneratedCommandsInfoNV-$sel:flags:IndirectCommandsLayoutCreateInfoNV9$sel:pipelineBindPoint:IndirectCommandsLayoutCreateInfoNV.$sel:tokens:IndirectCommandsLayoutCreateInfoNV5$sel:streamStrides:IndirectCommandsLayoutCreateInfoNV,$sel:tokenType:IndirectCommandsLayoutTokenNV)$sel:stream:IndirectCommandsLayoutTokenNV)$sel:offset:IndirectCommandsLayoutTokenNV4$sel:vertexBindingUnit:IndirectCommandsLayoutTokenNV6$sel:vertexDynamicStride:IndirectCommandsLayoutTokenNV=$sel:pushconstantPipelineLayout:IndirectCommandsLayoutTokenNV?$sel:pushconstantShaderStageFlags:IndirectCommandsLayoutTokenNV5$sel:pushconstantOffset:IndirectCommandsLayoutTokenNV3$sel:pushconstantSize:IndirectCommandsLayoutTokenNV5$sel:indirectStateFlags:IndirectCommandsLayoutTokenNV-$sel:indexTypes:IndirectCommandsLayoutTokenNV2$sel:indexTypeValues:IndirectCommandsLayoutTokenNV$$sel:buffer:IndirectCommandsStreamNV$$sel:offset:IndirectCommandsStreamNV)$sel:data':SetStateFlagsIndirectCommandNV4$sel:bufferAddress:BindVertexBufferIndirectCommandNV+$sel:size:BindVertexBufferIndirectCommandNV-$sel:stride:BindVertexBufferIndirectCommandNV3$sel:bufferAddress:BindIndexBufferIndirectCommandNV*$sel:size:BindIndexBufferIndirectCommandNV/$sel:indexType:BindIndexBufferIndirectCommandNV0$sel:groupIndex:BindShaderGroupIndirectCommandNV4$sel:groups:GraphicsPipelineShaderGroupsCreateInfoNV7$sel:pipelines:GraphicsPipelineShaderGroupsCreateInfoNV+$sel:stages:GraphicsShaderGroupCreateInfoNV5$sel:vertexInputState:GraphicsShaderGroupCreateInfoNV6$sel:tessellationState:GraphicsShaderGroupCreateInfoNVR$sel:maxGraphicsShaderGroupCount:PhysicalDeviceDeviceGeneratedCommandsPropertiesNVO$sel:maxIndirectSequenceCount:PhysicalDeviceDeviceGeneratedCommandsPropertiesNVT$sel:maxIndirectCommandsTokenCount:PhysicalDeviceDeviceGeneratedCommandsPropertiesNVU$sel:maxIndirectCommandsStreamCount:PhysicalDeviceDeviceGeneratedCommandsPropertiesNVU$sel:maxIndirectCommandsTokenOffset:PhysicalDeviceDeviceGeneratedCommandsPropertiesNVV$sel:maxIndirectCommandsStreamStride:PhysicalDeviceDeviceGeneratedCommandsPropertiesNV]$sel:minSequencesCountBufferOffsetAlignment:PhysicalDeviceDeviceGeneratedCommandsPropertiesNV]$sel:minSequencesIndexBufferOffsetAlignment:PhysicalDeviceDeviceGeneratedCommandsPropertiesNV_$sel:minIndirectCommandsBufferOffsetAlignment:PhysicalDeviceDeviceGeneratedCommandsPropertiesNVL$sel:deviceGeneratedCommands:PhysicalDeviceDeviceGeneratedCommandsFeaturesNV*INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV$INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV,INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV-INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV-INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV,INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV+INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV,INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV$INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV9INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV7INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV9INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NVwithIndirectCommandsLayoutNV5$fZeroPhysicalDeviceDeviceGeneratedCommandsFeaturesNV9$fStorablePhysicalDeviceDeviceGeneratedCommandsFeaturesNV<$fFromCStructPhysicalDeviceDeviceGeneratedCommandsFeaturesNV:$fToCStructPhysicalDeviceDeviceGeneratedCommandsFeaturesNV7$fZeroPhysicalDeviceDeviceGeneratedCommandsPropertiesNV;$fStorablePhysicalDeviceDeviceGeneratedCommandsPropertiesNV>$fFromCStructPhysicalDeviceDeviceGeneratedCommandsPropertiesNV<$fToCStructPhysicalDeviceDeviceGeneratedCommandsPropertiesNV%$fZeroGraphicsShaderGroupCreateInfoNV,$fFromCStructGraphicsShaderGroupCreateInfoNV*$fToCStructGraphicsShaderGroupCreateInfoNV.$fZeroGraphicsPipelineShaderGroupsCreateInfoNV5$fFromCStructGraphicsPipelineShaderGroupsCreateInfoNV3$fToCStructGraphicsPipelineShaderGroupsCreateInfoNV&$fZeroBindShaderGroupIndirectCommandNV*$fStorableBindShaderGroupIndirectCommandNV-$fFromCStructBindShaderGroupIndirectCommandNV+$fToCStructBindShaderGroupIndirectCommandNV&$fZeroBindIndexBufferIndirectCommandNV*$fStorableBindIndexBufferIndirectCommandNV-$fFromCStructBindIndexBufferIndirectCommandNV+$fToCStructBindIndexBufferIndirectCommandNV'$fZeroBindVertexBufferIndirectCommandNV+$fStorableBindVertexBufferIndirectCommandNV.$fFromCStructBindVertexBufferIndirectCommandNV,$fToCStructBindVertexBufferIndirectCommandNV$$fZeroSetStateFlagsIndirectCommandNV($fStorableSetStateFlagsIndirectCommandNV+$fFromCStructSetStateFlagsIndirectCommandNV)$fToCStructSetStateFlagsIndirectCommandNV$fZeroIndirectCommandsStreamNV"$fStorableIndirectCommandsStreamNV%$fFromCStructIndirectCommandsStreamNV#$fToCStructIndirectCommandsStreamNV$fZeroGeneratedCommandsInfoNV$$fFromCStructGeneratedCommandsInfoNV"$fToCStructGeneratedCommandsInfoNV/$fZeroGeneratedCommandsMemoryRequirementsInfoNV3$fStorableGeneratedCommandsMemoryRequirementsInfoNV6$fFromCStructGeneratedCommandsMemoryRequirementsInfoNV4$fToCStructGeneratedCommandsMemoryRequirementsInfoNV+$fReadIndirectCommandsLayoutUsageFlagBitsNV+$fShowIndirectCommandsLayoutUsageFlagBitsNV$fReadIndirectStateFlagBitsNV$fShowIndirectStateFlagBitsNV!$fReadIndirectCommandsTokenTypeNV!$fShowIndirectCommandsTokenTypeNV#$fZeroIndirectCommandsLayoutTokenNV*$fFromCStructIndirectCommandsLayoutTokenNV($fToCStructIndirectCommandsLayoutTokenNV($fZeroIndirectCommandsLayoutCreateInfoNV/$fFromCStructIndirectCommandsLayoutCreateInfoNV-$fToCStructIndirectCommandsLayoutCreateInfoNV)$fEqIndirectCommandsLayoutUsageFlagBitsNV*$fOrdIndirectCommandsLayoutUsageFlagBitsNV/$fStorableIndirectCommandsLayoutUsageFlagBitsNV+$fZeroIndirectCommandsLayoutUsageFlagBitsNV+$fBitsIndirectCommandsLayoutUsageFlagBitsNV$fEqIndirectStateFlagBitsNV$fOrdIndirectStateFlagBitsNV!$fStorableIndirectStateFlagBitsNV$fZeroIndirectStateFlagBitsNV$fBitsIndirectStateFlagBitsNV$fEqIndirectCommandsTokenTypeNV $fOrdIndirectCommandsTokenTypeNV%$fStorableIndirectCommandsTokenTypeNV!$fZeroIndirectCommandsTokenTypeNV/$fShowGeneratedCommandsMemoryRequirementsInfoNV$fShowGeneratedCommandsInfoNV($fShowIndirectCommandsLayoutCreateInfoNV#$fShowIndirectCommandsLayoutTokenNV$fShowIndirectCommandsStreamNV$$fShowSetStateFlagsIndirectCommandNV'$fShowBindVertexBufferIndirectCommandNV&$fShowBindIndexBufferIndirectCommandNV&$fShowBindShaderGroupIndirectCommandNV.$fShowGraphicsPipelineShaderGroupsCreateInfoNV%$fShowGraphicsShaderGroupCreateInfoNV7$fShowPhysicalDeviceDeviceGeneratedCommandsPropertiesNV5$fShowPhysicalDeviceDeviceGeneratedCommandsFeaturesNVKHR_RAY_TRACING_EXTENSION_NAMEKHR_RAY_TRACING_SPEC_VERSION!AccelerationStructureBuildTypeKHR$AccelerationStructureGeometryDataKHR TrianglesAabbs InstancesDeviceAddressConstHostAddressConst HostAddress<$sel:maxPayloadSize:RayTracingPipelineInterfaceCreateInfoKHR>$sel:maxAttributeSize:RayTracingPipelineInterfaceCreateInfoKHR=$sel:maxCallableSize:RayTracingPipelineInterfaceCreateInfoKHR2$sel:next:CopyMemoryToAccelerationStructureInfoKHR1$sel:src:CopyMemoryToAccelerationStructureInfoKHR1$sel:dst:CopyMemoryToAccelerationStructureInfoKHR2$sel:mode:CopyMemoryToAccelerationStructureInfoKHR2$sel:next:CopyAccelerationStructureToMemoryInfoKHR1$sel:src:CopyAccelerationStructureToMemoryInfoKHR1$sel:dst:CopyAccelerationStructureToMemoryInfoKHR2$sel:mode:CopyAccelerationStructureToMemoryInfoKHR*$sel:next:CopyAccelerationStructureInfoKHR)$sel:src:CopyAccelerationStructureInfoKHR)$sel:dst:CopyAccelerationStructureInfoKHR*$sel:mode:CopyAccelerationStructureInfoKHR0$sel:versionData:AccelerationStructureVersionKHRD$sel:accelerationStructure:AccelerationStructureDeviceAddressInfoKHR/$sel:transform:AccelerationStructureInstanceKHR9$sel:instanceCustomIndex:AccelerationStructureInstanceKHR*$sel:mask:AccelerationStructureInstanceKHRL$sel:instanceShaderBindingTableRecordOffset:AccelerationStructureInstanceKHR+$sel:flags:AccelerationStructureInstanceKHRD$sel:accelerationStructureReference:AccelerationStructureInstanceKHR$sel:matrix:TransformMatrixKHR$sel:minX:AabbPositionsKHR$sel:minY:AabbPositionsKHR$sel:minZ:AabbPositionsKHR$sel:maxX:AabbPositionsKHR$sel:maxY:AabbPositionsKHR$sel:maxZ:AabbPositionsKHR5$sel:compactedSize:AccelerationStructureCreateInfoKHR-$sel:type':AccelerationStructureCreateInfoKHR-$sel:flags:AccelerationStructureCreateInfoKHR5$sel:geometryInfos:AccelerationStructureCreateInfoKHR5$sel:deviceAddress:AccelerationStructureCreateInfoKHR@$sel:geometryType:AccelerationStructureCreateGeometryTypeInfoKHRE$sel:maxPrimitiveCount:AccelerationStructureCreateGeometryTypeInfoKHR=$sel:indexType:AccelerationStructureCreateGeometryTypeInfoKHRB$sel:maxVertexCount:AccelerationStructureCreateGeometryTypeInfoKHR@$sel:vertexFormat:AccelerationStructureCreateGeometryTypeInfoKHRD$sel:allowsTransforms:AccelerationStructureCreateGeometryTypeInfoKHR;$sel:primitiveCount:AccelerationStructureBuildOffsetInfoKHR<$sel:primitiveOffset:AccelerationStructureBuildOffsetInfoKHR8$sel:firstVertex:AccelerationStructureBuildOffsetInfoKHR<$sel:transformOffset:AccelerationStructureBuildOffsetInfoKHR3$sel:next:AccelerationStructureBuildGeometryInfoKHR4$sel:type':AccelerationStructureBuildGeometryInfoKHR4$sel:flags:AccelerationStructureBuildGeometryInfoKHR5$sel:update:AccelerationStructureBuildGeometryInfoKHRG$sel:srcAccelerationStructure:AccelerationStructureBuildGeometryInfoKHRG$sel:dstAccelerationStructure:AccelerationStructureBuildGeometryInfoKHR9$sel:geometries:AccelerationStructureBuildGeometryInfoKHR:$sel:scratchData:AccelerationStructureBuildGeometryInfoKHR2$sel:geometryType:AccelerationStructureGeometryKHR.$sel:geometry:AccelerationStructureGeometryKHR+$sel:flags:AccelerationStructureGeometryKHRB$sel:arrayOfPointers:AccelerationStructureGeometryInstancesDataKHR8$sel:data':AccelerationStructureGeometryInstancesDataKHR4$sel:data':AccelerationStructureGeometryAabbsDataKHR5$sel:stride:AccelerationStructureGeometryAabbsDataKHR?$sel:vertexFormat:AccelerationStructureGeometryTrianglesDataKHR=$sel:vertexData:AccelerationStructureGeometryTrianglesDataKHR?$sel:vertexStride:AccelerationStructureGeometryTrianglesDataKHR<$sel:indexType:AccelerationStructureGeometryTrianglesDataKHR<$sel:indexData:AccelerationStructureGeometryTrianglesDataKHR@$sel:transformData:AccelerationStructureGeometryTrianglesDataKHR&$sel:width:TraceRaysIndirectCommandKHR'$sel:height:TraceRaysIndirectCommandKHR&$sel:depth:TraceRaysIndirectCommandKHR"$sel:buffer:StridedBufferRegionKHR"$sel:offset:StridedBufferRegionKHR"$sel:stride:StridedBufferRegionKHR $sel:size:StridedBufferRegionKHR@$sel:shaderGroupHandleSize:PhysicalDeviceRayTracingPropertiesKHR<$sel:maxRecursionDepth:PhysicalDeviceRayTracingPropertiesKHR?$sel:maxShaderGroupStride:PhysicalDeviceRayTracingPropertiesKHRC$sel:shaderGroupBaseAlignment:PhysicalDeviceRayTracingPropertiesKHR;$sel:maxGeometryCount:PhysicalDeviceRayTracingPropertiesKHR;$sel:maxInstanceCount:PhysicalDeviceRayTracingPropertiesKHR<$sel:maxPrimitiveCount:PhysicalDeviceRayTracingPropertiesKHRQ$sel:maxDescriptorSetAccelerationStructures:PhysicalDeviceRayTracingPropertiesKHRM$sel:shaderGroupHandleCaptureReplaySize:PhysicalDeviceRayTracingPropertiesKHR3$sel:rayTracing:PhysicalDeviceRayTracingFeaturesKHRQ$sel:rayTracingShaderGroupHandleCaptureReplay:PhysicalDeviceRayTracingFeaturesKHRV$sel:rayTracingShaderGroupHandleCaptureReplayMixed:PhysicalDeviceRayTracingFeaturesKHRU$sel:rayTracingAccelerationStructureCaptureReplay:PhysicalDeviceRayTracingFeaturesKHRD$sel:rayTracingIndirectTraceRays:PhysicalDeviceRayTracingFeaturesKHRU$sel:rayTracingIndirectAccelerationStructureBuild:PhysicalDeviceRayTracingFeaturesKHRT$sel:rayTracingHostAccelerationStructureCommands:PhysicalDeviceRayTracingFeaturesKHR1$sel:rayQuery:PhysicalDeviceRayTracingFeaturesKHRC$sel:rayTracingPrimitiveCulling:PhysicalDeviceRayTracingFeaturesKHR9$sel:type':AccelerationStructureMemoryRequirementsInfoKHR=$sel:buildType:AccelerationStructureMemoryRequirementsInfoKHRI$sel:accelerationStructure:AccelerationStructureMemoryRequirementsInfoKHRF$sel:accelerationStructures:WriteDescriptorSetAccelerationStructureKHRA$sel:accelerationStructure:BindAccelerationStructureMemoryInfoKHR2$sel:memory:BindAccelerationStructureMemoryInfoKHR8$sel:memoryOffset:BindAccelerationStructureMemoryInfoKHR9$sel:deviceIndices:BindAccelerationStructureMemoryInfoKHR)$sel:next:RayTracingPipelineCreateInfoKHR*$sel:flags:RayTracingPipelineCreateInfoKHR+$sel:stages:RayTracingPipelineCreateInfoKHR+$sel:groups:RayTracingPipelineCreateInfoKHR6$sel:maxRecursionDepth:RayTracingPipelineCreateInfoKHR.$sel:libraries:RayTracingPipelineCreateInfoKHR5$sel:libraryInterface:RayTracingPipelineCreateInfoKHR+$sel:layout:RayTracingPipelineCreateInfoKHR7$sel:basePipelineHandle:RayTracingPipelineCreateInfoKHR6$sel:basePipelineIndex:RayTracingPipelineCreateInfoKHR-$sel:type':RayTracingShaderGroupCreateInfoKHR5$sel:generalShader:RayTracingShaderGroupCreateInfoKHR8$sel:closestHitShader:RayTracingShaderGroupCreateInfoKHR4$sel:anyHitShader:RayTracingShaderGroupCreateInfoKHR:$sel:intersectionShader:RayTracingShaderGroupCreateInfoKHRF$sel:shaderGroupCaptureReplayHandle:RayTracingShaderGroupCreateInfoKHR6RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR5RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR)RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR4ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR,ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR*ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHRBACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHRAACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR:ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHRGEOMETRY_TYPE_INSTANCES_KHRGEOMETRY_TYPE_AABBS_KHRGEOMETRY_TYPE_TRIANGLES_KHR,ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR)ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR0COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR.COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR,COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR*COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR/BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR6BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR6BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR5BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR1BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR0GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHRGEOMETRY_OPAQUE_BIT_KHR)GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR&GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR9GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR6GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHRwithAccelerationStructureKHR,$fZeroBindAccelerationStructureMemoryInfoKHR3$fFromCStructBindAccelerationStructureMemoryInfoKHR1$fToCStructBindAccelerationStructureMemoryInfoKHR0$fZeroWriteDescriptorSetAccelerationStructureKHR7$fFromCStructWriteDescriptorSetAccelerationStructureKHR5$fToCStructWriteDescriptorSetAccelerationStructureKHR)$fZeroPhysicalDeviceRayTracingFeaturesKHR-$fStorablePhysicalDeviceRayTracingFeaturesKHR0$fFromCStructPhysicalDeviceRayTracingFeaturesKHR.$fToCStructPhysicalDeviceRayTracingFeaturesKHR+$fZeroPhysicalDeviceRayTracingPropertiesKHR/$fStorablePhysicalDeviceRayTracingPropertiesKHR2$fFromCStructPhysicalDeviceRayTracingPropertiesKHR0$fToCStructPhysicalDeviceRayTracingPropertiesKHR$fZeroStridedBufferRegionKHR $fStorableStridedBufferRegionKHR#$fFromCStructStridedBufferRegionKHR!$fToCStructStridedBufferRegionKHR!$fZeroTraceRaysIndirectCommandKHR%$fStorableTraceRaysIndirectCommandKHR($fFromCStructTraceRaysIndirectCommandKHR&$fToCStructTraceRaysIndirectCommandKHR-$fZeroAccelerationStructureBuildOffsetInfoKHR1$fStorableAccelerationStructureBuildOffsetInfoKHR4$fFromCStructAccelerationStructureBuildOffsetInfoKHR2$fToCStructAccelerationStructureBuildOffsetInfoKHR$fZeroAabbPositionsKHR$fStorableAabbPositionsKHR$fFromCStructAabbPositionsKHR$fToCStructAabbPositionsKHR$fZeroTransformMatrixKHR$fStorableTransformMatrixKHR$fFromCStructTransformMatrixKHR$fToCStructTransformMatrixKHR/$fZeroAccelerationStructureDeviceAddressInfoKHR3$fStorableAccelerationStructureDeviceAddressInfoKHR6$fFromCStructAccelerationStructureDeviceAddressInfoKHR4$fToCStructAccelerationStructureDeviceAddressInfoKHR%$fZeroAccelerationStructureVersionKHR,$fFromCStructAccelerationStructureVersionKHR*$fToCStructAccelerationStructureVersionKHR.$fZeroRayTracingPipelineInterfaceCreateInfoKHR2$fStorableRayTracingPipelineInterfaceCreateInfoKHR5$fFromCStructRayTracingPipelineInterfaceCreateInfoKHR3$fToCStructRayTracingPipelineInterfaceCreateInfoKHR$fZeroDeviceOrHostAddressKHR!$fToCStructDeviceOrHostAddressKHR!$fZeroDeviceOrHostAddressConstKHR&$fToCStructDeviceOrHostAddressConstKHR3$fZeroAccelerationStructureGeometryInstancesDataKHR8$fToCStructAccelerationStructureGeometryInstancesDataKHR/$fZeroAccelerationStructureGeometryAabbsDataKHR4$fToCStructAccelerationStructureGeometryAabbsDataKHR3$fZeroAccelerationStructureGeometryTrianglesDataKHR8$fToCStructAccelerationStructureGeometryTrianglesDataKHR*$fZeroAccelerationStructureGeometryDataKHR/$fToCStructAccelerationStructureGeometryDataKHR!$fReadGeometryInstanceFlagBitsKHR!$fShowGeometryInstanceFlagBitsKHR&$fZeroAccelerationStructureInstanceKHR-$fFromCStructAccelerationStructureInstanceKHR+$fToCStructAccelerationStructureInstanceKHR$fReadGeometryFlagBitsKHR$fShowGeometryFlagBitsKHR+$fReadBuildAccelerationStructureFlagBitsKHR+$fShowBuildAccelerationStructureFlagBitsKHR&$fReadCopyAccelerationStructureModeKHR&$fShowCopyAccelerationStructureModeKHR.$fZeroCopyMemoryToAccelerationStructureInfoKHR3$fToCStructCopyMemoryToAccelerationStructureInfoKHR4$fExtensibleCopyMemoryToAccelerationStructureInfoKHR.$fZeroCopyAccelerationStructureToMemoryInfoKHR3$fToCStructCopyAccelerationStructureToMemoryInfoKHR4$fExtensibleCopyAccelerationStructureToMemoryInfoKHR&$fZeroCopyAccelerationStructureInfoKHR-$fFromCStructCopyAccelerationStructureInfoKHR+$fToCStructCopyAccelerationStructureInfoKHR,$fExtensibleCopyAccelerationStructureInfoKHR"$fReadAccelerationStructureTypeKHR"$fShowAccelerationStructureTypeKHR$fReadGeometryTypeKHR$fShowGeometryTypeKHR4$fZeroAccelerationStructureCreateGeometryTypeInfoKHR8$fStorableAccelerationStructureCreateGeometryTypeInfoKHR;$fFromCStructAccelerationStructureCreateGeometryTypeInfoKHR9$fToCStructAccelerationStructureCreateGeometryTypeInfoKHR($fZeroAccelerationStructureCreateInfoKHR/$fFromCStructAccelerationStructureCreateInfoKHR-$fToCStructAccelerationStructureCreateInfoKHR&$fZeroAccelerationStructureGeometryKHR+$fToCStructAccelerationStructureGeometryKHR/$fZeroAccelerationStructureBuildGeometryInfoKHR4$fToCStructAccelerationStructureBuildGeometryInfoKHR5$fExtensibleAccelerationStructureBuildGeometryInfoKHR4$fReadAccelerationStructureMemoryRequirementsTypeKHR4$fShowAccelerationStructureMemoryRequirementsTypeKHR'$fReadAccelerationStructureBuildTypeKHR'$fShowAccelerationStructureBuildTypeKHR4$fZeroAccelerationStructureMemoryRequirementsInfoKHR8$fStorableAccelerationStructureMemoryRequirementsInfoKHR;$fFromCStructAccelerationStructureMemoryRequirementsInfoKHR9$fToCStructAccelerationStructureMemoryRequirementsInfoKHR"$fReadRayTracingShaderGroupTypeKHR"$fShowRayTracingShaderGroupTypeKHR($fZeroRayTracingShaderGroupCreateInfoKHR,$fStorableRayTracingShaderGroupCreateInfoKHR/$fFromCStructRayTracingShaderGroupCreateInfoKHR-$fToCStructRayTracingShaderGroupCreateInfoKHR%$fZeroRayTracingPipelineCreateInfoKHR,$fFromCStructRayTracingPipelineCreateInfoKHR*$fToCStructRayTracingPipelineCreateInfoKHR+$fExtensibleRayTracingPipelineCreateInfoKHR$fShowDeviceOrHostAddressKHR!$fShowDeviceOrHostAddressConstKHR*$fShowAccelerationStructureGeometryDataKHR$fEqGeometryInstanceFlagBitsKHR $fOrdGeometryInstanceFlagBitsKHR%$fStorableGeometryInstanceFlagBitsKHR!$fZeroGeometryInstanceFlagBitsKHR!$fBitsGeometryInstanceFlagBitsKHR$fEqGeometryFlagBitsKHR$fOrdGeometryFlagBitsKHR$fStorableGeometryFlagBitsKHR$fZeroGeometryFlagBitsKHR$fBitsGeometryFlagBitsKHR)$fEqBuildAccelerationStructureFlagBitsKHR*$fOrdBuildAccelerationStructureFlagBitsKHR/$fStorableBuildAccelerationStructureFlagBitsKHR+$fZeroBuildAccelerationStructureFlagBitsKHR+$fBitsBuildAccelerationStructureFlagBitsKHR$$fEqCopyAccelerationStructureModeKHR%$fOrdCopyAccelerationStructureModeKHR*$fStorableCopyAccelerationStructureModeKHR&$fZeroCopyAccelerationStructureModeKHR $fEqAccelerationStructureTypeKHR!$fOrdAccelerationStructureTypeKHR&$fStorableAccelerationStructureTypeKHR"$fZeroAccelerationStructureTypeKHR$fEqGeometryTypeKHR$fOrdGeometryTypeKHR$fStorableGeometryTypeKHR$fZeroGeometryTypeKHR2$fEqAccelerationStructureMemoryRequirementsTypeKHR3$fOrdAccelerationStructureMemoryRequirementsTypeKHR8$fStorableAccelerationStructureMemoryRequirementsTypeKHR4$fZeroAccelerationStructureMemoryRequirementsTypeKHR%$fEqAccelerationStructureBuildTypeKHR&$fOrdAccelerationStructureBuildTypeKHR+$fStorableAccelerationStructureBuildTypeKHR'$fZeroAccelerationStructureBuildTypeKHR $fEqRayTracingShaderGroupTypeKHR!$fOrdRayTracingShaderGroupTypeKHR&$fStorableRayTracingShaderGroupTypeKHR"$fZeroRayTracingShaderGroupTypeKHR.$fShowRayTracingPipelineInterfaceCreateInfoKHR.$fShowCopyMemoryToAccelerationStructureInfoKHR.$fShowCopyAccelerationStructureToMemoryInfoKHR&$fShowCopyAccelerationStructureInfoKHR%$fShowAccelerationStructureVersionKHR/$fShowAccelerationStructureDeviceAddressInfoKHR&$fShowAccelerationStructureInstanceKHR$fShowTransformMatrixKHR$fShowAabbPositionsKHR($fShowAccelerationStructureCreateInfoKHR4$fShowAccelerationStructureCreateGeometryTypeInfoKHR-$fShowAccelerationStructureBuildOffsetInfoKHR/$fShowAccelerationStructureBuildGeometryInfoKHR&$fShowAccelerationStructureGeometryKHR3$fShowAccelerationStructureGeometryInstancesDataKHR/$fShowAccelerationStructureGeometryAabbsDataKHR3$fShowAccelerationStructureGeometryTrianglesDataKHR!$fShowTraceRaysIndirectCommandKHR$fShowStridedBufferRegionKHR+$fShowPhysicalDeviceRayTracingPropertiesKHR)$fShowPhysicalDeviceRayTracingFeaturesKHR4$fShowAccelerationStructureMemoryRequirementsInfoKHR0$fShowWriteDescriptorSetAccelerationStructureKHR,$fShowBindAccelerationStructureMemoryInfoKHR%$fShowRayTracingPipelineCreateInfoKHR($fShowRayTracingShaderGroupCreateInfoKHRNV_RAY_TRACING_EXTENSION_NAMENV_RAY_TRACING_SPEC_VERSIONAccelerationStructureInstanceNVTransformMatrixNVAabbPositionsNV)WriteDescriptorSetAccelerationStructureNV%BindAccelerationStructureMemoryInfoNV-AccelerationStructureMemoryRequirementsTypeNVRayTracingShaderGroupTypeNVGeometryTypeNVAccelerationStructureTypeNVCopyAccelerationStructureModeNV$BuildAccelerationStructureFlagBitsNVGeometryInstanceFlagBitsNVGeometryFlagBitsNV!BuildAccelerationStructureFlagsNVGeometryInstanceFlagsNVGeometryFlagsNV?$sel:shaderGroupHandleSize:PhysicalDeviceRayTracingPropertiesNV;$sel:maxRecursionDepth:PhysicalDeviceRayTracingPropertiesNV>$sel:maxShaderGroupStride:PhysicalDeviceRayTracingPropertiesNVB$sel:shaderGroupBaseAlignment:PhysicalDeviceRayTracingPropertiesNV:$sel:maxGeometryCount:PhysicalDeviceRayTracingPropertiesNV:$sel:maxInstanceCount:PhysicalDeviceRayTracingPropertiesNV:$sel:maxTriangleCount:PhysicalDeviceRayTracingPropertiesNVP$sel:maxDescriptorSetAccelerationStructures:PhysicalDeviceRayTracingPropertiesNV8$sel:type':AccelerationStructureMemoryRequirementsInfoNVH$sel:accelerationStructure:AccelerationStructureMemoryRequirementsInfoNV4$sel:compactedSize:AccelerationStructureCreateInfoNV+$sel:info:AccelerationStructureCreateInfoNV&$sel:type':AccelerationStructureInfoNV&$sel:flags:AccelerationStructureInfoNV.$sel:instanceCount:AccelerationStructureInfoNV+$sel:geometries:AccelerationStructureInfoNV$sel:geometryType:GeometryNV$sel:geometry:GeometryNV$sel:flags:GeometryNV$sel:triangles:GeometryDataNV$sel:aabbs:GeometryDataNV$sel:aabbData:GeometryAABBNV$sel:numAABBs:GeometryAABBNV$sel:stride:GeometryAABBNV$sel:offset:GeometryAABBNV#$sel:vertexData:GeometryTrianglesNV%$sel:vertexOffset:GeometryTrianglesNV$$sel:vertexCount:GeometryTrianglesNV%$sel:vertexStride:GeometryTrianglesNV%$sel:vertexFormat:GeometryTrianglesNV"$sel:indexData:GeometryTrianglesNV$$sel:indexOffset:GeometryTrianglesNV#$sel:indexCount:GeometryTrianglesNV"$sel:indexType:GeometryTrianglesNV&$sel:transformData:GeometryTrianglesNV($sel:transformOffset:GeometryTrianglesNV($sel:next:RayTracingPipelineCreateInfoNV)$sel:flags:RayTracingPipelineCreateInfoNV*$sel:stages:RayTracingPipelineCreateInfoNV*$sel:groups:RayTracingPipelineCreateInfoNV5$sel:maxRecursionDepth:RayTracingPipelineCreateInfoNV*$sel:layout:RayTracingPipelineCreateInfoNV6$sel:basePipelineHandle:RayTracingPipelineCreateInfoNV5$sel:basePipelineIndex:RayTracingPipelineCreateInfoNV,$sel:type':RayTracingShaderGroupCreateInfoNV4$sel:generalShader:RayTracingShaderGroupCreateInfoNV7$sel:closestHitShader:RayTracingShaderGroupCreateInfoNV3$sel:anyHitShader:RayTracingShaderGroupCreateInfoNV9$sel:intersectionShader:RayTracingShaderGroupCreateInfoNVAACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV@ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV9ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV+COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV)COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV.BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV5BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV5BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV4BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV0BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV(GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV%GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV8GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV.GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV/GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NVGEOMETRY_OPAQUE_BIT_NV+ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV(ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NVGEOMETRY_TYPE_AABBS_NVGEOMETRY_TYPE_TRIANGLES_NV5RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV4RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV(RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NVINDEX_TYPE_NONE_NV6DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT%OBJECT_TYPE_ACCELERATION_STRUCTURE_NV3QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV*ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV)ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV)DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV"PIPELINE_BIND_POINT_RAY_TRACING_NVBUFFER_USAGE_RAY_TRACING_BIT_NV2PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV(PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NVSHADER_STAGE_CALLABLE_BIT_NV SHADER_STAGE_INTERSECTION_BIT_NVSHADER_STAGE_MISS_BIT_NVSHADER_STAGE_CLOSEST_HIT_BIT_NVSHADER_STAGE_ANY_HIT_BIT_NVSHADER_STAGE_RAYGEN_BIT_NV=STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV9STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV'$fZeroRayTracingShaderGroupCreateInfoNV+$fStorableRayTracingShaderGroupCreateInfoNV.$fFromCStructRayTracingShaderGroupCreateInfoNV,$fToCStructRayTracingShaderGroupCreateInfoNV$$fZeroRayTracingPipelineCreateInfoNV+$fFromCStructRayTracingPipelineCreateInfoNV)$fToCStructRayTracingPipelineCreateInfoNV*$fExtensibleRayTracingPipelineCreateInfoNV$fZeroGeometryTrianglesNV$fStorableGeometryTrianglesNV $fFromCStructGeometryTrianglesNV$fToCStructGeometryTrianglesNV$fZeroGeometryAABBNV$fStorableGeometryAABBNV$fFromCStructGeometryAABBNV$fToCStructGeometryAABBNV$fZeroGeometryDataNV$fFromCStructGeometryDataNV$fToCStructGeometryDataNV$fZeroGeometryNV$fFromCStructGeometryNV$fToCStructGeometryNV*$fZeroPhysicalDeviceRayTracingPropertiesNV.$fStorablePhysicalDeviceRayTracingPropertiesNV1$fFromCStructPhysicalDeviceRayTracingPropertiesNV/$fToCStructPhysicalDeviceRayTracingPropertiesNV!$fZeroAccelerationStructureInfoNV($fFromCStructAccelerationStructureInfoNV&$fToCStructAccelerationStructureInfoNV'$fZeroAccelerationStructureCreateInfoNV.$fFromCStructAccelerationStructureCreateInfoNV,$fToCStructAccelerationStructureCreateInfoNV3$fZeroAccelerationStructureMemoryRequirementsInfoNV7$fStorableAccelerationStructureMemoryRequirementsInfoNV:$fFromCStructAccelerationStructureMemoryRequirementsInfoNV8$fToCStructAccelerationStructureMemoryRequirementsInfoNV*$fShowPhysicalDeviceRayTracingPropertiesNV3$fShowAccelerationStructureMemoryRequirementsInfoNV'$fShowAccelerationStructureCreateInfoNV!$fShowAccelerationStructureInfoNV$fShowGeometryNV$fShowGeometryDataNV$fShowGeometryAABBNV$fShowGeometryTrianglesNV$$fShowRayTracingPipelineCreateInfoNV'$fShowRayTracingShaderGroupCreateInfoNV $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$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$fShowBufferCreateInfoAPI_VERSION_1_0baseGHC.PtrPtrbytestring-0.10.8.2Data.ByteString.Internal ByteStringplusPtr resultStringversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName