# Phase 0 — substrate for iter7 Opened **2026-05-19** after [iter6 close GREEN](phase8_iteration6_close.md). ## Locked research question — iter7 > **Run stock `vkcube --c 120 --wsi wayland` (Vulkan reference rotating-cube demo) on ohm against the live Plasma/Wayland session, with `PAN_I_WANT_A_BROKEN_VULKAN_DRIVER=1`. Verify:** > > - Process exits 0 > - 120 frames rendered (vkcube reports if --c was honored) > - No GPU faults in dmesg during the run > - No kernel-side panfrost errors > - Operator may visually confirm correct cube rendering (PineTab2 has its own display) ## Why this shape iter1–6 closed all the synthetic-probe paths. iter7 is the **first real off-the-shelf application**. New surface area: - **WSI / swapchain (`VK_KHR_swapchain`)** — first time we use the swapchain path. - **`VK_KHR_wayland_surface`** — first time we connect to a live Wayland compositor. - **Continuous frame submission** — many `vkQueueSubmit` calls in sequence, with synchronization across frames. - **Acquire/present cycle** — vkAcquireNextImageKHR + vkQueuePresentKHR per frame. - **vkcube's own state** — rotation matrix per frame, textured cube vertices, depth buffer, all bundled together. If vkcube works end-to-end, that's massive validation toward TuxRacer-via-Zink. If it crashes, we have a known-reference reproducer + a real bug to characterize. ## Session info (gathered) - Active user: `mfritsche` (UID 1001) on `tty1` - `XDG_RUNTIME_DIR=/run/user/1001` - `WAYLAND_DISPLAY=wayland-0` (socket present at `/run/user/1001/wayland-0`) - vkcube version: from `vulkan-tools 1.4.350.0-1` package ## Hypothesis space 1. **`VK_KHR_wayland_surface` plumbing.** First-ever PanVk-Bifrost test of Wayland surface creation. 2. **Swapchain creation.** PanVk's swapchain path may have stale or untested code on v6/v7 — particularly modifier-aware swapchain images. 3. **Present queue** — vulkaninfo's "present support = false" on the only queue family (no-surface query) may turn into a runtime issue when a real surface exists. 4. **Continuous frame submission** — sync2 / timeline semaphore plumbing across frames. 5. **vkcube's specific draw shape** — textured cube uses MVP UBO, vertex buffer with positions, normals, texcoords; texture upload; depth test. All things proven in isolation, but combined here. ## In-scope (LOCKED 2026-05-19 for iter7) - 120 frames of vkcube via Wayland WSI on ohm. - Stock binary (no modifications). - Whatever GPU PanVk picks (single Mali on ohm). ## Out-of-scope (LOCKED 2026-05-19 for iter7) - VK_KHR_xcb_surface / VK_KHR_xlib_surface paths. - VK_KHR_display direct-mode (would conflict with Plasma session). - VK_EXT_headless_surface (not strictly needed if Wayland works). - vkmark / Zink (iter8+). - vkcube subtests (--use_staging variations). ## Reference - Prior closes: [iter1](phase8_iteration1_close.md) – [iter6](phase8_iteration6_close.md).