Replace map transforms with pre-owned and reused buffer cherry-pick - #7300
Replace map transforms with pre-owned and reused buffer cherry-pick#7300pbarejko wants to merge 4 commits into
Conversation
There was a problem hiding this comment.
Isaac Lab Review Bot
The legacy OVRTX transform paths now use binding.write(..., DataAccess.ASYNC, cuda_stream=...) instead of mapped OVRTX memory. Object transforms use a persistent caller-owned Warp buffer, while camera transforms continue using a per-frame Warp allocation.
- Design and architecture: Object-buffer ownership is consistently contained within the legacy renderer: it is initialized with the legacy fields, allocated alongside the object binding, required by the update guard, and released during legacy shutdown. The ovstage path remains unchanged.
- API: The modified renderer symbols are private, with no demonstrated change to public exports, signatures, tensor shapes, dtypes, or devices. A package changelog fragment documents the behavior change.
- Implementation: The object buffer length and
wp.mat44ddtype align with the binding order and kernel launch dimension. Both transform paths pass the producing Warp CUDA stream to the asynchronous OVRTX write, and focused tests verify the selected buffer, access mode, stream forwarding, and cleanup. The camera path still allocates its transform buffer per frame, so this change removes mapping overhead there but does not introduce buffer reuse.
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.
Greptile SummaryThis PR replaces mapped legacy OVRTX transform updates with caller-owned GPU-buffer writes.
Confidence Score: 5/5The PR appears safe to merge, with no concrete correctness, security, or lifecycle failure identified in the changed paths. Object and camera transform writes preserve producer-stream ordering, the persistent object buffer matches the collected object-index set, and cleanup releases the newly owned state. Important Files Changed
Sequence DiagramsequenceDiagram
participant Render as Render loop
participant Warp as Warp CUDA stream
participant Buffer as Caller-owned transform buffer
participant OVRTX as OVRTX binding
Render->>Warp: Launch transform kernel
Warp->>Buffer: Populate matrices
Render->>OVRTX: write(buffer, ASYNC, cuda_stream)
OVRTX->>Warp: Wait on producer stream
OVRTX->>Buffer: Read transform matrices
Reviews (1): Last reviewed commit: "Reformat" | Re-trigger Greptile |
…olve-pr-7300 # Conflicts: # source/isaaclab_ov/test/test_ovrtx_deformable_bindings.py
## Description Backports five merged `develop` PRs not already represented on `release/3.0.0` or covered by #7300: | Source PR | Source commit | Backport commit | Scope | | --- | --- | --- | --- | | #7235 | `4fa20fc8a5f` | `8110c816d0a` | Report distinct exit codes for failed, crashed, timed-out, and startup-hung test runs. | | #6597 | `2ae0878a266` | `68b21a60158` | Correct the stale wheel-builder dependency-pin reference. | | #7320 | `7ed3ad45546` | `1a775d46fcf` | Add success-driven ADR guidance and evaluation coverage to the domain-randomization skill. | | #7319 | `2c07bbb43a9` | `4249489a089` | Vectorize clone-plan environment-ID queries. | | #7316 | `a00278f0fde` | `8af682bfcb9` | Extend Core Lift and Reorient episodes and pose-command resampling intervals. | Each merged source commit was cherry-picked with `-x`. All five applied without conflicts and have stable patch IDs identical to their source commits. #7233 is intentionally excluded because its existing backport is #7300. ## Type of change - Bug fix - Performance improvement - Task configuration update - Developer tooling improvement - Documentation update ## Validation - `uv run --frozen --extra test python -m pytest -q source/isaaclab/test/cloner/test_clone_plan_algebra.py` — 85 passed. - Validated the six representative `resolve_exit_code` outcomes, including mixed-failure precedence. - `uv run --no-project python tools/skills/cli.py check` — 21 skills validated. - `uv run --frozen --extra test python -m pytest --noconftest -q source/isaaclab_tasks/test/core/test_lift_env_cfg.py` — 3 passed. - Programmatic Lift/Reorient config assertions confirmed the 4–6 second resampling interval and 12-second episode length. - Ruff, Ruff-format, and RST hooks passed for the #7316 paths. - The original four-PR branch passed `ISAACLAB_CHANGELOG_BASE_REF=release/3.0.0 uv run --frozen isaaclab -f`; #7316's source commit also passed its full formatting and changelog validation. - `git diff --check kelly/kellyg/backport-remaining-develop-prs-3.0.0...HEAD` — passed for the added #7316 commit. - Stable patch IDs match all five merged source commits; #7316 also has exact mode/blob parity on both affected paths. ## Screenshots Not applicable. ## Checklist - [x] I have read and understood the contribution guidelines. - [x] I have run the repository formatting or focused pre-commit checks appropriate to each source PR. - [x] Documentation and skill guidance from the source PRs are included unchanged. - [x] My changes generate no new warnings. - [x] Existing and backported tests cover the changed behavior. - [x] Touched release-managed source packages carry their source changelog fragments. - [x] Source authorship and `-x` provenance are preserved. --------- Co-authored-by: myurasov-nv <168484206+myurasov-nv@users.noreply.github.com> Co-authored-by: AntoineRichard <antoiner@nvidia.com> Co-authored-by: ooctipus <zhengyuz@nvidia.com> Co-authored-by: camevor <camevor@nvidia.com>
Description
Cherry-pick #7233
Type of change
Screenshots
Please attach before and after screenshots of the change if applicable.
Checklist
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