Deferred lighting: move the remaining uber-kernel cases to the split path (debug views, snapshots, allocation failure) #799

Open
opened 2026-10-16 13:28:03 +00:00 by sky_line · 0 comments
Owner

The split deferred lighting (shadow resolve + reflection resolve + combine; RenderVKDeferredSplit, now the default, auto A/B removed in 6b27a9528f) is ~20-25% faster on g_defer_light than the monolithic uber kernel (RTX 5090: 1.49-1.64 ms vs 1.95-2.06 ms) and is the path we're optimizing (half-res reflections, shadow-visibility reuse, per-pass tuning). Goal: move every remaining case onto the split path, so the uber kernel can be retired (or kept strictly as a debug A/B).

Cases that still run the uber kernel today (indra/newview/vkgfx/llcleanrenderervk.cpp deferSplitFrame / recordDeferredLighting):

  • Lit debug views and RenderVKLitDebugMask cost switches. The debug twin (mDeferPipeDbg, kDebugViews = true) exists only for uber. Needs split debug twins (shadow / reflect / combine with kDebugViews), or the debug views implemented per pass.
  • Offscreen snapshots (mOffscreen): the split intermediates aren't allocated at the snapshot's size. Needs per-size intermediates for the offscreen render (or aliased / transient ones).
  • VRAM refused the intermediates (#697 allocation failure): uber lights those frames until a retry succeeds (backoff 1-30 s). Decide the policy: the owner doesn't want uber (slow on Pascal) forced in. Options are to forward-light those frames, shrink the intermediates (half-res reflections) so this practically never happens, or allocate them up front with the G-buffer.
  • A failed split pipeline compile: uber for the session (with a WARN). With uber retired, this falls back to forward lighting like a failed deferred compile.
  • RenderVKDeferredSplit 0: debug A/B only; can stay as long as uber exists.

Done when: only RenderVKDeferredSplit 0 (if kept) runs uber, and the debug views, snapshots and allocation-failure handling all work on the split path.

The split deferred lighting (shadow resolve + reflection resolve + combine; `RenderVKDeferredSplit`, now the default, auto A/B removed in 6b27a9528f) is ~20-25% faster on `g_defer_light` than the monolithic uber kernel (RTX 5090: 1.49-1.64 ms vs 1.95-2.06 ms) and is the path we're optimizing (half-res reflections, shadow-visibility reuse, per-pass tuning). **Goal: move every remaining case onto the split path, so the uber kernel can be retired (or kept strictly as a debug A/B).** Cases that still run the uber kernel today (`indra/newview/vkgfx/llcleanrenderervk.cpp` `deferSplitFrame` / `recordDeferredLighting`): - **Lit debug views and `RenderVKLitDebugMask` cost switches.** The debug twin (`mDeferPipeDbg`, kDebugViews = true) exists only for uber. Needs split debug twins (shadow / reflect / combine with kDebugViews), or the debug views implemented per pass. - **Offscreen snapshots** (`mOffscreen`): the split intermediates aren't allocated at the snapshot's size. Needs per-size intermediates for the offscreen render (or aliased / transient ones). - **VRAM refused the intermediates (#697 allocation failure):** uber lights those frames until a retry succeeds (backoff 1-30 s). Decide the policy: the owner doesn't want uber (slow on Pascal) forced in. Options are to forward-light those frames, shrink the intermediates (half-res reflections) so this practically never happens, or allocate them up front with the G-buffer. - **A failed split pipeline compile:** uber for the session (with a WARN). With uber retired, this falls back to forward lighting like a failed deferred compile. - **`RenderVKDeferredSplit 0`:** debug A/B only; can stay as long as uber exists. Done when: only `RenderVKDeferredSplit 0` (if kept) runs uber, and the debug views, snapshots and allocation-failure handling all work on the split path.
sky_line added this to the Slipstream project 2026-10-16 13:28:03 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#799
No description provided.