move enumerate_adapters on the Instance

This commit is contained in:
teoxoy 2024-10-11 14:49:08 +02:00 committed by Teodor Tanasoaia
parent 952ba3e12c
commit de97e5449c

View File

@ -135,6 +135,28 @@ impl Instance {
}) })
} }
pub fn enumerate_adapters(&self, backends: Backends) -> Vec<Adapter> {
profiling::scope!("Instance::enumerate_adapters");
api_log!("Instance::enumerate_adapters");
let mut adapters = Vec::new();
for (_, instance) in self
.instance_per_backend
.iter()
.filter(|(backend, _)| backends.contains(Backends::from(*backend)))
{
profiling::scope!("enumerating", &*format!("{:?}", backend));
let hal_adapters = unsafe { instance.enumerate_adapters(None) };
for raw in hal_adapters {
let adapter = Adapter::new(raw);
log::info!("Adapter {:?}", adapter.raw.info);
adapters.push(adapter);
}
}
adapters
}
pub fn request_adapter( pub fn request_adapter(
&self, &self,
desc: &wgt::RequestAdapterOptions<&Surface>, desc: &wgt::RequestAdapterOptions<&Surface>,
@ -687,27 +709,11 @@ impl Global {
} }
pub fn enumerate_adapters(&self, backends: Backends) -> Vec<AdapterId> { pub fn enumerate_adapters(&self, backends: Backends) -> Vec<AdapterId> {
profiling::scope!("Instance::enumerate_adapters"); let adapters = self.instance.enumerate_adapters(backends);
api_log!("Instance::enumerate_adapters");
let mut adapters = Vec::new();
for (_, instance) in self
.instance
.instance_per_backend
.iter()
.filter(|(backend, _)| backends.contains(Backends::from(*backend)))
{
profiling::scope!("enumerating", &*format!("{:?}", backend));
let hal_adapters = unsafe { instance.enumerate_adapters(None) };
for raw in hal_adapters {
let adapter = Adapter::new(raw);
log::info!("Adapter {:?}", adapter.raw.info);
let id = self.hub.adapters.prepare(None).assign(Arc::new(adapter));
adapters.push(id);
}
}
adapters adapters
.into_iter()
.map(|adapter| self.hub.adapters.prepare(None).assign(Arc::new(adapter)))
.collect()
} }
pub fn request_adapter( pub fn request_adapter(