[{"data":1,"prerenderedAt":612},["ShallowReactive",2],{"QuVG4xZuJB":3},{"title":4,"description":5,"parent":6,"type":7,"xrefs":8,"body":9,"_type":611,"_id":4},"vkFreeMemory","Free device memory","VK_VERSION_1_0","protos",[],{"type":10,"children":11,"toc":609},"root",[12,20,282,335,377,390,395,417,444,579,603],{"type":13,"tag":14,"props":15,"children":16},"element","p",{},[17],{"type":18,"value":19},"text","To free a memory object, call:",{"type":13,"tag":21,"props":22,"children":23},"code-group",{},[24,128],{"type":13,"tag":25,"props":26,"children":32},"pre",{"className":27,"code":28,"filename":29,"language":30,"meta":31,"style":31},"language-c shiki shiki-themes github-light-default github-dark-default","void vkFreeMemory(\n VkDevice device,\n VkDeviceMemory memory,\n const VkAllocationCallbacks* pAllocator);\n","C","c","",[33],{"type":13,"tag":34,"props":35,"children":36},"code",{"__ignoreMap":31},[37,61,81,99],{"type":13,"tag":38,"props":39,"children":42},"span",{"class":40,"line":41},"line",1,[43,49,55],{"type":13,"tag":38,"props":44,"children":46},{"style":45},"--shiki-default:#CF222E;--shiki-dark:#FF7B72",[47],{"type":18,"value":48},"void",{"type":13,"tag":38,"props":50,"children":52},{"style":51},"--shiki-default:#8250DF;--shiki-dark:#D2A8FF",[53],{"type":18,"value":54}," vkFreeMemory",{"type":13,"tag":38,"props":56,"children":58},{"style":57},"--shiki-default:#1F2328;--shiki-dark:#E6EDF3",[59],{"type":18,"value":60},"(\n",{"type":13,"tag":38,"props":62,"children":64},{"class":40,"line":63},2,[65,70,76],{"type":13,"tag":38,"props":66,"children":67},{"style":57},[68],{"type":18,"value":69}," VkDevice ",{"type":13,"tag":38,"props":71,"children":73},{"style":72},"--shiki-default:#953800;--shiki-dark:#FFA657",[74],{"type":18,"value":75},"device",{"type":13,"tag":38,"props":77,"children":78},{"style":57},[79],{"type":18,"value":80},",\n",{"type":13,"tag":38,"props":82,"children":84},{"class":40,"line":83},3,[85,90,95],{"type":13,"tag":38,"props":86,"children":87},{"style":57},[88],{"type":18,"value":89}," VkDeviceMemory ",{"type":13,"tag":38,"props":91,"children":92},{"style":72},[93],{"type":18,"value":94},"memory",{"type":13,"tag":38,"props":96,"children":97},{"style":57},[98],{"type":18,"value":80},{"type":13,"tag":38,"props":100,"children":102},{"class":40,"line":101},4,[103,108,113,118,123],{"type":13,"tag":38,"props":104,"children":105},{"style":45},[106],{"type":18,"value":107}," const",{"type":13,"tag":38,"props":109,"children":110},{"style":57},[111],{"type":18,"value":112}," VkAllocationCallbacks",{"type":13,"tag":38,"props":114,"children":115},{"style":45},[116],{"type":18,"value":117},"*",{"type":13,"tag":38,"props":119,"children":120},{"style":72},[121],{"type":18,"value":122}," pAllocator",{"type":13,"tag":38,"props":124,"children":125},{"style":57},[126],{"type":18,"value":127},");\n",{"type":13,"tag":25,"props":129,"children":134},{"className":130,"code":131,"filename":132,"language":133,"meta":31,"style":31},"language-rs shiki shiki-themes github-light-default github-dark-default","pub fn free_memory(\n device: crate :: vk :: vk::Device,\n memory: vk::DeviceMemory,\n p_allocator: *const vk::AllocationCallbacks,\n);\n","Rust","rs",[135],{"type":13,"tag":34,"props":136,"children":137},{"__ignoreMap":31},[138,160,211,240,274],{"type":13,"tag":38,"props":139,"children":140},{"class":40,"line":41},[141,146,151,156],{"type":13,"tag":38,"props":142,"children":143},{"style":45},[144],{"type":18,"value":145},"pub",{"type":13,"tag":38,"props":147,"children":148},{"style":45},[149],{"type":18,"value":150}," fn",{"type":13,"tag":38,"props":152,"children":153},{"style":51},[154],{"type":18,"value":155}," free_memory",{"type":13,"tag":38,"props":157,"children":158},{"style":57},[159],{"type":18,"value":60},{"type":13,"tag":38,"props":161,"children":162},{"class":40,"line":63},[163,168,173,178,183,188,193,198,202,207],{"type":13,"tag":38,"props":164,"children":165},{"style":57},[166],{"type":18,"value":167}," device",{"type":13,"tag":38,"props":169,"children":170},{"style":45},[171],{"type":18,"value":172},":",{"type":13,"tag":38,"props":174,"children":175},{"style":45},[176],{"type":18,"value":177}," crate",{"type":13,"tag":38,"props":179,"children":180},{"style":45},[181],{"type":18,"value":182}," ::",{"type":13,"tag":38,"props":184,"children":185},{"style":57},[186],{"type":18,"value":187}," vk ",{"type":13,"tag":38,"props":189,"children":190},{"style":45},[191],{"type":18,"value":192},"::",{"type":13,"tag":38,"props":194,"children":195},{"style":72},[196],{"type":18,"value":197}," vk",{"type":13,"tag":38,"props":199,"children":200},{"style":45},[201],{"type":18,"value":192},{"type":13,"tag":38,"props":203,"children":204},{"style":72},[205],{"type":18,"value":206},"Device",{"type":13,"tag":38,"props":208,"children":209},{"style":57},[210],{"type":18,"value":80},{"type":13,"tag":38,"props":212,"children":213},{"class":40,"line":83},[214,219,223,227,231,236],{"type":13,"tag":38,"props":215,"children":216},{"style":57},[217],{"type":18,"value":218}," memory",{"type":13,"tag":38,"props":220,"children":221},{"style":45},[222],{"type":18,"value":172},{"type":13,"tag":38,"props":224,"children":225},{"style":72},[226],{"type":18,"value":197},{"type":13,"tag":38,"props":228,"children":229},{"style":45},[230],{"type":18,"value":192},{"type":13,"tag":38,"props":232,"children":233},{"style":72},[234],{"type":18,"value":235},"DeviceMemory",{"type":13,"tag":38,"props":237,"children":238},{"style":57},[239],{"type":18,"value":80},{"type":13,"tag":38,"props":241,"children":242},{"class":40,"line":101},[243,248,252,257,261,265,270],{"type":13,"tag":38,"props":244,"children":245},{"style":57},[246],{"type":18,"value":247}," p_allocator",{"type":13,"tag":38,"props":249,"children":250},{"style":45},[251],{"type":18,"value":172},{"type":13,"tag":38,"props":253,"children":254},{"style":45},[255],{"type":18,"value":256}," *const",{"type":13,"tag":38,"props":258,"children":259},{"style":72},[260],{"type":18,"value":197},{"type":13,"tag":38,"props":262,"children":263},{"style":45},[264],{"type":18,"value":192},{"type":13,"tag":38,"props":266,"children":267},{"style":72},[268],{"type":18,"value":269},"AllocationCallbacks",{"type":13,"tag":38,"props":271,"children":272},{"style":57},[273],{"type":18,"value":80},{"type":13,"tag":38,"props":275,"children":277},{"class":40,"line":276},5,[278],{"type":13,"tag":38,"props":279,"children":280},{"style":57},[281],{"type":18,"value":127},{"type":13,"tag":283,"props":284,"children":285},"ul",{},[286,297,316],{"type":13,"tag":287,"props":288,"children":289},"li",{},[290,295],{"type":13,"tag":34,"props":291,"children":293},{"className":292},[],[294],{"type":18,"value":75},{"type":18,"value":296}," is the logical device that owns the memory.",{"type":13,"tag":287,"props":298,"children":299},{},[300,305,307,314],{"type":13,"tag":34,"props":301,"children":303},{"className":302},[],[304],{"type":18,"value":94},{"type":18,"value":306}," is the ",{"type":13,"tag":308,"props":309,"children":311},"a",{"href":310},"/man/VkDeviceMemory",[312],{"type":18,"value":313},"VkDeviceMemory",{"type":18,"value":315}," object to be freed.",{"type":13,"tag":287,"props":317,"children":318},{},[319,325,327,333],{"type":13,"tag":34,"props":320,"children":322},{"className":321},[],[323],{"type":18,"value":324},"pAllocator",{"type":18,"value":326}," controls host memory allocation as described in the\n",{"type":13,"tag":308,"props":328,"children":330},{"href":329},"/chapters/memory#memory-allocation",[331],{"type":18,"value":332},"Memory Allocation",{"type":18,"value":334}," chapter.",{"type":13,"tag":14,"props":336,"children":337},{},[338,340,345,347,353,355,359,361,364,366,370,372,375],{"type":18,"value":339},"Before freeing a memory object, an application ",{"type":13,"tag":341,"props":342,"children":344},"normative",{"type":343},"must",[],{"type":18,"value":346}," ensure the memory\nobject is no longer in use by the device — for example by command buffers\nin the ",{"type":13,"tag":348,"props":349,"children":350},"em",{},[351],{"type":18,"value":352},"pending state",{"type":18,"value":354},".\nMemory ",{"type":13,"tag":341,"props":356,"children":358},{"type":357},"can",[],{"type":18,"value":360}," be freed whilst still bound to resources, but those resources\n",{"type":13,"tag":341,"props":362,"children":363},{"type":343},[],{"type":18,"value":365}," not be used afterwards.\nFreeing a memory object releases the reference it held, if any, to its\npayload.\nIf there are still any bound images or buffers, the memory object’s payload\n",{"type":13,"tag":341,"props":367,"children":369},{"type":368},"may",[],{"type":18,"value":371}," not be immediately released by the implementation, but ",{"type":13,"tag":341,"props":373,"children":374},{"type":343},[],{"type":18,"value":376}," be\nreleased by the time all bound images and buffers have been destroyed.\nOnce all references to a payload are released, it is returned to the heap\nfrom which it was allocated.",{"type":13,"tag":14,"props":378,"children":379},{},[380,382,388],{"type":18,"value":381},"How memory objects are bound to Images and Buffers is described in detail in\nthe ",{"type":13,"tag":308,"props":383,"children":385},{"href":384},"/chapters/resources#resources-association",[386],{"type":18,"value":387},"Resource Memory Association",{"type":18,"value":389}," section.",{"type":13,"tag":14,"props":391,"children":392},{},[393],{"type":18,"value":394},"If a memory object is mapped at the time it is freed, it is implicitly\nunmapped.",{"type":13,"tag":396,"props":397,"children":398},"note",{},[399],{"type":13,"tag":14,"props":400,"children":401},{},[402,404,410,412,415],{"type":18,"value":403},"As described ",{"type":13,"tag":308,"props":405,"children":407},{"href":406},"/man/vkFlushMappedMemoryRanges#memory-device-unmap-does-not-flush",[408],{"type":18,"value":409},"below",{"type":18,"value":411},", host writes are\nnot implicitly flushed when the memory object is unmapped, but the\nimplementation ",{"type":13,"tag":341,"props":413,"children":414},{"type":343},[],{"type":18,"value":416}," guarantee that writes that have not been flushed do not\naffect any other memory.",{"type":13,"tag":418,"props":419,"children":421},"validity-group",{"name":420},"Valid Usage",[422],{"type":13,"tag":423,"props":424,"children":426},"validity-field",{"name":425},"VUID-vkFreeMemory-memory-00677",[427],{"type":13,"tag":14,"props":428,"children":429},{},[430,432,437,439,442],{"type":18,"value":431},"All submitted commands that refer to ",{"type":13,"tag":34,"props":433,"children":435},{"className":434},[],[436],{"type":18,"value":94},{"type":18,"value":438}," (via images or\nbuffers) ",{"type":13,"tag":341,"props":440,"children":441},{"type":343},[],{"type":18,"value":443}," have completed execution",{"type":13,"tag":418,"props":445,"children":447},{"name":446},"Valid Usage (Implicit)",[448,475,514,554],{"type":13,"tag":423,"props":449,"children":451},{"name":450},"VUID-vkFreeMemory-device-parameter",[452],{"type":13,"tag":14,"props":453,"children":454},{},[455,460,462,465,467,473],{"type":13,"tag":34,"props":456,"children":458},{"className":457},[],[459],{"type":18,"value":75},{"type":18,"value":461}," ",{"type":13,"tag":341,"props":463,"children":464},{"type":343},[],{"type":18,"value":466}," be a valid ",{"type":13,"tag":308,"props":468,"children":470},{"href":469},"/man/VkDevice",[471],{"type":18,"value":472},"VkDevice",{"type":18,"value":474}," handle",{"type":13,"tag":423,"props":476,"children":478},{"name":477},"VUID-vkFreeMemory-memory-parameter",[479],{"type":13,"tag":14,"props":480,"children":481},{},[482,484,489,491,497,499,504,505,508,509,513],{"type":18,"value":483},"If ",{"type":13,"tag":34,"props":485,"children":487},{"className":486},[],[488],{"type":18,"value":94},{"type":18,"value":490}," is not ",{"type":13,"tag":308,"props":492,"children":494},{"href":493},"/man/VK_NULL_HANDLE",[495],{"type":18,"value":496},"VK_NULL_HANDLE",{"type":18,"value":498},", ",{"type":13,"tag":34,"props":500,"children":502},{"className":501},[],[503],{"type":18,"value":94},{"type":18,"value":461},{"type":13,"tag":341,"props":506,"children":507},{"type":343},[],{"type":18,"value":466},{"type":13,"tag":308,"props":510,"children":511},{"href":310},[512],{"type":18,"value":313},{"type":18,"value":474},{"type":13,"tag":423,"props":515,"children":517},{"name":516},"VUID-vkFreeMemory-pAllocator-parameter",[518],{"type":13,"tag":14,"props":519,"children":520},{},[521,522,527,528,534,535,540,541,544,546,552],{"type":18,"value":483},{"type":13,"tag":34,"props":523,"children":525},{"className":524},[],[526],{"type":18,"value":324},{"type":18,"value":490},{"type":13,"tag":34,"props":529,"children":531},{"className":530},[],[532],{"type":18,"value":533},"NULL",{"type":18,"value":498},{"type":13,"tag":34,"props":536,"children":538},{"className":537},[],[539],{"type":18,"value":324},{"type":18,"value":461},{"type":13,"tag":341,"props":542,"children":543},{"type":343},[],{"type":18,"value":545}," be a valid pointer to a valid ",{"type":13,"tag":308,"props":547,"children":549},{"href":548},"/man/VkAllocationCallbacks",[550],{"type":18,"value":551},"VkAllocationCallbacks",{"type":18,"value":553}," structure",{"type":13,"tag":423,"props":555,"children":557},{"name":556},"VUID-vkFreeMemory-memory-parent",[558],{"type":13,"tag":14,"props":559,"children":560},{},[561,562,567,569,572,574],{"type":18,"value":483},{"type":13,"tag":34,"props":563,"children":565},{"className":564},[],[566],{"type":18,"value":94},{"type":18,"value":568}," is a valid handle, it ",{"type":13,"tag":341,"props":570,"children":571},{"type":343},[],{"type":18,"value":573}," have been created, allocated, or retrieved from ",{"type":13,"tag":34,"props":575,"children":577},{"className":576},[],[578],{"type":18,"value":75},{"type":13,"tag":580,"props":581,"children":583},"validity-box",{"name":582},"Host Synchronization",[584],{"type":13,"tag":283,"props":585,"children":586},{},[587],{"type":13,"tag":287,"props":588,"children":589},{},[590,592,597,598,601],{"type":18,"value":591},"Host access to ",{"type":13,"tag":34,"props":593,"children":595},{"className":594},[],[596],{"type":18,"value":94},{"type":18,"value":461},{"type":13,"tag":341,"props":599,"children":600},{"type":343},[],{"type":18,"value":602}," be externally synchronized\n::",{"type":13,"tag":604,"props":605,"children":606},"style",{},[607],{"type":18,"value":608},"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":31,"searchDepth":63,"depth":63,"links":610},[],"markdown",1725732616518]