fix(omnidreams): support native windows demo#353
Conversation
3361469 to
f102b98
Compare
f102b98 to
db23b12
Compare
|
/ok to test db23b12 |
Greptile SummaryThis PR fixes two blockers that prevented the native Windows
Confidence Score: 4/5Safe to merge with one issue worth resolving: a CUDA DLL directory is silently skipped because the package lookup uses a name that does not match any known PyPI namespace. The scene-picker ordering fix and the Ludus DLL registration are both correct and well-tested. The omnidreams_singleview.py changes introduce _python_package_dir("nvidia.cu13"), which does not correspond to any standard NVIDIA PyPI package namespace (nvidia-cuda-runtime-cu13 installs as nvidia.cuda_runtime, not nvidia.cu13). The lookup silently returns None, so the CUDA binary directory is never added to the DLL search path. If the required DLLs are not bundled in PyTorch's lib/, extension import will fail with an opaque DLL-not-found error on Windows. integrations/omnidreams/omnidreams/native/omnidreams_singleview.py — specifically the _add_windows_cuda_dll_directories function and its _python_package_dir("nvidia.cu13") call. Important Files Changed
Sequence Diagram%%{init: {'theme': 'neutral'}}%%
sequenceDiagram
participant CLI as interactive-drive CLI
participant Demo as demo.py
participant Synth as build_synthetic_scene_to_temp
participant Disc as _discover_scene_options
participant Plugin as _get_plugin()
participant DLL as os.add_dll_directory
CLI->>Demo: _run_streaming / _run_slangpy_hud(args)
Demo->>Demo: _resolve_demo_paths(args)
Demo->>Synth: _materialize_synthetic_scene_for_picker(args)
Note over Demo,Synth: NEW: synthetic USDZ built before discovery
Synth-->>Demo: scene_path (temp USDZ)
Demo->>Demo: "args.scene = scene_path, args.synthetic_scene = False"
Demo->>Disc: _discover_scene_options(args.scene_dir, args.scene)
Disc-->>Demo: scene_options (includes synthetic scene)
Demo->>Plugin: _get_plugin() [JIT compile/load]
Plugin->>DLL: _ensure_windows_dll_directories()
Note over Plugin,DLL: NEW: torch/lib + cudart64 dirs registered
DLL-->>Plugin: handles kept in _dll_directory_handles[]
Plugin-->>Demo: loaded .pyd extension
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
sequenceDiagram
participant CLI as interactive-drive CLI
participant Demo as demo.py
participant Synth as build_synthetic_scene_to_temp
participant Disc as _discover_scene_options
participant Plugin as _get_plugin()
participant DLL as os.add_dll_directory
CLI->>Demo: _run_streaming / _run_slangpy_hud(args)
Demo->>Demo: _resolve_demo_paths(args)
Demo->>Synth: _materialize_synthetic_scene_for_picker(args)
Note over Demo,Synth: NEW: synthetic USDZ built before discovery
Synth-->>Demo: scene_path (temp USDZ)
Demo->>Demo: "args.scene = scene_path, args.synthetic_scene = False"
Demo->>Disc: _discover_scene_options(args.scene_dir, args.scene)
Disc-->>Demo: scene_options (includes synthetic scene)
Demo->>Plugin: _get_plugin() [JIT compile/load]
Plugin->>DLL: _ensure_windows_dll_directories()
Note over Plugin,DLL: NEW: torch/lib + cudart64 dirs registered
DLL-->>Plugin: handles kept in _dll_directory_handles[]
Plugin-->>Demo: loaded .pyd extension
Reviews (4): Last reviewed commit: "test(omnidreams): run ludus dll director..." | Re-trigger Greptile |
db23b12 to
ad2ce6e
Compare
|
/ok to test ad2ce6e |
|
/ok to test 6160246 |
|
/ok to test 67c881e |
|
Want your agent to iterate on Greptile's feedback? Try greploops. |
Native Windows OmniDreams Interactive Demo Fixes
Summary
--synthetic-scenebefore HUD/MJPEG scene-picker discovery so theWindows browser-stream path can start without pre-staged USDZ scenes.
extension on Windows, and keep the returned handles alive for the process
lifetime.
directory registration.
Why
The native Windows
interactive-drive --stream-mjpeg --synthetic-scenepath hittwo blockers before it could complete a lightweight smoke run:
materialized, so startup failed when the cache had no staged scenes.
.pydfailed because Windows could not find dependent Torch/CUDA DLLs.