a4e7d8ab90
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>
74 lines
2.8 KiB
Plaintext
74 lines
2.8 KiB
Plaintext
iter5 vertex+UBO probe — captured 2026-05-19 on ohm
|
|
(PineTab2 v2.0, RK3566, Mali-G52 r1 MC1, Mesa 26.0.6, kernel 7.0.0-danctnix1-6)
|
|
|
|
Source: panvk-bifrost/iter5/{probe_vbo_ubo.c, .vert, .frag, Makefile}
|
|
Deployed to: /tmp/panvk-iter5/
|
|
|
|
===== RUN #1 (baseline) =====
|
|
[step] vkCreateInstance
|
|
WARNING: panvk is not a conformant Vulkan implementation, testing use only.
|
|
[info] gpu='Mali-G52 r1 MC1'
|
|
[step] vkCreateDevice
|
|
[step] vkCreateBuffer vertex buffer
|
|
[step] vkCreateBuffer UBO
|
|
[step] vkCreateDescriptorSetLayout (UBO @ vertex)
|
|
[step] vkCreatePipelineLayout + shaders
|
|
[step] vkCreateGraphicsPipelines
|
|
[step] record cmd buffer
|
|
[step] submit + wait
|
|
[step] verify
|
|
[info] center (32,28) = 0xff5d564c (R=4c G=56 B=5d)
|
|
[info] TL=0x00000000 TR=0x00000000
|
|
[info] covered (non-clear) pixels = 338 / 4096
|
|
[PASS]
|
|
|
|
===== RUN #2 (VK_LAYER_KHRONOS_validation) =====
|
|
[no validation warnings]
|
|
covered = 338 [PASS]
|
|
|
|
===== STABILITY: 5 reruns =====
|
|
covered = 338 [PASS] x5
|
|
|
|
7/7 PASS after coverage-range fix.
|
|
|
|
===== INITIAL FAILURE NOTE =====
|
|
|
|
First run reported "coverage out of range: 338 (want 800..1600)" — that was a
|
|
verification-side arithmetic error on my (claude-noether's) part, not a driver
|
|
issue. Triangle area = 0.5 * 0.8 * 0.8 = 0.32 sq units in NDC; viewport area
|
|
is 4 sq units, so 8% coverage = ~328 pixels. The driver produced exactly 338,
|
|
which matches the expected coverage within edge-rule tolerance.
|
|
|
|
Substantive PASS criteria (interpolated center color, clear corners) were
|
|
satisfied on the first run; only the loose coverage-range check needed
|
|
calibration. Fixed in-tree at `iter5/probe_vbo_ubo.c`.
|
|
|
|
===== KEY OBSERVATIONS =====
|
|
|
|
1. Vertex input binding works:
|
|
binding 0: stride 32, INPUT_RATE_VERTEX
|
|
attribute 0: R32G32_SFLOAT, offset 0 (pos)
|
|
attribute 1: R32G32B32_SFLOAT, offset 16 (color)
|
|
GPU correctly fetched both attributes from the bound vertex buffer.
|
|
|
|
2. UBO binding at vertex stage works:
|
|
mat4 transform with scale 0.8 in x/y was correctly applied.
|
|
Triangle vertices at NDC (-0.5,-0.5)/(0.5,-0.5)/(0,0.5) scaled to
|
|
(-0.4,-0.4)/(0.4,-0.4)/(0,0.4) — visible from the 338-pixel coverage
|
|
(matches 0.8-scaled area, NOT unscaled 0.5-scaled area which would be
|
|
~500 pixels).
|
|
|
|
3. Varying interpolation works:
|
|
center pixel at (32, 28) has R=0x4c G=0x56 B=0x5d. All three vertex
|
|
colors (red/green/blue) contributed via barycentric interpolation —
|
|
none of the channels are zero, none are saturated, all are in a
|
|
reasonable middle-of-range value.
|
|
|
|
4. Bifrost vertex-side descriptor model handles UBO + vertex-stage shader
|
|
correctly (the headline hypothesis for this iter — that vertex-stage
|
|
descriptor binding would fail on Bifrost — did not materialize).
|
|
|
|
5. Deterministic across runs: identical 338 covered pixels each time.
|
|
|
|
No GPU faults, no validation warnings, all 7 runs identical.
|