Bump `fearless_simd` (#1177)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 749719b..d97cff5 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -8,7 +8,7 @@
# If the compilation fails, then the version specified here needs to be bumped up to reality.
# Be sure to also update the rust-version property in the workspace Cargo.toml file,
# plus all the README.md files of the affected packages.
- RUST_MIN_VER: "1.85"
+ RUST_MIN_VER: "1.86"
# List of packages that will be checked with the minimum supported Rust version.
# This should be limited to packages that are intended for publishing.
RUST_MIN_VER_PKGS: "-p vello -p vello_encoding -p vello_shaders -p vello_api -p vello_common -p vello_cpu -p vello_hybrid"
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 414e0c0..17e019d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,7 +13,7 @@
## [Unreleased]
-This release has an [MSRV][] of 1.85.
+This release has an [MSRV][] of 1.86.
## Added
diff --git a/Cargo.lock b/Cargo.lock
index 772f427..1f015e1 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -941,7 +941,8 @@
[[package]]
name = "fearless_simd"
version = "0.2.0"
-source = "git+https://github.com/linebender/fearless_simd?rev=f25206a#f25206a4fe58a8f6daae157d63b1abdafb3a1be2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb8f822f06d1b452a9207f11ce3292f7ee6c23d5d2e7ddfd07990a9107804850"
dependencies = [
"bytemuck",
"libm",
diff --git a/Cargo.toml b/Cargo.toml
index 7d9c56e..5e706e0 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -42,7 +42,7 @@
edition = "2024"
# Keep in sync with RUST_MIN_VER in .github/workflows/ci.yml, with the relevant README.md files
# and with the MSRV in the `Unreleased` section of CHANGELOG.md.
-rust-version = "1.85"
+rust-version = "1.86"
license = "Apache-2.0 OR MIT"
repository = "https://github.com/linebender/vello"
@@ -115,7 +115,7 @@
thread_local = "1.1.8"
crossbeam-channel = "0.5.15"
ordered-channel = { version = "1.2.0", features = ["crossbeam-channel"] }
-fearless_simd = { git = "https://github.com/linebender/fearless_simd", rev = "f25206a", default-features = false }
+fearless_simd = { version = "0.2.0", default-features = false }
# The below crates are experimental!
vello_api = { path = "sparse_strips/vello_api", default-features = false }
diff --git a/README.md b/README.md
index c866886..8245e71 100644
--- a/README.md
+++ b/README.md
@@ -222,7 +222,7 @@
## Minimum supported Rust Version (MSRV)
-This version of Vello has been verified to compile with **Rust 1.85** and later.
+This version of Vello has been verified to compile with **Rust 1.86** and later.
Future versions of Vello might increase the Rust version requirement.
It will not be treated as a breaking change and as such can even happen with small patch releases.
diff --git a/sparse_strips/vello_api/README.md b/sparse_strips/vello_api/README.md
index f884ac1..c13d408 100644
--- a/sparse_strips/vello_api/README.md
+++ b/sparse_strips/vello_api/README.md
@@ -32,7 +32,7 @@
## Minimum supported Rust Version (MSRV)
-This version of Vello API has been verified to compile with **Rust 1.85** and later.
+This version of Vello API has been verified to compile with **Rust 1.86** and later.
Future versions of Vello API might increase the Rust version requirement.
It will not be treated as a breaking change and as such can even happen with small patch releases.
diff --git a/sparse_strips/vello_common/README.md b/sparse_strips/vello_common/README.md
index 3e25dff..1da3913 100644
--- a/sparse_strips/vello_common/README.md
+++ b/sparse_strips/vello_common/README.md
@@ -65,7 +65,7 @@
## Minimum supported Rust Version (MSRV)
-This version of Vello Common has been verified to compile with **Rust 1.85** and later.
+This version of Vello Common has been verified to compile with **Rust 1.86** and later.
Future versions of Vello Common might increase the Rust version requirement.
It will not be treated as a breaking change and as such can even happen with small patch releases.
diff --git a/sparse_strips/vello_common/src/flatten.rs b/sparse_strips/vello_common/src/flatten.rs
index 713da45..b05536f 100644
--- a/sparse_strips/vello_common/src/flatten.rs
+++ b/sparse_strips/vello_common/src/flatten.rs
@@ -84,7 +84,7 @@
fill_dispatch(level, path, affine, line_buf, ctx);
}
-simd_dispatch!(fill_dispatch(
+simd_dispatch!(fn fill_dispatch(
level,
path: impl IntoIterator<Item = PathEl>,
affine: Affine,
diff --git a/sparse_strips/vello_common/src/strip.rs b/sparse_strips/vello_common/src/strip.rs
index 674da18..e5db6e5 100644
--- a/sparse_strips/vello_common/src/strip.rs
+++ b/sparse_strips/vello_common/src/strip.rs
@@ -52,7 +52,7 @@
);
}
-simd_dispatch!(render_dispatch(
+simd_dispatch!(fn render_dispatch(
level,
tiles: &Tiles,
strip_buf: &mut Vec<Strip>,
diff --git a/sparse_strips/vello_common/src/tile.rs b/sparse_strips/vello_common/src/tile.rs
index a0906b1..97a7548 100644
--- a/sparse_strips/vello_common/src/tile.rs
+++ b/sparse_strips/vello_common/src/tile.rs
@@ -343,7 +343,7 @@
p1: Point { x: 9.0, y: -1.0 },
};
- let mut tiles = Tiles::new(Level::new());
+ let mut tiles = Tiles::new(Level::try_detect().unwrap_or(Level::fallback()));
tiles.make_tiles(&[line], 100, 100);
assert!(tiles.is_empty());
@@ -356,7 +356,7 @@
p1: Point { x: 103.0, y: 20.0 },
};
- let mut tiles = Tiles::new(Level::new());
+ let mut tiles = Tiles::new(Level::try_detect().unwrap_or(Level::fallback()));
tiles.make_tiles(&[line], 100, 100);
assert!(tiles.is_empty());
@@ -369,7 +369,7 @@
p1: Point { x: 35.0, y: 105.0 },
};
- let mut tiles = Tiles::new(Level::new());
+ let mut tiles = Tiles::new(Level::try_detect().unwrap_or(Level::fallback()));
tiles.make_tiles(&[line], 100, 100);
assert!(tiles.is_empty());
@@ -382,7 +382,7 @@
p1: Point { x: 2.0, y: 1.0 },
};
- let mut tiles = Tiles::new(Level::new());
+ let mut tiles = Tiles::new(Level::try_detect().unwrap_or(Level::fallback()));
tiles.make_tiles(&[line], 100, 100);
assert_eq!(tiles.tile_buf, [Tile::new(0, 0, 0, true)]);
@@ -395,7 +395,7 @@
p1: Point { x: 8.5, y: 1.0 },
};
- let mut tiles = Tiles::new(Level::new());
+ let mut tiles = Tiles::new(Level::try_detect().unwrap_or(Level::fallback()));
tiles.make_tiles(&[line], 100, 100);
tiles.sort_tiles();
@@ -416,7 +416,7 @@
p1: Point { x: 1.0, y: 8.5 },
};
- let mut tiles = Tiles::new(Level::new());
+ let mut tiles = Tiles::new(Level::try_detect().unwrap_or(Level::fallback()));
tiles.make_tiles(&[line], 100, 100);
tiles.sort_tiles();
@@ -437,7 +437,7 @@
p1: Point { x: 11.0, y: 8.5 },
};
- let mut tiles = Tiles::new(Level::new());
+ let mut tiles = Tiles::new(Level::try_detect().unwrap_or(Level::fallback()));
tiles.make_tiles(&[line], 100, 100);
tiles.sort_tiles();
@@ -460,7 +460,7 @@
p1: Point { x: 1.0, y: 1.0 },
};
- let mut tiles = Tiles::new(Level::new());
+ let mut tiles = Tiles::new(Level::try_detect().unwrap_or(Level::fallback()));
tiles.make_tiles(&[line], 100, 100);
tiles.sort_tiles();
@@ -483,7 +483,7 @@
p1: Point { x: 14.0, y: 6.0 },
};
- let mut tiles = Tiles::new(Level::new());
+ let mut tiles = Tiles::new(Level::try_detect().unwrap_or(Level::fallback()));
tiles.make_tiles(&[line], 100, 100);
tiles.sort_tiles();
@@ -506,7 +506,7 @@
p1: Point { x: 2.0, y: 11.0 },
};
- let mut tiles = Tiles::new(Level::new());
+ let mut tiles = Tiles::new(Level::try_detect().unwrap_or(Level::fallback()));
tiles.make_tiles(&[line], 100, 100);
tiles.sort_tiles();
@@ -534,7 +534,7 @@
p1: Point { x: 0.0, y: 1.0 },
};
- let mut tiles = Tiles::new(Level::new());
+ let mut tiles = Tiles::new(Level::try_detect().unwrap_or(Level::fallback()));
tiles.make_tiles(&[line_1, line_2], 100, 100);
assert_eq!(
@@ -551,7 +551,7 @@
p1: Point { x: 224.0, y: 388.0 },
};
- let mut tiles = Tiles::new(Level::new());
+ let mut tiles = Tiles::new(Level::try_detect().unwrap_or(Level::fallback()));
tiles.make_tiles(&[line], 600, 600);
}
@@ -560,14 +560,14 @@
let path = BezPath::from_svg("M261,0 L78848,0 L78848,4 L261,4 Z").unwrap();
let mut line_buf = vec![];
fill(
- Level::new(),
+ Level::try_detect().unwrap_or(Level::fallback()),
&path,
Affine::IDENTITY,
&mut line_buf,
&mut FlattenCtx::default(),
);
- let mut tiles = Tiles::new(Level::new());
+ let mut tiles = Tiles::new(Level::try_detect().unwrap_or(Level::fallback()));
tiles.make_tiles(&line_buf, 10, 10);
assert!(tiles.is_empty());
}
diff --git a/sparse_strips/vello_cpu/README.md b/sparse_strips/vello_cpu/README.md
index d523ce0..912ac91 100644
--- a/sparse_strips/vello_cpu/README.md
+++ b/sparse_strips/vello_cpu/README.md
@@ -125,7 +125,7 @@
## Minimum supported Rust Version (MSRV)
-This version of Vello CPU has been verified to compile with **Rust 1.85** and later.
+This version of Vello CPU has been verified to compile with **Rust 1.86** and later.
Future versions of Vello CPU might increase the Rust version requirement.
It will not be treated as a breaking change and as such can even happen with small patch releases.
diff --git a/sparse_strips/vello_cpu/src/dispatch/multi_threaded.rs b/sparse_strips/vello_cpu/src/dispatch/multi_threaded.rs
index 7040eac..297db9e 100644
--- a/sparse_strips/vello_cpu/src/dispatch/multi_threaded.rs
+++ b/sparse_strips/vello_cpu/src/dispatch/multi_threaded.rs
@@ -491,7 +491,7 @@
}
simd_dispatch!(
- pub rasterize_with_f32_dispatch(
+ pub fn rasterize_with_f32_dispatch(
level,
self_: &MultiThreadedDispatcher,
buffer: &mut [u8],
@@ -502,7 +502,7 @@
);
simd_dispatch!(
- pub rasterize_with_u8_dispatch(
+ pub fn rasterize_with_u8_dispatch(
level,
self_: &MultiThreadedDispatcher,
buffer: &mut [u8],
diff --git a/sparse_strips/vello_cpu/src/dispatch/single_threaded.rs b/sparse_strips/vello_cpu/src/dispatch/single_threaded.rs
index 5fbae49..ebd5673 100644
--- a/sparse_strips/vello_cpu/src/dispatch/single_threaded.rs
+++ b/sparse_strips/vello_cpu/src/dispatch/single_threaded.rs
@@ -197,7 +197,7 @@
}
simd_dispatch!(
- pub rasterize_with_f32_dispatch(
+ pub fn rasterize_with_f32_dispatch(
level,
self_: &SingleThreadedDispatcher,
buffer: &mut [u8],
@@ -208,7 +208,7 @@
);
simd_dispatch!(
- pub rasterize_with_u8_dispatch(
+ pub fn rasterize_with_u8_dispatch(
level,
self_: &SingleThreadedDispatcher,
buffer: &mut [u8],
diff --git a/sparse_strips/vello_cpu/src/render.rs b/sparse_strips/vello_cpu/src/render.rs
index 038dbda..eb14f47 100644
--- a/sparse_strips/vello_cpu/src/render.rs
+++ b/sparse_strips/vello_cpu/src/render.rs
@@ -81,7 +81,7 @@
impl Default for RenderSettings {
fn default() -> Self {
Self {
- level: Level::new(),
+ level: Level::try_detect().unwrap_or(Level::fallback()),
#[cfg(feature = "multithreading")]
num_threads: std::thread::available_parallelism()
.unwrap()
@@ -949,7 +949,7 @@
let mut pixmap = Pixmap::new(200, 200);
let settings = RenderSettings {
- level: Level::new(),
+ level: Level::try_detect().unwrap_or(Level::fallback()),
num_threads: 1,
render_mode: RenderMode::OptimizeQuality,
};
diff --git a/sparse_strips/vello_hybrid/README.md b/sparse_strips/vello_hybrid/README.md
index 2c652d1..047998d 100644
--- a/sparse_strips/vello_hybrid/README.md
+++ b/sparse_strips/vello_hybrid/README.md
@@ -23,7 +23,7 @@
## Minimum supported Rust Version (MSRV)
-This version of Vello Hybrid has been verified to compile with **Rust 1.85** and later.
+This version of Vello Hybrid has been verified to compile with **Rust 1.86** and later.
Future versions of Vello Hybrid might increase the Rust version requirement.
It will not be treated as a breaking change and as such can even happen with small patch releases.
diff --git a/sparse_strips/vello_hybrid/src/scene.rs b/sparse_strips/vello_hybrid/src/scene.rs
index 0985053..cd6f068 100644
--- a/sparse_strips/vello_hybrid/src/scene.rs
+++ b/sparse_strips/vello_hybrid/src/scene.rs
@@ -70,7 +70,11 @@
encoded_paints: vec![],
paint_visible: true,
stroke: render_state.stroke,
- strip_generator: StripGenerator::new(width, height, Level::new()),
+ strip_generator: StripGenerator::new(
+ width,
+ height,
+ Level::try_detect().unwrap_or(Level::fallback()),
+ ),
transform: render_state.transform,
fill_rule: render_state.fill_rule,
blend_mode: render_state.blend_mode,
diff --git a/sparse_strips/vello_sparse_shaders/README.md b/sparse_strips/vello_sparse_shaders/README.md
index a961371..85def5e 100644
--- a/sparse_strips/vello_sparse_shaders/README.md
+++ b/sparse_strips/vello_sparse_shaders/README.md
@@ -22,7 +22,7 @@
## Minimum supported Rust Version (MSRV)
-This version of Vello Hybrid Shaders has been verified to compile with **Rust 1.85** and later.
+This version of Vello Hybrid Shaders has been verified to compile with **Rust 1.86** and later.
Future versions of Vello Hybrid might increase the Rust version requirement.
It will not be treated as a breaking change and as such can even happen with small patch releases.
diff --git a/sparse_strips/vello_sparse_tests/tests/issues.rs b/sparse_strips/vello_sparse_tests/tests/issues.rs
index fdec8b0..792633b 100644
--- a/sparse_strips/vello_sparse_tests/tests/issues.rs
+++ b/sparse_strips/vello_sparse_tests/tests/issues.rs
@@ -380,7 +380,7 @@
#[test]
fn multi_threading_oob_access() {
let settings = RenderSettings {
- level: Level::new(),
+ level: Level::try_detect().unwrap_or(Level::fallback()),
num_threads: 4,
render_mode: RenderMode::OptimizeQuality,
};
diff --git a/sparse_strips/vello_sparse_tests/tests/util.rs b/sparse_strips/vello_sparse_tests/tests/util.rs
index 2afbc5f..a08da82 100644
--- a/sparse_strips/vello_sparse_tests/tests/util.rs
+++ b/sparse_strips/vello_sparse_tests/tests/util.rs
@@ -61,10 +61,16 @@
) -> T {
let level = match level {
#[cfg(target_arch = "aarch64")]
- "neon" => Level::Neon(Level::new().as_neon().expect("neon should be available")),
+ "neon" => Level::Neon(
+ Level::try_detect()
+ .unwrap_or(Level::fallback())
+ .as_neon()
+ .expect("neon should be available"),
+ ),
#[cfg(all(target_arch = "wasm32", target_feature = "simd128"))]
"wasm_simd128" => Level::WasmSimd128(
- Level::new()
+ Level::try_detect()
+ .unwrap_or(Level::fallback())
.as_wasm_simd128()
.expect("wasm simd128 should be available"),
),
diff --git a/vello/README.md b/vello/README.md
index 8abc5b6..cb0c75e 100644
--- a/vello/README.md
+++ b/vello/README.md
@@ -210,7 +210,7 @@
## Minimum supported Rust Version (MSRV)
-This version of Vello has been verified to compile with **Rust 1.85** and later.
+This version of Vello has been verified to compile with **Rust 1.86** and later.
Future versions of Vello might increase the Rust version requirement.
It will not be treated as a breaking change and as such can even happen with small patch releases.
diff --git a/vello_encoding/README.md b/vello_encoding/README.md
index 6483e06..3326cc0 100644
--- a/vello_encoding/README.md
+++ b/vello_encoding/README.md
@@ -20,7 +20,7 @@
## Minimum supported Rust Version (MSRV)
-This version of Vello Encoding has been verified to compile with **Rust 1.85** and later.
+This version of Vello Encoding has been verified to compile with **Rust 1.86** and later.
Future versions of Vello Encoding might increase the Rust version requirement.
It will not be treated as a breaking change and as such can even happen with small patch releases.
diff --git a/vello_shaders/README.md b/vello_shaders/README.md
index 0a45f16..81cf540 100644
--- a/vello_shaders/README.md
+++ b/vello_shaders/README.md
@@ -24,7 +24,7 @@
## Minimum supported Rust Version (MSRV)
-This version of Vello Shaders has been verified to compile with **Rust 1.85** and later.
+This version of Vello Shaders has been verified to compile with **Rust 1.86** and later.
Future versions of Vello Shaders might increase the Rust version requirement.
It will not be treated as a breaking change and as such can even happen with small patch releases.