use super::device::Device;
use std::sync::Arc;
use vulkano::sync::GpuFuture;
use vulkano::format::{AcceptsPixels, FormatDesc};
pub use vulkano::format::{Format};
pub use vulkano::image::{AttachmentImage, Dimensions, ImmutableImage, ImageCreationError};
pub use vulkano::sampler::{BorderColor, Filter, Sampler, SamplerCreationError, SamplerAddressMode, MipmapMode};
pub use vulkano::pipeline::depth_stencil::Compare as CompareOp;
pub fn create_immutable_image_from_iter<P, I, F>(device: &Device, data_iterator: I, dimensions: Dimensions, format: F)
-> Result<Arc<ImmutableImage<F>>, ImageCreationError>
where
P : Send + Sync + Clone + 'static,
F : FormatDesc + AcceptsPixels<P> + Send + Sync + 'static,
I : ExactSizeIterator<Item = P>,
Format: AcceptsPixels<P>,
{
let (image, future) = ImmutableImage::from_iter(data_iterator, dimensions, format, device.transfer_queue.clone())?;
future.flush().unwrap();
Ok(image)
}