Skip to content

cursor_depth: compositor-side draw refusals should flip willDraw (ADR-046 §B) #1952

Closed

Description

@dfattal

Follow-up from #1951.

Covered today: #1951 makes XrCursorDepthDrawStateDXR::willDraw true only when the state tracker's drawability check passes on both the located views and the submitted views.

Gap: a native compositor can still refuse to draw for reasons the state tracker can't see:

  • no display info;
  • a multi-screen routed frame;
  • a failed default-look upload;
  • a backend-specific skip.

In those frames willDraw stays true. The app then hides its OS cursor while nothing is drawn, which breaks the rule that the fallback is always the flat OS cursor.

Proposed: each compositor reports its last cursor-draw outcome (drew or refused) back through the per-frame request it already receives. A refusal flips the next locate's willDraw to false, the same way #1951's state-tracker refusal does.

Scope: Metal, Vulkan, GL, and D3D11/D3D12 once #1944 lands.

Tracking in #tmp-3d-cursor (C0C8EGXSBSM).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions