diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b59b471cd..79c377a25b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,6 +57,7 @@ Bottom level categories: - Implement `Hash` for `DepthStencilState` and `DepthBiasState` - Add the `"wgsl"` feature, to enable WGSL shaders in `wgpu-core` and `wgpu`. Enabled by default in `wgpu`. By @daxpedda in [#2890](https://github.com/gfx-rs/wgpu/pull/2890). - Implement `Clone` for `ShaderSource` and `ShaderModuleDescriptor` in `wgpu`. By @daxpedda in [#3086](https://github.com/gfx-rs/wgpu/pull/3086). +- Add `get_default_config` for `Surface` to simplify user creation of `SurfaceConfiguration`. By @jinleili in [#3034](https://github.com/gfx-rs/wgpu/pull/3034) #### GLES diff --git a/wgpu/examples/framework.rs b/wgpu/examples/framework.rs index 795765e653..5474ff6d5f 100644 --- a/wgpu/examples/framework.rs +++ b/wgpu/examples/framework.rs @@ -267,14 +267,7 @@ fn start( }: Setup, ) { let spawner = Spawner::new(); - let mut config = wgpu::SurfaceConfiguration { - usage: wgpu::TextureUsages::RENDER_ATTACHMENT, - format: surface.get_supported_formats(&adapter)[0], - width: size.width, - height: size.height, - present_mode: wgpu::PresentMode::Fifo, - alpha_mode: surface.get_supported_alpha_modes(&adapter)[0], - }; + let mut config = surface.get_default_config(&adapter, size.width, size.height); surface.configure(&device, &config); log::info!("Initializing the example..."); diff --git a/wgpu/src/lib.rs b/wgpu/src/lib.rs index 8c56ff221a..2804244573 100644 --- a/wgpu/src/lib.rs +++ b/wgpu/src/lib.rs @@ -3713,6 +3713,23 @@ impl Surface { Context::surface_get_supported_alpha_modes(&*self.context, &self.id, &adapter.id) } + /// Return a default `SurfaceConfiguration` from width and height to use for the [`Surface`] with this adapter. + pub fn get_default_config( + &self, + adapter: &Adapter, + width: u32, + height: u32, + ) -> wgt::SurfaceConfiguration { + wgt::SurfaceConfiguration { + usage: wgt::TextureUsages::RENDER_ATTACHMENT, + format: self.get_supported_formats(adapter)[0], + width, + height, + present_mode: self.get_supported_present_modes(adapter)[0], + alpha_mode: wgt::CompositeAlphaMode::Auto, + } + } + /// Initializes [`Surface`] for presentation. /// /// # Panics