diff options
author | 2019-10-03 00:23:08 +0200 | |
---|---|---|
committer | 2019-10-03 00:23:08 +0200 | |
commit | 8bb33cd5a0b876a5e24108604be2cecd4efad3ef (patch) | |
tree | 5446cf485f0d8b708c9ce55f163ba91c500e1148 /wgpu/src/lib.rs | |
parent | 63294088ad6e1523c6b7623c08f82af2812a5531 (diff) | |
download | iced-8bb33cd5a0b876a5e24108604be2cecd4efad3ef.tar.gz iced-8bb33cd5a0b876a5e24108604be2cecd4efad3ef.tar.bz2 iced-8bb33cd5a0b876a5e24108604be2cecd4efad3ef.zip |
Initialize `wgpu`
We only enable the `vulkan` feature for now.
Diffstat (limited to 'wgpu/src/lib.rs')
-rw-r--r-- | wgpu/src/lib.rs | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/wgpu/src/lib.rs b/wgpu/src/lib.rs index 7aa053bc..502a2614 100644 --- a/wgpu/src/lib.rs +++ b/wgpu/src/lib.rs @@ -4,7 +4,44 @@ use iced_native::{ Style, Text, }; -pub struct Renderer; +use raw_window_handle::HasRawWindowHandle; +use wgpu::{ + Adapter, Device, DeviceDescriptor, Extensions, Instance, Limits, + PowerPreference, RequestAdapterOptions, Surface, +}; + +pub struct Renderer { + instance: Instance, + surface: Surface, + adapter: Adapter, + device: Device, +} + +impl Renderer { + pub fn new<W: HasRawWindowHandle>(window: &W) -> Self { + let instance = Instance::new(); + + let adapter = instance.request_adapter(&RequestAdapterOptions { + power_preference: PowerPreference::LowPower, + }); + + let device = adapter.request_device(&DeviceDescriptor { + extensions: Extensions { + anisotropic_filtering: false, + }, + limits: Limits { max_bind_groups: 1 }, + }); + + let surface = instance.create_surface(window.raw_window_handle()); + + Self { + instance, + surface, + adapter, + device, + } + } +} impl text::Renderer for Renderer { fn node(&self, _text: &Text) -> Node { |