summaryrefslogtreecommitdiffstats
path: root/wgpu
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector0193@gmail.com>2022-01-31 17:01:19 +0700
committerLibravatar GitHub <noreply@github.com>2022-01-31 17:01:19 +0700
commite4ef29ef20724c3d1a4beff39ddfdaf6d45f9683 (patch)
tree6e0c9c38366c9d70204c80fc66bd8e8a7652cf52 /wgpu
parentc75ed37148b019358b0297171cf31b2577eeb9ae (diff)
parent6f604ab3995cb345aacf183a569589988aa3ad1f (diff)
downloadiced-e4ef29ef20724c3d1a4beff39ddfdaf6d45f9683.tar.gz
iced-e4ef29ef20724c3d1a4beff39ddfdaf6d45f9683.tar.bz2
iced-e4ef29ef20724c3d1a4beff39ddfdaf6d45f9683.zip
Merge pull request #1096 from pacmancoder/feat/wgpu-webgl
Experimental WebGL wgpu backend support
Diffstat (limited to 'wgpu')
-rw-r--r--wgpu/Cargo.toml1
-rw-r--r--wgpu/src/text.rs10
-rw-r--r--wgpu/src/window/compositor.rs9
3 files changed, 16 insertions, 4 deletions
diff --git a/wgpu/Cargo.toml b/wgpu/Cargo.toml
index f4c4fa2c..46012ea7 100644
--- a/wgpu/Cargo.toml
+++ b/wgpu/Cargo.toml
@@ -25,6 +25,7 @@ canvas = ["iced_graphics/canvas"]
qr_code = ["iced_graphics/qr_code"]
default_system_font = ["iced_graphics/font-source"]
spirv = ["wgpu/spirv"]
+webgl = ["wgpu/webgl"]
[dependencies]
wgpu = "0.12"
diff --git a/wgpu/src/text.rs b/wgpu/src/text.rs
index 336696ee..45f1f2de 100644
--- a/wgpu/src/text.rs
+++ b/wgpu/src/text.rs
@@ -48,11 +48,15 @@ impl Pipeline {
.expect("Load fallback font")
});
- let draw_brush =
+ let draw_brush_builder =
wgpu_glyph::GlyphBrushBuilder::using_font(font.clone())
.initial_cache_size((2048, 2048))
- .draw_cache_multithread(multithreading)
- .build(device, format);
+ .draw_cache_multithread(multithreading);
+
+ #[cfg(target_arch = "wasm32")]
+ let draw_brush_builder = draw_brush_builder.draw_cache_align_4x4(true);
+
+ let draw_brush = draw_brush_builder.build(device, format);
let measure_brush =
glyph_brush::GlyphBrushBuilder::using_font(font).build();
diff --git a/wgpu/src/window/compositor.rs b/wgpu/src/window/compositor.rs
index 3b264475..6feb795b 100644
--- a/wgpu/src/window/compositor.rs
+++ b/wgpu/src/window/compositor.rs
@@ -48,6 +48,13 @@ impl Compositor {
.as_ref()
.and_then(|surface| surface.get_preferred_format(&adapter))?;
+ #[cfg(target_arch = "wasm32")]
+ let limits = wgpu::Limits::downlevel_webgl2_defaults()
+ .using_resolution(adapter.limits());
+
+ #[cfg(not(target_arch = "wasm32"))]
+ let limits = wgpu::Limits::default();
+
let (device, queue) = adapter
.request_device(
&wgpu::DeviceDescriptor {
@@ -57,7 +64,7 @@ impl Compositor {
features: wgpu::Features::empty(),
limits: wgpu::Limits {
max_bind_groups: 2,
- ..wgpu::Limits::default()
+ ..limits
},
},
None,