forked from marfrit/panvk-bifrost
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>
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
iter6 depth-tested multi-draw 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/iter6/{probe_depth.c, .vert, .frag, Makefile}
|
||||
Deployed to: /tmp/panvk-iter6/
|
||||
|
||||
===== RUN #1 (baseline) =====
|
||||
[step] vkCreateInstance
|
||||
WARNING: panvk is not a conformant Vulkan implementation, testing use only.
|
||||
[info] gpu='Mali-G52 r1 MC1'
|
||||
[info] D32_SFLOAT optimalTilingFeatures=0xd601
|
||||
[step] vkCreateDevice
|
||||
[step] vkCreateBuffer vertex buffer
|
||||
[step] vkCreateImage color attachment
|
||||
[info] color image memReq size=69632 align=4096
|
||||
[step] vkCreateImage depth attachment (D32_SFLOAT)
|
||||
[info] depth image memReq size=69632 align=4096
|
||||
[step] vkCreatePipelineLayout + shaders
|
||||
[step] vkCreateGraphicsPipelines
|
||||
[step] record cmd buffer (2 draws with depth)
|
||||
[step] submit + wait
|
||||
[step] verify
|
||||
[chk] ( 0, 0) TL expect=clear got=0x00000000 clear-ok
|
||||
[chk] (127,127) BR expect=clear got=0x00000000 clear-ok
|
||||
[chk] ( 64, 64) center expect=green got=0xff00ff00 green-ok
|
||||
[chk] ( 64, 30) above-B expect=red got=0xff0000ff red-ok
|
||||
[chk] ( 64,100) below-B expect=red got=0xff0000ff red-ok
|
||||
[info] coverage: red=3850 green=1352 clear=11182 other=0 (total 16384)
|
||||
[PASS] depth-tested multi-draw works.
|
||||
|
||||
===== KEY OBSERVATIONS =====
|
||||
|
||||
1. D32_SFLOAT optimalTilingFeatures = 0xd601:
|
||||
bit 0 (0x0001) SAMPLED_IMAGE
|
||||
bit 9 (0x0200) DEPTH_STENCIL_ATTACHMENT ✓
|
||||
bit 10 (0x0400) BLIT_SRC
|
||||
bit 12 (0x1000) SAMPLED_IMAGE_FILTER_LINEAR
|
||||
bit 14 (0x4000) TRANSFER_SRC
|
||||
bit 15 (0x8000) TRANSFER_DST
|
||||
|
||||
2. Memory:
|
||||
color image memReq = 69632 (17 pages) — 16 raw + 1 aux
|
||||
depth image memReq = 69632 (17 pages) — same overhead for D32
|
||||
128*128*4 = 65536 = 16 pages raw pixel data
|
||||
|
||||
3. Coverage accounting:
|
||||
Triangle A (red, large): NDC area 1.28 / 4 = 32% = ~5243 pixels expected
|
||||
Triangle B (green, small, inside A): NDC area 0.32 / 4 = 8% = ~1310 pixels expected
|
||||
Got: red=3850, green=1352
|
||||
Sum non-clear: 5202 ≈ A's total area (B occludes part of A in depth)
|
||||
other=0 — no banding, no z-fighting, no interpolation artifacts.
|
||||
|
||||
4. Depth test correct:
|
||||
Pixel (64, 64) is inside both triangles. B's z=0.3 < A's z=0.7,
|
||||
LESS comparison selects B → green wins. Confirmed at (64, 64).
|
||||
|
||||
5. No GPU faults, no validation warnings, deterministic across reruns.
|
||||
Reference in New Issue
Block a user