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