You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Delete the chroma-key transparency mechanism everywhere — runtime, DP interfaces, sim_display, and the Leia plugin — for a clean slate. Chroma-key was the original crude fallback (magenta fill pre-weave → strip post-weave; disocclusion fringing, no partial alpha). True transparency (alpha-capable swapchain + transparent window/surface) is now the proven primary path on every shipped config, so the fallback is dead weight that also confuses coding agents (on D3D12/GL the set_chroma_key slot is overloaded as the transparency-enable signal).
Full plan lives in ~/.claude/plans/i-d-like-you-to-imperative-tome.md (local). Branch: chore/remove-chroma-key.
Metal needs no enable slot — the Metal compositor sets drawable clear-alpha itself, never calls the DP. Just delete its set_chroma_key slot.
Only D3D12 + GL need a new set_transparent_background slot added (D3D11 + VK already have it).
Residual gaps to close first (Windows-only)
D3D12 / GL clients over IPC — service compositor is D3D11-only; client-owned transparent present (ADR-029) lived only in comp_d3d11_client.cpp. Generalize it (done in P0.1) and wire the other clients. Exotic configs (real transparent IPC apps are D3D11).
GL / D3D in-process when WGL_NV_DX_interop2/WGC unavailable — no DComp-from-pure-GL path; add a glReadPixels→D3D11→DComp readback fallback. Near-extinct hardware.
Phases
P0 (additive, no ABI change): close the two gaps so nothing depends on chroma-key for see-through.
P1 (single ABI v4 bump): add set_transparent_background to D3D12+GL; delete set_chroma_key (all 5 DP interfaces), chroma_key_color (xrt_session_info + compositor create sigs + oxr_session_gfx_*_native.c), the svc_chroma_key_* pass (comp_d3d11_service.cpp), chromaKeyColor (extension), sim_display stubs, all leia-plugin ck_* code + shaders, test-app + docs refs. Leave the unrelated chromatic-aberration flag + image-codec "chroma" hits.
Progress
⏳ P0.1 done in code, pending Windows build — see next comment for the Windows verification + continuation handoff.
Goal
Delete the chroma-key transparency mechanism everywhere — runtime, DP interfaces, sim_display, and the Leia plugin — for a clean slate. Chroma-key was the original crude fallback (magenta fill pre-weave → strip post-weave; disocclusion fringing, no partial alpha). True transparency (alpha-capable swapchain + transparent window/surface) is now the proven primary path on every shipped config, so the fallback is dead weight that also confuses coding agents (on D3D12/GL the
set_chroma_keyslot is overloaded as the transparency-enable signal).Full plan lives in
~/.claude/plans/i-d-like-you-to-imperative-tome.md(local). Branch:chore/remove-chroma-key.Decisions
XRT_n_CURRENT3→4), coordinated lockstep release: runtime + leia-plugin + sim_display. ExtensionXR_EXT_win32_window_bindingSPEC_VERSION 7→8 (dropschromaKeyColor).Key facts
set_transparent_backgroundslot exists, chroma retired ine9b771f2b). VK excluded from gap-closing.set_chroma_keyslot.set_transparent_backgroundslot added (D3D11 + VK already have it).Residual gaps to close first (Windows-only)
comp_d3d11_client.cpp. Generalize it (done in P0.1) and wire the other clients. Exotic configs (real transparent IPC apps are D3D11).WGL_NV_DX_interop2/WGC unavailable — no DComp-from-pure-GL path; add a glReadPixels→D3D11→DComp readback fallback. Near-extinct hardware.Phases
set_transparent_backgroundto D3D12+GL; deleteset_chroma_key(all 5 DP interfaces),chroma_key_color(xrt_session_info + compositor create sigs + oxr_session_gfx_*_native.c), thesvc_chroma_key_*pass (comp_d3d11_service.cpp),chromaKeyColor(extension), sim_display stubs, all leia-pluginck_*code + shaders, test-app + docs refs. Leave the unrelated chromatic-aberration flag + image-codec "chroma" hits.Progress