use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum RenderBackend {
VelloGpu,
InstancedWgpu,
VelloCpu,
VelloHybrid,
TinySkia,
}
impl RenderBackend {
pub fn is_cpu(self) -> bool {
matches!(self, Self::VelloCpu | Self::TinySkia)
}
pub fn is_gpu_swapchain(self) -> bool {
matches!(self, Self::VelloGpu | Self::InstancedWgpu | Self::VelloHybrid)
}
pub fn as_str(self) -> &'static str {
match self {
Self::VelloGpu => "vello_gpu",
Self::InstancedWgpu => "instanced_wgpu",
Self::VelloCpu => "vello_cpu",
Self::VelloHybrid => "vello_hybrid",
Self::TinySkia => "tiny_skia",
}
}
pub fn label(self) -> &'static str {
match self {
Self::VelloGpu => "Vello GPU",
Self::InstancedWgpu => "Instanced wGPU",
Self::VelloCpu => "Vello CPU",
Self::VelloHybrid => "Vello Hybrid",
Self::TinySkia => "Tiny-Skia CPU",
}
}
}