MCPcopy Create free account
hub / github.com/Rust-GPU/rust-gpu / create_swapchain

Method create_swapchain

examples/runners/ash/src/main.rs:488–533  ·  view source on GitHub ↗
(&self)

Source from the content-addressed store, hash-verified

486 }
487
488 pub fn create_swapchain(&self) -> (vk::SwapchainKHR, vk::Extent2D) {
489 let surface_capabilities = self.surface_capabilities();
490 let mut desired_image_count = surface_capabilities.min_image_count + 1;
491 if surface_capabilities.max_image_count > 0
492 && desired_image_count > surface_capabilities.max_image_count
493 {
494 desired_image_count = surface_capabilities.max_image_count;
495 }
496 let pre_transform = if surface_capabilities
497 .supported_transforms
498 .contains(vk::SurfaceTransformFlagsKHR::IDENTITY)
499 {
500 vk::SurfaceTransformFlagsKHR::IDENTITY
501 } else {
502 surface_capabilities.current_transform
503 };
504 let present_mode = unsafe {
505 self.surface_loader
506 .get_physical_device_surface_present_modes(self.pdevice, self.surface)
507 .unwrap()
508 .iter()
509 .cloned()
510 .find(|&mode| mode == vk::PresentModeKHR::MAILBOX)
511 .unwrap_or(vk::PresentModeKHR::FIFO)
512 };
513 let extent = self.surface_resolution();
514 let swapchain_create_info = vk::SwapchainCreateInfoKHR::builder()
515 .surface(self.surface)
516 .min_image_count(desired_image_count)
517 .image_color_space(self.surface_format.color_space)
518 .image_format(self.surface_format.format)
519 .image_extent(extent)
520 .image_usage(vk::ImageUsageFlags::COLOR_ATTACHMENT)
521 .image_sharing_mode(vk::SharingMode::EXCLUSIVE)
522 .pre_transform(pre_transform)
523 .composite_alpha(vk::CompositeAlphaFlagsKHR::OPAQUE)
524 .present_mode(present_mode)
525 .clipped(true)
526 .image_array_layers(1);
527 let swapchain = unsafe {
528 self.swapchain_loader
529 .create_swapchain(&swapchain_create_info, None)
530 .unwrap()
531 };
532 (swapchain, extent)
533 }
534
535 pub fn create_image_views(&self, swapchain: vk::SwapchainKHR) -> Vec<vk::ImageView> {
536 unsafe {

Callers 2

from_baseMethod · 0.80
recreate_swapchainMethod · 0.80

Calls 3

surface_capabilitiesMethod · 0.80
iterMethod · 0.80
surface_resolutionMethod · 0.80

Tested by

no test coverage detected