Skip to content

Establish SDL3 platform, input, audio, and supported-target policy #4

Description

@zoeyrose

Outcome

Define one supported SDL3 platform layer for Linux and Windows that can serve the connected client without leaking platform details into session or rendering crates.

Scope

  • Window creation/lifecycle, DPI/display changes, fullscreen/windowed modes, focus/minimize/suspend, clipboard, cursors, text input/IME, file dialogs where needed, and clean shutdown.
  • Keyboard, mouse, controller/gamepad, touch where supported, hotplug, remapping, repeat, chords, and focus routing into semantic actions.
  • SDL3 audio device ownership, format conversion/mixing policy, hotplug/loss, category volume/mute, and resource-provider input.
  • Native dependency acquisition/pinning, static/dynamic packaging choice, Vulkan/D3D12 prerequisites, and supported fallback/error behavior.
  • Deterministic headless substitutes for platform services used in tests.
  • Accessibility hooks and input-device-independent focus/navigation expectations.

Acceptance criteria

  • A harness repeatedly creates/destroys windows, resizes, changes DPI/fullscreen, hotplugs input/audio, and exits without leaks or stale callbacks.
  • Logical coordinates and scale are unambiguous between SDL events, UI, and renderer.
  • Input tests prove keyboard/controller parity for semantic actions and text fields.
  • Device failures produce actionable UI/state transitions rather than panic or hidden fallback.
  • Supported target/driver matrix is documented and enforced in CI/release checks.

Dependencies

Coordinates with renderer’s SDL3/wgpu surface bridge, but owns no GPU rendering. Product control behavior remains in the transferred controls issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions