jayce 12.1.0

jayce is a tokenizer 🌌
Documentation
use anyhow::Result;

use vulkanalia::prelude::v1_0::*;

use crate::app::AppData;

pub(crate) unsafe fn create_swapchain_image_views(
    device: &Device,
    data: &mut AppData,
) -> Result<()> {
    data.swapchain_image_views = data
        .swapchain_images
        .iter()
        .map(|i| {
            create_image_view(
                device,
                i,
                &data.swapchain_format,
                &vk::ImageAspectFlags::COLOR,
                &1,
            )
        })
        .collect::<Result<Vec<_>, _>>()?;

    Ok(())
}

pub(crate) unsafe fn create_image_view(
    device: &Device,
    image: &vk::Image,
    format: &vk::Format,
    aspects: &vk::ImageAspectFlags,
    mip_levels: &u32,
) -> Result<vk::ImageView> {
    let subresource_range = vk::ImageSubresourceRange::builder()
        .aspect_mask(*aspects)
        .base_mip_level(0)
        .level_count(*mip_levels)
        .base_array_layer(0)
        .layer_count(1);

    let info = vk::ImageViewCreateInfo::builder()
        .image(*image)
        .view_type(vk::ImageViewType::_2D)
        .format(*format)
        .subresource_range(subresource_range);

    Ok(device.create_image_view(&info, None)?)
}