Skip to content

feat(gamepad): integrate controller overlays with GPU preview and recording - #483

Merged
Exoridus merged 9 commits into
nextfrom
feat/gamepad-overlay-integration
Oct 26, 2026
Merged

Exoridus merged 9 commits into
nextfrom
feat/gamepad-overlay-integration

Conversation

@Exoridus

@Exoridus Exoridus commented Oct 26, 2026 •

Copy link
Copy Markdown
Owner

Adds a configurable gamepad widget to the recording preview and burns it into the existing GPU composition and encoder: desktop, cursor, webcam, then sprites.

  • Uses GameInput 4.0.302 callbacks and per-device timestamp histories, automatic active-device selection, manual selection, neutral disconnect state and frame-time sampling.
  • Connects all 14 AL2009man/MIT SVG layouts and JSON mappings to the native atlas. Includes horizontal Joy-Cons, a neutral Generic layout, Lines/Glass, opacity, optional glow, preview placement and persistent profile settings. Stick caps move independently; trigger fills and pressed sprites only change quads.
  • Shares the immutable straight-alpha BGRA atlas and GPU compositor between idle preview and recording. Qt SVG clip paths are adapted to masks so shoulder and D-pad highlights stay inside their geometry. Rasterization and uploads are not performed per input frame.
  • Ships the x64 GameInput runtime, raw-input proxy, Qt XML dependency and required licenses app-locally in both distribution formats. No GameInput MSI is installed.
  • Keeps editable SVGs, separate elements, mappings, the interactive HTML viewer and the Rust export/check command together. Optional SVGO optimization never rewrites sources; exports remain unoptimized.

Validation:

  • The complete regular pre-push verification gate passed, including repository guards, formatting, Rust Clippy and workspace tests.

  • Fresh merged-tree Debug build and all 10 selected test binaries passed, including GameInput, sprite rendering, compositor/shader, preview, licensing and profile persistence. The receipt reports reusable=true.

  • Package-module Rust tests: 13 passed. Focused read-only native integration review: no material findings. Native render sheets for all 14 layouts were inspected on dark, gray and light backgrounds.

  • DualSense 054C:0CE6 was detected. The user confirmed live preview response. A local 51.566-second 2560x1440 AV1/Opus recording contains the transparent controller, with one atlas upload and 41,610 sprite quads. Normal app.quit exited within the bounded wait.

  • Release app/updater build and all_qmllint completed. Portable ZIP, MSI and offline Setup were created; package launch smoke passed with developer Qt hidden and 0 unresolved imports. Nine runtime/license payloads match by SHA-256 in the actual ZIP and extracted MSI; Setup contains the identical MSI. The install-tree test passed against the extracted MSI with a fresh reusable receipt. QML lint emitted warnings in other UI components.

This remains a draft. Recorded input transitions were not independently confirmed. Additional controller hardware, physical multi-device/reconnect behavior, HDR10/PQ and chroma-key cursor ordering remain unqualified. Microphone/finger-position input and Joy-Con device aggregation are not advertised as supported.

Sources unregister callbacks and release their own interfaces. One shared GameInput reference is deliberately retained for the process lifetime to avoid the observed final-release hang; it is reused across source restarts. Clean final runtime destruction is not claimed, and no release approval is implied.

@Exoridus Exoridus changed the title feat(gamepad): add controller overlays to preview and recording feat(gamepad): add controller overlay framework and editable artwork Oct 26, 2026
@Exoridus Exoridus changed the title feat(gamepad): add controller overlay framework and editable artwork feat(gamepad): integrate controller overlays with GPU preview and recording Oct 26, 2026
@Exoridus
Exoridus marked this pull request as ready for review October 26, 2026 11:51
@Exoridus
Exoridus enabled auto-merge (squash) October 26, 2026 11:52
@Exoridus
Exoridus merged commit e9edeeb into next Oct 26, 2026
19 of 23 checks passed
@Exoridus
Exoridus deleted the feat/gamepad-overlay-integration branch October 26, 2026 17:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant