https://www.reddit.com/r/emacs/comments/1qyg0rl/ann_neomacs_use_rust_to_rewrite_the_emacs_display/
┌─────────────────────────────────────────────────────────────────┐
│ Emacs Core (C/Lisp) │
│ neomacsterm.c ──── neomacs_display.h (C FFI) ──── neomacs-win.el │
└──────────────────────────┬──────────────────────────────────────┘
│ C FFI (ffi.rs)
┌──────────────────────────▼──────────────────────────────────────┐
│ Rust Display Engine (neomacs-display) │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Render Thread │ │
│ │ render_thread.rs — winit event loop, frame dispatch │ │
│ │ thread_comm.rs — command/event channels │ │
│ └──────────────────────────┬───────────────────────────────┘ │
│ │ │
│ ┌───────────┐ ┌───────────▼──────────┐ ┌─────────────────┐ │
│ │ Core │ │ wgpu Backend │ │ Media Backends │ │
│ │ │ │ │ │ │ │
│ │ scene │ │ renderer (145KB) │ │ video_cache │ │
│ │ animation │ │ glyph_atlas │ │ GStreamer │ │
│ │ cursor │ │ image_cache │ │ VA-API │ │
│ │ scroll │ │ vulkan_dmabuf │ │ DMA-BUF │ │
│ │ buffer │ │ 4 WGSL shaders │ │ │ │
│ │ transition│ │ │ │ webkit_cache │ │
│ │ faces │ │ cosmic-text │ │ WPE WebKit │ │
│ │ grid │ │ text shaping │ │ │ │
│ └───────────┘ └──────────┬───────────┘ └─────────────────┘ │
│ │ │
│ ┌──────────▼───────────┐ │
│ │ winit (Windowing) │ │
│ └──────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
│
┌────────────┼────────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ Vulkan │ │ Metal │ │DX12/GL │
│ (Linux) │ │ (macOS) │ │(Windows)│
└─────────┘ └─────────┘ └─────────┘