commit
d4f8e19023
11 changed files with 436 additions and 386 deletions
723
Cargo.lock
generated
723
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
|
|
@ -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" }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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({
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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()?;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue