• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (C) 2025 The Android Open Source Project
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #include "VulkanBoxedHandles.h"
16 
17 #include "VkDecoderGlobalState.h"
18 #include "VkDecoderInternalStructs.h"
19 
20 namespace gfxstream {
21 namespace vk {
22 namespace {
23 
24 struct ReadStreamRegistry {
25     android::base::Lock mLock;
26 
27     std::vector<VulkanMemReadingStream*> freeStreams;
28 
ReadStreamRegistrygfxstream::vk::__anond369c7fe0111::ReadStreamRegistry29     ReadStreamRegistry() { freeStreams.reserve(100); };
30 
popgfxstream::vk::__anond369c7fe0111::ReadStreamRegistry31     VulkanMemReadingStream* pop(const gfxstream::host::FeatureSet& features) {
32         android::base::AutoLock lock(mLock);
33         if (freeStreams.empty()) {
34             return new VulkanMemReadingStream(nullptr, features);
35         } else {
36             VulkanMemReadingStream* res = freeStreams.back();
37             freeStreams.pop_back();
38             return res;
39         }
40     }
41 
pushgfxstream::vk::__anond369c7fe0111::ReadStreamRegistry42     void push(VulkanMemReadingStream* stream) {
43         android::base::AutoLock lock(mLock);
44         freeStreams.push_back(stream);
45     }
46 };
47 
48 static ReadStreamRegistry sReadStreamRegistry;
49 
50 }  // namespace
51 
replayHandles(std::vector<BoxedHandle> handles)52 void BoxedHandleManager::replayHandles(std::vector<BoxedHandle> handles) {
53     mHandleReplay = true;
54     mHandleReplayQueue.clear();
55     for (BoxedHandle handle : handles) {
56         mHandleReplayQueue.push_back(handle);
57     }
58 }
59 
clear()60 void BoxedHandleManager::clear() {
61     std::lock_guard<std::mutex> lock(mMutex);
62     mReverseMap.clear();
63     mStore.clear();
64 }
65 
add(const BoxedHandleInfo & item,BoxedHandleTypeTag tag)66 BoxedHandle BoxedHandleManager::add(const BoxedHandleInfo& item, BoxedHandleTypeTag tag) {
67     BoxedHandle handle;
68 
69     if (mHandleReplay) {
70         handle = mHandleReplayQueue.front();
71         mHandleReplayQueue.pop_front();
72         mHandleReplay = !mHandleReplayQueue.empty();
73 
74         handle = (BoxedHandle)mStore.addFixed(handle, item, (size_t)tag);
75     } else {
76         handle = (BoxedHandle)mStore.add(item, (size_t)tag);
77     }
78 
79     std::lock_guard<std::mutex> lock(mMutex);
80     mReverseMap[(BoxedHandle)(item.underlying)] = handle;
81     return handle;
82 }
83 
update(BoxedHandle handle,const BoxedHandleInfo & item,BoxedHandleTypeTag tag)84 void BoxedHandleManager::update(BoxedHandle handle, const BoxedHandleInfo& item,
85                                 BoxedHandleTypeTag tag) {
86     auto storedItem = mStore.get(handle);
87     UnboxedHandle oldHandle = (UnboxedHandle)storedItem->underlying;
88     *storedItem = item;
89     std::lock_guard<std::mutex> lock(mMutex);
90     if (oldHandle) {
91         mReverseMap.erase(oldHandle);
92     }
93     mReverseMap[(UnboxedHandle)(item.underlying)] = handle;
94 }
95 
remove(BoxedHandle h)96 void BoxedHandleManager::remove(BoxedHandle h) {
97     auto item = get(h);
98     if (item) {
99         std::lock_guard<std::mutex> lock(mMutex);
100         mReverseMap.erase((UnboxedHandle)(item->underlying));
101     }
102     mStore.remove(h);
103 }
104 
removeDelayed(uint64_t h,VkDevice device,std::function<void ()> callback)105 void BoxedHandleManager::removeDelayed(uint64_t h, VkDevice device,
106                                        std::function<void()> callback) {
107     std::lock_guard<std::mutex> lock(mMutex);
108     mDelayedRemoves[device].push_back({h, callback});
109 }
110 
processDelayedRemoves(VkDevice device)111 void BoxedHandleManager::processDelayedRemoves(VkDevice device) {
112     std::vector<DelayedRemove> deviceDelayedRemoves;
113 
114     {
115         std::lock_guard<std::mutex> lock(mMutex);
116 
117         auto it = mDelayedRemoves.find(device);
118         if (it == mDelayedRemoves.end()) return;
119 
120         deviceDelayedRemoves = std::move(it->second);
121         mDelayedRemoves.erase(it);
122     }
123 
124     for (const auto& r : deviceDelayedRemoves) {
125         auto h = r.handle;
126 
127         // VkDecoderGlobalState is not locked when callback is called.
128         if (r.callback) {
129             r.callback();
130         }
131 
132         mStore.remove(h);
133     }
134 }
135 
get(BoxedHandle handle)136 BoxedHandleInfo* BoxedHandleManager::get(BoxedHandle handle) {
137     return (BoxedHandleInfo*)mStore.get_const(handle);
138 }
139 
getBoxedFromUnboxed(UnboxedHandle unboxed)140 BoxedHandle BoxedHandleManager::getBoxedFromUnboxed(UnboxedHandle unboxed) {
141     std::lock_guard<std::mutex> lock(mMutex);
142 
143     auto it = mReverseMap.find(unboxed);
144     if (it == mReverseMap.end()) {
145         return 0;
146     }
147 
148     return it->second;
149 }
150 
151 BoxedHandleManager sBoxedHandleManager;
152 
153 template <typename VkObjectT>
GetTag()154 constexpr BoxedHandleTypeTag GetTag() {
155     if constexpr (std::is_same_v<VkObjectT, VkAccelerationStructureKHR>) {
156         return Tag_VkAccelerationStructureKHR;
157     } else if constexpr (std::is_same_v<VkObjectT, VkAccelerationStructureNV>) {
158         return Tag_VkAccelerationStructureNV;
159     } else if constexpr (std::is_same_v<VkObjectT, VkBuffer>) {
160         return Tag_VkBuffer;
161     } else if constexpr (std::is_same_v<VkObjectT, VkBufferView>) {
162         return Tag_VkBufferView;
163     } else if constexpr (std::is_same_v<VkObjectT, VkCommandBuffer>) {
164         return Tag_VkCommandBuffer;
165     } else if constexpr (std::is_same_v<VkObjectT, VkCommandPool>) {
166         return Tag_VkCommandPool;
167     } else if constexpr (std::is_same_v<VkObjectT, VkCuFunctionNVX>) {
168         return Tag_VkCuFunctionNVX;
169     } else if constexpr (std::is_same_v<VkObjectT, VkCuModuleNVX>) {
170         return Tag_VkCuModuleNVX;
171     } else if constexpr (std::is_same_v<VkObjectT, VkDebugReportCallbackEXT>) {
172         return Tag_VkDebugReportCallbackEXT;
173     } else if constexpr (std::is_same_v<VkObjectT, VkDebugUtilsMessengerEXT>) {
174         return Tag_VkDebugUtilsMessengerEXT;
175     } else if constexpr (std::is_same_v<VkObjectT, VkDescriptorPool>) {
176         return Tag_VkDescriptorPool;
177     } else if constexpr (std::is_same_v<VkObjectT, VkDescriptorSet>) {
178         return Tag_VkDescriptorSet;
179     } else if constexpr (std::is_same_v<VkObjectT, VkDescriptorSetLayout>) {
180         return Tag_VkDescriptorSetLayout;
181     } else if constexpr (std::is_same_v<VkObjectT, VkDescriptorUpdateTemplate>) {
182         return Tag_VkDescriptorUpdateTemplate;
183     } else if constexpr (std::is_same_v<VkObjectT, VkDevice>) {
184         return Tag_VkDevice;
185     } else if constexpr (std::is_same_v<VkObjectT, VkDeviceMemory>) {
186         return Tag_VkDeviceMemory;
187     } else if constexpr (std::is_same_v<VkObjectT, VkDisplayKHR>) {
188         return Tag_VkDisplayKHR;
189     } else if constexpr (std::is_same_v<VkObjectT, VkDisplayModeKHR>) {
190         return Tag_VkDisplayModeKHR;
191     } else if constexpr (std::is_same_v<VkObjectT, VkEvent>) {
192         return Tag_VkEvent;
193     } else if constexpr (std::is_same_v<VkObjectT, VkFence>) {
194         return Tag_VkFence;
195     } else if constexpr (std::is_same_v<VkObjectT, VkFramebuffer>) {
196         return Tag_VkFramebuffer;
197     } else if constexpr (std::is_same_v<VkObjectT, VkImage>) {
198         return Tag_VkImage;
199     } else if constexpr (std::is_same_v<VkObjectT, VkImageView>) {
200         return Tag_VkImageView;
201     } else if constexpr (std::is_same_v<VkObjectT, VkIndirectCommandsLayoutNV>) {
202         return Tag_VkIndirectCommandsLayoutNV;
203     } else if constexpr (std::is_same_v<VkObjectT, VkInstance>) {
204         return Tag_VkInstance;
205     } else if constexpr (std::is_same_v<VkObjectT, VkMicromapEXT>) {
206         return Tag_VkMicromapEXT;
207     } else if constexpr (std::is_same_v<VkObjectT, VkPhysicalDevice>) {
208         return Tag_VkPhysicalDevice;
209     } else if constexpr (std::is_same_v<VkObjectT, VkPipeline>) {
210         return Tag_VkPipeline;
211     } else if constexpr (std::is_same_v<VkObjectT, VkPipelineCache>) {
212         return Tag_VkPipelineCache;
213     } else if constexpr (std::is_same_v<VkObjectT, VkPipelineLayout>) {
214         return Tag_VkPipelineLayout;
215     } else if constexpr (std::is_same_v<VkObjectT, VkPrivateDataSlot>) {
216         return Tag_VkPrivateDataSlot;
217     } else if constexpr (std::is_same_v<VkObjectT, VkQueryPool>) {
218         return Tag_VkQueryPool;
219     } else if constexpr (std::is_same_v<VkObjectT, VkQueue>) {
220         return Tag_VkQueue;
221     } else if constexpr (std::is_same_v<VkObjectT, VkRenderPass>) {
222         return Tag_VkRenderPass;
223     } else if constexpr (std::is_same_v<VkObjectT, VkSampler>) {
224         return Tag_VkSampler;
225     } else if constexpr (std::is_same_v<VkObjectT, VkSamplerYcbcrConversion>) {
226         return Tag_VkSamplerYcbcrConversion;
227     } else if constexpr (std::is_same_v<VkObjectT, VkSemaphore>) {
228         return Tag_VkSemaphore;
229     } else if constexpr (std::is_same_v<VkObjectT, VkShaderModule>) {
230         return Tag_VkShaderModule;
231     } else if constexpr (std::is_same_v<VkObjectT, VkSurfaceKHR>) {
232         return Tag_VkSurfaceKHR;
233     } else if constexpr (std::is_same_v<VkObjectT, VkSwapchainKHR>) {
234         return Tag_VkSwapchainKHR;
235     } else if constexpr (std::is_same_v<VkObjectT, VkValidationCacheEXT>) {
236         return Tag_VkValidationCacheEXT;
237     } else {
238         static_assert(sizeof(VkObjectT) == 0,
239                       "Unhandled VkObjectT. Please update BoxedHandleTypeTag.");
240     }
241 }
242 
243 template <typename VkObjectT>
GetTypeStr()244 constexpr const char* GetTypeStr() {
245     if constexpr (std::is_same_v<VkObjectT, VkAccelerationStructureKHR>) {
246         return "VkAccelerationStructureKHR";
247     } else if constexpr (std::is_same_v<VkObjectT, VkAccelerationStructureNV>) {
248         return "VkAccelerationStructureNV";
249     } else if constexpr (std::is_same_v<VkObjectT, VkBuffer>) {
250         return "VkBuffer";
251     } else if constexpr (std::is_same_v<VkObjectT, VkBufferView>) {
252         return "VkBufferView";
253     } else if constexpr (std::is_same_v<VkObjectT, VkCommandBuffer>) {
254         return "VkCommandBuffer";
255     } else if constexpr (std::is_same_v<VkObjectT, VkCommandPool>) {
256         return "VkCommandPool";
257     } else if constexpr (std::is_same_v<VkObjectT, VkCuFunctionNVX>) {
258         return "VkCuFunctionNVX";
259     } else if constexpr (std::is_same_v<VkObjectT, VkCuModuleNVX>) {
260         return "VkCuModuleNVX";
261     } else if constexpr (std::is_same_v<VkObjectT, VkDebugReportCallbackEXT>) {
262         return "VkDebugReportCallbackEXT";
263     } else if constexpr (std::is_same_v<VkObjectT, VkDebugUtilsMessengerEXT>) {
264         return "VkDebugUtilsMessengerEXT";
265     } else if constexpr (std::is_same_v<VkObjectT, VkDescriptorPool>) {
266         return "VkDescriptorPool";
267     } else if constexpr (std::is_same_v<VkObjectT, VkDescriptorSet>) {
268         return "VkDescriptorSet";
269     } else if constexpr (std::is_same_v<VkObjectT, VkDescriptorSetLayout>) {
270         return "VkDescriptorSetLayout";
271     } else if constexpr (std::is_same_v<VkObjectT, VkDescriptorUpdateTemplate>) {
272         return "VkDescriptorUpdateTemplate";
273     } else if constexpr (std::is_same_v<VkObjectT, VkDevice>) {
274         return "VkDevice";
275     } else if constexpr (std::is_same_v<VkObjectT, VkDeviceMemory>) {
276         return "VkDeviceMemory";
277     } else if constexpr (std::is_same_v<VkObjectT, VkDisplayKHR>) {
278         return "VkDisplayKHR";
279     } else if constexpr (std::is_same_v<VkObjectT, VkDisplayModeKHR>) {
280         return "VkDisplayModeKHR";
281     } else if constexpr (std::is_same_v<VkObjectT, VkEvent>) {
282         return "VkEvent";
283     } else if constexpr (std::is_same_v<VkObjectT, VkFence>) {
284         return "VkFence";
285     } else if constexpr (std::is_same_v<VkObjectT, VkFramebuffer>) {
286         return "VkFramebuffer";
287     } else if constexpr (std::is_same_v<VkObjectT, VkImage>) {
288         return "VkImage";
289     } else if constexpr (std::is_same_v<VkObjectT, VkImageView>) {
290         return "VkImageView";
291     } else if constexpr (std::is_same_v<VkObjectT, VkIndirectCommandsLayoutNV>) {
292         return "VkIndirectCommandsLayoutNV";
293     } else if constexpr (std::is_same_v<VkObjectT, VkInstance>) {
294         return "VkInstance";
295     } else if constexpr (std::is_same_v<VkObjectT, VkMicromapEXT>) {
296         return "VkMicromapEXT";
297     } else if constexpr (std::is_same_v<VkObjectT, VkPhysicalDevice>) {
298         return "VkPhysicalDevice";
299     } else if constexpr (std::is_same_v<VkObjectT, VkPipeline>) {
300         return "VkPipeline";
301     } else if constexpr (std::is_same_v<VkObjectT, VkPipelineCache>) {
302         return "VkPipelineCache";
303     } else if constexpr (std::is_same_v<VkObjectT, VkPipelineLayout>) {
304         return "VkPipelineLayout";
305     } else if constexpr (std::is_same_v<VkObjectT, VkPrivateDataSlot>) {
306         return "VkPrivateDataSlot";
307     } else if constexpr (std::is_same_v<VkObjectT, VkQueryPool>) {
308         return "VkQueryPool";
309     } else if constexpr (std::is_same_v<VkObjectT, VkQueue>) {
310         return "VkQueue";
311     } else if constexpr (std::is_same_v<VkObjectT, VkRenderPass>) {
312         return "VkRenderPass";
313     } else if constexpr (std::is_same_v<VkObjectT, VkSampler>) {
314         return "VkSampler";
315     } else if constexpr (std::is_same_v<VkObjectT, VkSamplerYcbcrConversion>) {
316         return "VkSamplerYcbcrConversion";
317     } else if constexpr (std::is_same_v<VkObjectT, VkSemaphore>) {
318         return "VkSemaphore";
319     } else if constexpr (std::is_same_v<VkObjectT, VkShaderModule>) {
320         return "VkShaderModule";
321     } else if constexpr (std::is_same_v<VkObjectT, VkSurfaceKHR>) {
322         return "VkSurfaceKHR";
323     } else if constexpr (std::is_same_v<VkObjectT, VkSwapchainKHR>) {
324         return "VkSwapchainKHR";
325     } else if constexpr (std::is_same_v<VkObjectT, VkValidationCacheEXT>) {
326         return "VkValidationCacheEXT";
327     } else {
328         static_assert(sizeof(VkObjectT) == 0,
329                       "Unhandled VkObjectT. Please update BoxedHandleTypeTag.");
330     }
331 }
332 
333 template <typename VkObjectT>
new_boxed_VkType(VkObjectT underlying,bool dispatchable=false,VulkanDispatch * dispatch=nullptr,bool ownsDispatch=false)334 VkObjectT new_boxed_VkType(VkObjectT underlying, bool dispatchable = false, VulkanDispatch* dispatch = nullptr, bool ownsDispatch = false) {
335     BoxedHandleInfo info;
336     info.underlying = (uint64_t)underlying;
337     if (dispatchable) {
338         if (dispatch != nullptr) {
339             info.dispatch = dispatch;
340         } else {
341             info.dispatch = new VulkanDispatch();
342         }
343         info.ownDispatch = ownsDispatch;
344         info.ordMaintInfo = new OrderMaintenanceInfo();
345         info.readStream = nullptr;
346     }
347     return (VkObjectT)sBoxedHandleManager.add(info, GetTag<VkObjectT>());
348 }
349 
350 template <typename VkObjectT>
delete_VkType(VkObjectT boxed)351 void delete_VkType(VkObjectT boxed) {
352     if (boxed == VK_NULL_HANDLE) {
353         return;
354     }
355 
356     BoxedHandleInfo* info = sBoxedHandleManager.get((uint64_t)(uintptr_t)boxed);
357     if (info == nullptr) {
358         return;
359     }
360 
361     releaseOrderMaintInfo(info->ordMaintInfo);
362 
363     if (info->readStream) {
364         sReadStreamRegistry.push(info->readStream);
365         info->readStream = nullptr;
366     }
367 
368     sBoxedHandleManager.remove((uint64_t)boxed);
369 }
370 
371 template <typename VkObjectT>
delayed_delete_VkType(VkObjectT boxed,VkDevice device,std::function<void ()> callback)372 void delayed_delete_VkType(VkObjectT boxed, VkDevice device, std::function<void()> callback) {
373     if (boxed == VK_NULL_HANDLE) {
374         return;
375     }
376 
377     sBoxedHandleManager.removeDelayed((uint64_t)boxed, device, std::move(callback));
378 }
379 
380 // Custom unbox_* functions or GOLDFISH_VK_LIST_DISPATCHABLE_CUSTOM_UNBOX_HANDLE_TYPES
381 // VkQueue objects can be virtual, meaning that multiple boxed queues can map into a single
382 // physical queue on the host GPU. Some conversion is needed for unboxing to physical.
unbox_VkQueueImpl(VkQueue boxed)383 VkQueue unbox_VkQueueImpl(VkQueue boxed) {
384     BoxedHandleInfo* info = sBoxedHandleManager.get((uint64_t)(uintptr_t)boxed);
385     if (!info) {
386         return VK_NULL_HANDLE;
387     }
388     const uint64_t unboxedQueue64 = info->underlying;
389 
390     // Use VulkanVirtualQueue directly to avoid locking for hasVirtualGraphicsQueue call.
391     if (VkDecoderGlobalState::get()->getFeatures().VulkanVirtualQueue.enabled) {
392         // Clear virtual bit and unbox into the actual physical queue handle
393         return (VkQueue)(unboxedQueue64 & ~QueueInfo::kVirtualQueueBit);
394     }
395 
396     return (VkQueue)(unboxedQueue64);
397 }
398 
399 template <typename VkObjectT>
unbox_VkType(VkObjectT boxed)400 VkObjectT unbox_VkType(VkObjectT boxed) {
401     if (boxed == VK_NULL_HANDLE) {
402         return VK_NULL_HANDLE;
403     }
404 
405     VkObjectT unboxed = VK_NULL_HANDLE;
406 
407     if constexpr (std::is_same_v<VkObjectT, VkQueue>) {
408         unboxed = unbox_VkQueueImpl(boxed);
409     } else {
410         BoxedHandleInfo* info = sBoxedHandleManager.get((uint64_t)(uintptr_t)boxed);
411         if (info == nullptr) {
412             if constexpr (std::is_same_v<VkObjectT, VkCommandBuffer> ||
413                           std::is_same_v<VkObjectT, VkDevice> ||
414                           std::is_same_v<VkObjectT, VkInstance> ||
415                           std::is_same_v<VkObjectT, VkPhysicalDevice> ||
416                           std::is_same_v<VkObjectT, VkQueue>) {
417                 ERR("Failed to unbox %s %p", GetTypeStr<VkObjectT>(), boxed);
418             } else if constexpr (std::is_same_v<VkObjectT, VkFence>) {
419                 // TODO: investigate.
420             } else {
421                 GFXSTREAM_ABORT(FatalError(ABORT_REASON_OTHER))
422                         << "Failed to unbox "
423                         << GetTypeStr<VkObjectT>()
424                         << " "
425                         << boxed
426                         << ", not found.";
427             }
428             unboxed = VK_NULL_HANDLE;
429         } else {
430             unboxed = (VkObjectT)info->underlying;
431         }
432     }
433 
434     return unboxed;
435 }
436 
437 template <typename VkObjectT>
try_unbox_VkType(VkObjectT boxed)438 VkObjectT try_unbox_VkType(VkObjectT boxed) {
439     if (boxed == VK_NULL_HANDLE) {
440         return VK_NULL_HANDLE;
441     }
442 
443     VkObjectT unboxed = VK_NULL_HANDLE;
444 
445     if constexpr (std::is_same_v<VkObjectT, VkQueue>) {
446         unboxed = unbox_VkQueueImpl(boxed);
447     } else {
448         BoxedHandleInfo* info = sBoxedHandleManager.get((uint64_t)(uintptr_t)boxed);
449         if (info != nullptr) {
450             unboxed = (VkObjectT)info->underlying;
451         }
452     }
453 
454     if (unboxed == VK_NULL_HANDLE) {
455         WARN("Failed to try unbox %s %p", GetTypeStr<VkObjectT>(), boxed);
456     }
457 
458     return unboxed;
459 }
460 
461 template <typename VkObjectT>
unboxed_to_boxed_non_dispatchable_VkType(VkObjectT unboxed)462 VkObjectT unboxed_to_boxed_non_dispatchable_VkType(VkObjectT unboxed) {
463     if (unboxed == VK_NULL_HANDLE) {
464         return VK_NULL_HANDLE;
465     }
466 
467     return (VkObjectT)sBoxedHandleManager.getBoxedFromUnboxed((uint64_t)(uintptr_t)unboxed);
468 }
469 
470 template <typename VkObjectT>
set_boxed_non_dispatchable_VkType(VkObjectT boxed,VkObjectT new_unboxed)471 void set_boxed_non_dispatchable_VkType(VkObjectT boxed, VkObjectT new_unboxed) {
472     BoxedHandleInfo info;
473     info.underlying = (uint64_t)new_unboxed;
474     sBoxedHandleManager.update((uint64_t)boxed, info, GetTag<VkObjectT>());
475 }
476 
477 template <typename VkObjectT>
get_order_maintenance_info_VkType(VkObjectT boxed)478 OrderMaintenanceInfo* get_order_maintenance_info_VkType(VkObjectT boxed) {
479     BoxedHandleInfo* info = sBoxedHandleManager.get((uint64_t)(uintptr_t)boxed);
480     if (info == nullptr) {
481         return nullptr;
482     }
483 
484     if (info->ordMaintInfo == nullptr) {
485         return nullptr;
486     }
487 
488     acquireOrderMaintInfo(info->ordMaintInfo);
489 
490     return info->ordMaintInfo;
491 }
492 
493 template <typename VkObjectT>
get_read_stream_VkType(VkObjectT boxed)494 VulkanMemReadingStream* get_read_stream_VkType(VkObjectT boxed) {
495     BoxedHandleInfo* info = sBoxedHandleManager.get((uint64_t)(uintptr_t)boxed);
496     if (info == nullptr) {
497         return nullptr;
498     }
499 
500     if (info->readStream == nullptr) {
501         info->readStream = sReadStreamRegistry.pop(VkDecoderGlobalState::get()->getFeatures());
502     }
503 
504     return info->readStream;
505 }
506 
507 template <typename VkObjectT>
get_dispatch_VkType(VkObjectT boxed)508 VulkanDispatch* get_dispatch_VkType(VkObjectT boxed) {
509     BoxedHandleInfo* info = sBoxedHandleManager.get((uint64_t)(uintptr_t)boxed);
510     if (info == nullptr) {
511         ERR("Failed to unbox %s %p", GetTypeStr<VkObjectT>(), boxed);
512         return nullptr;
513     }
514     return info->dispatch;
515 }
516 
517 ///////////////////////////////////////////////////////////////////////////////
518 //////////////             DISPATCHABLE TYPES                    //////////////
519 ///////////////////////////////////////////////////////////////////////////////
520 
new_boxed_VkInstance(VkInstance unboxed,VulkanDispatch * dispatch,bool ownsDispatch)521 VkInstance new_boxed_VkInstance(VkInstance unboxed, VulkanDispatch* dispatch, bool ownsDispatch) {
522     return new_boxed_VkType<VkInstance>(unboxed, /*dispatchable=*/true, dispatch, ownsDispatch);
523 }
524 
delete_VkInstance(VkInstance boxed)525 void delete_VkInstance(VkInstance boxed) {
526     delete_VkType(boxed);
527 }
528 
unbox_VkInstance(VkInstance boxed)529 VkInstance unbox_VkInstance(VkInstance boxed) {
530     return unbox_VkType<VkInstance>(boxed);
531 }
532 
try_unbox_VkInstance(VkInstance boxed)533 VkInstance try_unbox_VkInstance(VkInstance boxed) {
534     return try_unbox_VkType<VkInstance>(boxed);
535 }
536 
unboxed_to_boxed_VkInstance(VkInstance unboxed)537 VkInstance unboxed_to_boxed_VkInstance(VkInstance unboxed) {
538     return unboxed_to_boxed_non_dispatchable_VkType<VkInstance>(unboxed);
539 }
540 
ordmaint_VkInstance(VkInstance boxed)541 OrderMaintenanceInfo* ordmaint_VkInstance(VkInstance boxed) {
542     return get_order_maintenance_info_VkType<VkInstance>(boxed);
543 }
544 
readstream_VkInstance(VkInstance boxed)545 VulkanMemReadingStream* readstream_VkInstance(VkInstance boxed) {
546     return get_read_stream_VkType<VkInstance>(boxed);
547 }
548 
dispatch_VkInstance(VkInstance boxed)549 VulkanDispatch* dispatch_VkInstance(VkInstance boxed) {
550     return get_dispatch_VkType<VkInstance>(boxed);
551 }
552 
new_boxed_VkPhysicalDevice(VkPhysicalDevice unboxed,VulkanDispatch * dispatch,bool ownsDispatch)553 VkPhysicalDevice new_boxed_VkPhysicalDevice(VkPhysicalDevice unboxed, VulkanDispatch* dispatch, bool ownsDispatch) {
554     return new_boxed_VkType<VkPhysicalDevice>(unboxed, /*dispatchable=*/true, dispatch, ownsDispatch);
555 }
556 
delete_VkPhysicalDevice(VkPhysicalDevice boxed)557 void delete_VkPhysicalDevice(VkPhysicalDevice boxed) {
558     delete_VkType(boxed);
559 }
560 
unbox_VkPhysicalDevice(VkPhysicalDevice boxed)561 VkPhysicalDevice unbox_VkPhysicalDevice(VkPhysicalDevice boxed) {
562     return unbox_VkType<VkPhysicalDevice>(boxed);
563 }
564 
try_unbox_VkPhysicalDevice(VkPhysicalDevice boxed)565 VkPhysicalDevice try_unbox_VkPhysicalDevice(VkPhysicalDevice boxed) {
566     return try_unbox_VkType<VkPhysicalDevice>(boxed);
567 }
568 
unboxed_to_boxed_VkPhysicalDevice(VkPhysicalDevice unboxed)569 VkPhysicalDevice unboxed_to_boxed_VkPhysicalDevice(VkPhysicalDevice unboxed) {
570     return unboxed_to_boxed_non_dispatchable_VkType<VkPhysicalDevice>(unboxed);
571 }
572 
ordmaint_VkPhysicalDevice(VkPhysicalDevice boxed)573 OrderMaintenanceInfo* ordmaint_VkPhysicalDevice(VkPhysicalDevice boxed) {
574     return get_order_maintenance_info_VkType<VkPhysicalDevice>(boxed);
575 }
576 
readstream_VkPhysicalDevice(VkPhysicalDevice boxed)577 VulkanMemReadingStream* readstream_VkPhysicalDevice(VkPhysicalDevice boxed) {
578     return get_read_stream_VkType<VkPhysicalDevice>(boxed);
579 }
580 
dispatch_VkPhysicalDevice(VkPhysicalDevice boxed)581 VulkanDispatch* dispatch_VkPhysicalDevice(VkPhysicalDevice boxed) {
582     return get_dispatch_VkType<VkPhysicalDevice>(boxed);
583 }
584 
new_boxed_VkDevice(VkDevice unboxed,VulkanDispatch * dispatch,bool ownsDispatch)585 VkDevice new_boxed_VkDevice(VkDevice unboxed, VulkanDispatch* dispatch, bool ownsDispatch) {
586     return new_boxed_VkType<VkDevice>(unboxed, /*dispatchable=*/true, dispatch, ownsDispatch);
587 }
588 
delete_VkDevice(VkDevice boxed)589 void delete_VkDevice(VkDevice boxed) {
590     delete_VkType(boxed);
591 }
592 
unbox_VkDevice(VkDevice boxed)593 VkDevice unbox_VkDevice(VkDevice boxed) {
594     return unbox_VkType<VkDevice>(boxed);
595 }
596 
try_unbox_VkDevice(VkDevice boxed)597 VkDevice try_unbox_VkDevice(VkDevice boxed) {
598     return try_unbox_VkType<VkDevice>(boxed);
599 }
600 
unboxed_to_boxed_VkDevice(VkDevice unboxed)601 VkDevice unboxed_to_boxed_VkDevice(VkDevice unboxed) {
602     return unboxed_to_boxed_non_dispatchable_VkType<VkDevice>(unboxed);
603 }
604 
ordmaint_VkDevice(VkDevice boxed)605 OrderMaintenanceInfo* ordmaint_VkDevice(VkDevice boxed) {
606     return get_order_maintenance_info_VkType<VkDevice>(boxed);
607 }
608 
readstream_VkDevice(VkDevice boxed)609 VulkanMemReadingStream* readstream_VkDevice(VkDevice boxed) {
610     return get_read_stream_VkType<VkDevice>(boxed);
611 }
612 
dispatch_VkDevice(VkDevice boxed)613 VulkanDispatch* dispatch_VkDevice(VkDevice boxed) {
614     return get_dispatch_VkType<VkDevice>(boxed);
615 }
616 
new_boxed_VkCommandBuffer(VkCommandBuffer unboxed,VulkanDispatch * dispatch,bool ownsDispatch)617 VkCommandBuffer new_boxed_VkCommandBuffer(VkCommandBuffer unboxed, VulkanDispatch* dispatch, bool ownsDispatch) {
618     return new_boxed_VkType<VkCommandBuffer>(unboxed, /*dispatchable=*/true, dispatch, ownsDispatch);
619 }
620 
delete_VkCommandBuffer(VkCommandBuffer boxed)621 void delete_VkCommandBuffer(VkCommandBuffer boxed) {
622     delete_VkType(boxed);
623 }
624 
unbox_VkCommandBuffer(VkCommandBuffer boxed)625 VkCommandBuffer unbox_VkCommandBuffer(VkCommandBuffer boxed) {
626     return unbox_VkType<VkCommandBuffer>(boxed);
627 }
628 
try_unbox_VkCommandBuffer(VkCommandBuffer boxed)629 VkCommandBuffer try_unbox_VkCommandBuffer(VkCommandBuffer boxed) {
630     return try_unbox_VkType<VkCommandBuffer>(boxed);
631 }
632 
unboxed_to_boxed_VkCommandBuffer(VkCommandBuffer unboxed)633 VkCommandBuffer unboxed_to_boxed_VkCommandBuffer(VkCommandBuffer unboxed) {
634     return unboxed_to_boxed_non_dispatchable_VkType<VkCommandBuffer>(unboxed);
635 }
636 
ordmaint_VkCommandBuffer(VkCommandBuffer boxed)637 OrderMaintenanceInfo* ordmaint_VkCommandBuffer(VkCommandBuffer boxed) {
638     return get_order_maintenance_info_VkType<VkCommandBuffer>(boxed);
639 }
640 
readstream_VkCommandBuffer(VkCommandBuffer boxed)641 VulkanMemReadingStream* readstream_VkCommandBuffer(VkCommandBuffer boxed) {
642     return get_read_stream_VkType<VkCommandBuffer>(boxed);
643 }
644 
dispatch_VkCommandBuffer(VkCommandBuffer boxed)645 VulkanDispatch* dispatch_VkCommandBuffer(VkCommandBuffer boxed) {
646     return get_dispatch_VkType<VkCommandBuffer>(boxed);
647 }
648 
new_boxed_VkQueue(VkQueue unboxed,VulkanDispatch * dispatch,bool ownsDispatch)649 VkQueue new_boxed_VkQueue(VkQueue unboxed, VulkanDispatch* dispatch, bool ownsDispatch) {
650     return new_boxed_VkType<VkQueue>(unboxed, /*dispatchable=*/true, dispatch, ownsDispatch);
651 }
652 
delete_VkQueue(VkQueue boxed)653 void delete_VkQueue(VkQueue boxed) {
654     delete_VkType(boxed);
655 }
656 
unbox_VkQueue(VkQueue boxed)657 VkQueue unbox_VkQueue(VkQueue boxed) {
658     return unbox_VkType<VkQueue>(boxed);
659 }
660 
try_unbox_VkQueue(VkQueue boxed)661 VkQueue try_unbox_VkQueue(VkQueue boxed) {
662     return try_unbox_VkType<VkQueue>(boxed);
663 }
664 
unboxed_to_boxed_VkQueue(VkQueue unboxed)665 VkQueue unboxed_to_boxed_VkQueue(VkQueue unboxed) {
666     return unboxed_to_boxed_non_dispatchable_VkType<VkQueue>(unboxed);
667 }
668 
ordmaint_VkQueue(VkQueue boxed)669 OrderMaintenanceInfo* ordmaint_VkQueue(VkQueue boxed) {
670     return get_order_maintenance_info_VkType<VkQueue>(boxed);
671 }
672 
readstream_VkQueue(VkQueue boxed)673 VulkanMemReadingStream* readstream_VkQueue(VkQueue boxed) {
674     return get_read_stream_VkType<VkQueue>(boxed);
675 }
676 
dispatch_VkQueue(VkQueue boxed)677 VulkanDispatch* dispatch_VkQueue(VkQueue boxed) {
678     return get_dispatch_VkType<VkQueue>(boxed);
679 }
680 
681 ///////////////////////////////////////////////////////////////////////////////
682 //////////////             NON DISPATCHABLE TYPES                //////////////
683 ///////////////////////////////////////////////////////////////////////////////
684 
new_boxed_non_dispatchable_VkAccelerationStructureKHR(VkAccelerationStructureKHR unboxed)685 VkAccelerationStructureKHR new_boxed_non_dispatchable_VkAccelerationStructureKHR(VkAccelerationStructureKHR unboxed) {
686     return new_boxed_VkType<VkAccelerationStructureKHR>(unboxed);
687 }
688 
delete_VkAccelerationStructureKHR(VkAccelerationStructureKHR boxed)689 void delete_VkAccelerationStructureKHR(VkAccelerationStructureKHR boxed) {
690     delete_VkType(boxed);
691 }
692 
delayed_delete_VkAccelerationStructureKHR(VkAccelerationStructureKHR boxed,VkDevice device,std::function<void ()> callback)693 void delayed_delete_VkAccelerationStructureKHR(VkAccelerationStructureKHR boxed, VkDevice device, std::function<void()> callback) {
694     delayed_delete_VkType(boxed, device, std::move(callback));
695 }
696 
unbox_VkAccelerationStructureKHR(VkAccelerationStructureKHR boxed)697 VkAccelerationStructureKHR unbox_VkAccelerationStructureKHR(VkAccelerationStructureKHR boxed) {
698     return unbox_VkType<VkAccelerationStructureKHR>(boxed);
699 }
700 
try_unbox_VkAccelerationStructureKHR(VkAccelerationStructureKHR boxed)701 VkAccelerationStructureKHR try_unbox_VkAccelerationStructureKHR(VkAccelerationStructureKHR boxed) {
702     return try_unbox_VkType<VkAccelerationStructureKHR>(boxed);
703 }
704 
unboxed_to_boxed_non_dispatchable_VkAccelerationStructureKHR(VkAccelerationStructureKHR unboxed)705 VkAccelerationStructureKHR unboxed_to_boxed_non_dispatchable_VkAccelerationStructureKHR(VkAccelerationStructureKHR unboxed) {
706     return unboxed_to_boxed_non_dispatchable_VkType<VkAccelerationStructureKHR>(unboxed);
707 }
708 
set_boxed_non_dispatchable_VkAccelerationStructureKHR(VkAccelerationStructureKHR boxed,VkAccelerationStructureKHR new_unboxed)709 void set_boxed_non_dispatchable_VkAccelerationStructureKHR(VkAccelerationStructureKHR boxed, VkAccelerationStructureKHR new_unboxed) {
710     set_boxed_non_dispatchable_VkType<VkAccelerationStructureKHR>(boxed, new_unboxed);
711 }
712 
new_boxed_non_dispatchable_VkAccelerationStructureNV(VkAccelerationStructureNV unboxed)713 VkAccelerationStructureNV new_boxed_non_dispatchable_VkAccelerationStructureNV(VkAccelerationStructureNV unboxed) {
714     return new_boxed_VkType<VkAccelerationStructureNV>(unboxed);
715 }
716 
delete_VkAccelerationStructureNV(VkAccelerationStructureNV boxed)717 void delete_VkAccelerationStructureNV(VkAccelerationStructureNV boxed) {
718     delete_VkType(boxed);
719 }
720 
delayed_delete_VkAccelerationStructureNV(VkAccelerationStructureNV boxed,VkDevice device,std::function<void ()> callback)721 void delayed_delete_VkAccelerationStructureNV(VkAccelerationStructureNV boxed, VkDevice device, std::function<void()> callback) {
722     delayed_delete_VkType(boxed, device, std::move(callback));
723 }
724 
unbox_VkAccelerationStructureNV(VkAccelerationStructureNV boxed)725 VkAccelerationStructureNV unbox_VkAccelerationStructureNV(VkAccelerationStructureNV boxed) {
726     return unbox_VkType<VkAccelerationStructureNV>(boxed);
727 }
728 
try_unbox_VkAccelerationStructureNV(VkAccelerationStructureNV boxed)729 VkAccelerationStructureNV try_unbox_VkAccelerationStructureNV(VkAccelerationStructureNV boxed) {
730     return try_unbox_VkType<VkAccelerationStructureNV>(boxed);
731 }
732 
unboxed_to_boxed_non_dispatchable_VkAccelerationStructureNV(VkAccelerationStructureNV unboxed)733 VkAccelerationStructureNV unboxed_to_boxed_non_dispatchable_VkAccelerationStructureNV(VkAccelerationStructureNV unboxed) {
734     return unboxed_to_boxed_non_dispatchable_VkType<VkAccelerationStructureNV>(unboxed);
735 }
736 
set_boxed_non_dispatchable_VkAccelerationStructureNV(VkAccelerationStructureNV boxed,VkAccelerationStructureNV new_unboxed)737 void set_boxed_non_dispatchable_VkAccelerationStructureNV(VkAccelerationStructureNV boxed, VkAccelerationStructureNV new_unboxed) {
738     set_boxed_non_dispatchable_VkType<VkAccelerationStructureNV>(boxed, new_unboxed);
739 }
740 
new_boxed_non_dispatchable_VkBuffer(VkBuffer unboxed)741 VkBuffer new_boxed_non_dispatchable_VkBuffer(VkBuffer unboxed) {
742     return new_boxed_VkType<VkBuffer>(unboxed);
743 }
744 
delete_VkBuffer(VkBuffer boxed)745 void delete_VkBuffer(VkBuffer boxed) {
746     delete_VkType(boxed);
747 }
748 
delayed_delete_VkBuffer(VkBuffer boxed,VkDevice device,std::function<void ()> callback)749 void delayed_delete_VkBuffer(VkBuffer boxed, VkDevice device, std::function<void()> callback) {
750     delayed_delete_VkType(boxed, device, std::move(callback));
751 }
752 
unbox_VkBuffer(VkBuffer boxed)753 VkBuffer unbox_VkBuffer(VkBuffer boxed) {
754     return unbox_VkType<VkBuffer>(boxed);
755 }
756 
try_unbox_VkBuffer(VkBuffer boxed)757 VkBuffer try_unbox_VkBuffer(VkBuffer boxed) {
758     return try_unbox_VkType<VkBuffer>(boxed);
759 }
760 
unboxed_to_boxed_non_dispatchable_VkBuffer(VkBuffer unboxed)761 VkBuffer unboxed_to_boxed_non_dispatchable_VkBuffer(VkBuffer unboxed) {
762     return unboxed_to_boxed_non_dispatchable_VkType<VkBuffer>(unboxed);
763 }
764 
set_boxed_non_dispatchable_VkBuffer(VkBuffer boxed,VkBuffer new_unboxed)765 void set_boxed_non_dispatchable_VkBuffer(VkBuffer boxed, VkBuffer new_unboxed) {
766     set_boxed_non_dispatchable_VkType<VkBuffer>(boxed, new_unboxed);
767 }
768 
new_boxed_non_dispatchable_VkBufferView(VkBufferView unboxed)769 VkBufferView new_boxed_non_dispatchable_VkBufferView(VkBufferView unboxed) {
770     return new_boxed_VkType<VkBufferView>(unboxed);
771 }
772 
delete_VkBufferView(VkBufferView boxed)773 void delete_VkBufferView(VkBufferView boxed) {
774     delete_VkType(boxed);
775 }
776 
delayed_delete_VkBufferView(VkBufferView boxed,VkDevice device,std::function<void ()> callback)777 void delayed_delete_VkBufferView(VkBufferView boxed, VkDevice device, std::function<void()> callback) {
778     delayed_delete_VkType(boxed, device, std::move(callback));
779 }
780 
unbox_VkBufferView(VkBufferView boxed)781 VkBufferView unbox_VkBufferView(VkBufferView boxed) {
782     return unbox_VkType<VkBufferView>(boxed);
783 }
784 
try_unbox_VkBufferView(VkBufferView boxed)785 VkBufferView try_unbox_VkBufferView(VkBufferView boxed) {
786     return try_unbox_VkType<VkBufferView>(boxed);
787 }
788 
unboxed_to_boxed_non_dispatchable_VkBufferView(VkBufferView unboxed)789 VkBufferView unboxed_to_boxed_non_dispatchable_VkBufferView(VkBufferView unboxed) {
790     return unboxed_to_boxed_non_dispatchable_VkType<VkBufferView>(unboxed);
791 }
792 
set_boxed_non_dispatchable_VkBufferView(VkBufferView boxed,VkBufferView new_unboxed)793 void set_boxed_non_dispatchable_VkBufferView(VkBufferView boxed, VkBufferView new_unboxed) {
794     set_boxed_non_dispatchable_VkType<VkBufferView>(boxed, new_unboxed);
795 }
796 
new_boxed_non_dispatchable_VkCommandPool(VkCommandPool unboxed)797 VkCommandPool new_boxed_non_dispatchable_VkCommandPool(VkCommandPool unboxed) {
798     return new_boxed_VkType<VkCommandPool>(unboxed);
799 }
800 
delete_VkCommandPool(VkCommandPool boxed)801 void delete_VkCommandPool(VkCommandPool boxed) {
802     delete_VkType(boxed);
803 }
804 
delayed_delete_VkCommandPool(VkCommandPool boxed,VkDevice device,std::function<void ()> callback)805 void delayed_delete_VkCommandPool(VkCommandPool boxed, VkDevice device, std::function<void()> callback) {
806     delayed_delete_VkType(boxed, device, std::move(callback));
807 }
808 
unbox_VkCommandPool(VkCommandPool boxed)809 VkCommandPool unbox_VkCommandPool(VkCommandPool boxed) {
810     return unbox_VkType<VkCommandPool>(boxed);
811 }
812 
try_unbox_VkCommandPool(VkCommandPool boxed)813 VkCommandPool try_unbox_VkCommandPool(VkCommandPool boxed) {
814     return try_unbox_VkType<VkCommandPool>(boxed);
815 }
816 
unboxed_to_boxed_non_dispatchable_VkCommandPool(VkCommandPool unboxed)817 VkCommandPool unboxed_to_boxed_non_dispatchable_VkCommandPool(VkCommandPool unboxed) {
818     return unboxed_to_boxed_non_dispatchable_VkType<VkCommandPool>(unboxed);
819 }
820 
set_boxed_non_dispatchable_VkCommandPool(VkCommandPool boxed,VkCommandPool new_unboxed)821 void set_boxed_non_dispatchable_VkCommandPool(VkCommandPool boxed, VkCommandPool new_unboxed) {
822     set_boxed_non_dispatchable_VkType<VkCommandPool>(boxed, new_unboxed);
823 }
824 
new_boxed_non_dispatchable_VkCuFunctionNVX(VkCuFunctionNVX unboxed)825 VkCuFunctionNVX new_boxed_non_dispatchable_VkCuFunctionNVX(VkCuFunctionNVX unboxed) {
826     return new_boxed_VkType<VkCuFunctionNVX>(unboxed);
827 }
828 
delete_VkCuFunctionNVX(VkCuFunctionNVX boxed)829 void delete_VkCuFunctionNVX(VkCuFunctionNVX boxed) {
830     delete_VkType(boxed);
831 }
832 
delayed_delete_VkCuFunctionNVX(VkCuFunctionNVX boxed,VkDevice device,std::function<void ()> callback)833 void delayed_delete_VkCuFunctionNVX(VkCuFunctionNVX boxed, VkDevice device, std::function<void()> callback) {
834     delayed_delete_VkType(boxed, device, std::move(callback));
835 }
836 
unbox_VkCuFunctionNVX(VkCuFunctionNVX boxed)837 VkCuFunctionNVX unbox_VkCuFunctionNVX(VkCuFunctionNVX boxed) {
838     return unbox_VkType<VkCuFunctionNVX>(boxed);
839 }
840 
try_unbox_VkCuFunctionNVX(VkCuFunctionNVX boxed)841 VkCuFunctionNVX try_unbox_VkCuFunctionNVX(VkCuFunctionNVX boxed) {
842     return try_unbox_VkType<VkCuFunctionNVX>(boxed);
843 }
844 
unboxed_to_boxed_non_dispatchable_VkCuFunctionNVX(VkCuFunctionNVX unboxed)845 VkCuFunctionNVX unboxed_to_boxed_non_dispatchable_VkCuFunctionNVX(VkCuFunctionNVX unboxed) {
846     return unboxed_to_boxed_non_dispatchable_VkType<VkCuFunctionNVX>(unboxed);
847 }
848 
set_boxed_non_dispatchable_VkCuFunctionNVX(VkCuFunctionNVX boxed,VkCuFunctionNVX new_unboxed)849 void set_boxed_non_dispatchable_VkCuFunctionNVX(VkCuFunctionNVX boxed, VkCuFunctionNVX new_unboxed) {
850     set_boxed_non_dispatchable_VkType<VkCuFunctionNVX>(boxed, new_unboxed);
851 }
852 
new_boxed_non_dispatchable_VkCuModuleNVX(VkCuModuleNVX unboxed)853 VkCuModuleNVX new_boxed_non_dispatchable_VkCuModuleNVX(VkCuModuleNVX unboxed) {
854     return new_boxed_VkType<VkCuModuleNVX>(unboxed);
855 }
856 
delete_VkCuModuleNVX(VkCuModuleNVX boxed)857 void delete_VkCuModuleNVX(VkCuModuleNVX boxed) {
858     delete_VkType(boxed);
859 }
860 
delayed_delete_VkCuModuleNVX(VkCuModuleNVX boxed,VkDevice device,std::function<void ()> callback)861 void delayed_delete_VkCuModuleNVX(VkCuModuleNVX boxed, VkDevice device, std::function<void()> callback) {
862     delayed_delete_VkType(boxed, device, std::move(callback));
863 }
864 
unbox_VkCuModuleNVX(VkCuModuleNVX boxed)865 VkCuModuleNVX unbox_VkCuModuleNVX(VkCuModuleNVX boxed) {
866     return unbox_VkType<VkCuModuleNVX>(boxed);
867 }
868 
try_unbox_VkCuModuleNVX(VkCuModuleNVX boxed)869 VkCuModuleNVX try_unbox_VkCuModuleNVX(VkCuModuleNVX boxed) {
870     return try_unbox_VkType<VkCuModuleNVX>(boxed);
871 }
872 
unboxed_to_boxed_non_dispatchable_VkCuModuleNVX(VkCuModuleNVX unboxed)873 VkCuModuleNVX unboxed_to_boxed_non_dispatchable_VkCuModuleNVX(VkCuModuleNVX unboxed) {
874     return unboxed_to_boxed_non_dispatchable_VkType<VkCuModuleNVX>(unboxed);
875 }
876 
set_boxed_non_dispatchable_VkCuModuleNVX(VkCuModuleNVX boxed,VkCuModuleNVX new_unboxed)877 void set_boxed_non_dispatchable_VkCuModuleNVX(VkCuModuleNVX boxed, VkCuModuleNVX new_unboxed) {
878     set_boxed_non_dispatchable_VkType<VkCuModuleNVX>(boxed, new_unboxed);
879 }
880 
new_boxed_non_dispatchable_VkDebugReportCallbackEXT(VkDebugReportCallbackEXT unboxed)881 VkDebugReportCallbackEXT new_boxed_non_dispatchable_VkDebugReportCallbackEXT(VkDebugReportCallbackEXT unboxed) {
882     return new_boxed_VkType<VkDebugReportCallbackEXT>(unboxed);
883 }
884 
delete_VkDebugReportCallbackEXT(VkDebugReportCallbackEXT boxed)885 void delete_VkDebugReportCallbackEXT(VkDebugReportCallbackEXT boxed) {
886     delete_VkType(boxed);
887 }
888 
delayed_delete_VkDebugReportCallbackEXT(VkDebugReportCallbackEXT boxed,VkDevice device,std::function<void ()> callback)889 void delayed_delete_VkDebugReportCallbackEXT(VkDebugReportCallbackEXT boxed, VkDevice device, std::function<void()> callback) {
890     delayed_delete_VkType(boxed, device, std::move(callback));
891 }
892 
unbox_VkDebugReportCallbackEXT(VkDebugReportCallbackEXT boxed)893 VkDebugReportCallbackEXT unbox_VkDebugReportCallbackEXT(VkDebugReportCallbackEXT boxed) {
894     return unbox_VkType<VkDebugReportCallbackEXT>(boxed);
895 }
896 
try_unbox_VkDebugReportCallbackEXT(VkDebugReportCallbackEXT boxed)897 VkDebugReportCallbackEXT try_unbox_VkDebugReportCallbackEXT(VkDebugReportCallbackEXT boxed) {
898     return try_unbox_VkType<VkDebugReportCallbackEXT>(boxed);
899 }
900 
unboxed_to_boxed_non_dispatchable_VkDebugReportCallbackEXT(VkDebugReportCallbackEXT unboxed)901 VkDebugReportCallbackEXT unboxed_to_boxed_non_dispatchable_VkDebugReportCallbackEXT(VkDebugReportCallbackEXT unboxed) {
902     return unboxed_to_boxed_non_dispatchable_VkType<VkDebugReportCallbackEXT>(unboxed);
903 }
904 
set_boxed_non_dispatchable_VkDebugReportCallbackEXT(VkDebugReportCallbackEXT boxed,VkDebugReportCallbackEXT new_unboxed)905 void set_boxed_non_dispatchable_VkDebugReportCallbackEXT(VkDebugReportCallbackEXT boxed, VkDebugReportCallbackEXT new_unboxed) {
906     set_boxed_non_dispatchable_VkType<VkDebugReportCallbackEXT>(boxed, new_unboxed);
907 }
908 
new_boxed_non_dispatchable_VkDebugUtilsMessengerEXT(VkDebugUtilsMessengerEXT unboxed)909 VkDebugUtilsMessengerEXT new_boxed_non_dispatchable_VkDebugUtilsMessengerEXT(VkDebugUtilsMessengerEXT unboxed) {
910     return new_boxed_VkType<VkDebugUtilsMessengerEXT>(unboxed);
911 }
912 
delete_VkDebugUtilsMessengerEXT(VkDebugUtilsMessengerEXT boxed)913 void delete_VkDebugUtilsMessengerEXT(VkDebugUtilsMessengerEXT boxed) {
914     delete_VkType(boxed);
915 }
916 
delayed_delete_VkDebugUtilsMessengerEXT(VkDebugUtilsMessengerEXT boxed,VkDevice device,std::function<void ()> callback)917 void delayed_delete_VkDebugUtilsMessengerEXT(VkDebugUtilsMessengerEXT boxed, VkDevice device, std::function<void()> callback) {
918     delayed_delete_VkType(boxed, device, std::move(callback));
919 }
920 
unbox_VkDebugUtilsMessengerEXT(VkDebugUtilsMessengerEXT boxed)921 VkDebugUtilsMessengerEXT unbox_VkDebugUtilsMessengerEXT(VkDebugUtilsMessengerEXT boxed) {
922     return unbox_VkType<VkDebugUtilsMessengerEXT>(boxed);
923 }
924 
try_unbox_VkDebugUtilsMessengerEXT(VkDebugUtilsMessengerEXT boxed)925 VkDebugUtilsMessengerEXT try_unbox_VkDebugUtilsMessengerEXT(VkDebugUtilsMessengerEXT boxed) {
926     return try_unbox_VkType<VkDebugUtilsMessengerEXT>(boxed);
927 }
928 
unboxed_to_boxed_non_dispatchable_VkDebugUtilsMessengerEXT(VkDebugUtilsMessengerEXT unboxed)929 VkDebugUtilsMessengerEXT unboxed_to_boxed_non_dispatchable_VkDebugUtilsMessengerEXT(VkDebugUtilsMessengerEXT unboxed) {
930     return unboxed_to_boxed_non_dispatchable_VkType<VkDebugUtilsMessengerEXT>(unboxed);
931 }
932 
set_boxed_non_dispatchable_VkDebugUtilsMessengerEXT(VkDebugUtilsMessengerEXT boxed,VkDebugUtilsMessengerEXT new_unboxed)933 void set_boxed_non_dispatchable_VkDebugUtilsMessengerEXT(VkDebugUtilsMessengerEXT boxed, VkDebugUtilsMessengerEXT new_unboxed) {
934     set_boxed_non_dispatchable_VkType<VkDebugUtilsMessengerEXT>(boxed, new_unboxed);
935 }
936 
new_boxed_non_dispatchable_VkDescriptorPool(VkDescriptorPool unboxed)937 VkDescriptorPool new_boxed_non_dispatchable_VkDescriptorPool(VkDescriptorPool unboxed) {
938     return new_boxed_VkType<VkDescriptorPool>(unboxed);
939 }
940 
delete_VkDescriptorPool(VkDescriptorPool boxed)941 void delete_VkDescriptorPool(VkDescriptorPool boxed) {
942     delete_VkType(boxed);
943 }
944 
delayed_delete_VkDescriptorPool(VkDescriptorPool boxed,VkDevice device,std::function<void ()> callback)945 void delayed_delete_VkDescriptorPool(VkDescriptorPool boxed, VkDevice device, std::function<void()> callback) {
946     delayed_delete_VkType(boxed, device, std::move(callback));
947 }
948 
unbox_VkDescriptorPool(VkDescriptorPool boxed)949 VkDescriptorPool unbox_VkDescriptorPool(VkDescriptorPool boxed) {
950     return unbox_VkType<VkDescriptorPool>(boxed);
951 }
952 
try_unbox_VkDescriptorPool(VkDescriptorPool boxed)953 VkDescriptorPool try_unbox_VkDescriptorPool(VkDescriptorPool boxed) {
954     return try_unbox_VkType<VkDescriptorPool>(boxed);
955 }
956 
unboxed_to_boxed_non_dispatchable_VkDescriptorPool(VkDescriptorPool unboxed)957 VkDescriptorPool unboxed_to_boxed_non_dispatchable_VkDescriptorPool(VkDescriptorPool unboxed) {
958     return unboxed_to_boxed_non_dispatchable_VkType<VkDescriptorPool>(unboxed);
959 }
960 
set_boxed_non_dispatchable_VkDescriptorPool(VkDescriptorPool boxed,VkDescriptorPool new_unboxed)961 void set_boxed_non_dispatchable_VkDescriptorPool(VkDescriptorPool boxed, VkDescriptorPool new_unboxed) {
962     set_boxed_non_dispatchable_VkType<VkDescriptorPool>(boxed, new_unboxed);
963 }
964 
new_boxed_non_dispatchable_VkDescriptorSet(VkDescriptorSet unboxed)965 VkDescriptorSet new_boxed_non_dispatchable_VkDescriptorSet(VkDescriptorSet unboxed) {
966     return new_boxed_VkType<VkDescriptorSet>(unboxed);
967 }
968 
delete_VkDescriptorSet(VkDescriptorSet boxed)969 void delete_VkDescriptorSet(VkDescriptorSet boxed) {
970     delete_VkType(boxed);
971 }
972 
delayed_delete_VkDescriptorSet(VkDescriptorSet boxed,VkDevice device,std::function<void ()> callback)973 void delayed_delete_VkDescriptorSet(VkDescriptorSet boxed, VkDevice device, std::function<void()> callback) {
974     delayed_delete_VkType(boxed, device, std::move(callback));
975 }
976 
unbox_VkDescriptorSet(VkDescriptorSet boxed)977 VkDescriptorSet unbox_VkDescriptorSet(VkDescriptorSet boxed) {
978     return unbox_VkType<VkDescriptorSet>(boxed);
979 }
980 
try_unbox_VkDescriptorSet(VkDescriptorSet boxed)981 VkDescriptorSet try_unbox_VkDescriptorSet(VkDescriptorSet boxed) {
982     return try_unbox_VkType<VkDescriptorSet>(boxed);
983 }
984 
unboxed_to_boxed_non_dispatchable_VkDescriptorSet(VkDescriptorSet unboxed)985 VkDescriptorSet unboxed_to_boxed_non_dispatchable_VkDescriptorSet(VkDescriptorSet unboxed) {
986     return unboxed_to_boxed_non_dispatchable_VkType<VkDescriptorSet>(unboxed);
987 }
988 
set_boxed_non_dispatchable_VkDescriptorSet(VkDescriptorSet boxed,VkDescriptorSet new_unboxed)989 void set_boxed_non_dispatchable_VkDescriptorSet(VkDescriptorSet boxed, VkDescriptorSet new_unboxed) {
990     set_boxed_non_dispatchable_VkType<VkDescriptorSet>(boxed, new_unboxed);
991 }
992 
new_boxed_non_dispatchable_VkDescriptorSetLayout(VkDescriptorSetLayout unboxed)993 VkDescriptorSetLayout new_boxed_non_dispatchable_VkDescriptorSetLayout(VkDescriptorSetLayout unboxed) {
994     return new_boxed_VkType<VkDescriptorSetLayout>(unboxed);
995 }
996 
delete_VkDescriptorSetLayout(VkDescriptorSetLayout boxed)997 void delete_VkDescriptorSetLayout(VkDescriptorSetLayout boxed) {
998     delete_VkType(boxed);
999 }
1000 
delayed_delete_VkDescriptorSetLayout(VkDescriptorSetLayout boxed,VkDevice device,std::function<void ()> callback)1001 void delayed_delete_VkDescriptorSetLayout(VkDescriptorSetLayout boxed, VkDevice device, std::function<void()> callback) {
1002     delayed_delete_VkType(boxed, device, std::move(callback));
1003 }
1004 
unbox_VkDescriptorSetLayout(VkDescriptorSetLayout boxed)1005 VkDescriptorSetLayout unbox_VkDescriptorSetLayout(VkDescriptorSetLayout boxed) {
1006     return unbox_VkType<VkDescriptorSetLayout>(boxed);
1007 }
1008 
try_unbox_VkDescriptorSetLayout(VkDescriptorSetLayout boxed)1009 VkDescriptorSetLayout try_unbox_VkDescriptorSetLayout(VkDescriptorSetLayout boxed) {
1010     return try_unbox_VkType<VkDescriptorSetLayout>(boxed);
1011 }
1012 
unboxed_to_boxed_non_dispatchable_VkDescriptorSetLayout(VkDescriptorSetLayout unboxed)1013 VkDescriptorSetLayout unboxed_to_boxed_non_dispatchable_VkDescriptorSetLayout(VkDescriptorSetLayout unboxed) {
1014     return unboxed_to_boxed_non_dispatchable_VkType<VkDescriptorSetLayout>(unboxed);
1015 }
1016 
set_boxed_non_dispatchable_VkDescriptorSetLayout(VkDescriptorSetLayout boxed,VkDescriptorSetLayout new_unboxed)1017 void set_boxed_non_dispatchable_VkDescriptorSetLayout(VkDescriptorSetLayout boxed, VkDescriptorSetLayout new_unboxed) {
1018     set_boxed_non_dispatchable_VkType<VkDescriptorSetLayout>(boxed, new_unboxed);
1019 }
1020 
new_boxed_non_dispatchable_VkDescriptorUpdateTemplate(VkDescriptorUpdateTemplate unboxed)1021 VkDescriptorUpdateTemplate new_boxed_non_dispatchable_VkDescriptorUpdateTemplate(VkDescriptorUpdateTemplate unboxed) {
1022     return new_boxed_VkType<VkDescriptorUpdateTemplate>(unboxed);
1023 }
1024 
delete_VkDescriptorUpdateTemplate(VkDescriptorUpdateTemplate boxed)1025 void delete_VkDescriptorUpdateTemplate(VkDescriptorUpdateTemplate boxed) {
1026     delete_VkType(boxed);
1027 }
1028 
delayed_delete_VkDescriptorUpdateTemplate(VkDescriptorUpdateTemplate boxed,VkDevice device,std::function<void ()> callback)1029 void delayed_delete_VkDescriptorUpdateTemplate(VkDescriptorUpdateTemplate boxed, VkDevice device, std::function<void()> callback) {
1030     delayed_delete_VkType(boxed, device, std::move(callback));
1031 }
1032 
unbox_VkDescriptorUpdateTemplate(VkDescriptorUpdateTemplate boxed)1033 VkDescriptorUpdateTemplate unbox_VkDescriptorUpdateTemplate(VkDescriptorUpdateTemplate boxed) {
1034     return unbox_VkType<VkDescriptorUpdateTemplate>(boxed);
1035 }
1036 
try_unbox_VkDescriptorUpdateTemplate(VkDescriptorUpdateTemplate boxed)1037 VkDescriptorUpdateTemplate try_unbox_VkDescriptorUpdateTemplate(VkDescriptorUpdateTemplate boxed) {
1038     return try_unbox_VkType<VkDescriptorUpdateTemplate>(boxed);
1039 }
1040 
unboxed_to_boxed_non_dispatchable_VkDescriptorUpdateTemplate(VkDescriptorUpdateTemplate unboxed)1041 VkDescriptorUpdateTemplate unboxed_to_boxed_non_dispatchable_VkDescriptorUpdateTemplate(VkDescriptorUpdateTemplate unboxed) {
1042     return unboxed_to_boxed_non_dispatchable_VkType<VkDescriptorUpdateTemplate>(unboxed);
1043 }
1044 
set_boxed_non_dispatchable_VkDescriptorUpdateTemplate(VkDescriptorUpdateTemplate boxed,VkDescriptorUpdateTemplate new_unboxed)1045 void set_boxed_non_dispatchable_VkDescriptorUpdateTemplate(VkDescriptorUpdateTemplate boxed, VkDescriptorUpdateTemplate new_unboxed) {
1046     set_boxed_non_dispatchable_VkType<VkDescriptorUpdateTemplate>(boxed, new_unboxed);
1047 }
1048 
new_boxed_non_dispatchable_VkDeviceMemory(VkDeviceMemory unboxed)1049 VkDeviceMemory new_boxed_non_dispatchable_VkDeviceMemory(VkDeviceMemory unboxed) {
1050     return new_boxed_VkType<VkDeviceMemory>(unboxed);
1051 }
1052 
delete_VkDeviceMemory(VkDeviceMemory boxed)1053 void delete_VkDeviceMemory(VkDeviceMemory boxed) {
1054     delete_VkType(boxed);
1055 }
1056 
delayed_delete_VkDeviceMemory(VkDeviceMemory boxed,VkDevice device,std::function<void ()> callback)1057 void delayed_delete_VkDeviceMemory(VkDeviceMemory boxed, VkDevice device, std::function<void()> callback) {
1058     delayed_delete_VkType(boxed, device, std::move(callback));
1059 }
1060 
unbox_VkDeviceMemory(VkDeviceMemory boxed)1061 VkDeviceMemory unbox_VkDeviceMemory(VkDeviceMemory boxed) {
1062     return unbox_VkType<VkDeviceMemory>(boxed);
1063 }
1064 
try_unbox_VkDeviceMemory(VkDeviceMemory boxed)1065 VkDeviceMemory try_unbox_VkDeviceMemory(VkDeviceMemory boxed) {
1066     return try_unbox_VkType<VkDeviceMemory>(boxed);
1067 }
1068 
unboxed_to_boxed_non_dispatchable_VkDeviceMemory(VkDeviceMemory unboxed)1069 VkDeviceMemory unboxed_to_boxed_non_dispatchable_VkDeviceMemory(VkDeviceMemory unboxed) {
1070     return unboxed_to_boxed_non_dispatchable_VkType<VkDeviceMemory>(unboxed);
1071 }
1072 
set_boxed_non_dispatchable_VkDeviceMemory(VkDeviceMemory boxed,VkDeviceMemory new_unboxed)1073 void set_boxed_non_dispatchable_VkDeviceMemory(VkDeviceMemory boxed, VkDeviceMemory new_unboxed) {
1074     set_boxed_non_dispatchable_VkType<VkDeviceMemory>(boxed, new_unboxed);
1075 }
1076 
new_boxed_non_dispatchable_VkDisplayKHR(VkDisplayKHR unboxed)1077 VkDisplayKHR new_boxed_non_dispatchable_VkDisplayKHR(VkDisplayKHR unboxed) {
1078     return new_boxed_VkType<VkDisplayKHR>(unboxed);
1079 }
1080 
delete_VkDisplayKHR(VkDisplayKHR boxed)1081 void delete_VkDisplayKHR(VkDisplayKHR boxed) {
1082     delete_VkType(boxed);
1083 }
1084 
delayed_delete_VkDisplayKHR(VkDisplayKHR boxed,VkDevice device,std::function<void ()> callback)1085 void delayed_delete_VkDisplayKHR(VkDisplayKHR boxed, VkDevice device, std::function<void()> callback) {
1086     delayed_delete_VkType(boxed, device, std::move(callback));
1087 }
1088 
unbox_VkDisplayKHR(VkDisplayKHR boxed)1089 VkDisplayKHR unbox_VkDisplayKHR(VkDisplayKHR boxed) {
1090     return unbox_VkType<VkDisplayKHR>(boxed);
1091 }
1092 
try_unbox_VkDisplayKHR(VkDisplayKHR boxed)1093 VkDisplayKHR try_unbox_VkDisplayKHR(VkDisplayKHR boxed) {
1094     return try_unbox_VkType<VkDisplayKHR>(boxed);
1095 }
1096 
unboxed_to_boxed_non_dispatchable_VkDisplayKHR(VkDisplayKHR unboxed)1097 VkDisplayKHR unboxed_to_boxed_non_dispatchable_VkDisplayKHR(VkDisplayKHR unboxed) {
1098     return unboxed_to_boxed_non_dispatchable_VkType<VkDisplayKHR>(unboxed);
1099 }
1100 
set_boxed_non_dispatchable_VkDisplayKHR(VkDisplayKHR boxed,VkDisplayKHR new_unboxed)1101 void set_boxed_non_dispatchable_VkDisplayKHR(VkDisplayKHR boxed, VkDisplayKHR new_unboxed) {
1102     set_boxed_non_dispatchable_VkType<VkDisplayKHR>(boxed, new_unboxed);
1103 }
1104 
new_boxed_non_dispatchable_VkDisplayModeKHR(VkDisplayModeKHR unboxed)1105 VkDisplayModeKHR new_boxed_non_dispatchable_VkDisplayModeKHR(VkDisplayModeKHR unboxed) {
1106     return new_boxed_VkType<VkDisplayModeKHR>(unboxed);
1107 }
1108 
delete_VkDisplayModeKHR(VkDisplayModeKHR boxed)1109 void delete_VkDisplayModeKHR(VkDisplayModeKHR boxed) {
1110     delete_VkType(boxed);
1111 }
1112 
delayed_delete_VkDisplayModeKHR(VkDisplayModeKHR boxed,VkDevice device,std::function<void ()> callback)1113 void delayed_delete_VkDisplayModeKHR(VkDisplayModeKHR boxed, VkDevice device, std::function<void()> callback) {
1114     delayed_delete_VkType(boxed, device, std::move(callback));
1115 }
1116 
unbox_VkDisplayModeKHR(VkDisplayModeKHR boxed)1117 VkDisplayModeKHR unbox_VkDisplayModeKHR(VkDisplayModeKHR boxed) {
1118     return unbox_VkType<VkDisplayModeKHR>(boxed);
1119 }
1120 
try_unbox_VkDisplayModeKHR(VkDisplayModeKHR boxed)1121 VkDisplayModeKHR try_unbox_VkDisplayModeKHR(VkDisplayModeKHR boxed) {
1122     return try_unbox_VkType<VkDisplayModeKHR>(boxed);
1123 }
1124 
unboxed_to_boxed_non_dispatchable_VkDisplayModeKHR(VkDisplayModeKHR unboxed)1125 VkDisplayModeKHR unboxed_to_boxed_non_dispatchable_VkDisplayModeKHR(VkDisplayModeKHR unboxed) {
1126     return unboxed_to_boxed_non_dispatchable_VkType<VkDisplayModeKHR>(unboxed);
1127 }
1128 
set_boxed_non_dispatchable_VkDisplayModeKHR(VkDisplayModeKHR boxed,VkDisplayModeKHR new_unboxed)1129 void set_boxed_non_dispatchable_VkDisplayModeKHR(VkDisplayModeKHR boxed, VkDisplayModeKHR new_unboxed) {
1130     set_boxed_non_dispatchable_VkType<VkDisplayModeKHR>(boxed, new_unboxed);
1131 }
1132 
new_boxed_non_dispatchable_VkEvent(VkEvent unboxed)1133 VkEvent new_boxed_non_dispatchable_VkEvent(VkEvent unboxed) {
1134     return new_boxed_VkType<VkEvent>(unboxed);
1135 }
1136 
delete_VkEvent(VkEvent boxed)1137 void delete_VkEvent(VkEvent boxed) {
1138     delete_VkType(boxed);
1139 }
1140 
delayed_delete_VkEvent(VkEvent boxed,VkDevice device,std::function<void ()> callback)1141 void delayed_delete_VkEvent(VkEvent boxed, VkDevice device, std::function<void()> callback) {
1142     delayed_delete_VkType(boxed, device, std::move(callback));
1143 }
1144 
unbox_VkEvent(VkEvent boxed)1145 VkEvent unbox_VkEvent(VkEvent boxed) {
1146     return unbox_VkType<VkEvent>(boxed);
1147 }
1148 
try_unbox_VkEvent(VkEvent boxed)1149 VkEvent try_unbox_VkEvent(VkEvent boxed) {
1150     return try_unbox_VkType<VkEvent>(boxed);
1151 }
1152 
unboxed_to_boxed_non_dispatchable_VkEvent(VkEvent unboxed)1153 VkEvent unboxed_to_boxed_non_dispatchable_VkEvent(VkEvent unboxed) {
1154     return unboxed_to_boxed_non_dispatchable_VkType<VkEvent>(unboxed);
1155 }
1156 
set_boxed_non_dispatchable_VkEvent(VkEvent boxed,VkEvent new_unboxed)1157 void set_boxed_non_dispatchable_VkEvent(VkEvent boxed, VkEvent new_unboxed) {
1158     set_boxed_non_dispatchable_VkType<VkEvent>(boxed, new_unboxed);
1159 }
1160 
new_boxed_non_dispatchable_VkFence(VkFence unboxed)1161 VkFence new_boxed_non_dispatchable_VkFence(VkFence unboxed) {
1162     return new_boxed_VkType<VkFence>(unboxed);
1163 }
1164 
delete_VkFence(VkFence boxed)1165 void delete_VkFence(VkFence boxed) {
1166     delete_VkType(boxed);
1167 }
1168 
delayed_delete_VkFence(VkFence boxed,VkDevice device,std::function<void ()> callback)1169 void delayed_delete_VkFence(VkFence boxed, VkDevice device, std::function<void()> callback) {
1170     delayed_delete_VkType(boxed, device, std::move(callback));
1171 }
1172 
unbox_VkFence(VkFence boxed)1173 VkFence unbox_VkFence(VkFence boxed) {
1174     return unbox_VkType<VkFence>(boxed);
1175 }
1176 
try_unbox_VkFence(VkFence boxed)1177 VkFence try_unbox_VkFence(VkFence boxed) {
1178     return try_unbox_VkType<VkFence>(boxed);
1179 }
1180 
unboxed_to_boxed_non_dispatchable_VkFence(VkFence unboxed)1181 VkFence unboxed_to_boxed_non_dispatchable_VkFence(VkFence unboxed) {
1182     return unboxed_to_boxed_non_dispatchable_VkType<VkFence>(unboxed);
1183 }
1184 
set_boxed_non_dispatchable_VkFence(VkFence boxed,VkFence new_unboxed)1185 void set_boxed_non_dispatchable_VkFence(VkFence boxed, VkFence new_unboxed) {
1186     set_boxed_non_dispatchable_VkType<VkFence>(boxed, new_unboxed);
1187 }
1188 
new_boxed_non_dispatchable_VkFramebuffer(VkFramebuffer unboxed)1189 VkFramebuffer new_boxed_non_dispatchable_VkFramebuffer(VkFramebuffer unboxed) {
1190     return new_boxed_VkType<VkFramebuffer>(unboxed);
1191 }
1192 
delete_VkFramebuffer(VkFramebuffer boxed)1193 void delete_VkFramebuffer(VkFramebuffer boxed) {
1194     delete_VkType(boxed);
1195 }
1196 
delayed_delete_VkFramebuffer(VkFramebuffer boxed,VkDevice device,std::function<void ()> callback)1197 void delayed_delete_VkFramebuffer(VkFramebuffer boxed, VkDevice device, std::function<void()> callback) {
1198     delayed_delete_VkType(boxed, device, std::move(callback));
1199 }
1200 
unbox_VkFramebuffer(VkFramebuffer boxed)1201 VkFramebuffer unbox_VkFramebuffer(VkFramebuffer boxed) {
1202     return unbox_VkType<VkFramebuffer>(boxed);
1203 }
1204 
try_unbox_VkFramebuffer(VkFramebuffer boxed)1205 VkFramebuffer try_unbox_VkFramebuffer(VkFramebuffer boxed) {
1206     return try_unbox_VkType<VkFramebuffer>(boxed);
1207 }
1208 
unboxed_to_boxed_non_dispatchable_VkFramebuffer(VkFramebuffer unboxed)1209 VkFramebuffer unboxed_to_boxed_non_dispatchable_VkFramebuffer(VkFramebuffer unboxed) {
1210     return unboxed_to_boxed_non_dispatchable_VkType<VkFramebuffer>(unboxed);
1211 }
1212 
set_boxed_non_dispatchable_VkFramebuffer(VkFramebuffer boxed,VkFramebuffer new_unboxed)1213 void set_boxed_non_dispatchable_VkFramebuffer(VkFramebuffer boxed, VkFramebuffer new_unboxed) {
1214     set_boxed_non_dispatchable_VkType<VkFramebuffer>(boxed, new_unboxed);
1215 }
1216 
new_boxed_non_dispatchable_VkImage(VkImage unboxed)1217 VkImage new_boxed_non_dispatchable_VkImage(VkImage unboxed) {
1218     return new_boxed_VkType<VkImage>(unboxed);
1219 }
1220 
delete_VkImage(VkImage boxed)1221 void delete_VkImage(VkImage boxed) {
1222     delete_VkType(boxed);
1223 }
1224 
delayed_delete_VkImage(VkImage boxed,VkDevice device,std::function<void ()> callback)1225 void delayed_delete_VkImage(VkImage boxed, VkDevice device, std::function<void()> callback) {
1226     delayed_delete_VkType(boxed, device, std::move(callback));
1227 }
1228 
unbox_VkImage(VkImage boxed)1229 VkImage unbox_VkImage(VkImage boxed) {
1230     return unbox_VkType<VkImage>(boxed);
1231 }
1232 
try_unbox_VkImage(VkImage boxed)1233 VkImage try_unbox_VkImage(VkImage boxed) {
1234     return try_unbox_VkType<VkImage>(boxed);
1235 }
1236 
unboxed_to_boxed_non_dispatchable_VkImage(VkImage unboxed)1237 VkImage unboxed_to_boxed_non_dispatchable_VkImage(VkImage unboxed) {
1238     return unboxed_to_boxed_non_dispatchable_VkType<VkImage>(unboxed);
1239 }
1240 
set_boxed_non_dispatchable_VkImage(VkImage boxed,VkImage new_unboxed)1241 void set_boxed_non_dispatchable_VkImage(VkImage boxed, VkImage new_unboxed) {
1242     set_boxed_non_dispatchable_VkType<VkImage>(boxed, new_unboxed);
1243 }
1244 
new_boxed_non_dispatchable_VkImageView(VkImageView unboxed)1245 VkImageView new_boxed_non_dispatchable_VkImageView(VkImageView unboxed) {
1246     return new_boxed_VkType<VkImageView>(unboxed);
1247 }
1248 
delete_VkImageView(VkImageView boxed)1249 void delete_VkImageView(VkImageView boxed) {
1250     delete_VkType(boxed);
1251 }
1252 
delayed_delete_VkImageView(VkImageView boxed,VkDevice device,std::function<void ()> callback)1253 void delayed_delete_VkImageView(VkImageView boxed, VkDevice device, std::function<void()> callback) {
1254     delayed_delete_VkType(boxed, device, std::move(callback));
1255 }
1256 
unbox_VkImageView(VkImageView boxed)1257 VkImageView unbox_VkImageView(VkImageView boxed) {
1258     return unbox_VkType<VkImageView>(boxed);
1259 }
1260 
try_unbox_VkImageView(VkImageView boxed)1261 VkImageView try_unbox_VkImageView(VkImageView boxed) {
1262     return try_unbox_VkType<VkImageView>(boxed);
1263 }
1264 
unboxed_to_boxed_non_dispatchable_VkImageView(VkImageView unboxed)1265 VkImageView unboxed_to_boxed_non_dispatchable_VkImageView(VkImageView unboxed) {
1266     return unboxed_to_boxed_non_dispatchable_VkType<VkImageView>(unboxed);
1267 }
1268 
set_boxed_non_dispatchable_VkImageView(VkImageView boxed,VkImageView new_unboxed)1269 void set_boxed_non_dispatchable_VkImageView(VkImageView boxed, VkImageView new_unboxed) {
1270     set_boxed_non_dispatchable_VkType<VkImageView>(boxed, new_unboxed);
1271 }
1272 
new_boxed_non_dispatchable_VkIndirectCommandsLayoutNV(VkIndirectCommandsLayoutNV unboxed)1273 VkIndirectCommandsLayoutNV new_boxed_non_dispatchable_VkIndirectCommandsLayoutNV(VkIndirectCommandsLayoutNV unboxed) {
1274     return new_boxed_VkType<VkIndirectCommandsLayoutNV>(unboxed);
1275 }
1276 
delete_VkIndirectCommandsLayoutNV(VkIndirectCommandsLayoutNV boxed)1277 void delete_VkIndirectCommandsLayoutNV(VkIndirectCommandsLayoutNV boxed) {
1278     delete_VkType(boxed);
1279 }
1280 
delayed_delete_VkIndirectCommandsLayoutNV(VkIndirectCommandsLayoutNV boxed,VkDevice device,std::function<void ()> callback)1281 void delayed_delete_VkIndirectCommandsLayoutNV(VkIndirectCommandsLayoutNV boxed, VkDevice device, std::function<void()> callback) {
1282     delayed_delete_VkType(boxed, device, std::move(callback));
1283 }
1284 
unbox_VkIndirectCommandsLayoutNV(VkIndirectCommandsLayoutNV boxed)1285 VkIndirectCommandsLayoutNV unbox_VkIndirectCommandsLayoutNV(VkIndirectCommandsLayoutNV boxed) {
1286     return unbox_VkType<VkIndirectCommandsLayoutNV>(boxed);
1287 }
1288 
try_unbox_VkIndirectCommandsLayoutNV(VkIndirectCommandsLayoutNV boxed)1289 VkIndirectCommandsLayoutNV try_unbox_VkIndirectCommandsLayoutNV(VkIndirectCommandsLayoutNV boxed) {
1290     return try_unbox_VkType<VkIndirectCommandsLayoutNV>(boxed);
1291 }
1292 
unboxed_to_boxed_non_dispatchable_VkIndirectCommandsLayoutNV(VkIndirectCommandsLayoutNV unboxed)1293 VkIndirectCommandsLayoutNV unboxed_to_boxed_non_dispatchable_VkIndirectCommandsLayoutNV(VkIndirectCommandsLayoutNV unboxed) {
1294     return unboxed_to_boxed_non_dispatchable_VkType<VkIndirectCommandsLayoutNV>(unboxed);
1295 }
1296 
set_boxed_non_dispatchable_VkIndirectCommandsLayoutNV(VkIndirectCommandsLayoutNV boxed,VkIndirectCommandsLayoutNV new_unboxed)1297 void set_boxed_non_dispatchable_VkIndirectCommandsLayoutNV(VkIndirectCommandsLayoutNV boxed, VkIndirectCommandsLayoutNV new_unboxed) {
1298     set_boxed_non_dispatchable_VkType<VkIndirectCommandsLayoutNV>(boxed, new_unboxed);
1299 }
1300 
new_boxed_non_dispatchable_VkMicromapEXT(VkMicromapEXT unboxed)1301 VkMicromapEXT new_boxed_non_dispatchable_VkMicromapEXT(VkMicromapEXT unboxed) {
1302     return new_boxed_VkType<VkMicromapEXT>(unboxed);
1303 }
1304 
delete_VkMicromapEXT(VkMicromapEXT boxed)1305 void delete_VkMicromapEXT(VkMicromapEXT boxed) {
1306     delete_VkType(boxed);
1307 }
1308 
delayed_delete_VkMicromapEXT(VkMicromapEXT boxed,VkDevice device,std::function<void ()> callback)1309 void delayed_delete_VkMicromapEXT(VkMicromapEXT boxed, VkDevice device, std::function<void()> callback) {
1310     delayed_delete_VkType(boxed, device, std::move(callback));
1311 }
1312 
unbox_VkMicromapEXT(VkMicromapEXT boxed)1313 VkMicromapEXT unbox_VkMicromapEXT(VkMicromapEXT boxed) {
1314     return unbox_VkType<VkMicromapEXT>(boxed);
1315 }
1316 
try_unbox_VkMicromapEXT(VkMicromapEXT boxed)1317 VkMicromapEXT try_unbox_VkMicromapEXT(VkMicromapEXT boxed) {
1318     return try_unbox_VkType<VkMicromapEXT>(boxed);
1319 }
1320 
unboxed_to_boxed_non_dispatchable_VkMicromapEXT(VkMicromapEXT unboxed)1321 VkMicromapEXT unboxed_to_boxed_non_dispatchable_VkMicromapEXT(VkMicromapEXT unboxed) {
1322     return unboxed_to_boxed_non_dispatchable_VkType<VkMicromapEXT>(unboxed);
1323 }
1324 
set_boxed_non_dispatchable_VkMicromapEXT(VkMicromapEXT boxed,VkMicromapEXT new_unboxed)1325 void set_boxed_non_dispatchable_VkMicromapEXT(VkMicromapEXT boxed, VkMicromapEXT new_unboxed) {
1326     set_boxed_non_dispatchable_VkType<VkMicromapEXT>(boxed, new_unboxed);
1327 }
1328 
new_boxed_non_dispatchable_VkPipeline(VkPipeline unboxed)1329 VkPipeline new_boxed_non_dispatchable_VkPipeline(VkPipeline unboxed) {
1330     return new_boxed_VkType<VkPipeline>(unboxed);
1331 }
1332 
delete_VkPipeline(VkPipeline boxed)1333 void delete_VkPipeline(VkPipeline boxed) {
1334     delete_VkType(boxed);
1335 }
1336 
delayed_delete_VkPipeline(VkPipeline boxed,VkDevice device,std::function<void ()> callback)1337 void delayed_delete_VkPipeline(VkPipeline boxed, VkDevice device, std::function<void()> callback) {
1338     delayed_delete_VkType(boxed, device, std::move(callback));
1339 }
1340 
unbox_VkPipeline(VkPipeline boxed)1341 VkPipeline unbox_VkPipeline(VkPipeline boxed) {
1342     return unbox_VkType<VkPipeline>(boxed);
1343 }
1344 
try_unbox_VkPipeline(VkPipeline boxed)1345 VkPipeline try_unbox_VkPipeline(VkPipeline boxed) {
1346     return try_unbox_VkType<VkPipeline>(boxed);
1347 }
1348 
unboxed_to_boxed_non_dispatchable_VkPipeline(VkPipeline unboxed)1349 VkPipeline unboxed_to_boxed_non_dispatchable_VkPipeline(VkPipeline unboxed) {
1350     return unboxed_to_boxed_non_dispatchable_VkType<VkPipeline>(unboxed);
1351 }
1352 
set_boxed_non_dispatchable_VkPipeline(VkPipeline boxed,VkPipeline new_unboxed)1353 void set_boxed_non_dispatchable_VkPipeline(VkPipeline boxed, VkPipeline new_unboxed) {
1354     set_boxed_non_dispatchable_VkType<VkPipeline>(boxed, new_unboxed);
1355 }
1356 
new_boxed_non_dispatchable_VkPipelineCache(VkPipelineCache unboxed)1357 VkPipelineCache new_boxed_non_dispatchable_VkPipelineCache(VkPipelineCache unboxed) {
1358     return new_boxed_VkType<VkPipelineCache>(unboxed);
1359 }
1360 
delete_VkPipelineCache(VkPipelineCache boxed)1361 void delete_VkPipelineCache(VkPipelineCache boxed) {
1362     delete_VkType(boxed);
1363 }
1364 
delayed_delete_VkPipelineCache(VkPipelineCache boxed,VkDevice device,std::function<void ()> callback)1365 void delayed_delete_VkPipelineCache(VkPipelineCache boxed, VkDevice device, std::function<void()> callback) {
1366     delayed_delete_VkType(boxed, device, std::move(callback));
1367 }
1368 
unbox_VkPipelineCache(VkPipelineCache boxed)1369 VkPipelineCache unbox_VkPipelineCache(VkPipelineCache boxed) {
1370     return unbox_VkType<VkPipelineCache>(boxed);
1371 }
1372 
try_unbox_VkPipelineCache(VkPipelineCache boxed)1373 VkPipelineCache try_unbox_VkPipelineCache(VkPipelineCache boxed) {
1374     return try_unbox_VkType<VkPipelineCache>(boxed);
1375 }
1376 
unboxed_to_boxed_non_dispatchable_VkPipelineCache(VkPipelineCache unboxed)1377 VkPipelineCache unboxed_to_boxed_non_dispatchable_VkPipelineCache(VkPipelineCache unboxed) {
1378     return unboxed_to_boxed_non_dispatchable_VkType<VkPipelineCache>(unboxed);
1379 }
1380 
set_boxed_non_dispatchable_VkPipelineCache(VkPipelineCache boxed,VkPipelineCache new_unboxed)1381 void set_boxed_non_dispatchable_VkPipelineCache(VkPipelineCache boxed, VkPipelineCache new_unboxed) {
1382     set_boxed_non_dispatchable_VkType<VkPipelineCache>(boxed, new_unboxed);
1383 }
1384 
new_boxed_non_dispatchable_VkPipelineLayout(VkPipelineLayout unboxed)1385 VkPipelineLayout new_boxed_non_dispatchable_VkPipelineLayout(VkPipelineLayout unboxed) {
1386     return new_boxed_VkType<VkPipelineLayout>(unboxed);
1387 }
1388 
delete_VkPipelineLayout(VkPipelineLayout boxed)1389 void delete_VkPipelineLayout(VkPipelineLayout boxed) {
1390     delete_VkType(boxed);
1391 }
1392 
delayed_delete_VkPipelineLayout(VkPipelineLayout boxed,VkDevice device,std::function<void ()> callback)1393 void delayed_delete_VkPipelineLayout(VkPipelineLayout boxed, VkDevice device, std::function<void()> callback) {
1394     delayed_delete_VkType(boxed, device, std::move(callback));
1395 }
1396 
unbox_VkPipelineLayout(VkPipelineLayout boxed)1397 VkPipelineLayout unbox_VkPipelineLayout(VkPipelineLayout boxed) {
1398     return unbox_VkType<VkPipelineLayout>(boxed);
1399 }
1400 
try_unbox_VkPipelineLayout(VkPipelineLayout boxed)1401 VkPipelineLayout try_unbox_VkPipelineLayout(VkPipelineLayout boxed) {
1402     return try_unbox_VkType<VkPipelineLayout>(boxed);
1403 }
1404 
unboxed_to_boxed_non_dispatchable_VkPipelineLayout(VkPipelineLayout unboxed)1405 VkPipelineLayout unboxed_to_boxed_non_dispatchable_VkPipelineLayout(VkPipelineLayout unboxed) {
1406     return unboxed_to_boxed_non_dispatchable_VkType<VkPipelineLayout>(unboxed);
1407 }
1408 
set_boxed_non_dispatchable_VkPipelineLayout(VkPipelineLayout boxed,VkPipelineLayout new_unboxed)1409 void set_boxed_non_dispatchable_VkPipelineLayout(VkPipelineLayout boxed, VkPipelineLayout new_unboxed) {
1410     set_boxed_non_dispatchable_VkType<VkPipelineLayout>(boxed, new_unboxed);
1411 }
1412 
new_boxed_non_dispatchable_VkPrivateDataSlot(VkPrivateDataSlot unboxed)1413 VkPrivateDataSlot new_boxed_non_dispatchable_VkPrivateDataSlot(VkPrivateDataSlot unboxed) {
1414     return new_boxed_VkType<VkPrivateDataSlot>(unboxed);
1415 }
1416 
delete_VkPrivateDataSlot(VkPrivateDataSlot boxed)1417 void delete_VkPrivateDataSlot(VkPrivateDataSlot boxed) {
1418     delete_VkType(boxed);
1419 }
1420 
delayed_delete_VkPrivateDataSlot(VkPrivateDataSlot boxed,VkDevice device,std::function<void ()> callback)1421 void delayed_delete_VkPrivateDataSlot(VkPrivateDataSlot boxed, VkDevice device, std::function<void()> callback) {
1422     delayed_delete_VkType(boxed, device, std::move(callback));
1423 }
1424 
unbox_VkPrivateDataSlot(VkPrivateDataSlot boxed)1425 VkPrivateDataSlot unbox_VkPrivateDataSlot(VkPrivateDataSlot boxed) {
1426     return unbox_VkType<VkPrivateDataSlot>(boxed);
1427 }
1428 
try_unbox_VkPrivateDataSlot(VkPrivateDataSlot boxed)1429 VkPrivateDataSlot try_unbox_VkPrivateDataSlot(VkPrivateDataSlot boxed) {
1430     return try_unbox_VkType<VkPrivateDataSlot>(boxed);
1431 }
1432 
unboxed_to_boxed_non_dispatchable_VkPrivateDataSlot(VkPrivateDataSlot unboxed)1433 VkPrivateDataSlot unboxed_to_boxed_non_dispatchable_VkPrivateDataSlot(VkPrivateDataSlot unboxed) {
1434     return unboxed_to_boxed_non_dispatchable_VkType<VkPrivateDataSlot>(unboxed);
1435 }
1436 
set_boxed_non_dispatchable_VkPrivateDataSlot(VkPrivateDataSlot boxed,VkPrivateDataSlot new_unboxed)1437 void set_boxed_non_dispatchable_VkPrivateDataSlot(VkPrivateDataSlot boxed, VkPrivateDataSlot new_unboxed) {
1438     set_boxed_non_dispatchable_VkType<VkPrivateDataSlot>(boxed, new_unboxed);
1439 }
1440 
new_boxed_non_dispatchable_VkQueryPool(VkQueryPool unboxed)1441 VkQueryPool new_boxed_non_dispatchable_VkQueryPool(VkQueryPool unboxed) {
1442     return new_boxed_VkType<VkQueryPool>(unboxed);
1443 }
1444 
delete_VkQueryPool(VkQueryPool boxed)1445 void delete_VkQueryPool(VkQueryPool boxed) {
1446     delete_VkType(boxed);
1447 }
1448 
delayed_delete_VkQueryPool(VkQueryPool boxed,VkDevice device,std::function<void ()> callback)1449 void delayed_delete_VkQueryPool(VkQueryPool boxed, VkDevice device, std::function<void()> callback) {
1450     delayed_delete_VkType(boxed, device, std::move(callback));
1451 }
1452 
unbox_VkQueryPool(VkQueryPool boxed)1453 VkQueryPool unbox_VkQueryPool(VkQueryPool boxed) {
1454     return unbox_VkType<VkQueryPool>(boxed);
1455 }
1456 
try_unbox_VkQueryPool(VkQueryPool boxed)1457 VkQueryPool try_unbox_VkQueryPool(VkQueryPool boxed) {
1458     return try_unbox_VkType<VkQueryPool>(boxed);
1459 }
1460 
unboxed_to_boxed_non_dispatchable_VkQueryPool(VkQueryPool unboxed)1461 VkQueryPool unboxed_to_boxed_non_dispatchable_VkQueryPool(VkQueryPool unboxed) {
1462     return unboxed_to_boxed_non_dispatchable_VkType<VkQueryPool>(unboxed);
1463 }
1464 
set_boxed_non_dispatchable_VkQueryPool(VkQueryPool boxed,VkQueryPool new_unboxed)1465 void set_boxed_non_dispatchable_VkQueryPool(VkQueryPool boxed, VkQueryPool new_unboxed) {
1466     set_boxed_non_dispatchable_VkType<VkQueryPool>(boxed, new_unboxed);
1467 }
1468 
new_boxed_non_dispatchable_VkRenderPass(VkRenderPass unboxed)1469 VkRenderPass new_boxed_non_dispatchable_VkRenderPass(VkRenderPass unboxed) {
1470     return new_boxed_VkType<VkRenderPass>(unboxed);
1471 }
1472 
delete_VkRenderPass(VkRenderPass boxed)1473 void delete_VkRenderPass(VkRenderPass boxed) {
1474     delete_VkType(boxed);
1475 }
1476 
delayed_delete_VkRenderPass(VkRenderPass boxed,VkDevice device,std::function<void ()> callback)1477 void delayed_delete_VkRenderPass(VkRenderPass boxed, VkDevice device, std::function<void()> callback) {
1478     delayed_delete_VkType(boxed, device, std::move(callback));
1479 }
1480 
unbox_VkRenderPass(VkRenderPass boxed)1481 VkRenderPass unbox_VkRenderPass(VkRenderPass boxed) {
1482     return unbox_VkType<VkRenderPass>(boxed);
1483 }
1484 
try_unbox_VkRenderPass(VkRenderPass boxed)1485 VkRenderPass try_unbox_VkRenderPass(VkRenderPass boxed) {
1486     return try_unbox_VkType<VkRenderPass>(boxed);
1487 }
1488 
unboxed_to_boxed_non_dispatchable_VkRenderPass(VkRenderPass unboxed)1489 VkRenderPass unboxed_to_boxed_non_dispatchable_VkRenderPass(VkRenderPass unboxed) {
1490     return unboxed_to_boxed_non_dispatchable_VkType<VkRenderPass>(unboxed);
1491 }
1492 
set_boxed_non_dispatchable_VkRenderPass(VkRenderPass boxed,VkRenderPass new_unboxed)1493 void set_boxed_non_dispatchable_VkRenderPass(VkRenderPass boxed, VkRenderPass new_unboxed) {
1494     set_boxed_non_dispatchable_VkType<VkRenderPass>(boxed, new_unboxed);
1495 }
1496 
new_boxed_non_dispatchable_VkSampler(VkSampler unboxed)1497 VkSampler new_boxed_non_dispatchable_VkSampler(VkSampler unboxed) {
1498     return new_boxed_VkType<VkSampler>(unboxed);
1499 }
1500 
delete_VkSampler(VkSampler boxed)1501 void delete_VkSampler(VkSampler boxed) {
1502     delete_VkType(boxed);
1503 }
1504 
delayed_delete_VkSampler(VkSampler boxed,VkDevice device,std::function<void ()> callback)1505 void delayed_delete_VkSampler(VkSampler boxed, VkDevice device, std::function<void()> callback) {
1506     delayed_delete_VkType(boxed, device, std::move(callback));
1507 }
1508 
unbox_VkSampler(VkSampler boxed)1509 VkSampler unbox_VkSampler(VkSampler boxed) {
1510     return unbox_VkType<VkSampler>(boxed);
1511 }
1512 
try_unbox_VkSampler(VkSampler boxed)1513 VkSampler try_unbox_VkSampler(VkSampler boxed) {
1514     return try_unbox_VkType<VkSampler>(boxed);
1515 }
1516 
unboxed_to_boxed_non_dispatchable_VkSampler(VkSampler unboxed)1517 VkSampler unboxed_to_boxed_non_dispatchable_VkSampler(VkSampler unboxed) {
1518     return unboxed_to_boxed_non_dispatchable_VkType<VkSampler>(unboxed);
1519 }
1520 
set_boxed_non_dispatchable_VkSampler(VkSampler boxed,VkSampler new_unboxed)1521 void set_boxed_non_dispatchable_VkSampler(VkSampler boxed, VkSampler new_unboxed) {
1522     set_boxed_non_dispatchable_VkType<VkSampler>(boxed, new_unboxed);
1523 }
1524 
new_boxed_non_dispatchable_VkSamplerYcbcrConversion(VkSamplerYcbcrConversion unboxed)1525 VkSamplerYcbcrConversion new_boxed_non_dispatchable_VkSamplerYcbcrConversion(VkSamplerYcbcrConversion unboxed) {
1526     return new_boxed_VkType<VkSamplerYcbcrConversion>(unboxed);
1527 }
1528 
delete_VkSamplerYcbcrConversion(VkSamplerYcbcrConversion boxed)1529 void delete_VkSamplerYcbcrConversion(VkSamplerYcbcrConversion boxed) {
1530     delete_VkType(boxed);
1531 }
1532 
delayed_delete_VkSamplerYcbcrConversion(VkSamplerYcbcrConversion boxed,VkDevice device,std::function<void ()> callback)1533 void delayed_delete_VkSamplerYcbcrConversion(VkSamplerYcbcrConversion boxed, VkDevice device, std::function<void()> callback) {
1534     delayed_delete_VkType(boxed, device, std::move(callback));
1535 }
1536 
unbox_VkSamplerYcbcrConversion(VkSamplerYcbcrConversion boxed)1537 VkSamplerYcbcrConversion unbox_VkSamplerYcbcrConversion(VkSamplerYcbcrConversion boxed) {
1538     return unbox_VkType<VkSamplerYcbcrConversion>(boxed);
1539 }
1540 
try_unbox_VkSamplerYcbcrConversion(VkSamplerYcbcrConversion boxed)1541 VkSamplerYcbcrConversion try_unbox_VkSamplerYcbcrConversion(VkSamplerYcbcrConversion boxed) {
1542     return try_unbox_VkType<VkSamplerYcbcrConversion>(boxed);
1543 }
1544 
unboxed_to_boxed_non_dispatchable_VkSamplerYcbcrConversion(VkSamplerYcbcrConversion unboxed)1545 VkSamplerYcbcrConversion unboxed_to_boxed_non_dispatchable_VkSamplerYcbcrConversion(VkSamplerYcbcrConversion unboxed) {
1546     return unboxed_to_boxed_non_dispatchable_VkType<VkSamplerYcbcrConversion>(unboxed);
1547 }
1548 
set_boxed_non_dispatchable_VkSamplerYcbcrConversion(VkSamplerYcbcrConversion boxed,VkSamplerYcbcrConversion new_unboxed)1549 void set_boxed_non_dispatchable_VkSamplerYcbcrConversion(VkSamplerYcbcrConversion boxed, VkSamplerYcbcrConversion new_unboxed) {
1550     set_boxed_non_dispatchable_VkType<VkSamplerYcbcrConversion>(boxed, new_unboxed);
1551 }
1552 
new_boxed_non_dispatchable_VkSemaphore(VkSemaphore unboxed)1553 VkSemaphore new_boxed_non_dispatchable_VkSemaphore(VkSemaphore unboxed) {
1554     return new_boxed_VkType<VkSemaphore>(unboxed);
1555 }
1556 
delete_VkSemaphore(VkSemaphore boxed)1557 void delete_VkSemaphore(VkSemaphore boxed) {
1558     delete_VkType(boxed);
1559 }
1560 
delayed_delete_VkSemaphore(VkSemaphore boxed,VkDevice device,std::function<void ()> callback)1561 void delayed_delete_VkSemaphore(VkSemaphore boxed, VkDevice device, std::function<void()> callback) {
1562     delayed_delete_VkType(boxed, device, std::move(callback));
1563 }
1564 
unbox_VkSemaphore(VkSemaphore boxed)1565 VkSemaphore unbox_VkSemaphore(VkSemaphore boxed) {
1566     return unbox_VkType<VkSemaphore>(boxed);
1567 }
1568 
try_unbox_VkSemaphore(VkSemaphore boxed)1569 VkSemaphore try_unbox_VkSemaphore(VkSemaphore boxed) {
1570     return try_unbox_VkType<VkSemaphore>(boxed);
1571 }
1572 
unboxed_to_boxed_non_dispatchable_VkSemaphore(VkSemaphore unboxed)1573 VkSemaphore unboxed_to_boxed_non_dispatchable_VkSemaphore(VkSemaphore unboxed) {
1574     return unboxed_to_boxed_non_dispatchable_VkType<VkSemaphore>(unboxed);
1575 }
1576 
set_boxed_non_dispatchable_VkSemaphore(VkSemaphore boxed,VkSemaphore new_unboxed)1577 void set_boxed_non_dispatchable_VkSemaphore(VkSemaphore boxed, VkSemaphore new_unboxed) {
1578     set_boxed_non_dispatchable_VkType<VkSemaphore>(boxed, new_unboxed);
1579 }
1580 
new_boxed_non_dispatchable_VkShaderModule(VkShaderModule unboxed)1581 VkShaderModule new_boxed_non_dispatchable_VkShaderModule(VkShaderModule unboxed) {
1582     return new_boxed_VkType<VkShaderModule>(unboxed);
1583 }
1584 
delete_VkShaderModule(VkShaderModule boxed)1585 void delete_VkShaderModule(VkShaderModule boxed) {
1586     delete_VkType(boxed);
1587 }
1588 
delayed_delete_VkShaderModule(VkShaderModule boxed,VkDevice device,std::function<void ()> callback)1589 void delayed_delete_VkShaderModule(VkShaderModule boxed, VkDevice device, std::function<void()> callback) {
1590     delayed_delete_VkType(boxed, device, std::move(callback));
1591 }
1592 
unbox_VkShaderModule(VkShaderModule boxed)1593 VkShaderModule unbox_VkShaderModule(VkShaderModule boxed) {
1594     return unbox_VkType<VkShaderModule>(boxed);
1595 }
1596 
try_unbox_VkShaderModule(VkShaderModule boxed)1597 VkShaderModule try_unbox_VkShaderModule(VkShaderModule boxed) {
1598     return try_unbox_VkType<VkShaderModule>(boxed);
1599 }
1600 
unboxed_to_boxed_non_dispatchable_VkShaderModule(VkShaderModule unboxed)1601 VkShaderModule unboxed_to_boxed_non_dispatchable_VkShaderModule(VkShaderModule unboxed) {
1602     return unboxed_to_boxed_non_dispatchable_VkType<VkShaderModule>(unboxed);
1603 }
1604 
set_boxed_non_dispatchable_VkShaderModule(VkShaderModule boxed,VkShaderModule new_unboxed)1605 void set_boxed_non_dispatchable_VkShaderModule(VkShaderModule boxed, VkShaderModule new_unboxed) {
1606     set_boxed_non_dispatchable_VkType<VkShaderModule>(boxed, new_unboxed);
1607 }
1608 
new_boxed_non_dispatchable_VkSurfaceKHR(VkSurfaceKHR unboxed)1609 VkSurfaceKHR new_boxed_non_dispatchable_VkSurfaceKHR(VkSurfaceKHR unboxed) {
1610     return new_boxed_VkType<VkSurfaceKHR>(unboxed);
1611 }
1612 
delete_VkSurfaceKHR(VkSurfaceKHR boxed)1613 void delete_VkSurfaceKHR(VkSurfaceKHR boxed) {
1614     delete_VkType(boxed);
1615 }
1616 
delayed_delete_VkSurfaceKHR(VkSurfaceKHR boxed,VkDevice device,std::function<void ()> callback)1617 void delayed_delete_VkSurfaceKHR(VkSurfaceKHR boxed, VkDevice device, std::function<void()> callback) {
1618     delayed_delete_VkType(boxed, device, std::move(callback));
1619 }
1620 
unbox_VkSurfaceKHR(VkSurfaceKHR boxed)1621 VkSurfaceKHR unbox_VkSurfaceKHR(VkSurfaceKHR boxed) {
1622     return unbox_VkType<VkSurfaceKHR>(boxed);
1623 }
1624 
try_unbox_VkSurfaceKHR(VkSurfaceKHR boxed)1625 VkSurfaceKHR try_unbox_VkSurfaceKHR(VkSurfaceKHR boxed) {
1626     return try_unbox_VkType<VkSurfaceKHR>(boxed);
1627 }
1628 
unboxed_to_boxed_non_dispatchable_VkSurfaceKHR(VkSurfaceKHR unboxed)1629 VkSurfaceKHR unboxed_to_boxed_non_dispatchable_VkSurfaceKHR(VkSurfaceKHR unboxed) {
1630     return unboxed_to_boxed_non_dispatchable_VkType<VkSurfaceKHR>(unboxed);
1631 }
1632 
set_boxed_non_dispatchable_VkSurfaceKHR(VkSurfaceKHR boxed,VkSurfaceKHR new_unboxed)1633 void set_boxed_non_dispatchable_VkSurfaceKHR(VkSurfaceKHR boxed, VkSurfaceKHR new_unboxed) {
1634     set_boxed_non_dispatchable_VkType<VkSurfaceKHR>(boxed, new_unboxed);
1635 }
1636 
new_boxed_non_dispatchable_VkSwapchainKHR(VkSwapchainKHR unboxed)1637 VkSwapchainKHR new_boxed_non_dispatchable_VkSwapchainKHR(VkSwapchainKHR unboxed) {
1638     return new_boxed_VkType<VkSwapchainKHR>(unboxed);
1639 }
1640 
delete_VkSwapchainKHR(VkSwapchainKHR boxed)1641 void delete_VkSwapchainKHR(VkSwapchainKHR boxed) {
1642     delete_VkType(boxed);
1643 }
1644 
delayed_delete_VkSwapchainKHR(VkSwapchainKHR boxed,VkDevice device,std::function<void ()> callback)1645 void delayed_delete_VkSwapchainKHR(VkSwapchainKHR boxed, VkDevice device, std::function<void()> callback) {
1646     delayed_delete_VkType(boxed, device, std::move(callback));
1647 }
1648 
unbox_VkSwapchainKHR(VkSwapchainKHR boxed)1649 VkSwapchainKHR unbox_VkSwapchainKHR(VkSwapchainKHR boxed) {
1650     return unbox_VkType<VkSwapchainKHR>(boxed);
1651 }
1652 
try_unbox_VkSwapchainKHR(VkSwapchainKHR boxed)1653 VkSwapchainKHR try_unbox_VkSwapchainKHR(VkSwapchainKHR boxed) {
1654     return try_unbox_VkType<VkSwapchainKHR>(boxed);
1655 }
1656 
unboxed_to_boxed_non_dispatchable_VkSwapchainKHR(VkSwapchainKHR unboxed)1657 VkSwapchainKHR unboxed_to_boxed_non_dispatchable_VkSwapchainKHR(VkSwapchainKHR unboxed) {
1658     return unboxed_to_boxed_non_dispatchable_VkType<VkSwapchainKHR>(unboxed);
1659 }
1660 
set_boxed_non_dispatchable_VkSwapchainKHR(VkSwapchainKHR boxed,VkSwapchainKHR new_unboxed)1661 void set_boxed_non_dispatchable_VkSwapchainKHR(VkSwapchainKHR boxed, VkSwapchainKHR new_unboxed) {
1662     set_boxed_non_dispatchable_VkType<VkSwapchainKHR>(boxed, new_unboxed);
1663 }
1664 
new_boxed_non_dispatchable_VkValidationCacheEXT(VkValidationCacheEXT unboxed)1665 VkValidationCacheEXT new_boxed_non_dispatchable_VkValidationCacheEXT(VkValidationCacheEXT unboxed) {
1666     return new_boxed_VkType<VkValidationCacheEXT>(unboxed);
1667 }
1668 
delete_VkValidationCacheEXT(VkValidationCacheEXT boxed)1669 void delete_VkValidationCacheEXT(VkValidationCacheEXT boxed) {
1670     delete_VkType(boxed);
1671 }
1672 
delayed_delete_VkValidationCacheEXT(VkValidationCacheEXT boxed,VkDevice device,std::function<void ()> callback)1673 void delayed_delete_VkValidationCacheEXT(VkValidationCacheEXT boxed, VkDevice device, std::function<void()> callback) {
1674     delayed_delete_VkType(boxed, device, std::move(callback));
1675 }
1676 
unbox_VkValidationCacheEXT(VkValidationCacheEXT boxed)1677 VkValidationCacheEXT unbox_VkValidationCacheEXT(VkValidationCacheEXT boxed) {
1678     return unbox_VkType<VkValidationCacheEXT>(boxed);
1679 }
1680 
try_unbox_VkValidationCacheEXT(VkValidationCacheEXT boxed)1681 VkValidationCacheEXT try_unbox_VkValidationCacheEXT(VkValidationCacheEXT boxed) {
1682     return try_unbox_VkType<VkValidationCacheEXT>(boxed);
1683 }
1684 
unboxed_to_boxed_non_dispatchable_VkValidationCacheEXT(VkValidationCacheEXT unboxed)1685 VkValidationCacheEXT unboxed_to_boxed_non_dispatchable_VkValidationCacheEXT(VkValidationCacheEXT unboxed) {
1686     return unboxed_to_boxed_non_dispatchable_VkType<VkValidationCacheEXT>(unboxed);
1687 }
1688 
set_boxed_non_dispatchable_VkValidationCacheEXT(VkValidationCacheEXT boxed,VkValidationCacheEXT new_unboxed)1689 void set_boxed_non_dispatchable_VkValidationCacheEXT(VkValidationCacheEXT boxed, VkValidationCacheEXT new_unboxed) {
1690     set_boxed_non_dispatchable_VkType<VkValidationCacheEXT>(boxed, new_unboxed);
1691 }
1692 
1693 }  // namespace vk
1694 }  // namespace gfxstream
1695