Files
panvk-bifrost/mesa-panvk-bifrost/phase0_findings_iter7.md
T
marfrit a4e7d8ab90 initial seed: retrofit campaign lineage from local working trees
panvk-bifrost campaigns (r1..r4 Vulkan compositor + r5.video1 Vulkan
video decode) shipped before this repo existed; the deliverable
patches live in marfrit-packages, but the reasoning chain, phase docs,
and source-state evidence lived only in local working trees on the
development host.

This retrofit imports:
- mesa-panvk-bifrost/   — r1..r4 era phase docs (iter1..iter18)
                          (libmali stub blobs at iter18/blob/ excluded
                          — 109MB of RE artifacts replaced with a README
                          pointer)
- mesa-panvk-bifrost-video/ — sibling campaign phase docs + probe
- evidence/             — frozen .tgz source snapshots at each milestone
                          (basis for the 0005 patch diff generation)

Future iterations should branch off here from day one, so each iter is
a commit rather than a snapshot. See [[feedback-session-local-process-pins]]
for the process drift this retrofit closes.

Total: 1.9 MB across 124 files.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 05:25:37 +02:00

2.9 KiB
Raw Blame History

Phase 0 — substrate for iter7

Opened 2026-05-19 after iter6 close GREEN.

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

iter16 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