use concinnity_core::render::backend;
use concinnity_core::render::backend_init;
use concinnity_core::render::error::RenderResult;
pub fn probe_gpu_profile() -> Option<backend::GpuProfile> {
#[cfg(backend_dx)]
{
crate::directx::probe_gpu_profile()
}
#[cfg(backend_vk)]
{
crate::vulkan::probe_gpu_profile()
}
#[cfg(backend_metal)]
{
crate::metal::probe_gpu_profile()
}
#[cfg(not(any(backend_dx, backend_vk, backend_metal)))]
{
None
}
}
pub fn init_backend(
init: backend_init::BackendInit<'_>,
) -> RenderResult<Box<dyn backend::RenderBackend>> {
#[cfg(backend_dx)]
{
crate::directx::DxContext::new(init)
.map(|dx| Box::new(dx) as Box<dyn backend::RenderBackend>)
}
#[cfg(backend_vk)]
{
crate::vulkan::VkContext::new(init)
.map(|vk| Box::new(vk) as Box<dyn backend::RenderBackend>)
}
#[cfg(backend_metal)]
{
crate::metal::MtlContext::new(init)
.map(|mtl| Box::new(mtl) as Box<dyn backend::RenderBackend>)
}
#[cfg(not(any(backend_dx, backend_vk, backend_metal)))]
{
let _ = init;
Err(concinnity_core::render::error::RenderError::Unsupported { op: "init_backend" })
}
}