Stabilize Selection Pass Invalidation (No-Op Frames) #15

Open
opened 2026-03-02 17:04:31 +00:00 by ImBenji · 1 comment
Owner

Description: Selection scene keys churn when selection is effectively unchanged, causing unnecessary pass=selection invalidations and repaint work. Make key inputs deterministic and geometry-only where possible; remove unstable/transient fields.

Acceptance: Idle/hover with unchanged selection does not continuously invalidate selection tiles.

Description: Selection scene keys churn when selection is effectively unchanged, causing unnecessary `pass=selection` invalidations and repaint work. Make key inputs deterministic and geometry-only where possible; remove unstable/transient fields. Acceptance: Idle/hover with unchanged selection does not continuously invalidate selection tiles.
ImBenji added the bugarea:renderingarea:performance labels 2026-03-02 17:04:31 +00:00
ImBenji added this to the Arcs & Angles project 2026-03-02 17:08:27 +00:00
ImBenji moved this to In Progress in Arcs & Angles on 2026-03-17 03:55:10 +00:00
Author
Owner

Probably moot - needs a decision rather than the work. Checked 2026-09-05 during the roadmap audit.

This was written against the V2 tiled renderer's dedicated selection pass, where a selection tile cache was invalidated per scene-key change. That architecture is gone:

  • kV2UseSelectionTileCache = false (lib/constants.dart:329), so the selection tile cache does not run at all
    • compositing has since moved to the unified z-axis and band model (scene_z_order.dart, sceneBands, qt_tiles.dart), where selection is not a separate cached pass invalidated on its own key
      So "pass=selection invalidations churn on idle/hover" describes a code path that no longer executes. The acceptance criterion cannot really be tested as stated.

Not closing it unilaterally, because the underlying concern - scene keys churning on effectively-unchanged state and causing needless repaint work - could still be true of the CURRENT band/tile keys, and nobody has measured that. But if it is, it wants re-filing against the band compositor with fresh evidence rather than staying open on the old wording.

Suggest either closing this or rewriting it against qt_tiles.dart after an actual idle-hover probe.

Probably moot - needs a decision rather than the work. Checked 2026-09-05 during the roadmap audit. This was written against the V2 tiled renderer's dedicated selection pass, where a selection tile cache was invalidated per scene-key change. That architecture is gone: - `kV2UseSelectionTileCache = false` (`lib/constants.dart:329`), so the selection tile cache does not run at all - - compositing has since moved to the unified z-axis and band model (`scene_z_order.dart`, `sceneBands`, `qt_tiles.dart`), where selection is not a separate cached pass invalidated on its own key So "pass=selection invalidations churn on idle/hover" describes a code path that no longer executes. The acceptance criterion cannot really be tested as stated. Not closing it unilaterally, because the underlying concern - scene keys churning on effectively-unchanged state and causing needless repaint work - could still be true of the CURRENT band/tile keys, and nobody has measured that. But if it is, it wants re-filing against the band compositor with fresh evidence rather than staying open on the old wording. Suggest either closing this or rewriting it against `qt_tiles.dart` after an actual idle-hover probe.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: IMBENJI.NET/Metro-Map-Maker#15