Part of #1031 · ADR-036 D2. The spike that turns Architecture A from "feasible" into "shipping".
Architecture A puts the compositor + vendor DP + one vendor core in the app process — the
Windows shape and the Khronos Android loader's native shape. Its blockers are packaging, not
rendering:
XR_DXR_android_surface_binding for real — the app passes its own Surface/ANativeWindow;
retire the runtime-spawned SurfaceView (oxr_session_gfx_vk_native.c:274-300, the
"single-app POC") and keep it only as the _hosted fallback. No spec file exists yet.
- Async main-thread DP creation — CNSDK needs the main Looper pumping (
LeiaSDK.java:376),
so DP creation marshals onto the app main thread via aux_android/android_main_thread and
must be non-blocking when xrCreateSession itself runs on the main thread; the session
reports XR_SESSION_STATE_READY once the DP is up.
- Plug-in-loader host classloader —
target_plugin_loader.c's Android branch exposes a
runtime-APK Context/classloader to plug-ins (mirroring loadClassFromRuntimeApk,
ipc_client_android.cpp:54-58) so vendor Java glue resolves without the app bundling it.
displayxr AAR manifest carries the single
<queries><intent><action android:name="org.displayxr.action.VENDOR_DISPLAY_SERVICE"/></intent></queries>
(+ the OpenXR broker provider). Depends on the vendor intent-filter ask (L7) in the vendor
tracker issue. Also audit comp_vk_native for per-process statics of the
comp_d3d11_target.cpp kind.
Done-when: one cube fully in-process with the vendor DP, then two apps concurrently; measure the
hop saved vs PoC-0.
Part of #1031 · ADR-036 D2. The spike that turns Architecture A from "feasible" into "shipping".
Architecture A puts the compositor + vendor DP + one vendor core in the app process — the
Windows shape and the Khronos Android loader's native shape. Its blockers are packaging, not
rendering:
XR_DXR_android_surface_bindingfor real — the app passes its own Surface/ANativeWindow;retire the runtime-spawned SurfaceView (
oxr_session_gfx_vk_native.c:274-300, the"single-app POC") and keep it only as the
_hostedfallback. No spec file exists yet.LeiaSDK.java:376),so DP creation marshals onto the app main thread via
aux_android/android_main_threadandmust be non-blocking when
xrCreateSessionitself runs on the main thread; the sessionreports
XR_SESSION_STATE_READYonce the DP is up.target_plugin_loader.c's Android branch exposes aruntime-APK
Context/classloader to plug-ins (mirroringloadClassFromRuntimeApk,ipc_client_android.cpp:54-58) so vendor Java glue resolves without the app bundling it.displayxrAAR manifest carries the single<queries><intent><action android:name="org.displayxr.action.VENDOR_DISPLAY_SERVICE"/></intent></queries>(+ the OpenXR broker provider). Depends on the vendor intent-filter ask (L7) in the vendor
tracker issue. Also audit
comp_vk_nativefor per-process statics of thecomp_d3d11_target.cppkind.Done-when: one cube fully in-process with the vendor DP, then two apps concurrently; measure the
hop saved vs PoC-0.