mesa-panvk-bifrost: r3 -> r4 — iter17 XFB primitive decomposition #70

Merged
marfrit merged 1 commits from claude-noether/marfrit-packages:noether/mesa-panvk-bifrost-r4-iter17-xfb-decomp into main 2026-05-21 12:18:23 +00:00
Owner

iter17 closes the 162 winding_* CTS failures from iter15's baseline by
replacing the upstream pan_nir_lower_xfb call with a panvk-specific NIR
pass (panvk_per_arch(nir_lower_xfb)) that handles per-primitive
decomposition for non-LIST topologies (LINE_STRIP, TRIANGLE_STRIP,
TRIANGLE_FAN, and the four _WITH_ADJACENCY variants).

Topology + per-instance output vertex count are threaded as new sysvals
(vs.xfb_topology + vs.xfb_output_count) so the NIR pass can dispatch
per-topology at runtime without compiling 7+ shader variants.

dEQP-VK.transform_feedback.simple.* result (133596 cases total):
iter15 baseline -> iter17
Pass: 796 958 (+162)
Fail: 243 81 (-162; resume_* by-design only)
NotSupported: 132551 132551
Fatal-skip: 6 6
Pass rate of runnable: 76.2% -> 91.7% (+15.5pp)

100% of the iter15 winding-fail cluster closed. The remaining 81 fails
are all resume_* (pause/resume XFB, by design — we advertise
transformFeedbackDraw=false).

Second-model review (janet) produced 3 findings; Findings 1+2 were
already fixed in the in-tree applied state (stale applied_state/ snapshot
read by reviewer), Finding 3 (degenerate N underflow on N<2) addressed
by gating non-LIST emission on output_count > 0 predicate.

Co-Authored-By: Claude Opus 4.7 noreply@anthropic.com

iter17 closes the 162 winding_* CTS failures from iter15's baseline by replacing the upstream pan_nir_lower_xfb call with a panvk-specific NIR pass (panvk_per_arch(nir_lower_xfb)) that handles per-primitive decomposition for non-LIST topologies (LINE_STRIP, TRIANGLE_STRIP, TRIANGLE_FAN, and the four _WITH_ADJACENCY variants). Topology + per-instance output vertex count are threaded as new sysvals (vs.xfb_topology + vs.xfb_output_count) so the NIR pass can dispatch per-topology at runtime without compiling 7+ shader variants. dEQP-VK.transform_feedback.simple.* result (133596 cases total): iter15 baseline -> iter17 Pass: 796 958 (+162) Fail: 243 81 (-162; resume_* by-design only) NotSupported: 132551 132551 Fatal-skip: 6 6 Pass rate of runnable: 76.2% -> 91.7% (+15.5pp) 100% of the iter15 winding-fail cluster closed. The remaining 81 fails are all resume_* (pause/resume XFB, by design — we advertise transformFeedbackDraw=false). Second-model review (janet) produced 3 findings; Findings 1+2 were already fixed in the in-tree applied state (stale applied_state/ snapshot read by reviewer), Finding 3 (degenerate N underflow on N<2) addressed by gating non-LIST emission on `output_count > 0` predicate. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
marfrit added 1 commit 2026-05-21 12:18:05 +00:00
iter17 closes the 162 winding_* CTS failures from iter15's baseline by
replacing the upstream pan_nir_lower_xfb call with a panvk-specific NIR
pass (panvk_per_arch(nir_lower_xfb)) that handles per-primitive
decomposition for non-LIST topologies (LINE_STRIP, TRIANGLE_STRIP,
TRIANGLE_FAN, and the four _WITH_ADJACENCY variants).

Topology + per-instance output vertex count are threaded as new sysvals
(vs.xfb_topology + vs.xfb_output_count) so the NIR pass can dispatch
per-topology at runtime without compiling 7+ shader variants.

dEQP-VK.transform_feedback.simple.* result (133596 cases total):
                  iter15 baseline  ->  iter17
  Pass:             796               958   (+162)
  Fail:             243               81    (-162; resume_* by-design only)
  NotSupported:     132551            132551
  Fatal-skip:       6                 6
  Pass rate of runnable: 76.2% -> 91.7% (+15.5pp)

100% of the iter15 winding-fail cluster closed. The remaining 81 fails
are all resume_* (pause/resume XFB, by design — we advertise
transformFeedbackDraw=false).

Second-model review (janet) produced 3 findings; Findings 1+2 were
already fixed in the in-tree applied state (stale applied_state/ snapshot
read by reviewer), Finding 3 (degenerate N underflow on N<2) addressed
by gating non-LIST emission on `output_count > 0` predicate.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
marfrit merged commit a9f1b833b9 into main 2026-05-21 12:18:23 +00:00
marfrit deleted branch noether/mesa-panvk-bifrost-r4-iter17-xfb-decomp 2026-05-21 12:18:23 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: marfrit/marfrit-packages#70