mirror of
https://github.com/gfx-rs/wgpu.git
synced 2026-04-22 03:02:01 -04:00
[rs] Merge #709
709: Move get_swap_chain_preferred_format from device to adapter r=kvark a=niklaskorz See https://github.com/gfx-rs/wgpu/pull/1142. This PR applies the necessary changes for the move of `get_swap_chain_preferred_format` from device to adapter. Co-authored-by: Niklas Korz <niklas@niklaskorz.de>
This commit is contained in:
@@ -26,20 +26,20 @@ webgl = ["wgc"]
|
||||
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.wgc]
|
||||
package = "wgpu-core"
|
||||
git = "https://github.com/gfx-rs/wgpu"
|
||||
rev = "5b9cfeb9413175de366ec1e3d64ec6ee2feffa0e"
|
||||
rev = "ae3e5057aff64a8e6f13e75be661c0f8a98abcd5"
|
||||
features = ["raw-window-handle"]
|
||||
|
||||
[target.'cfg(target_arch = "wasm32")'.dependencies.wgc]
|
||||
package = "wgpu-core"
|
||||
git = "https://github.com/gfx-rs/wgpu"
|
||||
rev = "5b9cfeb9413175de366ec1e3d64ec6ee2feffa0e"
|
||||
rev = "ae3e5057aff64a8e6f13e75be661c0f8a98abcd5"
|
||||
features = ["raw-window-handle"]
|
||||
optional = true
|
||||
|
||||
[dependencies.wgt]
|
||||
package = "wgpu-types"
|
||||
git = "https://github.com/gfx-rs/wgpu"
|
||||
rev = "5b9cfeb9413175de366ec1e3d64ec6ee2feffa0e"
|
||||
rev = "ae3e5057aff64a8e6f13e75be661c0f8a98abcd5"
|
||||
|
||||
[dependencies]
|
||||
arrayvec = "0.5"
|
||||
|
||||
@@ -201,7 +201,7 @@ fn start<E: Example>(
|
||||
let spawner = Spawner::new();
|
||||
let mut sc_desc = wgpu::SwapChainDescriptor {
|
||||
usage: wgpu::TextureUsage::RENDER_ATTACHMENT,
|
||||
format: device.get_swap_chain_preferred_format(),
|
||||
format: adapter.get_swap_chain_preferred_format(&surface),
|
||||
width: size.width,
|
||||
height: size.height,
|
||||
present_mode: wgpu::PresentMode::Mailbox,
|
||||
|
||||
@@ -44,7 +44,7 @@ async fn run(event_loop: EventLoop<()>, window: Window) {
|
||||
push_constant_ranges: &[],
|
||||
});
|
||||
|
||||
let swapchain_format = device.get_swap_chain_preferred_format();
|
||||
let swapchain_format = adapter.get_swap_chain_preferred_format(&surface);
|
||||
|
||||
let render_pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor {
|
||||
label: None,
|
||||
|
||||
@@ -27,12 +27,12 @@ impl ViewportDesc {
|
||||
}
|
||||
}
|
||||
|
||||
fn build(self, device: &wgpu::Device) -> Viewport {
|
||||
fn build(self, adapter: &wgpu::Adapter, device: &wgpu::Device) -> Viewport {
|
||||
let size = self.window.inner_size();
|
||||
|
||||
let sc_desc = wgpu::SwapChainDescriptor {
|
||||
usage: wgpu::TextureUsage::RENDER_ATTACHMENT,
|
||||
format: device.get_swap_chain_preferred_format(),
|
||||
format: adapter.get_swap_chain_preferred_format(&self.surface),
|
||||
width: size.width,
|
||||
height: size.height,
|
||||
present_mode: wgpu::PresentMode::Fifo,
|
||||
@@ -92,7 +92,7 @@ async fn run(event_loop: EventLoop<()>, viewports: Vec<(Window, wgpu::Color)>) {
|
||||
|
||||
let mut viewports: HashMap<WindowId, Viewport> = viewports
|
||||
.into_iter()
|
||||
.map(|desc| (desc.window.id(), desc.build(&device)))
|
||||
.map(|desc| (desc.window.id(), desc.build(&adapter, &device)))
|
||||
.collect();
|
||||
|
||||
event_loop.run(move |event, _, control_flow| {
|
||||
|
||||
@@ -673,6 +673,19 @@ impl crate::Context for Context {
|
||||
ready(Ok((device, device_id)))
|
||||
}
|
||||
|
||||
fn adapter_get_swap_chain_preferred_format(
|
||||
&self,
|
||||
adapter: &Self::AdapterId,
|
||||
surface: &Self::SurfaceId,
|
||||
) -> TextureFormat {
|
||||
let global = &self.0;
|
||||
match wgc::gfx_select!(adapter => global.adapter_get_swap_chain_preferred_format(*adapter, *surface))
|
||||
{
|
||||
Ok(swap_chain_preferred_format) => swap_chain_preferred_format,
|
||||
Err(err) => self.handle_error_fatal(err, "Adapter::get_swap_chain_preferred_format"),
|
||||
}
|
||||
}
|
||||
|
||||
fn adapter_features(&self, adapter: &Self::AdapterId) -> Features {
|
||||
let global = &self.0;
|
||||
match wgc::gfx_select!(*adapter => global.adapter_features(*adapter)) {
|
||||
@@ -713,15 +726,6 @@ impl crate::Context for Context {
|
||||
}
|
||||
}
|
||||
|
||||
fn device_get_swap_chain_preferred_format(&self, device: &Self::DeviceId) -> TextureFormat {
|
||||
let global = &self.0;
|
||||
match wgc::gfx_select!(device.id => global.device_get_swap_chain_preferred_format(device.id))
|
||||
{
|
||||
Ok(swap_chain_preferred_format) => swap_chain_preferred_format,
|
||||
Err(err) => self.handle_error_fatal(err, "Device::get_swap_chain_preferred_format"),
|
||||
}
|
||||
}
|
||||
|
||||
fn device_create_swap_chain(
|
||||
&self,
|
||||
device: &Self::DeviceId,
|
||||
|
||||
@@ -954,6 +954,15 @@ impl crate::Context for Context {
|
||||
)
|
||||
}
|
||||
|
||||
fn adapter_get_swap_chain_preferred_format(
|
||||
&self,
|
||||
adapter: &Self::AdapterId,
|
||||
surface: &Self::SurfaceId,
|
||||
) -> wgt::TextureFormat {
|
||||
// TODO: web-sys bindings need to be updated to not return a promise
|
||||
wgt::TextureFormat::Bgra8Unorm
|
||||
}
|
||||
|
||||
fn adapter_features(&self, _adapter: &Self::AdapterId) -> wgt::Features {
|
||||
// TODO: web-sys has no way of getting extensions on adapters
|
||||
wgt::Features::empty()
|
||||
@@ -985,14 +994,6 @@ impl crate::Context for Context {
|
||||
wgt::Limits::default()
|
||||
}
|
||||
|
||||
fn device_get_swap_chain_preferred_format(
|
||||
&self,
|
||||
device: &Self::DeviceId,
|
||||
) -> wgt::TextureFormat {
|
||||
// TODO: web-sys bindings need to be updated to not return a promise
|
||||
wgt::TextureFormat::Bgra8Unorm
|
||||
}
|
||||
|
||||
fn device_create_swap_chain(
|
||||
&self,
|
||||
device: &Self::DeviceId,
|
||||
|
||||
@@ -189,13 +189,17 @@ trait Context: Debug + Send + Sized + Sync {
|
||||
desc: &DeviceDescriptor,
|
||||
trace_dir: Option<&std::path::Path>,
|
||||
) -> Self::RequestDeviceFuture;
|
||||
fn adapter_get_swap_chain_preferred_format(
|
||||
&self,
|
||||
adapter: &Self::AdapterId,
|
||||
surface: &Self::SurfaceId,
|
||||
) -> TextureFormat;
|
||||
fn adapter_features(&self, adapter: &Self::AdapterId) -> Features;
|
||||
fn adapter_limits(&self, adapter: &Self::AdapterId) -> Limits;
|
||||
fn adapter_get_info(&self, adapter: &Self::AdapterId) -> AdapterInfo;
|
||||
|
||||
fn device_features(&self, device: &Self::DeviceId) -> Features;
|
||||
fn device_limits(&self, device: &Self::DeviceId) -> Limits;
|
||||
fn device_get_swap_chain_preferred_format(&self, device: &Self::DeviceId) -> TextureFormat;
|
||||
fn device_create_swap_chain(
|
||||
&self,
|
||||
device: &Self::DeviceId,
|
||||
@@ -1384,6 +1388,11 @@ impl Adapter {
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns an optimal texture format to use for the [`SwapChain`] with this adapter.
|
||||
pub fn get_swap_chain_preferred_format(&self, surface: &Surface) -> TextureFormat {
|
||||
Context::adapter_get_swap_chain_preferred_format(&*self.context, &self.id, &surface.id)
|
||||
}
|
||||
|
||||
/// List all features that are supported with this adapter.
|
||||
///
|
||||
/// Features must be explicitly requested in [`Adapter::request_device`] in order
|
||||
@@ -1428,11 +1437,6 @@ impl Device {
|
||||
Context::device_limits(&*self.context, &self.id)
|
||||
}
|
||||
|
||||
/// Returns an optimal texture format to use for the [`SwapChain`] with this device.
|
||||
pub fn get_swap_chain_preferred_format(&self) -> TextureFormat {
|
||||
Context::device_get_swap_chain_preferred_format(&*self.context, &self.id)
|
||||
}
|
||||
|
||||
/// Creates a shader module from either SPIR-V or WGSL source code.
|
||||
pub fn create_shader_module(&self, desc: &ShaderModuleDescriptor) -> ShaderModule {
|
||||
ShaderModule {
|
||||
|
||||
Reference in New Issue
Block a user