Skip to main content

vulkan_rust_sys/
handles.rs

1/// Trait implemented by all Vulkan handle types.
2pub trait Handle: Copy + Eq + core::hash::Hash {
3    /// The raw representation type (`usize` for dispatchable, `u64` for non-dispatchable).
4    type Repr;
5    /// Returns the null handle.
6    fn null() -> Self;
7    /// Constructs a handle from its raw representation.
8    fn from_raw(raw: Self::Repr) -> Self;
9    /// Returns the raw representation.
10    fn as_raw(self) -> Self::Repr;
11    /// Returns `true` if this is the null handle.
12    fn is_null(self) -> bool;
13}
14///[`VkInstance`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkInstance.html)
15///
16///Dispatchable handle (pointer-sized).
17#[repr(transparent)]
18#[derive(Copy, Clone, PartialEq, Eq, Hash)]
19#[doc(alias = "VkInstance")]
20pub struct Instance(usize);
21impl Handle for Instance {
22    type Repr = usize;
23    #[inline]
24    fn null() -> Self {
25        Self(0usize)
26    }
27    #[inline]
28    fn from_raw(raw: usize) -> Self {
29        Self(raw)
30    }
31    #[inline]
32    fn as_raw(self) -> usize {
33        self.0
34    }
35    #[inline]
36    fn is_null(self) -> bool {
37        self.0 == 0usize
38    }
39}
40impl Default for Instance {
41    #[inline]
42    fn default() -> Self {
43        Self::null()
44    }
45}
46impl core::fmt::Debug for Instance {
47    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
48        write!(f, "{}({:#x})", stringify!(Instance), self.0)
49    }
50}
51///[`VkPhysicalDevice`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevice.html)
52///
53///Dispatchable handle (pointer-sized).
54///Parent: [`Instance`].
55#[repr(transparent)]
56#[derive(Copy, Clone, PartialEq, Eq, Hash)]
57#[doc(alias = "VkPhysicalDevice")]
58pub struct PhysicalDevice(usize);
59impl Handle for PhysicalDevice {
60    type Repr = usize;
61    #[inline]
62    fn null() -> Self {
63        Self(0usize)
64    }
65    #[inline]
66    fn from_raw(raw: usize) -> Self {
67        Self(raw)
68    }
69    #[inline]
70    fn as_raw(self) -> usize {
71        self.0
72    }
73    #[inline]
74    fn is_null(self) -> bool {
75        self.0 == 0usize
76    }
77}
78impl Default for PhysicalDevice {
79    #[inline]
80    fn default() -> Self {
81        Self::null()
82    }
83}
84impl core::fmt::Debug for PhysicalDevice {
85    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
86        write!(f, "{}({:#x})", stringify!(PhysicalDevice), self.0)
87    }
88}
89///[`VkDevice`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDevice.html)
90///
91///Dispatchable handle (pointer-sized).
92///Parent: [`PhysicalDevice`].
93#[repr(transparent)]
94#[derive(Copy, Clone, PartialEq, Eq, Hash)]
95#[doc(alias = "VkDevice")]
96pub struct Device(usize);
97impl Handle for Device {
98    type Repr = usize;
99    #[inline]
100    fn null() -> Self {
101        Self(0usize)
102    }
103    #[inline]
104    fn from_raw(raw: usize) -> Self {
105        Self(raw)
106    }
107    #[inline]
108    fn as_raw(self) -> usize {
109        self.0
110    }
111    #[inline]
112    fn is_null(self) -> bool {
113        self.0 == 0usize
114    }
115}
116impl Default for Device {
117    #[inline]
118    fn default() -> Self {
119        Self::null()
120    }
121}
122impl core::fmt::Debug for Device {
123    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
124        write!(f, "{}({:#x})", stringify!(Device), self.0)
125    }
126}
127///[`VkQueue`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueue.html)
128///
129///Dispatchable handle (pointer-sized).
130///Parent: [`Device`].
131#[repr(transparent)]
132#[derive(Copy, Clone, PartialEq, Eq, Hash)]
133#[doc(alias = "VkQueue")]
134pub struct Queue(usize);
135impl Handle for Queue {
136    type Repr = usize;
137    #[inline]
138    fn null() -> Self {
139        Self(0usize)
140    }
141    #[inline]
142    fn from_raw(raw: usize) -> Self {
143        Self(raw)
144    }
145    #[inline]
146    fn as_raw(self) -> usize {
147        self.0
148    }
149    #[inline]
150    fn is_null(self) -> bool {
151        self.0 == 0usize
152    }
153}
154impl Default for Queue {
155    #[inline]
156    fn default() -> Self {
157        Self::null()
158    }
159}
160impl core::fmt::Debug for Queue {
161    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
162        write!(f, "{}({:#x})", stringify!(Queue), self.0)
163    }
164}
165///[`VkCommandBuffer`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandBuffer.html)
166///
167///Dispatchable handle (pointer-sized).
168///Parent: [`CommandPool`].
169#[repr(transparent)]
170#[derive(Copy, Clone, PartialEq, Eq, Hash)]
171#[doc(alias = "VkCommandBuffer")]
172pub struct CommandBuffer(usize);
173impl Handle for CommandBuffer {
174    type Repr = usize;
175    #[inline]
176    fn null() -> Self {
177        Self(0usize)
178    }
179    #[inline]
180    fn from_raw(raw: usize) -> Self {
181        Self(raw)
182    }
183    #[inline]
184    fn as_raw(self) -> usize {
185        self.0
186    }
187    #[inline]
188    fn is_null(self) -> bool {
189        self.0 == 0usize
190    }
191}
192impl Default for CommandBuffer {
193    #[inline]
194    fn default() -> Self {
195        Self::null()
196    }
197}
198impl core::fmt::Debug for CommandBuffer {
199    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
200        write!(f, "{}({:#x})", stringify!(CommandBuffer), self.0)
201    }
202}
203///[`VkDeviceMemory`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceMemory.html)
204///
205///Non-dispatchable handle (u64).
206///Parent: [`Device`].
207#[repr(transparent)]
208#[derive(Copy, Clone, PartialEq, Eq, Hash)]
209#[doc(alias = "VkDeviceMemory")]
210pub struct DeviceMemory(u64);
211impl Handle for DeviceMemory {
212    type Repr = u64;
213    #[inline]
214    fn null() -> Self {
215        Self(0u64)
216    }
217    #[inline]
218    fn from_raw(raw: u64) -> Self {
219        Self(raw)
220    }
221    #[inline]
222    fn as_raw(self) -> u64 {
223        self.0
224    }
225    #[inline]
226    fn is_null(self) -> bool {
227        self.0 == 0u64
228    }
229}
230impl Default for DeviceMemory {
231    #[inline]
232    fn default() -> Self {
233        Self::null()
234    }
235}
236impl core::fmt::Debug for DeviceMemory {
237    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
238        write!(f, "{}({:#x})", stringify!(DeviceMemory), self.0)
239    }
240}
241///[`VkCommandPool`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandPool.html)
242///
243///Non-dispatchable handle (u64).
244///Parent: [`Device`].
245#[repr(transparent)]
246#[derive(Copy, Clone, PartialEq, Eq, Hash)]
247#[doc(alias = "VkCommandPool")]
248pub struct CommandPool(u64);
249impl Handle for CommandPool {
250    type Repr = u64;
251    #[inline]
252    fn null() -> Self {
253        Self(0u64)
254    }
255    #[inline]
256    fn from_raw(raw: u64) -> Self {
257        Self(raw)
258    }
259    #[inline]
260    fn as_raw(self) -> u64 {
261        self.0
262    }
263    #[inline]
264    fn is_null(self) -> bool {
265        self.0 == 0u64
266    }
267}
268impl Default for CommandPool {
269    #[inline]
270    fn default() -> Self {
271        Self::null()
272    }
273}
274impl core::fmt::Debug for CommandPool {
275    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
276        write!(f, "{}({:#x})", stringify!(CommandPool), self.0)
277    }
278}
279///[`VkBuffer`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkBuffer.html)
280///
281///Non-dispatchable handle (u64).
282///Parent: [`Device`].
283#[repr(transparent)]
284#[derive(Copy, Clone, PartialEq, Eq, Hash)]
285#[doc(alias = "VkBuffer")]
286pub struct Buffer(u64);
287impl Handle for Buffer {
288    type Repr = u64;
289    #[inline]
290    fn null() -> Self {
291        Self(0u64)
292    }
293    #[inline]
294    fn from_raw(raw: u64) -> Self {
295        Self(raw)
296    }
297    #[inline]
298    fn as_raw(self) -> u64 {
299        self.0
300    }
301    #[inline]
302    fn is_null(self) -> bool {
303        self.0 == 0u64
304    }
305}
306impl Default for Buffer {
307    #[inline]
308    fn default() -> Self {
309        Self::null()
310    }
311}
312impl core::fmt::Debug for Buffer {
313    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
314        write!(f, "{}({:#x})", stringify!(Buffer), self.0)
315    }
316}
317///[`VkBufferView`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferView.html)
318///
319///Non-dispatchable handle (u64).
320///Parent: [`Device`].
321#[repr(transparent)]
322#[derive(Copy, Clone, PartialEq, Eq, Hash)]
323#[doc(alias = "VkBufferView")]
324pub struct BufferView(u64);
325impl Handle for BufferView {
326    type Repr = u64;
327    #[inline]
328    fn null() -> Self {
329        Self(0u64)
330    }
331    #[inline]
332    fn from_raw(raw: u64) -> Self {
333        Self(raw)
334    }
335    #[inline]
336    fn as_raw(self) -> u64 {
337        self.0
338    }
339    #[inline]
340    fn is_null(self) -> bool {
341        self.0 == 0u64
342    }
343}
344impl Default for BufferView {
345    #[inline]
346    fn default() -> Self {
347        Self::null()
348    }
349}
350impl core::fmt::Debug for BufferView {
351    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
352        write!(f, "{}({:#x})", stringify!(BufferView), self.0)
353    }
354}
355///[`VkImage`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkImage.html)
356///
357///Non-dispatchable handle (u64).
358///Parent: [`Device`].
359#[repr(transparent)]
360#[derive(Copy, Clone, PartialEq, Eq, Hash)]
361#[doc(alias = "VkImage")]
362pub struct Image(u64);
363impl Handle for Image {
364    type Repr = u64;
365    #[inline]
366    fn null() -> Self {
367        Self(0u64)
368    }
369    #[inline]
370    fn from_raw(raw: u64) -> Self {
371        Self(raw)
372    }
373    #[inline]
374    fn as_raw(self) -> u64 {
375        self.0
376    }
377    #[inline]
378    fn is_null(self) -> bool {
379        self.0 == 0u64
380    }
381}
382impl Default for Image {
383    #[inline]
384    fn default() -> Self {
385        Self::null()
386    }
387}
388impl core::fmt::Debug for Image {
389    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
390        write!(f, "{}({:#x})", stringify!(Image), self.0)
391    }
392}
393///[`VkImageView`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageView.html)
394///
395///Non-dispatchable handle (u64).
396///Parent: [`Device`].
397#[repr(transparent)]
398#[derive(Copy, Clone, PartialEq, Eq, Hash)]
399#[doc(alias = "VkImageView")]
400pub struct ImageView(u64);
401impl Handle for ImageView {
402    type Repr = u64;
403    #[inline]
404    fn null() -> Self {
405        Self(0u64)
406    }
407    #[inline]
408    fn from_raw(raw: u64) -> Self {
409        Self(raw)
410    }
411    #[inline]
412    fn as_raw(self) -> u64 {
413        self.0
414    }
415    #[inline]
416    fn is_null(self) -> bool {
417        self.0 == 0u64
418    }
419}
420impl Default for ImageView {
421    #[inline]
422    fn default() -> Self {
423        Self::null()
424    }
425}
426impl core::fmt::Debug for ImageView {
427    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
428        write!(f, "{}({:#x})", stringify!(ImageView), self.0)
429    }
430}
431///[`VkShaderModule`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderModule.html)
432///
433///Non-dispatchable handle (u64).
434///Parent: [`Device`].
435#[repr(transparent)]
436#[derive(Copy, Clone, PartialEq, Eq, Hash)]
437#[doc(alias = "VkShaderModule")]
438pub struct ShaderModule(u64);
439impl Handle for ShaderModule {
440    type Repr = u64;
441    #[inline]
442    fn null() -> Self {
443        Self(0u64)
444    }
445    #[inline]
446    fn from_raw(raw: u64) -> Self {
447        Self(raw)
448    }
449    #[inline]
450    fn as_raw(self) -> u64 {
451        self.0
452    }
453    #[inline]
454    fn is_null(self) -> bool {
455        self.0 == 0u64
456    }
457}
458impl Default for ShaderModule {
459    #[inline]
460    fn default() -> Self {
461        Self::null()
462    }
463}
464impl core::fmt::Debug for ShaderModule {
465    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
466        write!(f, "{}({:#x})", stringify!(ShaderModule), self.0)
467    }
468}
469///[`VkPipeline`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipeline.html)
470///
471///Non-dispatchable handle (u64).
472///Parent: [`Device`].
473#[repr(transparent)]
474#[derive(Copy, Clone, PartialEq, Eq, Hash)]
475#[doc(alias = "VkPipeline")]
476pub struct Pipeline(u64);
477impl Handle for Pipeline {
478    type Repr = u64;
479    #[inline]
480    fn null() -> Self {
481        Self(0u64)
482    }
483    #[inline]
484    fn from_raw(raw: u64) -> Self {
485        Self(raw)
486    }
487    #[inline]
488    fn as_raw(self) -> u64 {
489        self.0
490    }
491    #[inline]
492    fn is_null(self) -> bool {
493        self.0 == 0u64
494    }
495}
496impl Default for Pipeline {
497    #[inline]
498    fn default() -> Self {
499        Self::null()
500    }
501}
502impl core::fmt::Debug for Pipeline {
503    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
504        write!(f, "{}({:#x})", stringify!(Pipeline), self.0)
505    }
506}
507///[`VkPipelineLayout`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineLayout.html)
508///
509///Non-dispatchable handle (u64).
510///Parent: [`Device`].
511#[repr(transparent)]
512#[derive(Copy, Clone, PartialEq, Eq, Hash)]
513#[doc(alias = "VkPipelineLayout")]
514pub struct PipelineLayout(u64);
515impl Handle for PipelineLayout {
516    type Repr = u64;
517    #[inline]
518    fn null() -> Self {
519        Self(0u64)
520    }
521    #[inline]
522    fn from_raw(raw: u64) -> Self {
523        Self(raw)
524    }
525    #[inline]
526    fn as_raw(self) -> u64 {
527        self.0
528    }
529    #[inline]
530    fn is_null(self) -> bool {
531        self.0 == 0u64
532    }
533}
534impl Default for PipelineLayout {
535    #[inline]
536    fn default() -> Self {
537        Self::null()
538    }
539}
540impl core::fmt::Debug for PipelineLayout {
541    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
542        write!(f, "{}({:#x})", stringify!(PipelineLayout), self.0)
543    }
544}
545///[`VkSampler`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkSampler.html)
546///
547///Non-dispatchable handle (u64).
548///Parent: [`Device`].
549#[repr(transparent)]
550#[derive(Copy, Clone, PartialEq, Eq, Hash)]
551#[doc(alias = "VkSampler")]
552pub struct Sampler(u64);
553impl Handle for Sampler {
554    type Repr = u64;
555    #[inline]
556    fn null() -> Self {
557        Self(0u64)
558    }
559    #[inline]
560    fn from_raw(raw: u64) -> Self {
561        Self(raw)
562    }
563    #[inline]
564    fn as_raw(self) -> u64 {
565        self.0
566    }
567    #[inline]
568    fn is_null(self) -> bool {
569        self.0 == 0u64
570    }
571}
572impl Default for Sampler {
573    #[inline]
574    fn default() -> Self {
575        Self::null()
576    }
577}
578impl core::fmt::Debug for Sampler {
579    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
580        write!(f, "{}({:#x})", stringify!(Sampler), self.0)
581    }
582}
583///[`VkDescriptorSet`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorSet.html)
584///
585///Non-dispatchable handle (u64).
586///Parent: [`DescriptorPool`].
587#[repr(transparent)]
588#[derive(Copy, Clone, PartialEq, Eq, Hash)]
589#[doc(alias = "VkDescriptorSet")]
590pub struct DescriptorSet(u64);
591impl Handle for DescriptorSet {
592    type Repr = u64;
593    #[inline]
594    fn null() -> Self {
595        Self(0u64)
596    }
597    #[inline]
598    fn from_raw(raw: u64) -> Self {
599        Self(raw)
600    }
601    #[inline]
602    fn as_raw(self) -> u64 {
603        self.0
604    }
605    #[inline]
606    fn is_null(self) -> bool {
607        self.0 == 0u64
608    }
609}
610impl Default for DescriptorSet {
611    #[inline]
612    fn default() -> Self {
613        Self::null()
614    }
615}
616impl core::fmt::Debug for DescriptorSet {
617    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
618        write!(f, "{}({:#x})", stringify!(DescriptorSet), self.0)
619    }
620}
621///[`VkDescriptorSetLayout`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorSetLayout.html)
622///
623///Non-dispatchable handle (u64).
624///Parent: [`Device`].
625#[repr(transparent)]
626#[derive(Copy, Clone, PartialEq, Eq, Hash)]
627#[doc(alias = "VkDescriptorSetLayout")]
628pub struct DescriptorSetLayout(u64);
629impl Handle for DescriptorSetLayout {
630    type Repr = u64;
631    #[inline]
632    fn null() -> Self {
633        Self(0u64)
634    }
635    #[inline]
636    fn from_raw(raw: u64) -> Self {
637        Self(raw)
638    }
639    #[inline]
640    fn as_raw(self) -> u64 {
641        self.0
642    }
643    #[inline]
644    fn is_null(self) -> bool {
645        self.0 == 0u64
646    }
647}
648impl Default for DescriptorSetLayout {
649    #[inline]
650    fn default() -> Self {
651        Self::null()
652    }
653}
654impl core::fmt::Debug for DescriptorSetLayout {
655    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
656        write!(f, "{}({:#x})", stringify!(DescriptorSetLayout), self.0)
657    }
658}
659///[`VkDescriptorPool`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorPool.html)
660///
661///Non-dispatchable handle (u64).
662///Parent: [`Device`].
663#[repr(transparent)]
664#[derive(Copy, Clone, PartialEq, Eq, Hash)]
665#[doc(alias = "VkDescriptorPool")]
666pub struct DescriptorPool(u64);
667impl Handle for DescriptorPool {
668    type Repr = u64;
669    #[inline]
670    fn null() -> Self {
671        Self(0u64)
672    }
673    #[inline]
674    fn from_raw(raw: u64) -> Self {
675        Self(raw)
676    }
677    #[inline]
678    fn as_raw(self) -> u64 {
679        self.0
680    }
681    #[inline]
682    fn is_null(self) -> bool {
683        self.0 == 0u64
684    }
685}
686impl Default for DescriptorPool {
687    #[inline]
688    fn default() -> Self {
689        Self::null()
690    }
691}
692impl core::fmt::Debug for DescriptorPool {
693    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
694        write!(f, "{}({:#x})", stringify!(DescriptorPool), self.0)
695    }
696}
697///[`VkFence`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkFence.html)
698///
699///Non-dispatchable handle (u64).
700///Parent: [`Device`].
701#[repr(transparent)]
702#[derive(Copy, Clone, PartialEq, Eq, Hash)]
703#[doc(alias = "VkFence")]
704pub struct Fence(u64);
705impl Handle for Fence {
706    type Repr = u64;
707    #[inline]
708    fn null() -> Self {
709        Self(0u64)
710    }
711    #[inline]
712    fn from_raw(raw: u64) -> Self {
713        Self(raw)
714    }
715    #[inline]
716    fn as_raw(self) -> u64 {
717        self.0
718    }
719    #[inline]
720    fn is_null(self) -> bool {
721        self.0 == 0u64
722    }
723}
724impl Default for Fence {
725    #[inline]
726    fn default() -> Self {
727        Self::null()
728    }
729}
730impl core::fmt::Debug for Fence {
731    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
732        write!(f, "{}({:#x})", stringify!(Fence), self.0)
733    }
734}
735///[`VkSemaphore`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkSemaphore.html)
736///
737///Non-dispatchable handle (u64).
738///Parent: [`Device`].
739#[repr(transparent)]
740#[derive(Copy, Clone, PartialEq, Eq, Hash)]
741#[doc(alias = "VkSemaphore")]
742pub struct Semaphore(u64);
743impl Handle for Semaphore {
744    type Repr = u64;
745    #[inline]
746    fn null() -> Self {
747        Self(0u64)
748    }
749    #[inline]
750    fn from_raw(raw: u64) -> Self {
751        Self(raw)
752    }
753    #[inline]
754    fn as_raw(self) -> u64 {
755        self.0
756    }
757    #[inline]
758    fn is_null(self) -> bool {
759        self.0 == 0u64
760    }
761}
762impl Default for Semaphore {
763    #[inline]
764    fn default() -> Self {
765        Self::null()
766    }
767}
768impl core::fmt::Debug for Semaphore {
769    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
770        write!(f, "{}({:#x})", stringify!(Semaphore), self.0)
771    }
772}
773///[`VkEvent`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkEvent.html)
774///
775///Non-dispatchable handle (u64).
776///Parent: [`Device`].
777#[repr(transparent)]
778#[derive(Copy, Clone, PartialEq, Eq, Hash)]
779#[doc(alias = "VkEvent")]
780pub struct Event(u64);
781impl Handle for Event {
782    type Repr = u64;
783    #[inline]
784    fn null() -> Self {
785        Self(0u64)
786    }
787    #[inline]
788    fn from_raw(raw: u64) -> Self {
789        Self(raw)
790    }
791    #[inline]
792    fn as_raw(self) -> u64 {
793        self.0
794    }
795    #[inline]
796    fn is_null(self) -> bool {
797        self.0 == 0u64
798    }
799}
800impl Default for Event {
801    #[inline]
802    fn default() -> Self {
803        Self::null()
804    }
805}
806impl core::fmt::Debug for Event {
807    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
808        write!(f, "{}({:#x})", stringify!(Event), self.0)
809    }
810}
811///[`VkQueryPool`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueryPool.html)
812///
813///Non-dispatchable handle (u64).
814///Parent: [`Device`].
815#[repr(transparent)]
816#[derive(Copy, Clone, PartialEq, Eq, Hash)]
817#[doc(alias = "VkQueryPool")]
818pub struct QueryPool(u64);
819impl Handle for QueryPool {
820    type Repr = u64;
821    #[inline]
822    fn null() -> Self {
823        Self(0u64)
824    }
825    #[inline]
826    fn from_raw(raw: u64) -> Self {
827        Self(raw)
828    }
829    #[inline]
830    fn as_raw(self) -> u64 {
831        self.0
832    }
833    #[inline]
834    fn is_null(self) -> bool {
835        self.0 == 0u64
836    }
837}
838impl Default for QueryPool {
839    #[inline]
840    fn default() -> Self {
841        Self::null()
842    }
843}
844impl core::fmt::Debug for QueryPool {
845    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
846        write!(f, "{}({:#x})", stringify!(QueryPool), self.0)
847    }
848}
849///[`VkFramebuffer`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkFramebuffer.html)
850///
851///Non-dispatchable handle (u64).
852///Parent: [`Device`].
853#[repr(transparent)]
854#[derive(Copy, Clone, PartialEq, Eq, Hash)]
855#[doc(alias = "VkFramebuffer")]
856pub struct Framebuffer(u64);
857impl Handle for Framebuffer {
858    type Repr = u64;
859    #[inline]
860    fn null() -> Self {
861        Self(0u64)
862    }
863    #[inline]
864    fn from_raw(raw: u64) -> Self {
865        Self(raw)
866    }
867    #[inline]
868    fn as_raw(self) -> u64 {
869        self.0
870    }
871    #[inline]
872    fn is_null(self) -> bool {
873        self.0 == 0u64
874    }
875}
876impl Default for Framebuffer {
877    #[inline]
878    fn default() -> Self {
879        Self::null()
880    }
881}
882impl core::fmt::Debug for Framebuffer {
883    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
884        write!(f, "{}({:#x})", stringify!(Framebuffer), self.0)
885    }
886}
887///[`VkRenderPass`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPass.html)
888///
889///Non-dispatchable handle (u64).
890///Parent: [`Device`].
891#[repr(transparent)]
892#[derive(Copy, Clone, PartialEq, Eq, Hash)]
893#[doc(alias = "VkRenderPass")]
894pub struct RenderPass(u64);
895impl Handle for RenderPass {
896    type Repr = u64;
897    #[inline]
898    fn null() -> Self {
899        Self(0u64)
900    }
901    #[inline]
902    fn from_raw(raw: u64) -> Self {
903        Self(raw)
904    }
905    #[inline]
906    fn as_raw(self) -> u64 {
907        self.0
908    }
909    #[inline]
910    fn is_null(self) -> bool {
911        self.0 == 0u64
912    }
913}
914impl Default for RenderPass {
915    #[inline]
916    fn default() -> Self {
917        Self::null()
918    }
919}
920impl core::fmt::Debug for RenderPass {
921    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
922        write!(f, "{}({:#x})", stringify!(RenderPass), self.0)
923    }
924}
925///[`VkPipelineCache`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCache.html)
926///
927///Non-dispatchable handle (u64).
928///Parent: [`Device`].
929#[repr(transparent)]
930#[derive(Copy, Clone, PartialEq, Eq, Hash)]
931#[doc(alias = "VkPipelineCache")]
932pub struct PipelineCache(u64);
933impl Handle for PipelineCache {
934    type Repr = u64;
935    #[inline]
936    fn null() -> Self {
937        Self(0u64)
938    }
939    #[inline]
940    fn from_raw(raw: u64) -> Self {
941        Self(raw)
942    }
943    #[inline]
944    fn as_raw(self) -> u64 {
945        self.0
946    }
947    #[inline]
948    fn is_null(self) -> bool {
949        self.0 == 0u64
950    }
951}
952impl Default for PipelineCache {
953    #[inline]
954    fn default() -> Self {
955        Self::null()
956    }
957}
958impl core::fmt::Debug for PipelineCache {
959    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
960        write!(f, "{}({:#x})", stringify!(PipelineCache), self.0)
961    }
962}
963///[`VkPipelineBinaryKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineBinaryKHR.html)
964///
965///Non-dispatchable handle (u64).
966///Parent: [`Device`].
967#[repr(transparent)]
968#[derive(Copy, Clone, PartialEq, Eq, Hash)]
969#[doc(alias = "VkPipelineBinaryKHR")]
970pub struct PipelineBinaryKHR(u64);
971impl Handle for PipelineBinaryKHR {
972    type Repr = u64;
973    #[inline]
974    fn null() -> Self {
975        Self(0u64)
976    }
977    #[inline]
978    fn from_raw(raw: u64) -> Self {
979        Self(raw)
980    }
981    #[inline]
982    fn as_raw(self) -> u64 {
983        self.0
984    }
985    #[inline]
986    fn is_null(self) -> bool {
987        self.0 == 0u64
988    }
989}
990impl Default for PipelineBinaryKHR {
991    #[inline]
992    fn default() -> Self {
993        Self::null()
994    }
995}
996impl core::fmt::Debug for PipelineBinaryKHR {
997    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
998        write!(f, "{}({:#x})", stringify!(PipelineBinaryKHR), self.0)
999    }
1000}
1001///[`VkIndirectCommandsLayoutNV`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutNV.html)
1002///
1003///Non-dispatchable handle (u64).
1004///Parent: [`Device`].
1005#[repr(transparent)]
1006#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1007#[doc(alias = "VkIndirectCommandsLayoutNV")]
1008pub struct IndirectCommandsLayoutNV(u64);
1009impl Handle for IndirectCommandsLayoutNV {
1010    type Repr = u64;
1011    #[inline]
1012    fn null() -> Self {
1013        Self(0u64)
1014    }
1015    #[inline]
1016    fn from_raw(raw: u64) -> Self {
1017        Self(raw)
1018    }
1019    #[inline]
1020    fn as_raw(self) -> u64 {
1021        self.0
1022    }
1023    #[inline]
1024    fn is_null(self) -> bool {
1025        self.0 == 0u64
1026    }
1027}
1028impl Default for IndirectCommandsLayoutNV {
1029    #[inline]
1030    fn default() -> Self {
1031        Self::null()
1032    }
1033}
1034impl core::fmt::Debug for IndirectCommandsLayoutNV {
1035    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1036        write!(f, "{}({:#x})", stringify!(IndirectCommandsLayoutNV), self.0)
1037    }
1038}
1039///[`VkIndirectCommandsLayoutEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutEXT.html)
1040///
1041///Non-dispatchable handle (u64).
1042///Parent: [`Device`].
1043#[repr(transparent)]
1044#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1045#[doc(alias = "VkIndirectCommandsLayoutEXT")]
1046pub struct IndirectCommandsLayoutEXT(u64);
1047impl Handle for IndirectCommandsLayoutEXT {
1048    type Repr = u64;
1049    #[inline]
1050    fn null() -> Self {
1051        Self(0u64)
1052    }
1053    #[inline]
1054    fn from_raw(raw: u64) -> Self {
1055        Self(raw)
1056    }
1057    #[inline]
1058    fn as_raw(self) -> u64 {
1059        self.0
1060    }
1061    #[inline]
1062    fn is_null(self) -> bool {
1063        self.0 == 0u64
1064    }
1065}
1066impl Default for IndirectCommandsLayoutEXT {
1067    #[inline]
1068    fn default() -> Self {
1069        Self::null()
1070    }
1071}
1072impl core::fmt::Debug for IndirectCommandsLayoutEXT {
1073    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1074        write!(f, "{}({:#x})", stringify!(IndirectCommandsLayoutEXT), self.0)
1075    }
1076}
1077///[`VkIndirectExecutionSetEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectExecutionSetEXT.html)
1078///
1079///Non-dispatchable handle (u64).
1080///Parent: [`Device`].
1081#[repr(transparent)]
1082#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1083#[doc(alias = "VkIndirectExecutionSetEXT")]
1084pub struct IndirectExecutionSetEXT(u64);
1085impl Handle for IndirectExecutionSetEXT {
1086    type Repr = u64;
1087    #[inline]
1088    fn null() -> Self {
1089        Self(0u64)
1090    }
1091    #[inline]
1092    fn from_raw(raw: u64) -> Self {
1093        Self(raw)
1094    }
1095    #[inline]
1096    fn as_raw(self) -> u64 {
1097        self.0
1098    }
1099    #[inline]
1100    fn is_null(self) -> bool {
1101        self.0 == 0u64
1102    }
1103}
1104impl Default for IndirectExecutionSetEXT {
1105    #[inline]
1106    fn default() -> Self {
1107        Self::null()
1108    }
1109}
1110impl core::fmt::Debug for IndirectExecutionSetEXT {
1111    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1112        write!(f, "{}({:#x})", stringify!(IndirectExecutionSetEXT), self.0)
1113    }
1114}
1115///[`VkDescriptorUpdateTemplate`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplate.html)
1116///
1117///Non-dispatchable handle (u64).
1118///Parent: [`Device`].
1119#[repr(transparent)]
1120#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1121#[doc(alias = "VkDescriptorUpdateTemplate")]
1122pub struct DescriptorUpdateTemplate(u64);
1123impl Handle for DescriptorUpdateTemplate {
1124    type Repr = u64;
1125    #[inline]
1126    fn null() -> Self {
1127        Self(0u64)
1128    }
1129    #[inline]
1130    fn from_raw(raw: u64) -> Self {
1131        Self(raw)
1132    }
1133    #[inline]
1134    fn as_raw(self) -> u64 {
1135        self.0
1136    }
1137    #[inline]
1138    fn is_null(self) -> bool {
1139        self.0 == 0u64
1140    }
1141}
1142impl Default for DescriptorUpdateTemplate {
1143    #[inline]
1144    fn default() -> Self {
1145        Self::null()
1146    }
1147}
1148impl core::fmt::Debug for DescriptorUpdateTemplate {
1149    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1150        write!(f, "{}({:#x})", stringify!(DescriptorUpdateTemplate), self.0)
1151    }
1152}
1153///[`VkSamplerYcbcrConversion`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkSamplerYcbcrConversion.html)
1154///
1155///Non-dispatchable handle (u64).
1156///Parent: [`Device`].
1157#[repr(transparent)]
1158#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1159#[doc(alias = "VkSamplerYcbcrConversion")]
1160pub struct SamplerYcbcrConversion(u64);
1161impl Handle for SamplerYcbcrConversion {
1162    type Repr = u64;
1163    #[inline]
1164    fn null() -> Self {
1165        Self(0u64)
1166    }
1167    #[inline]
1168    fn from_raw(raw: u64) -> Self {
1169        Self(raw)
1170    }
1171    #[inline]
1172    fn as_raw(self) -> u64 {
1173        self.0
1174    }
1175    #[inline]
1176    fn is_null(self) -> bool {
1177        self.0 == 0u64
1178    }
1179}
1180impl Default for SamplerYcbcrConversion {
1181    #[inline]
1182    fn default() -> Self {
1183        Self::null()
1184    }
1185}
1186impl core::fmt::Debug for SamplerYcbcrConversion {
1187    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1188        write!(f, "{}({:#x})", stringify!(SamplerYcbcrConversion), self.0)
1189    }
1190}
1191///[`VkValidationCacheEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkValidationCacheEXT.html)
1192///
1193///Non-dispatchable handle (u64).
1194///Parent: [`Device`].
1195#[repr(transparent)]
1196#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1197#[doc(alias = "VkValidationCacheEXT")]
1198pub struct ValidationCacheEXT(u64);
1199impl Handle for ValidationCacheEXT {
1200    type Repr = u64;
1201    #[inline]
1202    fn null() -> Self {
1203        Self(0u64)
1204    }
1205    #[inline]
1206    fn from_raw(raw: u64) -> Self {
1207        Self(raw)
1208    }
1209    #[inline]
1210    fn as_raw(self) -> u64 {
1211        self.0
1212    }
1213    #[inline]
1214    fn is_null(self) -> bool {
1215        self.0 == 0u64
1216    }
1217}
1218impl Default for ValidationCacheEXT {
1219    #[inline]
1220    fn default() -> Self {
1221        Self::null()
1222    }
1223}
1224impl core::fmt::Debug for ValidationCacheEXT {
1225    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1226        write!(f, "{}({:#x})", stringify!(ValidationCacheEXT), self.0)
1227    }
1228}
1229///[`VkAccelerationStructureKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureKHR.html)
1230///
1231///Non-dispatchable handle (u64).
1232///Parent: [`Device`].
1233#[repr(transparent)]
1234#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1235#[doc(alias = "VkAccelerationStructureKHR")]
1236pub struct AccelerationStructureKHR(u64);
1237impl Handle for AccelerationStructureKHR {
1238    type Repr = u64;
1239    #[inline]
1240    fn null() -> Self {
1241        Self(0u64)
1242    }
1243    #[inline]
1244    fn from_raw(raw: u64) -> Self {
1245        Self(raw)
1246    }
1247    #[inline]
1248    fn as_raw(self) -> u64 {
1249        self.0
1250    }
1251    #[inline]
1252    fn is_null(self) -> bool {
1253        self.0 == 0u64
1254    }
1255}
1256impl Default for AccelerationStructureKHR {
1257    #[inline]
1258    fn default() -> Self {
1259        Self::null()
1260    }
1261}
1262impl core::fmt::Debug for AccelerationStructureKHR {
1263    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1264        write!(f, "{}({:#x})", stringify!(AccelerationStructureKHR), self.0)
1265    }
1266}
1267///[`VkAccelerationStructureNV`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureNV.html)
1268///
1269///Non-dispatchable handle (u64).
1270///Parent: [`Device`].
1271#[repr(transparent)]
1272#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1273#[doc(alias = "VkAccelerationStructureNV")]
1274pub struct AccelerationStructureNV(u64);
1275impl Handle for AccelerationStructureNV {
1276    type Repr = u64;
1277    #[inline]
1278    fn null() -> Self {
1279        Self(0u64)
1280    }
1281    #[inline]
1282    fn from_raw(raw: u64) -> Self {
1283        Self(raw)
1284    }
1285    #[inline]
1286    fn as_raw(self) -> u64 {
1287        self.0
1288    }
1289    #[inline]
1290    fn is_null(self) -> bool {
1291        self.0 == 0u64
1292    }
1293}
1294impl Default for AccelerationStructureNV {
1295    #[inline]
1296    fn default() -> Self {
1297        Self::null()
1298    }
1299}
1300impl core::fmt::Debug for AccelerationStructureNV {
1301    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1302        write!(f, "{}({:#x})", stringify!(AccelerationStructureNV), self.0)
1303    }
1304}
1305///[`VkPerformanceConfigurationINTEL`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceConfigurationINTEL.html)
1306///
1307///Non-dispatchable handle (u64).
1308///Parent: [`Device`].
1309#[repr(transparent)]
1310#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1311#[doc(alias = "VkPerformanceConfigurationINTEL")]
1312pub struct PerformanceConfigurationINTEL(u64);
1313impl Handle for PerformanceConfigurationINTEL {
1314    type Repr = u64;
1315    #[inline]
1316    fn null() -> Self {
1317        Self(0u64)
1318    }
1319    #[inline]
1320    fn from_raw(raw: u64) -> Self {
1321        Self(raw)
1322    }
1323    #[inline]
1324    fn as_raw(self) -> u64 {
1325        self.0
1326    }
1327    #[inline]
1328    fn is_null(self) -> bool {
1329        self.0 == 0u64
1330    }
1331}
1332impl Default for PerformanceConfigurationINTEL {
1333    #[inline]
1334    fn default() -> Self {
1335        Self::null()
1336    }
1337}
1338impl core::fmt::Debug for PerformanceConfigurationINTEL {
1339    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1340        write!(f, "{}({:#x})", stringify!(PerformanceConfigurationINTEL), self.0)
1341    }
1342}
1343///[`VkBufferCollectionFUCHSIA`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferCollectionFUCHSIA.html)
1344///
1345///Non-dispatchable handle (u64).
1346///Parent: [`Device`].
1347#[repr(transparent)]
1348#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1349#[doc(alias = "VkBufferCollectionFUCHSIA")]
1350pub struct BufferCollectionFUCHSIA(u64);
1351impl Handle for BufferCollectionFUCHSIA {
1352    type Repr = u64;
1353    #[inline]
1354    fn null() -> Self {
1355        Self(0u64)
1356    }
1357    #[inline]
1358    fn from_raw(raw: u64) -> Self {
1359        Self(raw)
1360    }
1361    #[inline]
1362    fn as_raw(self) -> u64 {
1363        self.0
1364    }
1365    #[inline]
1366    fn is_null(self) -> bool {
1367        self.0 == 0u64
1368    }
1369}
1370impl Default for BufferCollectionFUCHSIA {
1371    #[inline]
1372    fn default() -> Self {
1373        Self::null()
1374    }
1375}
1376impl core::fmt::Debug for BufferCollectionFUCHSIA {
1377    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1378        write!(f, "{}({:#x})", stringify!(BufferCollectionFUCHSIA), self.0)
1379    }
1380}
1381///[`VkDeferredOperationKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeferredOperationKHR.html)
1382///
1383///Non-dispatchable handle (u64).
1384///Parent: [`Device`].
1385#[repr(transparent)]
1386#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1387#[doc(alias = "VkDeferredOperationKHR")]
1388pub struct DeferredOperationKHR(u64);
1389impl Handle for DeferredOperationKHR {
1390    type Repr = u64;
1391    #[inline]
1392    fn null() -> Self {
1393        Self(0u64)
1394    }
1395    #[inline]
1396    fn from_raw(raw: u64) -> Self {
1397        Self(raw)
1398    }
1399    #[inline]
1400    fn as_raw(self) -> u64 {
1401        self.0
1402    }
1403    #[inline]
1404    fn is_null(self) -> bool {
1405        self.0 == 0u64
1406    }
1407}
1408impl Default for DeferredOperationKHR {
1409    #[inline]
1410    fn default() -> Self {
1411        Self::null()
1412    }
1413}
1414impl core::fmt::Debug for DeferredOperationKHR {
1415    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1416        write!(f, "{}({:#x})", stringify!(DeferredOperationKHR), self.0)
1417    }
1418}
1419///[`VkPrivateDataSlot`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkPrivateDataSlot.html)
1420///
1421///Non-dispatchable handle (u64).
1422///Parent: [`Device`].
1423#[repr(transparent)]
1424#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1425#[doc(alias = "VkPrivateDataSlot")]
1426pub struct PrivateDataSlot(u64);
1427impl Handle for PrivateDataSlot {
1428    type Repr = u64;
1429    #[inline]
1430    fn null() -> Self {
1431        Self(0u64)
1432    }
1433    #[inline]
1434    fn from_raw(raw: u64) -> Self {
1435        Self(raw)
1436    }
1437    #[inline]
1438    fn as_raw(self) -> u64 {
1439        self.0
1440    }
1441    #[inline]
1442    fn is_null(self) -> bool {
1443        self.0 == 0u64
1444    }
1445}
1446impl Default for PrivateDataSlot {
1447    #[inline]
1448    fn default() -> Self {
1449        Self::null()
1450    }
1451}
1452impl core::fmt::Debug for PrivateDataSlot {
1453    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1454        write!(f, "{}({:#x})", stringify!(PrivateDataSlot), self.0)
1455    }
1456}
1457///[`VkCuModuleNVX`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkCuModuleNVX.html)
1458///
1459///Non-dispatchable handle (u64).
1460///Parent: [`Device`].
1461#[repr(transparent)]
1462#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1463#[doc(alias = "VkCuModuleNVX")]
1464pub struct CuModuleNVX(u64);
1465impl Handle for CuModuleNVX {
1466    type Repr = u64;
1467    #[inline]
1468    fn null() -> Self {
1469        Self(0u64)
1470    }
1471    #[inline]
1472    fn from_raw(raw: u64) -> Self {
1473        Self(raw)
1474    }
1475    #[inline]
1476    fn as_raw(self) -> u64 {
1477        self.0
1478    }
1479    #[inline]
1480    fn is_null(self) -> bool {
1481        self.0 == 0u64
1482    }
1483}
1484impl Default for CuModuleNVX {
1485    #[inline]
1486    fn default() -> Self {
1487        Self::null()
1488    }
1489}
1490impl core::fmt::Debug for CuModuleNVX {
1491    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1492        write!(f, "{}({:#x})", stringify!(CuModuleNVX), self.0)
1493    }
1494}
1495///[`VkCuFunctionNVX`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkCuFunctionNVX.html)
1496///
1497///Non-dispatchable handle (u64).
1498///Parent: [`Device`].
1499#[repr(transparent)]
1500#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1501#[doc(alias = "VkCuFunctionNVX")]
1502pub struct CuFunctionNVX(u64);
1503impl Handle for CuFunctionNVX {
1504    type Repr = u64;
1505    #[inline]
1506    fn null() -> Self {
1507        Self(0u64)
1508    }
1509    #[inline]
1510    fn from_raw(raw: u64) -> Self {
1511        Self(raw)
1512    }
1513    #[inline]
1514    fn as_raw(self) -> u64 {
1515        self.0
1516    }
1517    #[inline]
1518    fn is_null(self) -> bool {
1519        self.0 == 0u64
1520    }
1521}
1522impl Default for CuFunctionNVX {
1523    #[inline]
1524    fn default() -> Self {
1525        Self::null()
1526    }
1527}
1528impl core::fmt::Debug for CuFunctionNVX {
1529    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1530        write!(f, "{}({:#x})", stringify!(CuFunctionNVX), self.0)
1531    }
1532}
1533///[`VkOpticalFlowSessionNV`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpticalFlowSessionNV.html)
1534///
1535///Non-dispatchable handle (u64).
1536///Parent: [`Device`].
1537#[repr(transparent)]
1538#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1539#[doc(alias = "VkOpticalFlowSessionNV")]
1540pub struct OpticalFlowSessionNV(u64);
1541impl Handle for OpticalFlowSessionNV {
1542    type Repr = u64;
1543    #[inline]
1544    fn null() -> Self {
1545        Self(0u64)
1546    }
1547    #[inline]
1548    fn from_raw(raw: u64) -> Self {
1549        Self(raw)
1550    }
1551    #[inline]
1552    fn as_raw(self) -> u64 {
1553        self.0
1554    }
1555    #[inline]
1556    fn is_null(self) -> bool {
1557        self.0 == 0u64
1558    }
1559}
1560impl Default for OpticalFlowSessionNV {
1561    #[inline]
1562    fn default() -> Self {
1563        Self::null()
1564    }
1565}
1566impl core::fmt::Debug for OpticalFlowSessionNV {
1567    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1568        write!(f, "{}({:#x})", stringify!(OpticalFlowSessionNV), self.0)
1569    }
1570}
1571///[`VkMicromapEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkMicromapEXT.html)
1572///
1573///Non-dispatchable handle (u64).
1574///Parent: [`Device`].
1575#[repr(transparent)]
1576#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1577#[doc(alias = "VkMicromapEXT")]
1578pub struct MicromapEXT(u64);
1579impl Handle for MicromapEXT {
1580    type Repr = u64;
1581    #[inline]
1582    fn null() -> Self {
1583        Self(0u64)
1584    }
1585    #[inline]
1586    fn from_raw(raw: u64) -> Self {
1587        Self(raw)
1588    }
1589    #[inline]
1590    fn as_raw(self) -> u64 {
1591        self.0
1592    }
1593    #[inline]
1594    fn is_null(self) -> bool {
1595        self.0 == 0u64
1596    }
1597}
1598impl Default for MicromapEXT {
1599    #[inline]
1600    fn default() -> Self {
1601        Self::null()
1602    }
1603}
1604impl core::fmt::Debug for MicromapEXT {
1605    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1606        write!(f, "{}({:#x})", stringify!(MicromapEXT), self.0)
1607    }
1608}
1609///[`VkShaderEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderEXT.html)
1610///
1611///Non-dispatchable handle (u64).
1612///Parent: [`Device`].
1613#[repr(transparent)]
1614#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1615#[doc(alias = "VkShaderEXT")]
1616pub struct ShaderEXT(u64);
1617impl Handle for ShaderEXT {
1618    type Repr = u64;
1619    #[inline]
1620    fn null() -> Self {
1621        Self(0u64)
1622    }
1623    #[inline]
1624    fn from_raw(raw: u64) -> Self {
1625        Self(raw)
1626    }
1627    #[inline]
1628    fn as_raw(self) -> u64 {
1629        self.0
1630    }
1631    #[inline]
1632    fn is_null(self) -> bool {
1633        self.0 == 0u64
1634    }
1635}
1636impl Default for ShaderEXT {
1637    #[inline]
1638    fn default() -> Self {
1639        Self::null()
1640    }
1641}
1642impl core::fmt::Debug for ShaderEXT {
1643    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1644        write!(f, "{}({:#x})", stringify!(ShaderEXT), self.0)
1645    }
1646}
1647///[`VkTensorARM`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorARM.html)
1648///
1649///Non-dispatchable handle (u64).
1650///Parent: [`Device`].
1651#[repr(transparent)]
1652#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1653#[doc(alias = "VkTensorARM")]
1654pub struct TensorARM(u64);
1655impl Handle for TensorARM {
1656    type Repr = u64;
1657    #[inline]
1658    fn null() -> Self {
1659        Self(0u64)
1660    }
1661    #[inline]
1662    fn from_raw(raw: u64) -> Self {
1663        Self(raw)
1664    }
1665    #[inline]
1666    fn as_raw(self) -> u64 {
1667        self.0
1668    }
1669    #[inline]
1670    fn is_null(self) -> bool {
1671        self.0 == 0u64
1672    }
1673}
1674impl Default for TensorARM {
1675    #[inline]
1676    fn default() -> Self {
1677        Self::null()
1678    }
1679}
1680impl core::fmt::Debug for TensorARM {
1681    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1682        write!(f, "{}({:#x})", stringify!(TensorARM), self.0)
1683    }
1684}
1685///[`VkTensorViewARM`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorViewARM.html)
1686///
1687///Non-dispatchable handle (u64).
1688///Parent: [`Device`].
1689#[repr(transparent)]
1690#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1691#[doc(alias = "VkTensorViewARM")]
1692pub struct TensorViewARM(u64);
1693impl Handle for TensorViewARM {
1694    type Repr = u64;
1695    #[inline]
1696    fn null() -> Self {
1697        Self(0u64)
1698    }
1699    #[inline]
1700    fn from_raw(raw: u64) -> Self {
1701        Self(raw)
1702    }
1703    #[inline]
1704    fn as_raw(self) -> u64 {
1705        self.0
1706    }
1707    #[inline]
1708    fn is_null(self) -> bool {
1709        self.0 == 0u64
1710    }
1711}
1712impl Default for TensorViewARM {
1713    #[inline]
1714    fn default() -> Self {
1715        Self::null()
1716    }
1717}
1718impl core::fmt::Debug for TensorViewARM {
1719    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1720        write!(f, "{}({:#x})", stringify!(TensorViewARM), self.0)
1721    }
1722}
1723///[`VkDataGraphPipelineSessionARM`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionARM.html)
1724///
1725///Non-dispatchable handle (u64).
1726///Parent: [`Device`].
1727#[repr(transparent)]
1728#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1729#[doc(alias = "VkDataGraphPipelineSessionARM")]
1730pub struct DataGraphPipelineSessionARM(u64);
1731impl Handle for DataGraphPipelineSessionARM {
1732    type Repr = u64;
1733    #[inline]
1734    fn null() -> Self {
1735        Self(0u64)
1736    }
1737    #[inline]
1738    fn from_raw(raw: u64) -> Self {
1739        Self(raw)
1740    }
1741    #[inline]
1742    fn as_raw(self) -> u64 {
1743        self.0
1744    }
1745    #[inline]
1746    fn is_null(self) -> bool {
1747        self.0 == 0u64
1748    }
1749}
1750impl Default for DataGraphPipelineSessionARM {
1751    #[inline]
1752    fn default() -> Self {
1753        Self::null()
1754    }
1755}
1756impl core::fmt::Debug for DataGraphPipelineSessionARM {
1757    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1758        write!(f, "{}({:#x})", stringify!(DataGraphPipelineSessionARM), self.0)
1759    }
1760}
1761///[`VkShaderInstrumentationARM`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderInstrumentationARM.html)
1762///
1763///Non-dispatchable handle (u64).
1764///Parent: [`Device`].
1765#[repr(transparent)]
1766#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1767#[doc(alias = "VkShaderInstrumentationARM")]
1768pub struct ShaderInstrumentationARM(u64);
1769impl Handle for ShaderInstrumentationARM {
1770    type Repr = u64;
1771    #[inline]
1772    fn null() -> Self {
1773        Self(0u64)
1774    }
1775    #[inline]
1776    fn from_raw(raw: u64) -> Self {
1777        Self(raw)
1778    }
1779    #[inline]
1780    fn as_raw(self) -> u64 {
1781        self.0
1782    }
1783    #[inline]
1784    fn is_null(self) -> bool {
1785        self.0 == 0u64
1786    }
1787}
1788impl Default for ShaderInstrumentationARM {
1789    #[inline]
1790    fn default() -> Self {
1791        Self::null()
1792    }
1793}
1794impl core::fmt::Debug for ShaderInstrumentationARM {
1795    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1796        write!(f, "{}({:#x})", stringify!(ShaderInstrumentationARM), self.0)
1797    }
1798}
1799///[`VkDisplayKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayKHR.html)
1800///
1801///Non-dispatchable handle (u64).
1802///Parent: [`PhysicalDevice`].
1803#[repr(transparent)]
1804#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1805#[doc(alias = "VkDisplayKHR")]
1806pub struct DisplayKHR(u64);
1807impl Handle for DisplayKHR {
1808    type Repr = u64;
1809    #[inline]
1810    fn null() -> Self {
1811        Self(0u64)
1812    }
1813    #[inline]
1814    fn from_raw(raw: u64) -> Self {
1815        Self(raw)
1816    }
1817    #[inline]
1818    fn as_raw(self) -> u64 {
1819        self.0
1820    }
1821    #[inline]
1822    fn is_null(self) -> bool {
1823        self.0 == 0u64
1824    }
1825}
1826impl Default for DisplayKHR {
1827    #[inline]
1828    fn default() -> Self {
1829        Self::null()
1830    }
1831}
1832impl core::fmt::Debug for DisplayKHR {
1833    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1834        write!(f, "{}({:#x})", stringify!(DisplayKHR), self.0)
1835    }
1836}
1837///[`VkDisplayModeKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayModeKHR.html)
1838///
1839///Non-dispatchable handle (u64).
1840///Parent: [`DisplayKHR`].
1841#[repr(transparent)]
1842#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1843#[doc(alias = "VkDisplayModeKHR")]
1844pub struct DisplayModeKHR(u64);
1845impl Handle for DisplayModeKHR {
1846    type Repr = u64;
1847    #[inline]
1848    fn null() -> Self {
1849        Self(0u64)
1850    }
1851    #[inline]
1852    fn from_raw(raw: u64) -> Self {
1853        Self(raw)
1854    }
1855    #[inline]
1856    fn as_raw(self) -> u64 {
1857        self.0
1858    }
1859    #[inline]
1860    fn is_null(self) -> bool {
1861        self.0 == 0u64
1862    }
1863}
1864impl Default for DisplayModeKHR {
1865    #[inline]
1866    fn default() -> Self {
1867        Self::null()
1868    }
1869}
1870impl core::fmt::Debug for DisplayModeKHR {
1871    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1872        write!(f, "{}({:#x})", stringify!(DisplayModeKHR), self.0)
1873    }
1874}
1875///[`VkSurfaceKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfaceKHR.html)
1876///
1877///Non-dispatchable handle (u64).
1878///Parent: [`Instance`].
1879#[repr(transparent)]
1880#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1881#[doc(alias = "VkSurfaceKHR")]
1882pub struct SurfaceKHR(u64);
1883impl Handle for SurfaceKHR {
1884    type Repr = u64;
1885    #[inline]
1886    fn null() -> Self {
1887        Self(0u64)
1888    }
1889    #[inline]
1890    fn from_raw(raw: u64) -> Self {
1891        Self(raw)
1892    }
1893    #[inline]
1894    fn as_raw(self) -> u64 {
1895        self.0
1896    }
1897    #[inline]
1898    fn is_null(self) -> bool {
1899        self.0 == 0u64
1900    }
1901}
1902impl Default for SurfaceKHR {
1903    #[inline]
1904    fn default() -> Self {
1905        Self::null()
1906    }
1907}
1908impl core::fmt::Debug for SurfaceKHR {
1909    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1910        write!(f, "{}({:#x})", stringify!(SurfaceKHR), self.0)
1911    }
1912}
1913///[`VkSwapchainKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkSwapchainKHR.html)
1914///
1915///Non-dispatchable handle (u64).
1916///Parent: [`Device`].
1917#[repr(transparent)]
1918#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1919#[doc(alias = "VkSwapchainKHR")]
1920pub struct SwapchainKHR(u64);
1921impl Handle for SwapchainKHR {
1922    type Repr = u64;
1923    #[inline]
1924    fn null() -> Self {
1925        Self(0u64)
1926    }
1927    #[inline]
1928    fn from_raw(raw: u64) -> Self {
1929        Self(raw)
1930    }
1931    #[inline]
1932    fn as_raw(self) -> u64 {
1933        self.0
1934    }
1935    #[inline]
1936    fn is_null(self) -> bool {
1937        self.0 == 0u64
1938    }
1939}
1940impl Default for SwapchainKHR {
1941    #[inline]
1942    fn default() -> Self {
1943        Self::null()
1944    }
1945}
1946impl core::fmt::Debug for SwapchainKHR {
1947    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1948        write!(f, "{}({:#x})", stringify!(SwapchainKHR), self.0)
1949    }
1950}
1951///[`VkDebugReportCallbackEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugReportCallbackEXT.html)
1952///
1953///Non-dispatchable handle (u64).
1954///Parent: [`Instance`].
1955#[repr(transparent)]
1956#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1957#[doc(alias = "VkDebugReportCallbackEXT")]
1958pub struct DebugReportCallbackEXT(u64);
1959impl Handle for DebugReportCallbackEXT {
1960    type Repr = u64;
1961    #[inline]
1962    fn null() -> Self {
1963        Self(0u64)
1964    }
1965    #[inline]
1966    fn from_raw(raw: u64) -> Self {
1967        Self(raw)
1968    }
1969    #[inline]
1970    fn as_raw(self) -> u64 {
1971        self.0
1972    }
1973    #[inline]
1974    fn is_null(self) -> bool {
1975        self.0 == 0u64
1976    }
1977}
1978impl Default for DebugReportCallbackEXT {
1979    #[inline]
1980    fn default() -> Self {
1981        Self::null()
1982    }
1983}
1984impl core::fmt::Debug for DebugReportCallbackEXT {
1985    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1986        write!(f, "{}({:#x})", stringify!(DebugReportCallbackEXT), self.0)
1987    }
1988}
1989///[`VkDebugUtilsMessengerEXT`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugUtilsMessengerEXT.html)
1990///
1991///Non-dispatchable handle (u64).
1992///Parent: [`Instance`].
1993#[repr(transparent)]
1994#[derive(Copy, Clone, PartialEq, Eq, Hash)]
1995#[doc(alias = "VkDebugUtilsMessengerEXT")]
1996pub struct DebugUtilsMessengerEXT(u64);
1997impl Handle for DebugUtilsMessengerEXT {
1998    type Repr = u64;
1999    #[inline]
2000    fn null() -> Self {
2001        Self(0u64)
2002    }
2003    #[inline]
2004    fn from_raw(raw: u64) -> Self {
2005        Self(raw)
2006    }
2007    #[inline]
2008    fn as_raw(self) -> u64 {
2009        self.0
2010    }
2011    #[inline]
2012    fn is_null(self) -> bool {
2013        self.0 == 0u64
2014    }
2015}
2016impl Default for DebugUtilsMessengerEXT {
2017    #[inline]
2018    fn default() -> Self {
2019        Self::null()
2020    }
2021}
2022impl core::fmt::Debug for DebugUtilsMessengerEXT {
2023    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
2024        write!(f, "{}({:#x})", stringify!(DebugUtilsMessengerEXT), self.0)
2025    }
2026}
2027///[`VkVideoSessionKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoSessionKHR.html)
2028///
2029///Non-dispatchable handle (u64).
2030///Parent: [`Device`].
2031#[repr(transparent)]
2032#[derive(Copy, Clone, PartialEq, Eq, Hash)]
2033#[doc(alias = "VkVideoSessionKHR")]
2034pub struct VideoSessionKHR(u64);
2035impl Handle for VideoSessionKHR {
2036    type Repr = u64;
2037    #[inline]
2038    fn null() -> Self {
2039        Self(0u64)
2040    }
2041    #[inline]
2042    fn from_raw(raw: u64) -> Self {
2043        Self(raw)
2044    }
2045    #[inline]
2046    fn as_raw(self) -> u64 {
2047        self.0
2048    }
2049    #[inline]
2050    fn is_null(self) -> bool {
2051        self.0 == 0u64
2052    }
2053}
2054impl Default for VideoSessionKHR {
2055    #[inline]
2056    fn default() -> Self {
2057        Self::null()
2058    }
2059}
2060impl core::fmt::Debug for VideoSessionKHR {
2061    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
2062        write!(f, "{}({:#x})", stringify!(VideoSessionKHR), self.0)
2063    }
2064}
2065///[`VkVideoSessionParametersKHR`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoSessionParametersKHR.html)
2066///
2067///Non-dispatchable handle (u64).
2068///Parent: [`Device`].
2069#[repr(transparent)]
2070#[derive(Copy, Clone, PartialEq, Eq, Hash)]
2071#[doc(alias = "VkVideoSessionParametersKHR")]
2072pub struct VideoSessionParametersKHR(u64);
2073impl Handle for VideoSessionParametersKHR {
2074    type Repr = u64;
2075    #[inline]
2076    fn null() -> Self {
2077        Self(0u64)
2078    }
2079    #[inline]
2080    fn from_raw(raw: u64) -> Self {
2081        Self(raw)
2082    }
2083    #[inline]
2084    fn as_raw(self) -> u64 {
2085        self.0
2086    }
2087    #[inline]
2088    fn is_null(self) -> bool {
2089        self.0 == 0u64
2090    }
2091}
2092impl Default for VideoSessionParametersKHR {
2093    #[inline]
2094    fn default() -> Self {
2095        Self::null()
2096    }
2097}
2098impl core::fmt::Debug for VideoSessionParametersKHR {
2099    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
2100        write!(f, "{}({:#x})", stringify!(VideoSessionParametersKHR), self.0)
2101    }
2102}
2103///[`VkSemaphoreSciSyncPoolNV`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkSemaphoreSciSyncPoolNV.html)
2104///
2105///Non-dispatchable handle (u64).
2106///Parent: [`Device`].
2107#[repr(transparent)]
2108#[derive(Copy, Clone, PartialEq, Eq, Hash)]
2109#[doc(alias = "VkSemaphoreSciSyncPoolNV")]
2110pub struct SemaphoreSciSyncPoolNV(u64);
2111impl Handle for SemaphoreSciSyncPoolNV {
2112    type Repr = u64;
2113    #[inline]
2114    fn null() -> Self {
2115        Self(0u64)
2116    }
2117    #[inline]
2118    fn from_raw(raw: u64) -> Self {
2119        Self(raw)
2120    }
2121    #[inline]
2122    fn as_raw(self) -> u64 {
2123        self.0
2124    }
2125    #[inline]
2126    fn is_null(self) -> bool {
2127        self.0 == 0u64
2128    }
2129}
2130impl Default for SemaphoreSciSyncPoolNV {
2131    #[inline]
2132    fn default() -> Self {
2133        Self::null()
2134    }
2135}
2136impl core::fmt::Debug for SemaphoreSciSyncPoolNV {
2137    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
2138        write!(f, "{}({:#x})", stringify!(SemaphoreSciSyncPoolNV), self.0)
2139    }
2140}
2141///[`VkCudaModuleNV`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkCudaModuleNV.html)
2142///
2143///Non-dispatchable handle (u64).
2144///Parent: [`Device`].
2145#[repr(transparent)]
2146#[derive(Copy, Clone, PartialEq, Eq, Hash)]
2147#[doc(alias = "VkCudaModuleNV")]
2148pub struct CudaModuleNV(u64);
2149impl Handle for CudaModuleNV {
2150    type Repr = u64;
2151    #[inline]
2152    fn null() -> Self {
2153        Self(0u64)
2154    }
2155    #[inline]
2156    fn from_raw(raw: u64) -> Self {
2157        Self(raw)
2158    }
2159    #[inline]
2160    fn as_raw(self) -> u64 {
2161        self.0
2162    }
2163    #[inline]
2164    fn is_null(self) -> bool {
2165        self.0 == 0u64
2166    }
2167}
2168impl Default for CudaModuleNV {
2169    #[inline]
2170    fn default() -> Self {
2171        Self::null()
2172    }
2173}
2174impl core::fmt::Debug for CudaModuleNV {
2175    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
2176        write!(f, "{}({:#x})", stringify!(CudaModuleNV), self.0)
2177    }
2178}
2179///[`VkCudaFunctionNV`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkCudaFunctionNV.html)
2180///
2181///Non-dispatchable handle (u64).
2182///Parent: [`Device`].
2183#[repr(transparent)]
2184#[derive(Copy, Clone, PartialEq, Eq, Hash)]
2185#[doc(alias = "VkCudaFunctionNV")]
2186pub struct CudaFunctionNV(u64);
2187impl Handle for CudaFunctionNV {
2188    type Repr = u64;
2189    #[inline]
2190    fn null() -> Self {
2191        Self(0u64)
2192    }
2193    #[inline]
2194    fn from_raw(raw: u64) -> Self {
2195        Self(raw)
2196    }
2197    #[inline]
2198    fn as_raw(self) -> u64 {
2199        self.0
2200    }
2201    #[inline]
2202    fn is_null(self) -> bool {
2203        self.0 == 0u64
2204    }
2205}
2206impl Default for CudaFunctionNV {
2207    #[inline]
2208    fn default() -> Self {
2209        Self::null()
2210    }
2211}
2212impl core::fmt::Debug for CudaFunctionNV {
2213    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
2214        write!(f, "{}({:#x})", stringify!(CudaFunctionNV), self.0)
2215    }
2216}
2217///[`VkExternalComputeQueueNV`](https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalComputeQueueNV.html)
2218///
2219///Dispatchable handle (pointer-sized).
2220///Parent: [`Device`].
2221#[repr(transparent)]
2222#[derive(Copy, Clone, PartialEq, Eq, Hash)]
2223#[doc(alias = "VkExternalComputeQueueNV")]
2224pub struct ExternalComputeQueueNV(usize);
2225impl Handle for ExternalComputeQueueNV {
2226    type Repr = usize;
2227    #[inline]
2228    fn null() -> Self {
2229        Self(0usize)
2230    }
2231    #[inline]
2232    fn from_raw(raw: usize) -> Self {
2233        Self(raw)
2234    }
2235    #[inline]
2236    fn as_raw(self) -> usize {
2237        self.0
2238    }
2239    #[inline]
2240    fn is_null(self) -> bool {
2241        self.0 == 0usize
2242    }
2243}
2244impl Default for ExternalComputeQueueNV {
2245    #[inline]
2246    fn default() -> Self {
2247        Self::null()
2248    }
2249}
2250impl core::fmt::Debug for ExternalComputeQueueNV {
2251    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
2252        write!(f, "{}({:#x})", stringify!(ExternalComputeQueueNV), self.0)
2253    }
2254}