diff --git a/src/builder.rs b/src/builder.rs index d09c3f4..0e35ca0 100644 --- a/src/builder.rs +++ b/src/builder.rs @@ -345,6 +345,7 @@ impl<'req, 'dev, 'win, W: HasRawWindowHandle + HasRawDisplayHandle> let pixels = Pixels { context, + adapter, surface_size, present_mode, render_texture_format, diff --git a/src/lib.rs b/src/lib.rs index 99dd258..817fb11 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -100,6 +100,7 @@ pub struct Pixels { surface_texture_format: wgpu::TextureFormat, blend_state: wgpu::BlendState, alpha_mode: wgpu::CompositeAlphaMode, + adapter: wgpu::Adapter, // Pixel buffer pixels: Vec, @@ -275,6 +276,24 @@ impl Pixels { self.context.scaling_renderer.clear_color = color; } + /// Returns a reference of the `wgpu` adapter used by the crate. + /// + /// The adapter can be used to retrieve runtime information about the host system + /// or the WGPU backend. + /// + /// ```no_run + /// # use pixels::Pixels; + /// # let window = pixels_mocks::Rwh; + /// # let surface_texture = pixels::SurfaceTexture::new(320, 240, &window); + /// let mut pixels = Pixels::new(320, 240, surface_texture)?; + /// let adapter = pixels.adapter(); + /// // Do something with the adapter. + /// # Ok::<(), pixels::Error>(()) + /// ``` + pub fn adapter(&self) -> &wgpu::Adapter { + &self.adapter + } + /// Resize the pixel buffer and zero its contents. /// /// This does not resize the surface upon which the pixel buffer texture is rendered. Use