PhysX RTX Sync fix - #7809
PhysX RTX Sync fix#7809pbarejko wants to merge 2 commits into
Conversation
|
There was a problem hiding this comment.
Isaac Lab Review Bot
The scene-revision invalidation flow addresses same-step RTX refreshes, but the implementation changes the documented PhysX root_view compatibility surface by exposing _PoseTrackingView instead of the native tensor view.
- Design and architecture: Tracking external pose mutations through render-context revisions cleanly separates invalidation from backend-specific frame pumping. However, placing the tracking proxy directly in each asset’s
_root_viewandSimulationManager.viewsleaks an internal synchronization mechanism across the public native-view boundary. - API: Finding 0 is supported:
RigidObject,RigidObjectCollection, andArticulationnow return a delegating Python wrapper through their documentedroot_viewhandles. Attribute delegation does not preserve native type identity,isinstancebehavior, declared PhysX view types, or compatibility with consumers requiring the underlying pybind object. The native public handle should be preserved while pose-write tracking is implemented without changing its exposed type. - Implementation: The revision bookkeeping, pending-write coalescing, exception-safe playback-state restoration, and Kit/RTX frame paths are covered by focused tests. Before merge, the pose-write interception must be moved or otherwise implemented so
_root_viewandSimulationManager.viewsretain their native PhysX objects.
Significant concerns. Posted 1 actionable finding inline.
Automated review; human maintainers own approval decisions.
| _, root_prim_path_expr = resolve_matching_prims_from_source(self.cfg.prim_path, **resolve_kwargs)[0] | ||
| # -- object view | ||
| self._root_view = self._physics_sim_view.create_rigid_body_view(path_expr_to_glob(root_prim_path_expr)) | ||
| self._root_view = _PoseTrackingView( |
There was a problem hiding this comment.
🟡 Warning · Api — Public root_view now returns delegating wrapper
_root_view is exposed through the documented public root_view property, so callers now receive _PoseTrackingView instead of the native PhysX view (same in rigid_object_collection.py:1361, articulation.py:3862, which also stores the wrapper in SimulationManager.views). __getattr__ forwards attributes but cannot preserve isinstance/exact-type checks, declared physx.RigidBodyView/ArticulationView types, or native APIs requiring the pybind object. Keep the native view public and mark pose writes on the asset writer paths.
|
run-ci |
Description
This PR is an alternative approach to #7138
Type of change
Release backport
developScreenshots
Please attach before and after screenshots of the change if applicable.
Checklist
Docker and GPU tests run on demand. Push the commits you want tested, then
comment
run-cion the pull request.pre-commitchecks with./isaaclab.sh --formatsource/<pkg>/changelog.d/for every touched package (do not editCHANGELOG.rstor bumpextension.toml— CI handles that)CONTRIBUTORS.mdor my name already exists there