Skip to content

feat(weave/android): hand the v4 2D overlay to the DP (2D under the lens) - #1845

Merged
dfattal merged 1 commit into
mainfrom
feat/android-overlay-2d-dp
Oct 7, 2026
Merged

dfattal merged 1 commit into
mainfrom
feat/android-overlay-2d-dp

Conversation

@dfattal

@dfattal dfattal commented Oct 7, 2026 •

Copy link
Copy Markdown
Collaborator

Builds on #1835 (per-submit overlay, XR_DXR_weave v18), now on main.

Why

On Android the browser's v4 2D overlay is blended after the weave, so 2D text aliases and shimmers per eye wherever the lens is on. The Leia CNSDK display processor can now band-limit the layer to the lens and composite it inside the weave (LeiaInc/CNSDK#746, CNSDK v0.10.75). This is the Android twin of the Linux caller in 94fc022.

What

  • comp_multi_weave_android.c offers the overlay to the DP's Vulkan set_overlay_2d slot (with the v15 filter strength) before the self-submit split. A self-submitting DP (CNSDK) samples the layer inside process_atlas, so the overlay barrier has to come before that point.
  • The offer is gated on all of:
  • When the DP accepts, the post-weave premultiplied-over blend is skipped. When it declines, or the slot is absent, behaviour is unchanged.
  • The XR_DXR_weave v14/v15 hints (layer unchanged, filter strength) were already on the wire and were dropped on Android. They are now forwarded through comp_multi_weave_android_set_overlay_hints. CNSDK's cached prefilter reuses its caches on v14 "unchanged" frames.
  • A WARN fires once per change in who composites the overlay (DP or runtime).

Verified on the NP02J

Setup: runtime built from this branch, leia-plugin feat/android-overlay-2d, CNSDK device-service 0.10.74-746 build.

  • The browser overlay (2560x1540) goes from "declined on frame 1" (by design) to "composited by the DP inside the weave".
  • No errors.

Weave wall time per frame, 300-frame averages, whole-page mode:

Page Runtime blend DP composite
Still page 6.0 ms 6.3 ms (caches reused 3525 frames)
Repaints every frame ~8.6 ms 9.4 ms

Release coupling

Shipping this together needs:

  • the runtime's CNSDK_TAG moved to v0.10.75;
  • versions.json leia_plugin pinned to the plug-in release that implements the slot (leia-plugin feat/android-overlay-2d, CNSDK v0.10.75).

Those bumps belong in the release PR, after the plug-in release exists.

🤖 Generated with Claude Code

@dfattal
dfattal requested a review from a team as a code owner October 7, 2026 07:24
@dfattal
dfattal force-pushed the fix/android-weave-overlay-per-submit branch from 875b383 to 97f9ac9 Compare October 7, 2026 07:33
Base automatically changed from fix/android-weave-overlay-per-submit to main October 7, 2026 07:45
…ens)

This is the Android twin of the Linux caller in 94fc022.

Before the self-submit split, the weave now offers the browser's
window-sized 2D overlay to the DP's Vulkan set_overlay_2d slot, together
with the v15 filter strength. It moves the overlay barrier ahead of the
split, so a self-submitting DP (Leia CNSDK) can sample the layer during
process_atlas. When the DP accepts, the post-weave premultiplied-over blend
is skipped. When it declines, or the slot is absent, behaviour is unchanged.

The layer is offered only when it is exactly the process_atlas target size.
The satellite physical-rect and v6 N-view targets are not.

The XR_DXR_weave v14/v15 hints (layer unchanged, filter strength) were
already on the wire. Until now they were dropped on Android; they are now
forwarded through the new comp_multi_weave_android_set_overlay_hints.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@dfattal
dfattal force-pushed the feat/android-overlay-2d-dp branch from 76a5798 to 0c6869f Compare October 7, 2026 07:45
@dfattal
dfattal merged commit b4e35e7 into main Oct 7, 2026
46 of 71 checks passed
@dfattal
dfattal deleted the feat/android-overlay-2d-dp branch October 7, 2026 09:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant