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

@@ -116,6 +116,20 @@ def run_pipeline_mode(preset_name: str = "demo"):
display_name = sys.argv[idx + 1]
display = DisplayRegistry.create(display_name)
if not display and not display_name.startswith("multi"):
print(f" \033[38;5;196mFailed to create display: {display_name}\033[0m")
sys.exit(1)
# Handle multi display (format: "multi:terminal,pygame")
if not display and display_name.startswith("multi"):
parts = display_name[6:].split(
","
) # "multi:terminal,pygame" -> ["terminal", "pygame"]
display = DisplayRegistry.create_multi(parts)
if not display:
print(f" \033[38;5;196mFailed to create multi display: {parts}\033[0m")
sys.exit(1)
if not display:
print(f" \033[38;5;196mFailed to create display: {display_name}\033[0m")
sys.exit(1)