feat(A.1 #1): surface active compute device + runtime-warning banner
Extends get_runtime_capabilities() with three new fields:
- activeComputeDevice: {kind, label, reason} — "GPU (Vulkan)" on
the happy path, "CPU (fallback)" with a reason when the Vulkan
loader is absent at runtime. libloading::Library::new probes
libvulkan.so.1 / vulkan-1.dll / libMoltenVK.dylib per target OS.
- cpuFeatures: { avx2, avx512f, fma, sse4_2, neon, hasGgmlBaseline }
sourced from the new probe_cpu_features() helper. hasGgmlBaseline
is the one flag the Settings banner actually reads.
- parallelModeAvailable: placeholder false until Phase A.4 lands
the real GPU VRAM probe + GpuGuard semaphore permit logic.
Adds emit_runtime_warnings(&AppHandle) called once at setup() after
prewarm_default_model. Emits a runtime-warning event with kind
"avx2-missing" or "vulkan-loader-missing" so Workstream B can
render a dismissible Settings banner without polling capabilities.
Contract matches docs/whisper-ecosystem/workstream-A.md §Item #1 for
Workstream B to consume without waiting for Phase A.2 to land the
real whisper_print_system_info bridge.
Co-authored-by: jars <jakejars@users.noreply.github.com>
This commit is contained in:
@@ -39,6 +39,12 @@ serde_json = "1"
|
||||
tokio = { version = "1", features = ["rt", "sync"] }
|
||||
arboard = "3.6.1"
|
||||
|
||||
# Runtime shared-library probe for the Vulkan loader (active compute
|
||||
# device detection, brief item #1). We do not call any vulkan symbols
|
||||
# — we only need to answer "is libvulkan resolvable from the loader's
|
||||
# default search path right now?".
|
||||
libloading = "0.8"
|
||||
|
||||
# SqlitePool is named directly from src-tauri/src/lib.rs (the AppState
|
||||
# stores it). Must be unconditional, not Linux-only — naming a type from
|
||||
# a transitive dep requires the dep be listed here too.
|
||||
|
||||
Reference in New Issue
Block a user