feat: Add gallery presets, MultiDisplay support, and viewport tests

- Add ~20 gallery presets covering sources, effects, cameras, displays
- Add MultiDisplay support with --display multi:terminal,pygame syntax
- Fix ViewportFilterStage to recompute layout on viewport_width change
- Add benchmark.py module for hook-based performance testing
- Add viewport resize tests to test_viewport_filter_performance.py
This commit is contained in:
2026-03-17 01:24:15 -07:00
parent 57de835ae0
commit 05d261273e
8 changed files with 453 additions and 128 deletions

View File

@@ -147,6 +147,31 @@ class DisplayRegistry:
cls._initialized = True
@classmethod
def create_multi(cls, names: list[str]) -> "Display | None":
"""Create a MultiDisplay from a list of backend names.
Args:
names: List of display backend names (e.g., ["terminal", "pygame"])
Returns:
MultiDisplay instance or None if any backend fails
"""
from engine.display.backends.multi import MultiDisplay
displays = []
for name in names:
backend = cls.create(name)
if backend:
displays.append(backend)
else:
return None
if not displays:
return None
return MultiDisplay(displays)
def get_monitor():
"""Get the performance monitor."""