/* Ċ Ġ* ĠCopyright ĠL WJ GL . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠLicense Ġterms : Ġhttps :// www . lwjgl . org / license Ċ Ġ* ĠM ACH INE ĠGENERATED ĠFILE , ĠDO ĠNOT ĠEDIT Ċ Ġ*/ Ċ package Ġorg . lwjgl . v ulkan . templates Ċ Ċ import Ġorg . lwjgl . generator .* Ċ import Ġorg . lwjgl . v ulkan .* Ċ Ċ val ĠK HR _ push _ descriptor Ġ= Ġ" KHR Push Descriptor ". native Class VK (" KHR _ push _ descriptor ", Ġtype Ġ= Ġ" device ", Ġpostfix Ġ= ĠK HR ) Ġ{ ĊĠĠĠ Ġdocumentation Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠThis Ġextension Ġallows Ġdescriptors Ġto Ġbe Ġwritten Ġinto Ġthe Ġcommand Ġbuffer , Ġwith Ġthe Ġimplementation Ġbeing Ġresponsible Ġfor Ġmanaging Ġtheir Ġmemory . ĠPush Ġdescriptors Ġmay Ġenable Ġeasier Ġport ing Ġfrom Ġolder ĠAPIs Ġand Ġin Ġsome Ġcases Ġcan Ġbe Ġmore Ġefficient Ġthan Ġwriting Ġdescriptors Ġinto Ġdescriptor Ġsets . ĊĊĠĠĠĠĠĠĠ Ġ< h 5 > Examples </ h 5 > ĊĠĠĠĠĠĠĠ ĠNone . ĊĊĠĠĠĠĠĠĠ Ġ< dl > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< dt >< b > Name ĠString </ b ></ dt > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< dd >{@ code ĠVK _ KHR _ push _ descriptor }</ dd > ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< dt >< b > Extension ĠType </ b ></ dt > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< dd > Device Ġextension </ dd > ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< dt >< b > Registered ĠExtension ĠNumber </ b ></ dt > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< dd > 8 1 </ dd > ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< dt >< b > Revision </ b ></ dt > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< dd > 1 </ dd > ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< dt >< b > Extension Ġand ĠVersion ĠDependencies </ b ></ dt > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< dd >< ul > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< li > Requires ĠVulkan Ġ 1 . 0 </ li > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< li > Requires Ġ< a Ġtarget ="_ blank " Ġhref =" https :// www . kh ronos . org / registry / v ulkan / specs / 1 . 0 - extensions / xhtml / vk spec . html \ # VK _ KHR _ get _ physical _ device _ properties 2 ">{ @ code ĠVK _ KHR _ get _ physical _ device _ properties 2 }</ a ></ li > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ</ ul ></ dd > ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< dt >< b > Contact </ b ></ dt > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< dd >< ul > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< li > J eff ĠB ol z Ġ@ jb ol z </ li > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ</ ul ></ dd > ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< dt >< b > Last ĠModified ĠDate </ b ></ dt > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< dd > 2 0 1 6 - 1 0 - 1 5 </ dd > ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< dt >< b > IP ĠStatus </ b ></ dt > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< dd > No Ġknown ĠIP Ġclaims .</ dd > ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< dt >< b > Contribut ors </ b ></ dt > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< dd >< ul > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< li > J eff ĠB ol z , ĠNVIDIA </ li > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< li > Michael ĠW or ce ster , ĠIm ag ination ĠTechnologies </ li > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ</ ul ></ dd > ĊĠĠĠĠĠĠĠ Ġ</ dl > ĊĠĠĠĠĠĠĠ Ġ""" ĊĊĠĠĠ ĠInt Constant ( ĊĠĠĠĠĠĠĠ Ġ" The Ġextension Ġspecification Ġversion .", ĊĊĠĠĠĠĠĠĠ Ġ" KHR _ PUSH _ DESCRIPTOR _ SPEC _ VERSION " .." 1 " ĊĠĠĠ Ġ) ĊĊĠĠĠ ĠString Constant ( ĊĠĠĠĠĠĠĠ Ġ" The Ġextension Ġname .", ĊĊĠĠĠĠĠĠĠ Ġ" KHR _ PUSH _ DESCRIPTOR _ EXTENSION _ NAME " .." VK _ KHR _ push _ descriptor " ĊĠĠĠ Ġ) ĊĊĠĠĠ ĠEnum Constant ( ĊĠĠĠĠĠĠĠ Ġ" Ext ends Ġ{@ code ĠVk Structure Type }. ", ĊĊĠĠĠĠĠĠĠ Ġ" STRUCTURE _ TYPE _ PHYSICAL _ DEVICE _ PUSH _ DESCRIPTOR _ PROPERTIES _ KHR " .." 1 0 0 0 0 8 0 0 0 0 " ĊĠĠĠ Ġ) ĊĊĠĠĠ ĠEnum Constant ( ĊĠĠĠĠĠĠĠ Ġ" Ext ends Ġ{@ code ĠVk DescriptorSet Layout Create Flag Bits }. ", ĊĊĠĠĠĠĠĠĠ Ġ" DESCRIPTOR _ SET _ LAYOUT _ CREATE _ PUSH _ DESCRIPTOR _ BIT _ KHR ". enum ( 0 x 0 0 0 0 0 0 0 1 ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġvoid ( ĊĠĠĠĠĠĠĠ Ġ" Cmd Push DescriptorSet KHR ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠP ushes Ġdescriptor Ġupdates Ġinto Ġa Ġcommand Ġbuffer . ĊĊĠĠĠĠĠĠĠ Ġ< h 5 > C ĠSpecification </ h 5 > ĊĠĠĠĠĠĠĠ ĠIn Ġaddition Ġto Ġalloc ating Ġdescriptor Ġsets Ġand Ġbinding Ġthem Ġto Ġa Ġcommand Ġbuffer , Ġan Ġapplication Ġ< b > can </ b > Ġrecord Ġdescriptor Ġupdates Ġinto Ġthe Ġcommand Ġbuffer . ĊĊĠĠĠĠĠĠĠ ĠTo Ġpush Ġdescriptor Ġupdates Ġinto Ġa Ġcommand Ġbuffer , Ġcall : ĊĊĠĠĠĠĠĠĠ Ġ< code >< pre > Ċ ï¿ ¿ void ĠvkCmd Push DescriptorSet KHR ( Ċ ï¿ ¿ ĠĠĠ ĠVk CommandBuffer ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Buffer , Ċ ï¿ ¿ ĠĠĠ ĠVk Pipeline Bind Point ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline Bind Point , Ċ ï¿ ¿ ĠĠĠ ĠVk Pipeline Layout ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout , Ċ ï¿ ¿ ĠĠĠ Ġuint 3 2 _ t ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset , Ċ ï¿ ¿ ĠĠĠ Ġuint 3 2 _ t ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescriptor Write Count , Ċ ï¿ ¿ ĠĠĠ Ġconst ĠVk Write DescriptorSet * ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp Descriptor Writes );</ pre ></ code > ĊĊĠĠĠĠĠĠĠ Ġ< h 5 > Description </ h 5 > ĊĠĠĠĠĠĠĠ Ġ< em > Push Ġdescriptors </ em > Ġ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 Ġhave Ġundefined Ġcontents . ĠPush Ġdescriptors Ġ< b > can </ b > Ġbe Ġupdated Ġincrement ally Ġand Ġcause Ġshaders Ġto Ġuse Ġthe Ġupdated Ġdescriptors Ġfor Ġsubsequent Ġrendering Ġcommands Ġ( either Ġcompute Ġor Ġgraphics , Ġaccording Ġto Ġthe Ġ{@ code Ġpipeline Bind Point }) Ġuntil Ġthe Ġdescriptor Ġis Ġoverwritten , Ġor Ġelse Ġuntil Ġthe Ġset Ġis Ġdist ur bed Ġas Ġdescribed Ġin Ġ< a Ġtarget ="_ blank " Ġhref =" https :// www . kh ronos . org / registry / v ulkan / specs / 1 . 0 - extensions / xhtml / vk spec . html \ # descriptor sets - compatibility "> Pipeline ĠLayout ĠCompatibility </ a >. ĠWhen Ġthe Ġset Ġis Ġdist ur bed Ġor Ġpush Ġdescriptors Ġwith Ġa Ġdifferent Ġdescriptor Ġset Ġlayout Ġare Ġset , Ġall Ġpush Ġdescriptors Ġbecome Ġinvalid . ĊĊĠĠĠĠĠĠĠ ĠValid Ġdescriptors Ġ< b > must </ b > Ġbe Ġpushed Ġfor Ġall Ġbindings Ġthat Ġany Ġshaders Ġin Ġa Ġpipeline Ġaccess , Ġat Ġthe Ġtime Ġthat Ġa Ġdraw Ġor Ġdispatch Ġcommand Ġis Ġrecorded Ġto Ġexecute Ġusing Ġthat Ġpipeline . ĠThis Ġincludes Ġimmutable Ġsampler Ġdescriptors , Ġwhich Ġ< b > must </ b > Ġbe Ġpushed Ġbefore Ġthey Ġare Ġaccessed Ġby Ġa Ġpipeline . ĠHowever , Ġif Ġnone Ġof Ġthe Ġshaders Ġin Ġa Ġpipeline Ġstatic ally Ġuse Ġcertain Ġbindings Ġin Ġthe Ġpush Ġdescriptor Ġset , Ġthen Ġthose Ġdescriptors Ġneed Ġnot Ġbe Ġvalid . ĊĊĠĠĠĠĠĠĠ ĠPush Ġdescriptors Ġdo Ġnot Ġuse Ġdynamic Ġoffsets . ĠInstead , Ġthe Ġcorresponding Ġnon - dynamic Ġdescriptor Ġtypes Ġ< b > can </ b > Ġbe Ġused Ġand Ġthe Ġ{@ code Ġoffset } Ġmember Ġof Ġ## Vk Descriptor Buffer Info Ġ< b > can </ b > Ġbe Ġchanged Ġeach Ġtime Ġthe Ġdescriptor Ġis Ġwritten . ĊĊĠĠĠĠĠĠĠ ĠEach Ġelement Ġof Ġ{@ code Ġp Descriptor Writes } Ġis Ġinterpreted Ġas Ġin Ġ## Vk Write DescriptorSet , Ġexcept Ġthe Ġ{@ code Ġdst Set } Ġmember Ġis Ġignored . ĊĊĠĠĠĠĠĠĠ ĠTo Ġpush Ġan Ġimmutable Ġsampler , Ġuse Ġa Ġ## Vk Write DescriptorSet Ġwith Ġ{@ code Ġdst Binding } Ġand Ġ{@ code Ġdst Array Element } Ġselecting Ġthe Ġimmutable Ġsampler 's Ġbinding . ĠIf Ġthe Ġdescriptor Ġtype Ġis Ġ# DESCRIPTOR _ TYPE _ SAMPLER , Ġthe Ġ{@ code Ġp Image Info } Ġparameter Ġis Ġignored Ġand Ġthe Ġimmutable Ġsampler Ġis Ġtaken Ġfrom Ġthe Ġpush Ġdescriptor Ġset Ġlayout Ġin Ġthe Ġpipeline Ġlayout . ĠIf Ġthe Ġdescriptor Ġtype Ġis Ġ# DESCRIPTOR _ TYPE _ COMB IN ED _ IMAGE _ SAMPLER , Ġthe Ġ{@ code Ġsampler } Ġmember Ġof Ġthe Ġthe Ġ{@ code Ġp Image Info } Ġparameter Ġis Ġignored Ġand Ġthe Ġimmutable Ġsampler Ġis Ġtaken Ġfrom Ġthe Ġpush Ġdescriptor Ġset Ġlayout Ġin Ġthe Ġpipeline Ġlayout . ĊĊĠĠĠĠĠĠĠ Ġ< h 5 > Valid ĠUsage </ h 5 > ĊĠĠĠĠĠĠĠ Ġ< ul > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< li >{@ code Ġpipeline Bind Point } Ġ< b > must </ b > Ġbe Ġsupported Ġby Ġthe Ġ{@ code Ġcommand Buffer } &# 8 2 1 7 ; s Ġparent Ġ{@ code ĠVk Command Pool } &# 8 2 1 7 ; s Ġqueue Ġfamily </ li > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< li >{@ code Ġset } Ġ< b > must </ b > Ġbe Ġless Ġthan Ġ## Vk Pipeline Layout CreateInfo {@ code Ġ:: setLayout Count } Ġprovided Ġwhen Ġ{@ code Ġlayout } Ġwas Ġcreated </ li > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< li >{@ code Ġset } Ġ< b > must </ b > Ġbe Ġthe Ġunique Ġset Ġnumber Ġin Ġthe Ġpipeline Ġlayout Ġthat Ġuses Ġa Ġdescriptor Ġset Ġlayout Ġthat Ġwas Ġcreated Ġwith Ġ# DESCRIPTOR _ SET _ LAYOUT _ CREATE _ PUSH _ DESCRIPTOR _ BIT _ KHR </ li > ĊĠĠĠĠĠĠĠ Ġ</ ul > ĊĊĠĠĠĠĠĠĠ Ġ< h 5 > Valid ĠUsage Ġ( Implicit )</ h 5 > ĊĠĠĠĠĠĠĠ Ġ< ul > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< li >{@ code Ġcommand Buffer } Ġ< b > must </ b > Ġbe Ġa Ġvalid Ġ{@ code ĠVk CommandBuffer } Ġhandle </ li > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< li >{@ code Ġpipeline Bind Point } Ġ< b > must </ b > Ġbe Ġa Ġvalid Ġ{@ code ĠVk Pipeline Bind Point } Ġvalue </ li > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< li >{@ code Ġlayout } Ġ< b > must </ b > Ġbe Ġa Ġvalid Ġ{@ code ĠVk Pipeline Layout } Ġhandle </ li > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< li >{@ code Ġp Descriptor Writes } Ġ< b > must </ b > Ġbe Ġa Ġvalid Ġpointer Ġto Ġan Ġarray Ġof Ġ{@ code Ġdescriptor Write Count } Ġvalid Ġ## Vk Write DescriptorSet Ġstructures </ li > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< li >{@ code Ġcommand Buffer } Ġ< b > must </ b > Ġbe Ġin Ġthe Ġ< a Ġtarget ="_ blank " Ġhref =" https :// www . kh ronos . org / registry / v ulkan / specs / 1 . 0 - extensions / xhtml / vk spec . html \ # command buffers - lifecycle "> recording Ġstate </ a ></ li > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< li > The Ġ{@ code ĠVk Command Pool } Ġthat Ġ{@ code Ġcommand Buffer } Ġwas Ġallocated Ġfrom Ġ< b > must </ b > Ġsupport Ġgraphics , Ġor Ġcompute Ġoperations </ li > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< li >{@ code Ġdescriptor Write Count } Ġ< b > must </ b > Ġbe Ġgreater Ġthan Ġ 0 </ li > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< li > Both Ġof Ġ{@ code Ġcommand Buffer }, Ġand Ġ{@ code Ġlayout } Ġ< b > must </ b > Ġhave Ġbeen Ġcreated , Ġallocated , Ġor Ġretrieved Ġfrom Ġthe Ġsame Ġ{@ code ĠVk Device }</ li > ĊĠĠĠĠĠĠĠ Ġ</ ul > ĊĊĠĠĠĠĠĠĠ Ġ< h 5 > Host ĠSynchron ization </ h 5 > ĊĠĠĠĠĠĠĠ Ġ< ul > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< li > Host Ġaccess Ġto Ġ{@ code Ġcommand Buffer } Ġ< b > must </ b > Ġbe Ġextern ally Ġsynchronized </ li > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< li > Host Ġaccess Ġto Ġthe Ġ{@ code ĠVk Command Pool } Ġthat Ġ{@ code Ġcommand Buffer } Ġwas Ġallocated Ġfrom Ġ< b > must </ b > Ġbe Ġextern ally Ġsynchronized </ li > ĊĠĠĠĠĠĠĠ Ġ</ ul > ĊĊĠĠĠĠĠĠĠ Ġ< h 5 > Command ĠProperties </ h 5 > ĊĠĠĠĠĠĠĠ Ġ< table Ġclass =" lwjgl "> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< thead >< tr >< th >< a Ġtarget ="_ blank " Ġhref =" https :// www . kh ronos . org / registry / v ulkan / specs / 1 . 0 - extensions / xhtml / vk spec . html \ # Vk CommandBuffer Level "> Command ĠBuffer ĠLevel s </ a ></ th >< th >< a Ġtarget ="_ blank " Ġhref =" https :// www . kh ronos . org / registry / v ulkan / specs / 1 . 0 - extensions / xhtml / vk spec . html \ # vkCmd Begin RenderPass "> Render ĠPass ĠScope </ a ></ th >< th >< a Ġtarget ="_ blank " Ġhref =" https :// www . kh ronos . org / registry / v ulkan / specs / 1 . 0 - extensions / xhtml / vk spec . html \ # Vk Queue Flag Bits "> Supported ĠQueue ĠTypes </ a ></ th >< th >< a Ġtarget ="_ blank " Ġhref =" https :// www . kh ronos . org / registry / v ulkan / specs / 1 . 0 - extensions / xhtml / vk spec . html \ # synchron ization - pipeline - stages - types "> Pipeline ĠType </ a ></ th ></ tr ></ thead > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< tbody >< tr >< td > Primary ĠSecondary </ td >< td > Both </ td >< td > Graphics Ġcompute </ td >< td ></ td ></ tr ></ tbody > ĊĠĠĠĠĠĠĠ Ġ</ table > ĊĊĠĠĠĠĠĠĠ Ġ< h 5 > See ĠAlso </ h 5 > ĊĠĠĠĠĠĠĠ Ġ## Vk Write DescriptorSet ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĊĠĠĠĠĠĠĠ ĠVk CommandBuffer . IN (" commandBuffer ", Ġ" the Ġcommand Ġbuffer Ġthat Ġthe Ġdescriptors Ġwill Ġbe Ġrecorded Ġin ."), ĊĠĠĠĠĠĠĠ ĠVk Pipeline Bind Point . IN (" pipeline Bind Point ", Ġ" a Ġ{@ code ĠVk Pipeline Bind Point } Ġ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 Ġdist urb Ġthe Ġother ."), ĊĠĠĠĠĠĠĠ ĠVk Pipeline Layout . IN (" layout ", Ġ" a Ġ{@ code ĠVk Pipeline Layout } Ġobject Ġused Ġto Ġprogram Ġthe Ġbindings ."), ĊĠĠĠĠĠĠĠ Ġuint 3 2 _ t . IN (" set ", Ġ" the Ġset Ġnumber Ġof Ġthe Ġdescriptor Ġset Ġin Ġthe Ġpipeline Ġlayout Ġthat Ġwill Ġbe Ġupdated ."), ĊĠĠĠĠĠĠĠ ĠAuto Size (" p Descriptor Writes ") .. uint 3 2 _ t . IN (" descriptor Write Count ", Ġ" the Ġnumber Ġof Ġelements Ġin Ġthe Ġ{@ code Ġp Descriptor Writes } Ġarray ."), ĊĠĠĠĠĠĠĠ Ġconst .. Vk Write DescriptorSet . p . IN (" p Descriptor Writes ", Ġ" a Ġpointer Ġto Ġan Ġarray Ġof Ġ## Vk Write DescriptorSet Ġstructures Ġdescribing Ġthe Ġdescriptors Ġto Ġbe Ġupdated .") ĊĠĠĠ Ġ) Ċ }