Skip to content

Epic: full 2D/3D display-zones paradigm parity on D3D12, VK, and GL (transparency, layers, sub-rects) + demo apps #613

@dfattal

Description

@dfattal

Goal

Bring the full XR_EXT_display_zones paradigm — N 3D zones + Local2D zones + per-frame wish mask + transparency (see-through) + layer composition + canvas sub-rects — to the D3D12, VK, and GL Leia DPs, at D3D11 parity, and ship demo/parity apps for each.

Today the paradigm is D3D11-only on the DP side.

Current state (per Leia DP)

API Transparency Canvas sub-rect Zones DP path (publish/clear/get_local_zone*) #68 bg-UV remap-skip
D3D11 (leia_display_processor_d3d11.cpp) ✅ compose-under-bg + alpha-gate ✅ active
D3D12 (leia_display_processor_d3d12.cpp) ✅ (remap code) ❌ none plumbed, dormant
GL (leia_display_processor_gl.cpp) ✅ (remap code) ❌ none plumbed, dormant
VK (leia_display_processor.cpp) full-window only (void)canvas_*TODO(#85) ❌ none n/a (no canvas remap)

Notably the demos are VK, where canvas sub-rects are ignored (#85) and there is no zones path — so windowed/zoned VK demos are unsupported today (full-window VK works fine).

Scope (per non-D3D11 API)

  • Implement the zones DP vtable: get_local_zone_caps, publish_local_zone_mask, clear_local_zone_mask (mirror D3D11 — drives the per-region 2D/3D lens via request_display_mode; mask is a physical lens signal only, never content — ADR-028).
  • Honor canvas_offset/width/height in process_atlas (VK: resolve the #85 TODO — sub-rect viewport/scissor + weaver phase offset).
  • Activate the #68 set_shared_texture_present bg-UV remap-skip gate (shared_texture_present && zone_active) once a zones path exists.
  • Alpha-gate / compose zone-awareness for multi-zone super-atlas + Local2D bands + layer composition (premultiplied), at D3D11 parity.
  • Transparent self-present support for texture-zones apps (DComp on D3D12/GL per ADR-029; the VK equivalent).

Demo / parity apps

  • cube_zones_texture_d3d12_win (mirror cube_zones_texture_d3d11_win)
  • cube_zones_texture_vk_win (the demos' API — highest priority)
  • cube_zones_texture_gl_win (defensive; no GL texture app exists yet)
  • Port the real demos (modelviewer / mediaplayer / gauss / earthview / avatar) to zoned/windowed where applicable.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions