use std::collections::HashMap;
use crate::{config::GaiaConfig, program::GaiaModule, Backend, GeneratedFiles};
use gaia_types::{
helpers::{AbiCompatible, ApiCompatible, Architecture, ArtifactType, CompilationTarget},
Result,
};
#[derive(Default)]
pub struct SpirvBackend {}
impl Backend for SpirvBackend {
fn name(&self) -> &'static str {
"SPIR-V"
}
fn primary_target(&self) -> CompilationTarget {
CompilationTarget { build: Architecture::Unknown, host: AbiCompatible::SPIRV, target: ApiCompatible::Unknown }
}
fn artifact_type(&self) -> ArtifactType {
ArtifactType::Binary
}
fn match_score(&self, target: &CompilationTarget) -> f32 {
if target.host == AbiCompatible::SPIRV {
return 95.0;
}
0.0
}
fn generate(&self, _program: &GaiaModule, config: &GaiaConfig) -> Result<GeneratedFiles> {
#[cfg(feature = "spirv-assembler")]
{
Ok(GeneratedFiles { artifact_type: ArtifactType::Binary, files: HashMap::new(), custom: None, diagnostics: vec![] })
}
#[cfg(not(feature = "spirv-assembler"))]
{
Err(gaia_types::GaiaError::custom_error("SPIR-V feature is not enabled"))
}
}
}