Skip to content

M2: live Android emulator embedding (gRPC → wgpu VideoFrame) - #17

Merged
dev-josias merged 3 commits into
mainfrom
feat/wgpu-emulator-m2
Jun 30, 2026
Merged

M2: live Android emulator embedding (gRPC → wgpu VideoFrame)#17
dev-josias merged 3 commits into
mainfrom
feat/wgpu-emulator-m2

Conversation

@dev-josias

Copy link
Copy Markdown
Contributor

Lands M2 — the live Android-emulator stream rendered through the cross-platform wgpu VideoFrame primitive. Verified on a real emulator (Pixel_9a): live home screen, correct colors/orientation, aspect-preserved.

What's here

  • emulator_stream::start_emulator_stream — background tokio gRPC stream → decoded frames → frame_signal on the UI thread (floem update_signal_from_channel bridge). Portable, no native code.
  • floem re-pinned to e07fcd5 (bridgerust/floem@feat/external-texture = upstream-latest + M1 atlas-bypassing primitive + aspect-ratio letterbox).
  • Verification examples: live_emulator (GUI, renders the live device) and grab_frame (headless single-frame capture).

Verified

  • gRPC connect (no auth) → get_screenshot/stream → decode → RGBA: ✅ (live frames)
  • RGBA → wgpu texture quad render: ✅ (M1 + on-screen, correct aspect)

Not in this PR (next)

  • M3 input: pointer/keyboard → emulator gRPC (currently view-only).
  • In-panel integration: the emulator panel is still #[cfg(target_os="macos")]; surfacing this on Windows/Linux means un-gating it.

Sole author: dev-josias.

- emulator_stream::start_emulator_stream: background tokio gRPC stream →
  frame_signal on the UI thread via floem's update_signal_from_channel bridge
  (portable; no native code).
- examples/live_emulator: renders the live emulator via the wgpu VideoFrame
  primitive, for end-to-end verification against a running emulator.

Panel integration (un-gating the macOS-only emulator panel for Win/Linux)
is the remaining step; this verifies the portable pipeline first.
- Re-pin floem 37f48b8 -> e07fcd5 (adds aspect-preserving letterbox to the
  external-texture primitive); drop the dev path-patch.
- live_emulator example: portrait window (380x820).
- add grab_frame example (headless single-frame gRPC capture for verification).
@dev-josias
dev-josias merged commit 1b6202f into main Jun 30, 2026
7 checks passed
@dev-josias
dev-josias deleted the feat/wgpu-emulator-m2 branch June 30, 2026 13:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant