use crate::LayoutSize;
pub trait ExternalTexture: Send + Sync {
fn resolve_view(&self, device: &wgpu::Device, queue: &wgpu::Queue) -> wgpu::TextureView;
fn metadata(&self) -> ExternalTextureMetadata;
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct ExternalTextureMetadata {
pub size: LayoutSize,
pub alpha_mode: ExternalTextureAlphaMode,
pub y_flip: bool,
pub is_srgb: bool,
pub compositing_mode: ExternalTextureCompositingMode,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ExternalTextureAlphaMode {
Straight,
Premultiplied,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum ExternalTextureCompositingMode {
LinearLight,
NonLinear(f32),
}