Skip to content

v0.1.5

Choose a tag to compare

@leftger leftger released this 30 Jul 18:35
· 155 commits to master since this release

Summary

Runtime-agnostic async present APIs and optional Embassy integration for overlapping CPU render with DMA transfer.

crates.io: https://crates.io/crates/embedded-gui/0.1.5

Highlights

Async present stack (no executor required)

  • CompletionSlot — ISR-safe DMA completion flag with waker support
  • WaitTransfer / WaitTransferFuture — wire display DMA tokens to async wait
  • SwapChain — present_async, present_region_async, wait_for_vsync_async, and non-blocking try_present
  • DisplayBackend / AsyncDmaTransfer — backend trait extensions for async DMA
  • GUI helpers — try_present_dirty, present_dirty_async, try_present_frame for dirty-region present

Optional Embassy feature

  • Enable with embassy feature (pulls in embassy-time + embassy-sync)
  • EmbassyWaitTransfer and FrameClock for Embassy-based frame loops
  • Examples: completion_swapchain_sim, embassy_gui_frame

Other changes since 0.1.4

  • Gate full widget catalog behind rich-widgets feature; keep essential widgets always on
  • Sweeping-arc perf: skip trig at cardinal angles; cross-product sector test
  • Context module refactor and expanded test coverage

Features

Feature Default Description
embassy off Embassy wakers + FrameClock
embassy-time off Time types for Embassy integration
triple-buffering off Triple-buffered swapchain APIs

Upgrade

embedded-gui = "0.1.5"

Rasterization stays synchronous; async is for present/wait/DMA overlap only — see README for RTIC/Embassy patterns.