From 8bb33cd5a0b876a5e24108604be2cecd4efad3ef Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 3 Oct 2019 00:23:08 +0200 Subject: Initialize `wgpu` We only enable the `vulkan` feature for now. --- wgpu/src/lib.rs | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) (limited to 'wgpu/src/lib.rs') 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(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 { -- cgit