use ash::vk;
use crate::synchronizer::SynchronizerHandle;
use crate::vulkan::{ImageHandle, MAX_FRAMES_IN_FLIGHT, MAX_SWAPCHAIN_IMAGES};
use crate::{Formats, Uses};
#[derive(Clone)]
pub(crate) struct Swapchain {
pub surface: vk::SurfaceKHR,
pub swapchain: vk::SwapchainKHR,
pub acquire_synchronizers: [SynchronizerHandle; MAX_FRAMES_IN_FLIGHT],
pub submit_synchronizers: [SynchronizerHandle; MAX_SWAPCHAIN_IMAGES],
pub images: [ImageHandle; MAX_SWAPCHAIN_IMAGES],
pub native_images: [ImageHandle; MAX_SWAPCHAIN_IMAGES],
pub uses_proxy_images: bool,
pub proxy_uses: Uses,
pub format: Formats,
pub supported_usage_flags: vk::ImageUsageFlags,
pub acquired_image_indices: [u8; MAX_FRAMES_IN_FLIGHT],
pub extent: vk::Extent2D,
pub vk_present_mode: vk::PresentModeKHR,
pub min_image_count: u32,
pub max_image_count: u32,
}