[{"data":1,"prerenderedAt":870},["ShallowReactive",2],{"$fCdMgtbeUXj2bMPnUO1H57ukIpZ87Z46Xp8tS1regxiI":3},{"title":4,"description":5,"parent":6,"cmd_buf_level":7,"render_pass_scope":10,"supported_queue_types":11,"tasks":14,"type":16,"xrefs":17,"body":18,"_type":869,"_id":4},"vkCmdBindResourceHeapEXT","Binds a resource heap to a command buffer","VK_EXT_descriptor_heap",[8,9],"primary","secondary","both",[12,13],"VK_QUEUE_GRAPHICS_BIT","VK_QUEUE_COMPUTE_BIT",[15],"state","protos",[],{"type":19,"children":20,"toc":867},"root",[21,29,225,260,319,361,381,681,816,861],{"type":22,"tag":23,"props":24,"children":25},"element","p",{},[26],{"type":27,"value":28},"text","To bind a resource heap to a command buffer, call:",{"type":22,"tag":30,"props":31,"children":32},"code-group",{},[33,119],{"type":22,"tag":34,"props":35,"children":41},"pre",{"className":36,"code":37,"filename":38,"language":39,"meta":40,"style":40},"language-c shiki shiki-themes github-light-default github-dark-default","void vkCmdBindResourceHeapEXT(\n VkCommandBuffer commandBuffer,\n const VkBindHeapInfoEXT* pBindInfo);\n","C","c","",[42],{"type":22,"tag":43,"props":44,"children":45},"code",{"__ignoreMap":40},[46,70,90],{"type":22,"tag":47,"props":48,"children":51},"span",{"class":49,"line":50},"line",1,[52,58,64],{"type":22,"tag":47,"props":53,"children":55},{"style":54},"--shiki-default:#CF222E;--shiki-dark:#FF7B72",[56],{"type":27,"value":57},"void",{"type":22,"tag":47,"props":59,"children":61},{"style":60},"--shiki-default:#8250DF;--shiki-dark:#D2A8FF",[62],{"type":27,"value":63}," vkCmdBindResourceHeapEXT",{"type":22,"tag":47,"props":65,"children":67},{"style":66},"--shiki-default:#1F2328;--shiki-dark:#E6EDF3",[68],{"type":27,"value":69},"(\n",{"type":22,"tag":47,"props":71,"children":73},{"class":49,"line":72},2,[74,79,85],{"type":22,"tag":47,"props":75,"children":76},{"style":66},[77],{"type":27,"value":78}," VkCommandBuffer ",{"type":22,"tag":47,"props":80,"children":82},{"style":81},"--shiki-default:#953800;--shiki-dark:#FFA657",[83],{"type":27,"value":84},"commandBuffer",{"type":22,"tag":47,"props":86,"children":87},{"style":66},[88],{"type":27,"value":89},",\n",{"type":22,"tag":47,"props":91,"children":93},{"class":49,"line":92},3,[94,99,104,109,114],{"type":22,"tag":47,"props":95,"children":96},{"style":54},[97],{"type":27,"value":98}," const",{"type":22,"tag":47,"props":100,"children":101},{"style":66},[102],{"type":27,"value":103}," VkBindHeapInfoEXT",{"type":22,"tag":47,"props":105,"children":106},{"style":54},[107],{"type":27,"value":108},"*",{"type":22,"tag":47,"props":110,"children":111},{"style":81},[112],{"type":27,"value":113}," pBindInfo",{"type":22,"tag":47,"props":115,"children":116},{"style":66},[117],{"type":27,"value":118},");\n",{"type":22,"tag":34,"props":120,"children":125},{"className":121,"code":122,"filename":123,"language":124,"meta":40,"style":40},"language-rs shiki shiki-themes github-light-default github-dark-default","pub fn cmd_bind_resource_heap_ext(\n command_buffer: vk::CommandBuffer,\n p_bind_info: *const vk::BindHeapInfoEXT,\n);\n","Rust","rs",[126],{"type":22,"tag":43,"props":127,"children":128},{"__ignoreMap":40},[129,151,183,217],{"type":22,"tag":47,"props":130,"children":131},{"class":49,"line":50},[132,137,142,147],{"type":22,"tag":47,"props":133,"children":134},{"style":54},[135],{"type":27,"value":136},"pub",{"type":22,"tag":47,"props":138,"children":139},{"style":54},[140],{"type":27,"value":141}," fn",{"type":22,"tag":47,"props":143,"children":144},{"style":60},[145],{"type":27,"value":146}," cmd_bind_resource_heap_ext",{"type":22,"tag":47,"props":148,"children":149},{"style":66},[150],{"type":27,"value":69},{"type":22,"tag":47,"props":152,"children":153},{"class":49,"line":72},[154,159,164,169,174,179],{"type":22,"tag":47,"props":155,"children":156},{"style":66},[157],{"type":27,"value":158}," command_buffer",{"type":22,"tag":47,"props":160,"children":161},{"style":54},[162],{"type":27,"value":163},":",{"type":22,"tag":47,"props":165,"children":166},{"style":81},[167],{"type":27,"value":168}," vk",{"type":22,"tag":47,"props":170,"children":171},{"style":54},[172],{"type":27,"value":173},"::",{"type":22,"tag":47,"props":175,"children":176},{"style":81},[177],{"type":27,"value":178},"CommandBuffer",{"type":22,"tag":47,"props":180,"children":181},{"style":66},[182],{"type":27,"value":89},{"type":22,"tag":47,"props":184,"children":185},{"class":49,"line":92},[186,191,195,200,204,208,213],{"type":22,"tag":47,"props":187,"children":188},{"style":66},[189],{"type":27,"value":190}," p_bind_info",{"type":22,"tag":47,"props":192,"children":193},{"style":54},[194],{"type":27,"value":163},{"type":22,"tag":47,"props":196,"children":197},{"style":54},[198],{"type":27,"value":199}," *const",{"type":22,"tag":47,"props":201,"children":202},{"style":81},[203],{"type":27,"value":168},{"type":22,"tag":47,"props":205,"children":206},{"style":54},[207],{"type":27,"value":173},{"type":22,"tag":47,"props":209,"children":210},{"style":81},[211],{"type":27,"value":212},"BindHeapInfoEXT",{"type":22,"tag":47,"props":214,"children":215},{"style":66},[216],{"type":27,"value":89},{"type":22,"tag":47,"props":218,"children":220},{"class":49,"line":219},4,[221],{"type":22,"tag":47,"props":222,"children":223},{"style":66},[224],{"type":27,"value":118},{"type":22,"tag":226,"props":227,"children":228},"ul",{},[229,240],{"type":22,"tag":230,"props":231,"children":232},"li",{},[233,238],{"type":22,"tag":43,"props":234,"children":236},{"className":235},[],[237],{"type":27,"value":84},{"type":27,"value":239}," is the command buffer that the resource heap will be\nbound to.",{"type":22,"tag":230,"props":241,"children":242},{},[243,249,251,258],{"type":22,"tag":43,"props":244,"children":246},{"className":245},[],[247],{"type":27,"value":248},"pBindInfo",{"type":27,"value":250}," is a ",{"type":22,"tag":252,"props":253,"children":255},"a",{"href":254},"/man/VkBindHeapInfoEXT",[256],{"type":27,"value":257},"VkBindHeapInfoEXT",{"type":27,"value":259}," specifying the device\naddress range used for the heap and any implementation reservations.",{"type":22,"tag":23,"props":261,"children":262},{},[263,265,271,273,278,280,286,288,293,294,299,301,311,313,317],{"type":27,"value":264},"Addresses in the range defined by ",{"type":22,"tag":43,"props":266,"children":268},{"className":267},[],[269],{"type":27,"value":270},"pBindInfo→heapRange",{"type":27,"value":272}," are bound as\nthe resource heap.\nThe application ",{"type":22,"tag":274,"props":275,"children":277},"normative",{"type":276},"can",[],{"type":27,"value":279}," access resources and data through this heap anywhere\nexcept for the reserved range specified by\n",{"type":22,"tag":43,"props":281,"children":283},{"className":282},[],[284],{"type":27,"value":285},"pBindInfo→reservedRangeOffset",{"type":27,"value":287},".\nAddresses in the range [",{"type":22,"tag":43,"props":289,"children":291},{"className":290},[],[292],{"type":27,"value":285},{"type":27,"value":89},{"type":22,"tag":43,"props":295,"children":297},{"className":296},[],[298],{"type":27,"value":285},{"type":27,"value":300}," +\n",{"type":22,"tag":252,"props":302,"children":304},{"href":303},"/man/VkPhysicalDeviceDescriptorHeapPropertiesEXT#limits-minResourceHeapReservedRange",[305],{"type":22,"tag":43,"props":306,"children":308},{"className":307},[],[309],{"type":27,"value":310},"minResourceHeapReservedRange",{"type":27,"value":312},")\nare reserved for the implementation and ",{"type":22,"tag":274,"props":314,"children":316},{"type":315},"must",[],{"type":27,"value":318}," not be accessed by the\napplication at any time from when this command is recorded until there are\nno command buffers with that range bound.",{"type":22,"tag":23,"props":320,"children":321},{},[322,324,327,329,335,337,343,345,351,353,359],{"type":27,"value":323},"Shaders executed by commands recorded after this command ",{"type":22,"tag":274,"props":325,"children":326},{"type":276},[],{"type":27,"value":328}," use the\nspecified resource heap to access resources.\n",{"type":22,"tag":43,"props":330,"children":332},{"className":331},[],[333],{"type":27,"value":334},"pBindInfo→heapRange.address",{"type":27,"value":336}," will be available to shaders to access\nresources through the ",{"type":22,"tag":43,"props":338,"children":340},{"className":339},[],[341],{"type":27,"value":342},"ResourceHeapEXT",{"type":27,"value":344}," ",{"type":22,"tag":43,"props":346,"children":348},{"className":347},[],[349],{"type":27,"value":350},"BuiltIn",{"type":27,"value":352}," or via\n",{"type":22,"tag":252,"props":354,"children":356},{"href":355},"/chapters/descriptorheaps#descriptorheaps-bindings",[357],{"type":27,"value":358},"shader bindings",{"type":27,"value":360},".",{"type":22,"tag":23,"props":362,"children":363},{},[364,366,371,373,379],{"type":27,"value":365},"When ",{"type":22,"tag":43,"props":367,"children":369},{"className":368},[],[370],{"type":27,"value":4},{"type":27,"value":372}," is recorded, it\n",{"type":22,"tag":252,"props":374,"children":376},{"href":375},"/chapters/descriptorheaps#descriptorheaps-invalidate-sets",[377],{"type":27,"value":378},"immediately invalidates all non-heap\ndescriptor state",{"type":27,"value":380},".\nSimilarly, recording any non-heap descriptor state commands immediately\ninvalidates state set by this command.",{"type":22,"tag":382,"props":383,"children":385},"validity-group",{"name":384},"Valid Usage",[386,421,447,475,503,530,557,612,639],{"type":22,"tag":387,"props":388,"children":390},"validity-field",{"name":389},"VUID-vkCmdBindResourceHeapEXT-pBindInfo-11232",[391],{"type":22,"tag":23,"props":392,"children":393},{},[394,396,401,403,409,410,413,415],{"type":27,"value":395},"The sum of ",{"type":22,"tag":43,"props":397,"children":399},{"className":398},[],[400],{"type":27,"value":285},{"type":27,"value":402}," and\n",{"type":22,"tag":43,"props":404,"children":406},{"className":405},[],[407],{"type":27,"value":408},"pBindInfo→reservedRangeSize",{"type":27,"value":344},{"type":22,"tag":274,"props":411,"children":412},{"type":315},[],{"type":27,"value":414}," be less than or equal to\n",{"type":22,"tag":43,"props":416,"children":418},{"className":417},[],[419],{"type":27,"value":420},"pBindInfo→heapRange.size",{"type":22,"tag":387,"props":422,"children":424},{"name":423},"VUID-vkCmdBindResourceHeapEXT-pBindInfo-11233",[425],{"type":22,"tag":23,"props":426,"children":427},{},[428,433,434,437,439],{"type":22,"tag":43,"props":429,"children":431},{"className":430},[],[432],{"type":27,"value":408},{"type":27,"value":344},{"type":22,"tag":274,"props":435,"children":436},{"type":315},[],{"type":27,"value":438}," be greater than or equal to\n",{"type":22,"tag":252,"props":440,"children":441},{"href":303},[442],{"type":22,"tag":43,"props":443,"children":445},{"className":444},[],[446],{"type":27,"value":310},{"type":22,"tag":387,"props":448,"children":450},{"name":449},"VUID-vkCmdBindResourceHeapEXT-pBindInfo-11234",[451],{"type":22,"tag":23,"props":452,"children":453},{},[454,459,460,463,465],{"type":22,"tag":43,"props":455,"children":457},{"className":456},[],[458],{"type":27,"value":420},{"type":27,"value":344},{"type":22,"tag":274,"props":461,"children":462},{"type":315},[],{"type":27,"value":464}," less than or equal to\n",{"type":22,"tag":252,"props":466,"children":468},{"href":467},"/man/VkPhysicalDeviceDescriptorHeapPropertiesEXT#limits-maxResourceHeapSize",[469],{"type":22,"tag":43,"props":470,"children":472},{"className":471},[],[473],{"type":27,"value":474},"maxResourceHeapSize",{"type":22,"tag":387,"props":476,"children":478},{"name":477},"VUID-vkCmdBindResourceHeapEXT-pBindInfo-11235",[479],{"type":22,"tag":23,"props":480,"children":481},{},[482,487,488,491,493],{"type":22,"tag":43,"props":483,"children":485},{"className":484},[],[486],{"type":27,"value":334},{"type":27,"value":344},{"type":22,"tag":274,"props":489,"children":490},{"type":315},[],{"type":27,"value":492}," be a multiple of\n",{"type":22,"tag":252,"props":494,"children":496},{"href":495},"/man/VkPhysicalDeviceDescriptorHeapPropertiesEXT#limits-resourceHeapAlignment",[497],{"type":22,"tag":43,"props":498,"children":500},{"className":499},[],[501],{"type":27,"value":502},"resourceHeapAlignment",{"type":22,"tag":387,"props":504,"children":506},{"name":505},"VUID-vkCmdBindResourceHeapEXT-pBindInfo-11435",[507],{"type":22,"tag":23,"props":508,"children":509},{},[510,515,516,519,520],{"type":22,"tag":43,"props":511,"children":513},{"className":512},[],[514],{"type":27,"value":285},{"type":27,"value":344},{"type":22,"tag":274,"props":517,"children":518},{"type":315},[],{"type":27,"value":492},{"type":22,"tag":252,"props":521,"children":523},{"href":522},"/man/VkPhysicalDeviceDescriptorHeapPropertiesEXT#limits-bufferDescriptorAlignment",[524],{"type":22,"tag":43,"props":525,"children":527},{"className":526},[],[528],{"type":27,"value":529},"bufferDescriptorAlignment",{"type":22,"tag":387,"props":531,"children":533},{"name":532},"VUID-vkCmdBindResourceHeapEXT-pBindInfo-11436",[534],{"type":22,"tag":23,"props":535,"children":536},{},[537,542,543,546,547],{"type":22,"tag":43,"props":538,"children":540},{"className":539},[],[541],{"type":27,"value":285},{"type":27,"value":344},{"type":22,"tag":274,"props":544,"children":545},{"type":315},[],{"type":27,"value":492},{"type":22,"tag":252,"props":548,"children":550},{"href":549},"/man/VkPhysicalDeviceDescriptorHeapPropertiesEXT#limits-imageDescriptorAlignment",[551],{"type":22,"tag":43,"props":552,"children":554},{"className":553},[],[555],{"type":27,"value":556},"imageDescriptorAlignment",{"type":22,"tag":387,"props":558,"children":560},{"name":559},"VUID-vkCmdBindResourceHeapEXT-pBindInfo-11236",[561],{"type":22,"tag":23,"props":562,"children":563},{},[564,566,571,572,577,579,584,586,591,592,597,599,602,604,610],{"type":27,"value":565},"Memory bound to addresses in the range\n[",{"type":22,"tag":43,"props":567,"children":569},{"className":568},[],[570],{"type":27,"value":334},{"type":27,"value":300},{"type":22,"tag":43,"props":573,"children":575},{"className":574},[],[576],{"type":27,"value":285},{"type":27,"value":578},", ",{"type":22,"tag":43,"props":580,"children":582},{"className":581},[],[583],{"type":27,"value":334},{"type":27,"value":585},"\n+ ",{"type":22,"tag":43,"props":587,"children":589},{"className":588},[],[590],{"type":27,"value":285},{"type":27,"value":300},{"type":22,"tag":43,"props":593,"children":595},{"className":594},[],[596],{"type":27,"value":408},{"type":27,"value":598},") ",{"type":22,"tag":274,"props":600,"children":601},{"type":315},[],{"type":27,"value":603}," not be\n",{"type":22,"tag":252,"props":605,"children":607},{"href":606},"/chapters/descriptorheaps#descriptorheaps-reservedranges",[608],{"type":27,"value":609},"bound to any other command buffer as a\nreserved range",{"type":27,"value":611}," for any heap unless the reserved range matches exactly\nand it is the same heap type",{"type":22,"tag":387,"props":613,"children":615},{"name":614},"VUID-vkCmdBindResourceHeapEXT-heapRange-11237",[616],{"type":22,"tag":23,"props":617,"children":618},{},[619,625,626,629,631,637],{"type":22,"tag":43,"props":620,"children":622},{"className":621},[],[623],{"type":27,"value":624},"heapRange",{"type":27,"value":344},{"type":22,"tag":274,"props":627,"children":628},{"type":315},[],{"type":27,"value":630}," be a device address range allocated to the\napplication from a buffer created with the\n",{"type":22,"tag":43,"props":632,"children":634},{"className":633},[],[635],{"type":27,"value":636},"VK_BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT",{"type":27,"value":638}," usage flag set",{"type":22,"tag":387,"props":640,"children":642},{"name":641},"VUID-vkCmdBindResourceHeapEXT-commandBuffer-11238",[643],{"type":22,"tag":23,"props":644,"children":645},{},[646,648,653,655,658,660,666,667,673,675],{"type":27,"value":647},"If ",{"type":22,"tag":43,"props":649,"children":651},{"className":650},[],[652],{"type":27,"value":84},{"type":27,"value":654}," is a secondary command buffer, it ",{"type":22,"tag":274,"props":656,"children":657},{"type":315},[],{"type":27,"value":659}," have\nbegun with\n",{"type":22,"tag":252,"props":661,"children":663},{"href":662},"/man/VkCommandBufferInheritanceDescriptorHeapInfoEXT",[664],{"type":27,"value":665},"VkCommandBufferInheritanceDescriptorHeapInfoEXT",{"type":27,"value":173},{"type":22,"tag":43,"props":668,"children":670},{"className":669},[],[671],{"type":27,"value":672},"pResourceHeapBindInfo",{"type":27,"value":674},"\nequal to ",{"type":22,"tag":43,"props":676,"children":678},{"className":677},[],[679],{"type":27,"value":680},"NULL",{"type":22,"tag":382,"props":682,"children":684},{"name":683},"Valid Usage (Implicit)",[685,711,735,759,802],{"type":22,"tag":387,"props":686,"children":688},{"name":687},"VUID-vkCmdBindResourceHeapEXT-commandBuffer-parameter",[689],{"type":22,"tag":23,"props":690,"children":691},{},[692,697,698,701,703,709],{"type":22,"tag":43,"props":693,"children":695},{"className":694},[],[696],{"type":27,"value":84},{"type":27,"value":344},{"type":22,"tag":274,"props":699,"children":700},{"type":315},[],{"type":27,"value":702}," be a valid ",{"type":22,"tag":252,"props":704,"children":706},{"href":705},"/man/VkCommandBuffer",[707],{"type":27,"value":708},"VkCommandBuffer",{"type":27,"value":710}," handle",{"type":22,"tag":387,"props":712,"children":714},{"name":713},"VUID-vkCmdBindResourceHeapEXT-pBindInfo-parameter",[715],{"type":22,"tag":23,"props":716,"children":717},{},[718,723,724,727,729,733],{"type":22,"tag":43,"props":719,"children":721},{"className":720},[],[722],{"type":27,"value":248},{"type":27,"value":344},{"type":22,"tag":274,"props":725,"children":726},{"type":315},[],{"type":27,"value":728}," be a valid pointer to a valid ",{"type":22,"tag":252,"props":730,"children":731},{"href":254},[732],{"type":27,"value":257},{"type":27,"value":734}," structure",{"type":22,"tag":387,"props":736,"children":738},{"name":737},"VUID-vkCmdBindResourceHeapEXT-commandBuffer-recording",[739],{"type":22,"tag":23,"props":740,"children":741},{},[742,747,748,751,753],{"type":22,"tag":43,"props":743,"children":745},{"className":744},[],[746],{"type":27,"value":84},{"type":27,"value":344},{"type":22,"tag":274,"props":749,"children":750},{"type":315},[],{"type":27,"value":752}," be in the ",{"type":22,"tag":252,"props":754,"children":756},{"href":755},"/chapters/commandbuffers#commandbuffers-lifecycle",[757],{"type":27,"value":758},"recording state",{"type":22,"tag":387,"props":760,"children":762},{"name":761},"VUID-vkCmdBindResourceHeapEXT-commandBuffer-cmdpool",[763],{"type":22,"tag":23,"props":764,"children":765},{},[766,768,774,776,781,783,786,788,793,795,800],{"type":27,"value":767},"The ",{"type":22,"tag":43,"props":769,"children":771},{"className":770},[],[772],{"type":27,"value":773},"VkCommandPool",{"type":27,"value":775}," that ",{"type":22,"tag":43,"props":777,"children":779},{"className":778},[],[780],{"type":27,"value":84},{"type":27,"value":782}," was allocated from ",{"type":22,"tag":274,"props":784,"children":785},{"type":315},[],{"type":27,"value":787}," support ",{"type":22,"tag":43,"props":789,"children":791},{"className":790},[],[792],{"type":27,"value":13},{"type":27,"value":794},", or ",{"type":22,"tag":43,"props":796,"children":798},{"className":797},[],[799],{"type":27,"value":12},{"type":27,"value":801}," operations",{"type":22,"tag":387,"props":803,"children":805},{"name":804},"VUID-vkCmdBindResourceHeapEXT-videocoding",[806],{"type":22,"tag":23,"props":807,"children":808},{},[809,811,814],{"type":27,"value":810},"This command ",{"type":22,"tag":274,"props":812,"children":813},{"type":315},[],{"type":27,"value":815}," only be called outside of a video coding scope",{"type":22,"tag":817,"props":818,"children":820},"validity-box",{"name":819},"Host Synchronization",[821],{"type":22,"tag":226,"props":822,"children":823},{},[824,840],{"type":22,"tag":230,"props":825,"children":826},{},[827,829,834,835,838],{"type":27,"value":828},"Host access to ",{"type":22,"tag":43,"props":830,"children":832},{"className":831},[],[833],{"type":27,"value":84},{"type":27,"value":344},{"type":22,"tag":274,"props":836,"children":837},{"type":315},[],{"type":27,"value":839}," be externally synchronized",{"type":22,"tag":230,"props":841,"children":842},{},[843,845,850,851,856,857,860],{"type":27,"value":844},"Host access to the ",{"type":22,"tag":43,"props":846,"children":848},{"className":847},[],[849],{"type":27,"value":773},{"type":27,"value":775},{"type":22,"tag":43,"props":852,"children":854},{"className":853},[],[855],{"type":27,"value":84},{"type":27,"value":782},{"type":22,"tag":274,"props":858,"children":859},{"type":315},[],{"type":27,"value":839},{"type":22,"tag":862,"props":863,"children":864},"style",{},[865],{"type":27,"value":866},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":40,"searchDepth":72,"depth":72,"links":868},[],"markdown",1773054787874]