105 lines
3.2 KiB
TOML
105 lines
3.2 KiB
TOML
[workspace]
|
||
resolver = "2"
|
||
members = [
|
||
"lightningbeam-editor",
|
||
"lightningbeam-core",
|
||
"beamdsp",
|
||
"gpu-video-encoder",
|
||
]
|
||
|
||
[workspace.dependencies]
|
||
# UI Framework (using eframe for simplified integration)
|
||
# Note: Upgraded from 0.29 to 0.31 to fix Linux IME/keyboard input issues
|
||
# See: https://github.com/emilk/egui/pull/5198
|
||
# Upgraded to 0.33 for shader editor (egui_code_editor) and continued bug fixes
|
||
egui = "0.33.3"
|
||
eframe = { version = "0.33.3", default-features = true, features = ["wgpu"] }
|
||
egui_extras = { version = "0.33.3", features = ["image", "svg", "syntect"] }
|
||
egui-wgpu = "0.33.3"
|
||
egui_code_editor = "0.2"
|
||
|
||
# GPU Rendering
|
||
# vello from git uses wgpu 27, matching eframe 0.33
|
||
vello = { git = "https://github.com/linebender/vello", branch = "main" }
|
||
wgpu = { version = "27", features = ["vulkan", "metal", "gles"] }
|
||
kurbo = { version = "0.12", features = ["serde"] }
|
||
peniko = "0.5"
|
||
# Text layout/shaping for text layers. Pinned to git main to match the peniko 0.5
|
||
# / skrifa 0.37 that vello's git-main resolves to — a released parley still pins
|
||
# peniko 0.4, which would split `peniko::Font` into two incompatible types at the
|
||
# vello `draw_glyphs` boundary.
|
||
parley = { git = "https://github.com/linebender/parley", branch = "main" }
|
||
|
||
# Windowing
|
||
winit = "0.30"
|
||
|
||
# Native menus
|
||
muda = "0.15"
|
||
|
||
# Serialization
|
||
serde = { version = "1.0", features = ["derive"] }
|
||
serde_json = "1.0"
|
||
|
||
# Image loading
|
||
image = "0.25"
|
||
resvg = "0.42"
|
||
|
||
# Utilities
|
||
pollster = "0.3"
|
||
|
||
# Desktop notifications
|
||
notify-rust = "4.11"
|
||
|
||
# Optimize the audio backend even in debug builds — the audio callback
|
||
# runs on a real-time thread with ~1.5ms deadlines at small buffer sizes,
|
||
# so it cannot tolerate unoptimized code.
|
||
[profile.dev.package.daw-backend]
|
||
opt-level = 2
|
||
|
||
[profile.dev.package.nam-ffi]
|
||
opt-level = 2
|
||
|
||
[profile.dev.package.beamdsp]
|
||
opt-level = 2
|
||
|
||
# Also optimize symphonia (audio decoder) and cpal (audio I/O) — these
|
||
# run in the audio callback path and are heavily numeric.
|
||
[profile.dev.package.symphonia]
|
||
opt-level = 2
|
||
[profile.dev.package.symphonia-core]
|
||
opt-level = 2
|
||
[profile.dev.package.symphonia-bundle-mp3]
|
||
opt-level = 2
|
||
[profile.dev.package.symphonia-bundle-flac]
|
||
opt-level = 2
|
||
[profile.dev.package.symphonia-format-ogg]
|
||
opt-level = 2
|
||
[profile.dev.package.symphonia-codec-vorbis]
|
||
opt-level = 2
|
||
[profile.dev.package.symphonia-codec-aac]
|
||
opt-level = 2
|
||
[profile.dev.package.symphonia-format-isomp4]
|
||
opt-level = 2
|
||
[profile.dev.package.cpal]
|
||
opt-level = 2
|
||
|
||
# GIF export: NeuQuant palette quantization is tight numeric loops that are punishingly slow
|
||
# unoptimized (10–30× in debug). Optimize the encoder crates even in dev builds.
|
||
[profile.dev.package.gif]
|
||
opt-level = 3
|
||
[profile.dev.package.color_quant]
|
||
opt-level = 3
|
||
[profile.dev.package.weezl]
|
||
opt-level = 3
|
||
|
||
# Use local egui fork with ibus/Wayland text input fix
|
||
[patch.crates-io]
|
||
egui = { path = "../../egui-fork/crates/egui" }
|
||
eframe = { path = "../../egui-fork/crates/eframe" }
|
||
egui_extras = { path = "../../egui-fork/crates/egui_extras" }
|
||
egui-wgpu = { path = "../../egui-fork/crates/egui-wgpu" }
|
||
egui-winit = { path = "../../egui-fork/crates/egui-winit" }
|
||
epaint = { path = "../../egui-fork/crates/epaint" }
|
||
ecolor = { path = "../../egui-fork/crates/ecolor" }
|
||
emath = { path = "../../egui-fork/crates/emath" }
|