Merge pull request #3019 from iced-rs/wgpu-26

Update `wgpu` to `26`
This commit is contained in:
Héctor 2025-07-22 03:14:19 +02:00 • committed by GitHub
commit d4f8e19023
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 436 additions and 386 deletions

723
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -174,7 +174,7 @@ cosmic-text = "0.14"
dark-light = "2.0" dark-light = "2.0"
futures = { version = "0.3", default-features = false } futures = { version = "0.3", default-features = false }
glam = "0.25" glam = "0.25"
cryoglyph = { git = "https://github.com/iced-rs/cryoglyph.git", rev = "a456d1c17bbcf33afcca41d9e5e299f9f1193819" } cryoglyph = { git = "https://github.com/iced-rs/cryoglyph.git", rev = "453cedec0d2ec563bd7fa87e84a2319bcebb1ba3" }
guillotiere = "0.6" guillotiere = "0.6"
half = "2.2" half = "2.2"
image = { version = "0.25", default-features = false } image = { version = "0.25", default-features = false }
@ -211,7 +211,7 @@ wasm-bindgen-futures = "0.4"
wasmtimer = "0.4.1" wasmtimer = "0.4.1"
web-sys = "0.3.69" web-sys = "0.3.69"
web-time = "1.1" web-time = "1.1"
wgpu = "24.0" wgpu = "26.0"
window_clipboard = "0.4.1" window_clipboard = "0.4.1"
winit = { git = "https://github.com/iced-rs/winit.git", rev = "11414b6aa45699f038114e61b4ddf5102b2d3b4b" } winit = { git = "https://github.com/iced-rs/winit.git", rev = "11414b6aa45699f038114e61b4ddf5102b2d3b4b" }

View file

@ -32,16 +32,15 @@ pub fn wgpu_benchmark(c: &mut Criterion) {
)) ))
.expect("request adapter"); .expect("request adapter");
let (device, queue) = executor::block_on(adapter.request_device( let (device, queue) =
&wgpu::DeviceDescriptor { executor::block_on(adapter.request_device(&wgpu::DeviceDescriptor {
label: None, label: None,
required_features: wgpu::Features::empty(), required_features: wgpu::Features::empty(),
required_limits: wgpu::Limits::default(), required_limits: wgpu::Limits::default(),
memory_hints: wgpu::MemoryHints::MemoryUsage, memory_hints: wgpu::MemoryHints::MemoryUsage,
}, trace: wgpu::Trace::Off,
None, }))
)) .expect("request device");
.expect("request device");
c.bench_function("wgpu — canvas (light)", |b| { c.bench_function("wgpu — canvas (light)", |b| {
benchmark(b, &adapter, &device, &queue, |_| scene(10)); benchmark(b, &adapter, &device, &queue, |_| scene(10));
@ -140,7 +139,7 @@ fn benchmark<'a>(
&viewport, &viewport,
); );
let _ = device.poll(wgpu::Maintain::WaitForSubmissionIndex(submission)); let _ = device.poll(wgpu::PollType::WaitForSubmissionIndex(submission));
i += 1; i += 1;
}); });

View file

@ -369,6 +369,7 @@ impl Pipeline {
color_attachments: &[Some( color_attachments: &[Some(
wgpu::RenderPassColorAttachment { wgpu::RenderPassColorAttachment {
view: target, view: target,
depth_slice: None,
resolve_target: None, resolve_target: None,
ops: wgpu::Operations { ops: wgpu::Operations {
load: wgpu::LoadOp::Load, load: wgpu::LoadOp::Load,
@ -568,6 +569,7 @@ impl DepthPipeline {
label: Some("cubes.pipeline.depth_pass"), label: Some("cubes.pipeline.depth_pass"),
color_attachments: &[Some(wgpu::RenderPassColorAttachment { color_attachments: &[Some(wgpu::RenderPassColorAttachment {
view: target, view: target,
depth_slice: None,
resolve_target: None, resolve_target: None,
ops: wgpu::Operations { ops: wgpu::Operations {
load: wgpu::LoadOp::Load, load: wgpu::LoadOp::Load,

View file

@ -96,17 +96,14 @@ pub fn main() -> Result<(), winit::error::EventLoopError> {
let capabilities = surface.get_capabilities(&adapter); let capabilities = surface.get_capabilities(&adapter);
let (device, queue) = adapter let (device, queue) = adapter
.request_device( .request_device(&wgpu::DeviceDescriptor {
&wgpu::DeviceDescriptor { label: None,
label: None, required_features: adapter_features
required_features: adapter_features & wgpu::Features::default(),
& wgpu::Features::default(), required_limits: wgpu::Limits::default(),
required_limits: wgpu::Limits::default(), memory_hints: wgpu::MemoryHints::MemoryUsage,
memory_hints: trace: wgpu::Trace::Off,
wgpu::MemoryHints::MemoryUsage, })
},
None,
)
.await .await
.expect("Request device"); .expect("Request device");

View file

@ -24,6 +24,7 @@ impl Scene {
label: None, label: None,
color_attachments: &[Some(wgpu::RenderPassColorAttachment { color_attachments: &[Some(wgpu::RenderPassColorAttachment {
view: target, view: target,
depth_slice: None,
resolve_target: None, resolve_target: None,
ops: wgpu::Operations { ops: wgpu::Operations {
load: wgpu::LoadOp::Clear({ load: wgpu::LoadOp::Clear({

View file

@ -184,6 +184,7 @@ pub fn convert(
label: Some("iced_wgpu.offscreen.blit.render_pass"), label: Some("iced_wgpu.offscreen.blit.render_pass"),
color_attachments: &[Some(wgpu::RenderPassColorAttachment { color_attachments: &[Some(wgpu::RenderPassColorAttachment {
view, view,
depth_slice: None,
resolve_target: None, resolve_target: None,
ops: wgpu::Operations { ops: wgpu::Operations {
load: wgpu::LoadOp::Load, load: wgpu::LoadOp::Load,

View file

@ -284,7 +284,7 @@ impl Renderer {
let _ = self let _ = self
.engine .engine
.device .device
.poll(wgpu::Maintain::WaitForSubmissionIndex(index)); .poll(wgpu::PollType::WaitForSubmissionIndex(index));
let mapped_buffer = slice.get_mapped_range(); let mapped_buffer = slice.get_mapped_range();
@ -426,6 +426,7 @@ impl Renderer {
label: Some("iced_wgpu render pass"), label: Some("iced_wgpu render pass"),
color_attachments: &[Some(wgpu::RenderPassColorAttachment { color_attachments: &[Some(wgpu::RenderPassColorAttachment {
view: frame, view: frame,
depth_slice: None,
resolve_target: None, resolve_target: None,
ops: wgpu::Operations { ops: wgpu::Operations {
load: match clear_color { load: match clear_color {
@ -514,6 +515,7 @@ impl Renderer {
color_attachments: &[Some( color_attachments: &[Some(
wgpu::RenderPassColorAttachment { wgpu::RenderPassColorAttachment {
view: frame, view: frame,
depth_slice: None,
resolve_target: None, resolve_target: None,
ops: wgpu::Operations { ops: wgpu::Operations {
load: wgpu::LoadOp::Load, load: wgpu::LoadOp::Load,
@ -560,6 +562,7 @@ impl Renderer {
color_attachments: &[Some( color_attachments: &[Some(
wgpu::RenderPassColorAttachment { wgpu::RenderPassColorAttachment {
view: frame, view: frame,
depth_slice: None,
resolve_target: None, resolve_target: None,
ops: wgpu::Operations { ops: wgpu::Operations {
load: wgpu::LoadOp::Load, load: wgpu::LoadOp::Load,
@ -831,21 +834,20 @@ impl renderer::Headless for Renderer {
force_fallback_adapter: false, force_fallback_adapter: false,
compatible_surface: None, compatible_surface: None,
}) })
.await?; .await
.ok()?;
let (device, queue) = adapter let (device, queue) = adapter
.request_device( .request_device(&wgpu::DeviceDescriptor {
&wgpu::DeviceDescriptor { label: Some("iced_wgpu [headless]"),
label: Some("iced_wgpu [headless]"), required_features: wgpu::Features::empty(),
required_features: wgpu::Features::empty(), required_limits: wgpu::Limits {
required_limits: wgpu::Limits { max_bind_groups: 2,
max_bind_groups: 2, ..wgpu::Limits::default()
..wgpu::Limits::default()
},
memory_hints: wgpu::MemoryHints::MemoryUsage,
}, },
None, memory_hints: wgpu::MemoryHints::MemoryUsage,
) trace: wgpu::Trace::Off,
})
.await .await
.ok()?; .ok()?;

View file

@ -335,6 +335,7 @@ fn render<'a>(
label: Some("iced_wgpu.triangle.render_pass"), label: Some("iced_wgpu.triangle.render_pass"),
color_attachments: &[Some(wgpu::RenderPassColorAttachment { color_attachments: &[Some(wgpu::RenderPassColorAttachment {
view: target, view: target,
depth_slice: None,
resolve_target: None, resolve_target: None,
ops: wgpu::Operations { ops: wgpu::Operations {
load: wgpu::LoadOp::Load, load: wgpu::LoadOp::Load,

View file

@ -167,6 +167,7 @@ impl Pipeline {
label: Some("iced_wgpu.triangle.render_pass"), label: Some("iced_wgpu.triangle.render_pass"),
color_attachments: &[Some(wgpu::RenderPassColorAttachment { color_attachments: &[Some(wgpu::RenderPassColorAttachment {
view: &targets.attachment, view: &targets.attachment,
depth_slice: None,
resolve_target: Some(&targets.resolve), resolve_target: Some(&targets.resolve),
ops: wgpu::Operations { ops: wgpu::Operations {
load: wgpu::LoadOp::Clear(wgpu::Color::TRANSPARENT), load: wgpu::LoadOp::Clear(wgpu::Color::TRANSPARENT),
@ -340,6 +341,7 @@ impl State {
label: Some("iced_wgpu::triangle::msaa render pass"), label: Some("iced_wgpu::triangle::msaa render pass"),
color_attachments: &[Some(wgpu::RenderPassColorAttachment { color_attachments: &[Some(wgpu::RenderPassColorAttachment {
view: target, view: target,
depth_slice: None,
resolve_target: None, resolve_target: None,
ops: wgpu::Operations { ops: wgpu::Operations {
load: wgpu::LoadOp::Load, load: wgpu::LoadOp::Load,

View file

@ -93,10 +93,10 @@ impl Compositor {
force_fallback_adapter: false, force_fallback_adapter: false,
}; };
let adapter = instance let adapter =
.request_adapter(&adapter_options) instance.request_adapter(&adapter_options).await.map_err(
.await |_error| Error::NoAdapterFound(format!("{adapter_options:?}")),
.ok_or(Error::NoAdapterFound(format!("{adapter_options:?}")))?; )?;
log::info!("Selected: {:#?}", adapter.get_info()); log::info!("Selected: {:#?}", adapter.get_info());
@ -162,17 +162,15 @@ impl Compositor {
for required_limits in limits { for required_limits in limits {
let result = adapter let result = adapter
.request_device( .request_device(&wgpu::DeviceDescriptor {
&wgpu::DeviceDescriptor { label: Some(
label: Some( "iced_wgpu::window::compositor device descriptor",
"iced_wgpu::window::compositor device descriptor", ),
), required_features: wgpu::Features::empty(),
required_features: wgpu::Features::empty(), required_limits: required_limits.clone(),
required_limits: required_limits.clone(), memory_hints: wgpu::MemoryHints::MemoryUsage,
memory_hints: wgpu::MemoryHints::MemoryUsage, trace: wgpu::Trace::Off,
}, })
None,
)
.await; .await;
match result { match result {