1 #![allow(clippy::trivially_copy_pass_by_ref)]
2 use crate::prelude::*;
3 use crate::vk;
4 use crate::RawPtr;
5 use std::mem;
6 use std::os::raw::c_void;
7 use std::ptr;
8 
9 #[allow(non_camel_case_types)]
10 pub trait DeviceV1_2: DeviceV1_1 {
fp_v1_2(&self) -> &vk::DeviceFnV1_211     fn fp_v1_2(&self) -> &vk::DeviceFnV1_2;
12 
13     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDrawIndirectCount.html>"]
cmd_draw_indirect_count( &self, command_buffer: vk::CommandBuffer, buffer: vk::Buffer, offset: vk::DeviceSize, count_buffer: vk::Buffer, count_buffer_offset: vk::DeviceSize, max_draw_count: u32, stride: u32, )14     unsafe fn cmd_draw_indirect_count(
15         &self,
16         command_buffer: vk::CommandBuffer,
17         buffer: vk::Buffer,
18         offset: vk::DeviceSize,
19         count_buffer: vk::Buffer,
20         count_buffer_offset: vk::DeviceSize,
21         max_draw_count: u32,
22         stride: u32,
23     ) {
24         self.fp_v1_2().cmd_draw_indirect_count(
25             command_buffer,
26             buffer,
27             offset,
28             count_buffer,
29             count_buffer_offset,
30             max_draw_count,
31             stride,
32         );
33     }
34 
35     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDrawIndexedIndirectCount.html>"]
cmd_draw_indexed_indirect_count( &self, command_buffer: vk::CommandBuffer, buffer: vk::Buffer, offset: vk::DeviceSize, count_buffer: vk::Buffer, count_buffer_offset: vk::DeviceSize, max_draw_count: u32, stride: u32, )36     unsafe fn cmd_draw_indexed_indirect_count(
37         &self,
38         command_buffer: vk::CommandBuffer,
39         buffer: vk::Buffer,
40         offset: vk::DeviceSize,
41         count_buffer: vk::Buffer,
42         count_buffer_offset: vk::DeviceSize,
43         max_draw_count: u32,
44         stride: u32,
45     ) {
46         self.fp_v1_2().cmd_draw_indexed_indirect_count(
47             command_buffer,
48             buffer,
49             offset,
50             count_buffer,
51             count_buffer_offset,
52             max_draw_count,
53             stride,
54         );
55     }
56 
57     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateRenderPass2.html>"]
create_render_pass2( &self, create_info: &vk::RenderPassCreateInfo2, allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> VkResult<vk::RenderPass>58     unsafe fn create_render_pass2(
59         &self,
60         create_info: &vk::RenderPassCreateInfo2,
61         allocation_callbacks: Option<&vk::AllocationCallbacks>,
62     ) -> VkResult<vk::RenderPass> {
63         let mut renderpass = mem::zeroed();
64         self.fp_v1_2()
65             .create_render_pass2(
66                 self.handle(),
67                 create_info,
68                 allocation_callbacks.as_raw_ptr(),
69                 &mut renderpass,
70             )
71             .result_with_success(renderpass)
72     }
73 
74     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBeginRenderPass2.html>"]
cmd_begin_render_pass2( &self, command_buffer: vk::CommandBuffer, render_pass_begin_info: &vk::RenderPassBeginInfo, subpass_begin_info: &vk::SubpassBeginInfo, )75     unsafe fn cmd_begin_render_pass2(
76         &self,
77         command_buffer: vk::CommandBuffer,
78         render_pass_begin_info: &vk::RenderPassBeginInfo,
79         subpass_begin_info: &vk::SubpassBeginInfo,
80     ) {
81         self.fp_v1_2().cmd_begin_render_pass2(
82             command_buffer,
83             render_pass_begin_info,
84             subpass_begin_info,
85         );
86     }
87 
88     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdNextSubpass2.html>"]
cmd_next_subpass2( &self, command_buffer: vk::CommandBuffer, subpass_begin_info: &vk::SubpassBeginInfo, subpass_end_info: &vk::SubpassEndInfo, )89     unsafe fn cmd_next_subpass2(
90         &self,
91         command_buffer: vk::CommandBuffer,
92         subpass_begin_info: &vk::SubpassBeginInfo,
93         subpass_end_info: &vk::SubpassEndInfo,
94     ) {
95         self.fp_v1_2()
96             .cmd_next_subpass2(command_buffer, subpass_begin_info, subpass_end_info);
97     }
98 
99     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdEndRenderPass2.html>"]
cmd_end_render_pass2( &self, command_buffer: vk::CommandBuffer, subpass_end_info: &vk::SubpassEndInfo, )100     unsafe fn cmd_end_render_pass2(
101         &self,
102         command_buffer: vk::CommandBuffer,
103         subpass_end_info: &vk::SubpassEndInfo,
104     ) {
105         self.fp_v1_2()
106             .cmd_end_render_pass2(command_buffer, subpass_end_info);
107     }
108 
109     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkResetQueryPool.html>"]
reset_query_pool( &self, query_pool: vk::QueryPool, first_query: u32, query_count: u32, )110     unsafe fn reset_query_pool(
111         &self,
112         query_pool: vk::QueryPool,
113         first_query: u32,
114         query_count: u32,
115     ) {
116         self.fp_v1_2()
117             .reset_query_pool(self.handle(), query_pool, first_query, query_count);
118     }
119 
120     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetSemaphoreCounterValue.html>"]
get_semaphore_counter_value(&self, semaphore: vk::Semaphore) -> VkResult<u64>121     unsafe fn get_semaphore_counter_value(&self, semaphore: vk::Semaphore) -> VkResult<u64> {
122         let mut value = 0;
123         self.fp_v1_2()
124             .get_semaphore_counter_value(self.handle(), semaphore, &mut value)
125             .result_with_success(value)
126     }
127 
128     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkWaitSemaphores.html>"]
wait_semaphores( &self, wait_info: &vk::SemaphoreWaitInfo, timeout: u64, ) -> VkResult<()>129     unsafe fn wait_semaphores(
130         &self,
131         wait_info: &vk::SemaphoreWaitInfo,
132         timeout: u64,
133     ) -> VkResult<()> {
134         self.fp_v1_2()
135             .wait_semaphores(self.handle(), wait_info, timeout)
136             .into()
137     }
138 
139     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkSignalSemaphore.html>"]
signal_semaphore(&self, signal_info: &vk::SemaphoreSignalInfo) -> VkResult<()>140     unsafe fn signal_semaphore(&self, signal_info: &vk::SemaphoreSignalInfo) -> VkResult<()> {
141         self.fp_v1_2()
142             .signal_semaphore(self.handle(), signal_info)
143             .into()
144     }
145 
146     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetBufferDeviceAddress.html>"]
get_buffer_device_address( &self, info: &vk::BufferDeviceAddressInfo, ) -> vk::DeviceAddress147     unsafe fn get_buffer_device_address(
148         &self,
149         info: &vk::BufferDeviceAddressInfo,
150     ) -> vk::DeviceAddress {
151         self.fp_v1_2()
152             .get_buffer_device_address(self.handle(), info)
153     }
154 
155     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetBufferOpaqueCaptureAddress.html>"]
get_buffer_opaque_capture_address(&self, info: &vk::BufferDeviceAddressInfo) -> u64156     unsafe fn get_buffer_opaque_capture_address(&self, info: &vk::BufferDeviceAddressInfo) -> u64 {
157         self.fp_v1_2()
158             .get_buffer_opaque_capture_address(self.handle(), info)
159     }
160 
161     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetDeviceMemoryOpaqueCaptureAddress.html>"]
get_device_memory_opaque_capture_address( &self, info: &vk::DeviceMemoryOpaqueCaptureAddressInfo, ) -> u64162     unsafe fn get_device_memory_opaque_capture_address(
163         &self,
164         info: &vk::DeviceMemoryOpaqueCaptureAddressInfo,
165     ) -> u64 {
166         self.fp_v1_2()
167             .get_device_memory_opaque_capture_address(self.handle(), info)
168     }
169 }
170 
171 #[allow(non_camel_case_types)]
172 pub trait DeviceV1_1: DeviceV1_0 {
fp_v1_1(&self) -> &vk::DeviceFnV1_1173     fn fp_v1_1(&self) -> &vk::DeviceFnV1_1;
174 
175     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkBindBufferMemory2.html>"]
bind_buffer_memory2(&self, bind_infos: &[vk::BindBufferMemoryInfo]) -> VkResult<()>176     unsafe fn bind_buffer_memory2(&self, bind_infos: &[vk::BindBufferMemoryInfo]) -> VkResult<()> {
177         self.fp_v1_1()
178             .bind_buffer_memory2(self.handle(), bind_infos.len() as _, bind_infos.as_ptr())
179             .into()
180     }
181 
182     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkBindImageMemory2.html>"]
bind_image_memory2(&self, bind_infos: &[vk::BindImageMemoryInfo]) -> VkResult<()>183     unsafe fn bind_image_memory2(&self, bind_infos: &[vk::BindImageMemoryInfo]) -> VkResult<()> {
184         self.fp_v1_1()
185             .bind_image_memory2(self.handle(), bind_infos.len() as _, bind_infos.as_ptr())
186             .into()
187     }
188 
189     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetDeviceGroupPeerMemoryFeatures.html>"]
get_device_group_peer_memory_features( &self, heap_index: u32, local_device_index: u32, remote_device_index: u32, ) -> vk::PeerMemoryFeatureFlags190     unsafe fn get_device_group_peer_memory_features(
191         &self,
192         heap_index: u32,
193         local_device_index: u32,
194         remote_device_index: u32,
195     ) -> vk::PeerMemoryFeatureFlags {
196         let mut peer_memory_features = mem::zeroed();
197         self.fp_v1_1().get_device_group_peer_memory_features(
198             self.handle(),
199             heap_index,
200             local_device_index,
201             remote_device_index,
202             &mut peer_memory_features,
203         );
204         peer_memory_features
205     }
206 
207     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetDeviceMask.html>"]
cmd_set_device_mask(&self, command_buffer: vk::CommandBuffer, device_mask: u32)208     unsafe fn cmd_set_device_mask(&self, command_buffer: vk::CommandBuffer, device_mask: u32) {
209         self.fp_v1_1()
210             .cmd_set_device_mask(command_buffer, device_mask);
211     }
212 
213     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDispatchBase.html>"]
cmd_dispatch_base( &self, command_buffer: vk::CommandBuffer, base_group_x: u32, base_group_y: u32, base_group_z: u32, group_count_x: u32, group_count_y: u32, group_count_z: u32, )214     unsafe fn cmd_dispatch_base(
215         &self,
216         command_buffer: vk::CommandBuffer,
217         base_group_x: u32,
218         base_group_y: u32,
219         base_group_z: u32,
220         group_count_x: u32,
221         group_count_y: u32,
222         group_count_z: u32,
223     ) {
224         self.fp_v1_1().cmd_dispatch_base(
225             command_buffer,
226             base_group_x,
227             base_group_y,
228             base_group_z,
229             group_count_x,
230             group_count_y,
231             group_count_z,
232         );
233     }
234 
235     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetImageMemoryRequirements2.html>"]
get_image_memory_requirements2( &self, info: &vk::ImageMemoryRequirementsInfo2, out: &mut vk::MemoryRequirements2, )236     unsafe fn get_image_memory_requirements2(
237         &self,
238         info: &vk::ImageMemoryRequirementsInfo2,
239         out: &mut vk::MemoryRequirements2,
240     ) {
241         self.fp_v1_1()
242             .get_image_memory_requirements2(self.handle(), info, out);
243     }
244 
245     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetBufferMemoryRequirements2.html>"]
get_buffer_memory_requirements2( &self, info: &vk::BufferMemoryRequirementsInfo2, out: &mut vk::MemoryRequirements2, )246     unsafe fn get_buffer_memory_requirements2(
247         &self,
248         info: &vk::BufferMemoryRequirementsInfo2,
249         out: &mut vk::MemoryRequirements2,
250     ) {
251         self.fp_v1_1()
252             .get_buffer_memory_requirements2(self.handle(), info, out);
253     }
254 
get_image_sparse_memory_requirements2_len( &self, info: &vk::ImageSparseMemoryRequirementsInfo2, ) -> usize255     unsafe fn get_image_sparse_memory_requirements2_len(
256         &self,
257         info: &vk::ImageSparseMemoryRequirementsInfo2,
258     ) -> usize {
259         let mut count = mem::zeroed();
260         self.fp_v1_1().get_image_sparse_memory_requirements2(
261             self.handle(),
262             info,
263             &mut count,
264             ptr::null_mut(),
265         );
266         count as usize
267     }
268 
269     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetImageSparseMemoryRequirements2.html>"]
get_image_sparse_memory_requirements2( &self, info: &vk::ImageSparseMemoryRequirementsInfo2, out: &mut [vk::SparseImageMemoryRequirements2], )270     unsafe fn get_image_sparse_memory_requirements2(
271         &self,
272         info: &vk::ImageSparseMemoryRequirementsInfo2,
273         out: &mut [vk::SparseImageMemoryRequirements2],
274     ) {
275         let mut count = out.len() as u32;
276         self.fp_v1_1().get_image_sparse_memory_requirements2(
277             self.handle(),
278             info,
279             &mut count,
280             out.as_mut_ptr(),
281         );
282     }
283 
284     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkTrimCommandPool.html>"]
trim_command_pool( &self, command_pool: vk::CommandPool, flags: vk::CommandPoolTrimFlags, )285     unsafe fn trim_command_pool(
286         &self,
287         command_pool: vk::CommandPool,
288         flags: vk::CommandPoolTrimFlags,
289     ) {
290         self.fp_v1_1()
291             .trim_command_pool(self.handle(), command_pool, flags);
292     }
293 
294     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateSamplerYcbcrConversion.html>"]
create_sampler_ycbcr_conversion( &self, create_info: &vk::SamplerYcbcrConversionCreateInfo, allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> VkResult<vk::SamplerYcbcrConversion>295     unsafe fn create_sampler_ycbcr_conversion(
296         &self,
297         create_info: &vk::SamplerYcbcrConversionCreateInfo,
298         allocation_callbacks: Option<&vk::AllocationCallbacks>,
299     ) -> VkResult<vk::SamplerYcbcrConversion> {
300         let mut ycbcr_conversion = mem::zeroed();
301         self.fp_v1_1()
302             .create_sampler_ycbcr_conversion(
303                 self.handle(),
304                 create_info,
305                 allocation_callbacks.as_raw_ptr(),
306                 &mut ycbcr_conversion,
307             )
308             .result_with_success(ycbcr_conversion)
309     }
310 
311     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroySamplerYcbcrConversion.html>"]
destroy_sampler_ycbcr_conversion( &self, ycbcr_conversion: vk::SamplerYcbcrConversion, allocation_callbacks: Option<&vk::AllocationCallbacks>, )312     unsafe fn destroy_sampler_ycbcr_conversion(
313         &self,
314         ycbcr_conversion: vk::SamplerYcbcrConversion,
315         allocation_callbacks: Option<&vk::AllocationCallbacks>,
316     ) {
317         self.fp_v1_1().destroy_sampler_ycbcr_conversion(
318             self.handle(),
319             ycbcr_conversion,
320             allocation_callbacks.as_raw_ptr(),
321         );
322     }
323 
324     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateDescriptorUpdateTemplate.html>"]
create_descriptor_update_template( &self, create_info: &vk::DescriptorUpdateTemplateCreateInfo, allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> VkResult<vk::DescriptorUpdateTemplate>325     unsafe fn create_descriptor_update_template(
326         &self,
327         create_info: &vk::DescriptorUpdateTemplateCreateInfo,
328         allocation_callbacks: Option<&vk::AllocationCallbacks>,
329     ) -> VkResult<vk::DescriptorUpdateTemplate> {
330         let mut descriptor_update_template = mem::zeroed();
331         self.fp_v1_1()
332             .create_descriptor_update_template(
333                 self.handle(),
334                 create_info,
335                 allocation_callbacks.as_raw_ptr(),
336                 &mut descriptor_update_template,
337             )
338             .result_with_success(descriptor_update_template)
339     }
340 
341     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyDescriptorUpdateTemplate.html>"]
destroy_descriptor_update_template( &self, descriptor_update_template: vk::DescriptorUpdateTemplate, allocation_callbacks: Option<&vk::AllocationCallbacks>, )342     unsafe fn destroy_descriptor_update_template(
343         &self,
344         descriptor_update_template: vk::DescriptorUpdateTemplate,
345         allocation_callbacks: Option<&vk::AllocationCallbacks>,
346     ) {
347         self.fp_v1_1().destroy_descriptor_update_template(
348             self.handle(),
349             descriptor_update_template,
350             allocation_callbacks.as_raw_ptr(),
351         );
352     }
353 
354     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkUpdateDescriptorSetWithTemplate.html>"]
update_descriptor_set_with_template( &self, descriptor_set: vk::DescriptorSet, descriptor_update_template: vk::DescriptorUpdateTemplate, data: *const c_void, )355     unsafe fn update_descriptor_set_with_template(
356         &self,
357         descriptor_set: vk::DescriptorSet,
358         descriptor_update_template: vk::DescriptorUpdateTemplate,
359         data: *const c_void,
360     ) {
361         self.fp_v1_1().update_descriptor_set_with_template(
362             self.handle(),
363             descriptor_set,
364             descriptor_update_template,
365             data,
366         );
367     }
368 
369     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetDescriptorSetLayoutSupport.html>"]
get_descriptor_set_layout_support( &self, create_info: &vk::DescriptorSetLayoutCreateInfo, out: &mut vk::DescriptorSetLayoutSupport, )370     unsafe fn get_descriptor_set_layout_support(
371         &self,
372         create_info: &vk::DescriptorSetLayoutCreateInfo,
373         out: &mut vk::DescriptorSetLayoutSupport,
374     ) {
375         self.fp_v1_1()
376             .get_descriptor_set_layout_support(self.handle(), create_info, out);
377     }
378 }
379 
380 #[allow(non_camel_case_types)]
381 pub trait DeviceV1_0 {
handle(&self) -> vk::Device382     fn handle(&self) -> vk::Device;
fp_v1_0(&self) -> &vk::DeviceFnV1_0383     fn fp_v1_0(&self) -> &vk::DeviceFnV1_0;
384     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyDevice.html>"]
destroy_device(&self, allocation_callbacks: Option<&vk::AllocationCallbacks>)385     unsafe fn destroy_device(&self, allocation_callbacks: Option<&vk::AllocationCallbacks>) {
386         self.fp_v1_0()
387             .destroy_device(self.handle(), allocation_callbacks.as_raw_ptr());
388     }
389 
390     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroySampler.html>"]
destroy_sampler( &self, sampler: vk::Sampler, allocation_callbacks: Option<&vk::AllocationCallbacks>, )391     unsafe fn destroy_sampler(
392         &self,
393         sampler: vk::Sampler,
394         allocation_callbacks: Option<&vk::AllocationCallbacks>,
395     ) {
396         self.fp_v1_0()
397             .destroy_sampler(self.handle(), sampler, allocation_callbacks.as_raw_ptr());
398     }
399 
400     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkFreeMemory.html>"]
free_memory( &self, memory: vk::DeviceMemory, allocation_callbacks: Option<&vk::AllocationCallbacks>, )401     unsafe fn free_memory(
402         &self,
403         memory: vk::DeviceMemory,
404         allocation_callbacks: Option<&vk::AllocationCallbacks>,
405     ) {
406         self.fp_v1_0()
407             .free_memory(self.handle(), memory, allocation_callbacks.as_raw_ptr());
408     }
409 
410     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkFreeCommandBuffers.html>"]
free_command_buffers( &self, command_pool: vk::CommandPool, command_buffers: &[vk::CommandBuffer], )411     unsafe fn free_command_buffers(
412         &self,
413         command_pool: vk::CommandPool,
414         command_buffers: &[vk::CommandBuffer],
415     ) {
416         self.fp_v1_0().free_command_buffers(
417             self.handle(),
418             command_pool,
419             command_buffers.len() as u32,
420             command_buffers.as_ptr(),
421         );
422     }
423 
424     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateEvent.html>"]
create_event( &self, create_info: &vk::EventCreateInfo, allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> VkResult<vk::Event>425     unsafe fn create_event(
426         &self,
427         create_info: &vk::EventCreateInfo,
428         allocation_callbacks: Option<&vk::AllocationCallbacks>,
429     ) -> VkResult<vk::Event> {
430         let mut event = mem::zeroed();
431         self.fp_v1_0()
432             .create_event(
433                 self.handle(),
434                 create_info,
435                 allocation_callbacks.as_raw_ptr(),
436                 &mut event,
437             )
438             .result_with_success(event)
439     }
440 
441     /// Returns true if the event was set, and false if the event was reset, otherwise it will
442     /// return the error code.
443     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetEventStatus.html>"]
get_event_status(&self, event: vk::Event) -> VkResult<bool>444     unsafe fn get_event_status(&self, event: vk::Event) -> VkResult<bool> {
445         let err_code = self.fp_v1_0().get_event_status(self.handle(), event);
446         match err_code {
447             vk::Result::EVENT_SET => Ok(true),
448             vk::Result::EVENT_RESET => Ok(false),
449             _ => Err(err_code),
450         }
451     }
452 
453     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkSetEvent.html>"]
set_event(&self, event: vk::Event) -> VkResult<()>454     unsafe fn set_event(&self, event: vk::Event) -> VkResult<()> {
455         self.fp_v1_0().set_event(self.handle(), event).into()
456     }
457 
458     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkResetEvent.html>"]
reset_event(&self, event: vk::Event) -> VkResult<()>459     unsafe fn reset_event(&self, event: vk::Event) -> VkResult<()> {
460         self.fp_v1_0().reset_event(self.handle(), event).into()
461     }
462     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetEvent.html>"]
cmd_set_event( &self, command_buffer: vk::CommandBuffer, event: vk::Event, stage_mask: vk::PipelineStageFlags, )463     unsafe fn cmd_set_event(
464         &self,
465         command_buffer: vk::CommandBuffer,
466         event: vk::Event,
467         stage_mask: vk::PipelineStageFlags,
468     ) {
469         self.fp_v1_0()
470             .cmd_set_event(command_buffer, event, stage_mask);
471     }
472     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdResetEvent.html>"]
cmd_reset_event( &self, command_buffer: vk::CommandBuffer, event: vk::Event, stage_mask: vk::PipelineStageFlags, )473     unsafe fn cmd_reset_event(
474         &self,
475         command_buffer: vk::CommandBuffer,
476         event: vk::Event,
477         stage_mask: vk::PipelineStageFlags,
478     ) {
479         self.fp_v1_0()
480             .cmd_reset_event(command_buffer, event, stage_mask);
481     }
482 
483     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdWaitEvents.html>"]
cmd_wait_events( &self, command_buffer: vk::CommandBuffer, events: &[vk::Event], src_stage_mask: vk::PipelineStageFlags, dst_stage_mask: vk::PipelineStageFlags, memory_barriers: &[vk::MemoryBarrier], buffer_memory_barriers: &[vk::BufferMemoryBarrier], image_memory_barriers: &[vk::ImageMemoryBarrier], )484     unsafe fn cmd_wait_events(
485         &self,
486         command_buffer: vk::CommandBuffer,
487         events: &[vk::Event],
488         src_stage_mask: vk::PipelineStageFlags,
489         dst_stage_mask: vk::PipelineStageFlags,
490         memory_barriers: &[vk::MemoryBarrier],
491         buffer_memory_barriers: &[vk::BufferMemoryBarrier],
492         image_memory_barriers: &[vk::ImageMemoryBarrier],
493     ) {
494         self.fp_v1_0().cmd_wait_events(
495             command_buffer,
496             events.len() as _,
497             events.as_ptr(),
498             src_stage_mask,
499             dst_stage_mask,
500             memory_barriers.len() as _,
501             memory_barriers.as_ptr(),
502             buffer_memory_barriers.len() as _,
503             buffer_memory_barriers.as_ptr(),
504             image_memory_barriers.len() as _,
505             image_memory_barriers.as_ptr(),
506         );
507     }
508 
509     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyFence.html>"]
destroy_fence( &self, fence: vk::Fence, allocation_callbacks: Option<&vk::AllocationCallbacks>, )510     unsafe fn destroy_fence(
511         &self,
512         fence: vk::Fence,
513         allocation_callbacks: Option<&vk::AllocationCallbacks>,
514     ) {
515         self.fp_v1_0()
516             .destroy_fence(self.handle(), fence, allocation_callbacks.as_raw_ptr());
517     }
518 
519     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyEvent.html>"]
destroy_event( &self, event: vk::Event, allocation_callbacks: Option<&vk::AllocationCallbacks>, )520     unsafe fn destroy_event(
521         &self,
522         event: vk::Event,
523         allocation_callbacks: Option<&vk::AllocationCallbacks>,
524     ) {
525         self.fp_v1_0()
526             .destroy_event(self.handle(), event, allocation_callbacks.as_raw_ptr());
527     }
528 
529     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyImage.html>"]
destroy_image( &self, image: vk::Image, allocation_callbacks: Option<&vk::AllocationCallbacks>, )530     unsafe fn destroy_image(
531         &self,
532         image: vk::Image,
533         allocation_callbacks: Option<&vk::AllocationCallbacks>,
534     ) {
535         self.fp_v1_0()
536             .destroy_image(self.handle(), image, allocation_callbacks.as_raw_ptr());
537     }
538 
539     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyCommandPool.html>"]
destroy_command_pool( &self, pool: vk::CommandPool, allocation_callbacks: Option<&vk::AllocationCallbacks>, )540     unsafe fn destroy_command_pool(
541         &self,
542         pool: vk::CommandPool,
543         allocation_callbacks: Option<&vk::AllocationCallbacks>,
544     ) {
545         self.fp_v1_0()
546             .destroy_command_pool(self.handle(), pool, allocation_callbacks.as_raw_ptr());
547     }
548 
549     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyImageView.html>"]
destroy_image_view( &self, image_view: vk::ImageView, allocation_callbacks: Option<&vk::AllocationCallbacks>, )550     unsafe fn destroy_image_view(
551         &self,
552         image_view: vk::ImageView,
553         allocation_callbacks: Option<&vk::AllocationCallbacks>,
554     ) {
555         self.fp_v1_0().destroy_image_view(
556             self.handle(),
557             image_view,
558             allocation_callbacks.as_raw_ptr(),
559         );
560     }
561 
562     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyRenderPass.html>"]
destroy_render_pass( &self, renderpass: vk::RenderPass, allocation_callbacks: Option<&vk::AllocationCallbacks>, )563     unsafe fn destroy_render_pass(
564         &self,
565         renderpass: vk::RenderPass,
566         allocation_callbacks: Option<&vk::AllocationCallbacks>,
567     ) {
568         self.fp_v1_0().destroy_render_pass(
569             self.handle(),
570             renderpass,
571             allocation_callbacks.as_raw_ptr(),
572         );
573     }
574 
575     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyFramebuffer.html>"]
destroy_framebuffer( &self, framebuffer: vk::Framebuffer, allocation_callbacks: Option<&vk::AllocationCallbacks>, )576     unsafe fn destroy_framebuffer(
577         &self,
578         framebuffer: vk::Framebuffer,
579         allocation_callbacks: Option<&vk::AllocationCallbacks>,
580     ) {
581         self.fp_v1_0().destroy_framebuffer(
582             self.handle(),
583             framebuffer,
584             allocation_callbacks.as_raw_ptr(),
585         );
586     }
587 
588     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyPipelineLayout.html>"]
destroy_pipeline_layout( &self, pipeline_layout: vk::PipelineLayout, allocation_callbacks: Option<&vk::AllocationCallbacks>, )589     unsafe fn destroy_pipeline_layout(
590         &self,
591         pipeline_layout: vk::PipelineLayout,
592         allocation_callbacks: Option<&vk::AllocationCallbacks>,
593     ) {
594         self.fp_v1_0().destroy_pipeline_layout(
595             self.handle(),
596             pipeline_layout,
597             allocation_callbacks.as_raw_ptr(),
598         );
599     }
600 
601     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyPipelineCache.html>"]
destroy_pipeline_cache( &self, pipeline_cache: vk::PipelineCache, allocation_callbacks: Option<&vk::AllocationCallbacks>, )602     unsafe fn destroy_pipeline_cache(
603         &self,
604         pipeline_cache: vk::PipelineCache,
605         allocation_callbacks: Option<&vk::AllocationCallbacks>,
606     ) {
607         self.fp_v1_0().destroy_pipeline_cache(
608             self.handle(),
609             pipeline_cache,
610             allocation_callbacks.as_raw_ptr(),
611         );
612     }
613 
614     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyBuffer.html>"]
destroy_buffer( &self, buffer: vk::Buffer, allocation_callbacks: Option<&vk::AllocationCallbacks>, )615     unsafe fn destroy_buffer(
616         &self,
617         buffer: vk::Buffer,
618         allocation_callbacks: Option<&vk::AllocationCallbacks>,
619     ) {
620         self.fp_v1_0()
621             .destroy_buffer(self.handle(), buffer, allocation_callbacks.as_raw_ptr());
622     }
623 
624     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyShaderModule.html>"]
destroy_shader_module( &self, shader: vk::ShaderModule, allocation_callbacks: Option<&vk::AllocationCallbacks>, )625     unsafe fn destroy_shader_module(
626         &self,
627         shader: vk::ShaderModule,
628         allocation_callbacks: Option<&vk::AllocationCallbacks>,
629     ) {
630         self.fp_v1_0().destroy_shader_module(
631             self.handle(),
632             shader,
633             allocation_callbacks.as_raw_ptr(),
634         );
635     }
636 
637     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyPipeline.html>"]
destroy_pipeline( &self, pipeline: vk::Pipeline, allocation_callbacks: Option<&vk::AllocationCallbacks>, )638     unsafe fn destroy_pipeline(
639         &self,
640         pipeline: vk::Pipeline,
641         allocation_callbacks: Option<&vk::AllocationCallbacks>,
642     ) {
643         self.fp_v1_0()
644             .destroy_pipeline(self.handle(), pipeline, allocation_callbacks.as_raw_ptr());
645     }
646 
647     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroySemaphore.html>"]
destroy_semaphore( &self, semaphore: vk::Semaphore, allocation_callbacks: Option<&vk::AllocationCallbacks>, )648     unsafe fn destroy_semaphore(
649         &self,
650         semaphore: vk::Semaphore,
651         allocation_callbacks: Option<&vk::AllocationCallbacks>,
652     ) {
653         self.fp_v1_0().destroy_semaphore(
654             self.handle(),
655             semaphore,
656             allocation_callbacks.as_raw_ptr(),
657         );
658     }
659 
660     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyDescriptorPool.html>"]
destroy_descriptor_pool( &self, pool: vk::DescriptorPool, allocation_callbacks: Option<&vk::AllocationCallbacks>, )661     unsafe fn destroy_descriptor_pool(
662         &self,
663         pool: vk::DescriptorPool,
664         allocation_callbacks: Option<&vk::AllocationCallbacks>,
665     ) {
666         self.fp_v1_0().destroy_descriptor_pool(
667             self.handle(),
668             pool,
669             allocation_callbacks.as_raw_ptr(),
670         );
671     }
672 
673     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyQueryPool.html>"]
destroy_query_pool( &self, pool: vk::QueryPool, allocation_callbacks: Option<&vk::AllocationCallbacks>, )674     unsafe fn destroy_query_pool(
675         &self,
676         pool: vk::QueryPool,
677         allocation_callbacks: Option<&vk::AllocationCallbacks>,
678     ) {
679         self.fp_v1_0()
680             .destroy_query_pool(self.handle(), pool, allocation_callbacks.as_raw_ptr());
681     }
682 
683     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyDescriptorSetLayout.html>"]
destroy_descriptor_set_layout( &self, layout: vk::DescriptorSetLayout, allocation_callbacks: Option<&vk::AllocationCallbacks>, )684     unsafe fn destroy_descriptor_set_layout(
685         &self,
686         layout: vk::DescriptorSetLayout,
687         allocation_callbacks: Option<&vk::AllocationCallbacks>,
688     ) {
689         self.fp_v1_0().destroy_descriptor_set_layout(
690             self.handle(),
691             layout,
692             allocation_callbacks.as_raw_ptr(),
693         );
694     }
695 
696     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkFreeDescriptorSets.html>"]
free_descriptor_sets( &self, pool: vk::DescriptorPool, descriptor_sets: &[vk::DescriptorSet], ) -> VkResult<()>697     unsafe fn free_descriptor_sets(
698         &self,
699         pool: vk::DescriptorPool,
700         descriptor_sets: &[vk::DescriptorSet],
701     ) -> VkResult<()> {
702         self.fp_v1_0()
703             .free_descriptor_sets(
704                 self.handle(),
705                 pool,
706                 descriptor_sets.len() as u32,
707                 descriptor_sets.as_ptr(),
708             )
709             .into()
710     }
711 
712     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkUpdateDescriptorSets.html>"]
update_descriptor_sets( &self, descriptor_writes: &[vk::WriteDescriptorSet], descriptor_copies: &[vk::CopyDescriptorSet], )713     unsafe fn update_descriptor_sets(
714         &self,
715         descriptor_writes: &[vk::WriteDescriptorSet],
716         descriptor_copies: &[vk::CopyDescriptorSet],
717     ) {
718         self.fp_v1_0().update_descriptor_sets(
719             self.handle(),
720             descriptor_writes.len() as u32,
721             descriptor_writes.as_ptr(),
722             descriptor_copies.len() as u32,
723             descriptor_copies.as_ptr(),
724         );
725     }
726 
727     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateSampler.html>"]
create_sampler( &self, create_info: &vk::SamplerCreateInfo, allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> VkResult<vk::Sampler>728     unsafe fn create_sampler(
729         &self,
730         create_info: &vk::SamplerCreateInfo,
731         allocation_callbacks: Option<&vk::AllocationCallbacks>,
732     ) -> VkResult<vk::Sampler> {
733         let mut sampler = mem::zeroed();
734         self.fp_v1_0()
735             .create_sampler(
736                 self.handle(),
737                 create_info,
738                 allocation_callbacks.as_raw_ptr(),
739                 &mut sampler,
740             )
741             .result_with_success(sampler)
742     }
743 
744     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBlitImage.html>"]
cmd_blit_image( &self, command_buffer: vk::CommandBuffer, src_image: vk::Image, src_image_layout: vk::ImageLayout, dst_image: vk::Image, dst_image_layout: vk::ImageLayout, regions: &[vk::ImageBlit], filter: vk::Filter, )745     unsafe fn cmd_blit_image(
746         &self,
747         command_buffer: vk::CommandBuffer,
748         src_image: vk::Image,
749         src_image_layout: vk::ImageLayout,
750         dst_image: vk::Image,
751         dst_image_layout: vk::ImageLayout,
752         regions: &[vk::ImageBlit],
753         filter: vk::Filter,
754     ) {
755         self.fp_v1_0().cmd_blit_image(
756             command_buffer,
757             src_image,
758             src_image_layout,
759             dst_image,
760             dst_image_layout,
761             regions.len() as _,
762             regions.as_ptr(),
763             filter,
764         );
765     }
766 
767     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdResolveImage.html>"]
cmd_resolve_image( &self, command_buffer: vk::CommandBuffer, src_image: vk::Image, src_image_layout: vk::ImageLayout, dst_image: vk::Image, dst_image_layout: vk::ImageLayout, regions: &[vk::ImageResolve], )768     unsafe fn cmd_resolve_image(
769         &self,
770         command_buffer: vk::CommandBuffer,
771         src_image: vk::Image,
772         src_image_layout: vk::ImageLayout,
773         dst_image: vk::Image,
774         dst_image_layout: vk::ImageLayout,
775         regions: &[vk::ImageResolve],
776     ) {
777         self.fp_v1_0().cmd_resolve_image(
778             command_buffer,
779             src_image,
780             src_image_layout,
781             dst_image,
782             dst_image_layout,
783             regions.len() as u32,
784             regions.as_ptr(),
785         );
786     }
787 
788     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdFillBuffer.html>"]
cmd_fill_buffer( &self, command_buffer: vk::CommandBuffer, buffer: vk::Buffer, offset: vk::DeviceSize, size: vk::DeviceSize, data: u32, )789     unsafe fn cmd_fill_buffer(
790         &self,
791         command_buffer: vk::CommandBuffer,
792         buffer: vk::Buffer,
793         offset: vk::DeviceSize,
794         size: vk::DeviceSize,
795         data: u32,
796     ) {
797         self.fp_v1_0()
798             .cmd_fill_buffer(command_buffer, buffer, offset, size, data);
799     }
800 
801     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdUpdateBuffer.html>"]
cmd_update_buffer( &self, command_buffer: vk::CommandBuffer, buffer: vk::Buffer, offset: vk::DeviceSize, data: &[u8], )802     unsafe fn cmd_update_buffer(
803         &self,
804         command_buffer: vk::CommandBuffer,
805         buffer: vk::Buffer,
806         offset: vk::DeviceSize,
807         data: &[u8],
808     ) {
809         self.fp_v1_0().cmd_update_buffer(
810             command_buffer,
811             buffer,
812             offset,
813             data.len() as u64,
814             data.as_ptr() as _,
815         );
816     }
817 
818     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdCopyBuffer.html>"]
cmd_copy_buffer( &self, command_buffer: vk::CommandBuffer, src_buffer: vk::Buffer, dst_buffer: vk::Buffer, regions: &[vk::BufferCopy], )819     unsafe fn cmd_copy_buffer(
820         &self,
821         command_buffer: vk::CommandBuffer,
822         src_buffer: vk::Buffer,
823         dst_buffer: vk::Buffer,
824         regions: &[vk::BufferCopy],
825     ) {
826         self.fp_v1_0().cmd_copy_buffer(
827             command_buffer,
828             src_buffer,
829             dst_buffer,
830             regions.len() as u32,
831             regions.as_ptr(),
832         );
833     }
834 
835     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdCopyImageToBuffer.html>"]
cmd_copy_image_to_buffer( &self, command_buffer: vk::CommandBuffer, src_image: vk::Image, src_image_layout: vk::ImageLayout, dst_buffer: vk::Buffer, regions: &[vk::BufferImageCopy], )836     unsafe fn cmd_copy_image_to_buffer(
837         &self,
838         command_buffer: vk::CommandBuffer,
839         src_image: vk::Image,
840         src_image_layout: vk::ImageLayout,
841         dst_buffer: vk::Buffer,
842         regions: &[vk::BufferImageCopy],
843     ) {
844         self.fp_v1_0().cmd_copy_image_to_buffer(
845             command_buffer,
846             src_image,
847             src_image_layout,
848             dst_buffer,
849             regions.len() as u32,
850             regions.as_ptr(),
851         );
852     }
853 
854     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdCopyBufferToImage.html>"]
cmd_copy_buffer_to_image( &self, command_buffer: vk::CommandBuffer, src_buffer: vk::Buffer, dst_image: vk::Image, dst_image_layout: vk::ImageLayout, regions: &[vk::BufferImageCopy], )855     unsafe fn cmd_copy_buffer_to_image(
856         &self,
857         command_buffer: vk::CommandBuffer,
858         src_buffer: vk::Buffer,
859         dst_image: vk::Image,
860         dst_image_layout: vk::ImageLayout,
861         regions: &[vk::BufferImageCopy],
862     ) {
863         self.fp_v1_0().cmd_copy_buffer_to_image(
864             command_buffer,
865             src_buffer,
866             dst_image,
867             dst_image_layout,
868             regions.len() as u32,
869             regions.as_ptr(),
870         );
871     }
872 
873     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdCopyImage.html>"]
cmd_copy_image( &self, command_buffer: vk::CommandBuffer, src_image: vk::Image, src_image_layout: vk::ImageLayout, dst_image: vk::Image, dst_image_layout: vk::ImageLayout, regions: &[vk::ImageCopy], )874     unsafe fn cmd_copy_image(
875         &self,
876         command_buffer: vk::CommandBuffer,
877         src_image: vk::Image,
878         src_image_layout: vk::ImageLayout,
879         dst_image: vk::Image,
880         dst_image_layout: vk::ImageLayout,
881         regions: &[vk::ImageCopy],
882     ) {
883         self.fp_v1_0().cmd_copy_image(
884             command_buffer,
885             src_image,
886             src_image_layout,
887             dst_image,
888             dst_image_layout,
889             regions.len() as u32,
890             regions.as_ptr(),
891         );
892     }
893 
894     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkAllocateDescriptorSets.html>"]
allocate_descriptor_sets( &self, create_info: &vk::DescriptorSetAllocateInfo, ) -> VkResult<Vec<vk::DescriptorSet>>895     unsafe fn allocate_descriptor_sets(
896         &self,
897         create_info: &vk::DescriptorSetAllocateInfo,
898     ) -> VkResult<Vec<vk::DescriptorSet>> {
899         let mut desc_set = Vec::with_capacity(create_info.descriptor_set_count as usize);
900         let err_code = self.fp_v1_0().allocate_descriptor_sets(
901             self.handle(),
902             create_info,
903             desc_set.as_mut_ptr(),
904         );
905 
906         desc_set.set_len(create_info.descriptor_set_count as usize);
907         err_code.result_with_success(desc_set)
908     }
909 
910     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateDescriptorSetLayout.html>"]
create_descriptor_set_layout( &self, create_info: &vk::DescriptorSetLayoutCreateInfo, allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> VkResult<vk::DescriptorSetLayout>911     unsafe fn create_descriptor_set_layout(
912         &self,
913         create_info: &vk::DescriptorSetLayoutCreateInfo,
914         allocation_callbacks: Option<&vk::AllocationCallbacks>,
915     ) -> VkResult<vk::DescriptorSetLayout> {
916         let mut layout = mem::zeroed();
917         self.fp_v1_0()
918             .create_descriptor_set_layout(
919                 self.handle(),
920                 create_info,
921                 allocation_callbacks.as_raw_ptr(),
922                 &mut layout,
923             )
924             .result_with_success(layout)
925     }
926 
927     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDeviceWaitIdle.html>"]
device_wait_idle(&self) -> VkResult<()>928     unsafe fn device_wait_idle(&self) -> VkResult<()> {
929         self.fp_v1_0().device_wait_idle(self.handle()).into()
930     }
931 
932     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateDescriptorPool.html>"]
create_descriptor_pool( &self, create_info: &vk::DescriptorPoolCreateInfo, allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> VkResult<vk::DescriptorPool>933     unsafe fn create_descriptor_pool(
934         &self,
935         create_info: &vk::DescriptorPoolCreateInfo,
936         allocation_callbacks: Option<&vk::AllocationCallbacks>,
937     ) -> VkResult<vk::DescriptorPool> {
938         let mut pool = mem::zeroed();
939         self.fp_v1_0()
940             .create_descriptor_pool(
941                 self.handle(),
942                 create_info,
943                 allocation_callbacks.as_raw_ptr(),
944                 &mut pool,
945             )
946             .result_with_success(pool)
947     }
948 
949     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkResetDescriptorPool.html>"]
reset_descriptor_pool( &self, pool: vk::DescriptorPool, flags: vk::DescriptorPoolResetFlags, ) -> VkResult<()>950     unsafe fn reset_descriptor_pool(
951         &self,
952         pool: vk::DescriptorPool,
953         flags: vk::DescriptorPoolResetFlags,
954     ) -> VkResult<()> {
955         self.fp_v1_0()
956             .reset_descriptor_pool(self.handle(), pool, flags)
957             .into()
958     }
959 
960     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkResetCommandPool.html>"]
reset_command_pool( &self, command_pool: vk::CommandPool, flags: vk::CommandPoolResetFlags, ) -> VkResult<()>961     unsafe fn reset_command_pool(
962         &self,
963         command_pool: vk::CommandPool,
964         flags: vk::CommandPoolResetFlags,
965     ) -> VkResult<()> {
966         self.fp_v1_0()
967             .reset_command_pool(self.handle(), command_pool, flags)
968             .into()
969     }
970 
971     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkResetCommandBuffer.html>"]
reset_command_buffer( &self, command_buffer: vk::CommandBuffer, flags: vk::CommandBufferResetFlags, ) -> VkResult<()>972     unsafe fn reset_command_buffer(
973         &self,
974         command_buffer: vk::CommandBuffer,
975         flags: vk::CommandBufferResetFlags,
976     ) -> VkResult<()> {
977         self.fp_v1_0()
978             .reset_command_buffer(command_buffer, flags)
979             .into()
980     }
981 
982     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkResetFences.html>"]
reset_fences(&self, fences: &[vk::Fence]) -> VkResult<()>983     unsafe fn reset_fences(&self, fences: &[vk::Fence]) -> VkResult<()> {
984         self.fp_v1_0()
985             .reset_fences(self.handle(), fences.len() as u32, fences.as_ptr())
986             .into()
987     }
988 
989     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBindIndexBuffer.html>"]
cmd_bind_index_buffer( &self, command_buffer: vk::CommandBuffer, buffer: vk::Buffer, offset: vk::DeviceSize, index_type: vk::IndexType, )990     unsafe fn cmd_bind_index_buffer(
991         &self,
992         command_buffer: vk::CommandBuffer,
993         buffer: vk::Buffer,
994         offset: vk::DeviceSize,
995         index_type: vk::IndexType,
996     ) {
997         self.fp_v1_0()
998             .cmd_bind_index_buffer(command_buffer, buffer, offset, index_type);
999     }
1000 
1001     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdClearColorImage.html>"]
cmd_clear_color_image( &self, command_buffer: vk::CommandBuffer, image: vk::Image, image_layout: vk::ImageLayout, clear_color_value: &vk::ClearColorValue, ranges: &[vk::ImageSubresourceRange], )1002     unsafe fn cmd_clear_color_image(
1003         &self,
1004         command_buffer: vk::CommandBuffer,
1005         image: vk::Image,
1006         image_layout: vk::ImageLayout,
1007         clear_color_value: &vk::ClearColorValue,
1008         ranges: &[vk::ImageSubresourceRange],
1009     ) {
1010         self.fp_v1_0().cmd_clear_color_image(
1011             command_buffer,
1012             image,
1013             image_layout,
1014             clear_color_value,
1015             ranges.len() as u32,
1016             ranges.as_ptr(),
1017         );
1018     }
1019 
1020     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdClearDepthStencilImage.html>"]
cmd_clear_depth_stencil_image( &self, command_buffer: vk::CommandBuffer, image: vk::Image, image_layout: vk::ImageLayout, clear_depth_stencil_value: &vk::ClearDepthStencilValue, ranges: &[vk::ImageSubresourceRange], )1021     unsafe fn cmd_clear_depth_stencil_image(
1022         &self,
1023         command_buffer: vk::CommandBuffer,
1024         image: vk::Image,
1025         image_layout: vk::ImageLayout,
1026         clear_depth_stencil_value: &vk::ClearDepthStencilValue,
1027         ranges: &[vk::ImageSubresourceRange],
1028     ) {
1029         self.fp_v1_0().cmd_clear_depth_stencil_image(
1030             command_buffer,
1031             image,
1032             image_layout,
1033             clear_depth_stencil_value,
1034             ranges.len() as u32,
1035             ranges.as_ptr(),
1036         );
1037     }
1038 
1039     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdClearAttachments.html>"]
cmd_clear_attachments( &self, command_buffer: vk::CommandBuffer, attachments: &[vk::ClearAttachment], rects: &[vk::ClearRect], )1040     unsafe fn cmd_clear_attachments(
1041         &self,
1042         command_buffer: vk::CommandBuffer,
1043         attachments: &[vk::ClearAttachment],
1044         rects: &[vk::ClearRect],
1045     ) {
1046         self.fp_v1_0().cmd_clear_attachments(
1047             command_buffer,
1048             attachments.len() as u32,
1049             attachments.as_ptr(),
1050             rects.len() as u32,
1051             rects.as_ptr(),
1052         );
1053     }
1054 
1055     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDrawIndexed.html>"]
cmd_draw_indexed( &self, command_buffer: vk::CommandBuffer, index_count: u32, instance_count: u32, first_index: u32, vertex_offset: i32, first_instance: u32, )1056     unsafe fn cmd_draw_indexed(
1057         &self,
1058         command_buffer: vk::CommandBuffer,
1059         index_count: u32,
1060         instance_count: u32,
1061         first_index: u32,
1062         vertex_offset: i32,
1063         first_instance: u32,
1064     ) {
1065         self.fp_v1_0().cmd_draw_indexed(
1066             command_buffer,
1067             index_count,
1068             instance_count,
1069             first_index,
1070             vertex_offset,
1071             first_instance,
1072         );
1073     }
1074 
1075     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDrawIndexedIndirect.html>"]
cmd_draw_indexed_indirect( &self, command_buffer: vk::CommandBuffer, buffer: vk::Buffer, offset: vk::DeviceSize, draw_count: u32, stride: u32, )1076     unsafe fn cmd_draw_indexed_indirect(
1077         &self,
1078         command_buffer: vk::CommandBuffer,
1079         buffer: vk::Buffer,
1080         offset: vk::DeviceSize,
1081         draw_count: u32,
1082         stride: u32,
1083     ) {
1084         self.fp_v1_0().cmd_draw_indexed_indirect(
1085             command_buffer,
1086             buffer,
1087             offset,
1088             draw_count,
1089             stride,
1090         );
1091     }
1092 
1093     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdExecuteCommands.html>"]
cmd_execute_commands( &self, primary_command_buffer: vk::CommandBuffer, secondary_command_buffers: &[vk::CommandBuffer], )1094     unsafe fn cmd_execute_commands(
1095         &self,
1096         primary_command_buffer: vk::CommandBuffer,
1097         secondary_command_buffers: &[vk::CommandBuffer],
1098     ) {
1099         self.fp_v1_0().cmd_execute_commands(
1100             primary_command_buffer,
1101             secondary_command_buffers.len() as u32,
1102             secondary_command_buffers.as_ptr(),
1103         );
1104     }
1105 
1106     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBindDescriptorSets.html>"]
cmd_bind_descriptor_sets( &self, command_buffer: vk::CommandBuffer, pipeline_bind_point: vk::PipelineBindPoint, layout: vk::PipelineLayout, first_set: u32, descriptor_sets: &[vk::DescriptorSet], dynamic_offsets: &[u32], )1107     unsafe fn cmd_bind_descriptor_sets(
1108         &self,
1109         command_buffer: vk::CommandBuffer,
1110         pipeline_bind_point: vk::PipelineBindPoint,
1111         layout: vk::PipelineLayout,
1112         first_set: u32,
1113         descriptor_sets: &[vk::DescriptorSet],
1114         dynamic_offsets: &[u32],
1115     ) {
1116         self.fp_v1_0().cmd_bind_descriptor_sets(
1117             command_buffer,
1118             pipeline_bind_point,
1119             layout,
1120             first_set,
1121             descriptor_sets.len() as u32,
1122             descriptor_sets.as_ptr(),
1123             dynamic_offsets.len() as u32,
1124             dynamic_offsets.as_ptr(),
1125         );
1126     }
1127 
1128     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdCopyQueryPoolResults.html>"]
cmd_copy_query_pool_results( &self, command_buffer: vk::CommandBuffer, query_pool: vk::QueryPool, first_query: u32, query_count: u32, dst_buffer: vk::Buffer, dst_offset: vk::DeviceSize, stride: vk::DeviceSize, flags: vk::QueryResultFlags, )1129     unsafe fn cmd_copy_query_pool_results(
1130         &self,
1131         command_buffer: vk::CommandBuffer,
1132         query_pool: vk::QueryPool,
1133         first_query: u32,
1134         query_count: u32,
1135         dst_buffer: vk::Buffer,
1136         dst_offset: vk::DeviceSize,
1137         stride: vk::DeviceSize,
1138         flags: vk::QueryResultFlags,
1139     ) {
1140         self.fp_v1_0().cmd_copy_query_pool_results(
1141             command_buffer,
1142             query_pool,
1143             first_query,
1144             query_count,
1145             dst_buffer,
1146             dst_offset,
1147             stride,
1148             flags,
1149         );
1150     }
1151 
1152     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdPushConstants.html>"]
cmd_push_constants( &self, command_buffer: vk::CommandBuffer, layout: vk::PipelineLayout, stage_flags: vk::ShaderStageFlags, offset: u32, constants: &[u8], )1153     unsafe fn cmd_push_constants(
1154         &self,
1155         command_buffer: vk::CommandBuffer,
1156         layout: vk::PipelineLayout,
1157         stage_flags: vk::ShaderStageFlags,
1158         offset: u32,
1159         constants: &[u8],
1160     ) {
1161         self.fp_v1_0().cmd_push_constants(
1162             command_buffer,
1163             layout,
1164             stage_flags,
1165             offset,
1166             constants.len() as _,
1167             constants.as_ptr() as _,
1168         );
1169     }
1170 
1171     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBeginRenderPass.html>"]
cmd_begin_render_pass( &self, command_buffer: vk::CommandBuffer, create_info: &vk::RenderPassBeginInfo, contents: vk::SubpassContents, )1172     unsafe fn cmd_begin_render_pass(
1173         &self,
1174         command_buffer: vk::CommandBuffer,
1175         create_info: &vk::RenderPassBeginInfo,
1176         contents: vk::SubpassContents,
1177     ) {
1178         self.fp_v1_0()
1179             .cmd_begin_render_pass(command_buffer, create_info, contents);
1180     }
1181 
1182     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdNextSubpass.html>"]
cmd_next_subpass( &self, command_buffer: vk::CommandBuffer, contents: vk::SubpassContents, )1183     unsafe fn cmd_next_subpass(
1184         &self,
1185         command_buffer: vk::CommandBuffer,
1186         contents: vk::SubpassContents,
1187     ) {
1188         self.fp_v1_0().cmd_next_subpass(command_buffer, contents);
1189     }
1190 
1191     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBindPipeline.html>"]
cmd_bind_pipeline( &self, command_buffer: vk::CommandBuffer, pipeline_bind_point: vk::PipelineBindPoint, pipeline: vk::Pipeline, )1192     unsafe fn cmd_bind_pipeline(
1193         &self,
1194         command_buffer: vk::CommandBuffer,
1195         pipeline_bind_point: vk::PipelineBindPoint,
1196         pipeline: vk::Pipeline,
1197     ) {
1198         self.fp_v1_0()
1199             .cmd_bind_pipeline(command_buffer, pipeline_bind_point, pipeline);
1200     }
1201 
1202     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetScissor.html>"]
cmd_set_scissor( &self, command_buffer: vk::CommandBuffer, first_scissor: u32, scissors: &[vk::Rect2D], )1203     unsafe fn cmd_set_scissor(
1204         &self,
1205         command_buffer: vk::CommandBuffer,
1206         first_scissor: u32,
1207         scissors: &[vk::Rect2D],
1208     ) {
1209         self.fp_v1_0().cmd_set_scissor(
1210             command_buffer,
1211             first_scissor,
1212             scissors.len() as u32,
1213             scissors.as_ptr(),
1214         );
1215     }
1216 
1217     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetLineWidth.html>"]
cmd_set_line_width(&self, command_buffer: vk::CommandBuffer, line_width: f32)1218     unsafe fn cmd_set_line_width(&self, command_buffer: vk::CommandBuffer, line_width: f32) {
1219         self.fp_v1_0()
1220             .cmd_set_line_width(command_buffer, line_width);
1221     }
1222 
1223     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBindVertexBuffers.html>"]
cmd_bind_vertex_buffers( &self, command_buffer: vk::CommandBuffer, first_binding: u32, buffers: &[vk::Buffer], offsets: &[vk::DeviceSize], )1224     unsafe fn cmd_bind_vertex_buffers(
1225         &self,
1226         command_buffer: vk::CommandBuffer,
1227         first_binding: u32,
1228         buffers: &[vk::Buffer],
1229         offsets: &[vk::DeviceSize],
1230     ) {
1231         debug_assert_eq!(buffers.len(), offsets.len());
1232         self.fp_v1_0().cmd_bind_vertex_buffers(
1233             command_buffer,
1234             first_binding,
1235             buffers.len() as u32,
1236             buffers.as_ptr(),
1237             offsets.as_ptr(),
1238         );
1239     }
1240 
1241     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdEndRenderPass.html>"]
cmd_end_render_pass(&self, command_buffer: vk::CommandBuffer)1242     unsafe fn cmd_end_render_pass(&self, command_buffer: vk::CommandBuffer) {
1243         self.fp_v1_0().cmd_end_render_pass(command_buffer);
1244     }
1245 
1246     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDraw.html>"]
cmd_draw( &self, command_buffer: vk::CommandBuffer, vertex_count: u32, instance_count: u32, first_vertex: u32, first_instance: u32, )1247     unsafe fn cmd_draw(
1248         &self,
1249         command_buffer: vk::CommandBuffer,
1250         vertex_count: u32,
1251         instance_count: u32,
1252         first_vertex: u32,
1253         first_instance: u32,
1254     ) {
1255         self.fp_v1_0().cmd_draw(
1256             command_buffer,
1257             vertex_count,
1258             instance_count,
1259             first_vertex,
1260             first_instance,
1261         );
1262     }
1263 
1264     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDrawIndirect.html>"]
cmd_draw_indirect( &self, command_buffer: vk::CommandBuffer, buffer: vk::Buffer, offset: vk::DeviceSize, draw_count: u32, stride: u32, )1265     unsafe fn cmd_draw_indirect(
1266         &self,
1267         command_buffer: vk::CommandBuffer,
1268         buffer: vk::Buffer,
1269         offset: vk::DeviceSize,
1270         draw_count: u32,
1271         stride: u32,
1272     ) {
1273         self.fp_v1_0()
1274             .cmd_draw_indirect(command_buffer, buffer, offset, draw_count, stride);
1275     }
1276 
1277     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDispatch.html>"]
cmd_dispatch( &self, command_buffer: vk::CommandBuffer, group_count_x: u32, group_count_y: u32, group_count_z: u32, )1278     unsafe fn cmd_dispatch(
1279         &self,
1280         command_buffer: vk::CommandBuffer,
1281         group_count_x: u32,
1282         group_count_y: u32,
1283         group_count_z: u32,
1284     ) {
1285         self.fp_v1_0()
1286             .cmd_dispatch(command_buffer, group_count_x, group_count_y, group_count_z);
1287     }
1288 
1289     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDispatchIndirect.html>"]
cmd_dispatch_indirect( &self, command_buffer: vk::CommandBuffer, buffer: vk::Buffer, offset: vk::DeviceSize, )1290     unsafe fn cmd_dispatch_indirect(
1291         &self,
1292         command_buffer: vk::CommandBuffer,
1293         buffer: vk::Buffer,
1294         offset: vk::DeviceSize,
1295     ) {
1296         self.fp_v1_0()
1297             .cmd_dispatch_indirect(command_buffer, buffer, offset);
1298     }
1299 
1300     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetViewport.html>"]
cmd_set_viewport( &self, command_buffer: vk::CommandBuffer, first_viewport: u32, viewports: &[vk::Viewport], )1301     unsafe fn cmd_set_viewport(
1302         &self,
1303         command_buffer: vk::CommandBuffer,
1304         first_viewport: u32,
1305         viewports: &[vk::Viewport],
1306     ) {
1307         self.fp_v1_0().cmd_set_viewport(
1308             command_buffer,
1309             first_viewport,
1310             viewports.len() as u32,
1311             viewports.as_ptr(),
1312         );
1313     }
1314 
1315     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetDepthBias.html>"]
cmd_set_depth_bias( &self, command_buffer: vk::CommandBuffer, constant_factor: f32, clamp: f32, slope_factor: f32, )1316     unsafe fn cmd_set_depth_bias(
1317         &self,
1318         command_buffer: vk::CommandBuffer,
1319         constant_factor: f32,
1320         clamp: f32,
1321         slope_factor: f32,
1322     ) {
1323         self.fp_v1_0()
1324             .cmd_set_depth_bias(command_buffer, constant_factor, clamp, slope_factor);
1325     }
1326 
1327     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetBlendConstants.html>"]
cmd_set_blend_constants( &self, command_buffer: vk::CommandBuffer, blend_constants: &[f32; 4], )1328     unsafe fn cmd_set_blend_constants(
1329         &self,
1330         command_buffer: vk::CommandBuffer,
1331         blend_constants: &[f32; 4],
1332     ) {
1333         self.fp_v1_0()
1334             .cmd_set_blend_constants(command_buffer, blend_constants);
1335     }
1336 
1337     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetDepthBounds.html>"]
cmd_set_depth_bounds( &self, command_buffer: vk::CommandBuffer, min_depth_bounds: f32, max_depth_bounds: f32, )1338     unsafe fn cmd_set_depth_bounds(
1339         &self,
1340         command_buffer: vk::CommandBuffer,
1341         min_depth_bounds: f32,
1342         max_depth_bounds: f32,
1343     ) {
1344         self.fp_v1_0()
1345             .cmd_set_depth_bounds(command_buffer, min_depth_bounds, max_depth_bounds);
1346     }
1347 
1348     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetStencilCompareMask.html>"]
cmd_set_stencil_compare_mask( &self, command_buffer: vk::CommandBuffer, face_mask: vk::StencilFaceFlags, compare_mask: u32, )1349     unsafe fn cmd_set_stencil_compare_mask(
1350         &self,
1351         command_buffer: vk::CommandBuffer,
1352         face_mask: vk::StencilFaceFlags,
1353         compare_mask: u32,
1354     ) {
1355         self.fp_v1_0()
1356             .cmd_set_stencil_compare_mask(command_buffer, face_mask, compare_mask);
1357     }
1358 
1359     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetStencilWriteMask.html>"]
cmd_set_stencil_write_mask( &self, command_buffer: vk::CommandBuffer, face_mask: vk::StencilFaceFlags, write_mask: u32, )1360     unsafe fn cmd_set_stencil_write_mask(
1361         &self,
1362         command_buffer: vk::CommandBuffer,
1363         face_mask: vk::StencilFaceFlags,
1364         write_mask: u32,
1365     ) {
1366         self.fp_v1_0()
1367             .cmd_set_stencil_write_mask(command_buffer, face_mask, write_mask);
1368     }
1369 
1370     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetStencilReference.html>"]
cmd_set_stencil_reference( &self, command_buffer: vk::CommandBuffer, face_mask: vk::StencilFaceFlags, reference: u32, )1371     unsafe fn cmd_set_stencil_reference(
1372         &self,
1373         command_buffer: vk::CommandBuffer,
1374         face_mask: vk::StencilFaceFlags,
1375         reference: u32,
1376     ) {
1377         self.fp_v1_0()
1378             .cmd_set_stencil_reference(command_buffer, face_mask, reference);
1379     }
1380 
1381     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetQueryPoolResults.html>"]
get_query_pool_results<T>( &self, query_pool: vk::QueryPool, first_query: u32, query_count: u32, data: &mut [T], flags: vk::QueryResultFlags, ) -> VkResult<()>1382     unsafe fn get_query_pool_results<T>(
1383         &self,
1384         query_pool: vk::QueryPool,
1385         first_query: u32,
1386         query_count: u32,
1387         data: &mut [T],
1388         flags: vk::QueryResultFlags,
1389     ) -> VkResult<()> {
1390         let data_length = query_count as usize;
1391         assert!(
1392             data_length <= data.len(),
1393             "query_count was higher than the length of the slice"
1394         );
1395         let data_size = mem::size_of::<T>() * data_length;
1396         self.fp_v1_0()
1397             .get_query_pool_results(
1398                 self.handle(),
1399                 query_pool,
1400                 first_query,
1401                 query_count,
1402                 data_size,
1403                 data.as_mut_ptr() as *mut _,
1404                 mem::size_of::<T>() as _,
1405                 flags,
1406             )
1407             .into()
1408     }
1409 
1410     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBeginQuery.html>"]
cmd_begin_query( &self, command_buffer: vk::CommandBuffer, query_pool: vk::QueryPool, query: u32, flags: vk::QueryControlFlags, )1411     unsafe fn cmd_begin_query(
1412         &self,
1413         command_buffer: vk::CommandBuffer,
1414         query_pool: vk::QueryPool,
1415         query: u32,
1416         flags: vk::QueryControlFlags,
1417     ) {
1418         self.fp_v1_0()
1419             .cmd_begin_query(command_buffer, query_pool, query, flags);
1420     }
1421 
1422     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdEndQuery.html>"]
cmd_end_query( &self, command_buffer: vk::CommandBuffer, query_pool: vk::QueryPool, query: u32, )1423     unsafe fn cmd_end_query(
1424         &self,
1425         command_buffer: vk::CommandBuffer,
1426         query_pool: vk::QueryPool,
1427         query: u32,
1428     ) {
1429         self.fp_v1_0()
1430             .cmd_end_query(command_buffer, query_pool, query);
1431     }
1432 
1433     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdResetQueryPool.html>"]
cmd_reset_query_pool( &self, command_buffer: vk::CommandBuffer, pool: vk::QueryPool, first_query: u32, query_count: u32, )1434     unsafe fn cmd_reset_query_pool(
1435         &self,
1436         command_buffer: vk::CommandBuffer,
1437         pool: vk::QueryPool,
1438         first_query: u32,
1439         query_count: u32,
1440     ) {
1441         self.fp_v1_0()
1442             .cmd_reset_query_pool(command_buffer, pool, first_query, query_count);
1443     }
1444 
1445     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdWriteTimestamp.html>"]
cmd_write_timestamp( &self, command_buffer: vk::CommandBuffer, pipeline_stage: vk::PipelineStageFlags, query_pool: vk::QueryPool, query: u32, )1446     unsafe fn cmd_write_timestamp(
1447         &self,
1448         command_buffer: vk::CommandBuffer,
1449         pipeline_stage: vk::PipelineStageFlags,
1450         query_pool: vk::QueryPool,
1451         query: u32,
1452     ) {
1453         self.fp_v1_0()
1454             .cmd_write_timestamp(command_buffer, pipeline_stage, query_pool, query);
1455     }
1456 
1457     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateSemaphore.html>"]
create_semaphore( &self, create_info: &vk::SemaphoreCreateInfo, allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> VkResult<vk::Semaphore>1458     unsafe fn create_semaphore(
1459         &self,
1460         create_info: &vk::SemaphoreCreateInfo,
1461         allocation_callbacks: Option<&vk::AllocationCallbacks>,
1462     ) -> VkResult<vk::Semaphore> {
1463         let mut semaphore = mem::zeroed();
1464         self.fp_v1_0()
1465             .create_semaphore(
1466                 self.handle(),
1467                 create_info,
1468                 allocation_callbacks.as_raw_ptr(),
1469                 &mut semaphore,
1470             )
1471             .result_with_success(semaphore)
1472     }
1473 
1474     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateGraphicsPipelines.html>"]
create_graphics_pipelines( &self, pipeline_cache: vk::PipelineCache, create_infos: &[vk::GraphicsPipelineCreateInfo], allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> Result<Vec<vk::Pipeline>, (Vec<vk::Pipeline>, vk::Result)>1475     unsafe fn create_graphics_pipelines(
1476         &self,
1477         pipeline_cache: vk::PipelineCache,
1478         create_infos: &[vk::GraphicsPipelineCreateInfo],
1479         allocation_callbacks: Option<&vk::AllocationCallbacks>,
1480     ) -> Result<Vec<vk::Pipeline>, (Vec<vk::Pipeline>, vk::Result)> {
1481         let mut pipelines = Vec::with_capacity(create_infos.len());
1482         let err_code = self.fp_v1_0().create_graphics_pipelines(
1483             self.handle(),
1484             pipeline_cache,
1485             create_infos.len() as u32,
1486             create_infos.as_ptr(),
1487             allocation_callbacks.as_raw_ptr(),
1488             pipelines.as_mut_ptr(),
1489         );
1490         pipelines.set_len(create_infos.len());
1491         match err_code {
1492             vk::Result::SUCCESS => Ok(pipelines),
1493             _ => Err((pipelines, err_code)),
1494         }
1495     }
1496 
1497     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateComputePipelines.html>"]
create_compute_pipelines( &self, pipeline_cache: vk::PipelineCache, create_infos: &[vk::ComputePipelineCreateInfo], allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> Result<Vec<vk::Pipeline>, (Vec<vk::Pipeline>, vk::Result)>1498     unsafe fn create_compute_pipelines(
1499         &self,
1500         pipeline_cache: vk::PipelineCache,
1501         create_infos: &[vk::ComputePipelineCreateInfo],
1502         allocation_callbacks: Option<&vk::AllocationCallbacks>,
1503     ) -> Result<Vec<vk::Pipeline>, (Vec<vk::Pipeline>, vk::Result)> {
1504         let mut pipelines = Vec::with_capacity(create_infos.len());
1505         let err_code = self.fp_v1_0().create_compute_pipelines(
1506             self.handle(),
1507             pipeline_cache,
1508             create_infos.len() as u32,
1509             create_infos.as_ptr(),
1510             allocation_callbacks.as_raw_ptr(),
1511             pipelines.as_mut_ptr(),
1512         );
1513         pipelines.set_len(create_infos.len());
1514         match err_code {
1515             vk::Result::SUCCESS => Ok(pipelines),
1516             _ => Err((pipelines, err_code)),
1517         }
1518     }
1519 
1520     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateBuffer.html>"]
create_buffer( &self, create_info: &vk::BufferCreateInfo, allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> VkResult<vk::Buffer>1521     unsafe fn create_buffer(
1522         &self,
1523         create_info: &vk::BufferCreateInfo,
1524         allocation_callbacks: Option<&vk::AllocationCallbacks>,
1525     ) -> VkResult<vk::Buffer> {
1526         let mut buffer = mem::zeroed();
1527         self.fp_v1_0()
1528             .create_buffer(
1529                 self.handle(),
1530                 create_info,
1531                 allocation_callbacks.as_raw_ptr(),
1532                 &mut buffer,
1533             )
1534             .result_with_success(buffer)
1535     }
1536 
1537     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreatePipelineLayout.html>"]
create_pipeline_layout( &self, create_info: &vk::PipelineLayoutCreateInfo, allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> VkResult<vk::PipelineLayout>1538     unsafe fn create_pipeline_layout(
1539         &self,
1540         create_info: &vk::PipelineLayoutCreateInfo,
1541         allocation_callbacks: Option<&vk::AllocationCallbacks>,
1542     ) -> VkResult<vk::PipelineLayout> {
1543         let mut pipeline_layout = mem::zeroed();
1544         self.fp_v1_0()
1545             .create_pipeline_layout(
1546                 self.handle(),
1547                 create_info,
1548                 allocation_callbacks.as_raw_ptr(),
1549                 &mut pipeline_layout,
1550             )
1551             .result_with_success(pipeline_layout)
1552     }
1553 
1554     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreatePipelineCache.html>"]
create_pipeline_cache( &self, create_info: &vk::PipelineCacheCreateInfo, allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> VkResult<vk::PipelineCache>1555     unsafe fn create_pipeline_cache(
1556         &self,
1557         create_info: &vk::PipelineCacheCreateInfo,
1558         allocation_callbacks: Option<&vk::AllocationCallbacks>,
1559     ) -> VkResult<vk::PipelineCache> {
1560         let mut pipeline_cache = mem::zeroed();
1561         self.fp_v1_0()
1562             .create_pipeline_cache(
1563                 self.handle(),
1564                 create_info,
1565                 allocation_callbacks.as_raw_ptr(),
1566                 &mut pipeline_cache,
1567             )
1568             .result_with_success(pipeline_cache)
1569     }
1570 
1571     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPipelineCacheData.html>"]
get_pipeline_cache_data( &self, pipeline_cache: vk::PipelineCache, ) -> VkResult<Vec<u8>>1572     unsafe fn get_pipeline_cache_data(
1573         &self,
1574         pipeline_cache: vk::PipelineCache,
1575     ) -> VkResult<Vec<u8>> {
1576         let mut data_size: usize = 0;
1577         self.fp_v1_0()
1578             .get_pipeline_cache_data(
1579                 self.handle(),
1580                 pipeline_cache,
1581                 &mut data_size,
1582                 ptr::null_mut(),
1583             )
1584             .result()?;
1585         let mut data: Vec<u8> = Vec::with_capacity(data_size);
1586         let err_code = self.fp_v1_0().get_pipeline_cache_data(
1587             self.handle(),
1588             pipeline_cache,
1589             &mut data_size,
1590             data.as_mut_ptr() as _,
1591         );
1592         data.set_len(data_size);
1593         err_code.result_with_success(data)
1594     }
1595 
1596     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkMapMemory.html>"]
map_memory( &self, memory: vk::DeviceMemory, offset: vk::DeviceSize, size: vk::DeviceSize, flags: vk::MemoryMapFlags, ) -> VkResult<*mut c_void>1597     unsafe fn map_memory(
1598         &self,
1599         memory: vk::DeviceMemory,
1600         offset: vk::DeviceSize,
1601         size: vk::DeviceSize,
1602         flags: vk::MemoryMapFlags,
1603     ) -> VkResult<*mut c_void> {
1604         let mut data: *mut c_void = ptr::null_mut();
1605         self.fp_v1_0()
1606             .map_memory(self.handle(), memory, offset, size, flags, &mut data)
1607             .result_with_success(data)
1608     }
1609 
1610     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkUnmapMemory.html>"]
unmap_memory(&self, memory: vk::DeviceMemory)1611     unsafe fn unmap_memory(&self, memory: vk::DeviceMemory) {
1612         self.fp_v1_0().unmap_memory(self.handle(), memory);
1613     }
1614 
1615     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkInvalidateMappedMemoryRanges.html>"]
invalidate_mapped_memory_ranges( &self, ranges: &[vk::MappedMemoryRange], ) -> VkResult<()>1616     unsafe fn invalidate_mapped_memory_ranges(
1617         &self,
1618         ranges: &[vk::MappedMemoryRange],
1619     ) -> VkResult<()> {
1620         self.fp_v1_0()
1621             .invalidate_mapped_memory_ranges(self.handle(), ranges.len() as u32, ranges.as_ptr())
1622             .into()
1623     }
1624 
1625     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkFlushMappedMemoryRanges.html>"]
flush_mapped_memory_ranges(&self, ranges: &[vk::MappedMemoryRange]) -> VkResult<()>1626     unsafe fn flush_mapped_memory_ranges(&self, ranges: &[vk::MappedMemoryRange]) -> VkResult<()> {
1627         self.fp_v1_0()
1628             .flush_mapped_memory_ranges(self.handle(), ranges.len() as u32, ranges.as_ptr())
1629             .into()
1630     }
1631 
1632     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateFramebuffer.html>"]
create_framebuffer( &self, create_info: &vk::FramebufferCreateInfo, allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> VkResult<vk::Framebuffer>1633     unsafe fn create_framebuffer(
1634         &self,
1635         create_info: &vk::FramebufferCreateInfo,
1636         allocation_callbacks: Option<&vk::AllocationCallbacks>,
1637     ) -> VkResult<vk::Framebuffer> {
1638         let mut framebuffer = mem::zeroed();
1639         self.fp_v1_0()
1640             .create_framebuffer(
1641                 self.handle(),
1642                 create_info,
1643                 allocation_callbacks.as_raw_ptr(),
1644                 &mut framebuffer,
1645             )
1646             .result_with_success(framebuffer)
1647     }
1648 
1649     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetDeviceQueue.html>"]
get_device_queue(&self, queue_family_index: u32, queue_index: u32) -> vk::Queue1650     unsafe fn get_device_queue(&self, queue_family_index: u32, queue_index: u32) -> vk::Queue {
1651         let mut queue = mem::zeroed();
1652         self.fp_v1_0()
1653             .get_device_queue(self.handle(), queue_family_index, queue_index, &mut queue);
1654         queue
1655     }
1656 
1657     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdPipelineBarrier.html>"]
cmd_pipeline_barrier( &self, command_buffer: vk::CommandBuffer, src_stage_mask: vk::PipelineStageFlags, dst_stage_mask: vk::PipelineStageFlags, dependency_flags: vk::DependencyFlags, memory_barriers: &[vk::MemoryBarrier], buffer_memory_barriers: &[vk::BufferMemoryBarrier], image_memory_barriers: &[vk::ImageMemoryBarrier], )1658     unsafe fn cmd_pipeline_barrier(
1659         &self,
1660         command_buffer: vk::CommandBuffer,
1661         src_stage_mask: vk::PipelineStageFlags,
1662         dst_stage_mask: vk::PipelineStageFlags,
1663         dependency_flags: vk::DependencyFlags,
1664         memory_barriers: &[vk::MemoryBarrier],
1665         buffer_memory_barriers: &[vk::BufferMemoryBarrier],
1666         image_memory_barriers: &[vk::ImageMemoryBarrier],
1667     ) {
1668         self.fp_v1_0().cmd_pipeline_barrier(
1669             command_buffer,
1670             src_stage_mask,
1671             dst_stage_mask,
1672             dependency_flags,
1673             memory_barriers.len() as u32,
1674             memory_barriers.as_ptr(),
1675             buffer_memory_barriers.len() as u32,
1676             buffer_memory_barriers.as_ptr(),
1677             image_memory_barriers.len() as u32,
1678             image_memory_barriers.as_ptr(),
1679         );
1680     }
1681 
1682     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateRenderPass.html>"]
create_render_pass( &self, create_info: &vk::RenderPassCreateInfo, allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> VkResult<vk::RenderPass>1683     unsafe fn create_render_pass(
1684         &self,
1685         create_info: &vk::RenderPassCreateInfo,
1686         allocation_callbacks: Option<&vk::AllocationCallbacks>,
1687     ) -> VkResult<vk::RenderPass> {
1688         let mut renderpass = mem::zeroed();
1689         self.fp_v1_0()
1690             .create_render_pass(
1691                 self.handle(),
1692                 create_info,
1693                 allocation_callbacks.as_raw_ptr(),
1694                 &mut renderpass,
1695             )
1696             .result_with_success(renderpass)
1697     }
1698 
1699     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkBeginCommandBuffer.html>"]
begin_command_buffer( &self, command_buffer: vk::CommandBuffer, begin_info: &vk::CommandBufferBeginInfo, ) -> VkResult<()>1700     unsafe fn begin_command_buffer(
1701         &self,
1702         command_buffer: vk::CommandBuffer,
1703         begin_info: &vk::CommandBufferBeginInfo,
1704     ) -> VkResult<()> {
1705         self.fp_v1_0()
1706             .begin_command_buffer(command_buffer, begin_info)
1707             .into()
1708     }
1709 
1710     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkEndCommandBuffer.html>"]
end_command_buffer(&self, command_buffer: vk::CommandBuffer) -> VkResult<()>1711     unsafe fn end_command_buffer(&self, command_buffer: vk::CommandBuffer) -> VkResult<()> {
1712         self.fp_v1_0().end_command_buffer(command_buffer).into()
1713     }
1714 
1715     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkWaitForFences.html>"]
wait_for_fences( &self, fences: &[vk::Fence], wait_all: bool, timeout: u64, ) -> VkResult<()>1716     unsafe fn wait_for_fences(
1717         &self,
1718         fences: &[vk::Fence],
1719         wait_all: bool,
1720         timeout: u64,
1721     ) -> VkResult<()> {
1722         self.fp_v1_0()
1723             .wait_for_fences(
1724                 self.handle(),
1725                 fences.len() as u32,
1726                 fences.as_ptr(),
1727                 wait_all as u32,
1728                 timeout,
1729             )
1730             .into()
1731     }
1732 
1733     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetFenceStatus.html>"]
get_fence_status(&self, fence: vk::Fence) -> VkResult<bool>1734     unsafe fn get_fence_status(&self, fence: vk::Fence) -> VkResult<bool> {
1735         let err_code = self.fp_v1_0().get_fence_status(self.handle(), fence);
1736         match err_code {
1737             vk::Result::SUCCESS => Ok(true),
1738             vk::Result::NOT_READY => Ok(false),
1739             _ => Err(err_code),
1740         }
1741     }
1742 
1743     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkQueueWaitIdle.html>"]
queue_wait_idle(&self, queue: vk::Queue) -> VkResult<()>1744     unsafe fn queue_wait_idle(&self, queue: vk::Queue) -> VkResult<()> {
1745         self.fp_v1_0().queue_wait_idle(queue).into()
1746     }
1747 
1748     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkQueueSubmit.html>"]
queue_submit( &self, queue: vk::Queue, submits: &[vk::SubmitInfo], fence: vk::Fence, ) -> VkResult<()>1749     unsafe fn queue_submit(
1750         &self,
1751         queue: vk::Queue,
1752         submits: &[vk::SubmitInfo],
1753         fence: vk::Fence,
1754     ) -> VkResult<()> {
1755         self.fp_v1_0()
1756             .queue_submit(queue, submits.len() as u32, submits.as_ptr(), fence)
1757             .into()
1758     }
1759 
1760     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateBufferView.html>"]
create_buffer_view( &self, create_info: &vk::BufferViewCreateInfo, allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> VkResult<vk::BufferView>1761     unsafe fn create_buffer_view(
1762         &self,
1763         create_info: &vk::BufferViewCreateInfo,
1764         allocation_callbacks: Option<&vk::AllocationCallbacks>,
1765     ) -> VkResult<vk::BufferView> {
1766         let mut buffer_view = mem::zeroed();
1767         self.fp_v1_0()
1768             .create_buffer_view(
1769                 self.handle(),
1770                 create_info,
1771                 allocation_callbacks.as_raw_ptr(),
1772                 &mut buffer_view,
1773             )
1774             .result_with_success(buffer_view)
1775     }
1776 
1777     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyBufferView.html>"]
destroy_buffer_view( &self, buffer_view: vk::BufferView, allocation_callbacks: Option<&vk::AllocationCallbacks>, )1778     unsafe fn destroy_buffer_view(
1779         &self,
1780         buffer_view: vk::BufferView,
1781         allocation_callbacks: Option<&vk::AllocationCallbacks>,
1782     ) {
1783         self.fp_v1_0().destroy_buffer_view(
1784             self.handle(),
1785             buffer_view,
1786             allocation_callbacks.as_raw_ptr(),
1787         );
1788     }
1789 
1790     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateImageView.html>"]
create_image_view( &self, create_info: &vk::ImageViewCreateInfo, allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> VkResult<vk::ImageView>1791     unsafe fn create_image_view(
1792         &self,
1793         create_info: &vk::ImageViewCreateInfo,
1794         allocation_callbacks: Option<&vk::AllocationCallbacks>,
1795     ) -> VkResult<vk::ImageView> {
1796         let mut image_view = mem::zeroed();
1797         self.fp_v1_0()
1798             .create_image_view(
1799                 self.handle(),
1800                 create_info,
1801                 allocation_callbacks.as_raw_ptr(),
1802                 &mut image_view,
1803             )
1804             .result_with_success(image_view)
1805     }
1806 
1807     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkAllocateCommandBuffers.html>"]
allocate_command_buffers( &self, create_info: &vk::CommandBufferAllocateInfo, ) -> VkResult<Vec<vk::CommandBuffer>>1808     unsafe fn allocate_command_buffers(
1809         &self,
1810         create_info: &vk::CommandBufferAllocateInfo,
1811     ) -> VkResult<Vec<vk::CommandBuffer>> {
1812         let mut buffers = Vec::with_capacity(create_info.command_buffer_count as usize);
1813         let err_code = self.fp_v1_0().allocate_command_buffers(
1814             self.handle(),
1815             create_info,
1816             buffers.as_mut_ptr(),
1817         );
1818         buffers.set_len(create_info.command_buffer_count as usize);
1819         err_code.result_with_success(buffers)
1820     }
1821 
1822     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateCommandPool.html>"]
create_command_pool( &self, create_info: &vk::CommandPoolCreateInfo, allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> VkResult<vk::CommandPool>1823     unsafe fn create_command_pool(
1824         &self,
1825         create_info: &vk::CommandPoolCreateInfo,
1826         allocation_callbacks: Option<&vk::AllocationCallbacks>,
1827     ) -> VkResult<vk::CommandPool> {
1828         let mut pool = mem::zeroed();
1829         self.fp_v1_0()
1830             .create_command_pool(
1831                 self.handle(),
1832                 create_info,
1833                 allocation_callbacks.as_raw_ptr(),
1834                 &mut pool,
1835             )
1836             .result_with_success(pool)
1837     }
1838 
1839     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateQueryPool.html>"]
create_query_pool( &self, create_info: &vk::QueryPoolCreateInfo, allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> VkResult<vk::QueryPool>1840     unsafe fn create_query_pool(
1841         &self,
1842         create_info: &vk::QueryPoolCreateInfo,
1843         allocation_callbacks: Option<&vk::AllocationCallbacks>,
1844     ) -> VkResult<vk::QueryPool> {
1845         let mut pool = mem::zeroed();
1846         self.fp_v1_0()
1847             .create_query_pool(
1848                 self.handle(),
1849                 create_info,
1850                 allocation_callbacks.as_raw_ptr(),
1851                 &mut pool,
1852             )
1853             .result_with_success(pool)
1854     }
1855 
1856     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateImage.html>"]
create_image( &self, create_info: &vk::ImageCreateInfo, allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> VkResult<vk::Image>1857     unsafe fn create_image(
1858         &self,
1859         create_info: &vk::ImageCreateInfo,
1860         allocation_callbacks: Option<&vk::AllocationCallbacks>,
1861     ) -> VkResult<vk::Image> {
1862         let mut image = mem::zeroed();
1863         self.fp_v1_0()
1864             .create_image(
1865                 self.handle(),
1866                 create_info,
1867                 allocation_callbacks.as_raw_ptr(),
1868                 &mut image,
1869             )
1870             .result_with_success(image)
1871     }
1872 
1873     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetImageSubresourceLayout.html>"]
get_image_subresource_layout( &self, image: vk::Image, subresource: vk::ImageSubresource, ) -> vk::SubresourceLayout1874     unsafe fn get_image_subresource_layout(
1875         &self,
1876         image: vk::Image,
1877         subresource: vk::ImageSubresource,
1878     ) -> vk::SubresourceLayout {
1879         let mut layout = mem::zeroed();
1880         self.fp_v1_0().get_image_subresource_layout(
1881             self.handle(),
1882             image,
1883             &subresource,
1884             &mut layout,
1885         );
1886         layout
1887     }
1888 
1889     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetImageMemoryRequirements.html>"]
get_image_memory_requirements(&self, image: vk::Image) -> vk::MemoryRequirements1890     unsafe fn get_image_memory_requirements(&self, image: vk::Image) -> vk::MemoryRequirements {
1891         let mut mem_req = mem::zeroed();
1892         self.fp_v1_0()
1893             .get_image_memory_requirements(self.handle(), image, &mut mem_req);
1894         mem_req
1895     }
1896 
1897     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetBufferMemoryRequirements.html>"]
get_buffer_memory_requirements(&self, buffer: vk::Buffer) -> vk::MemoryRequirements1898     unsafe fn get_buffer_memory_requirements(&self, buffer: vk::Buffer) -> vk::MemoryRequirements {
1899         let mut mem_req = mem::zeroed();
1900         self.fp_v1_0()
1901             .get_buffer_memory_requirements(self.handle(), buffer, &mut mem_req);
1902         mem_req
1903     }
1904 
1905     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkAllocateMemory.html>"]
allocate_memory( &self, create_info: &vk::MemoryAllocateInfo, allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> VkResult<vk::DeviceMemory>1906     unsafe fn allocate_memory(
1907         &self,
1908         create_info: &vk::MemoryAllocateInfo,
1909         allocation_callbacks: Option<&vk::AllocationCallbacks>,
1910     ) -> VkResult<vk::DeviceMemory> {
1911         let mut memory = mem::zeroed();
1912         self.fp_v1_0()
1913             .allocate_memory(
1914                 self.handle(),
1915                 create_info,
1916                 allocation_callbacks.as_raw_ptr(),
1917                 &mut memory,
1918             )
1919             .result_with_success(memory)
1920     }
1921 
1922     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateShaderModule.html>"]
create_shader_module( &self, create_info: &vk::ShaderModuleCreateInfo, allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> VkResult<vk::ShaderModule>1923     unsafe fn create_shader_module(
1924         &self,
1925         create_info: &vk::ShaderModuleCreateInfo,
1926         allocation_callbacks: Option<&vk::AllocationCallbacks>,
1927     ) -> VkResult<vk::ShaderModule> {
1928         let mut shader = mem::zeroed();
1929         self.fp_v1_0()
1930             .create_shader_module(
1931                 self.handle(),
1932                 create_info,
1933                 allocation_callbacks.as_raw_ptr(),
1934                 &mut shader,
1935             )
1936             .result_with_success(shader)
1937     }
1938 
1939     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateFence.html>"]
create_fence( &self, create_info: &vk::FenceCreateInfo, allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> VkResult<vk::Fence>1940     unsafe fn create_fence(
1941         &self,
1942         create_info: &vk::FenceCreateInfo,
1943         allocation_callbacks: Option<&vk::AllocationCallbacks>,
1944     ) -> VkResult<vk::Fence> {
1945         let mut fence = mem::zeroed();
1946         self.fp_v1_0()
1947             .create_fence(
1948                 self.handle(),
1949                 create_info,
1950                 allocation_callbacks.as_raw_ptr(),
1951                 &mut fence,
1952             )
1953             .result_with_success(fence)
1954     }
1955 
1956     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkBindBufferMemory.html>"]
bind_buffer_memory( &self, buffer: vk::Buffer, device_memory: vk::DeviceMemory, offset: vk::DeviceSize, ) -> VkResult<()>1957     unsafe fn bind_buffer_memory(
1958         &self,
1959         buffer: vk::Buffer,
1960         device_memory: vk::DeviceMemory,
1961         offset: vk::DeviceSize,
1962     ) -> VkResult<()> {
1963         self.fp_v1_0()
1964             .bind_buffer_memory(self.handle(), buffer, device_memory, offset)
1965             .into()
1966     }
1967 
1968     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkBindImageMemory.html>"]
bind_image_memory( &self, image: vk::Image, device_memory: vk::DeviceMemory, offset: vk::DeviceSize, ) -> VkResult<()>1969     unsafe fn bind_image_memory(
1970         &self,
1971         image: vk::Image,
1972         device_memory: vk::DeviceMemory,
1973         offset: vk::DeviceSize,
1974     ) -> VkResult<()> {
1975         self.fp_v1_0()
1976             .bind_image_memory(self.handle(), image, device_memory, offset)
1977             .into()
1978     }
1979 }
1980 
1981 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDevice.html>"]
1982 #[derive(Clone)]
1983 pub struct Device {
1984     handle: vk::Device,
1985     device_fn_1_0: vk::DeviceFnV1_0,
1986     device_fn_1_1: vk::DeviceFnV1_1,
1987     device_fn_1_2: vk::DeviceFnV1_2,
1988 }
1989 
1990 impl Device {
load(instance_fn: &vk::InstanceFnV1_0, device: vk::Device) -> Self1991     pub unsafe fn load(instance_fn: &vk::InstanceFnV1_0, device: vk::Device) -> Self {
1992         let device_fn_1_0 = vk::DeviceFnV1_0::load(|name| {
1993             mem::transmute(instance_fn.get_device_proc_addr(device, name.as_ptr()))
1994         });
1995         let device_fn_1_1 = vk::DeviceFnV1_1::load(|name| {
1996             mem::transmute(instance_fn.get_device_proc_addr(device, name.as_ptr()))
1997         });
1998         let device_fn_1_2 = vk::DeviceFnV1_2::load(|name| {
1999             mem::transmute(instance_fn.get_device_proc_addr(device, name.as_ptr()))
2000         });
2001         Device {
2002             handle: device,
2003             device_fn_1_0,
2004             device_fn_1_1,
2005             device_fn_1_2,
2006         }
2007     }
2008 }
2009 
2010 impl DeviceV1_0 for Device {
handle(&self) -> vk::Device2011     fn handle(&self) -> vk::Device {
2012         self.handle
2013     }
2014 
fp_v1_0(&self) -> &vk::DeviceFnV1_02015     fn fp_v1_0(&self) -> &vk::DeviceFnV1_0 {
2016         &self.device_fn_1_0
2017     }
2018 }
2019 
2020 impl DeviceV1_1 for Device {
fp_v1_1(&self) -> &vk::DeviceFnV1_12021     fn fp_v1_1(&self) -> &vk::DeviceFnV1_1 {
2022         &self.device_fn_1_1
2023     }
2024 }
2025 
2026 impl DeviceV1_2 for Device {
fp_v1_2(&self) -> &vk::DeviceFnV1_22027     fn fp_v1_2(&self) -> &vk::DeviceFnV1_2 {
2028         &self.device_fn_1_2
2029     }
2030 }
2031 
2032 impl Device {
handle(&self) -> vk::Device2033     pub fn handle(&self) -> vk::Device {
2034         self.handle
2035     }
2036 }
2037