Update Linebender-related dependencies (#3349)

* Updates crates from linebender ecosystem

* Remove usages of decprecated Clip mix mode
This commit is contained in:
Dennis Kobert
2025-11-08 08:59:00 +01:00
committed by GitHub
parent 6b315c3b68
commit 68e67055d8
7 changed files with 196 additions and 123 deletions
Generated
+141 -83
View File
@@ -92,7 +92,7 @@ dependencies = [
"log", "log",
"ndk", "ndk",
"ndk-context", "ndk-context",
"ndk-sys 0.6.0+11769913", "ndk-sys",
"num_enum", "num_enum",
"thiserror 1.0.69", "thiserror 1.0.69",
] ]
@@ -876,9 +876,9 @@ dependencies = [
[[package]] [[package]]
name = "color" name = "color"
version = "0.3.1" version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ae467d04a8a8aea5d9a49018a6ade2e4221d92968e8ce55a48c0b1164e5f698" checksum = "a18ef4657441fb193b65f34dc39b3781f0dfec23d3bd94d0eeb4e88cde421edb"
[[package]] [[package]]
name = "color_quant" name = "color_quant"
@@ -1018,6 +1018,17 @@ dependencies = [
"libc", "libc",
] ]
[[package]]
name = "core-graphics-types"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb"
dependencies = [
"bitflags 2.9.3",
"core-foundation 0.10.1",
"libc",
]
[[package]] [[package]]
name = "core_maths" name = "core_maths"
version = "0.1.1" version = "0.1.1"
@@ -1617,6 +1628,15 @@ dependencies = [
"bytemuck", "bytemuck",
] ]
[[package]]
name = "font-types"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "511e2c18a516c666d27867d2f9821f76e7d591f762e9fc41dd6cc5c90fe54b0b"
dependencies = [
"bytemuck",
]
[[package]] [[package]]
name = "fontconfig-cache-parser" name = "fontconfig-cache-parser"
version = "0.2.0" version = "0.2.0"
@@ -1679,7 +1699,7 @@ dependencies = [
"objc2-core-foundation", "objc2-core-foundation",
"objc2-core-text", "objc2-core-text",
"objc2-foundation", "objc2-foundation",
"peniko", "peniko 0.4.0",
"read-fonts 0.29.3", "read-fonts 0.29.3",
"roxmltree", "roxmltree",
"smallvec", "smallvec",
@@ -2111,7 +2131,7 @@ dependencies = [
"glam", "glam",
"graphene-core-shaders", "graphene-core-shaders",
"image", "image",
"kurbo", "kurbo 0.12.0",
"log", "log",
"lyon_geom", "lyon_geom",
"node-macro", "node-macro",
@@ -2189,7 +2209,7 @@ dependencies = [
"graphene-core-shaders", "graphene-core-shaders",
"graphene-raster-nodes-shaders", "graphene-raster-nodes-shaders",
"image", "image",
"kurbo", "kurbo 0.12.0",
"ndarray", "ndarray",
"node-macro", "node-macro",
"num-traits", "num-traits",
@@ -2255,7 +2275,7 @@ dependencies = [
"dyn-any", "dyn-any",
"glam", "glam",
"graphene-core", "graphene-core",
"kurbo", "kurbo 0.12.0",
"log", "log",
"num-traits", "num-traits",
"serde", "serde",
@@ -2280,7 +2300,7 @@ dependencies = [
"graphite-desktop-embedded-resources", "graphite-desktop-embedded-resources",
"graphite-desktop-wrapper", "graphite-desktop-wrapper",
"libc", "libc",
"metal", "metal 0.31.0",
"muda", "muda",
"objc", "objc",
"open", "open",
@@ -2373,7 +2393,7 @@ dependencies = [
"image", "image",
"interpreted-executor", "interpreted-executor",
"js-sys", "js-sys",
"kurbo", "kurbo 0.12.0",
"log", "log",
"num_enum", "num_enum",
"once_cell", "once_cell",
@@ -3153,6 +3173,17 @@ name = "kurbo"
version = "0.11.3" version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c62026ae44756f8a599ba21140f350303d4f08dcdcc71b5ad9c9bb8128c13c62" checksum = "c62026ae44756f8a599ba21140f350303d4f08dcdcc71b5ad9c9bb8128c13c62"
dependencies = [
"arrayvec",
"euclid",
"smallvec",
]
[[package]]
name = "kurbo"
version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce9729cc38c18d86123ab736fd2e7151763ba226ac2490ec092d1dd148825e32"
dependencies = [ dependencies = [
"arrayvec", "arrayvec",
"euclid", "euclid",
@@ -3221,6 +3252,12 @@ dependencies = [
"redox_syscall", "redox_syscall",
] ]
[[package]]
name = "linebender_resource_handle"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4a5ff6bcca6c4867b1c4fd4ef63e4db7436ef363e0ad7531d1558856bae64f4"
[[package]] [[package]]
name = "linux-raw-sys" name = "linux-raw-sys"
version = "0.9.4" version = "0.9.4"
@@ -3369,7 +3406,22 @@ checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e"
dependencies = [ dependencies = [
"bitflags 2.9.3", "bitflags 2.9.3",
"block", "block",
"core-graphics-types", "core-graphics-types 0.1.3",
"foreign-types 0.5.0",
"log",
"objc",
"paste",
]
[[package]]
name = "metal"
version = "0.32.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605"
dependencies = [
"bitflags 2.9.3",
"block",
"core-graphics-types 0.2.0",
"foreign-types 0.5.0", "foreign-types 0.5.0",
"log", "log",
"objc", "objc",
@@ -3430,26 +3482,27 @@ dependencies = [
[[package]] [[package]]
name = "naga" name = "naga"
version = "25.0.1" version = "26.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b977c445f26e49757f9aca3631c3b8b836942cb278d69a92e7b80d3b24da632" checksum = "916cbc7cb27db60be930a4e2da243cf4bc39569195f22fd8ee419cd31d5b662c"
dependencies = [ dependencies = [
"arrayvec", "arrayvec",
"bit-set", "bit-set",
"bitflags 2.9.3", "bitflags 2.9.3",
"cfg-if",
"cfg_aliases", "cfg_aliases",
"codespan-reporting", "codespan-reporting",
"half", "half",
"hashbrown", "hashbrown",
"hexf-parse", "hexf-parse",
"indexmap", "indexmap",
"libm",
"log", "log",
"num-traits", "num-traits",
"once_cell", "once_cell",
"petgraph 0.8.2", "petgraph 0.8.2",
"rustc-hash 1.1.0", "rustc-hash 1.1.0",
"spirv", "spirv",
"strum 0.26.3",
"thiserror 2.0.16", "thiserror 2.0.16",
"unicode-ident", "unicode-ident",
] ]
@@ -3495,7 +3548,7 @@ dependencies = [
"bitflags 2.9.3", "bitflags 2.9.3",
"jni-sys", "jni-sys",
"log", "log",
"ndk-sys 0.6.0+11769913", "ndk-sys",
"num_enum", "num_enum",
"raw-window-handle", "raw-window-handle",
"thiserror 1.0.69", "thiserror 1.0.69",
@@ -3507,15 +3560,6 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b"
[[package]]
name = "ndk-sys"
version = "0.5.0+25.2.9519653"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691"
dependencies = [
"jni-sys",
]
[[package]] [[package]]
name = "ndk-sys" name = "ndk-sys"
version = "0.6.0+11769913" version = "0.6.0+11769913"
@@ -3556,7 +3600,7 @@ dependencies = [
"proc-macro-error2", "proc-macro-error2",
"proc-macro2", "proc-macro2",
"quote", "quote",
"strum 0.27.2", "strum",
"syn 2.0.106", "syn 2.0.106",
] ]
@@ -3973,7 +4017,7 @@ checksum = "13e57638545cf2ba4c3e72cc5715e53b1880b829cc3dbefda3d1700c58efe723"
dependencies = [ dependencies = [
"fontique", "fontique",
"hashbrown", "hashbrown",
"peniko", "peniko 0.4.0",
"skrifa 0.31.3", "skrifa 0.31.3",
"swash", "swash",
] ]
@@ -4015,7 +4059,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f9529efd019889b2a205193c14ffb6e2839b54ed9d2720674f10f4b04d87ac9" checksum = "1f9529efd019889b2a205193c14ffb6e2839b54ed9d2720674f10f4b04d87ac9"
dependencies = [ dependencies = [
"color", "color",
"kurbo", "kurbo 0.11.3",
"smallvec",
]
[[package]]
name = "peniko"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3c76095c9a636173600478e0373218c7b955335048c2bcd12dc6a79657649d8"
dependencies = [
"color",
"kurbo 0.12.0",
"linebender_resource_handle",
"smallvec", "smallvec",
] ]
@@ -4088,7 +4144,6 @@ dependencies = [
"fixedbitset", "fixedbitset",
"hashbrown", "hashbrown",
"indexmap", "indexmap",
"serde",
] ]
[[package]] [[package]]
@@ -4616,7 +4671,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "04ca636dac446b5664bd16c069c00a9621806895b8bb02c2dc68542b23b8f25d" checksum = "04ca636dac446b5664bd16c069c00a9621806895b8bb02c2dc68542b23b8f25d"
dependencies = [ dependencies = [
"bytemuck", "bytemuck",
"font-types", "font-types 0.9.0",
] ]
[[package]] [[package]]
@@ -4626,7 +4681,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8941f8e9d5f8ad3aebea330d01ac68c0167600eb31a86ecd86e97be4d13b51f5" checksum = "8941f8e9d5f8ad3aebea330d01ac68c0167600eb31a86ecd86e97be4d13b51f5"
dependencies = [ dependencies = [
"bytemuck", "bytemuck",
"font-types", "font-types 0.9.0",
]
[[package]]
name = "read-fonts"
version = "0.35.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6717cf23b488adf64b9d711329542ba34de147df262370221940dfabc2c91358"
dependencies = [
"bytemuck",
"font-types 0.10.0",
] ]
[[package]] [[package]]
@@ -4862,7 +4927,7 @@ version = "0.9.0"
source = "git+https://github.com/Rust-GPU/rust-gpu?rev=c12f216121820580731440ee79ebc7403d6ea04f#3f05f5482824e3b1fbb44c9ef90a8795a0204c7c" source = "git+https://github.com/Rust-GPU/rust-gpu?rev=c12f216121820580731440ee79ebc7403d6ea04f#3f05f5482824e3b1fbb44c9ef90a8795a0204c7c"
dependencies = [ dependencies = [
"serde", "serde",
"strum 0.27.2", "strum",
"thiserror 2.0.16", "thiserror 2.0.16",
] ]
@@ -5266,6 +5331,16 @@ dependencies = [
"read-fonts 0.34.0", "read-fonts 0.34.0",
] ]
[[package]]
name = "skrifa"
version = "0.37.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8c31071dedf532758ecf3fed987cdb4bd9509f900e026ab684b4ecb81ea49841"
dependencies = [
"bytemuck",
"read-fonts 0.35.0",
]
[[package]] [[package]]
name = "slab" name = "slab"
version = "0.4.11" version = "0.4.11"
@@ -5466,35 +5541,13 @@ version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
[[package]]
name = "strum"
version = "0.26.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06"
dependencies = [
"strum_macros 0.26.4",
]
[[package]] [[package]]
name = "strum" name = "strum"
version = "0.27.2" version = "0.27.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf"
dependencies = [ dependencies = [
"strum_macros 0.27.2", "strum_macros",
]
[[package]]
name = "strum_macros"
version = "0.26.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be"
dependencies = [
"heck",
"proc-macro2",
"quote",
"rustversion",
"syn 2.0.106",
] ]
[[package]] [[package]]
@@ -5533,7 +5586,7 @@ version = "0.15.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68c7541fff44b35860c1a7a47a7cadf3e4a304c457b58f9870d9706ece028afc" checksum = "68c7541fff44b35860c1a7a47a7cadf3e4a304c457b58f9870d9706ece028afc"
dependencies = [ dependencies = [
"kurbo", "kurbo 0.11.3",
"siphasher", "siphasher",
] ]
@@ -6243,7 +6296,7 @@ dependencies = [
"flate2", "flate2",
"fontdb 0.22.0", "fontdb 0.22.0",
"imagesize", "imagesize",
"kurbo", "kurbo 0.11.3",
"log", "log",
"pico-args", "pico-args",
"roxmltree", "roxmltree",
@@ -6270,7 +6323,7 @@ dependencies = [
"flate2", "flate2",
"fontdb 0.23.0", "fontdb 0.23.0",
"imagesize", "imagesize",
"kurbo", "kurbo 0.11.3",
"log", "log",
"pico-args", "pico-args",
"roxmltree", "roxmltree",
@@ -6329,15 +6382,16 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
[[package]] [[package]]
name = "vello" name = "vello"
version = "0.5.0" version = "0.6.0"
source = "git+https://github.com/linebender/vello.git?rev=87cc5bee6d3a34d15017dbbb58634ddc7f33ff9b#87cc5bee6d3a34d15017dbbb58634ddc7f33ff9b" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71acbd6b5f7f19841425845c113a89a54bbf60556ae39e7d0182a6f80ce37f5b"
dependencies = [ dependencies = [
"bytemuck", "bytemuck",
"futures-intrusive", "futures-intrusive",
"log", "log",
"peniko", "peniko 0.5.0",
"png", "png",
"skrifa 0.31.3", "skrifa 0.37.0",
"static_assertions", "static_assertions",
"thiserror 2.0.16", "thiserror 2.0.16",
"vello_encoding", "vello_encoding",
@@ -6347,20 +6401,22 @@ dependencies = [
[[package]] [[package]]
name = "vello_encoding" name = "vello_encoding"
version = "0.5.0" version = "0.6.0"
source = "git+https://github.com/linebender/vello.git?rev=87cc5bee6d3a34d15017dbbb58634ddc7f33ff9b#87cc5bee6d3a34d15017dbbb58634ddc7f33ff9b" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cfd5e0b9fec91df34a09fbcbbed474cec68d05691b590a911c7af83c4860ae42"
dependencies = [ dependencies = [
"bytemuck", "bytemuck",
"guillotiere", "guillotiere",
"peniko", "peniko 0.5.0",
"skrifa 0.31.3", "skrifa 0.37.0",
"smallvec", "smallvec",
] ]
[[package]] [[package]]
name = "vello_shaders" name = "vello_shaders"
version = "0.5.0" version = "0.6.0"
source = "git+https://github.com/linebender/vello.git?rev=87cc5bee6d3a34d15017dbbb58634ddc7f33ff9b#87cc5bee6d3a34d15017dbbb58634ddc7f33ff9b" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8c381dde4e7d0d7957df0c0e3f8a7cc0976762d3972d97da5c71464e57ffefd3"
dependencies = [ dependencies = [
"bytemuck", "bytemuck",
"log", "log",
@@ -6658,12 +6714,13 @@ checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3"
[[package]] [[package]]
name = "wgpu" name = "wgpu"
version = "25.0.2" version = "26.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec8fb398f119472be4d80bc3647339f56eb63b2a331f6a3d16e25d8144197dd9" checksum = "70b6ff82bbf6e9206828e1a3178e851f8c20f1c9028e74dd3a8090741ccd5798"
dependencies = [ dependencies = [
"arrayvec", "arrayvec",
"bitflags 2.9.3", "bitflags 2.9.3",
"cfg-if",
"cfg_aliases", "cfg_aliases",
"document-features", "document-features",
"hashbrown", "hashbrown",
@@ -6686,9 +6743,9 @@ dependencies = [
[[package]] [[package]]
name = "wgpu-core" name = "wgpu-core"
version = "25.0.2" version = "26.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7b882196f8368511d613c6aeec80655160db6646aebddf8328879a88d54e500" checksum = "d5f62f1053bd28c2268f42916f31588f81f64796e2ff91b81293515017ca8bd9"
dependencies = [ dependencies = [
"arrayvec", "arrayvec",
"bit-set", "bit-set",
@@ -6718,27 +6775,27 @@ dependencies = [
[[package]] [[package]]
name = "wgpu-core-deps-apple" name = "wgpu-core-deps-apple"
version = "25.0.0" version = "26.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cfd488b3239b6b7b185c3b045c39ca6bf8af34467a4c5de4e0b1a564135d093d" checksum = "18ae5fbde6a4cbebae38358aa73fcd6e0f15c6144b67ef5dc91ded0db125dbdf"
dependencies = [ dependencies = [
"wgpu-hal", "wgpu-hal",
] ]
[[package]] [[package]]
name = "wgpu-core-deps-emscripten" name = "wgpu-core-deps-emscripten"
version = "25.0.0" version = "26.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f09ad7aceb3818e52539acc679f049d3475775586f3f4e311c30165cf2c00445" checksum = "d7670e390f416006f746b4600fdd9136455e3627f5bd763abf9a65daa216dd2d"
dependencies = [ dependencies = [
"wgpu-hal", "wgpu-hal",
] ]
[[package]] [[package]]
name = "wgpu-core-deps-windows-linux-android" name = "wgpu-core-deps-windows-linux-android"
version = "25.0.0" version = "26.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cba5fb5f7f9c98baa7c889d444f63ace25574833df56f5b817985f641af58e46" checksum = "720a5cb9d12b3d337c15ff0e24d3e97ed11490ff3f7506e7f3d98c68fa5d6f14"
dependencies = [ dependencies = [
"wgpu-hal", "wgpu-hal",
] ]
@@ -6764,9 +6821,9 @@ dependencies = [
[[package]] [[package]]
name = "wgpu-hal" name = "wgpu-hal"
version = "25.0.2" version = "26.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f968767fe4d3d33747bbd1473ccd55bf0f6451f55d733b5597e67b5deab4ad17" checksum = "a8d0e67224cc7305b3b4eb2cc57ca4c4c3afc665c1d1bee162ea806e19c47bdd"
dependencies = [ dependencies = [
"android_system_properties", "android_system_properties",
"arrayvec", "arrayvec",
@@ -6777,7 +6834,7 @@ dependencies = [
"bytemuck", "bytemuck",
"cfg-if", "cfg-if",
"cfg_aliases", "cfg_aliases",
"core-graphics-types", "core-graphics-types 0.2.0",
"glow", "glow",
"glutin_wgl_sys", "glutin_wgl_sys",
"gpu-alloc", "gpu-alloc",
@@ -6789,13 +6846,14 @@ dependencies = [
"libc", "libc",
"libloading", "libloading",
"log", "log",
"metal", "metal 0.32.0",
"naga", "naga",
"ndk-sys 0.5.0+25.2.9519653", "ndk-sys",
"objc", "objc",
"ordered-float 4.6.0", "ordered-float 4.6.0",
"parking_lot", "parking_lot",
"portable-atomic", "portable-atomic",
"portable-atomic-util",
"profiling", "profiling",
"range-alloc", "range-alloc",
"raw-window-handle", "raw-window-handle",
@@ -6811,9 +6869,9 @@ dependencies = [
[[package]] [[package]]
name = "wgpu-types" name = "wgpu-types"
version = "25.0.0" version = "26.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2aa49460c2a8ee8edba3fca54325540d904dd85b2e086ada762767e17d06e8bc" checksum = "eca7a8d8af57c18f57d393601a1fb159ace8b2328f1b6b5f80893f7d672c9ae2"
dependencies = [ dependencies = [
"bitflags 2.9.3", "bitflags 2.9.3",
"bytemuck", "bytemuck",
+4 -4
View File
@@ -106,7 +106,7 @@ quote = "1.0"
chrono = "0.4" chrono = "0.4"
ron = "0.11" ron = "0.11"
fastnoise-lite = "1.1" fastnoise-lite = "1.1"
wgpu = { version = "25.0", features = [ wgpu = { version = "26.0", features = [
# We don't have wgpu on multiple threads (yet) https://github.com/gfx-rs/wgpu/blob/trunk/CHANGELOG.md#wgpu-types-now-send-sync-on-wasm # We don't have wgpu on multiple threads (yet) https://github.com/gfx-rs/wgpu/blob/trunk/CHANGELOG.md#wgpu-types-now-send-sync-on-wasm
"fragile-send-sync-non-atomic-wasm", "fragile-send-sync-non-atomic-wasm",
"spirv", "spirv",
@@ -138,8 +138,8 @@ winit = { git = "https://github.com/rust-windowing/winit.git" }
keyboard-types = "0.8" keyboard-types = "0.8"
url = "2.5" url = "2.5"
tokio = { version = "1.29", features = ["fs", "macros", "io-std", "rt"] } tokio = { version = "1.29", features = ["fs", "macros", "io-std", "rt"] }
vello = { git = "https://github.com/linebender/vello.git", rev = "87cc5bee6d3a34d15017dbbb58634ddc7f33ff9b" } # TODO switch back to stable when a release is made vello = { version = "0.6" }
vello_encoding = { git = "https://github.com/linebender/vello.git", rev = "87cc5bee6d3a34d15017dbbb58634ddc7f33ff9b" } # TODO switch back to stable when a release is made vello_encoding = { version = "0.6" }
resvg = "0.45" resvg = "0.45"
usvg = "0.45" usvg = "0.45"
rand = { version = "0.9", default-features = false, features = ["std_rng"] } rand = { version = "0.9", default-features = false, features = ["std_rng"] }
@@ -178,7 +178,7 @@ syn = { version = "2.0", default-features = false, features = [
"extra-traits", "extra-traits",
"proc-macro", "proc-macro",
] } ] }
kurbo = { version = "0.11", features = ["serde"] } kurbo = { version = "0.12", features = ["serde"] }
lyon_geom = "1.0" lyon_geom = "1.0"
petgraph = { version = "0.7", default-features = false, features = ["graphmap"] } petgraph = { version = "0.7", default-features = false, features = ["graphmap"] }
half = { version = "2.4", default-features = false, features = ["bytemuck"] } half = { version = "2.4", default-features = false, features = ["bytemuck"] }
@@ -998,15 +998,20 @@ impl OverlayContextInternal {
data[index..index + 4].copy_from_slice(&rgba); data[index..index + 4].copy_from_slice(&rgba);
} }
let image = peniko::Image { let image = peniko::ImageBrush {
data: data.into(), image: peniko::ImageData {
format: peniko::ImageFormat::Rgba8, data: data.into(),
width: PATTERN_WIDTH, format: peniko::ImageFormat::Rgba8,
height: PATTERN_HEIGHT, width: PATTERN_WIDTH,
x_extend: peniko::Extend::Repeat, height: PATTERN_HEIGHT,
y_extend: peniko::Extend::Repeat, alpha_type: peniko::ImageAlphaType::Alpha,
alpha: 1.0, },
quality: peniko::ImageQuality::default(), sampler: peniko::ImageSampler {
x_extend: peniko::Extend::Repeat,
y_extend: peniko::Extend::Repeat,
quality: peniko::ImageQuality::default(),
alpha: 1.0,
},
}; };
let path = self.push_path(subpaths, transform); let path = self.push_path(subpaths, transform);
@@ -4,8 +4,6 @@ use kurbo::{BezPath, Join, ParamCurve, PathEl, PathSeg};
/// Value to control smoothness and mathematical accuracy to offset a cubic Bezier. /// Value to control smoothness and mathematical accuracy to offset a cubic Bezier.
const CUBIC_REGULARIZATION_ACCURACY: f64 = 0.5; const CUBIC_REGULARIZATION_ACCURACY: f64 = 0.5;
/// Accuracy of fitting offset curve to Bezier paths.
const CUBIC_TO_BEZPATH_ACCURACY: f64 = 1e-3;
/// Constant used to determine if `f64`s are equivalent. /// Constant used to determine if `f64`s are equivalent.
pub const MAX_ABSOLUTE_DIFFERENCE: f64 = 1e-7; pub const MAX_ABSOLUTE_DIFFERENCE: f64 = 1e-7;
/// Squared version to avoid sqrt in distance checks. /// Squared version to avoid sqrt in distance checks.
@@ -36,9 +34,8 @@ pub fn offset_bezpath(bezpath: &BezPath, distance: f64, join: Join, miter_limit:
return None; return None;
} }
let cubic_offset = kurbo::offset::CubicOffset::new_regularized(cubic_bez, distance, CUBIC_REGULARIZATION_ACCURACY); let mut fitted = BezPath::new();
kurbo::offset::offset_cubic(cubic_bez, distance, CUBIC_REGULARIZATION_ACCURACY, &mut fitted);
let fitted = kurbo::fit_to_bezpath(&cubic_offset, CUBIC_TO_BEZPATH_ACCURACY);
if fitted.segments().count() > MAX_FITTED_SEGMENTS { if fitted.segments().count() > MAX_FITTED_SEGMENTS {
None None
+30 -18
View File
@@ -153,7 +153,7 @@ impl Default for SvgRender {
#[derive(Clone, Debug, Default)] #[derive(Clone, Debug, Default)]
pub struct RenderContext { pub struct RenderContext {
#[cfg(feature = "vello")] #[cfg(feature = "vello")]
pub resource_overrides: Vec<(peniko::Image, wgpu::Texture)>, pub resource_overrides: Vec<(peniko::ImageBrush, wgpu::Texture)>,
} }
#[derive(Default, Clone, Copy, Hash)] #[derive(Default, Clone, Copy, Hash)]
@@ -459,8 +459,7 @@ impl Render for Artboard {
scene.pop_layer(); scene.pop_layer();
if self.clip { if self.clip {
let blend_mode = peniko::BlendMode::new(peniko::Mix::Clip, peniko::Compose::SrcOver); scene.push_clip_layer(kurbo::Affine::new(transform.to_cols_array()), &rect);
scene.push_layer(blend_mode, 1., kurbo::Affine::new(transform.to_cols_array()), &rect);
} }
// Since the content's transform is right multiplied in when rendering the content, we just need to right multiply by the artboard offset here. // Since the content's transform is right multiplied in when rendering the content, we just need to right multiply by the artboard offset here.
let child_transform = transform * DAffine2::from_translation(self.location.as_dvec2()); let child_transform = transform * DAffine2::from_translation(self.location.as_dvec2());
@@ -627,7 +626,7 @@ impl Render for Table<Graphic> {
scene.push_layer(peniko::Mix::Normal, 1., kurbo::Affine::IDENTITY, &rect); scene.push_layer(peniko::Mix::Normal, 1., kurbo::Affine::IDENTITY, &rect);
mask_element.render_to_vello(scene, transform_mask, context, &render_params.for_clipper()); mask_element.render_to_vello(scene, transform_mask, context, &render_params.for_clipper());
scene.push_layer(peniko::BlendMode::new(peniko::Mix::Clip, peniko::Compose::SrcIn), 1., kurbo::Affine::IDENTITY, &rect); scene.push_clip_layer(kurbo::Affine::IDENTITY, &rect);
} }
row.element.render_to_vello(scene, transform, context, render_params); row.element.render_to_vello(scene, transform, context, render_params);
@@ -941,21 +940,24 @@ impl Render for Table<Vector> {
let fill = peniko::Brush::Gradient(peniko::Gradient { let fill = peniko::Brush::Gradient(peniko::Gradient {
kind: match gradient.gradient_type { kind: match gradient.gradient_type {
GradientType::Linear => peniko::GradientKind::Linear { GradientType::Linear => peniko::LinearGradientPosition {
start: to_point(start), start: to_point(start),
end: to_point(end), end: to_point(end),
}, }
.into(),
GradientType::Radial => { GradientType::Radial => {
let radius = start.distance(end); let radius = start.distance(end);
peniko::GradientKind::Radial { peniko::RadialGradientPosition {
start_center: to_point(start), start_center: to_point(start),
start_radius: 0., start_radius: 0.,
end_center: to_point(start), end_center: to_point(start),
end_radius: radius as f32, end_radius: radius as f32,
} }
.into()
} }
}, },
stops, stops,
interpolation_alpha_space: peniko::InterpolationAlphaSpace::Premultiplied,
..Default::default() ..Default::default()
}); });
let inverse_element_transform = if element_transform.matrix2.determinant() != 0. { let inverse_element_transform = if element_transform.matrix2.determinant() != 0. {
@@ -1050,7 +1052,7 @@ impl Render for Table<Vector> {
if wants_stroke_below { if wants_stroke_below {
scene.push_layer(peniko::Mix::Normal, 1., kurbo::Affine::IDENTITY, &rect); scene.push_layer(peniko::Mix::Normal, 1., kurbo::Affine::IDENTITY, &rect);
vector_table.render_to_vello(scene, parent_transform, _context, &render_params.for_alignment(applied_stroke_transform)); vector_table.render_to_vello(scene, parent_transform, _context, &render_params.for_alignment(applied_stroke_transform));
scene.push_layer(peniko::BlendMode::new(peniko::Mix::Clip, compose), 1., kurbo::Affine::IDENTITY, &rect); scene.push_layer(peniko::BlendMode::new(peniko::Mix::Normal, compose), 1., kurbo::Affine::IDENTITY, &rect);
do_stroke(scene, 2.); do_stroke(scene, 2.);
@@ -1064,7 +1066,7 @@ impl Render for Table<Vector> {
scene.push_layer(peniko::Mix::Normal, 1., kurbo::Affine::IDENTITY, &rect); scene.push_layer(peniko::Mix::Normal, 1., kurbo::Affine::IDENTITY, &rect);
vector_table.render_to_vello(scene, parent_transform, _context, &render_params.for_alignment(applied_stroke_transform)); vector_table.render_to_vello(scene, parent_transform, _context, &render_params.for_alignment(applied_stroke_transform));
scene.push_layer(peniko::BlendMode::new(peniko::Mix::Clip, compose), 1., kurbo::Affine::IDENTITY, &rect); scene.push_layer(peniko::BlendMode::new(peniko::Mix::Normal, compose), 1., kurbo::Affine::IDENTITY, &rect);
do_stroke(scene, 2.); do_stroke(scene, 2.);
@@ -1298,10 +1300,17 @@ impl Render for Table<Raster<CPU>> {
} }
} }
let image = peniko::Image::new(image.to_flat_u8().0.into(), peniko::ImageFormat::Rgba8, image.width, image.height).with_extend(peniko::Extend::Repeat); let image_brush = peniko::ImageBrush::new(peniko::ImageData {
data: image.to_flat_u8().0.into(),
format: peniko::ImageFormat::Rgba8,
width: image.width,
height: image.height,
alpha_type: peniko::ImageAlphaType::Alpha,
})
.with_extend(peniko::Extend::Repeat);
let image_transform = transform * *row.transform * DAffine2::from_scale(1. / DVec2::new(image.width as f64, image.height as f64)); let image_transform = transform * *row.transform * DAffine2::from_scale(1. / DVec2::new(image.width as f64, image.height as f64));
scene.draw_image(&image, kurbo::Affine::new(image_transform.to_cols_array())); scene.draw_image(&image_brush, kurbo::Affine::new(image_transform.to_cols_array()));
if layer { if layer {
scene.pop_layer(); scene.pop_layer();
@@ -1350,14 +1359,17 @@ impl Render for Table<Raster<GPU>> {
} }
} }
let image = peniko::Image::new( let width = row.element.data().width();
peniko::Blob::new(LAZY_ARC_VEC_ZERO_U8.deref().clone()), let height = row.element.data().height();
peniko::ImageFormat::Rgba8, let image = peniko::ImageBrush::new(peniko::ImageData {
row.element.data().width(), data: peniko::Blob::new(LAZY_ARC_VEC_ZERO_U8.deref().clone()),
row.element.data().height(), format: peniko::ImageFormat::Rgba8,
) width,
height,
alpha_type: peniko::ImageAlphaType::Alpha,
})
.with_extend(peniko::Extend::Repeat); .with_extend(peniko::Extend::Repeat);
let image_transform = transform * *row.transform * DAffine2::from_scale(1. / DVec2::new(image.width as f64, image.height as f64)); let image_transform = transform * *row.transform * DAffine2::from_scale(1. / DVec2::new(width as f64, height as f64));
scene.draw_image(&image, kurbo::Affine::new(image_transform.to_cols_array())); scene.draw_image(&image, kurbo::Affine::new(image_transform.to_cols_array()));
context.resource_overrides.push((image, row.element.data().clone())); context.resource_overrides.push((image, row.element.data().clone()));
+4 -4
View File
@@ -143,18 +143,18 @@ impl WgpuExecutor {
{ {
let mut renderer = self.vello_renderer.lock().await; let mut renderer = self.vello_renderer.lock().await;
for (image, texture) in context.resource_overrides.iter() { for (image_brush, texture) in context.resource_overrides.iter() {
let texture_view = wgpu::TexelCopyTextureInfoBase { let texture_view = wgpu::TexelCopyTextureInfoBase {
texture: texture.clone(), texture: texture.clone(),
mip_level: 0, mip_level: 0,
origin: Origin3d::ZERO, origin: Origin3d::ZERO,
aspect: TextureAspect::All, aspect: TextureAspect::All,
}; };
renderer.override_image(image, Some(texture_view)); renderer.override_image(&image_brush.image, Some(texture_view));
} }
renderer.render_to_texture(&self.context.device, &self.context.queue, scene, &target_texture.view, &render_params)?; renderer.render_to_texture(&self.context.device, &self.context.queue, scene, &target_texture.view, &render_params)?;
for (image, _) in context.resource_overrides.iter() { for (image_brush, _) in context.resource_overrides.iter() {
renderer.override_image(image, None); renderer.override_image(&image_brush.image, None);
} }
} }
Ok(()) Ok(())
@@ -220,6 +220,7 @@ impl PerPixelAdjustGraphicsPipeline {
load: LoadOp::Clear(wgpu::Color::BLACK), load: LoadOp::Clear(wgpu::Color::BLACK),
store: StoreOp::Store, store: StoreOp::Store,
}, },
depth_slice: None,
})], })],
depth_stencil_attachment: None, depth_stencil_attachment: None,
timestamp_writes: None, timestamp_writes: None,