S2 — Zero-copy on Adreno and Mali, and it can invalidate the architecture #47

Open
opened 2026-09-05 16:20:22 +00:00 by dtourolle · 2 comments
Owner

Spike S2 — zero-copy presentation on Adreno and Mali. Never run, and it is one of the three spikes §9 says can invalidate the architecture.

Why it is the sharpest of the three

S1 (Slint + wgpu zero-copy on Linux) ran and passed — that is the evidence ARCH §6.1's hard constraint rests on. S2 asks the same question of the two GPU vendors that actually ship in Android tablets, and it has not been asked.

TD-1 is the warning shot: the Android develop view already reads the frame back through the CPU, because zero-copy there needs wgpu's Vulkan swapchain and that tears a portrait window on a tablet whose panel is mounted landscape. That is a known failure on one device. S2 is what would say whether it generalises.

Blocked on

Hardware. The manifest notes that no emulator represents Adreno or Mali, so this needs real devices — and #30 (NFR-COMPAT-1) has to name a reference device from a second GPU vendor before this spike knows what to run on.

What a failure would mean

If zero-copy cannot be had on either vendor, ARCH §6.1's "processed pixels shall reach the display without a CPU round-trip" is not a constraint on Android but an aspiration, and TD-1 stops being debt and becomes the design. That is a large enough consequence to be worth knowing early.

See docs/outstanding.md §10 and docs/technical-debt.md TD-1.

**Spike S2 — zero-copy presentation on Adreno and Mali.** Never run, and it is **one of the three spikes §9 says can invalidate the architecture**. ## Why it is the sharpest of the three S1 (Slint + wgpu zero-copy on Linux) ran and passed — that is the evidence ARCH §6.1's hard constraint rests on. S2 asks the same question of the two GPU vendors that actually ship in Android tablets, and it has not been asked. TD-1 is the warning shot: the Android develop view already reads the frame back through the CPU, because zero-copy there needs wgpu's Vulkan swapchain and that tears a portrait window on a tablet whose panel is mounted landscape. That is a *known* failure on one device. S2 is what would say whether it generalises. ## Blocked on **Hardware.** The manifest notes that no emulator represents Adreno or Mali, so this needs real devices — and #30 (NFR-COMPAT-1) has to name a reference device from a second GPU vendor before this spike knows what to run on. ## What a failure would mean If zero-copy cannot be had on either vendor, ARCH §6.1's "processed pixels shall reach the display without a CPU round-trip" is not a constraint on Android but an aspiration, and TD-1 stops being debt and becomes the design. That is a large enough consequence to be worth knowing early. See `docs/outstanding.md` §10 and `docs/technical-debt.md` TD-1.
dtourolle added the size:Mandroidgpuspikeblocked labels 2026-09-05 16:20:22 +00:00
Author
Owner

Blocked on #30 — needs a named reference device from a second GPU vendor.
If it fails, TD-1 stops being debt and becomes the design.

**Blocked on** #30 — needs a named reference device from a second GPU vendor. If it fails, TD-1 stops being debt and becomes the design.
Author
Owner

Progress (v0.15.0/v0.16.0): the Adreno half now runs zero-copy. TD-1 was paid off in 0.15.0 (dc9da52, 4b4c9e2, a8043e6): wgpu-hal and Slint's Skia renderer are patched to pre-rotate the Vulkan swapchain, and Android's develop frame reaches the compositor as a texture, as on desktop. On the reference tablet (HONOR ROD2-W09, Adreno) it was checked by eye in portrait, landscape and reverse landscape: no tearing. No composition or bufferTransform measurements were taken. The Mali half is still unmeasured, because there is no Mali device; that keeps this open.

Progress (v0.15.0/v0.16.0): the Adreno half now runs zero-copy. TD-1 was paid off in 0.15.0 (dc9da52, 4b4c9e2, a8043e6): wgpu-hal and Slint's Skia renderer are patched to pre-rotate the Vulkan swapchain, and Android's develop frame reaches the compositor as a texture, as on desktop. On the reference tablet (HONOR ROD2-W09, Adreno) it was checked by eye in portrait, landscape and reverse landscape: no tearing. No composition or bufferTransform measurements were taken. The Mali half is still unmeasured, because there is no Mali device; that keeps this open.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dtourolle/DarkRoom#47