Update for new wgpu PR, keep API slightly closer to vanilla

This commit is contained in:
kyren
2019-05-21 17:41:26 -04:00
parent ae48fe07e0
commit 8c53667572
3 changed files with 35 additions and 43 deletions

View File

@@ -54,7 +54,7 @@ pub fn run<E: Example>(title: &str) {
info!("Initializing the window...");
#[cfg(not(feature = "gl"))]
let (_instance, _window, hidpi_factor, size, surface, adapter) = {
let (_window, instance, hidpi_factor, size, surface) = {
use wgpu::winit::Window;
let instance = wgpu::Instance::new();
@@ -69,15 +69,11 @@ pub fn run<E: Example>(title: &str) {
let surface = instance.create_surface(&window);
let adapter = instance.get_adapter(&wgpu::AdapterDescriptor {
power_preference: wgpu::PowerPreference::LowPower,
});
(instance, window, hidpi_factor, size, surface, adapter)
(window, instance, hidpi_factor, size, surface)
};
#[cfg(feature = "gl")]
let (hidpi_factor, size, surface, adapter) = {
let (instance, hidpi_factor, size, surface) = {
let wb = wgpu::winit::WindowBuilder::new();
let cb = wgpu::glutin::ContextBuilder::new().with_vsync(true);
let context = wgpu::glutin::WindowedContext::new_windowed(wb, cb, &events_loop).unwrap();
@@ -90,15 +86,15 @@ pub fn run<E: Example>(title: &str) {
.unwrap()
.to_physical(hidpi_factor);
let surface = wgpu::Surface::create(context);
let instance = wgpu::Instance::new(context);
let surface = instance.get_surface();
let adapter = surface.get_adapter(&wgpu::AdapterDescriptor {
power_preference: wgpu::PowerPreference::LowPower,
});
(hidpi_factor, size, surface, adapter)
(instance, hidpi_factor, size, surface)
};
let adapter = instance.get_adapter(&wgpu::AdapterDescriptor {
power_preference: wgpu::PowerPreference::LowPower,
});
let mut device = adapter.request_device(&wgpu::DeviceDescriptor {
extensions: wgpu::Extensions {

View File

@@ -13,7 +13,7 @@ fn main() {
let mut events_loop = EventsLoop::new();
#[cfg(not(feature = "gl"))]
let (_instance, _window, size, surface, adapter) = {
let (_window, instance, size, surface) = {
use wgpu::winit::Window;
let instance = wgpu::Instance::new();
@@ -26,15 +26,11 @@ fn main() {
let surface = instance.create_surface(&window);
let adapter = instance.get_adapter(&wgpu::AdapterDescriptor {
power_preference: wgpu::PowerPreference::LowPower,
});
(instance, window, size, surface, adapter)
(window, instance, size, surface)
};
#[cfg(feature = "gl")]
let (size, surface, adapter) = {
let (instance, size, surface) = {
let wb = wgpu::winit::WindowBuilder::new();
let cb = wgpu::glutin::ContextBuilder::new().with_vsync(true);
let context = wgpu::glutin::WindowedContext::new_windowed(wb, cb, &events_loop).unwrap();
@@ -45,15 +41,16 @@ fn main() {
.unwrap()
.to_physical(context.window().get_hidpi_factor());
let surface = wgpu::Surface::create(context);
let instance = wgpu::Instance::new(context);
let surface = instance.get_surface();
let adapter = surface.get_adapter(&wgpu::AdapterDescriptor {
power_preference: wgpu::PowerPreference::LowPower,
});
(size, surface, adapter)
(instance, size, surface)
};
let adapter = instance.get_adapter(&wgpu::AdapterDescriptor {
power_preference: wgpu::PowerPreference::LowPower,
});
let mut device = adapter.request_device(&wgpu::DeviceDescriptor {
extensions: wgpu::Extensions {
anisotropic_filtering: false,

View File

@@ -75,7 +75,6 @@ struct Temp {
///
/// An `Instance` represents the entire context of a running `wgpu` instance. The `Instance`
/// allows the querying of [`Adapter`] objects and the creation of [`Surface`] objects.
#[cfg(not(feature = "gl"))]
pub struct Instance {
id: wgn::InstanceId,
}
@@ -457,9 +456,9 @@ where
}
}
#[cfg(not(feature = "gl"))]
impl Instance {
/// Create a new `Instance` object.
#[cfg(not(feature = "gl"))]
pub fn new() -> Self {
Instance {
id: wgn::wgpu_create_instance(),
@@ -475,6 +474,13 @@ impl Instance {
///
/// Panics if there are no available adapters. This will occur if none of the graphics backends
/// are enabled.
#[cfg(feature = "gl")]
pub fn new(windowed_context: wgn::glutin::WindowedContext) -> Self {
Instance {
id: wgn::wgpu_create_gl_instance(windowed_context)
}
}
pub fn get_adapter(&self, desc: &AdapterDescriptor) -> Adapter {
Adapter {
id: wgn::wgpu_instance_get_adapter(self.id, desc),
@@ -482,12 +488,20 @@ impl Instance {
}
/// Creates a surface from a window.
#[cfg(not(feature = "gl"))]
pub fn create_surface(&self, window: &winit::Window) -> Surface {
Surface {
id: wgn::wgpu_instance_create_surface_from_winit(self.id, window),
}
}
#[cfg(feature = "gl")]
pub fn get_surface(&self) -> Surface {
Surface {
id: wgn::wgpu_instance_get_gl_surface(self.id),
}
}
#[cfg(feature = "metal")]
pub fn create_surface_with_metal_layer(&self, window: *mut std::ffi::c_void) -> Surface {
Surface {
@@ -496,21 +510,6 @@ impl Instance {
}
}
#[cfg(feature = "gl")]
impl Surface {
pub fn create(windowed_context: wgn::glutin::WindowedContext) -> Surface {
Surface {
id: wgn::wgpu_gl_create_surface(windowed_context)
}
}
pub fn get_adapter(&self, desc: &AdapterDescriptor) -> Adapter {
Adapter {
id: wgn::wgpu_gl_surface_get_adapter(self.id, desc),
}
}
}
impl Adapter {
/// Requests a connection to a physical device, creating a logical device.
///