Fix Warp camera runtime errors - #7596
Conversation
Greptile SummaryThis PR fixes two renderer boundary failures:
Confidence Score: 5/5The PR appears safe to merge; both renderer failure paths are handled without breaking the surrounding scheduling or output contracts. No actionable failures remain: eager Newton tasks maintain consistent graph lifecycle and sensor state, while empty RTX frames clear the appropriate buffer before safely skipping frame processing. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Newton sensor update requested] --> B{Requested task marked eager?}
B -->|Yes| C[Refit dirty sensor BVHs]
C --> D[Run requested task eagerly]
B -->|No| E[Capture or launch conditional sensor graph]
F[RTX annotator returns frame] --> G{Frame empty?}
G -->|Yes| H[Clear destination or HDR scratch buffer]
H --> I[Skip conversion, slicing, and reshape]
G -->|No| J[Convert and reshape tiled frame]
I --> K[Run PPISP when configured]
J --> K
Reviews (1): Last reviewed commit: "Fix Warp camera runtime errors" | Re-trigger Greptile |
|
run-ci |
There was a problem hiding this comment.
Isaac Lab Review Bot
Reviewed the Newton sensor-task graph-capture opt-out and the Isaac RTX empty-frame handling, tracing task registration, graph invalidation and indexing, eager execution, and output-buffer selection. The changes are focused and supported by regression coverage.
- Design and architecture: The keyword-only capturability flag and eager-task registry cleanly separate unsupported work from conditional CUDA graph capture. Eager tasks are consistently excluded from graph construction and flag indexing, while registration, unregistration, and reset paths maintain registry consistency. A mixed request containing an eager task conservatively executes all requested tasks eagerly for that frame, which is a reasonable non-blocking performance tradeoff.
- API: The changed sensor registration method is private and adds a backward-compatible keyword-only argument with a default preserving existing behavior. Existing registrations remain valid, lifecycle reset behavior includes the new state, and both affected packages include appropriate changelog fragments.
- Implementation: Newton Warp rendering classifies nonempty triangle-index workloads at initial task registration and routes them through eager execution, avoiding unsupported allocation work inside conditional graph bodies. Isaac RTX resolves the correct user or HDR scratch destination before checking for an empty annotator frame, clears that destination, and skips conversion, slicing, and reshape work. Focused tests cover both boundaries.
No blocking issues. No inline issue met the actionable-evidence threshold; the assessment above records the review feedback.
Automated review; human maintainers own approval decisions.
|
approved to unblock |
| determinism_mock.assert_called_once_with(settings) | ||
|
|
||
|
|
||
| def test_render_treats_empty_annotator_frame_as_not_ready(monkeypatch): |
There was a problem hiding this comment.
[P1] Agent review: this test uses data_type="rgba", which never reaches the slice that raises the reported error, so it does not cover the reported failure.
Measured on the PR parent with an empty (0, 0, 4) frame:
data_type |
Result |
|---|---|
rgba |
no exception at all; wp.launch still called |
normals |
RuntimeError: Invalid indexing in slice: 0:0:1 |
The test does fail on the parent, but on the zero_ assertion rather than the reported behaviour. Only normals, motion_vectors, SIMPLE_SHADING_MODES and rgb_hdr reach the slice.
Suggested: parametrize over one of those, threading data_type through the annotators / output_data dicts.
@pytest.mark.parametrize("data_type", ["rgba", "normals"])
def test_render_treats_empty_annotator_frame_as_not_ready(monkeypatch, data_type):Verified both halves: normals fails without the fix for the reported reason, and passes with it.
There was a problem hiding this comment.
Addressed in 65b282a. The test now covers both rgba and normals. I verified the normals case against the PR parent: it fails with the reported RuntimeError: Invalid indexing in slice: 0:0:1; both parameter cases pass with the fix. The combined focused suites pass with 201 tests, and uv run --frozen isaaclab -f passes against the PR base.
|
run-ci |
Description
Fixes NVBug 6675392 and NVBug 6684416
This PR fixes two camera-rendering failures at their respective boundaries:
No new dependencies are required.
Validation
NVBug 6675392 exact command
uv run --extra isaacsim,all,rlinf,mimic,teleop,tetrahedralization,video,leapp isaaclab train --rl_library rsl_rl --task Isaac-Lift-Cloth-Franka-Camera --info --max_iterations 53639364a: reproducedConditional body graph contains an unsupported operation (memory allocation)and thesensor CUDA graph capture failedtraceback, then completed learning iterations 0/5 through 4/5 via the existing eager fallback.NVBug 6684416 exact commands
Primary command (Windows path separators translated to Linux path separators only):
uv run --extra all,isaacsim,rlinf,mimic,teleop,tetrahedralization,video,leapp python scripts/environments/zero_agent.py --task IsaacContrib-Stack-Cube-Franka-IK-Rel-Visuomotor-Cosmos --visualizer newton_glUbuntu multi-visualizer command:
uv run --extra isaacsim,all,rlinf,mimic,teleop,tetrahedralization,video,leapp python scripts/environments/zero_agent.py --task IsaacContrib-Stack-Cube-Franka-IK-Rel-Visuomotor-Cosmos --visualizer kit,rerun,newton_gl,viser physics=isaacsim_physxZero agent is running, and stepped until an external watchdog stopped the intentionally unbounded process (90-120 seconds). Neither revision raisedInvalid indexing in sliceon the locally available repository-pinned Isaac Sim 6.0.1.0 stack.The unbounded zero-agent commands were wrapped only in a timeout, and
OMNI_KIT_ACCEPT_EULA=YESwas scoped to the processes after confirming an existing accepted-EULA marker. Their command arguments were otherwise unchanged.Focused and repository checks
uv run --frozen --extra test python -m pytest source/isaaclab_newton/test/physics/test_newton_manager_abstraction.py source/isaaclab_physx/test/renderers/test_isaac_rtx_renderer_contract.py -q— 200 passeduv run --frozen isaaclab -fuv run --frozen --extra test python tools/changelog/cli.py check developType of change
Release backport
developScreenshots
Not applicable.
Checklist
Docker and GPU tests run on demand. Push the commits you want tested, then
comment
run-cion the pull request.pre-commitchecks withuv run isaaclab -fsource/<pkg>/changelog.d/for every touched package (do not editCHANGELOG.rstor bumpextension.toml— CI handles that)CONTRIBUTORS.mdor my name already exists there